From 7434ff71ebd4b296133ee33cc9c7a59edac91d98 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Thu, 30 Mar 2023 01:23:01 +0100 Subject: [PATCH] Run prettier --- .prettierignore | 7 + astro.config.mjs | 2 +- bin/best-practice-dirs.cjs | 33 +- bin/readme.md | 3 +- bin/roadmap-content.cjs | 9 +- bin/roadmap-dirs.cjs | 5 +- bin/update-sponsors.cjs | 27 +- code_of_conduct.md | 20 +- package.json | 1 + playwright.config.ts | 2 +- pnpm-lock.yaml | 4748 ++++++++++++----- sitemap.mjs | 14 +- src/components/TopicOverlay/topic.js | 77 +- .../api-security/api-security.md | 47 +- .../api-security/content/api-gateway.md | 2 +- .../content/authentication-mechanisms.md | 2 +- .../content/authorization-header.md | 2 +- .../content/avoid-http-blocking.md | 2 +- .../content/avoid-logging-sensitive-data.md | 2 +- .../content/avoid-personal-id-urls.md | 2 +- .../content/avoid-sensitive-data.md | 2 +- .../content/cdn-for-file-uploads.md | 2 +- .../content/centralized-logins.md | 2 +- .../content/check-dependencies.md | 2 +- .../content/code-review-process.md | 2 +- .../api-security/content/csp-header.md | 2 +- .../api-security/content/debug-mode-off.md | 2 +- .../content/directory-listings.md | 2 +- .../content/disable-entity-expansion.md | 2 +- .../content/disable-entity-parsing-xml.md | 2 +- .../content/endpoint-authentication.md | 4 +- .../content/force-content-type.md | 2 +- .../api-security/content/good-jwt-secret.md | 2 +- .../api-security/content/hsts-header.md | 2 +- .../api-security/content/index.md | 2 +- .../api-security/content/jwt-algorithm.md | 2 +- .../api-security/content/jwt-payload.md | 2 +- .../content/monitor-everything.md | 2 +- .../api-security/content/no-sniff-header.md | 2 +- .../content/non-executable-stacks.md | 2 +- .../api-security/content/oauth-redirect-ui.md | 2 +- .../content/only-server-side-encryption.md | 2 +- .../api-security/content/prefer-uuid.md | 2 +- .../content/proper-http-methods.md | 2 - .../content/proper-response-code.md | 3 +- .../content/recommended-resources.md | 2 +- .../content/remove-fingerprint-header.md | 2 +- .../content/restrict-private-apis.md | 1 - .../content/rollback-deployments.md | 2 +- .../content/run-security-analysis.md | 2 +- .../content/sensitive-data-encryption.md | 2 +- .../api-security/content/set-alerts.md | 2 +- .../api-security/content/throttle-requests.md | 4 +- .../api-security/content/token-expiry.md | 2 +- .../content/unit-integration-tests.md | 2 +- .../api-security/content/use-https.md | 1 - .../content/use-ids-ips-system.md | 2 +- .../content/use-standard-authentication.md | 2 +- .../content/validate-content-type.md | 1 - .../content/validate-user-input.md | 2 +- .../content/x-frame-options-deny.md | 2 +- .../aws/content/alerts-as-notifications.md | 2 +- .../aws/content/app-changes-for-aws.md | 2 +- .../aws/content/automate-everything.md | 2 +- .../aws/content/avoid-fs-mounts.md | 2 +- .../avoid-multiple-scaling-triggers.md | 2 +- .../aws/content/avoid-server-eips.md | 2 +- .../aws/content/aws-right-choice.md | 2 +- .../aws/content/beware-aws-limits.md | 2 +- .../aws/content/billing-alerts.md | 2 +- .../aws/content/bucket-names-ssl.md | 2 +- .../best-practices/aws/content/cloudtrail.md | 2 +- .../aws/content/cloudwatch-cli-tools.md | 2 +- .../content/cloudwatch-detailed-monitoring.md | 2 +- .../aws/content/cloudwatch-free-metrics.md | 2 +- .../aws/content/configured-azs-only.md | 2 +- .../aws/content/disable-ssh-access.md | 2 +- .../best-practices/aws/content/ec2-roles.md | 2 +- .../content/failover-event-subscription.md | 2 +- .../aws/content/group-permissions.md | 2 +- src/data/best-practices/aws/content/index.md | 2 +- .../aws/content/key-management-strategy.md | 2 +- .../aws/content/multi-factor-auth-iam.md | 2 +- .../aws/content/pre-warm-elb.md | 1 - .../aws/content/redundant-across-azs.md | 2 +- .../aws/content/release-eips.md | 2 +- .../aws/content/reserved-instances.md | 2 +- .../aws/content/s3-hive-results.md | 2 +- .../aws/content/scale-down-events.md | 2 +- .../aws/content/scale-horizontally.md | 2 +- .../aws/content/security-audit.md | 2 - .../aws/content/tag-everything.md | 2 +- .../aws/content/terminate-ssl.md | 2 +- .../aws/content/termination-protection.md | 2 +- .../aws/content/tools-for-logs.md | 2 +- .../aws/content/use-alias-records.md | 2 +- .../aws/content/use-iam-acount.md | 1 - .../aws/content/use-iam-roles.md | 2 +- .../content/analyse-stylesheets-complexity.md | 2 +- .../content/analyze-js-for-perf-issues.md | 2 +- .../content/avoid-404-files.md | 2 +- .../content/avoid-base64-images.md | 2 +- .../content/avoid-inline-css.md | 2 +- .../avoid-multiple-inline-js-snippets.md | 2 +- .../content/check-dependency-size.md | 2 +- .../choose-image-format-approprietly.md | 2 +- .../content/chrome-dev-tools.md | 2 +- .../content/compress-your-images.md | 2 +- .../content/concatenate-css-single-file.md | 2 +- .../content/cookie-size-less-4096-bytes.md | 2 +- .../content/enable-compression.md | 2 +- .../content/framework-guides.md | 2 +- .../frontend-performance/content/index.md | 2 +- .../content/inline-critical-css.md | 2 +- .../content/keep-cookie-count-below-20.md | 2 +- .../content/keep-dependencies-up-to-date.md | 3 +- .../content/keep-ttfb-less-1-3s.md | 2 +- .../content/keep-web-font-under-300k.md | 2 +- .../content/load-offscreen-images-lazily.md | 2 +- .../content/make-css-files-non-blocking.md | 2 +- .../content/minify-css.md | 2 +- .../content/minify-html.md | 3 +- .../content/minify-your-javascript.md | 2 +- .../content/minimize-http-requests.md | 2 +- .../content/minimize-iframe-count.md | 2 +- .../content/page-load-time-below-3s.md | 3 +- .../content/page-speed-insights.md | 4 +- .../content/page-weight-below-1500.md | 2 +- .../content/pre-load-urls-where-possible.md | 2 +- .../content/prefer-vector-images.md | 2 +- .../content/prevent-flash-text.md | 2 +- .../content/recommended-guides.md | 166 +- .../content/remove-unused-css.md | 2 +- .../content/serve-exact-size-images.md | 2 +- .../content/set-width-height-images.md | 2 +- .../content/squoosh-ap.md | 2 +- .../frontend-performance/content/use-cdn.md | 4 +- .../content/use-http-cache-headers.md | 2 +- .../content/use-https-on-your-website.md | 2 +- .../content/use-non-blocking-javascript.md | 3 +- .../content/use-preconnect-to-load-fonts.md | 4 +- .../content/use-same-protocol.md | 2 +- .../use-service-workers-for-caching.md | 6 +- .../content/use-woff2-font-format.md | 2 +- .../content/web-page-test.md | 2 +- .../frontend-performance.md | 38 +- src/data/guides/asymptotic-notation.md | 25 +- ...er-blocking-javascript-with-async-defer.md | 25 +- src/data/guides/basic-authentication.md | 25 +- src/data/guides/basics-of-authentication.md | 25 +- src/data/guides/big-o-notation.md | 27 +- src/data/guides/character-encodings.md | 25 +- src/data/guides/ci-cd.md | 25 +- ...istency-patterns-in-distributed-systems.md | 36 +- src/data/guides/design-patterns-for-humans.md | 312 +- src/data/guides/dhcp-in-one-picture.md | 25 +- src/data/guides/dns-in-one-picture.md | 24 +- src/data/guides/history-of-javascript.md | 51 +- src/data/guides/how-to-setup-a-jump-server.md | 34 +- src/data/guides/http-basic-authentication.md | 48 +- src/data/guides/http-caching.md | 96 +- src/data/guides/journey-to-http2.md | 84 +- src/data/guides/jwt-authentication.md | 25 +- src/data/guides/levels-of-seniority.md | 111 +- src/data/guides/oauth.md | 25 +- src/data/guides/proxy-servers.md | 73 +- src/data/guides/random-numbers.md | 27 +- src/data/guides/scaling-databases.md | 25 +- src/data/guides/session-authentication.md | 25 +- .../guides/session-based-authentication.md | 92 +- .../setup-and-auto-renew-ssl-certificates.md | 22 +- .../guides/single-command-database-setup.md | 26 +- src/data/guides/ssl-tls-https-ssh.md | 25 +- src/data/guides/sso.md | 25 +- src/data/guides/token-authentication.md | 25 +- src/data/guides/torrent-client.md | 114 +- src/data/guides/unfamiliar-codebase.md | 25 +- src/data/guides/what-are-web-vitals.md | 25 +- src/data/guides/what-is-internet.md | 51 +- src/data/guides/what-is-sli-slo-sla.md | 25 +- ...it-and-they-will-come-wont-work-anymore.md | 42 +- src/data/roadmaps/android/android.md | 144 +- src/data/roadmaps/angular/angular.md | 67 +- .../100-what-is-typescript.md | 2 +- .../102-structural-typing.md | 3 +- .../103-type-inference.md | 2 +- .../100-typescript-basics/104-union-types.md | 2 +- .../105-builtin-types.md | 2 +- .../101-observable-lifecycle.md | 9 +- .../101-rxjs-basics/103-rxjs-vs-promises.md | 2 +- .../104-operators/100-filtering.md | 2 +- .../104-operators/102-transformation.md | 20 +- .../104-operators/103-combination.md | 24 +- .../101-rxjs-basics/104-operators/index.md | 8 +- .../100-angularjs-vs-angular.md | 2 +- .../101-angular-components.md | 10 +- .../102-angular-templates.md | 2 +- .../102-angular-basics/103-angular-modules.md | 2 +- .../104-dependency-injection.md | 2 +- .../content/102-angular-basics/106-routing.md | 2 +- .../content/102-angular-basics/index.md | 2 +- .../content/103-angular-cli/100-ng-build.md | 2 +- .../content/103-angular-cli/101-ng-serve.md | 2 +- .../103-angular-cli/102-ng-generate.md | 3 +- .../content/103-angular-cli/103-ng-test.md | 3 +- .../content/103-angular-cli/104-ng-e2e.md | 2 +- .../content/103-angular-cli/105-ng-new.md | 2 +- .../angular/content/103-angular-cli/index.md | 4 +- .../104-templates/102-template-statements.md | 2 +- .../100-builtin-directives.md | 3 +- .../105-rendering-topics/101-builtin-pipes.md | 5 +- .../102-change-detection.md | 2 +- .../content/105-rendering-topics/index.md | 2 +- .../content/106-forms/100-reactive-forms.md | 4 +- .../106-forms/101-template-driven-forms.md | 4 +- .../content/107-routing/100-configuration.md | 2 +- .../content/107-routing/103-router-events.md | 2 +- .../100-dependency-injection.md | 1 - .../angular/content/109-lifecycle-hooks.md | 2 +- .../content/110-state-management/100-ngxs.md | 1 - .../content/110-state-management/101-ngrx.md | 1 - .../roadmaps/angular/content/111-zones.md | 2 +- .../112-creating-a-custom-x/100-directive.md | 2 +- .../112-creating-a-custom-x/101-pipe.md | 2 +- src/data/roadmaps/aspnet-core/aspnet-core.md | 93 +- .../100-basics-of-csharp/100-csharp.md | 2 +- .../100-basics-of-csharp/101-dotnet.md | 2 +- .../100-basics-of-csharp/102-dotnet-cli.md | 2 +- .../content/100-basics-of-csharp/index.md | 2 +- .../101-general-development-skills/100-git.md | 2 +- .../101-azure-devops-services.md | 2 +- .../101-general-development-skills/index.md | 2 +- .../100-database-design-basics.md | 2 +- .../101-sql-basics.md | 3 +- .../102-stored-procedures.md | 2 +- .../102-database-fundamentals/104-triggers.md | 2 +- .../102-database-fundamentals/index.md | 2 +- .../103-basics-of-aspnet-core/100-mvc.md | 2 +- .../103-basics-of-aspnet-core/101-rest.md | 2 +- .../102-razor-pages.md | 2 +- .../103-razor-components.md | 2 +- .../104-middlewares.md | 2 +- .../105-filters-and-attributes.md | 2 +- .../106-app-settings-and-configurations.md | 2 +- .../103-basics-of-aspnet-core/index.md | 2 +- .../100-framework-basics.md | 2 +- .../102-change-tracker-api.md | 2 +- .../103-lazy-eager-explicit-loading.md | 2 +- .../100-entity-framework-core/index.md | 2 +- .../aspnet-core/content/104-orm/102-repodb.md | 2 +- .../content/104-orm/103-nhibernate.md | 2 +- .../105-dependency-injection/100-scrutor.md | 2 +- ...crosoft-extensions-dependency-injection.md | 2 +- .../101-di-containers/101-auto-fac.md | 2 +- .../101-di-containers/102-ninject.md | 2 +- .../101-di-containers/103-castle-windsor.md | 2 +- .../101-di-containers/104-simple-injector.md | 2 +- .../101-di-containers/index.md | 2 +- .../102-life-cycles/100-scoped.md | 2 +- .../102-life-cycles/101-transient.md | 2 +- .../102-life-cycles/102-singleton.md | 2 +- .../102-life-cycles/index.md | 6 +- .../content/105-dependency-injection/index.md | 2 +- .../content/106-caching/100-memory-cache.md | 2 +- .../106-caching/101-entity-framework-cache.md | 2 +- .../102-distributed-cache/100-memcached.md | 2 +- .../102-distributed-cache/101-redis/index.md | 6 +- .../101-redis/stackexchange-redis.md | 2 +- .../102-distributed-cache/index.md | 2 +- .../aspnet-core/content/106-caching/index.md | 2 +- .../100-search-engines/100-elasticsearch.md | 2 +- .../100-search-engines/101-solr.md | 2 +- .../100-search-engines/102-sphinx.md | 2 +- .../107-databases/100-search-engines/index.md | 2 +- .../107-databases/101-cloud/100-dynamodb.md | 2 +- .../107-databases/101-cloud/101-cosmosdb.md | 4 +- .../content/107-databases/101-cloud/index.md | 2 +- .../102-relational/101-postgresql.md | 2 +- .../102-relational/102-mariadb.md | 2 +- .../107-databases/102-relational/103-mysql.md | 2 +- .../107-databases/102-relational/index.md | 2 +- .../107-databases/103-nosql/100-redis.md | 2 +- .../107-databases/103-nosql/101-mongodb.md | 2 +- .../107-databases/103-nosql/102-litedb.md | 2 +- .../107-databases/103-nosql/103-cassandra.md | 2 +- .../107-databases/103-nosql/104-ravendb.md | 2 +- .../107-databases/103-nosql/105-couchdb.md | 3 +- .../content/107-databases/103-nosql/index.md | 2 +- .../content/107-databases/index.md | 3 +- .../content/108-log-frameworks/100-serilog.md | 2 +- .../content/108-log-frameworks/101-nlog.md | 2 +- .../100-elk-stack.md | 2 +- .../102-log-management-system/101-sentry.md | 2 +- .../102-log-management-system/102-datadog.md | 2 +- .../102-log-management-system/103-loggly.md | 2 +- .../102-log-management-system/104-elmah.md | 2 +- .../102-log-management-system/index.md | 2 +- .../109-api-clients/100-rest/101-odata.md | 2 +- .../109-api-clients/100-rest/102-sieve.md | 2 +- .../content/109-api-clients/100-rest/index.md | 2 +- .../content/109-api-clients/101-grpc.md | 2 +- .../102-graphql/100-graphql-dotnet.md | 2 +- .../102-graphql/101-hot-chocolate.md | 2 +- .../109-api-clients/102-graphql/index.md | 2 +- .../content/109-api-clients/index.md | 2 +- .../100-web-sockets.md | 2 +- .../101-singlar-core.md | 2 +- .../110-real-time-communication/index.md | 2 +- .../111-object-mapping/100-atuo-mapper.md | 2 +- .../111-object-mapping/101-express-mapper.md | 2 +- .../111-object-mapping/102-agile-mapper.md | 2 +- .../content/111-object-mapping/103-mapster.md | 2 +- .../content/111-object-mapping/index.md | 2 +- .../112-task-scheduling/100-hangfire.md | 2 +- .../101-native-background-service.md | 2 +- .../content/112-task-scheduling/102-quartz.md | 2 +- .../112-task-scheduling/103-coravel.md | 2 +- .../content/112-task-scheduling/index.md | 2 +- .../100-e2e-testing/100-selenium.md | 2 +- .../100-e2e-testing/101-playwright.md | 2 +- .../100-e2e-testing/102-puppeteer.md | 2 +- .../100-e2e-testing/103-cypress.md | 2 +- .../113-testing/100-e2e-testing/index.md | 2 +- .../101-unit-testing/100-fluent-assertions.md | 2 +- .../101-unit-testing/101-shouldly.md | 2 +- .../101-unit-testing/102-mstest.md | 2 +- .../113-testing/101-unit-testing/103-xunit.md | 2 +- .../113-testing/101-unit-testing/104-nunit.md | 2 +- .../101-unit-testing/105-nsubstitute.md | 2 +- .../113-testing/101-unit-testing/106-moq.md | 2 +- .../101-unit-testing/107-fake-it-easy.md | 2 +- .../113-testing/101-unit-testing/index.md | 2 +- .../100-web-application-factory.md | 2 +- .../101-test-server.md | 2 +- .../102-integration-testing/index.md | 2 +- .../103-behavior-testing/100-spec-flow.md | 2 +- .../103-behavior-testing/101-bddfy.md | 2 +- .../103-behavior-testing/102-light-bdd.md | 2 +- .../113-testing/103-behavior-testing/index.md | 4 +- .../aspnet-core/content/113-testing/index.md | 2 +- .../100-message-brokers/100-active-mq.md | 2 +- .../100-message-brokers/101-apache-kafka.md | 2 +- .../100-message-brokers/102-rabbit-mq.md | 2 +- .../100-message-brokers/103-net-mq.md | 2 +- .../104-azure-service-bus.md | 2 +- .../100-message-brokers/index.md | 2 +- .../101-message-bus/100-mass-transit.md | 2 +- .../101-message-bus/101-nservice-bus.md | 2 +- .../101-message-bus/102-easy-net-q.md | 2 +- .../101-message-bus/index.md | 2 +- .../114-microservices/102-kubernetes.md | 4 +- .../114-microservices/103-docker-swarm.md | 2 +- .../content/114-microservices/104-ocelot.md | 2 +- .../content/114-microservices/105-docker.md | 2 +- .../content/114-microservices/106-yarp.md | 2 +- .../content/114-microservices/107-orleans.md | 2 +- .../114-microservices/108-steel-toe.md | 2 +- .../content/114-microservices/109-dapr.md | 2 +- .../content/114-microservices/index.md | 2 +- .../content/115-ci-cd/100-github-actions.md | 2 +- .../content/115-ci-cd/101-azure-pipelines.md | 2 +- .../content/115-ci-cd/102-travis-ci.md | 2 +- .../content/115-ci-cd/103-jenkins.md | 2 +- .../content/115-ci-cd/104-circle-ci.md | 2 +- .../content/115-ci-cd/105-team-city.md | 3 +- .../aspnet-core/content/115-ci-cd/index.md | 2 +- .../116-client-side-libraries/100-blazor.md | 9 +- .../116-client-side-libraries/index.md | 2 +- .../content/117-template-engines/100-razor.md | 2 +- .../117-template-engines/101-dot-liquid.md | 2 +- .../117-template-engines/102-scriban.md | 2 +- .../content/117-template-engines/103-fluid.md | 2 +- .../content/117-template-engines/index.md | 2 +- .../118-good-to-know-libraries/100-mediatr.md | 2 +- .../101-fluent-validation.md | 2 +- .../118-good-to-know-libraries/102-polly.md | 2 +- .../118-good-to-know-libraries/103-nuke.md | 2 +- .../104-benchmark-net.md | 2 +- .../105-noda-time.md | 2 +- .../118-good-to-know-libraries/106-gen-fu.md | 2 +- .../107-swash-buckle.md | 2 +- .../118-good-to-know-libraries/index.md | 2 +- src/data/roadmaps/backend/backend.md | 115 +- .../content/100-internet/101-what-is-http.md | 1 - .../content/101-basic-frontend/101-css.md | 1 - .../103-threads-and-concurrency.md | 2 +- .../105-memory-management.md | 2 +- .../108-posix-basics.md | 2 +- .../103-learn-a-language/103-csharp.md | 1 + .../103-learn-a-language/105-javascript.md | 2 +- .../content/103-learn-a-language/index.md | 2 +- .../104-version-control-systems/index.md | 1 - .../105-repo-hosting-services/100-github.md | 2 +- .../108-more-about-databases/101-acid.md | 2 +- .../104-database-normalization.md | 2 +- .../105-failure-modes.md | 20 +- .../106-profiling-performance.md | 10 +- .../backend/content/109-apis/100-rest.md | 4 +- .../backend/content/109-apis/104-hateoas.md | 2 +- .../106-authentication/100-cookie-based.md | 1 - .../103-token-authentication.md | 1 - .../109-apis/106-authentication/105-openid.md | 2 +- .../109-apis/106-authentication/105-saml.md | 2 +- .../102-sharding-strategies.md | 2 +- .../backend/content/110-caching/100-cdn.md | 1 - .../110-caching/101-server-side/index.md | 1 - .../backend/content/110-caching/index.md | 2 +- .../101-sha-family.md | 1 + .../106-server-security.md | 16 +- .../112-testing/100-integration-testing.md | 2 +- .../content/112-testing/101-unit-testing.md | 2 +- .../100-gof-design-patterns.md | 2 +- .../index.md | 2 +- .../105-service-mesh.md | 2 +- .../106-twelve-factor-apps.md | 24 +- .../116-search-engines/100-elasticsearch.md | 2 - .../content/116-search-engines/index.md | 2 +- .../117-message-brokers/100-rabbitmq.md | 10 +- .../content/117-message-brokers/101-kafka.md | 10 +- .../content/117-message-brokers/index.md | 10 +- .../118-containerization/103-kubernetes.md | 4 +- .../backend/content/122-web-servers/index.md | 4 +- .../100-graceful-degradation.md | 1 - .../101-throttling.md | 6 +- .../102-backpressure.md | 6 +- .../103-loadshifting.md | 6 +- ...01-instrumentation-monitoring-telemetry.md | 2 +- .../102-migration-strategies.md | 1 - .../123-scalability/104-observability.md | 2 +- .../backend/content/123-scalability/index.md | 17 +- src/data/roadmaps/blockchain/blockchain.md | 103 +- .../102-decentralization-vs-trust.md | 2 +- .../103-blockchain-forking.md | 2 +- .../104-cryptocurrencies.md | 2 +- .../106-cryptography.md | 2 +- .../107-consensus-protocols.md | 2 +- .../108-blockchain-interoperability.md | 2 +- .../109-blockchains/101-ton.md | 2 +- .../102-evm-based/avalanche.md | 2 +- .../109-blockchains/102-evm-based/fantom.md | 2 +- .../100-programming-languages/100-solidity.md | 4 +- .../100-programming-languages/101-vyper.md | 2 +- .../100-programming-languages/102-rust.md | 2 +- .../100-programming-languages/index.md | 2 +- .../103-smart-contracts/101-testing/index.md | 2 +- .../content/103-smart-contracts/index.md | 2 +- .../100-hardhat.md | 2 +- .../103-foundry.md | 1 - .../100-fuzz-testing-and-static-analysis.md | 8 +- .../100-practices/index.md | 2 +- .../101-tools/103-echidna.md | 2 +- .../100-frontend-frameworks/100-react.md | 2 +- .../100-frontend-frameworks/101-angular.md | 2 +- .../100-frontend-frameworks/102-vue.md | 2 +- .../100-frontend-frameworks/index.md | 2 +- .../content/109-dapps/100-testing.md | 2 +- .../content/109-dapps/103-architecture.md | 2 +- .../content/109-dapps/104-security.md | 2 +- .../106-node-as-a-service/103-quicknode.md | 2 +- .../109-dapps/106-node-as-a-service/index.md | 2 +- .../100-javascript.md | 2 +- .../107-supporting-languages/102-go.md | 2 +- .../107-supporting-languages/index.md | 1 - .../108-client-libraries/101-web3-js.md | 2 +- .../109-client-nodes/103-substrate.md | 4 +- .../109-dapps/109-client-nodes/index.md | 1 - ...101-optimistic-rollups-and-fraud-proofs.md | 4 +- .../computer-science/computer-science.md | 75 +- .../content/100-roadmap-note.md | 3 +- .../content/101-pick-a-language/index.md | 4 +- .../content/102-data-structures/102-stack.md | 3 - .../content/102-data-structures/103-queue.md | 2 - .../106-graph/103-graph-representation.md | 4 +- .../102-data-structures/106-graph/index.md | 1 - .../100-big-o-notation.md | 1 - .../103-common-runtimes/index.md | 18 +- .../100-sorting-algorithms/103-heap-sort.md | 5 - .../100-breadth-first-search.md | 1 - .../104-a-star-algorithm.md | 8 +- .../104-greedy-algorithms/index.md | 2 - .../content/104-common-algorithms/index.md | 22 +- .../101-knuth-morris-pratt.md | 8 +- .../102-substring-search/index.md | 1 - .../100-class-diagrams.md | 1 - .../content/113-complexity-classes/100-p.md | 2 +- .../content/113-complexity-classes/101-np.md | 2 +- .../content/113-complexity-classes/index.md | 9 +- .../115-balanced-search-trees/index.md | 1 - .../content/116-system-design/102-caching.md | 1 - .../content/117-databases/114-views.md | 2 +- .../117-databases/116-stored-procedures.md | 2 +- .../content/117-databases/118-replication.md | 2 +- .../102-registers-and-ram.md | 5 +- .../100-computer-hardware-components.md | 9 +- .../101-connection-types/100-nfc.md | 7 +- .../101-connection-types/101-wifi.md | 2 +- .../101-connection-types/102-bluetooth.md | 2 +- .../101-connection-types/103-infrared.md | 3 +- .../101-connection-types/index.md | 4 +- .../102-os-independent-troubleshooting.md | 2 +- .../103-popular-suites/100-icloud.md | 4 +- .../103-popular-suites/101-google-suite.md | 2 +- .../103-popular-suites/102-ms-office-suite.md | 2 +- .../103-popular-suites/index.md | 34 +- .../104-basics-of-computer-networking.md | 2 +- .../content/100-basic-it-skills/index.md | 2 +- .../101-operating-systems/100-windows.md | 4 +- .../101-operating-systems/101-linux.md | 2 +- .../101-operating-systems/102-macos.md | 6 +- .../content/101-operating-systems/index.md | 2 +- .../103-install-and-configure.md | 2 +- .../104-versions-and-differences.md | 2 +- .../105-navigating-using-gui-and-cli.md | 2 +- .../106-understand-permissions.md | 2 +- .../learn-for-each/107-installing-apps.md | 2 +- .../108-performing-crud-on-files.md | 52 +- .../learn-for-each/109-troubleshooting.md | 2 +- .../learn-for-each/110-common-commands.md | 4 +- .../learn-for-each/index.md | 2 +- .../102-networking-knowledge/100-osi-model.md | 2 +- .../102-common-ports.md | 2 +- .../103-ssl-and-tls-basics.md | 8 +- .../104-basics-of-nas-and-san.md | 2 +- .../105-basics-of-subnetting.md | 18 +- .../100-public-vs-private-ip-addresses.md | 4 +- .../106-ip-terminology/101-localhost.md | 4 +- .../106-ip-terminology/102-loopback.md | 2 +- .../106-ip-terminology/102-wan.md | 2 +- .../106-ip-terminology/103-cidr.md | 4 +- .../106-ip-terminology/104-subnet-mask.md | 2 +- .../106-ip-terminology/105-default-gateway.md | 2 +- .../106-ip-terminology/index.md | 6 +- .../100-star-topology.md | 4 +- .../101-ring-topology.md | 2 +- .../102-mesh-topology.md | 2 +- .../103-bus-topology.md | 4 +- .../107-network-topologies/index.md | 12 +- .../108-common-protocols/100-ssh.md | 24 +- .../108-common-protocols/101-rdp.md | 2 +- .../108-common-protocols/102-ftp.md | 2 +- .../108-common-protocols/103-sftp.md | 16 +- .../108-common-protocols/104-http-https.md | 2 +- .../108-common-protocols/105-ssl-tls.md | 4 +- .../108-common-protocols/index.md | 2 +- .../100-vmware.md | 2 +- .../101-virtualbox.md | 2 +- .../102-esxi.md | 4 +- .../104-proxmox.md | 18 +- .../109-virtualization-technologies/index.md | 2 +- .../100-hypervisor.md | 6 +- .../110-virutalization-basics/101-vm.md | 6 +- .../110-virutalization-basics/102-guest-os.md | 2 +- .../110-virutalization-basics/103-host-os.md | 2 +- .../110-virutalization-basics/index.md | 2 +- .../111-troubleshooting-tools/100-nslookup.md | 22 +- .../111-troubleshooting-tools/101-iptables.md | 2 +- .../102-packet-sniffers.md | 2 +- .../111-troubleshooting-tools/103-ipconfig.md | 2 +- .../111-troubleshooting-tools/104-netstat.md | 18 +- .../105-port-scanners.md | 2 +- .../111-troubleshooting-tools/106-ping.md | 2 +- .../111-troubleshooting-tools/107-dig.md | 2 +- .../111-troubleshooting-tools/108-arp.md | 2 +- .../109-protocol-analyzers.md | 2 +- .../111-troubleshooting-tools/110-nmap.md | 16 +- .../111-troubleshooting-tools/111-route.md | 2 +- .../111-troubleshooting-tools/112-tcpdump.md | 56 +- .../111-troubleshooting-tools/113-tracert.md | 8 +- .../111-troubleshooting-tools/index.md | 2 +- .../112-auth-methodologies/100-kerberos.md | 2 +- .../112-auth-methodologies/101-ldap.md | 4 +- .../112-auth-methodologies/102-sso.md | 2 +- .../103-certificates.md | 2 +- .../112-auth-methodologies/104-local-auth.md | 6 +- .../112-auth-methodologies/105-radius.md | 2 +- .../112-auth-methodologies/index.md | 2 +- .../functions-of-each/100-dhcp.md | 8 +- .../functions-of-each/101-dns.md | 2 +- .../functions-of-each/102-ntp.md | 2 +- .../functions-of-each/103-ipam.md | 2 +- .../functions-of-each/index.md | 2 +- .../content/102-networking-knowledge/index.md | 16 +- .../understand-the-terminology/100-vlan.md | 10 +- .../understand-the-terminology/101-dmz.md | 2 +- .../understand-the-terminology/102-arp.md | 2 +- .../understand-the-terminology/103-vm.md | 2 +- .../understand-the-terminology/104-nat.md | 2 +- .../understand-the-terminology/105-ip.md | 2 +- .../understand-the-terminology/106-dns.md | 2 +- .../understand-the-terminology/107-dhcp.md | 2 +- .../understand-the-terminology/108-router.md | 2 +- .../understand-the-terminology/109-switch.md | 3 +- .../understand-the-terminology/110-vpn.md | 2 +- .../understand-the-terminology/index.md | 2 +- .../understand-these/100-man.md | 4 +- .../understand-these/101-lan.md | 2 +- .../understand-these/103-wlan.md | 3 +- .../understand-these/index.md | 2 +- .../100-cryptography/100-salting.md | 2 +- .../100-cryptography/101-hashing.md | 24 +- .../100-cryptography/102-key-exchange.md | 6 +- .../100-cryptography/103-pki.md | 2 +- .../104-private-vs-public-key.md | 4 +- .../100-cryptography/105-obfuscation.md | 11 +- .../100-cryptography/index.md | 2 +- .../100-malware-and-types.md | 2 +- .../100-preparation.md | 6 +- .../101-identification.md | 10 +- .../102-containment.md | 2 +- .../103-eradication.md | 2 +- .../104-recovery.md | 2 +- .../105-lessons-learned.md | 2 +- .../101-incident-response-process/index.md | 2 +- .../101-owasp-top-10.md | 2 +- .../102-privilege-escalation-attacks.md | 2 +- .../102-threat-classification/100-zero-day.md | 4 +- .../101-known-vs-unknown.md | 2 +- .../102-threat-classification/102-apt.md | 2 +- .../102-threat-classification/index.md | 2 +- .../103-cia-triad.md | 2 +- .../103-hardening-concepts/100-mac-based.md | 2 +- .../103-hardening-concepts/101-nac-based.md | 12 +- .../102-port-blocking.md | 4 +- .../103-group-policy.md | 2 +- .../103-hardening-concepts/104-acls.md | 11 +- .../103-hardening-concepts/105-sinkholes.md | 2 +- .../103-hardening-concepts/106-patching.md | 2 +- .../103-hardening-concepts/107-jump-server.md | 2 +- .../108-endpoint-security.md | 2 +- .../103-hardening-concepts/index.md | 2 +- .../104-handshakes.md | 4 +- .../105-threat-intel-osint.md | 2 +- .../106-false-true-negative-positive.md | 5 +- .../107-blue-team-read-team-purple-team.md | 2 +- .../108-authentication-vs-authorization.md | 6 +- .../109-basics-of-ids-ips.md | 2 +- .../110-honeypots.md | 2 +- .../111-concept-of-isolation.md | 2 +- .../112-os-hardening.md | 2 +- .../113-cyber-kill-chain.md | 2 +- .../114-mfa-2fa.md | 13 +- .../115-backups-and-resiliency.md | 2 +- .../116-definition-of-risk.md | 2 +- .../117-compliance-and-auditors.md | 8 +- .../118-zero-trust.md | 2 +- .../119-perimiter-dmz-segmentation.md | 2 +- .../120-penetration-rules-of-engagement.md | 4 +- .../121-basics-of-reverse-engineering.md | 2 +- .../122-vulnerability-management.md | 20 +- .../123-threat-hunting.md | 2 +- .../124-forensics.md | 2 +- .../125-runbooks.md | 2 +- .../126-defense-in-depth.md | 2 +- .../127-common-exploit-frameworks.md | 34 +- .../128-common-hacking-tools.md | 2 +- .../100-phishing-vishing-whaling-smishing.md | 2 +- .../attack-types/101-spam-vs-spim.md | 38 +- .../attack-types/102-shoulder-surfing.md | 2 +- .../attack-types/103-dumpster-diving.md | 2 +- .../attack-types/104-tailgating.md | 2 +- .../attack-types/105-zero-day.md | 2 +- .../attack-types/106-social-engineering.md | 2 +- .../attack-types/107-reconnaissance.md | 14 +- .../attack-types/108-impersonation.md | 14 +- .../attack-types/109-watering-hole-attack.md | 2 +- .../attack-types/110-drive-by-attack.md | 2 +- .../attack-types/111-typo-squatting.md | 4 +- .../112-brute-force-vs-password-spray.md | 4 +- .../attack-types/index.md | 2 +- .../100-parrot-os.md | 4 +- .../101-kali-linux.md | 2 +- .../common-distros-for-hacking/index.md | 2 +- .../100-dos-vs-ddos.md | 2 +- .../common-network-based-attacks/101-mitm.md | 2 +- .../102-arp-poisoning.md | 2 +- .../103-evil-twin.md | 2 +- .../104-dns-poisoning.md | 6 +- .../105-spoofing.md | 2 +- .../106-deauth-attack.md | 2 +- .../107-vlan-hopping.md | 4 +- .../108-rogue-access-point.md | 2 +- .../109-war-driving-dialing.md | 2 +- .../common-network-based-attacks/index.md | 2 +- .../common-standards/100-iso.md | 2 +- .../common-standards/101-nist.md | 2 +- .../common-standards/102-rmf.md | 2 +- .../common-standards/103-cis.md | 2 +- .../common-standards/104-csf.md | 23 +- .../common-standards/index.md | 2 +- .../find-and-use-logs/100-event-logs.md | 2 +- .../find-and-use-logs/101-syslogs.md | 10 +- .../find-and-use-logs/102-netflow.md | 2 +- .../find-and-use-logs/103-packet-captures.md | 4 +- .../find-and-use-logs/104-firewall-logs.md | 2 +- .../find-and-use-logs/index.md | 2 +- .../100-nmap.md | 5 +- .../101-tracert.md | 4 +- .../102-nslookup.md | 2 +- .../103-dig.md | 2 +- .../104-curl.md | 82 +- .../105-ipconfig.md | 2 +- .../106-hping.md | 29 +- .../107-ping.md | 2 +- .../108-arp.md | 3 +- .../109-cat.md | 42 +- .../110-dd.md | 2 +- .../111-head.md | 2 +- .../112-tail.md | 2 +- .../113-grep.md | 3 +- .../114-wireshark.md | 2 +- .../115-winhex.md | 2 +- .../116-memdump.md | 2 +- .../117-ftk-imager.md | 4 +- .../118-autopsy.md | 6 +- .../index.md | 2 +- .../index.md | 2 +- .../other-attacks/100-buffer-overflow.md | 2 +- .../other-attacks/101-memory-leak.md | 2 +- .../other-attacks/102-xss.md | 2 +- .../other-attacks/103-sql-injection.md | 4 +- .../other-attacks/104-csrf.md | 2 +- .../other-attacks/105-replay-attack.md | 2 +- .../other-attacks/106-pass-the-hash.md | 4 +- .../other-attacks/107-directory-traversal.md | 2 +- .../other-attacks/index.md | 2 +- .../100-ftp-vs-sftp.md | 6 +- .../101-ssl-vs-tls.md | 2 +- .../secure-vs-unsecure-protocols/102-ipsec.md | 10 +- .../103-dnssec.md | 2 +- .../secure-vs-unsecure-protocols/104-ldaps.md | 2 +- .../secure-vs-unsecure-protocols/105-srtp.md | 2 +- .../106-s-mime.md | 2 +- .../secure-vs-unsecure-protocols/index.md | 2 +- .../100-lolbas.md | 2 +- .../tools-for-unintended-purposes/index.md | 2 +- .../uderstand-frameworks/100-attck.md | 2 +- .../uderstand-frameworks/101-kill-chain.md | 2 +- .../uderstand-frameworks/102-diamond-model.md | 2 +- .../uderstand-frameworks/index.md | 2 +- .../100-virus-total.md | 15 +- .../101-joe-sandbox.md | 2 +- .../understand-common-tools/102-any-run.md | 2 +- .../understand-common-tools/103-urlvoid.md | 2 +- .../understand-common-tools/104-urlscan.md | 18 +- .../understand-common-tools/105-whois.md | 2 +- .../understand-common-tools/index.md | 2 +- .../100-antivirus.md | 16 +- .../101-antimalware.md | 2 +- .../understand-the-following-terms/102-edr.md | 4 +- .../understand-the-following-terms/103-dlp.md | 2 +- .../104-firewall-nextgen-firewall.md | 2 +- .../105-hips.md | 2 +- .../106-nids.md | 2 +- .../108-host-based-firewall.md | 2 +- .../109-sandboxing.md | 2 +- .../understand-the-following-terms/110-acl.md | 2 +- .../111-eap-vs-peap.md | 15 +- .../112-wpa-vs-wpa2-vs-wpa3-vs-wep.md | 2 +- .../understand-the-following-terms/113-wps.md | 2 +- .../understand-the-following-terms/index.md | 2 +- .../understand/100-siem.md | 2 +- .../understand/102-soar.md | 2 +- .../understand/index.md | 2 +- .../100-security-concept-in-the-cloud.md | 24 +- .../101-cloud-deployment-flow.md | 2 +- .../102-cloud-vs-onpremises.md | 2 +- .../103-infra-as-code.md | 2 +- .../104-concept-of-serverless.md | 10 +- .../105-concept-of-cdn.md | 2 +- .../106-cloud-services/100-saas.md | 28 +- .../106-cloud-services/101-paas.md | 2 +- .../106-cloud-services/102-iaas.md | 30 +- .../106-cloud-services/index.md | 2 +- .../107-cloud-models/100-private.md | 2 +- .../107-cloud-models/101-public.md | 14 +- .../107-cloud-models/102-hybrid.md | 2 +- .../107-cloud-models/index.md | 2 +- .../108-common-cloud-environments/100-aws.md | 2 +- .../108-common-cloud-environments/101-gcp.md | 2 +- .../102-azure.md | 2 +- .../108-common-cloud-environments/index.md | 8 +- .../109-common-cloud-storage/100-s3.md | 14 +- .../109-common-cloud-storage/101-dropbox.md | 2 +- .../109-common-cloud-storage/102-box.md | 4 +- .../109-common-cloud-storage/103-one-drive.md | 2 +- .../104-google-drive.md | 14 +- .../109-common-cloud-storage/105-icloud.md | 20 +- .../109-common-cloud-storage/index.md | 2 +- .../104-cloud-skills-and-knowledge/index.md | 2 +- .../105-programming-knowledge/100-python.md | 16 +- .../105-programming-knowledge/101-go.md | 2 +- .../102-javascript.md | 36 +- .../105-programming-knowledge/103-cpp.md | 2 +- .../105-programming-knowledge/104-bash.md | 2 +- .../105-power-shell.md | 2 +- .../105-programming-knowledge/index.md | 2 +- .../advanced-certifications/200-cissp.md | 28 +- .../advanced-certifications/201-cisa.md | 2 +- .../advanced-certifications/202-cism.md | 10 +- .../advanced-certifications/203-gsec.md | 2 +- .../advanced-certifications/204-gpen.md | 28 +- .../advanced-certifications/205-gwapt.md | 2 +- .../advanced-certifications/206-giac.md | 4 +- .../advanced-certifications/207-oscp.md | 4 +- .../advanced-certifications/208-crest.md | 2 +- .../advanced-certifications/209-ceh.md | 8 +- .../advanced-certifications/index.md | 2 +- .../200-comptia-aplus.md | 4 +- .../201-comptia-linuxplus.md | 3 +- .../202-comptia-networkplus.md | 2 +- .../beginner-certifications/203-ccna.md | 16 +- .../204-comptia-securityplus.md | 4 +- .../beginner-certifications/index.md | 2 +- .../content/extras/certifications/index.md | 2 +- .../content/extras/ctfs/200-hack-the-box.md | 2 +- .../content/extras/ctfs/201-try-hack-me.md | 2 +- .../content/extras/ctfs/202-vuln-hub.md | 2 +- .../content/extras/ctfs/203-pico-ctf.md | 2 +- .../ctfs/204-sans-holiday-hack-challenge.md | 2 +- .../content/extras/ctfs/index.md | 2 +- .../cyber-security/content/extras/index.md | 2 +- .../roadmaps/cyber-security/content/index.md | 2 +- .../roadmaps/cyber-security/cyber-security.md | 78 +- .../100-what-is-design-system.md | 1 - .../101-need-of-design-system.md | 4 +- .../102-design-system-vs-component-library.md | 2 - .../103-atomic-design.md | 1 - .../105-stakeholders-involved.md | 3 +- .../106-design-system-examples.md | 1 - .../content/100-design-system-basics/index.md | 3 - .../100-component.md | 2 - .../102-design-language.md | 4 - .../103-governance.md | 4 - .../107-token.md | 1 - .../108-ui-kit.md | 1 - .../101-design-system-terminology/index.md | 1 - .../100-from-scratch.md | 1 - .../100-existing-design-process.md | 4 +- .../101-visual-audit.md | 2 +- .../106-documentation.md | 2 +- .../103-existing-design-analysis/index.md | 14 +- .../content/107-tooling/101-design/index.md | 1 - .../content/107-tooling/index.md | 1 - .../roadmaps/design-system/design-system.md | 88 +- .../devops/content/100-language/100-python.md | 2 +- .../content/100-language/102-javascript.md | 2 +- .../devops/content/100-language/104-rust.md | 2 +- .../devops/content/100-language/index.md | 2 +- .../content/101-os-concepts/100-networking.md | 2 +- .../101-os-concepts/102-virtualization.md | 3 +- .../content/101-os-concepts/105-sockets.md | 2 +- .../content/101-os-concepts/106-posix.md | 2 +- .../content/101-os-concepts/107-processes.md | 5 +- .../101-os-concepts/108-startup-management.md | 4 +- .../101-os-concepts/109-service-management.md | 2 +- .../110-threads-concurrency.md | 9 +- .../100-operating-system/index.md | 1 + .../100-screen-multiplexer.md | 2 +- .../101-live-in-terminal/102-ps.md | 1 - .../101-live-in-terminal/102-top.md | 2 +- .../106-compiling-apps.md | 2 - .../101-live-in-terminal/111-mtr.md | 2 +- .../101-live-in-terminal/112-ping.md | 2 +- .../101-live-in-terminal/113-nmap.md | 2 +- .../101-live-in-terminal/114-netstat.md | 3 +- .../101-live-in-terminal/116-tcpdump.md | 2 +- .../101-live-in-terminal/119-dig.md | 2 +- .../101-live-in-terminal/120-awk.md | 4 +- .../101-live-in-terminal/121-sed.md | 1 - .../101-live-in-terminal/123-sort.md | 3 +- .../101-live-in-terminal/126-cat.md | 9 +- .../101-live-in-terminal/127-echo.md | 2 +- .../101-live-in-terminal/128-fmt.md | 2 +- .../101-live-in-terminal/136-systemtap.md | 2 +- .../101-live-in-terminal/139-history.md | 2 +- .../101-live-in-terminal/141-scp.md | 1 - .../101-live-in-terminal/142-ufw.md | 4 +- .../103-networking-protocols/100-osi-model.md | 2 +- .../103-emails/100-white-grey-listing.md | 2 +- .../103-emails/102-imaps.md | 3 +- .../103-emails/103-pop3s.md | 3 +- .../103-emails/104-dmarc.md | 2 +- .../103-networking-protocols/104-ftp.md | 2 +- .../103-networking-protocols/105-ssl-tls.md | 2 +- .../103-networking-protocols/106-ssh.md | 2 +- .../104-setting-up-x/100-reverse-proxy.md | 8 +- .../104-setting-up-x/101-caching-server.md | 2 +- .../104-setting-up-x/102-forward-proxy.md | 8 +- .../devops/content/104-setting-up-x/index.md | 2 +- .../101-containers.md | 2 +- .../100-ansible.md | 1 - .../102-configuration-management/101-chef.md | 2 +- .../103-infrastructure-provisioning/index.md | 2 +- .../104-kubernetes.md | 4 +- .../105-secret-management/100-vault.md | 14 +- .../105-secret-management/101-sops.md | 8 +- .../102-sealed-secrets.md | 8 +- .../103-cloud-specific-tools.md | 6 +- .../105-secret-management/index.md | 9 +- .../105-infrastructure-as-code/index.md | 2 +- .../devops/content/106-ci-cd/100-gitlab-ci.md | 1 - .../102-datadog.md | 2 +- .../100-infrastructure-monitoring/index.md | 2 +- .../101-new-relic.md | 2 +- .../101-application-monitoring/index.md | 2 +- .../102-logs-management/100-elastic-stack.md | 6 +- .../content/111-design-and-implementation.md | 1 - .../content/112-management-and-monitoring.md | 2 +- src/data/roadmaps/devops/devops.md | 99 +- .../content/100-dart-basics/100-dart-pad.md | 2 +- .../content/100-dart-basics/101-variables.md | 6 +- .../100-dart-basics/102-built-in-types.md | 2 +- .../content/100-dart-basics/103-functions.md | 4 +- .../content/100-dart-basics/104-operators.md | 6 +- .../105-control-flow-statements.md | 2 +- .../100-flutter-cli.md | 2 +- .../101-ides/100-vs-code.md | 16 +- .../101-ides/101-android-studio.md | 2 +- .../101-ides/102-intellij-idea.md | 4 +- .../101-ides/index.md | 2 +- .../102-fvm.md | 1 - .../index.md | 2 +- .../102-widgets/100-stateless-widgets.md | 2 +- .../102-widgets/101-stateful-widgets.md | 2 +- .../100-material-widgets.md | 2 +- .../101-cupertino-widgets.md | 2 +- .../102-widgets/102-styled-widgets/index.md | 2 +- .../102-widgets/103-inherited-widgets.md | 2 +- .../102-widgets/104-responsive-widgets.md | 2 +- .../flutter/content/102-widgets/index.md | 2 +- .../103-working-with-assets/100-fonts.md | 2 +- .../103-working-with-assets/101-images.md | 2 +- .../102-other-file-types.md | 4 +- .../content/103-working-with-assets/index.md | 2 +- .../105-repo-hosting-services/100-github.md | 2 +- .../105-repo-hosting-services/index.md | 2 +- .../100-dependency-injection.md | 3 +- .../101-design-patterns.md | 2 +- .../102-solid-principles.md | 4 +- .../content/106-design-principles/103-oop.md | 2 +- .../content/106-design-principles/index.md | 2 +- .../101-flutter-pub-dart-pub.md | 2 +- .../content/107-package-manager/index.md | 2 +- .../content/108-working-with-apis/100-json.md | 2 +- .../108-working-with-apis/101-web-sockets.md | 2 +- .../108-working-with-apis/102-graphql.md | 4 +- .../content/108-working-with-apis/index.md | 2 +- .../109-storage/101-shared-preferences.md | 2 +- .../102-firebase/100-authentication.md | 2 +- .../109-storage/102-firebase/101-storage.md | 2 +- .../109-storage/102-firebase/102-firestore.md | 2 +- .../102-firebase/103-push-notifications.md | 2 +- .../102-firebase/104-remote-config.md | 2 +- .../102-firebase/105-cloud-functions.md | 2 +- .../content/109-storage/102-firebase/index.md | 2 +- .../flutter/content/109-storage/index.md | 2 +- .../110-advanced-dart/100-core-libraries.md | 2 +- .../content/110-advanced-dart/101-lists.md | 2 +- .../110-advanced-dart/102-collections.md | 2 +- .../content/110-advanced-dart/103-lambdas.md | 2 +- .../104-functional-programming.md | 2 +- .../content/110-advanced-dart/105-isolates.md | 2 +- .../110-advanced-dart/106-async-await.md | 4 +- .../content/110-advanced-dart/107-streams.md | 2 +- .../content/110-advanced-dart/108-futures.md | 2 +- .../content/110-advanced-dart/index.md | 2 +- .../content/111-state-management/101-bloc.md | 2 +- .../111-state-management/103-velocity-x.md | 2 +- .../content/111-state-management/104-get-x.md | 2 +- .../content/111-state-management/105-redux.md | 2 +- .../106-value-notifier.md | 2 +- .../107-change-notifier.md | 2 +- .../content/111-state-management/index.md | 2 +- .../112-animations/100-curved-animations.md | 2 +- .../101-animation-controller.md | 4 +- .../112-animations/102-animated-builder.md | 2 +- .../112-animations/103-animated-widget.md | 2 +- .../content/112-animations/104-hero.md | 2 +- .../content/112-animations/105-opacity.md | 2 +- .../flutter/content/112-animations/index.md | 2 +- .../content/113-testing/100-unit-testing.md | 3 +- .../content/113-testing/101-widget-testing.md | 2 +- .../flutter/content/113-testing/103-tdd.md | 2 +- .../flutter/content/113-testing/104-bdd.md | 2 +- .../flutter/content/113-testing/index.md | 2 +- .../114-reactive-programming/100-rxdart.md | 2 +- .../content/114-reactive-programming/index.md | 2 +- .../115-dev-tools/100-flutter-inspector.md | 2 +- .../115-dev-tools/101-flutter-outline.md | 2 +- .../115-dev-tools/102-memory-allocation.md | 2 +- .../flutter/content/115-dev-tools/index.md | 2 +- .../100-render-objects.md | 2 +- .../116-flutter-internals/102-immutability.md | 2 +- .../content/116-flutter-internals/3-trees.md | 2 +- .../content/116-flutter-internals/index.md | 2 +- .../content/117-ci-cd/100-fast-lane.md | 2 +- .../content/117-ci-cd/101-codemagic.md | 2 +- .../flutter/content/117-ci-cd/102-bitrise.md | 2 +- .../content/117-ci-cd/103-github-actions.md | 2 +- .../104-firebase-app-distribution.md | 2 +- .../flutter/content/117-ci-cd/index.md | 2 +- .../content/118-analytics/100-segment.md | 2 +- .../content/118-analytics/101-mix-panel.md | 2 +- .../118-analytics/102-firebase-analytics.md | 2 +- .../118-analytics/103-google-analytics.md | 2 +- .../flutter/content/118-analytics/index.md | 2 +- .../content/119-deployment/100-appstore.md | 2 +- .../101-guidelines-and-protocols.md | 4 +- .../content/119-deployment/101-playstore.md | 2 - .../flutter/content/119-deployment/index.md | 4 +- src/data/roadmaps/flutter/flutter.md | 85 +- .../102-browsers-and-how-they-work.md | 2 +- .../frontend/content/100-internet/index.md | 1 - .../101-html/102-forms-and-validations.md | 1 - .../103-conventions-and-best-practices.md | 1 - .../content/101-html/105-seo-basics.md | 1 - .../101-learn-dom-manipulation.md | 3 +- .../content/103-javascript/104-concepts.md | 2 +- .../101-content-security-policy.md | 1 - .../content/107-package-managers/index.md | 2 - .../content/108-css-architecture/index.md | 1 - .../100-task-runners/100-npm-scripts.md | 1 - .../101-module-bundlers/index.md | 1 - .../content/112-modern-css/101-css-modules.md | 1 - .../frontend/content/112-modern-css/index.md | 2 +- .../114-css-frameworks/114-css-first/index.md | 2 +- .../114-js-first/104-mantine.md | 2 +- .../114-js-first/105-daisy-ui.md | 2 +- .../114-css-frameworks/114-js-first/index.md | 2 +- .../104-other-options.md | 2 +- .../content/115-testing-your-apps/index.md | 1 + .../content/116-auth-strategies/index.md | 2 - .../content/116-type-checkers/index.md | 2 +- .../117-progressive-web-apps/107-payments.md | 3 - .../109-prpl-pattern.md | 8 +- .../110-rail-model.md | 8 +- .../111-performance-metrics.md | 10 +- .../113-browser-devtools.md | 12 +- .../118-server-side-rendering/index.md | 2 +- .../107-eleventy.md | 1 - .../100-react-native.md | 1 - .../121-mobile-applications/102-flutter.md | 2 +- .../content/121-mobile-applications/index.md | 8 +- .../content/122-desktop-applications/index.md | 8 +- src/data/roadmaps/frontend/frontend.md | 113 +- .../content/100-go-basics/107-conditionals.md | 6 +- .../content/100-go-basics/108-functions.md | 10 +- .../100-go-basics/111-type-inference.md | 2 +- .../golang/content/100-go-basics/114-maps.md | 2 +- .../golang/content/100-go-basics/115-make.md | 2 +- .../content/100-go-basics/116-structs.md | 2 +- .../content/101-go-advanced/100-go-modules.md | 6 +- .../101-go-advanced/101-working-with-json.md | 2 +- .../102-types-and-type-assertions.md | 2 +- .../content/101-go-advanced/105-goroutines.md | 8 +- .../content/101-go-advanced/107-buffer.md | 6 +- .../golang/content/101-go-advanced/index.md | 2 +- .../content/102-go-building-clis/index.md | 2 +- .../golang/content/103-go-orms/index.md | 2 +- .../content/104-go-web-frameworks/index.md | 8 +- .../golang/content/105-go-logging/index.md | 2 +- .../100-melody.md | 2 +- .../106-go-realtime-communication/index.md | 2 +- .../100-rest/100-heimdall.md | 1 - .../100-rest/101-grequests.md | 6 +- .../101-graphql/100-graphql-go.md | 2 +- .../107-go-api-clients/101-graphql/index.md | 2 +- .../content/109-go-microservices/101-rpcx.md | 1 + .../109-go-microservices/104-go-zero.md | 2 +- .../105-protocol-buffers.md | 1 + src/data/roadmaps/golang/golang.md | 89 +- .../100-what-is-graphql.md | 2 +- .../101-problems-graphql-solves.md | 2 +- .../102-thinking-in-graphs.md | 2 +- .../103-graphql-on-the-frontend.md | 2 +- .../104-graphql-on-the-backend.md | 2 +- .../content/100-graphql-introduction/index.md | 2 +- .../100-what-are-queries.md | 2 +- .../content/101-graphql-queries/101-fields.md | 2 +- .../101-graphql-queries/102-aliases.md | 2 +- .../101-graphql-queries/103-arguments.md | 2 +- .../101-graphql-queries/104-directives.md | 2 +- .../101-graphql-queries/105-variables.md | 2 +- .../101-graphql-queries/106-fragments.md | 2 +- .../content/101-graphql-queries/index.md | 2 +- .../102-mutations/100-what-are-mutations.md | 2 +- .../101-multiple-mutation-fields.md | 2 +- .../102-mutations/102-operation-name.md | 2 +- .../graphql/content/102-mutations/index.md | 2 +- .../100-what-are-subscriptions.md | 2 +- .../101-event-based-subscriptions.md | 2 +- .../103-subscriptions/102-live-queries.md | 2 +- .../103-defer-stream-directives.md | 2 +- .../content/103-subscriptions/index.md | 2 +- .../content/104-schema/100-type-system.md | 2 +- .../graphql/content/104-schema/101-fields.md | 2 +- .../graphql/content/104-schema/102-scalars.md | 2 +- .../graphql/content/104-schema/103-enums.md | 2 +- .../graphql/content/104-schema/104-objects.md | 2 +- .../graphql/content/104-schema/105-lists.md | 2 +- .../content/104-schema/106-interfaces.md | 2 +- .../graphql/content/104-schema/107-unions.md | 2 +- .../content/104-schema/108-arguments.md | 2 +- .../graphql/content/104-schema/index.md | 2 +- .../graphql/content/104-validation.md | 2 +- .../content/105-execution/100-root-fields.md | 2 +- .../101-resolvers/100-synchronous.md | 2 +- .../101-resolvers/101-asynchronous.md | 2 +- .../101-resolvers/102-scalar-coercion.md | 2 +- .../105-execution/101-resolvers/103-lists.md | 4 +- .../105-execution/101-resolvers/index.md | 2 +- .../content/105-execution/102-validation.md | 2 +- .../105-execution/103-producing-the-result.md | 2 +- .../graphql/content/105-execution/index.md | 2 +- .../100-graphql-over-http/100-caching.md | 2 +- .../100-graphql-over-http/101-batching.md | 2 +- .../102-authorization.md | 2 +- .../100-graphql-over-http/index.md | 2 +- .../100-real-time.md | 2 +- .../101-authorization.md | 2 +- .../101-graphql-over-websockets/index.md | 2 +- .../102-graphql-over-sse/100-authorization.md | 2 +- .../102-graphql-over-sse/index.md | 2 +- .../106-serving-over-internet/index.md | 2 +- .../graphql/content/107-pagination.md | 2 +- .../108-frontend-implementations/100-relay.md | 2 +- .../101-apollo-client.md | 2 +- .../108-frontend-implementations/index.md | 3 +- .../100-graphql-http.md | 2 +- .../101-graphql-yoga.md | 2 +- .../102-apollo-server.md | 2 +- .../103-mercurius.md | 2 +- .../109-backend-implementations/index.md | 2 +- src/data/roadmaps/graphql/graphql.md | 81 +- .../100-java-fundamentals/100-basic-syntax.md | 4 +- .../101-data-types-variables.md | 5 +- .../100-java-fundamentals/102-conditionals.md | 10 +- .../100-java-fundamentals/103-functions.md | 1 + .../104-datastructures.md | 8 +- .../content/100-java-fundamentals/105-oop.md | 14 +- .../106-files-and-apis.md | 6 +- .../100-java-fundamentals/107-loops.md | 5 +- .../108-exception-handling.md | 1 + .../content/100-java-fundamentals/index.md | 2 +- .../101-java-advanced-topics/100-generics.md | 2 +- .../101-memory-management.md | 2 +- .../103-serialization.md | 2 +- .../101-java-advanced-topics/105-streams.md | 3 +- .../106-how-jvm-works.md | 2 +- .../107-garbage-collection.md | 2 +- .../content/101-java-advanced-topics/index.md | 2 +- .../102-java-build-tools/100-gradle.md | 2 +- .../content/102-java-build-tools/index.md | 2 +- .../102-play-framework.md | 2 +- .../104-java-orm/101-spring-data-jpa.md | 2 +- .../java/content/104-java-orm/103-ebean.md | 2 +- .../java/content/104-java-orm/index.md | 2 +- .../java/content/106-java-jdbc/100-jdbi3.md | 2 +- .../107-testing-java-apps/103-jbehave.md | 2 +- .../107-testing-java-apps/105-testng.md | 2 +- .../107-testing-java-apps/106-rest-assured.md | 2 +- src/data/roadmaps/java/java.md | 89 +- .../101-history-of-javascript.md | 2 +- .../102-javascript-versions.md | 2 +- .../101-javascript-variables/101-hoisting.md | 1 - .../102-naming-rules.md | 2 +- .../103-scopes/102-global.md | 2 - .../103-scopes/index.md | 1 - .../101-object/102-builtin-objects.md | 1 + .../102-typeof-operator.md | 2 +- .../103-javascript-type-casting/index.md | 1 - .../100-indexed-collections/100-arrays.md | 2 +- .../101-keyed-collections/index.md | 2 +- .../104-javascript-data-structures/index.md | 2 +- .../index.md | 2 +- .../100-for-in-statement.md | 2 +- .../100-labeled-statements.md | 2 +- .../104-do-while-statement.md | 2 +- .../105-while-statement.md | 2 +- .../101-try-catch-finally.md | 1 - .../101-conditional-statements/100-if-else.md | 5 +- .../101-conditional-statements/101-switch.md | 11 +- .../101-conditional-statements/index.md | 2 +- .../107-javascript-control-flow/index.md | 7 +- .../102-arithmetic-operators.md | 1 + .../103-bitwise-operators.md | 2 +- .../105-bigint-operators.md | 2 +- .../106-string-operators.md | 2 +- .../100-defining-calling-functions.md | 15 +- .../105-scope-and-function-stack/index.md | 5 +- .../100-function-borrowing.md | 2 +- .../102-this-in-a-function.md | 4 +- .../103-using-this-alone.md | 4 +- .../104-this-in-event-handlers.md | 2 +- .../105-this-in-arrow-functions.md | 2 +- .../107-call-method.md | 2 +- .../108-apply-method.md | 2 +- .../109-bind-method.md | 2 +- .../111-javascript-this-keyword/index.md | 2 +- .../102-set-interval.md | 2 +- .../100-memory-lifecycle.md | 6 +- .../101-debugging-memory-leaks.md | 2 +- .../100-xml-http-request.md | 2 +- .../118-working-with-apis/101-fetch.md | 3 +- .../content/118-working-with-apis/index.md | 2 +- src/data/roadmaps/javascript/javascript.md | 95 +- .../kubernetes/content/101-containers.md | 8 +- .../102-deployments.md | 2 +- .../107-multi-cluster-management.md | 2 +- src/data/roadmaps/kubernetes/kubernetes.md | 95 +- .../100-mongodb-basics/100-sql-vs-nosql.md | 2 +- .../100-mongodb-basics/101-what-is-mongodb.md | 2 +- .../102-when-to-use-mongodb.md | 14 +- .../103-what-is-mongodb-atlas.md | 4 +- .../104-mongodb-terminology.md | 2 +- .../content/100-mongodb-basics/index.md | 14 +- .../content/101-datatypes/100-bson-vs-json.md | 2 +- .../101-embedded-documents-arrays.md | 4 +- .../content/101-datatypes/102-double.md | 4 +- .../content/101-datatypes/103-string.md | 6 +- .../content/101-datatypes/104-array.md | 27 +- .../content/101-datatypes/105-object.md | 8 +- .../content/101-datatypes/106-binary-data.md | 4 +- .../content/101-datatypes/107-undefined.md | 2 +- .../content/101-datatypes/108-object-id.md | 7 +- .../content/101-datatypes/109-boolean.md | 10 +- .../mongodb/content/101-datatypes/110-date.md | 31 +- .../mongodb/content/101-datatypes/111-null.md | 8 +- .../content/101-datatypes/112-regex.md | 10 +- .../content/101-datatypes/113-javascript.md | 26 +- .../content/101-datatypes/114-symbol.md | 2 +- .../mongodb/content/101-datatypes/115-int.md | 4 +- .../mongodb/content/101-datatypes/116-long.md | 6 +- .../content/101-datatypes/117-timestamp.md | 15 +- .../content/101-datatypes/118-decimal128.md | 12 +- .../content/101-datatypes/119-min-key.md | 6 +- .../content/101-datatypes/120-max-key.md | 5 +- .../mongodb/content/101-datatypes/index.md | 26 +- .../102-collections/100-counting-documents.md | 25 +- .../102-collections/101-insert-methods.md | 20 +- .../102-collections/102-find-methods.md | 18 +- .../102-collections/103-update-methods.md | 50 +- .../102-collections/104-delete-methods.md | 18 +- .../content/102-collections/105-bulk-write.md | 2 +- .../content/102-collections/106-validate.md | 13 +- .../mongodb/content/102-collections/index.md | 61 +- .../100-read-write-concerns.md | 2 +- .../102-useful-concepts/101-cursors.md | 7 +- .../102-retryable-reads-writes.md | 10 +- .../content/102-useful-concepts/index.md | 22 +- .../105-query-operators/100-indexes.md | 2 +- .../100-projection-operators/100-project.md | 46 +- .../100-projection-operators/101-include.md | 52 +- .../100-projection-operators/102-exclude.md | 14 +- .../100-projection-operators/103-slice.md | 6 +- .../100-projection-operators/index.md | 12 +- .../101-atlas-search-indexes.md | 14 +- .../101-comparison-operators/100-eq.md | 18 +- .../101-comparison-operators/101-gt.md | 10 +- .../101-comparison-operators/102-lt.md | 26 +- .../101-comparison-operators/103-lte.md | 10 +- .../101-comparison-operators/104-gte.md | 30 +- .../101-comparison-operators/105-ne.md | 10 +- .../101-comparison-operators/index.md | 14 +- .../102-array-operators/100-in.md | 20 +- .../102-array-operators/101-nin.md | 4 +- .../102-array-operators/102-all.md | 4 +- .../102-array-operators/103-elem-match.md | 24 +- .../102-array-operators/104-size.md | 4 +- .../102-array-operators/index.md | 22 +- .../102-query-optimization.md | 22 +- .../103-element-operators/100-exists.md | 13 +- .../103-element-operators/101-type.md | 14 +- .../103-element-operators/102-regex.md | 8 +- .../103-element-operators/index.md | 11 +- .../104-logical-operators/100-and.md | 6 +- .../104-logical-operators/101-or.md | 50 +- .../104-logical-operators/102-not.md | 8 +- .../104-logical-operators/103-nor.md | 27 +- .../104-logical-operators/index.md | 18 +- .../index-types/100-expiring.md | 4 +- .../index-types/101-geospatial.md | 20 +- .../index-types/102-text.md | 8 +- .../index-types/103-compound.md | 20 +- .../index-types/104-single-field.md | 8 +- .../105-query-operators/index-types/index.md | 2 +- .../content/105-query-operators/index.md | 12 +- .../101-common-operators/100-group.md | 32 +- .../101-common-operators/101-match.md | 3 +- .../101-common-operators/102-sort.md | 11 +- .../101-common-operators/103-project.md | 37 +- .../101-common-operators/104-skip.md | 6 +- .../101-common-operators/105-limit.md | 6 +- .../101-common-operators/106-unwind.md | 14 +- .../101-common-operators/107-lookup.md | 58 +- .../101-common-operators/107-sum.md | 16 +- .../content/106-mongodb-aggregation/index.md | 30 +- .../mongodb/content/107-transactions.md | 12 +- .../100-language-drivers.md | 4 +- .../101-mongodb-connectors/100-kafka.md | 2 +- .../101-mongodb-connectors/101-spark.md | 10 +- .../102-elastic-search.md | 2 +- .../101-mongodb-connectors/index.md | 10 +- .../100-vs-code-extension.md | 14 +- .../102-developer-tools/101-vs-analyzer.md | 2 +- .../102-developer-tools/index.md | 2 +- .../backup-recovery/100-mongodump.md | 2 +- .../backup-recovery/101-mongorestore.md | 2 +- .../backup-recovery/index.md | 2 +- .../content/108-developer-tools/index.md | 4 +- .../mongodb/content/109-scaling-mongodb.md | 16 +- .../100-role-based-access-control.md | 26 +- .../101-x509-certificate-auth.md | 51 +- .../102-kerberos-authentication.md | 2 +- .../103-ldap-proxy-auth.md | 2 +- .../110-mongodb-security/104-mongodb-audit.md | 6 +- .../encryption/100-encryption-at-rest.md | 14 +- .../encryption/101-queryable-encryption.md | 12 +- .../103-client-side-field-level-encryption.md | 20 +- .../110-mongodb-security/encryption/index.md | 2 +- .../content/110-mongodb-security/index.md | 2 +- src/data/roadmaps/mongodb/content/index.md | 2 +- src/data/roadmaps/mongodb/mongodb.md | 79 +- .../102-history-of-nodejs.md | 2 +- .../104-running-nodejs-code.md | 2 +- .../101-nodejs-modules/102-global-keyword.md | 2 +- .../nodejs/content/102-nodejs-npm/100-npx.md | 1 - .../101-global-install-vs-local-install.md | 2 +- .../102-nodejs-npm/106-creating-packages.md | 2 +- .../nodejs/content/102-nodejs-npm/index.md | 2 +- .../103-error-types/100-javascript-errors.md | 12 +- .../103-error-types/101-system-errors.md | 3 +- .../102-promises.md | 1 - .../106-set-interval.md | 2 +- .../102-process-cwd.md | 2 +- .../105-nodejs-working-with-files/103-glob.md | 2 +- .../107-dirname.md | 4 +- .../108-filename.md | 4 +- .../101-printing-output/100-process-stdout.md | 3 +- .../101-printing-output/index.md | 2 +- .../103-command-line-args/index.md | 2 +- .../104-environment-variables/index.md | 2 +- .../106-nodejs-command-line-apps/index.md | 2 +- .../107-nodejs-apis/107-api-calls-http.md | 6 +- .../content/107-nodejs-apis/110-adonis-js.md | 2 +- .../100-relational/102-sequelize.md | 1 + .../100-relational/104-native-drivers.md | 32 +- .../100-relational/index.md | 2 +- .../101-document/101-prisma.md | 1 - .../101-document/102-native-drivers.md | 2 +- .../content/111-nodejs-testing/100-jest.md | 1 - .../content/111-nodejs-testing/101-mocha.md | 2 +- .../content/111-nodejs-testing/index.md | 2 +- .../content/112-nodejs-logging/101-winston.md | 1 - .../101-forever.md | 1 - .../102-nohup.md | 1 - .../content/114-nodejs-threads/101-cluster.md | 4 +- .../114-nodejs-threads/102-worker-threads.md | 1 - .../content/114-nodejs-threads/index.md | 2 +- .../116-nodejs-more-debugging/index.md | 1 + .../100-builtin-modules.md | 2 +- src/data/roadmaps/nodejs/nodejs.md | 153 +- .../roadmaps/postgresql-dba/postgresql-dba.md | 115 +- .../100-python-basics/100-basic-syntax.md | 2 - .../100-python-basics/102-conditionals.md | 2 - .../103-typecasting-exceptions.md | 4 +- .../100-python-basics/106-string-methods.md | 4 +- .../python/content/100-python-basics/index.md | 6 +- .../python/content/100-python-roadmap-note.md | 1 - .../100-arrays-linked-lists.md | 4 - .../101-heaps-stacks-queues.md | 1 - .../102-hash-tables.md | 1 - .../103-binary-search-trees.md | 2 - .../104-recursion.md | 1 - .../105-sorting-algorithms.md | 2 +- .../100-oop/100-methods-dunder.md | 7 +- .../100-oop/101-inheritance.md | 1 - .../100-oop/102-classes.md | 1 - .../100-oop/index.md | 2 +- .../101-regular-expressions.md | 1 - .../102-python-advanced-topics/103-lambdas.md | 1 - .../104-iterators.md | 2 +- .../105-modules/100-builtin-modules.md | 1 - .../107-generator-expressions.md | 1 - .../108-paradigms.md | 1 - .../105-python-package-managers/100-pypi.md | 1 - .../105-python-package-managers/101-pip.md | 1 - .../105-python-package-managers/102-conda.md | 1 - .../105-python-package-managers/index.md | 4 +- .../100-synchronous/102-pyramid.md | 1 - .../101-asynchronous/101-aiohttp.md | 3 - .../101-asynchronous/102-tornado.md | 2 - .../101-asynchronous/103-sanic.md | 1 - .../101-asynchronous/index.md | 1 + .../content/107-python-testing/101-pytest.md | 2 - src/data/roadmaps/python/python.md | 83 +- .../100-qa-basics/101-tester-mindset.md | 5 +- .../101-gray-box-testing.md | 2 +- .../102-testing-approaches/index.md | 3 +- .../105-manage-your-testing/101-test-rail.md | 2 +- .../105-manage-your-testing/102-test-link.md | 2 +- .../105-manage-your-testing/103-zephyr.md | 3 +- .../105-manage-your-testing/106-xray.md | 4 +- .../105-manage-your-testing/index.md | 2 +- .../106-project-management/100-atlassian.md | 2 +- .../106-project-management/101-assembla.md | 2 +- .../106-project-management/102-youtrack.md | 2 +- .../106-project-management/103-trello.md | 6 +- .../106-project-management/index.md | 2 +- .../100-functional-testing/sanity-testing.md | 2 +- .../100-functional-testing/smoke-testing.md | 2 +- .../100-functional-testing/uat.md | 2 +- .../100-functional-testing/unit-testing.md | 2 +- .../accessibility-testing.md | 1 - .../101-non-functional-testing/index.md | 2 +- .../load-testing.md | 2 +- .../performance-testing.md | 2 +- .../security-testing.md | 2 +- .../stress-testing.md | 2 +- .../107-testing-techniques/index.md | 2 +- .../101-qa-sdlc/100-waterfall-model.md | 2 +- .../qa/content/101-qa-sdlc/101-v-model.md | 2 +- .../101-qa-sdlc/102-agile-model/100-kanban.md | 2 +- .../101-qa-sdlc/102-agile-model/101-scrum.md | 2 +- .../101-qa-sdlc/102-agile-model/102-safe.md | 2 +- .../101-qa-sdlc/102-agile-model/103-xp.md | 2 +- .../101-qa-sdlc/102-agile-model/index.md | 2 +- .../roadmaps/qa/content/101-qa-sdlc/index.md | 2 +- .../content/102-qa-manual-testing/100-tdd.md | 2 +- .../101-test-planning.md | 2 +- .../102-test-cases-and-scenarios.md | 2 +- .../104-compatibility.md | 2 +- .../105-verification-and-validation.md | 2 +- .../qa/content/102-qa-manual-testing/index.md | 2 +- .../100-basic-introduction/ajax.md | 2 +- .../100-basic-introduction/caching.md | 2 +- .../100-basic-introduction/csr-vs-ssr.md | 2 +- .../100-basic-introduction/index.md | 2 +- .../responsive-vs-adaptive.md | 1 + .../swas-pwas-jamstack.md | 5 +- .../100-selenium-ide.md | 4 +- .../101-browser-addons.md | 2 +- .../101-ghost-inspector.md | 2 +- .../102-automation-frameworks/index.md | 2 +- .../102-automation-frameworks/jasmine.md | 2 +- .../102-automation-frameworks/nightwatch.md | 2 +- .../robot-framework.md | 2 +- .../102-bug-management.md | 2 +- .../100-frontend-automation/index.md | 6 +- .../101-mobile-automation/index.md | 2 +- .../104-rest-assured.md | 2 +- .../102-locust.md | 2 +- .../105-artillery.md | 4 +- .../107-webpage-test.md | 2 +- .../101-accessibility-testing/101-wave.md | 2 +- .../101-accessibility-testing/102-axe.md | 2 +- .../100-authentication-authorization.md | 4 +- .../101-vulnerability-scanning.md | 6 +- .../102-security-testing/102-owasp-10.md | 2 +- .../103-attack-vectors.md | 2 +- .../104-secrets-management.md | 2 +- .../102-security-testing/index.md | 4 +- .../105-qa-email-testing/101-gmail-tester.md | 3 +- .../qa/content/106-qa-reporting/index.md | 3 +- .../107-qa-monitoring-logs/100-grafana.md | 2 +- .../107-qa-monitoring-logs/101-new-relic.md | 2 +- .../107-qa-monitoring-logs/102-run-scope.md | 5 +- .../107-qa-monitoring-logs/103-sentry.md | 2 +- .../107-qa-monitoring-logs/104-kibana.md | 4 +- .../107-qa-monitoring-logs/105-data-dog.md | 2 +- .../107-qa-monitoring-logs/106-pager-duty.md | 2 +- .../roadmaps/qa/content/108-qa-vcs/100-git.md | 2 +- .../roadmaps/qa/content/108-qa-vcs/index.md | 1 - .../roadmaps/qa/content/110-qa-ci-cd/index.md | 2 +- .../111-qa-headless-testing/100-zombie-js.md | 2 +- .../111-qa-headless-testing/101-playwright.md | 2 +- .../111-qa-headless-testing/102-puppeteer.md | 2 +- .../111-qa-headless-testing/103-cypress.md | 2 +- .../104-headless-chrome.md | 2 +- .../105-headless-fox.md | 2 +- .../111-qa-headless-testing/106-html-unit.md | 4 +- .../content/111-qa-headless-testing/index.md | 2 +- src/data/roadmaps/qa/qa.md | 69 +- .../roadmaps/react-native/react-native.md | 68 +- .../react/content/101-cli-tools/index.md | 4 +- .../103-rendering/100-component-life-cycle.md | 3 - .../103-rendering/101-lists-and-keys.md | 2 +- .../react/content/103-rendering/104-events.md | 4 +- .../react/content/103-rendering/index.md | 9 +- src/data/roadmaps/react/react.md | 87 +- .../100-application-architecture.md | 1 - .../102-levels-of-architecture/index.md | 7 +- .../content/101-architect-responsibilities.md | 22 +- .../100-design-and-architecture.md | 12 +- .../101-decision-making.md | 12 +- .../102-simplifying-things.md | 8 +- .../102-important-skills/103-how-to-code.md | 16 +- .../102-important-skills/104-documentation.md | 8 +- .../102-important-skills/105-communication.md | 12 +- .../106-estimate-and-evaluate.md | 12 +- .../102-important-skills/107-balance.md | 10 +- .../108-consult-and-coach.md | 6 +- .../109-marketing-skills.md | 12 +- .../content/102-important-skills/index.md | 20 +- .../content/103-technical-skills.md | 16 +- .../104-programming-languages/101-python.md | 2 +- .../105-dotnet-framework.md | 15 +- .../104-programming-languages/index.md | 2 +- .../103-actors.md | 2 +- .../104-acid-cap-theorem.md | 2 +- .../105-solid.md | 1 - .../106-ddd.md | 1 - .../106-tdd.md | 1 - .../index.md | 2 +- .../content/106-architect-tools/100-git.md | 2 +- .../content/106-architect-tools/101-slack.md | 2 +- .../content/106-architect-tools/102-trello.md | 2 +- .../103-atlassian-tools.md | 11 +- .../content/106-architect-tools/index.md | 2 +- .../107-architectures/100-serverless.md | 2 +- .../107-architectures/101-microservices.md | 10 +- .../103-layered-architecture.md | 10 +- .../104-distributed-systems.md | 6 +- .../107-architectures/105-service-oriented.md | 2 +- .../content/107-architectures/index.md | 2 +- .../content/108-security/101-pki.md | 32 +- .../108-security/103-auth-strategies.md | 6 +- .../content/108-security/index.md | 2 +- .../101-etl-datawarehouses.md | 6 +- .../102-sql-databases.md | 7 +- .../103-analytics/index.md | 2 +- .../103-nosql-databases.md | 9 +- .../content/109-working-with-data/index.md | 2 +- .../110-apis-and-integrations/100-grpc.md | 2 +- .../110-apis-and-integrations/101-esb-soap.md | 2 +- .../110-apis-and-integrations/102-graphql.md | 10 +- .../110-apis-and-integrations/103-rest.md | 2 +- .../110-apis-and-integrations/104-bpm-bpel.md | 3 + .../105-messaging-queues.md | 2 +- .../110-apis-and-integrations/index.md | 2 +- .../content/111-web-and-mobile/103-pwa.md | 1 - .../105-w3c-and-whatwg-standards.md | 2 +- .../content/111-web-and-mobile/index.md | 2 +- .../content/112-architect-frameworks/index.md | 2 +- .../100-pmi-itil-prince2-rup.md | 2 +- .../100-certifications/index.md | 2 +- .../101-agile-scrum/100-less.md | 2 +- .../101-agile-scrum/101-safe.md | 2 +- .../113-management/101-agile-scrum/index.md | 2 +- .../content/113-management/index.md | 2 +- .../content/114-networks/index.md | 2 +- .../100-infrastructure-as-code.md | 4 +- .../101-cloud-providers.md | 2 +- .../102-serverless-concepts.md | 2 +- .../104-service-mesh.md | 2 +- .../106-containers.md | 2 +- .../content/115-operations-knowledge/index.md | 2 +- .../101-sap-epr-hana-business-objects.md | 2 +- .../116-enterprise-software/102-emc-dms.md | 2 +- .../content/116-enterprise-software/index.md | 2 +- .../software-architect/software-architect.md | 87 +- .../101-be-consistent.md | 2 +- .../102-meaningful-names.md | 2 +- .../103-indentation-and-code-style.md | 2 +- .../104-keep-it-small.md | 2 +- .../105-pure-functions.md | 2 +- .../106-minimize-cyclomatic-complexity.md | 2 +- .../107-avoid-passing-nulls-booleans.md | 2 +- .../108-keep-framework-code-distant.md | 2 +- .../109-use-correct-constructs.md | 2 +- .../110-keep-tests-independent.md | 3 +- .../111-use-meaningful-names.md | 3 +- .../112-code-by-actor.md | 2 +- .../113-command-query-separation.md | 2 +- .../114-avoid-hasty-abstractions.md | 3 +- .../100-clean-code-principles/index.md | 2 +- .../100-structured-programming.md | 2 +- .../101-functional-programming.md | 2 +- .../102-object-oriented-programming.md | 2 +- .../101-programming-paradigms/index.md | 2 +- .../100-primary-principles/100-inheritance.md | 2 +- .../101-polymorphism.md | 2 +- .../100-primary-principles/102-abstraction.md | 2 +- .../103-encapsulation.md | 4 +- .../100-primary-principles/index.md | 2 +- .../100-abstract-classes.md | 2 +- .../101-concrete-classes.md | 2 +- .../101-paradigm-features/103-interfaces.md | 2 +- .../101-paradigm-features/index.md | 2 +- .../100-domain-models.md | 2 +- .../101-anemic-models.md | 2 +- .../102-layered-architectures.md | 2 +- .../103-domain-language.md | 2 +- .../104-class-invariants.md | 2 +- .../102-model-driven-design/index.md | 2 +- .../102-object-oriented-programming/index.md | 2 +- .../100-composition-over-inheritance.md | 2 +- .../101-encapsulate-what-varies.md | 2 +- .../102-program-against-abstractions.md | 2 +- .../103-hollywood-principle.md | 2 +- .../104-solid.md | 2 +- .../103-software-design-principles/105-dry.md | 2 +- .../106-yagni.md | 2 +- .../103-software-design-principles/index.md | 2 +- .../100-gof-design-patterns.md | 2 +- .../104-design-patterns/101-posa-patterns.md | 2 +- .../content/104-design-patterns/index.md | 2 +- .../100-component-principles.md | 2 +- .../101-policy-vs-detail.md | 2 +- .../102-coupling-and-cohesion.md | 2 +- .../103-boundaries.md | 2 +- .../105-architectural-principles/index.md | 2 +- .../100-messaging/100-publish-subscribe.md | 2 +- .../100-messaging/101-event-driven.md | 2 +- .../101-distributed/100-client-server.md | 2 +- .../101-distributed/101-peer-to-peer.md | 2 +- .../101-distributed/index.md | 4 +- .../102-structural/100-component-based.md | 2 +- .../102-structural/101-monolithic.md | 2 +- .../102-structural/102-layered.md | 2 +- .../102-structural/index.md | 2 +- .../content/106-architectural-styles/index.md | 2 +- .../107-architectural-patterns/100-cqrs.md | 2 +- .../107-architectural-patterns/101-soa.md | 2 +- .../102-domain-driven-design.md | 2 +- .../103-model-view-controller.md | 2 +- .../104-microservices.md | 2 +- .../105-blackboard-pattern.md | 4 +- .../106-microkernel.md | 2 +- .../107-serverless-architecture.md | 2 +- .../108-message-queues-streams.md | 2 +- .../109-event-sourcing.md | 2 +- .../107-architectural-patterns/index.md | 2 +- .../108-enterprise-patterns/100-dtos.md | 2 +- .../101-identity-maps.md | 2 +- .../108-enterprise-patterns/102-use-cases.md | 2 +- .../103-repositories.md | 2 +- .../108-enterprise-patterns/104-mappers.md | 2 +- .../105-transaction-script.md | 2 +- .../106-commands-queries.md | 2 +- .../107-value-objects.md | 2 +- .../108-domain-models.md | 2 +- .../108-enterprise-patterns/109-entities.md | 2 +- .../content/108-enterprise-patterns/index.md | 2 +- .../content/index.md | 2 +- .../software-design-architecture.md | 89 +- .../100-introduction/100-terminology.md | 2 +- .../100-spring-core/101-configuration.md | 2 +- .../102-dependency-injection.md | 2 - .../content/100-spring-core/103-spring-ioc.md | 2 +- .../content/100-spring-core/104-spring-aop.md | 3 - .../content/100-spring-core/105-spring-mvc.md | 2 +- .../content/100-spring-core/index.md | 2 +- .../101-spring-security/100-authentication.md | 3 - .../101-spring-security/101-authorization.md | 1 - .../content/101-spring-security/102-oauth2.md | 2 +- .../103-jwt-authentication.md | 2 +- .../content/102-spring-boot-starters.md | 2 +- .../content/103-autconfiguration.md | 2 +- .../content/104-spring-boot-actuators.md | 2 +- .../content/105-embedded-server.md | 2 +- .../content/106-hibernate/100-transactions.md | 1 - .../106-hibernate/101-relationships.md | 1 - .../106-hibernate/102-entity-lifecycle.md | 5 +- .../content/106-hibernate/index.md | 2 +- .../101-spring-data-mongodb.md | 1 - .../107-spring-data/102-spring-data-jdbc.md | 2 +- .../content/107-spring-data/index.md | 1 - .../100-spring-cloud-gateway.md | 2 - .../100-spring-cloud/101-cloud-config.md | 1 - .../102-spring-cloud-circuit-breaker.md | 2 - .../103-spring-cloud-openfeign.md | 2 +- .../100-spring-cloud/104-hystrix.md | 1 - .../100-spring-cloud/105-sleuth.md | 3 - .../100-spring-cloud/106-eureka.md | 1 - .../100-spring-cloud/index.md | 2 +- .../content/109-spring-mvc/100-servlet.md | 4 - .../content/109-spring-mvc/101-jsp-files.md | 1 - .../109-spring-mvc/102-architecture.md | 9 - .../content/109-spring-mvc/103-components.md | 7 - .../content/109-spring-mvc/index.md | 2 +- .../content/110-testing/100-jpa-test.md | 1 - .../content/110-testing/101-mock-mvc.md | 3 - .../102-spring-boot-test-annotation.md | 2 +- .../110-testing/103-mockbean-annotation.md | 2 +- .../spring-boot/content/110-testing/index.md | 3 +- src/data/roadmaps/spring-boot/spring-boot.md | 87 +- .../100-what-is-system-design.md | 4 +- .../101-how-to-approach-system-design.md | 8 +- .../102-who-is-this-guide-for.md | 2 +- .../content/100-introduction/index.md | 4 +- .../content/101-performance-vs-scalability.md | 4 +- .../content/102-latency-vs-throughput.md | 2 +- .../100-cap-theorem.md | 1 - .../103-availability-vs-consistency/index.md | 2 +- .../100-weak-consistency.md | 2 +- .../101-eventual-consistency.md | 2 +- .../102-strong-consistency.md | 2 +- .../content/104-consistency-patterns/index.md | 2 +- .../100-fail-over.md | 14 +- .../102-availability-in-numbers.md | 20 +- .../105-availability-patterns/index.md | 2 +- .../106-background-jobs/100-event-driven.md | 2 +- .../101-schedule-driven.md | 2 +- .../102-returning-results.md | 2 +- .../content/106-background-jobs/index.md | 2 +- .../content/107-domain-name-system.md | 4 +- .../100-push-cdns.md | 2 +- .../101-pull-cdns.md | 2 +- .../108-content-delivery-networks/index.md | 6 +- .../100-horizontal-scaling.md | 3 +- .../101-layer-4-load-balancing.md | 2 +- .../102-layer-7-load-balancing.md | 2 +- .../103-load-balancing-algorithms.md | 2 +- .../104-lb-vs-reverse-proxy.md | 2 +- .../content/109-load-balancers/index.md | 14 +- .../100-microservices.md | 2 +- .../101-service-discovery.md | 2 +- .../content/110-application-layer/index.md | 2 +- .../100-rdbms/100-replication.md | 2 +- .../111-databases/100-rdbms/101-sharding.md | 2 +- .../111-databases/100-rdbms/102-federation.md | 2 +- .../100-rdbms/103-denormalization.md | 2 +- .../111-databases/100-rdbms/104-sql-tuning.md | 6 +- .../content/111-databases/100-rdbms/index.md | 10 +- .../101-nosql/100-key-value-store.md | 2 +- .../101-nosql/101-document-store.md | 2 +- .../101-nosql/102-wide-column-store.md | 2 +- .../101-nosql/103-graph-databases.md | 2 +- .../content/111-databases/101-nosql/index.md | 2 +- .../content/111-databases/102-sql-vs-nosql.md | 4 +- .../content/112-caching/100-client-caching.md | 2 +- .../content/112-caching/101-cdn-caching.md | 2 +- .../112-caching/103-database-caching.md | 2 +- .../112-caching/104-application-caching.md | 4 +- .../105-caching-strategies/100-cache-aside.md | 2 +- .../101-write-through.md | 2 +- .../102-write-behind.md | 2 +- .../103-refresh-ahead.md | 3 +- .../105-caching-strategies/index.md | 2 +- .../content/112-caching/index.md | 2 +- .../113-asynchronism/100-message-queues.md | 2 +- .../113-asynchronism/101-task-queues.md | 2 +- .../113-asynchronism/102-back-pressure.md | 2 +- .../content/113-asynchronism/index.md | 2 +- .../content/114-idempotent-operations.md | 4 +- .../content/115-communication/100-http.md | 2 +- .../content/115-communication/101-tcp.md | 6 +- .../content/115-communication/102-udp.md | 2 +- .../content/115-communication/104-rest.md | 2 +- .../content/115-communication/105-grpc.md | 2 +- .../content/115-communication/106-graphql.md | 2 +- .../content/115-communication/index.md | 2 +- .../100-busy-database.md | 2 +- .../101-busy-frontend.md | 2 +- .../102-chatty-io.md | 2 +- .../103-extraneous-fetching.md | 2 +- .../104-improper-instantiation.md | 2 +- .../105-monolithic-persistence.md | 2 +- .../106-no-caching.md | 2 +- .../107-noisy-neighbor.md | 2 +- .../108-retry-storm.md | 4 +- .../109-synchronous-io.md | 2 +- .../116-performance-antipatterns/index.md | 2 +- .../117-monitoring/100-health-monitoring.md | 2 +- .../101-availability-monitoring.md | 2 +- .../102-performance-monitoring.md | 2 +- .../117-monitoring/103-security-monitoring.md | 2 +- .../117-monitoring/104-usage-monitoring.md | 2 +- .../117-monitoring/105-instrumentation.md | 2 +- .../106-visualization-and-alerts.md | 2 +- .../content/117-monitoring/index.md | 2 +- .../100-asynchronous-request-reply.md | 2 +- .../100-messaging/101-claim-check.md | 2 +- .../100-messaging/102-choreography.md | 2 +- .../100-messaging/103-competing-consumers.md | 2 +- .../100-messaging/104-pipes-and-filters.md | 2 +- .../100-messaging/105-priority-queue.md | 2 +- .../100-messaging/106-publisher-subscriber.md | 2 +- .../107-queue-based-load-leveling.md | 2 +- .../108-scheduling-agent-supervisor.md | 2 +- .../100-messaging/109-sequential-convoy.md | 2 +- .../100-messaging/index.md | 2 +- .../101-data-management/100-cache-aside.md | 2 +- .../101-data-management/101-cqrs.md | 2 +- .../101-data-management/102-event-sourcing.md | 2 +- .../101-data-management/103-index-table.md | 2 +- .../104-materialized-view.md | 2 +- .../101-data-management/105-sharding.md | 2 +- .../106-static-content-hosting.md | 2 +- .../101-data-management/107-valet-key.md | 2 +- .../101-data-management/index.md | 2 +- .../100-ambassador.md | 2 +- .../101-anti-corruption-layer.md | 2 +- .../102-backends-for-frontend.md | 2 +- .../102-design-and-implementation/103-cqrs.md | 2 +- .../104-compute-resource-consolidation.md | 2 +- .../105-external-configuration-store.md | 2 +- .../106-gateway-aggregation.md | 2 +- .../107-gateway-offloading.md | 2 +- .../108-gateway-routing.md | 2 +- .../109-leader-election.md | 2 +- .../110-pipes-and-filters.md | 2 +- .../111-sidecar.md | 2 +- .../112-static-content-hosting.md | 2 +- .../113-strangler-fig.md | 2 +- .../102-design-and-implementation/index.md | 2 +- .../100-availability/geodes.md | 2 +- .../health-endpoint-monitoring.md | 2 +- .../100-availability/index.md | 2 +- .../queue-based-load-leveling.md | 2 +- .../100-availability/throttling.md | 2 +- .../101-high-availability/bulkhead.md | 2 +- .../101-high-availability/circuit-breaker.md | 2 +- .../101-high-availability/geodes.md | 2 +- .../health-endpoint-monitoring.md | 2 +- .../101-high-availability/index.md | 2 +- .../102-resiliency/bulkhead.md | 2 +- .../102-resiliency/circuit-breaker.md | 2 +- .../compensating-transaction.md | 2 +- .../health-endpoint-monitoring.md | 2 +- .../102-resiliency/index.md | 2 +- .../102-resiliency/leader-election.md | 2 +- .../queue-based-load-leveling.md | 2 +- .../102-resiliency/retry.md | 2 +- .../scheduler-agent-supervisor.md | 2 +- .../103-security/federated-identity.md | 2 +- .../103-security/gatekeeper.md | 2 +- .../103-security/index.md | 2 +- .../103-security/valet-key.md | 2 +- .../103-reliability-patterns/index.md | 2 +- .../118-cloud-design-patterns/index.md | 2 +- .../roadmaps/system-design/system-design.md | 69 +- .../100-typescript-vs-javascript.md | 2 +- .../101-ts-js-interoperability.md | 2 +- .../100-tsconfig-json.md | 2 +- .../101-compiler-options.md | 2 +- .../102-install-configure/index.md | 2 +- .../103-running-typescript/100-tsc.md | 2 +- .../103-running-typescript/101-ts-node.md | 2 +- .../102-ts-playground.md | 2 +- .../103-running-typescript/index.md | 4 +- .../content/100-typescript/index.md | 2 +- .../101-typescript-types/100-boolean.md | 2 +- .../101-typescript-types/101-number.md | 2 +- .../101-typescript-types/102-string.md | 2 +- .../content/101-typescript-types/103-void.md | 4 +- .../101-typescript-types/104-undefined.md | 6 +- .../content/101-typescript-types/105-null.md | 6 +- .../content/101-typescript-types/109-array.md | 2 +- .../content/101-typescript-types/111-any.md | 4 +- .../101-typescript-types/112-object.md | 2 +- .../content/101-typescript-types/114-never.md | 2 +- .../115-type-assertions/100-as-const.md | 2 +- .../115-type-assertions/101-as-type.md | 4 +- .../115-type-assertions/102-as-any.md | 2 +- .../103-non-null-assertion.md | 2 +- .../115-type-assertions/index.md | 2 +- .../116-satisfies-keyword.md | 30 +- .../content/101-typescript-types/index.md | 2 +- .../typescript/content/102-type-inference.md | 4 +- .../content/103-type-compatibility.md | 6 +- .../104-combining-types/100-union-types.md | 6 +- .../101-intersection-types.md | 2 +- .../104-combining-types/102-type-aliases.md | 2 +- .../104-combining-types/103-keyof-operator.md | 6 +- .../content/104-combining-types/index.md | 6 +- .../105-type-guards/100-typeof-operator.md | 10 +- .../101-instanceof-operator.md | 2 +- .../content/105-type-guards/102-equality.md | 2 +- .../content/105-type-guards/103-truthiness.md | 2 +- .../105-type-guards/104-type-predicates.md | 2 +- .../content/105-type-guards/index.md | 2 +- .../106-functions/100-typing-functions.md | 8 +- .../106-functions/101-function-overloading.md | 7 +- .../typescript/content/106-functions/index.md | 4 +- .../107-interfaces/100-types-vs-interfaces.md | 10 +- .../101-extending-interfaces.md | 4 +- .../102-interface-declaration.md | 2 +- .../107-interfaces/103-hybrid-types.md | 3 +- .../content/107-interfaces/index.md | 4 +- .../108-classes/100-constructor-params.md | 2 +- .../108-classes/102-access-modifiers.md | 2 +- .../108-classes/103-abstract-classes.md | 2 +- .../104-inheritance-vs-polymorphism.md | 2 +- .../108-classes/105-method-overriding.md | 2 +- .../typescript/content/108-classes/index.md | 2 +- .../content/109-generics/100-generic-types.md | 8 +- .../109-generics/101-generic-constraints.md | 6 +- .../typescript/content/109-generics/index.md | 4 +- .../typescript/content/110-decorators.md | 8 +- .../content/111-utility-types/100-partial.md | 4 +- .../content/111-utility-types/101-pick.md | 6 +- .../content/111-utility-types/102-omit.md | 12 +- .../content/111-utility-types/103-readonly.md | 6 +- .../content/111-utility-types/104-record.md | 10 +- .../content/111-utility-types/105-exclude.md | 8 +- .../content/111-utility-types/106-extract.md | 4 +- .../111-utility-types/107-non-nullable.md | 4 +- .../111-utility-types/108-parameters.md | 12 +- .../111-utility-types/109-return-type.md | 16 +- .../111-utility-types/110-instance-type.md | 10 +- .../content/111-utility-types/111-awaited.md | 6 +- .../content/111-utility-types/index.md | 2 +- .../112-advanced-types/100-mapped-types.md | 2 +- .../101-conditional-types.md | 6 +- .../112-advanced-types/102-literal-types.md | 6 +- .../103-template-literal-types.md | 2 +- .../112-advanced-types/104-recursive-types.md | 7 +- .../content/112-advanced-types/index.md | 2 +- .../content/113-modules/100-namespaces.md | 8 +- .../113-modules/101-ambient-modules.md | 8 +- .../113-modules/102-external-modules.md | 6 +- .../113-modules/103-namespace-augmentation.md | 4 +- .../113-modules/104-global-augmentation.md | 6 +- .../typescript/content/113-modules/index.md | 10 +- .../114-ecosystem/102-useful-packages.md | 2 +- .../content/114-ecosystem/103-build-tools.md | 2 +- .../typescript/content/114-ecosystem/index.md | 2 +- src/data/roadmaps/typescript/typescript.md | 71 +- .../frameworks/100-bj-frogg-behavior-model.md | 2 +- ...01-stephen-wendell-create-action-funnel.md | 2 +- .../102-spectrum-of-thinking-interventions.md | 16 +- .../frameworks/103-dual-process-theory.md | 2 +- .../frameworks/index.md | 2 +- .../100-human-decision-making/index.md | 4 +- .../ux-buzzwords/100-nudge-theory.md | 5 +- .../ux-buzzwords/101-persuasive-technology.md | 20 +- .../ux-buzzwords/102-behavior-design.md | 2 +- .../ux-buzzwords/103-behavioral-science.md | 2 +- .../ux-buzzwords/104-behavioral-economics.md | 2 +- .../ux-buzzwords/index.md | 2 +- .../100-help-user-think-about-their-action.md | 2 +- .../101-educate-and-encourage-user.md | 12 +- .../100-changing-user-behavior/index.md | 2 +- .../101-cheating/100-defaulting.md | 6 +- .../101-cheating/101-make-it-incidental.md | 4 +- .../102-automate-act-of-repition.md | 2 +- .../101-cheating/index.md | 2 +- .../100-help-user-avoiding-the-cue.md | 2 +- .../101-replace-the-routine.md | 2 +- .../102-use-consciousness-to-interfere.md | 2 +- ...-mindfulness-to-avoid-acting-on-the-cue.md | 6 +- ...4-crowd-out-old-habit-with-new-behavior.md | 2 +- .../existing-behavior/index.md | 2 +- .../102-make-or-change-habbits/index.md | 2 +- .../100-bj-frogg-behavior-grid.md | 5 +- .../classifying-behavior/index.md | 2 +- .../101-behavior-change-strategies/index.md | 2 +- .../100-nir-eyal-hook-model.md | 2 +- .../101-cue-routine-reward-model.md | 6 +- .../making-users-addicted/index.md | 2 +- .../clarify-product/100-target-outcome.md | 4 +- .../clarify-product/101-target-actor.md | 2 +- .../clarify-product/102-target-action.md | 2 +- .../clarify-product/index.md | 2 +- .../100-create-user-personas.md | 2 +- .../define-target-users/index.md | 2 +- .../100-business-model-canvas.md | 2 +- .../101-lean-canvas.md | 2 +- .../existing-business-model/index.md | 2 +- .../102-understand-the-product/index.md | 2 +- .../100-business-model-inspirator.md | 2 +- .../101-competitor-analysis.md | 2 +- .../102-five-forces-model.md | 4 +- .../new-business-model/103-swot-analysis.md | 2 +- .../new-business-model/index.md | 2 +- .../100-user-stories.md | 4 +- .../create-product-backlog/index.md | 2 +- .../deliverables/100-custom-experience-map.md | 2 +- .../deliverables/101-simple-flowchart.md | 4 +- .../102-event-driven-process-chain-model.md | 9 +- ...103-business-process-model-and-notation.md | 2 +- .../deliverables/index.md | 2 +- .../content/103-conceptual-design/index.md | 5 +- .../100-keep-it-short-simple.md | 16 +- .../things-to-lookout-for/101-make-it-easy.md | 2 +- .../102-make-progress-visible.md | 2 +- ...03-make-progress-meaningful-reward-user.md | 2 +- ...e-successful-completion-clearly-visible.md | 2 +- .../things-to-lookout-for/index.md | 2 +- .../104-prototyping/100-good-layout-rules.md | 4 +- .../content/104-prototyping/index.md | 2 +- .../ux-patterns/100-call-to-action.md | 2 +- .../ux-patterns/101-status-reports.md | 2 +- .../ux-patterns/102-how-to-tips.md | 2 +- .../103-reminders-planning-prompts.md | 14 +- .../104-decision-making-support.md | 2 +- .../ux-patterns/105-behavior-change-games.md | 2 +- .../ux-patterns/106-gamification.md | 10 +- .../ux-patterns/107-planners.md | 2 +- .../ux-patterns/108-reminders.md | 2 +- .../ux-patterns/109-social-sharing.md | 6 +- .../ux-patterns/110-goal-trackers.md | 2 +- .../ux-patterns/111-tutorials.md | 2 +- .../104-prototyping/ux-patterns/index.md | 2 +- .../104-prototyping/wireframing/100-figma.md | 3 +- .../wireframing/101-adobe-xd.md | 12 +- .../104-prototyping/wireframing/102-sketch.md | 2 +- .../wireframing/103-balsamiq.md | 12 +- .../104-prototyping/wireframing/index.md | 2 +- .../100-avoid-temporal-myopia.md | 2 +- .../101-remind-of-prior-commitment-to-act.md | 2 +- .../102-make-commitment-to-friends.md | 2 +- .../create-urgency/103-make-reward-scarce.md | 10 +- .../create-urgency/index.md | 2 +- .../100-tell-user-and-ask.md | 2 +- .../101-make-it-clear-where-to-act.md | 2 +- .../102-clear-the-page-of-distractions.md | 2 +- .../getting-attention/index.md | 2 +- .../100-prime-user-relevant-associations.md | 2 +- .../101-leverage-loss-aversion.md | 2 +- .../102-use-peer-comparisons.md | 2 +- .../103-use-competition.md | 2 +- .../104-avoid-cognitive-overhead.md | 14 +- .../105-avoid-choice-overload.md | 2 +- .../106-avoid-direct-payments.md | 3 +- .../index.md | 2 +- .../content/105-ux-best-practices/index.md | 10 +- .../100-elicit-implementation-intentions.md | 2 +- .../101-default-everything.md | 2 +- .../102-lessen-the-burden-of-action-info.md | 19 +- .../103-deploy-peer-comparisons.md | 2 +- .../make-it-easy-for-users/index.md | 2 +- .../100-make-ui-professional-and-beautiful.md | 4 +- .../101-deploy-social-proof.md | 2 +- .../102-deploy-strong-subject-authority.md | 2 +- .../103-be-authentic-and-personal.md | 2 +- .../positive-intuitive-reaction/index.md | 2 +- ...100-gather-lessons-prioritize-integrate.md | 2 +- .../content/106-measuring-the-impact/index.md | 2 +- .../testing/100-incremental-ab-testing.md | 2 +- .../testing/101-multivariate-testing.md | 6 +- .../106-measuring-the-impact/testing/index.md | 2 +- src/data/roadmaps/ux-design/content/index.md | 2 +- src/data/roadmaps/ux-design/ux-design.md | 76 +- .../100-fundamental-topics/100-vue-cli.md | 1 - .../100-single-file-components.md | 1 - .../101-components/102-props.md | 4 +- .../101-components/103-events.md | 1 - .../104-attribute-inheritance.md | 1 - .../101-components/index.md | 1 - .../100-fundamental-topics/103-directives.md | 1 - .../104-api-styles/100-options-api.md | 1 - .../104-api-styles/101-composition-api.md | 1 - .../106-rendering-lists.md | 1 - .../107-conditional-rendering.md | 2 - .../110-events-handling.md | 1 - .../111-computed-properties.md | 1 - .../content/100-fundamental-topics/index.md | 1 - .../content/101-advanced-topics/100-ref.md | 3 - .../content/101-advanced-topics/101-torefs.md | 2 - .../101-advanced-topics/102-reactive.md | 1 - .../101-advanced-topics/103-computed.md | 1 - .../content/101-advanced-topics/104-watch.md | 1 - .../101-advanced-topics/106-composables.md | 1 - .../101-advanced-topics/109-provide-inject.md | 1 - .../101-advanced-topics/112-plugins.md | 2 +- .../content/101-advanced-topics/114-slots.md | 3 - .../101-advanced-topics/115-transition.md | 5 +- .../116-transition-group.md | 1 - .../100-routing/100-vue-router.md | 1 - .../101-forms/100-vue-formulate.md | 1 - .../101-forms/101-vee-validate.md | 2 - .../102-ecosystem/101-forms/102-vuelidate.md | 1 - .../102-ecosystem/102-ssr/100-quasar.md | 2 - .../105-mobile-apps/100-capacitor.md | 2 - .../102-ecosystem/106-api-calls/102-axios.md | 2 - .../106-api-calls/103-unfetch.md | 2 - .../106-api-calls/104-superagent.md | 1 - .../102-ecosystem/106-api-calls/index.md | 1 - .../content/102-ecosystem/112-element-ui.md | 2 - .../vue/content/102-ecosystem/index.md | 1 - src/data/roadmaps/vue/vue.md | 89 +- src/data/videos/acid-explained.md | 18 +- src/data/videos/all-about-http-caching.md | 18 +- src/data/videos/array-structure.md | 18 +- .../arrays-and-objects-in-javascript.md | 20 +- src/data/videos/async-javascript.md | 18 +- src/data/videos/basic-authentication.md | 18 +- src/data/videos/basics-of-authentication.md | 18 +- src/data/videos/big-o-notation.md | 18 +- src/data/videos/content-delivery-networks.md | 20 +- src/data/videos/dns-explained.md | 20 +- src/data/videos/dns-records.md | 20 +- src/data/videos/floating-point-arithmetic.md | 18 +- .../freeze-and-seal-objects-in-javascript.md | 20 +- src/data/videos/graph-data-structure.md | 18 +- src/data/videos/hash-table-data-structure.md | 18 +- src/data/videos/heap-data-structure.md | 18 +- src/data/videos/how-to-use-css-variables.md | 20 +- src/data/videos/how-to-use-github-actions.md | 20 +- src/data/videos/javascript-fetch-api.md | 18 +- src/data/videos/linked-list-data-structure.md | 18 +- src/data/videos/load-balancers-101.md | 20 +- src/data/videos/osi-model.md | 20 +- src/data/videos/practical-intro-to-react.md | 21 +- src/data/videos/promises-in-javascript.md | 20 +- src/data/videos/queue-data-structure.md | 18 +- src/data/videos/random-number-generators.md | 18 +- src/data/videos/scaling-the-unscalable.md | 20 +- .../videos/session-based-authentication.md | 18 +- src/data/videos/ssh-ssl-tls.md | 18 +- src/data/videos/stack-data-structure.md | 18 +- src/data/videos/system-design-101.md | 20 +- src/data/videos/tcp-ip-model.md | 20 +- .../videos/transport-protocols-tcp-vs-udp.md | 18 +- src/data/videos/tree-data-structure.md | 18 +- src/data/videos/what-are-data-structures.md | 18 +- src/data/videos/what-is-cap-theorem.md | 18 +- .../videos/what-is-dependency-injection.md | 20 +- .../what-is-dom-shadow-dom-virtual-dom.md | 20 +- .../videos/what-is-eventual-consistency.md | 18 +- src/data/videos/yaml-in-depth.md | 18 +- src/lib/File.ts | 2 +- src/lib/best-practice-topic.ts | 25 +- src/lib/best-pratice.ts | 22 +- src/lib/config.ts | 3 +- src/lib/guide.ts | 9 +- src/lib/jsonld-schema.ts | 3 +- src/lib/link-group.ts | 9 +- src/lib/roadmap-topic.ts | 43 +- src/lib/roadmap.ts | 39 +- src/lib/video.ts | 9 +- src/pages/pdfs.md | 60 +- src/pages/terms.md | 2 - src/styles/global.css | 10 +- tests/roadmap.spec.ts | 4 +- tsconfig.json | 2 +- 2129 files changed, 10502 insertions(+), 7966 deletions(-) create mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..fcfe9d86d --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +app-dist +dist +.idea +.github +public +node_modules +pnpm-lock.yaml diff --git a/astro.config.mjs b/astro.config.mjs index fc3860775..172dd6c47 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -26,7 +26,7 @@ export default defineConfig({ 'https://github.com/kamranahmedse', 'https://thenewstack.io', 'https://cs.fyi', - 'https://roadmap.sh' + 'https://roadmap.sh', ]; if (whiteListedStarts.some((start) => href.startsWith(start))) { diff --git a/bin/best-practice-dirs.cjs b/bin/best-practice-dirs.cjs index bbc95bbf7..d5f0bf8a7 100644 --- a/bin/best-practice-dirs.cjs +++ b/bin/best-practice-dirs.cjs @@ -3,7 +3,10 @@ const path = require('path'); const CONTENT_DIR = path.join(__dirname, '../content'); // Directory containing the best-practices -const BEST_PRACTICE_CONTENT_DIR = path.join(__dirname, '../src/data/best-practices'); +const BEST_PRACTICE_CONTENT_DIR = path.join( + __dirname, + '../src/data/best-practices' +); const bestPracticeId = process.argv[2]; const allowedBestPracticeId = fs.readdirSync(BEST_PRACTICE_CONTENT_DIR); @@ -28,7 +31,10 @@ if (!bestPracticeDirName) { process.exit(1); } -const bestPracticeDirPath = path.join(BEST_PRACTICE_CONTENT_DIR, bestPracticeDirName); +const bestPracticeDirPath = path.join( + BEST_PRACTICE_CONTENT_DIR, + bestPracticeDirName +); const bestPracticeContentDirPath = path.join( BEST_PRACTICE_CONTENT_DIR, bestPracticeDirName, @@ -37,7 +43,9 @@ const bestPracticeContentDirPath = path.join( // If best practice content already exists do not proceed as it would override the files if (fs.existsSync(bestPracticeContentDirPath)) { - console.error(`Best Practice content already exists @ ${bestPracticeContentDirPath}`); + console.error( + `Best Practice content already exists @ ${bestPracticeContentDirPath}` + ); process.exit(1); } @@ -51,7 +59,11 @@ function prepareDirTree(control, dirTree) { const controlName = control?.properties?.controlName || ''; // No directory for a group without control name - if (!controlName || controlName.startsWith('check:') || controlName.startsWith('ext_link:')) { + if ( + !controlName || + controlName.startsWith('check:') || + controlName.startsWith('ext_link:') + ) { return; } @@ -76,7 +88,10 @@ function prepareDirTree(control, dirTree) { return { dirTree }; } -const bestPractice = require(path.join(__dirname, `../public/jsons/best-practices/${bestPracticeId}`)); +const bestPractice = require(path.join( + __dirname, + `../public/jsons/best-practices/${bestPracticeId}` +)); const controls = bestPractice.mockup.controls.control; // Prepare the dir tree that we will be creating @@ -129,11 +144,7 @@ function createDirTree(parentDir, dirTree, filePaths = {}) { // For each of the directory names, create a // directory inside the given directory childrenDirNames.forEach((dirName) => { - createDirTree( - path.join(parentDir, dirName), - dirTree[dirName], - filePaths - ); + createDirTree(path.join(parentDir, dirName), dirTree[dirName], filePaths); }); return filePaths; @@ -141,4 +152,4 @@ function createDirTree(parentDir, dirTree, filePaths = {}) { // Create directories and get back the paths for created directories createDirTree(bestPracticeContentDirPath, dirTree); -console.log('Created best practice content directory structure'); \ No newline at end of file +console.log('Created best practice content directory structure'); diff --git a/bin/readme.md b/bin/readme.md index 73ea128c8..86cb552bb 100644 --- a/bin/readme.md +++ b/bin/readme.md @@ -1,4 +1,5 @@ ## CLI Tools + > A bunch of CLI scripts to make the development easier ## `roadmap-links.cjs` @@ -34,5 +35,3 @@ For the content skeleton to be generated, we should have proper grouping, and th - Assign the name to the groups. - Group names have the format of `[sort]-[slug]` e.g. `100-internet`. Each group name should start with a number starting from 100 which helps with sorting of the directories and the files. Groups at the same level have the sequential sorting information. - Each groups children have a separate group and have the name similar to `[sort]-[parent-slug]:[child-slug]` where sort refers to the sorting of the `child-slug` and not the parent. Also parent-slug does not need to have the sorting information as a part of slug e.g. if parent was `100-internet` the children would be `100-internet:how-does-the-internet-work`, `101-internet:what-is-http`, `102-internet:browsers`. - - diff --git a/bin/roadmap-content.cjs b/bin/roadmap-content.cjs index f756e012e..0b15053a6 100644 --- a/bin/roadmap-content.cjs +++ b/bin/roadmap-content.cjs @@ -95,7 +95,9 @@ async function run() { const roadmapJson = require(path.join(ROADMAP_JSON_DIR, `${roadmapId}.json`)); const groups = roadmapJson?.mockup?.controls?.control?.filter( - (control) => control.typeID === '__group__' && !control.properties?.controlName?.startsWith('ext_link') + (control) => + control.typeID === '__group__' && + !control.properties?.controlName?.startsWith('ext_link') ); if (!OPEN_AI_API_KEY) { @@ -106,8 +108,9 @@ async function run() { for (let group of groups) { const topicId = group?.properties?.controlName; - const topicTitle = group?.children?.controls?.control?.find((control) => control?.typeID === 'Label')?.properties - ?.text; + const topicTitle = group?.children?.controls?.control?.find( + (control) => control?.typeID === 'Label' + )?.properties?.text; const currTopicUrl = topicId.replace(/^\d+-/g, '/').replace(/:/g, '/'); const contentFilePath = topicUrlToPathMapping[currTopicUrl]; diff --git a/bin/roadmap-dirs.cjs b/bin/roadmap-dirs.cjs index 9a990d483..92490bc72 100644 --- a/bin/roadmap-dirs.cjs +++ b/bin/roadmap-dirs.cjs @@ -82,7 +82,10 @@ function prepareDirTree(control, dirTree, dirSortOrders) { return { dirTree, dirSortOrders }; } -const roadmap = require(path.join(__dirname, `../public/jsons/roadmaps/${roadmapId}`)); +const roadmap = require(path.join( + __dirname, + `../public/jsons/roadmaps/${roadmapId}` +)); const controls = roadmap.mockup.controls.control; // Prepare the dir tree that we will be creating and also calculate the sort orders diff --git a/bin/update-sponsors.cjs b/bin/update-sponsors.cjs index 2d687ee50..2919afbc8 100644 --- a/bin/update-sponsors.cjs +++ b/bin/update-sponsors.cjs @@ -27,15 +27,24 @@ function populatePageAds({ const isConfiguredActive = isActive.toLowerCase() === 'yes'; const currentDate = new Date(); - const isDateInRange = currentDate >= new Date(startDate) && currentDate <= new Date(endDate); + const isDateInRange = + currentDate >= new Date(startDate) && currentDate <= new Date(endDate); const shouldShowAd = isConfiguredActive && isDateInRange; - const urlPart = pageUrl.replace('https://roadmap.sh/', '').replace(/\?.+?$/, ''); + const urlPart = pageUrl + .replace('https://roadmap.sh/', '') + .replace(/\?.+?$/, ''); - const parentDir = urlPart.startsWith('best-practices/') ? 'best-practices' : 'roadmaps'; + const parentDir = urlPart.startsWith('best-practices/') + ? 'best-practices' + : 'roadmaps'; const pageId = urlPart.replace(`${parentDir}/`, ''); - const pageFilePath = path.join(__dirname, `../src/data/${parentDir}`, `${pageId}/${pageId}.md`); + const pageFilePath = path.join( + __dirname, + `../src/data/${parentDir}`, + `${pageId}/${pageId}.md` + ); if (!fs.existsSync(pageFilePath)) { console.error(`Page file not found: ${pageFilePath}`); @@ -48,7 +57,9 @@ function populatePageAds({ const frontMatterRegex = /---\n([\s\S]*?)\n---/; const existingFrontmatter = pageFileContent.match(frontMatterRegex)[1]; - const contentWithoutFrontmatter = pageFileContent.replace(frontMatterRegex, ``).trim(); + const contentWithoutFrontmatter = pageFileContent + .replace(frontMatterRegex, ``) + .trim(); let frontmatterObj = yaml.load(existingFrontmatter); delete frontmatterObj.sponsor; @@ -77,7 +88,11 @@ function populatePageAds({ frontmatterObj = Object.fromEntries(frontmatterValues); } - const newFrontmatter = yaml.dump(frontmatterObj, { lineWidth: 10000, forceQuotes: true, quotingType: '"' }); + const newFrontmatter = yaml.dump(frontmatterObj, { + lineWidth: 10000, + forceQuotes: true, + quotingType: '"', + }); const newContent = `---\n${newFrontmatter}---\n\n${contentWithoutFrontmatter}`; fs.writeFileSync(pageFilePath, newContent, 'utf8'); diff --git a/code_of_conduct.md b/code_of_conduct.md index 51b44888f..73f0f7e88 100644 --- a/code_of_conduct.md +++ b/code_of_conduct.md @@ -14,21 +14,21 @@ appearance, race, religion, or sexual identity and orientation. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or +- The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities diff --git a/package.json b/package.json index 4806cf153..8de868d41 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "start": "astro dev", "build": "astro build", "preview": "astro preview", + "format": "prettier --write .", "astro": "astro", "deploy": "NODE_DEBUG=gh-pages gh-pages -d dist -t", "compress:jsons": "node bin/compress-jsons.cjs", diff --git a/playwright.config.ts b/playwright.config.ts index 6b79ad7c7..4f4d780b0 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -100,7 +100,7 @@ const config: PlaywrightTestConfig = { /* Run your local dev server before starting the tests */ webServer: { command: 'npm run dev', - url: "http://localhost:3000", + url: 'http://localhost:3000', reuseExistingServer: !process.env.CI, }, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b05efe606..3f5e79807 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,29 +43,43 @@ devDependencies: prettier-plugin-tailwindcss: 0.2.6_kb4gmvngxncp3puqxt3b6slppy packages: - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==, + } + engines: { node: '>=6.0.0' } dependencies: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.17 dev: false /@astrojs/compiler/0.31.3: - resolution: {integrity: sha512-WbA05QH5xkdaJ3XtzDuYOjtqsip2InW5rk156sSdaHs5qN2NroUHbzWZthHJwmNAAjQSGXVIj+O6jQj81zzX/Q==} + resolution: + { + integrity: sha512-WbA05QH5xkdaJ3XtzDuYOjtqsip2InW5rk156sSdaHs5qN2NroUHbzWZthHJwmNAAjQSGXVIj+O6jQj81zzX/Q==, + } dev: false /@astrojs/compiler/1.1.0: - resolution: {integrity: sha512-C4kTwirys+HafufMqaxCbML2wqkGaXJM+5AekXh/v1IIOnMIdcEON9GBYsG6qa8aAmLhZ58aUZGPhzcA3Dx7Uw==} + resolution: + { + integrity: sha512-C4kTwirys+HafufMqaxCbML2wqkGaXJM+5AekXh/v1IIOnMIdcEON9GBYsG6qa8aAmLhZ58aUZGPhzcA3Dx7Uw==, + } dev: true /@astrojs/compiler/1.3.0: - resolution: {integrity: sha512-VxSj3gh/UTB/27rkRCT7SvyGjWtuxUO7Jf7QqDduch7j/gr/uA5P/Q5I/4zIIrZjy2yQAKyKLoox2QI2mM/BSA==} + resolution: + { + integrity: sha512-VxSj3gh/UTB/27rkRCT7SvyGjWtuxUO7Jf7QqDduch7j/gr/uA5P/Q5I/4zIIrZjy2yQAKyKLoox2QI2mM/BSA==, + } dev: false /@astrojs/language-server/0.28.3: - resolution: {integrity: sha512-fPovAX/X46eE2w03jNRMpQ7W9m2mAvNt4Ay65lD9wl1Z5vIQYxlg7Enp9qP225muTr4jSVB5QiLumFJmZMAaVA==} + resolution: + { + integrity: sha512-fPovAX/X46eE2w03jNRMpQ7W9m2mAvNt4Ay65lD9wl1Z5vIQYxlg7Enp9qP225muTr4jSVB5QiLumFJmZMAaVA==, + } hasBin: true dependencies: '@vscode/emmet-helper': 2.8.6 @@ -83,7 +97,10 @@ packages: dev: false /@astrojs/markdown-remark/2.1.2_astro@2.1.7: - resolution: {integrity: sha512-rYkmFEv2w7oEk6ZPgxHkhWzwcxSUGc1vJU0cbCu5sHF8iFNnc1cmMsjXWa5DrU5sCEf8VVYE1iFlbbnFzvHQJw==} + resolution: + { + integrity: sha512-rYkmFEv2w7oEk6ZPgxHkhWzwcxSUGc1vJU0cbCu5sHF8iFNnc1cmMsjXWa5DrU5sCEf8VVYE1iFlbbnFzvHQJw==, + } peerDependencies: astro: ^2.1.5 dependencies: @@ -106,21 +123,30 @@ packages: dev: false /@astrojs/prism/2.1.0: - resolution: {integrity: sha512-+II6nfIFGZ7iH0FunhRGcj/J1mCxjcHl85cZRuFePKLoIhFHJT3nC3myQnUw386hUaIn2W20McxxtAVf4leeRQ==} - engines: {node: '>=16.12.0'} + resolution: + { + integrity: sha512-+II6nfIFGZ7iH0FunhRGcj/J1mCxjcHl85cZRuFePKLoIhFHJT3nC3myQnUw386hUaIn2W20McxxtAVf4leeRQ==, + } + engines: { node: '>=16.12.0' } dependencies: prismjs: 1.29.0 dev: false /@astrojs/sitemap/1.2.1: - resolution: {integrity: sha512-nlKP1qc1ENZ61w+ep5RdsObjYWso4QdLGC5WyzssnKkgVDijHT61s/tHFfBWHhxqdjcw4x1V1um/eSQZPDTR3Q==} + resolution: + { + integrity: sha512-nlKP1qc1ENZ61w+ep5RdsObjYWso4QdLGC5WyzssnKkgVDijHT61s/tHFfBWHhxqdjcw4x1V1um/eSQZPDTR3Q==, + } dependencies: sitemap: 7.1.1 zod: 3.20.2 dev: false /@astrojs/tailwind/3.1.1_xwlinsvcxfu6nyuevlo4g7jv7y: - resolution: {integrity: sha512-Wx/ZtVnmtfqHWGVzvUEYZm8rufVKVgDIef0q6fzwUxoT1EpTTwBkTbpnzooogewMLOh2eTscasGe3Ih2HC1wVA==} + resolution: + { + integrity: sha512-Wx/ZtVnmtfqHWGVzvUEYZm8rufVKVgDIef0q6fzwUxoT1EpTTwBkTbpnzooogewMLOh2eTscasGe3Ih2HC1wVA==, + } peerDependencies: astro: ^2.1.3 tailwindcss: ^3.0.24 @@ -136,8 +162,11 @@ packages: dev: false /@astrojs/telemetry/2.1.0: - resolution: {integrity: sha512-P3gXNNOkRJM8zpnasNoi5kXp3LnFt0smlOSUXhkynfJpTJMIDrcMbKpNORN0OYbqpKt9JPdgRN7nsnGWpbH1ww==} - engines: {node: '>=16.12.0'} + resolution: + { + integrity: sha512-P3gXNNOkRJM8zpnasNoi5kXp3LnFt0smlOSUXhkynfJpTJMIDrcMbKpNORN0OYbqpKt9JPdgRN7nsnGWpbH1ww==, + } + engines: { node: '>=16.12.0' } dependencies: ci-info: 3.7.0 debug: 4.3.4 @@ -152,26 +181,38 @@ packages: dev: false /@astrojs/webapi/2.1.0: - resolution: {integrity: sha512-sbF44s/uU33jAdefzKzXZaENPeXR0sR3ptLs+1xp9xf5zIBhedH2AfaFB5qTEv9q5udUVoKxubZGT3G1nWs6rA==} + resolution: + { + integrity: sha512-sbF44s/uU33jAdefzKzXZaENPeXR0sR3ptLs+1xp9xf5zIBhedH2AfaFB5qTEv9q5udUVoKxubZGT3G1nWs6rA==, + } dependencies: undici: 5.20.0 dev: false /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/highlight': 7.18.6 dev: false /@babel/compat-data/7.20.10: - resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==, + } + engines: { node: '>=6.9.0' } dev: false /@babel/core/7.20.7: - resolution: {integrity: sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==, + } + engines: { node: '>=6.9.0' } dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 @@ -193,8 +234,11 @@ packages: dev: false /@babel/generator/7.20.7: - resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/types': 7.20.7 '@jridgewell/gen-mapping': 0.3.2 @@ -202,15 +246,21 @@ packages: dev: false /@babel/helper-annotate-as-pure/7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/types': 7.20.7 dev: false /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -223,35 +273,50 @@ packages: dev: false /@babel/helper-environment-visitor/7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==, + } + engines: { node: '>=6.9.0' } dev: false /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/template': 7.20.7 '@babel/types': 7.20.7 dev: false /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/types': 7.20.7 dev: false /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/types': 7.20.7 dev: false /@babel/helper-module-transforms/7.20.11: - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 @@ -266,42 +331,63 @@ packages: dev: false /@babel/helper-plugin-utils/7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==, + } + engines: { node: '>=6.9.0' } dev: false /@babel/helper-simple-access/7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/types': 7.20.7 dev: false /@babel/helper-split-export-declaration/7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/types': 7.20.7 dev: false /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==, + } + engines: { node: '>=6.9.0' } dev: false /@babel/helper-validator-identifier/7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==, + } + engines: { node: '>=6.9.0' } dev: false /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==, + } + engines: { node: '>=6.9.0' } dev: false /@babel/helpers/7.20.7: - resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/template': 7.20.7 '@babel/traverse': 7.20.10 @@ -311,8 +397,11 @@ packages: dev: false /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 @@ -320,16 +409,22 @@ packages: dev: false /@babel/parser/7.20.7: - resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==, + } + engines: { node: '>=6.0.0' } hasBin: true dependencies: '@babel/types': 7.20.7 dev: false /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.7: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -338,8 +433,11 @@ packages: dev: false /@babel/plugin-transform-react-jsx/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==, + } + engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -352,8 +450,11 @@ packages: dev: false /@babel/template/7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/code-frame': 7.18.6 '@babel/parser': 7.20.7 @@ -361,8 +462,11 @@ packages: dev: false /@babel/traverse/7.20.10: - resolution: {integrity: sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/code-frame': 7.18.6 '@babel/generator': 7.20.7 @@ -379,8 +483,11 @@ packages: dev: false /@babel/types/7.20.7: - resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==, + } + engines: { node: '>=6.9.0' } dependencies: '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 @@ -388,31 +495,46 @@ packages: dev: false /@colors/colors/1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} + resolution: + { + integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, + } + engines: { node: '>=0.1.90' } requiresBuild: true dev: false optional: true /@emmetio/abbreviation/2.2.3: - resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==} + resolution: + { + integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==, + } dependencies: '@emmetio/scanner': 1.0.0 dev: false /@emmetio/css-abbreviation/2.1.4: - resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==} + resolution: + { + integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==, + } dependencies: '@emmetio/scanner': 1.0.0 dev: false /@emmetio/scanner/1.0.0: - resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} + resolution: + { + integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==, + } dev: false /@esbuild/android-arm/0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==, + } + engines: { node: '>=12' } cpu: [arm] os: [android] requiresBuild: true @@ -420,8 +542,11 @@ packages: optional: true /@esbuild/android-arm64/0.16.17: - resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==, + } + engines: { node: '>=12' } cpu: [arm64] os: [android] requiresBuild: true @@ -429,8 +554,11 @@ packages: optional: true /@esbuild/android-x64/0.16.17: - resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==, + } + engines: { node: '>=12' } cpu: [x64] os: [android] requiresBuild: true @@ -438,8 +566,11 @@ packages: optional: true /@esbuild/darwin-arm64/0.16.17: - resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==, + } + engines: { node: '>=12' } cpu: [arm64] os: [darwin] requiresBuild: true @@ -447,8 +578,11 @@ packages: optional: true /@esbuild/darwin-x64/0.16.17: - resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==, + } + engines: { node: '>=12' } cpu: [x64] os: [darwin] requiresBuild: true @@ -456,8 +590,11 @@ packages: optional: true /@esbuild/freebsd-arm64/0.16.17: - resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==, + } + engines: { node: '>=12' } cpu: [arm64] os: [freebsd] requiresBuild: true @@ -465,8 +602,11 @@ packages: optional: true /@esbuild/freebsd-x64/0.16.17: - resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==, + } + engines: { node: '>=12' } cpu: [x64] os: [freebsd] requiresBuild: true @@ -474,8 +614,11 @@ packages: optional: true /@esbuild/linux-arm/0.16.17: - resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==, + } + engines: { node: '>=12' } cpu: [arm] os: [linux] requiresBuild: true @@ -483,8 +626,11 @@ packages: optional: true /@esbuild/linux-arm64/0.16.17: - resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==, + } + engines: { node: '>=12' } cpu: [arm64] os: [linux] requiresBuild: true @@ -492,8 +638,11 @@ packages: optional: true /@esbuild/linux-ia32/0.16.17: - resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==, + } + engines: { node: '>=12' } cpu: [ia32] os: [linux] requiresBuild: true @@ -501,8 +650,11 @@ packages: optional: true /@esbuild/linux-loong64/0.16.17: - resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==, + } + engines: { node: '>=12' } cpu: [loong64] os: [linux] requiresBuild: true @@ -510,8 +662,11 @@ packages: optional: true /@esbuild/linux-mips64el/0.16.17: - resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==, + } + engines: { node: '>=12' } cpu: [mips64el] os: [linux] requiresBuild: true @@ -519,8 +674,11 @@ packages: optional: true /@esbuild/linux-ppc64/0.16.17: - resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==, + } + engines: { node: '>=12' } cpu: [ppc64] os: [linux] requiresBuild: true @@ -528,8 +686,11 @@ packages: optional: true /@esbuild/linux-riscv64/0.16.17: - resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==, + } + engines: { node: '>=12' } cpu: [riscv64] os: [linux] requiresBuild: true @@ -537,8 +698,11 @@ packages: optional: true /@esbuild/linux-s390x/0.16.17: - resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==, + } + engines: { node: '>=12' } cpu: [s390x] os: [linux] requiresBuild: true @@ -546,8 +710,11 @@ packages: optional: true /@esbuild/linux-x64/0.16.17: - resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==, + } + engines: { node: '>=12' } cpu: [x64] os: [linux] requiresBuild: true @@ -555,8 +722,11 @@ packages: optional: true /@esbuild/netbsd-x64/0.16.17: - resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==, + } + engines: { node: '>=12' } cpu: [x64] os: [netbsd] requiresBuild: true @@ -564,8 +734,11 @@ packages: optional: true /@esbuild/openbsd-x64/0.16.17: - resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==, + } + engines: { node: '>=12' } cpu: [x64] os: [openbsd] requiresBuild: true @@ -573,8 +746,11 @@ packages: optional: true /@esbuild/sunos-x64/0.16.17: - resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==, + } + engines: { node: '>=12' } cpu: [x64] os: [sunos] requiresBuild: true @@ -582,8 +758,11 @@ packages: optional: true /@esbuild/win32-arm64/0.16.17: - resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==, + } + engines: { node: '>=12' } cpu: [arm64] os: [win32] requiresBuild: true @@ -591,8 +770,11 @@ packages: optional: true /@esbuild/win32-ia32/0.16.17: - resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==, + } + engines: { node: '>=12' } cpu: [ia32] os: [win32] requiresBuild: true @@ -600,8 +782,11 @@ packages: optional: true /@esbuild/win32-x64/0.16.17: - resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==, + } + engines: { node: '>=12' } cpu: [x64] os: [win32] requiresBuild: true @@ -609,20 +794,29 @@ packages: optional: true /@gar/promisify/1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + resolution: + { + integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==, + } dev: false /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==, + } + engines: { node: '>=6.0.0' } dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 dev: false /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==, + } + engines: { node: '>=6.0.0' } dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 @@ -630,73 +824,109 @@ packages: dev: false /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==, + } + engines: { node: '>=6.0.0' } dev: false /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, + } + engines: { node: '>=6.0.0' } dev: false /@jridgewell/source-map/0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + resolution: + { + integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==, + } dependencies: '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 dev: false /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + resolution: + { + integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, + } dev: false /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + resolution: + { + integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==, + } dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: false /@ljharb/has-package-exports-patterns/0.0.2: - resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==} + resolution: + { + integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==, + } dev: false /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: '>= 8' } dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: '>= 8' } /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: '>= 8' } dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.14.0 /@npmcli/fs/2.1.2: - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: '@gar/promisify': 1.1.3 semver: 7.3.8 dev: false /@npmcli/fs/3.1.0: - resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: semver: 7.3.8 dev: false /@npmcli/git/4.0.3: - resolution: {integrity: sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: '@npmcli/promise-spawn': 6.0.2 lru-cache: 7.14.1 @@ -712,8 +942,11 @@ packages: dev: false /@npmcli/installed-package-contents/2.0.1: - resolution: {integrity: sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } hasBin: true dependencies: npm-bundled: 3.0.0 @@ -721,8 +954,11 @@ packages: dev: false /@npmcli/move-file/2.0.1: - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } deprecated: This functionality has been moved to @npmcli/fs dependencies: mkdirp: 1.0.4 @@ -730,20 +966,29 @@ packages: dev: false /@npmcli/node-gyp/3.0.0: - resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dev: false /@npmcli/promise-spawn/6.0.2: - resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: which: 3.0.0 dev: false /@npmcli/run-script/6.0.0: - resolution: {integrity: sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: '@npmcli/node-gyp': 3.0.0 '@npmcli/promise-spawn': 6.0.2 @@ -756,8 +1001,11 @@ packages: dev: false /@pkgr/utils/2.3.1: - resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + resolution: + { + integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==, + } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } dependencies: cross-spawn: 7.0.3 is-glob: 4.0.3 @@ -767,8 +1015,11 @@ packages: tslib: 2.4.1 /@playwright/test/1.32.1: - resolution: {integrity: sha512-FTwjCuhlm1qHUGf4hWjfr64UMJD/z0hXYbk+O387Ioe6WdyZQ+0TBDAc6P+pHjx2xCv1VYNgrKbYrNixFWy4Dg==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-FTwjCuhlm1qHUGf4hWjfr64UMJD/z0hXYbk+O387Ioe6WdyZQ+0TBDAc6P+pHjx2xCv1VYNgrKbYrNixFWy4Dg==, + } + engines: { node: '>=14' } hasBin: true dependencies: '@types/node': 17.0.45 @@ -778,41 +1029,59 @@ packages: dev: true /@pnpm/network.ca-file/1.0.2: - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} + resolution: + { + integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==, + } + engines: { node: '>=12.22.0' } dependencies: graceful-fs: 4.2.10 dev: false /@pnpm/npm-conf/1.0.5: - resolution: {integrity: sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==, + } + engines: { node: '>=12' } dependencies: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 dev: false /@proload/core/0.3.3: - resolution: {integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==} + resolution: + { + integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==, + } dependencies: deepmerge: 4.2.2 escalade: 3.1.1 dev: false /@sindresorhus/is/5.3.0: - resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==, + } + engines: { node: '>=14.16' } dev: false /@szmarczak/http-timer/5.0.1: - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==, + } + engines: { node: '>=14.16' } dependencies: defer-to-connect: 2.0.1 dev: false /@tailwindcss/typography/0.5.9_tailwindcss@3.2.7: - resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==} + resolution: + { + integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==, + } peerDependencies: tailwindcss: '>=3.0.0 || insiders' dependencies: @@ -824,17 +1093,26 @@ packages: dev: true /@tootallnate/once/2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, + } + engines: { node: '>= 10' } dev: false /@trysound/sax/0.2.0: - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} + resolution: + { + integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==, + } + engines: { node: '>=10.13.0' } dev: false /@types/babel__core/7.1.20: - resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} + resolution: + { + integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==, + } dependencies: '@babel/parser': 7.20.7 '@babel/types': 7.20.7 @@ -844,107 +1122,170 @@ packages: dev: false /@types/babel__generator/7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + resolution: + { + integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==, + } dependencies: '@babel/types': 7.20.7 dev: false /@types/babel__template/7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + resolution: + { + integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==, + } dependencies: '@babel/parser': 7.20.7 '@babel/types': 7.20.7 dev: false /@types/babel__traverse/7.18.3: - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + resolution: + { + integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==, + } dependencies: '@babel/types': 7.20.7 dev: false /@types/css-tree/2.0.1: - resolution: {integrity: sha512-eeRN9rsZK/ZD5nmJCeZXxyTwq+gsvN1EljeCPEyXk+vLOAwsgpsrdXio4lPBzxAuhIKu3MK7QvZxWUw9xDX8Bg==} + resolution: + { + integrity: sha512-eeRN9rsZK/ZD5nmJCeZXxyTwq+gsvN1EljeCPEyXk+vLOAwsgpsrdXio4lPBzxAuhIKu3MK7QvZxWUw9xDX8Bg==, + } dev: false /@types/csso/5.0.0: - resolution: {integrity: sha512-EMrCTGpXRUsbFfZBzn2jcW6Sqg8kxWXkJcpvAGYSEzFqAJ2THDJSwiMeS2fPUw+0p6RQNT/n8F/skEc9hUBc0g==} + resolution: + { + integrity: sha512-EMrCTGpXRUsbFfZBzn2jcW6Sqg8kxWXkJcpvAGYSEzFqAJ2THDJSwiMeS2fPUw+0p6RQNT/n8F/skEc9hUBc0g==, + } dependencies: '@types/css-tree': 2.0.1 dev: false /@types/debug/4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + resolution: + { + integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==, + } dependencies: '@types/ms': 0.7.31 dev: false /@types/hast/2.3.4: - resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + resolution: + { + integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==, + } dependencies: '@types/unist': 2.0.6 dev: false /@types/html-minifier-terser/7.0.0: - resolution: {integrity: sha512-hw3bhStrg5e3FQT8qZKCJTrzt/UbEaunU1xRWJ+aNOTmeBMvE3S4Ml2HiiNnZgL8izu0LFVkHUoPFXL1s5QNpQ==} + resolution: + { + integrity: sha512-hw3bhStrg5e3FQT8qZKCJTrzt/UbEaunU1xRWJ+aNOTmeBMvE3S4Ml2HiiNnZgL8izu0LFVkHUoPFXL1s5QNpQ==, + } dev: false /@types/http-cache-semantics/4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + resolution: + { + integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==, + } dev: false /@types/json5/0.0.30: - resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} + resolution: + { + integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==, + } dev: false /@types/mdast/3.0.10: - resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + resolution: + { + integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==, + } dependencies: '@types/unist': 2.0.6 dev: false /@types/ms/0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + resolution: + { + integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==, + } dev: false /@types/nlcst/1.0.0: - resolution: {integrity: sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==} + resolution: + { + integrity: sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==, + } dependencies: '@types/unist': 2.0.6 dev: false /@types/node/17.0.45: - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + resolution: + { + integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==, + } /@types/parse5/6.0.3: - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + resolution: + { + integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==, + } dev: false /@types/resolve/1.20.2: - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + resolution: + { + integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, + } dev: false /@types/sax/1.2.4: - resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} + resolution: + { + integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==, + } dependencies: '@types/node': 17.0.45 dev: false /@types/sharp/0.31.1: - resolution: {integrity: sha512-5nWwamN9ZFHXaYEincMSuza8nNfOof8nmO+mcI+Agx1uMUk4/pQnNIcix+9rLPXzKrm1pS34+6WRDbDV0Jn7ag==} + resolution: + { + integrity: sha512-5nWwamN9ZFHXaYEincMSuza8nNfOof8nmO+mcI+Agx1uMUk4/pQnNIcix+9rLPXzKrm1pS34+6WRDbDV0Jn7ag==, + } dependencies: '@types/node': 17.0.45 dev: false /@types/unist/2.0.6: - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + resolution: + { + integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==, + } dev: false /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + resolution: + { + integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==, + } dev: false /@vscode/emmet-helper/2.8.6: - resolution: {integrity: sha512-IIB8jbiKy37zN8bAIHx59YmnIelY78CGHtThnibD/d3tQOKRY83bYVi9blwmZVUZh6l9nfkYH3tvReaiNxY9EQ==} + resolution: + { + integrity: sha512-IIB8jbiKy37zN8bAIHx59YmnIelY78CGHtThnibD/d3tQOKRY83bYVi9blwmZVUZh6l9nfkYH3tvReaiNxY9EQ==, + } dependencies: emmet: 2.3.6 jsonc-parser: 2.3.1 @@ -954,38 +1295,59 @@ packages: dev: false /@vscode/l10n/0.0.10: - resolution: {integrity: sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==} + resolution: + { + integrity: sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==, + } dev: false /abbrev/1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + resolution: + { + integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==, + } dev: false /acorn-node/1.8.2: - resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + resolution: + { + integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==, + } dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 xtend: 4.0.2 /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==, + } + engines: { node: '>=0.4.0' } /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==, + } + engines: { node: '>=0.4.0' } hasBin: true /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==, + } + engines: { node: '>=0.4.0' } hasBin: true dev: false /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + resolution: + { + integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, + } + engines: { node: '>= 6.0.0' } dependencies: debug: 4.3.4 transitivePeerDependencies: @@ -993,8 +1355,11 @@ packages: dev: false /agentkeepalive/4.2.1: - resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} - engines: {node: '>= 8.0.0'} + resolution: + { + integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==, + } + engines: { node: '>= 8.0.0' } dependencies: debug: 4.3.4 depd: 1.1.2 @@ -1004,102 +1369,156 @@ packages: dev: false /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, + } + engines: { node: '>=8' } dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 dev: false /ansi-align/3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + resolution: + { + integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==, + } dependencies: string-width: 4.2.3 dev: false /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: '>=8' } dev: false /ansi-regex/6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, + } + engines: { node: '>=12' } dev: false /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, + } + engines: { node: '>=4' } dependencies: color-convert: 1.9.3 dev: false /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: '>=8' } dependencies: color-convert: 2.0.1 dev: false /ansi-styles/6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, + } + engines: { node: '>=12' } dev: false /anymatch/3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, + } + engines: { node: '>= 8' } dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 /aproba/2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + resolution: + { + integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==, + } dev: false /are-we-there-yet/3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: delegates: 1.0.0 readable-stream: 3.6.0 dev: false /arg/5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, + } /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + resolution: + { + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, + } dependencies: sprintf-js: 1.0.3 dev: false /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } /array-iterate/2.0.1: - resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + resolution: + { + integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==, + } dev: false /array-union/1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==, + } + engines: { node: '>=0.10.0' } dependencies: array-uniq: 1.0.3 dev: true /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + } + engines: { node: '>=8' } dev: false /array-uniq/1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==, + } + engines: { node: '>=0.10.0' } dev: true /astro-compress/1.1.35: - resolution: {integrity: sha512-K6BK+iMbejXeUS1eAjoQhRh4geEutFrGkgCkeTAthf1XeRzPrWvtNPA7RjJBXWR8aNJtjryxyW02z3pE+4RNow==} + resolution: + { + integrity: sha512-K6BK+iMbejXeUS1eAjoQhRh4geEutFrGkgCkeTAthf1XeRzPrWvtNPA7RjJBXWR8aNJtjryxyW02z3pE+4RNow==, + } dependencies: '@types/csso': 5.0.0 '@types/html-minifier-terser': 7.0.0 @@ -1113,8 +1532,11 @@ packages: dev: false /astro/2.1.7: - resolution: {integrity: sha512-Eaq8/mJTx+kbghfW5ZEJ8rKiEduo03Rn6R/fp/gJGpBSRm/0FiVxVsrpq5SV4kUPrttEi1zMEnEc2GP6JWfXeg==} - engines: {node: '>=16.12.0', npm: '>=6.14.0'} + resolution: + { + integrity: sha512-Eaq8/mJTx+kbghfW5ZEJ8rKiEduo03Rn6R/fp/gJGpBSRm/0FiVxVsrpq5SV4kUPrttEi1zMEnEc2GP6JWfXeg==, + } + engines: { node: '>=16.12.0', npm: '>=6.14.0' } hasBin: true peerDependencies: sharp: ^0.31.3 @@ -1186,16 +1608,25 @@ packages: dev: false /async/3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + resolution: + { + integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==, + } dev: true /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } dev: true /autoprefixer/10.4.13_postcss@8.4.21: - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} - engines: {node: ^10 || ^12 || >=14} + resolution: + { + integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==, + } + engines: { node: ^10 || ^12 || >=14 } hasBin: true peerDependencies: postcss: ^8.1.0 @@ -1210,7 +1641,10 @@ packages: dev: false /axios/0.26.1: - resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} + resolution: + { + integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==, + } dependencies: follow-redirects: 1.15.2 transitivePeerDependencies: @@ -1218,22 +1652,37 @@ packages: dev: true /bail/2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + resolution: + { + integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==, + } dev: false /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } dev: false /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, + } + engines: { node: '>=8' } /bl/4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + resolution: + { + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, + } dependencies: buffer: 5.7.1 inherits: 2.0.4 @@ -1241,7 +1690,10 @@ packages: dev: false /bl/5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + resolution: + { + integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==, + } dependencies: buffer: 6.0.3 inherits: 2.0.4 @@ -1249,12 +1701,18 @@ packages: dev: false /boolbase/1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, + } dev: false /boxen/6.2.1: - resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dependencies: ansi-align: 3.0.1 camelcase: 6.3.0 @@ -1267,8 +1725,11 @@ packages: dev: false /boxen/7.0.1: - resolution: {integrity: sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==, + } + engines: { node: '>=14.16' } dependencies: ansi-align: 3.0.1 camelcase: 7.0.1 @@ -1281,26 +1742,38 @@ packages: dev: false /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + } dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 /brace-expansion/2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + } dependencies: balanced-match: 1.0.2 dev: false /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, + } + engines: { node: '>=8' } dependencies: fill-range: 7.0.1 /browserslist/4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + resolution: + { + integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true dependencies: caniuse-lite: 1.0.30001441 @@ -1310,39 +1783,57 @@ packages: dev: false /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } dev: false /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + resolution: + { + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, + } dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: false /buffer/6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + resolution: + { + integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, + } dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: false /builtins/5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + resolution: + { + integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==, + } dependencies: semver: 7.3.8 dev: false /busboy/1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + resolution: + { + integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, + } + engines: { node: '>=10.16.0' } dependencies: streamsearch: 1.1.0 dev: false /cacache/16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: '@npmcli/fs': 2.1.2 '@npmcli/move-file': 2.0.1 @@ -1367,8 +1858,11 @@ packages: dev: false /cacache/17.0.4: - resolution: {integrity: sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.0 @@ -1388,13 +1882,19 @@ packages: dev: false /cacheable-lookup/7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==, + } + engines: { node: '>=14.16' } dev: false /cacheable-request/10.2.5: - resolution: {integrity: sha512-5RwYYCfzjNPsyJxb/QpaM0bfzx+kw5/YpDhZPm9oMIDntHFQ9YXeyV47ZvzlTE0XrrrbyO2UITJH4GF9eRLdXQ==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-5RwYYCfzjNPsyJxb/QpaM0bfzx+kw5/YpDhZPm9oMIDntHFQ9YXeyV47ZvzlTE0XrrrbyO2UITJH4GF9eRLdXQ==, + } + engines: { node: '>=14.16' } dependencies: '@types/http-cache-semantics': 4.0.1 get-stream: 6.0.1 @@ -1406,37 +1906,58 @@ packages: dev: false /camel-case/4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + resolution: + { + integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==, + } dependencies: pascal-case: 3.1.2 tslib: 2.4.1 dev: false /camelcase-css/2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, + } + engines: { node: '>= 6' } /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + } + engines: { node: '>=10' } dev: false /camelcase/7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==, + } + engines: { node: '>=14.16' } dev: false /caniuse-lite/1.0.30001441: - resolution: {integrity: sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==} + resolution: + { + integrity: sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==, + } dev: false /ccount/2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + resolution: + { + integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, + } dev: false /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + } + engines: { node: '>=4' } dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 @@ -1444,33 +1965,51 @@ packages: dev: false /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: '>=10' } dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 dev: false /chalk/5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + resolution: + { + integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==, + } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } dev: false /character-entities-html4/2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + resolution: + { + integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, + } dev: false /character-entities-legacy/3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + resolution: + { + integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, + } dev: false /character-entities/2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + resolution: + { + integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==, + } dev: false /chokidar/3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: '>= 8.10.0' } dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -1483,51 +2022,78 @@ packages: fsevents: 2.3.2 /chownr/1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + resolution: + { + integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, + } dev: false /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==, + } + engines: { node: '>=10' } dev: false /ci-info/3.7.0: - resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==, + } + engines: { node: '>=8' } dev: false /clean-css/5.2.0: - resolution: {integrity: sha512-2639sWGa43EMmG7fn8mdVuBSs6HuWaSor+ZPoFWzenBc6oN+td8YhTfghWXZ25G1NiiSvz8bOFBS7PdSbTiqEA==} - engines: {node: '>= 10.0'} + resolution: + { + integrity: sha512-2639sWGa43EMmG7fn8mdVuBSs6HuWaSor+ZPoFWzenBc6oN+td8YhTfghWXZ25G1NiiSvz8bOFBS7PdSbTiqEA==, + } + engines: { node: '>= 10.0' } dependencies: source-map: 0.6.1 dev: false /clean-stack/2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==, + } + engines: { node: '>=6' } dev: false /cli-boxes/3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==, + } + engines: { node: '>=10' } dev: false /cli-cursor/4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dependencies: restore-cursor: 4.0.0 dev: false /cli-spinners/2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==, + } + engines: { node: '>=6' } dev: false /cli-table3/0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} - engines: {node: 10.* || >= 12.*} + resolution: + { + integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==, + } + engines: { node: 10.* || >= 12.* } dependencies: string-width: 4.2.3 optionalDependencies: @@ -1535,100 +2101,157 @@ packages: dev: false /clone/1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + resolution: + { + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + } + engines: { node: '>=0.8' } dev: false /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + } dependencies: color-name: 1.1.3 dev: false /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: '>=7.0.0' } dependencies: color-name: 1.1.4 dev: false /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + } dev: false /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } /color-string/1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + resolution: + { + integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, + } dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: false /color-support/1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + resolution: + { + integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==, + } hasBin: true dev: false /color/4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} + resolution: + { + integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, + } + engines: { node: '>=12.5.0' } dependencies: color-convert: 2.0.1 color-string: 1.9.1 dev: false /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: '>= 0.8' } dependencies: delayed-stream: 1.0.0 dev: true /comma-separated-tokens/2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + resolution: + { + integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, + } dev: false /commander/10.0.0: - resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==, + } + engines: { node: '>=14' } dev: false /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, + } /commander/7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, + } + engines: { node: '>= 10' } dev: false /commander/9.4.1: - resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} - engines: {node: ^12.20.0 || >=14} + resolution: + { + integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==, + } + engines: { node: ^12.20.0 || >=14 } dev: false /common-ancestor-path/1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + resolution: + { + integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==, + } dev: false /commondir/1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + resolution: + { + integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, + } dev: true /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } /config-chain/1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + resolution: + { + integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==, + } dependencies: ini: 1.3.8 proto-list: 1.2.4 dev: false /configstore/6.0.0: - resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==, + } + engines: { node: '>=12' } dependencies: dot-prop: 6.0.1 graceful-fs: 4.2.10 @@ -1638,35 +2261,53 @@ packages: dev: false /console-control-strings/1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + resolution: + { + integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==, + } dev: false /convert-source-map/1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + resolution: + { + integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, + } dev: false /cookie/0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==, + } + engines: { node: '>= 0.6' } dev: false /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + } + engines: { node: '>= 8' } dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 /crypto-random-string/4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==, + } + engines: { node: '>=12' } dependencies: type-fest: 1.4.0 dev: false /css-select/5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + resolution: + { + integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, + } dependencies: boolbase: 1.0.0 css-what: 6.1.0 @@ -1676,41 +2317,59 @@ packages: dev: false /css-tree/2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + resolution: + { + integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } dependencies: mdn-data: 2.0.28 source-map-js: 1.0.2 dev: false /css-tree/2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + resolution: + { + integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } dependencies: mdn-data: 2.0.30 source-map-js: 1.0.2 dev: false /css-what/6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, + } + engines: { node: '>= 6' } dev: false /cssesc/3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, + } + engines: { node: '>=4' } hasBin: true /csso/5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + resolution: + { + integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } dependencies: css-tree: 2.2.1 dev: false /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: '>=6.0' } peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -1721,78 +2380,123 @@ packages: dev: false /decode-named-character-reference/1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + resolution: + { + integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==, + } dependencies: character-entities: 2.0.2 dev: false /decompress-response/6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==, + } + engines: { node: '>=10' } dependencies: mimic-response: 3.1.0 dev: false /deep-extend/0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, + } + engines: { node: '>=4.0.0' } dev: false /deepmerge-ts/4.3.0: - resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==} - engines: {node: '>=12.4.0'} + resolution: + { + integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==, + } + engines: { node: '>=12.4.0' } dev: false /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==, + } + engines: { node: '>=0.10.0' } dev: false /defaults/1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + resolution: + { + integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, + } dependencies: clone: 1.0.4 dev: false /defer-to-connect/2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==, + } + engines: { node: '>=10' } dev: false /define-lazy-prop/2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, + } + engines: { node: '>=8' } /defined/1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + resolution: + { + integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==, + } /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: '>=0.4.0' } dev: true /delegates/1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + resolution: + { + integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==, + } dev: false /depd/1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==, + } + engines: { node: '>= 0.6' } dev: false /dequal/2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + } + engines: { node: '>=6' } dev: false /detect-libc/2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==, + } + engines: { node: '>=8' } dev: false /detective/5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} + resolution: + { + integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==, + } + engines: { node: '>=0.8.0' } hasBin: true dependencies: acorn-node: 1.8.2 @@ -1800,29 +2504,47 @@ packages: minimist: 1.2.7 /devalue/4.2.0: - resolution: {integrity: sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==} + resolution: + { + integrity: sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==, + } dev: false /didyoumean/1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + resolution: + { + integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, + } /diff/5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} + resolution: + { + integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==, + } + engines: { node: '>=0.3.1' } dev: false /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: '>=8' } dependencies: path-type: 4.0.0 dev: false /dlv/1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + resolution: + { + integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, + } /dom-serializer/2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + resolution: + { + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, + } dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 @@ -1830,18 +2552,27 @@ packages: dev: false /domelementtype/2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + resolution: + { + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, + } dev: false /domhandler/5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, + } + engines: { node: '>= 4' } dependencies: domelementtype: 2.3.0 dev: false /domutils/3.0.1: - resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} + resolution: + { + integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==, + } dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 @@ -1849,53 +2580,83 @@ packages: dev: false /dot-case/3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + resolution: + { + integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, + } dependencies: no-case: 3.0.4 tslib: 2.4.1 dev: false /dot-prop/6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==, + } + engines: { node: '>=10' } dependencies: is-obj: 2.0.0 dev: false /dset/3.1.2: - resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==, + } + engines: { node: '>=4' } dev: false /eastasianwidth/0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + resolution: + { + integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, + } dev: false /electron-to-chromium/1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + resolution: + { + integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==, + } dev: false /email-addresses/5.0.0: - resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} + resolution: + { + integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==, + } dev: true /emmet/2.3.6: - resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==} + resolution: + { + integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==, + } dependencies: '@emmetio/abbreviation': 2.2.3 '@emmetio/css-abbreviation': 2.1.4 dev: false /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } dev: false /emoji-regex/9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, + } dev: false /encoding/0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + resolution: + { + integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, + } requiresBuild: true dependencies: iconv-lite: 0.6.3 @@ -1903,37 +2664,58 @@ packages: optional: true /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, + } dependencies: once: 1.4.0 dev: false /entities/3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==, + } + engines: { node: '>=0.12' } dev: true /entities/4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==, + } + engines: { node: '>=0.12' } dev: false /env-paths/2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, + } + engines: { node: '>=6' } dev: false /err-code/2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + resolution: + { + integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==, + } dev: false /es-module-lexer/1.1.0: - resolution: {integrity: sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==} + resolution: + { + integrity: sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==, + } dev: false /esbuild/0.16.17: - resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==, + } + engines: { node: '>=12' } hasBin: true requiresBuild: true optionalDependencies: @@ -1962,42 +2744,66 @@ packages: dev: false /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, + } + engines: { node: '>=6' } dev: false /escape-goat/4.0.0: - resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==, + } + engines: { node: '>=12' } dev: false /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + } + engines: { node: '>=0.8.0' } /escape-string-regexp/5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, + } + engines: { node: '>=12' } dev: false /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + } + engines: { node: '>=4' } hasBin: true dev: false /estree-walker/3.0.1: - resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} + resolution: + { + integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==, + } dev: false /events/3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} + resolution: + { + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, + } + engines: { node: '>=0.8.x' } dev: false /execa/6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -2011,24 +2817,36 @@ packages: dev: false /expand-template/2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==, + } + engines: { node: '>=6' } dev: false /extend-shallow/2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, + } + engines: { node: '>=0.10.0' } dependencies: is-extendable: 0.1.1 dev: false /extend/3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + resolution: + { + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, + } dev: false /fast-glob/3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} + resolution: + { + integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==, + } + engines: { node: '>=8.6.0' } dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -2037,22 +2855,34 @@ packages: micromatch: 4.0.5 /fast-memoize/2.5.2: - resolution: {integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==} + resolution: + { + integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==, + } dev: false /fastq/1.14.0: - resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} + resolution: + { + integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==, + } dependencies: reusify: 1.0.4 /filename-reserved-regex/2.0.0: - resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==, + } + engines: { node: '>=4' } dev: true /filenamify/4.3.0: - resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==, + } + engines: { node: '>=8' } dependencies: filename-reserved-regex: 2.0.0 strip-outer: 1.0.1 @@ -2060,21 +2890,30 @@ packages: dev: true /files-pipe/0.0.1: - resolution: {integrity: sha512-+U75QMGwmNi6S3cLJPCXtCWCUP3QTKCf6zwtW+7A+OS06PDbiX6MOPI3KE6XZZKLl0UYdiB3rimyFeqZDUdh1g==} + resolution: + { + integrity: sha512-+U75QMGwmNi6S3cLJPCXtCWCUP3QTKCf6zwtW+7A+OS06PDbiX6MOPI3KE6XZZKLl0UYdiB3rimyFeqZDUdh1g==, + } dependencies: deepmerge-ts: 4.3.0 fast-glob: 3.2.12 dev: false /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, + } + engines: { node: '>=8' } dependencies: to-regex-range: 5.0.1 /find-cache-dir/3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==, + } + engines: { node: '>=8' } dependencies: commondir: 1.0.1 make-dir: 3.1.0 @@ -2082,30 +2921,42 @@ packages: dev: true /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + } + engines: { node: '>=8' } dependencies: locate-path: 5.0.0 path-exists: 4.0.0 /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: '>=10' } dependencies: locate-path: 6.0.0 path-exists: 4.0.0 dev: false /find-yarn-workspace-root2/1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + resolution: + { + integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==, + } dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 dev: false /follow-redirects/1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==, + } + engines: { node: '>=4.0' } peerDependencies: debug: '*' peerDependenciesMeta: @@ -2114,13 +2965,19 @@ packages: dev: true /form-data-encoder/2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} + resolution: + { + integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==, + } + engines: { node: '>= 14.17' } dev: false /form-data/4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, + } + engines: { node: '>= 6' } dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -2128,21 +2985,33 @@ packages: dev: true /fp-and-or/0.1.3: - resolution: {integrity: sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==, + } + engines: { node: '>=10' } dev: false /fraction.js/4.2.0: - resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + resolution: + { + integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==, + } dev: false /fs-constants/1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + resolution: + { + integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, + } dev: false /fs-extra/8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + resolution: + { + integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, + } + engines: { node: '>=6 <7 || >=8' } dependencies: graceful-fs: 4.2.10 jsonfile: 4.0.0 @@ -2150,35 +3019,53 @@ packages: dev: true /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==, + } + engines: { node: '>= 8' } dependencies: minipass: 3.3.6 dev: false /fs-minipass/3.0.0: - resolution: {integrity: sha512-EUojgQaSPy6sxcqcZgQv6TVF6jiKvurji3AxhAivs/Ep4O1UpS8TusaxpybfFHZ2skRhLqzk6WR8nqNYIMMDeA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-EUojgQaSPy6sxcqcZgQv6TVF6jiKvurji3AxhAivs/Ep4O1UpS8TusaxpybfFHZ2skRhLqzk6WR8nqNYIMMDeA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: minipass: 4.0.0 dev: false /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] requiresBuild: true optional: true /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + resolution: + { + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, + } /gauge/4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -2191,23 +3078,35 @@ packages: dev: false /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, + } + engines: { node: '>=6.9.0' } dev: false /get-stdin/8.0.0: - resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==, + } + engines: { node: '>=10' } dev: false /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: '>=10' } dev: false /gh-pages/5.0.0: - resolution: {integrity: sha512-Nqp1SjkPIB94Xw/3yYNTUL+G2dxlhjvv1zeN/4kMC1jfViTEqhtVz/Ba1zSXHuvXCN9ADNS1dN4r5/J/nZWEQQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Nqp1SjkPIB94Xw/3yYNTUL+G2dxlhjvv1zeN/4kMC1jfViTEqhtVz/Ba1zSXHuvXCN9ADNS1dN4r5/J/nZWEQQ==, + } + engines: { node: '>=10' } hasBin: true dependencies: async: 3.2.4 @@ -2220,31 +3119,49 @@ packages: dev: true /github-from-package/0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + resolution: + { + integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==, + } dev: false /github-slugger/1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + resolution: + { + integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==, + } dev: false /github-slugger/2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + resolution: + { + integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==, + } dev: false /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: '>= 6' } dependencies: is-glob: 4.0.3 /glob-parent/6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: '>=10.13.0' } dependencies: is-glob: 4.0.3 /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, + } dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -2254,8 +3171,11 @@ packages: path-is-absolute: 1.0.1 /glob/8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==, + } + engines: { node: '>=12' } dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -2265,8 +3185,11 @@ packages: dev: false /glob/9.3.2: - resolution: {integrity: sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { + integrity: sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==, + } + engines: { node: '>=16 || 14 >=14.17' } dependencies: fs.realpath: 1.0.0 minimatch: 7.4.3 @@ -2275,23 +3198,35 @@ packages: dev: false /global-dirs/3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==, + } + engines: { node: '>=10' } dependencies: ini: 2.0.0 dev: false /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, + } + engines: { node: '>=4' } dev: false /globalyzer/0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + resolution: + { + integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==, + } /globby/11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + } + engines: { node: '>=10' } dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -2302,8 +3237,11 @@ packages: dev: false /globby/6.1.0: - resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==, + } + engines: { node: '>=0.10.0' } dependencies: array-union: 1.0.2 glob: 7.2.3 @@ -2313,11 +3251,17 @@ packages: dev: true /globrex/0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + resolution: + { + integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==, + } /got/12.5.3: - resolution: {integrity: sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==, + } + engines: { node: '>=14.16' } dependencies: '@sindresorhus/is': 5.3.0 '@szmarczak/http-timer': 5.0.1 @@ -2333,11 +3277,17 @@ packages: dev: false /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + resolution: + { + integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, + } /gray-matter/4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} + resolution: + { + integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==, + } + engines: { node: '>=6.0' } dependencies: js-yaml: 3.14.1 kind-of: 6.0.3 @@ -2346,38 +3296,59 @@ packages: dev: false /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, + } + engines: { node: '>=4' } dev: false /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: '>=8' } dev: false /has-package-exports/1.3.0: - resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==} + resolution: + { + integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==, + } dependencies: '@ljharb/has-package-exports-patterns': 0.0.2 dev: false /has-unicode/2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + resolution: + { + integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==, + } dev: false /has-yarn/3.0.0: - resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dev: false /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + resolution: + { + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, + } + engines: { node: '>= 0.4.0' } dependencies: function-bind: 1.1.1 /hast-to-hyperscript/10.0.1: - resolution: {integrity: sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==} + resolution: + { + integrity: sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==, + } dependencies: '@types/unist': 2.0.6 comma-separated-tokens: 2.0.3 @@ -2389,7 +3360,10 @@ packages: dev: false /hast-util-from-parse5/7.1.0: - resolution: {integrity: sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==} + resolution: + { + integrity: sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==, + } dependencies: '@types/hast': 2.3.4 '@types/parse5': 6.0.3 @@ -2402,20 +3376,29 @@ packages: dev: false /hast-util-is-element/2.1.2: - resolution: {integrity: sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==} + resolution: + { + integrity: sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==, + } dependencies: '@types/hast': 2.3.4 '@types/unist': 2.0.6 dev: false /hast-util-parse-selector/3.1.0: - resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==} + resolution: + { + integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==, + } dependencies: '@types/hast': 2.3.4 dev: false /hast-util-raw/7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + resolution: + { + integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==, + } dependencies: '@types/hast': 2.3.4 '@types/parse5': 6.0.3 @@ -2431,7 +3414,10 @@ packages: dev: false /hast-util-to-html/8.0.3: - resolution: {integrity: sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==} + resolution: + { + integrity: sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==, + } dependencies: '@types/hast': 2.3.4 ccount: 2.0.1 @@ -2446,7 +3432,10 @@ packages: dev: false /hast-util-to-parse5/7.0.0: - resolution: {integrity: sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==} + resolution: + { + integrity: sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==, + } dependencies: '@types/hast': 2.3.4 '@types/parse5': 6.0.3 @@ -2457,11 +3446,17 @@ packages: dev: false /hast-util-whitespace/2.0.0: - resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} + resolution: + { + integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==, + } dev: false /hastscript/7.1.0: - resolution: {integrity: sha512-uBjaTTLN0MkCZxY/R2fWUOcu7FRtUVzKRO5P/RAfgsu3yFiMB1JWCO4AjeVkgHxAira1f2UecHK5WfS9QurlWA==} + resolution: + { + integrity: sha512-uBjaTTLN0MkCZxY/R2fWUOcu7FRtUVzKRO5P/RAfgsu3yFiMB1JWCO4AjeVkgHxAira1f2UecHK5WfS9QurlWA==, + } dependencies: '@types/hast': 2.3.4 comma-separated-tokens: 2.0.3 @@ -2471,31 +3466,46 @@ packages: dev: false /he/1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + resolution: + { + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, + } hasBin: true dev: false /hosted-git-info/5.2.1: - resolution: {integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: lru-cache: 7.14.1 dev: false /hosted-git-info/6.1.1: - resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: lru-cache: 7.14.1 dev: false /html-escaper/3.0.3: - resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + resolution: + { + integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==, + } dev: false /html-minifier-terser/7.1.0: - resolution: {integrity: sha512-BvPO2S7Ip0Q5qt+Y8j/27Vclj6uHC6av0TMoDn7/bJPhMWHI2UtR2e/zEgJn3/qYAmxumrGp9q4UHurL6mtW9Q==} - engines: {node: ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-BvPO2S7Ip0Q5qt+Y8j/27Vclj6uHC6av0TMoDn7/bJPhMWHI2UtR2e/zEgJn3/qYAmxumrGp9q4UHurL6mtW9Q==, + } + engines: { node: ^14.13.1 || >=16.0.0 } hasBin: true dependencies: camel-case: 4.1.2 @@ -2508,16 +3518,25 @@ packages: dev: false /html-void-elements/2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + resolution: + { + integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==, + } dev: false /http-cache-semantics/4.1.0: - resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} + resolution: + { + integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==, + } dev: false /http-proxy-agent/5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, + } + engines: { node: '>= 6' } dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 @@ -2527,16 +3546,22 @@ packages: dev: false /http2-wrapper/2.2.0: - resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==} - engines: {node: '>=10.19.0'} + resolution: + { + integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==, + } + engines: { node: '>=10.19.0' } dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 dev: false /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, + } + engines: { node: '>= 6' } dependencies: agent-base: 6.0.2 debug: 4.3.4 @@ -2545,236 +3570,377 @@ packages: dev: false /human-signals/3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} + resolution: + { + integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==, + } + engines: { node: '>=12.20.0' } dev: false /humanize-ms/1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + resolution: + { + integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, + } dependencies: ms: 2.1.2 dev: false /iconv-lite/0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, + } + engines: { node: '>=0.10.0' } dependencies: safer-buffer: 2.1.2 dev: false optional: true /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + } dev: false /ignore-walk/6.0.0: - resolution: {integrity: sha512-bTf9UWe/UP1yxG3QUrj/KOvEhTAUWPcv+WvbFZ28LcqznXabp7Xu6o9y1JEC18+oqODuS7VhTpekV5XvFwsxJg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-bTf9UWe/UP1yxG3QUrj/KOvEhTAUWPcv+WvbFZ28LcqznXabp7Xu6o9y1JEC18+oqODuS7VhTpekV5XvFwsxJg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: minimatch: 5.1.2 dev: false /ignore/5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, + } + engines: { node: '>= 4' } dev: false /import-lazy/4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==, + } + engines: { node: '>=8' } dev: false /import-meta-resolve/2.2.0: - resolution: {integrity: sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==} + resolution: + { + integrity: sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==, + } dev: false /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: '>=0.8.19' } dev: false /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + } + engines: { node: '>=8' } dev: false /infer-owner/1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + resolution: + { + integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==, + } dev: false /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } dependencies: once: 1.4.0 wrappy: 1.0.2 /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + } dev: false /ini/2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==, + } + engines: { node: '>=10' } dev: false /ini/4.0.0: - resolution: {integrity: sha512-t0ikzf5qkSFqRl1e6ejKBe+Tk2bsQd8ivEkcisyGXsku2t8NvXZ1Y3RRz5vxrDgOrTBOi13CvGsVoI5wVpd7xg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-t0ikzf5qkSFqRl1e6ejKBe+Tk2bsQd8ivEkcisyGXsku2t8NvXZ1Y3RRz5vxrDgOrTBOi13CvGsVoI5wVpd7xg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dev: false /inline-style-parser/0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + resolution: + { + integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==, + } dev: false /ip/2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + resolution: + { + integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==, + } dev: false /is-absolute-url/4.0.1: - resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dev: false /is-arrayish/0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + resolution: + { + integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, + } dev: false /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: '>=8' } dependencies: binary-extensions: 2.2.0 /is-buffer/2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==, + } + engines: { node: '>=4' } dev: false /is-ci/3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + resolution: + { + integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==, + } hasBin: true dependencies: ci-info: 3.7.0 dev: false /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + resolution: + { + integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==, + } dependencies: has: 1.0.3 /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + } + engines: { node: '>=8' } hasBin: true /is-docker/3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } hasBin: true dev: false /is-extendable/0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, + } + engines: { node: '>=0.10.0' } dev: false /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: '>=0.10.0' } /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: '>=8' } dev: false /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: '>=0.10.0' } dependencies: is-extglob: 2.1.1 /is-installed-globally/0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==, + } + engines: { node: '>=10' } dependencies: global-dirs: 3.0.1 is-path-inside: 3.0.3 dev: false /is-interactive/2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, + } + engines: { node: '>=12' } dev: false /is-lambda/1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + resolution: + { + integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==, + } dev: false /is-npm/6.0.0: - resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dev: false /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: '>=0.12.0' } /is-obj/2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, + } + engines: { node: '>=8' } dev: false /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, + } + engines: { node: '>=8' } dev: false /is-plain-obj/4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==, + } + engines: { node: '>=12' } dev: false /is-stream/3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dev: false /is-typedarray/1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + resolution: + { + integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==, + } dev: false /is-unicode-supported/1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, + } + engines: { node: '>=12' } dev: false /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + } + engines: { node: '>=8' } dependencies: is-docker: 2.2.1 /is-yarn-global/0.4.1: - resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==, + } + engines: { node: '>=12' } dev: false /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } /jju/1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + resolution: + { + integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==, + } dev: false /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } dev: false /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + resolution: + { + integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, + } hasBin: true dependencies: argparse: 1.0.10 @@ -2782,102 +3948,159 @@ packages: dev: false /js-yaml/4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + } hasBin: true dependencies: argparse: 2.0.1 /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, + } + engines: { node: '>=4' } hasBin: true dev: false /json-buffer/3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + resolution: + { + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, + } dev: false /json-parse-even-better-errors/3.0.0: - resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dev: false /json-parse-helpfulerror/1.0.3: - resolution: {integrity: sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==} + resolution: + { + integrity: sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==, + } dependencies: jju: 1.4.0 dev: false /json5/2.2.2: - resolution: {integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==, + } + engines: { node: '>=6' } hasBin: true dev: false /jsonc-parser/2.3.1: - resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + resolution: + { + integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==, + } dev: false /jsonc-parser/3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + resolution: + { + integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, + } dev: false /jsonfile/4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + resolution: + { + integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, + } optionalDependencies: graceful-fs: 4.2.10 dev: true /jsonlines/0.1.1: - resolution: {integrity: sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==} + resolution: + { + integrity: sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==, + } dev: false /jsonparse/1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} + resolution: + { + integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, + } + engines: { '0': node >= 0.2.0 } dev: false /keyv/4.5.2: - resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + resolution: + { + integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==, + } dependencies: json-buffer: 3.0.1 dev: false /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, + } + engines: { node: '>=0.10.0' } dev: false /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, + } + engines: { node: '>=6' } dev: false /kleur/4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, + } + engines: { node: '>=6' } dev: false /latest-version/7.0.0: - resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==, + } + engines: { node: '>=14.16' } dependencies: package-json: 8.1.0 dev: false /lilconfig/2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==, + } + engines: { node: '>=10' } /linkify-it/4.0.1: - resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + resolution: + { + integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==, + } dependencies: uc.micro: 1.0.6 dev: true /load-yaml-file/0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==, + } + engines: { node: '>=6' } dependencies: graceful-fs: 4.2.10 js-yaml: 3.14.1 @@ -2886,92 +4109,140 @@ packages: dev: false /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + } + engines: { node: '>=8' } dependencies: p-locate: 4.1.0 /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: '>=10' } dependencies: p-locate: 5.0.0 dev: false /lodash.castarray/4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + resolution: + { + integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==, + } dev: true /lodash.isplainobject/4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + resolution: + { + integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, + } dev: true /lodash.merge/4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } dev: true /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } dev: false /log-symbols/5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==, + } + engines: { node: '>=12' } dependencies: chalk: 5.2.0 is-unicode-supported: 1.3.0 dev: false /longest-streak/3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + resolution: + { + integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, + } dev: false /lower-case/2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + resolution: + { + integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, + } dependencies: tslib: 2.4.1 dev: false /lowercase-keys/3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dev: false /lru-cache/5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + resolution: + { + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, + } dependencies: yallist: 3.1.1 dev: false /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + } + engines: { node: '>=10' } dependencies: yallist: 4.0.0 dev: false /lru-cache/7.14.1: - resolution: {integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==, + } + engines: { node: '>=12' } dev: false /magic-string/0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==, + } + engines: { node: '>=12' } dependencies: '@jridgewell/sourcemap-codec': 1.4.14 dev: false /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, + } + engines: { node: '>=8' } dependencies: semver: 6.3.0 dev: true /make-fetch-happen/10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: agentkeepalive: 4.2.1 cacache: 16.1.3 @@ -2995,8 +4266,11 @@ packages: dev: false /make-fetch-happen/11.0.2: - resolution: {integrity: sha512-5n/Pq41w/uZghpdlXAY5kIM85RgJThtTH/NYBRAZ9VUOBWV90USaQjwGrw76fZP3Lj5hl/VZjpVvOaRBMoL/2w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-5n/Pq41w/uZghpdlXAY5kIM85RgJThtTH/NYBRAZ9VUOBWV90USaQjwGrw76fZP3Lj5hl/VZjpVvOaRBMoL/2w==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: agentkeepalive: 4.2.1 cacache: 17.0.4 @@ -3020,7 +4294,10 @@ packages: dev: false /markdown-it/13.0.1: - resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} + resolution: + { + integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==, + } hasBin: true dependencies: argparse: 2.0.1 @@ -3031,11 +4308,17 @@ packages: dev: true /markdown-table/3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + resolution: + { + integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==, + } dev: false /mdast-util-definitions/5.1.1: - resolution: {integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==} + resolution: + { + integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==, + } dependencies: '@types/mdast': 3.0.10 '@types/unist': 2.0.6 @@ -3043,7 +4326,10 @@ packages: dev: false /mdast-util-find-and-replace/2.2.1: - resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} + resolution: + { + integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==, + } dependencies: escape-string-regexp: 5.0.0 unist-util-is: 5.1.1 @@ -3051,7 +4337,10 @@ packages: dev: false /mdast-util-from-markdown/1.2.0: - resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} + resolution: + { + integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==, + } dependencies: '@types/mdast': 3.0.10 '@types/unist': 2.0.6 @@ -3070,7 +4359,10 @@ packages: dev: false /mdast-util-gfm-autolink-literal/1.0.2: - resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} + resolution: + { + integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==, + } dependencies: '@types/mdast': 3.0.10 ccount: 2.0.1 @@ -3079,7 +4371,10 @@ packages: dev: false /mdast-util-gfm-footnote/1.0.1: - resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} + resolution: + { + integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==, + } dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.4.0 @@ -3087,14 +4382,20 @@ packages: dev: false /mdast-util-gfm-strikethrough/1.0.2: - resolution: {integrity: sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA==} + resolution: + { + integrity: sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA==, + } dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.4.0 dev: false /mdast-util-gfm-table/1.0.6: - resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} + resolution: + { + integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==, + } dependencies: '@types/mdast': 3.0.10 markdown-table: 3.0.3 @@ -3105,14 +4406,20 @@ packages: dev: false /mdast-util-gfm-task-list-item/1.0.1: - resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} + resolution: + { + integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==, + } dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.4.0 dev: false /mdast-util-gfm/2.0.1: - resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} + resolution: + { + integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==, + } dependencies: mdast-util-from-markdown: 1.2.0 mdast-util-gfm-autolink-literal: 1.0.2 @@ -3126,7 +4433,10 @@ packages: dev: false /mdast-util-to-hast/12.2.4: - resolution: {integrity: sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==} + resolution: + { + integrity: sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==, + } dependencies: '@types/hast': 2.3.4 '@types/mdast': 3.0.10 @@ -3140,7 +4450,10 @@ packages: dev: false /mdast-util-to-markdown/1.4.0: - resolution: {integrity: sha512-IjXARf/O8VGx/pc5SZ7syfydq1DYL9vd92orsG5U0b4GNCmAvXzu+n7sbzfIKrXwB0AVrYk3NV2kXl0AIi9LCA==} + resolution: + { + integrity: sha512-IjXARf/O8VGx/pc5SZ7syfydq1DYL9vd92orsG5U0b4GNCmAvXzu+n7sbzfIKrXwB0AVrYk3NV2kXl0AIi9LCA==, + } dependencies: '@types/mdast': 3.0.10 '@types/unist': 2.0.6 @@ -3152,31 +4465,52 @@ packages: dev: false /mdast-util-to-string/3.1.0: - resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} + resolution: + { + integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==, + } dev: false /mdn-data/2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + resolution: + { + integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==, + } dev: false /mdn-data/2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + resolution: + { + integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, + } dev: false /mdurl/1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + resolution: + { + integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==, + } dev: true /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } dev: false /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: '>= 8' } /micromark-core-commonmark/1.0.6: - resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} + resolution: + { + integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==, + } dependencies: decode-named-character-reference: 1.0.2 micromark-factory-destination: 1.0.0 @@ -3197,7 +4531,10 @@ packages: dev: false /micromark-extension-gfm-autolink-literal/1.0.3: - resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} + resolution: + { + integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==, + } dependencies: micromark-util-character: 1.1.0 micromark-util-sanitize-uri: 1.1.0 @@ -3207,7 +4544,10 @@ packages: dev: false /micromark-extension-gfm-footnote/1.0.4: - resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} + resolution: + { + integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==, + } dependencies: micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 @@ -3220,7 +4560,10 @@ packages: dev: false /micromark-extension-gfm-strikethrough/1.0.4: - resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} + resolution: + { + integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==, + } dependencies: micromark-util-chunked: 1.0.0 micromark-util-classify-character: 1.0.0 @@ -3231,7 +4574,10 @@ packages: dev: false /micromark-extension-gfm-table/1.0.5: - resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} + resolution: + { + integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==, + } dependencies: micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 @@ -3241,13 +4587,19 @@ packages: dev: false /micromark-extension-gfm-tagfilter/1.0.1: - resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} + resolution: + { + integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==, + } dependencies: micromark-util-types: 1.0.2 dev: false /micromark-extension-gfm-task-list-item/1.0.3: - resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} + resolution: + { + integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==, + } dependencies: micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 @@ -3257,7 +4609,10 @@ packages: dev: false /micromark-extension-gfm/2.0.1: - resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} + resolution: + { + integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==, + } dependencies: micromark-extension-gfm-autolink-literal: 1.0.3 micromark-extension-gfm-footnote: 1.0.4 @@ -3270,7 +4625,10 @@ packages: dev: false /micromark-factory-destination/1.0.0: - resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} + resolution: + { + integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==, + } dependencies: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 @@ -3278,7 +4636,10 @@ packages: dev: false /micromark-factory-label/1.0.2: - resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} + resolution: + { + integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==, + } dependencies: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 @@ -3287,14 +4648,20 @@ packages: dev: false /micromark-factory-space/1.0.0: - resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} + resolution: + { + integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==, + } dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 dev: false /micromark-factory-title/1.0.2: - resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} + resolution: + { + integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==, + } dependencies: micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 @@ -3304,7 +4671,10 @@ packages: dev: false /micromark-factory-whitespace/1.0.0: - resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} + resolution: + { + integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==, + } dependencies: micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 @@ -3313,20 +4683,29 @@ packages: dev: false /micromark-util-character/1.1.0: - resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} + resolution: + { + integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==, + } dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 dev: false /micromark-util-chunked/1.0.0: - resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} + resolution: + { + integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==, + } dependencies: micromark-util-symbol: 1.0.1 dev: false /micromark-util-classify-character/1.0.0: - resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} + resolution: + { + integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==, + } dependencies: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 @@ -3334,20 +4713,29 @@ packages: dev: false /micromark-util-combine-extensions/1.0.0: - resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} + resolution: + { + integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==, + } dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 dev: false /micromark-util-decode-numeric-character-reference/1.0.0: - resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} + resolution: + { + integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==, + } dependencies: micromark-util-symbol: 1.0.1 dev: false /micromark-util-decode-string/1.0.2: - resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} + resolution: + { + integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==, + } dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 1.1.0 @@ -3356,27 +4744,42 @@ packages: dev: false /micromark-util-encode/1.0.1: - resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} + resolution: + { + integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==, + } dev: false /micromark-util-html-tag-name/1.1.0: - resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} + resolution: + { + integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==, + } dev: false /micromark-util-normalize-identifier/1.0.0: - resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} + resolution: + { + integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==, + } dependencies: micromark-util-symbol: 1.0.1 dev: false /micromark-util-resolve-all/1.0.0: - resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} + resolution: + { + integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==, + } dependencies: micromark-util-types: 1.0.2 dev: false /micromark-util-sanitize-uri/1.1.0: - resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} + resolution: + { + integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==, + } dependencies: micromark-util-character: 1.1.0 micromark-util-encode: 1.0.1 @@ -3384,7 +4787,10 @@ packages: dev: false /micromark-util-subtokenize/1.0.2: - resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} + resolution: + { + integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==, + } dependencies: micromark-util-chunked: 1.0.0 micromark-util-symbol: 1.0.1 @@ -3393,15 +4799,24 @@ packages: dev: false /micromark-util-symbol/1.0.1: - resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + resolution: + { + integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==, + } dev: false /micromark-util-types/1.0.2: - resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + resolution: + { + integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==, + } dev: false /micromark/3.1.0: - resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} + resolution: + { + integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==, + } dependencies: '@types/debug': 4.1.7 debug: 4.3.4 @@ -3425,89 +4840,134 @@ packages: dev: false /micromatch/4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, + } + engines: { node: '>=8.6' } dependencies: braces: 3.0.2 picomatch: 2.3.1 /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: '>= 0.6' } dev: true /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: '>= 0.6' } dependencies: mime-db: 1.52.0 dev: true /mime/3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==, + } + engines: { node: '>=10.0.0' } hasBin: true dev: false /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: '>=6' } dev: false /mimic-fn/4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, + } + engines: { node: '>=12' } dev: false /mimic-response/3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==, + } + engines: { node: '>=10' } dev: false /mimic-response/4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dev: false /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } dependencies: brace-expansion: 1.1.11 /minimatch/5.1.2: - resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==, + } + engines: { node: '>=10' } dependencies: brace-expansion: 2.0.1 dev: false /minimatch/6.2.0: - resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==, + } + engines: { node: '>=10' } dependencies: brace-expansion: 2.0.1 dev: false /minimatch/7.4.3: - resolution: {integrity: sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==, + } + engines: { node: '>=10' } dependencies: brace-expansion: 2.0.1 dev: false /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + resolution: + { + integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==, + } /minipass-collect/1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==, + } + engines: { node: '>= 8' } dependencies: minipass: 3.3.6 dev: false /minipass-fetch/2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: minipass: 3.3.6 minipass-sized: 1.0.3 @@ -3517,8 +4977,11 @@ packages: dev: false /minipass-fetch/3.0.1: - resolution: {integrity: sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: minipass: 4.2.5 minipass-sized: 1.0.3 @@ -3528,120 +4991,180 @@ packages: dev: false /minipass-flush/1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==, + } + engines: { node: '>= 8' } dependencies: minipass: 3.3.6 dev: false /minipass-json-stream/1.0.1: - resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + resolution: + { + integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==, + } dependencies: jsonparse: 1.3.1 minipass: 3.3.6 dev: false /minipass-pipeline/1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==, + } + engines: { node: '>=8' } dependencies: minipass: 3.3.6 dev: false /minipass-sized/1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==, + } + engines: { node: '>=8' } dependencies: minipass: 3.3.6 dev: false /minipass/3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==, + } + engines: { node: '>=8' } dependencies: yallist: 4.0.0 dev: false /minipass/4.0.0: - resolution: {integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==, + } + engines: { node: '>=8' } dependencies: yallist: 4.0.0 dev: false /minipass/4.2.5: - resolution: {integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==, + } + engines: { node: '>=8' } dev: false /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==, + } + engines: { node: '>= 8' } dependencies: minipass: 3.3.6 yallist: 4.0.0 dev: false /mkdirp-classic/0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + resolution: + { + integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==, + } dev: false /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, + } + engines: { node: '>=10' } hasBin: true dev: false /mri/1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, + } + engines: { node: '>=4' } dev: false /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } dev: false /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + resolution: + { + integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true /napi-build-utils/1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + resolution: + { + integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==, + } dev: false /negotiator/0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, + } + engines: { node: '>= 0.6' } dev: false /nlcst-to-string/3.1.0: - resolution: {integrity: sha512-Y8HQWKw/zrHTCnu2zcFBN1dV6vN0NUG7s5fkEj380G8tF3R+vA2KG+tDl2QoHVQCTHGHVXwoni2RQkDSFQb1PA==} + resolution: + { + integrity: sha512-Y8HQWKw/zrHTCnu2zcFBN1dV6vN0NUG7s5fkEj380G8tF3R+vA2KG+tDl2QoHVQCTHGHVXwoni2RQkDSFQb1PA==, + } dependencies: '@types/nlcst': 1.0.0 dev: false /no-case/3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + resolution: + { + integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, + } dependencies: lower-case: 2.0.2 tslib: 2.4.1 dev: false /node-abi/3.30.0: - resolution: {integrity: sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==, + } + engines: { node: '>=10' } dependencies: semver: 7.3.8 dev: false /node-addon-api/5.0.0: - resolution: {integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==} + resolution: + { + integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==, + } dev: false /node-gyp/9.3.1: - resolution: {integrity: sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==} - engines: {node: ^12.13 || ^14.13 || >=16} + resolution: + { + integrity: sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==, + } + engines: { node: ^12.13 || ^14.13 || >=16 } hasBin: true dependencies: env-paths: 2.2.1 @@ -3660,27 +5183,39 @@ packages: dev: false /node-html-parser/6.1.5: - resolution: {integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==} + resolution: + { + integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==, + } dependencies: css-select: 5.1.0 he: 1.2.0 dev: false /node-releases/2.0.8: - resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} + resolution: + { + integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==, + } dev: false /nopt/6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } hasBin: true dependencies: abbrev: 1.1.1 dev: false /normalize-package-data/5.0.0: - resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: hosted-git-info: 6.1.1 is-core-module: 2.11.0 @@ -3689,29 +5224,44 @@ packages: dev: false /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: '>=0.10.0' } /normalize-range/0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, + } + engines: { node: '>=0.10.0' } dev: false /normalize-url/8.0.0: - resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==, + } + engines: { node: '>=14.16' } dev: false /npm-bundled/3.0.0: - resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: npm-normalize-package-bin: 3.0.0 dev: false /npm-check-updates/16.8.0: - resolution: {integrity: sha512-2xpFtUPa2OyswC8kpIpxRqQcP/D0uqaBgfiOQAtvGlnDhmHr3QwR2gWjjWtS6xnNvgyyVly/4edY0Uu24c46ew==} - engines: {node: '>=14.14'} + resolution: + { + integrity: sha512-2xpFtUPa2OyswC8kpIpxRqQcP/D0uqaBgfiOQAtvGlnDhmHr3QwR2gWjjWtS6xnNvgyyVly/4edY0Uu24c46ew==, + } + engines: { node: '>=14.14' } hasBin: true dependencies: chalk: 5.2.0 @@ -3750,20 +5300,29 @@ packages: dev: false /npm-install-checks/6.0.0: - resolution: {integrity: sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: semver: 7.3.8 dev: false /npm-normalize-package-bin/3.0.0: - resolution: {integrity: sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dev: false /npm-package-arg/10.1.0: - resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: hosted-git-info: 6.1.1 proc-log: 3.0.0 @@ -3772,15 +5331,21 @@ packages: dev: false /npm-packlist/7.0.4: - resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: ignore-walk: 6.0.0 dev: false /npm-pick-manifest/8.0.1: - resolution: {integrity: sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: npm-install-checks: 6.0.0 npm-normalize-package-bin: 3.0.0 @@ -3789,8 +5354,11 @@ packages: dev: false /npm-registry-fetch/14.0.3: - resolution: {integrity: sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: make-fetch-happen: 11.0.2 minipass: 4.0.0 @@ -3805,15 +5373,21 @@ packages: dev: false /npm-run-path/5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dependencies: path-key: 4.0.0 dev: false /npmlog/6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: are-we-there-yet: 3.0.1 console-control-strings: 1.1.0 @@ -3822,49 +5396,73 @@ packages: dev: false /nth-check/2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + resolution: + { + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, + } dependencies: boolbase: 1.0.0 dev: false /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + } + engines: { node: '>=0.10.0' } dev: true /object-hash/3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==, + } + engines: { node: '>= 6' } /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } dependencies: wrappy: 1.0.2 /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: '>=6' } dependencies: mimic-fn: 2.1.0 dev: false /onetime/6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, + } + engines: { node: '>=12' } dependencies: mimic-fn: 4.0.0 dev: false /open/8.4.0: - resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==, + } + engines: { node: '>=12' } dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 /openai/3.2.1: - resolution: {integrity: sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==} + resolution: + { + integrity: sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==, + } dependencies: axios: 0.26.1 form-data: 4.0.0 @@ -3873,8 +5471,11 @@ packages: dev: true /ora/6.1.2: - resolution: {integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dependencies: bl: 5.1.0 chalk: 5.2.0 @@ -3888,50 +5489,74 @@ packages: dev: false /p-cancelable/3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} + resolution: + { + integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==, + } + engines: { node: '>=12.20' } dev: false /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, + } + engines: { node: '>=6' } dependencies: p-try: 2.2.0 /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: '>=10' } dependencies: yocto-queue: 0.1.0 dev: false /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, + } + engines: { node: '>=8' } dependencies: p-limit: 2.3.0 /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: '>=10' } dependencies: p-limit: 3.1.0 dev: false /p-map/4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==, + } + engines: { node: '>=10' } dependencies: aggregate-error: 3.1.0 dev: false /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + } + engines: { node: '>=6' } /package-json/8.1.0: - resolution: {integrity: sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==, + } + engines: { node: '>=14.16' } dependencies: got: 12.5.3 registry-auth-token: 5.0.1 @@ -3940,8 +5565,11 @@ packages: dev: false /pacote/15.1.1: - resolution: {integrity: sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } hasBin: true dependencies: '@npmcli/git': 4.0.3 @@ -3968,20 +5596,29 @@ packages: dev: false /param-case/3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + resolution: + { + integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==, + } dependencies: dot-case: 3.0.4 tslib: 2.4.1 dev: false /parse-github-url/1.0.2: - resolution: {integrity: sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==, + } + engines: { node: '>=0.10.0' } hasBin: true dev: false /parse-latin/5.0.1: - resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} + resolution: + { + integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==, + } dependencies: nlcst-to-string: 3.1.0 unist-util-modify-children: 3.1.0 @@ -3989,96 +5626,153 @@ packages: dev: false /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + resolution: + { + integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==, + } dev: false /pascal-case/3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + resolution: + { + integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, + } dependencies: no-case: 3.0.4 tslib: 2.4.1 dev: false /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: '>=8' } /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + } + engines: { node: '>=0.10.0' } /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: '>=8' } /path-key/4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, + } + engines: { node: '>=12' } dev: false /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } /path-scurry/1.6.3: - resolution: {integrity: sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { + integrity: sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==, + } + engines: { node: '>=16 || 14 >=14.17' } dependencies: lru-cache: 7.14.1 minipass: 4.2.5 dev: false /path-to-regexp/6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + resolution: + { + integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==, + } dev: false /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + } + engines: { node: '>=8' } dev: false /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + } /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: '>=8.6' } /pify/2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, + } + engines: { node: '>=0.10.0' } /pify/4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, + } + engines: { node: '>=6' } dev: false /pinkie-promise/2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==, + } + engines: { node: '>=0.10.0' } dependencies: pinkie: 2.0.4 dev: true /pinkie/2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==, + } + engines: { node: '>=0.10.0' } dev: true /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, + } + engines: { node: '>=8' } dependencies: find-up: 4.1.0 /playwright-core/1.32.1: - resolution: {integrity: sha512-KZYUQC10mXD2Am1rGlidaalNGYk3LU1vZqqNk0gT4XPty1jOqgup8KDP8l2CUlqoNKhXM5IfGjWgW37xvGllBA==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-KZYUQC10mXD2Am1rGlidaalNGYk3LU1vZqqNk0gT4XPty1jOqgup8KDP8l2CUlqoNKhXM5IfGjWgW37xvGllBA==, + } + engines: { node: '>=14' } hasBin: true dev: true /postcss-import/14.1.0_postcss@8.4.21: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==, + } + engines: { node: '>=10.0.0' } peerDependencies: postcss: ^8.0.0 dependencies: @@ -4088,8 +5782,11 @@ packages: resolve: 1.22.1 /postcss-js/4.0.0_postcss@8.4.21: - resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} - engines: {node: ^12 || ^14 || >= 16} + resolution: + { + integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==, + } + engines: { node: ^12 || ^14 || >= 16 } peerDependencies: postcss: ^8.3.3 dependencies: @@ -4097,8 +5794,11 @@ packages: postcss: 8.4.21 /postcss-load-config/3.1.4_postcss@8.4.21: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, + } + engines: { node: '>= 10' } peerDependencies: postcss: '>=8.0.9' ts-node: '>=9.0.0' @@ -4113,8 +5813,11 @@ packages: yaml: 1.10.2 /postcss-load-config/4.0.1_postcss@8.4.21: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==, + } + engines: { node: '>= 14' } peerDependencies: postcss: '>=8.0.9' ts-node: '>=9.0.0' @@ -4130,8 +5833,11 @@ packages: dev: false /postcss-nested/6.0.0_postcss@8.4.21: - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} - engines: {node: '>=12.0'} + resolution: + { + integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==, + } + engines: { node: '>=12.0' } peerDependencies: postcss: ^8.2.14 dependencies: @@ -4139,34 +5845,49 @@ packages: postcss-selector-parser: 6.0.11 /postcss-selector-parser/6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==, + } + engines: { node: '>=4' } dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 dev: true /postcss-selector-parser/6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==, + } + engines: { node: '>=4' } dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 /postcss-value-parser/4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + resolution: + { + integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, + } /postcss/8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} - engines: {node: ^10 || ^12 || >=14} + resolution: + { + integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==, + } + engines: { node: ^10 || ^12 || >=14 } dependencies: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 /prebuild-install/7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==, + } + engines: { node: '>=10' } hasBin: true dependencies: detect-libc: 2.0.1 @@ -4184,8 +5905,11 @@ packages: dev: false /preferred-pm/3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==, + } + engines: { node: '>=10' } dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 @@ -4194,8 +5918,11 @@ packages: dev: false /prettier-plugin-astro/0.7.2: - resolution: {integrity: sha512-mmifnkG160BtC727gqoimoxnZT/dwr8ASxpoGGl6EHevhfblSOeu+pwH1LAm5Qu1MynizktztFujHHaijLCkww==} - engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'} + resolution: + { + integrity: sha512-mmifnkG160BtC727gqoimoxnZT/dwr8ASxpoGGl6EHevhfblSOeu+pwH1LAm5Qu1MynizktztFujHHaijLCkww==, + } + engines: { node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0' } dependencies: '@astrojs/compiler': 0.31.3 prettier: 2.8.7 @@ -4204,8 +5931,11 @@ packages: dev: false /prettier-plugin-astro/0.8.0: - resolution: {integrity: sha512-kt9wk33J7HvFGwFaHb8piwy4zbUmabC8Nu+qCw493jhe96YkpjscqGBPy4nJ9TPy9pd7+kEx1zM81rp+MIdrXg==} - engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'} + resolution: + { + integrity: sha512-kt9wk33J7HvFGwFaHb8piwy4zbUmabC8Nu+qCw493jhe96YkpjscqGBPy4nJ9TPy9pd7+kEx1zM81rp+MIdrXg==, + } + engines: { node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0' } dependencies: '@astrojs/compiler': 1.1.0 prettier: 2.8.7 @@ -4214,8 +5944,11 @@ packages: dev: true /prettier-plugin-tailwindcss/0.2.6_kb4gmvngxncp3puqxt3b6slppy: - resolution: {integrity: sha512-F+7XCl9RLF/LPrGdUMHWpsT6TM31JraonAUyE6eBmpqymFvDwyl0ETHsKFHP1NG+sEfv8bmKqnTxEbWQbHPlBA==} - engines: {node: '>=12.17.0'} + resolution: + { + integrity: sha512-F+7XCl9RLF/LPrGdUMHWpsT6TM31JraonAUyE6eBmpqymFvDwyl0ETHsKFHP1NG+sEfv8bmKqnTxEbWQbHPlBA==, + } + engines: { node: '>=12.17.0' } peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' '@prettier/plugin-php': '*' @@ -4270,27 +6003,42 @@ packages: dev: true /prettier/2.8.7: - resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} - engines: {node: '>=10.13.0'} + resolution: + { + integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==, + } + engines: { node: '>=10.13.0' } hasBin: true /prismjs/1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==, + } + engines: { node: '>=6' } dev: false /proc-log/3.0.0: - resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dev: false /progress/2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, + } + engines: { node: '>=0.4.0' } dev: false /promise-inflight/1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + resolution: + { + integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==, + } peerDependencies: bluebird: '*' peerDependenciesMeta: @@ -4299,60 +6047,90 @@ packages: dev: false /promise-retry/2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==, + } + engines: { node: '>=10' } dependencies: err-code: 2.0.3 retry: 0.12.0 dev: false /prompts-ncu/2.5.1: - resolution: {integrity: sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==, + } + engines: { node: '>= 6' } dependencies: kleur: 4.1.5 sisteransi: 1.0.5 dev: false /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, + } + engines: { node: '>= 6' } dependencies: kleur: 3.0.3 sisteransi: 1.0.5 dev: false /property-information/6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + resolution: + { + integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==, + } dev: false /proto-list/1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + resolution: + { + integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==, + } dev: false /pump/3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + resolution: + { + integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, + } dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: false /pupa/3.1.0: - resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} - engines: {node: '>=12.20'} + resolution: + { + integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==, + } + engines: { node: '>=12.20' } dependencies: escape-goat: 4.0.0 dev: false /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==, + } + engines: { node: '>=10' } /rc-config-loader/4.1.2: - resolution: {integrity: sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==} + resolution: + { + integrity: sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==, + } dependencies: debug: 4.3.4 js-yaml: 4.1.0 @@ -4363,7 +6141,10 @@ packages: dev: false /rc/1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + resolution: + { + integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, + } hasBin: true dependencies: deep-extend: 0.6.0 @@ -4373,21 +6154,30 @@ packages: dev: false /read-cache/1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + resolution: + { + integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, + } dependencies: pify: 2.3.0 /read-package-json-fast/3.0.2: - resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: json-parse-even-better-errors: 3.0.0 npm-normalize-package-bin: 3.0.0 dev: false /read-package-json/6.0.0: - resolution: {integrity: sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: glob: 8.0.3 json-parse-even-better-errors: 3.0.0 @@ -4396,8 +6186,11 @@ packages: dev: false /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==, + } + engines: { node: '>= 6' } dependencies: inherits: 2.0.4 string_decoder: 1.3.0 @@ -4405,27 +6198,39 @@ packages: dev: false /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: '>=8.10.0' } dependencies: picomatch: 2.3.1 /registry-auth-token/5.0.1: - resolution: {integrity: sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==, + } + engines: { node: '>=14' } dependencies: '@pnpm/npm-conf': 1.0.5 dev: false /registry-url/6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==, + } + engines: { node: '>=12' } dependencies: rc: 1.2.8 dev: false /rehype-external-links/2.0.1: - resolution: {integrity: sha512-u2dNypma+ps12SJWlS23zvbqwNx0Hl24t0YHXSM/6FCZj/pqWETCO3WyyrvALv4JYvRtuPjhiv2Lpen15ESqbA==} + resolution: + { + integrity: sha512-u2dNypma+ps12SJWlS23zvbqwNx0Hl24t0YHXSM/6FCZj/pqWETCO3WyyrvALv4JYvRtuPjhiv2Lpen15ESqbA==, + } dependencies: '@types/hast': 2.3.4 extend: 3.0.2 @@ -4436,7 +6241,10 @@ packages: dev: false /rehype-parse/8.0.4: - resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==} + resolution: + { + integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==, + } dependencies: '@types/hast': 2.3.4 hast-util-from-parse5: 7.1.0 @@ -4445,7 +6253,10 @@ packages: dev: false /rehype-raw/6.1.1: - resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} + resolution: + { + integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==, + } dependencies: '@types/hast': 2.3.4 hast-util-raw: 7.2.3 @@ -4453,7 +6264,10 @@ packages: dev: false /rehype-stringify/9.0.3: - resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==} + resolution: + { + integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==, + } dependencies: '@types/hast': 2.3.4 hast-util-to-html: 8.0.3 @@ -4461,7 +6275,10 @@ packages: dev: false /rehype/12.0.1: - resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} + resolution: + { + integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==, + } dependencies: '@types/hast': 2.3.4 rehype-parse: 8.0.4 @@ -4470,12 +6287,18 @@ packages: dev: false /relateurl/0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} + resolution: + { + integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==, + } + engines: { node: '>= 0.10' } dev: false /remark-gfm/3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + resolution: + { + integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==, + } dependencies: '@types/mdast': 3.0.10 mdast-util-gfm: 2.0.1 @@ -4486,7 +6309,10 @@ packages: dev: false /remark-parse/10.0.1: - resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} + resolution: + { + integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==, + } dependencies: '@types/mdast': 3.0.10 mdast-util-from-markdown: 1.2.0 @@ -4496,7 +6322,10 @@ packages: dev: false /remark-rehype/10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + resolution: + { + integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==, + } dependencies: '@types/hast': 2.3.4 '@types/mdast': 3.0.10 @@ -4505,8 +6334,11 @@ packages: dev: false /remark-smartypants/2.0.0: - resolution: {integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dependencies: retext: 8.1.0 retext-smartypants: 5.2.0 @@ -4514,21 +6346,33 @@ packages: dev: false /remote-git-tags/3.0.0: - resolution: {integrity: sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==, + } + engines: { node: '>=8' } dev: false /require-from-string/2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, + } + engines: { node: '>=0.10.0' } dev: false /resolve-alpn/1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolution: + { + integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==, + } dev: false /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + resolution: + { + integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==, + } hasBin: true dependencies: is-core-module: 2.11.0 @@ -4536,22 +6380,31 @@ packages: supports-preserve-symlinks-flag: 1.0.0 /responselike/3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==, + } + engines: { node: '>=14.16' } dependencies: lowercase-keys: 3.0.0 dev: false /restore-cursor/4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dependencies: onetime: 5.1.2 signal-exit: 3.0.7 dev: false /retext-latin/3.1.0: - resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} + resolution: + { + integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==, + } dependencies: '@types/nlcst': 1.0.0 parse-latin: 5.0.1 @@ -4560,7 +6413,10 @@ packages: dev: false /retext-smartypants/5.2.0: - resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} + resolution: + { + integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==, + } dependencies: '@types/nlcst': 1.0.0 nlcst-to-string: 3.1.0 @@ -4569,7 +6425,10 @@ packages: dev: false /retext-stringify/3.1.0: - resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} + resolution: + { + integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==, + } dependencies: '@types/nlcst': 1.0.0 nlcst-to-string: 3.1.0 @@ -4577,7 +6436,10 @@ packages: dev: false /retext/8.1.0: - resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} + resolution: + { + integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==, + } dependencies: '@types/nlcst': 1.0.0 retext-latin: 3.1.0 @@ -4586,116 +6448,179 @@ packages: dev: false /retry/0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==, + } + engines: { node: '>= 4' } dev: false /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + } + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, + } hasBin: true dependencies: glob: 7.2.3 dev: false /rimraf/4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==, + } + engines: { node: '>=14' } hasBin: true dependencies: glob: 9.3.2 dev: false /roadmap-renderer/1.0.4: - resolution: {integrity: sha512-TS9jDZu/CzTqxv7QWnMZHgB89WzgLpaExXKcBIWQEKtXm9g9E45t7gijZst9qtRQ2E2+iplAxQz/eMuttq4wAQ==} + resolution: + { + integrity: sha512-TS9jDZu/CzTqxv7QWnMZHgB89WzgLpaExXKcBIWQEKtXm9g9E45t7gijZst9qtRQ2E2+iplAxQz/eMuttq4wAQ==, + } dev: false /rollup/3.14.0: - resolution: {integrity: sha512-o23sdgCLcLSe3zIplT9nQ1+r97okuaiR+vmAPZPTDYB7/f3tgWIYNyiQveMsZwshBT0is4eGax/HH83Q7CG+/Q==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + resolution: + { + integrity: sha512-o23sdgCLcLSe3zIplT9nQ1+r97okuaiR+vmAPZPTDYB7/f3tgWIYNyiQveMsZwshBT0is4eGax/HH83Q7CG+/Q==, + } + engines: { node: '>=14.18.0', npm: '>=8.0.0' } hasBin: true optionalDependencies: fsevents: 2.3.2 dev: false /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } dependencies: queue-microtask: 1.2.3 /s.color/0.0.15: - resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} + resolution: + { + integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==, + } /sade/1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, + } + engines: { node: '>=6' } dependencies: mri: 1.2.0 dev: false /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } dev: false /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } dev: false optional: true /sass-formatter/0.7.5: - resolution: {integrity: sha512-NKFP8ddjhUYi6A/iD1cEtzkEs91U61kzqe3lY9SVNuvX7LGc88xnEN0mmsWL7Ol//YTi2GL/ol7b9XZ2+hgXuA==} + resolution: + { + integrity: sha512-NKFP8ddjhUYi6A/iD1cEtzkEs91U61kzqe3lY9SVNuvX7LGc88xnEN0mmsWL7Ol//YTi2GL/ol7b9XZ2+hgXuA==, + } dependencies: suf-log: 2.5.3 /sax/1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + resolution: + { + integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==, + } dev: false /section-matter/1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==, + } + engines: { node: '>=4' } dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 dev: false /semver-diff/4.0.0: - resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==, + } + engines: { node: '>=12' } dependencies: semver: 7.3.8 dev: false /semver-utils/1.1.4: - resolution: {integrity: sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==} + resolution: + { + integrity: sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==, + } dev: false /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + resolution: + { + integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, + } hasBin: true /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==, + } + engines: { node: '>=10' } hasBin: true dependencies: lru-cache: 6.0.0 dev: false /server-destroy/1.0.1: - resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} + resolution: + { + integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==, + } dev: false /set-blocking/2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + resolution: + { + integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, + } dev: false /sharp/0.31.3: - resolution: {integrity: sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg==} - engines: {node: '>=14.15.0'} + resolution: + { + integrity: sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg==, + } + engines: { node: '>=14.15.0' } requiresBuild: true dependencies: color: 4.2.3 @@ -4709,17 +6634,26 @@ packages: dev: false /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: '>=8' } dependencies: shebang-regex: 3.0.0 /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: '>=8' } /shiki/0.11.1: - resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + resolution: + { + integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==, + } dependencies: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 @@ -4727,12 +6661,18 @@ packages: dev: false /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } dev: false /sigstore/1.0.0: - resolution: {integrity: sha512-e+qfbn/zf1+rCza/BhIA//Awmf0v1pa5HQS8Xk8iXrn9bgytytVLqYD0P7NSqZ6IELTgq+tcDvLPkQjNHyWLNg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-e+qfbn/zf1+rCza/BhIA//Awmf0v1pa5HQS8Xk8iXrn9bgytytVLqYD0P7NSqZ6IELTgq+tcDvLPkQjNHyWLNg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } hasBin: true dependencies: make-fetch-happen: 11.0.2 @@ -4743,11 +6683,17 @@ packages: dev: false /simple-concat/1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + resolution: + { + integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==, + } dev: false /simple-get/4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + resolution: + { + integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==, + } dependencies: decompress-response: 6.0.0 once: 1.4.0 @@ -4755,18 +6701,27 @@ packages: dev: false /simple-swizzle/0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + resolution: + { + integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, + } dependencies: is-arrayish: 0.3.2 dev: false /sisteransi/1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + resolution: + { + integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, + } dev: false /sitemap/7.1.1: - resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} + resolution: + { + integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==, + } + engines: { node: '>=12.0.0', npm: '>=5.6.0' } hasBin: true dependencies: '@types/node': 17.0.45 @@ -4776,23 +6731,35 @@ packages: dev: false /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: '>=8' } dev: false /slash/4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==, + } + engines: { node: '>=12' } dev: false /smart-buffer/4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + resolution: + { + integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, + } + engines: { node: '>= 6.0.0', npm: '>= 3.0.0' } dev: false /socks-proxy-agent/7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==, + } + engines: { node: '>= 10' } dependencies: agent-base: 6.0.2 debug: 4.3.4 @@ -4802,93 +6769,141 @@ packages: dev: false /socks/2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + resolution: + { + integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==, + } + engines: { node: '>= 10.13.0', npm: '>= 3.0.0' } dependencies: ip: 2.0.0 smart-buffer: 4.2.0 dev: false /source-map-js/1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, + } + engines: { node: '>=0.10.0' } /source-map-support/0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: false /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: '>=0.10.0' } dev: false /source-map/0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, + } + engines: { node: '>= 8' } dev: false /space-separated-tokens/2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + resolution: + { + integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, + } dev: false /spawn-please/2.0.1: - resolution: {integrity: sha512-W+cFbZR2q2mMTfjz5ZGvhBAiX+e/zczFCNlbS9mxiSdYswBXwUuBUT+a0urH+xZZa8f/bs0mXHyZsZHR9hKogA==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-W+cFbZR2q2mMTfjz5ZGvhBAiX+e/zczFCNlbS9mxiSdYswBXwUuBUT+a0urH+xZZa8f/bs0mXHyZsZHR9hKogA==, + } + engines: { node: '>=14' } dependencies: cross-spawn: 7.0.3 dev: false /spdx-correct/3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + resolution: + { + integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==, + } dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: false /spdx-exceptions/2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + resolution: + { + integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==, + } dev: false /spdx-expression-parse/3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + resolution: + { + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, + } dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: false /spdx-license-ids/3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + resolution: + { + integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==, + } dev: false /sprintf-js/1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + resolution: + { + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, + } dev: false /ssri/10.0.1: - resolution: {integrity: sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: minipass: 4.0.0 dev: false /ssri/9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: minipass: 3.3.6 dev: false /streamsearch/1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, + } + engines: { node: '>=10.0.0' } dev: false /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: '>=8' } dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 @@ -4896,8 +6911,11 @@ packages: dev: false /string-width/5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, + } + engines: { node: '>=12' } dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 @@ -4905,107 +6923,161 @@ packages: dev: false /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + } dependencies: safe-buffer: 5.2.1 dev: false /stringify-entities/4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + resolution: + { + integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==, + } dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 dev: false /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: '>=8' } dependencies: ansi-regex: 5.0.1 dev: false /strip-ansi/7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==, + } + engines: { node: '>=12' } dependencies: ansi-regex: 6.0.1 dev: false /strip-bom-string/1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==, + } + engines: { node: '>=0.10.0' } dev: false /strip-bom/3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: '>=4' } dev: false /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, + } + engines: { node: '>=8' } dev: false /strip-final-newline/3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, + } + engines: { node: '>=12' } dev: false /strip-json-comments/2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, + } + engines: { node: '>=0.10.0' } dev: false /strip-json-comments/5.0.0: - resolution: {integrity: sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==, + } + engines: { node: '>=14.16' } dev: false /strip-outer/1.0.1: - resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==, + } + engines: { node: '>=0.10.0' } dependencies: escape-string-regexp: 1.0.5 dev: true /style-to-object/0.3.0: - resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + resolution: + { + integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==, + } dependencies: inline-style-parser: 0.1.1 dev: false /suf-log/2.5.3: - resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} + resolution: + { + integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==, + } dependencies: s.color: 0.0.15 /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, + } + engines: { node: '>=4' } dependencies: has-flag: 3.0.0 dev: false /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: '>=8' } dependencies: has-flag: 4.0.0 dev: false /supports-esm/1.0.0: - resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==} + resolution: + { + integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==, + } dependencies: has-package-exports: 1.3.0 dev: false /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: '>= 0.4' } /svgo/3.0.2: - resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==, + } + engines: { node: '>=14.0.0' } hasBin: true dependencies: '@trysound/sax': 0.2.0 @@ -5017,15 +7089,21 @@ packages: dev: false /synckit/0.8.4: - resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} - engines: {node: ^14.18.0 || >=16.0.0} + resolution: + { + integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==, + } + engines: { node: ^14.18.0 || >=16.0.0 } dependencies: '@pkgr/utils': 2.3.1 tslib: 2.4.1 /tailwindcss/3.2.7_postcss@8.4.21: - resolution: {integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==} - engines: {node: '>=12.13.0'} + resolution: + { + integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==, + } + engines: { node: '>=12.13.0' } hasBin: true peerDependencies: postcss: ^8.0.9 @@ -5057,7 +7135,10 @@ packages: - ts-node /tar-fs/2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + resolution: + { + integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==, + } dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 @@ -5066,8 +7147,11 @@ packages: dev: false /tar-stream/2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, + } + engines: { node: '>=6' } dependencies: bl: 4.1.0 end-of-stream: 1.4.4 @@ -5077,8 +7161,11 @@ packages: dev: false /tar/6.1.13: - resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==, + } + engines: { node: '>=10' } dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -5089,8 +7176,11 @@ packages: dev: false /terser/5.16.5: - resolution: {integrity: sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==, + } + engines: { node: '>=10' } hasBin: true dependencies: '@jridgewell/source-map': 0.3.2 @@ -5100,39 +7190,60 @@ packages: dev: false /tiny-glob/0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + resolution: + { + integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==, + } dependencies: globalyzer: 0.1.0 globrex: 0.1.2 /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, + } + engines: { node: '>=4' } dev: false /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: '>=8.0' } dependencies: is-number: 7.0.0 /trim-lines/3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + resolution: + { + integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, + } dev: false /trim-repeated/1.0.0: - resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==, + } + engines: { node: '>=0.10.0' } dependencies: escape-string-regexp: 1.0.5 dev: true /trough/2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + resolution: + { + integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==, + } dev: false /tsconfig-resolver/3.0.1: - resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==} + resolution: + { + integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==, + } dependencies: '@types/json5': 0.0.30 '@types/resolve': 1.20.2 @@ -5143,11 +7254,17 @@ packages: dev: false /tslib/2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + resolution: + { + integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==, + } /tuf-js/1.0.0: - resolution: {integrity: sha512-1dxsQwESDzACJjTdYHQ4wJ1f/of7jALWKfJEHSBWUQB/5UTJUx9SW6GHXp4mZ1KvdBRJCpGjssoPFGi4hvw8/A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-1dxsQwESDzACJjTdYHQ4wJ1f/of7jALWKfJEHSBWUQB/5UTJUx9SW6GHXp4mZ1KvdBRJCpGjssoPFGi4hvw8/A==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: make-fetch-happen: 11.0.2 minimatch: 6.2.0 @@ -5157,55 +7274,85 @@ packages: dev: false /tunnel-agent/0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + resolution: + { + integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, + } dependencies: safe-buffer: 5.2.1 dev: false /type-fest/0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==, + } + engines: { node: '>=10' } dev: false /type-fest/1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==, + } + engines: { node: '>=10' } dev: false /type-fest/2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} + resolution: + { + integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==, + } + engines: { node: '>=12.20' } dev: false /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + resolution: + { + integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==, + } dependencies: is-typedarray: 1.0.0 dev: false /typescript/4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} - engines: {node: '>=4.2.0'} + resolution: + { + integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==, + } + engines: { node: '>=4.2.0' } hasBin: true dev: false /uc.micro/1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + resolution: + { + integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==, + } dev: true /undici/5.20.0: - resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==} - engines: {node: '>=12.18'} + resolution: + { + integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==, + } + engines: { node: '>=12.18' } dependencies: busboy: 1.6.0 dev: false /unherit/3.0.1: - resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} + resolution: + { + integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==, + } dev: false /unified/10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + resolution: + { + integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==, + } dependencies: '@types/unist': 2.0.6 bail: 2.0.2 @@ -5217,88 +7364,130 @@ packages: dev: false /unique-filename/2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: unique-slug: 3.0.0 dev: false /unique-filename/3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: unique-slug: 4.0.0 dev: false /unique-slug/3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + resolution: + { + integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } dependencies: imurmurhash: 0.1.4 dev: false /unique-slug/4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: imurmurhash: 0.1.4 dev: false /unique-string/3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==, + } + engines: { node: '>=12' } dependencies: crypto-random-string: 4.0.0 dev: false /unist-builder/3.0.0: - resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} + resolution: + { + integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==, + } dependencies: '@types/unist': 2.0.6 dev: false /unist-util-generated/2.0.0: - resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} + resolution: + { + integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==, + } dev: false /unist-util-is/5.1.1: - resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} + resolution: + { + integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==, + } dev: false /unist-util-modify-children/3.1.0: - resolution: {integrity: sha512-L0UizdncPZ1NIwpmkwFdLo2NaK2Eb5LU/vaQ7lZGkAaOBZfsHp+8T/gVWPVmmMO1hj6gc+XeMoytut8jr7fdyA==} + resolution: + { + integrity: sha512-L0UizdncPZ1NIwpmkwFdLo2NaK2Eb5LU/vaQ7lZGkAaOBZfsHp+8T/gVWPVmmMO1hj6gc+XeMoytut8jr7fdyA==, + } dependencies: '@types/unist': 2.0.6 array-iterate: 2.0.1 dev: false /unist-util-position/4.0.3: - resolution: {integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==} + resolution: + { + integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==, + } dependencies: '@types/unist': 2.0.6 dev: false /unist-util-stringify-position/3.0.2: - resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} + resolution: + { + integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==, + } dependencies: '@types/unist': 2.0.6 dev: false /unist-util-visit-children/2.0.1: - resolution: {integrity: sha512-2cEU3dhV1hMfO9ajwb8rJsDedMfsahsm6fCfR8LxDR/w7KcB5lzHQ9dBTQIXsWGNWBFH5MPmaFP3Xh0dWLqClQ==} + resolution: + { + integrity: sha512-2cEU3dhV1hMfO9ajwb8rJsDedMfsahsm6fCfR8LxDR/w7KcB5lzHQ9dBTQIXsWGNWBFH5MPmaFP3Xh0dWLqClQ==, + } dependencies: '@types/unist': 2.0.6 dev: false /unist-util-visit-parents/5.1.1: - resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} + resolution: + { + integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==, + } dependencies: '@types/unist': 2.0.6 unist-util-is: 5.1.1 dev: false /unist-util-visit/4.1.1: - resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} + resolution: + { + integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==, + } dependencies: '@types/unist': 2.0.6 unist-util-is: 5.1.1 @@ -5306,17 +7495,26 @@ packages: dev: false /universalify/0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + resolution: + { + integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, + } + engines: { node: '>= 4.0.0' } dev: true /untildify/4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==, + } + engines: { node: '>=8' } dev: false /update-browserslist-db/1.0.10_browserslist@4.21.4: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + resolution: + { + integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==, + } hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -5327,8 +7525,11 @@ packages: dev: false /update-notifier/6.0.2: - resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==, + } + engines: { node: '>=14.16' } dependencies: boxen: 7.0.1 chalk: 5.2.0 @@ -5347,11 +7548,17 @@ packages: dev: false /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } /uvu/0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==, + } + engines: { node: '>=8' } hasBin: true dependencies: dequal: 2.0.3 @@ -5361,35 +7568,50 @@ packages: dev: false /validate-npm-package-license/3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + resolution: + { + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, + } dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: false /validate-npm-package-name/5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } dependencies: builtins: 5.0.1 dev: false /vfile-location/4.0.1: - resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} + resolution: + { + integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==, + } dependencies: '@types/unist': 2.0.6 vfile: 5.3.6 dev: false /vfile-message/3.1.3: - resolution: {integrity: sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==} + resolution: + { + integrity: sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==, + } dependencies: '@types/unist': 2.0.6 unist-util-stringify-position: 3.0.2 dev: false /vfile/5.3.6: - resolution: {integrity: sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==} + resolution: + { + integrity: sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==, + } dependencies: '@types/unist': 2.0.6 is-buffer: 2.0.5 @@ -5398,8 +7620,11 @@ packages: dev: false /vite/4.1.4: - resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} - engines: {node: ^14.18.0 || >=16.0.0} + resolution: + { + integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==, + } + engines: { node: ^14.18.0 || >=16.0.0 } hasBin: true peerDependencies: '@types/node': '>= 14' @@ -5431,7 +7656,10 @@ packages: dev: false /vitefu/0.2.4_vite@4.1.4: - resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + resolution: + { + integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==, + } peerDependencies: vite: ^3.0.0 || ^4.0.0 peerDependenciesMeta: @@ -5442,7 +7670,10 @@ packages: dev: false /vscode-css-languageservice/6.2.1: - resolution: {integrity: sha512-FMaMjB2LQdkHjTCP2CWh2S94xuGsxSc8xr0H9nAACVd/iUDyZLoKFjwoB+mA3v0rpCH2U5vVCVwxyULy61CgqA==} + resolution: + { + integrity: sha512-FMaMjB2LQdkHjTCP2CWh2S94xuGsxSc8xr0H9nAACVd/iUDyZLoKFjwoB+mA3v0rpCH2U5vVCVwxyULy61CgqA==, + } dependencies: '@vscode/l10n': 0.0.10 vscode-languageserver-textdocument: 1.0.8 @@ -5451,7 +7682,10 @@ packages: dev: false /vscode-html-languageservice/5.0.3: - resolution: {integrity: sha512-6rfrtcHhXDMXmC5pR2WXrx02HiNCzQDynOBMn+53zLxr2hvZrDzoc0QgC0FaFGfcglf7GeOsfhkWvJBFC/a70g==} + resolution: + { + integrity: sha512-6rfrtcHhXDMXmC5pR2WXrx02HiNCzQDynOBMn+53zLxr2hvZrDzoc0QgC0FaFGfcglf7GeOsfhkWvJBFC/a70g==, + } dependencies: '@vscode/l10n': 0.0.10 vscode-languageserver-textdocument: 1.0.8 @@ -5460,102 +7694,156 @@ packages: dev: false /vscode-jsonrpc/8.0.2: - resolution: {integrity: sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==, + } + engines: { node: '>=14.0.0' } dev: false /vscode-languageserver-protocol/3.17.2: - resolution: {integrity: sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==} + resolution: + { + integrity: sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==, + } dependencies: vscode-jsonrpc: 8.0.2 vscode-languageserver-types: 3.17.2 dev: false /vscode-languageserver-textdocument/1.0.8: - resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} + resolution: + { + integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==, + } dev: false /vscode-languageserver-types/3.17.2: - resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} + resolution: + { + integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==, + } dev: false /vscode-languageserver/8.0.2: - resolution: {integrity: sha512-bpEt2ggPxKzsAOZlXmCJ50bV7VrxwCS5BI4+egUmure/oI/t4OlFzi/YNtVvY24A2UDOZAgwFGgnZPwqSJubkA==} + resolution: + { + integrity: sha512-bpEt2ggPxKzsAOZlXmCJ50bV7VrxwCS5BI4+egUmure/oI/t4OlFzi/YNtVvY24A2UDOZAgwFGgnZPwqSJubkA==, + } hasBin: true dependencies: vscode-languageserver-protocol: 3.17.2 dev: false /vscode-oniguruma/1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + resolution: + { + integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==, + } dev: false /vscode-textmate/6.0.0: - resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} + resolution: + { + integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==, + } dev: false /vscode-uri/2.1.2: - resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} + resolution: + { + integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==, + } dev: false /vscode-uri/3.0.7: - resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} + resolution: + { + integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==, + } dev: false /wcwidth/1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + resolution: + { + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + } dependencies: defaults: 1.0.4 dev: false /web-namespaces/2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + resolution: + { + integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==, + } dev: false /which-pm-runs/1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==, + } + engines: { node: '>=4' } dev: false /which-pm/2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} + resolution: + { + integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==, + } + engines: { node: '>=8.15' } dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 dev: false /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: '>= 8' } hasBin: true dependencies: isexe: 2.0.0 /which/3.0.0: - resolution: {integrity: sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } hasBin: true dependencies: isexe: 2.0.0 dev: false /wide-align/1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + resolution: + { + integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, + } dependencies: string-width: 4.2.3 dev: false /widest-line/4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==, + } + engines: { node: '>=12' } dependencies: string-width: 5.1.2 dev: false /wrap-ansi/8.0.1: - resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==, + } + engines: { node: '>=12' } dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 @@ -5563,10 +7851,16 @@ packages: dev: false /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + resolution: + { + integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==, + } dependencies: imurmurhash: 0.1.4 is-typedarray: 1.0.0 @@ -5575,45 +7869,75 @@ packages: dev: false /xdg-basedir/5.1.0: - resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==, + } + engines: { node: '>=12' } dev: false /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + resolution: + { + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, + } + engines: { node: '>=0.4' } /yallist/3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + } dev: false /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } dev: false /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, + } + engines: { node: '>= 6' } /yaml/2.2.1: - resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==, + } + engines: { node: '>= 14' } dev: false /yargs-parser/21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: '>=12' } dev: false /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: '>=10' } dev: false /zod/3.20.2: - resolution: {integrity: sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==} + resolution: + { + integrity: sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==, + } dev: false /zwitch/2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + resolution: + { + integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, + } dev: false diff --git a/sitemap.mjs b/sitemap.mjs index 41dcd1802..1a522e2bc 100644 --- a/sitemap.mjs +++ b/sitemap.mjs @@ -27,8 +27,13 @@ export async function serializeSitemap(item) { 'https://roadmap.sh/best-practices', 'https://roadmap.sh/guides', 'https://roadmap.sh/videos', - ...(await getRoadmapIds()).flatMap((id) => [`https://roadmap.sh/${id}`, `https://roadmap.sh/${id}/topics`]), - ...(await getBestPracticesIds()).map((id) => `https://roadmap.sh/best-practices/${id}`), + ...(await getRoadmapIds()).flatMap((id) => [ + `https://roadmap.sh/${id}`, + `https://roadmap.sh/${id}/topics`, + ]), + ...(await getBestPracticesIds()).map( + (id) => `https://roadmap.sh/best-practices/${id}` + ), ]; // Roadmaps and other high priority pages @@ -44,7 +49,10 @@ export async function serializeSitemap(item) { } // Guide and video pages - if (item.url.startsWith('https://roadmap.sh/guides') || item.url.startsWith('https://roadmap.sh/videos')) { + if ( + item.url.startsWith('https://roadmap.sh/guides') || + item.url.startsWith('https://roadmap.sh/videos') + ) { return { ...item, // @ts-ignore diff --git a/src/components/TopicOverlay/topic.js b/src/components/TopicOverlay/topic.js index bdb1663bc..1f2c625d9 100644 --- a/src/components/TopicOverlay/topic.js +++ b/src/components/TopicOverlay/topic.js @@ -15,9 +15,12 @@ export class Topic { this.activeTopicId = null; this.handleRoadmapTopicClick = this.handleRoadmapTopicClick.bind(this); - this.handleBestPracticeTopicClick = this.handleBestPracticeTopicClick.bind(this); - this.handleBestPracticeTopicToggle = this.handleBestPracticeTopicToggle.bind(this); - this.handleBestPracticeTopicPending = this.handleBestPracticeTopicPending.bind(this); + this.handleBestPracticeTopicClick = + this.handleBestPracticeTopicClick.bind(this); + this.handleBestPracticeTopicToggle = + this.handleBestPracticeTopicToggle.bind(this); + this.handleBestPracticeTopicPending = + this.handleBestPracticeTopicPending.bind(this); this.close = this.close.bind(this); this.resetDOM = this.resetDOM.bind(this); @@ -178,7 +181,10 @@ export class Topic { this.resetDOM(); - const topicUrl = `/best-practices/${bestPracticeId}/${topicId.replaceAll(':', '/')}`; + const topicUrl = `/best-practices/${bestPracticeId}/${topicId.replaceAll( + ':', + '/' + )}`; this.renderTopicFromUrl(topicUrl).then(() => null); } @@ -210,24 +216,30 @@ export class Topic { const matchingElements = []; // Elements having sort order in the beginning of the group id - document.querySelectorAll(`[data-group-id$="-${topicId}"]`).forEach((element) => { - const foundGroupId = element?.dataset?.groupId || ''; - const validGroupRegex = new RegExp(`^\\d+-${topicId}$`); - - if (validGroupRegex.test(foundGroupId)) { - matchingElements.push(element); - } - }); + document + .querySelectorAll(`[data-group-id$="-${topicId}"]`) + .forEach((element) => { + const foundGroupId = element?.dataset?.groupId || ''; + const validGroupRegex = new RegExp(`^\\d+-${topicId}$`); + + if (validGroupRegex.test(foundGroupId)) { + matchingElements.push(element); + } + }); // Elements with exact match of the topic id - document.querySelectorAll(`[data-group-id="${topicId}"]`).forEach((element) => { - matchingElements.push(element); - }); + document + .querySelectorAll(`[data-group-id="${topicId}"]`) + .forEach((element) => { + matchingElements.push(element); + }); // Matching "check:XXXX" box of the topic - document.querySelectorAll(`[data-group-id="check:${topicId}"]`).forEach((element) => { - matchingElements.push(element); - }); + document + .querySelectorAll(`[data-group-id="check:${topicId}"]`) + .forEach((element) => { + matchingElements.push(element); + }); return matchingElements; } @@ -258,29 +270,44 @@ export class Topic { return; } - const isClickedDone = e.target.id === this.markTopicDoneId || e.target.closest(`#${this.markTopicDoneId}`); + const isClickedDone = + e.target.id === this.markTopicDoneId || + e.target.closest(`#${this.markTopicDoneId}`); if (isClickedDone) { this.markAsDone(this.activeTopicId); this.close(); } - const isClickedPending = e.target.id === this.markTopicPendingId || e.target.closest(`#${this.markTopicPendingId}`); + const isClickedPending = + e.target.id === this.markTopicPendingId || + e.target.closest(`#${this.markTopicPendingId}`); if (isClickedPending) { this.markAsPending(this.activeTopicId); this.close(); } - const isClickedClose = e.target.id === this.closeTopicId || e.target.closest(`#${this.closeTopicId}`); + const isClickedClose = + e.target.id === this.closeTopicId || + e.target.closest(`#${this.closeTopicId}`); if (isClickedClose) { this.close(); } } init() { - window.addEventListener('best-practice.topic.click', this.handleBestPracticeTopicClick); - window.addEventListener('best-practice.topic.toggle', this.handleBestPracticeTopicToggle); - - window.addEventListener('roadmap.topic.click', this.handleRoadmapTopicClick); + window.addEventListener( + 'best-practice.topic.click', + this.handleBestPracticeTopicClick + ); + window.addEventListener( + 'best-practice.topic.toggle', + this.handleBestPracticeTopicToggle + ); + + window.addEventListener( + 'roadmap.topic.click', + this.handleRoadmapTopicClick + ); window.addEventListener('click', this.handleOverlayClick); window.addEventListener('contextmenu', this.rightClickListener); diff --git a/src/data/best-practices/api-security/api-security.md b/src/data/best-practices/api-security/api-security.md index fade3dc3b..8de036744 100644 --- a/src/data/best-practices/api-security/api-security.md +++ b/src/data/best-practices/api-security/api-security.md @@ -1,37 +1,36 @@ --- -jsonUrl: "/jsons/best-practices/api-security.json" -pdfUrl: "/pdfs/best-practices/api-security.pdf" +jsonUrl: '/jsons/best-practices/api-security.json' +pdfUrl: '/pdfs/best-practices/api-security.pdf' order: 2 -briefTitle: "API Security" -briefDescription: "API Security Best Practices" +briefTitle: 'API Security' +briefDescription: 'API Security Best Practices' isNew: true isUpcoming: false -title: "API Security Best Practices" -description: "Detailed list of best practices to make your APIs secure" +title: 'API Security Best Practices' +description: 'Detailed list of best practices to make your APIs secure' dimensions: width: 968 height: 1543.39 sponsor: - url: "https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account" - title: "Featured Product" - imageUrl: "https://i.imgur.com/e5fdI0q.png" - description: "Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!" + url: 'https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account' + title: 'Featured Product' + imageUrl: 'https://i.imgur.com/e5fdI0q.png' + description: 'Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!' event: - category: "SponsorClick" - action: "Ambassador Redirect" - label: "API Security / Ambassador Link" + category: 'SponsorClick' + action: 'Ambassador Redirect' + label: 'API Security / Ambassador Link' schema: - headline: "API Security Best Practices" - description: "Detailed list of best practices to make your APIs secure. Each best practice carries further details and how to implement that best practice." - imageUrl: "https://roadmap.sh/best-practices/api-security.png" - datePublished: "2023-02-21" - dateModified: "2023-02-21" + headline: 'API Security Best Practices' + description: 'Detailed list of best practices to make your APIs secure. Each best practice carries further details and how to implement that best practice.' + imageUrl: 'https://roadmap.sh/best-practices/api-security.png' + datePublished: '2023-02-21' + dateModified: '2023-02-21' seo: - title: "API Security Best Practices" - description: "Detailed list of best practices to make your APIs secure. Each best practice carries further details and how to implement that best practice." + title: 'API Security Best Practices' + description: 'Detailed list of best practices to make your APIs secure. Each best practice carries further details and how to implement that best practice.' keywords: - - "API Security" - - "API Security Best Practices" - - "API Security Checklist" + - 'API Security' + - 'API Security Best Practices' + - 'API Security Checklist' --- - diff --git a/src/data/best-practices/api-security/content/api-gateway.md b/src/data/best-practices/api-security/content/api-gateway.md index 514003072..32512b8c8 100644 --- a/src/data/best-practices/api-security/content/api-gateway.md +++ b/src/data/best-practices/api-security/content/api-gateway.md @@ -12,4 +12,4 @@ An API gateway can make your APIs more secure by providing a centralized point o - Logging and monitoring: An API gateway can provide centralized logging and monitoring of API traffic, helping to identify and respond to security threats and other issues. -- Integration with security tools: An API gateway can be integrated with security tools such as WAFs, SIEMs, and other security tools to provide additional layers of protection. \ No newline at end of file +- Integration with security tools: An API gateway can be integrated with security tools such as WAFs, SIEMs, and other security tools to provide additional layers of protection. diff --git a/src/data/best-practices/api-security/content/authentication-mechanisms.md b/src/data/best-practices/api-security/content/authentication-mechanisms.md index b66be0340..e31eedee3 100644 --- a/src/data/best-practices/api-security/content/authentication-mechanisms.md +++ b/src/data/best-practices/api-security/content/authentication-mechanisms.md @@ -12,4 +12,4 @@ Here are some examples of established authentication mechanisms that you can use - Password hashing algorithms: Password hashing algorithms like bcrypt and scrypt are widely used to securely store and protect user passwords. These algorithms ensure that even if an attacker gains access to the password database, they will not be able to easily recover the passwords. -- Two-factor authentication (2FA): 2FA is an authentication mechanism that requires users to provide two forms of identification to access their accounts. This typically involves something the user knows (like a password) and something the user has (like a mobile device or security key). Many services and applications now offer 2FA as an additional security measure. \ No newline at end of file +- Two-factor authentication (2FA): 2FA is an authentication mechanism that requires users to provide two forms of identification to access their accounts. This typically involves something the user knows (like a password) and something the user has (like a mobile device or security key). Many services and applications now offer 2FA as an additional security measure. diff --git a/src/data/best-practices/api-security/content/authorization-header.md b/src/data/best-practices/api-security/content/authorization-header.md index f88d07f13..e5fa9ca25 100644 --- a/src/data/best-practices/api-security/content/authorization-header.md +++ b/src/data/best-practices/api-security/content/authorization-header.md @@ -6,4 +6,4 @@ Sending tokens in the query or body parameters is generally not recommended beca Additionally, sending tokens in query or body parameters can make them more vulnerable to cross-site request forgery (CSRF) attacks. In a CSRF attack, an attacker can trick a user into submitting a request that includes their authentication token, which the attacker can then use to impersonate the user and gain access to their account. -By contrast, using the `Authorization` header to send tokens helps to ensure that the tokens are not logged or cached by intermediary systems, and it can also help to protect against CSRF attacks by allowing the server to validate the token before processing the request. \ No newline at end of file +By contrast, using the `Authorization` header to send tokens helps to ensure that the tokens are not logged or cached by intermediary systems, and it can also help to protect against CSRF attacks by allowing the server to validate the token before processing the request. diff --git a/src/data/best-practices/api-security/content/avoid-http-blocking.md b/src/data/best-practices/api-security/content/avoid-http-blocking.md index d321d62b5..31fcb940e 100644 --- a/src/data/best-practices/api-security/content/avoid-http-blocking.md +++ b/src/data/best-practices/api-security/content/avoid-http-blocking.md @@ -2,4 +2,4 @@ > Avoid HTTP blocking if you are using huge amount of data by moving the HTTP heavy operations to background jobs or asynchronous tasks. -HTTP blocking is a common issue in web applications. It occurs when the application is unable to process incoming HTTP requests due to a large number of requests or a large amount of data. This can lead to the application becoming unresponsive and the server crashing. This can be prevented by moving HTTP heavy operations to background jobs or asynchronous tasks. You can use a message queue to queue the requests and process them in the background. This will allow the application to continue processing other requests while the heavy operations are being processed in the background. \ No newline at end of file +HTTP blocking is a common issue in web applications. It occurs when the application is unable to process incoming HTTP requests due to a large number of requests or a large amount of data. This can lead to the application becoming unresponsive and the server crashing. This can be prevented by moving HTTP heavy operations to background jobs or asynchronous tasks. You can use a message queue to queue the requests and process them in the background. This will allow the application to continue processing other requests while the heavy operations are being processed in the background. diff --git a/src/data/best-practices/api-security/content/avoid-logging-sensitive-data.md b/src/data/best-practices/api-security/content/avoid-logging-sensitive-data.md index 011804a91..1348740cf 100644 --- a/src/data/best-practices/api-security/content/avoid-logging-sensitive-data.md +++ b/src/data/best-practices/api-security/content/avoid-logging-sensitive-data.md @@ -2,4 +2,4 @@ > Ensure that you aren't logging any sensitive data. -Make sure that you are not logging any sensitive data such as passwords, credit card numbers, or personal information. This is because logging sensitive data can expose it to attackers, allowing them to gain unauthorized access to your system or data. Additionally, logging sensitive data can violate data privacy laws and regulations, exposing you to legal liability. \ No newline at end of file +Make sure that you are not logging any sensitive data such as passwords, credit card numbers, or personal information. This is because logging sensitive data can expose it to attackers, allowing them to gain unauthorized access to your system or data. Additionally, logging sensitive data can violate data privacy laws and regulations, exposing you to legal liability. diff --git a/src/data/best-practices/api-security/content/avoid-personal-id-urls.md b/src/data/best-practices/api-security/content/avoid-personal-id-urls.md index b488dedac..c9247cb98 100644 --- a/src/data/best-practices/api-security/content/avoid-personal-id-urls.md +++ b/src/data/best-practices/api-security/content/avoid-personal-id-urls.md @@ -2,4 +2,4 @@ > Avoid user’s personal ID in the resource URLs e.g. users/242/orders - User's own resource ID should be avoided. Use `/me/orders` instead of `/user/654321/orders`. This will help avoid the risk of exposing the user’s personal ID that can be used for further attacks. \ No newline at end of file +User's own resource ID should be avoided. Use `/me/orders` instead of `/user/654321/orders`. This will help avoid the risk of exposing the user’s personal ID that can be used for further attacks. diff --git a/src/data/best-practices/api-security/content/avoid-sensitive-data.md b/src/data/best-practices/api-security/content/avoid-sensitive-data.md index 979554e31..e9ddbf01d 100644 --- a/src/data/best-practices/api-security/content/avoid-sensitive-data.md +++ b/src/data/best-practices/api-security/content/avoid-sensitive-data.md @@ -2,4 +2,4 @@ > Only return the data that is needed for the client to function. -Returning only the data that is needed for the client to function is an important best practice for API security. This is because limiting the amount of data that is returned reduces the amount of sensitive information that is exposed. By only returning the necessary data, you can help prevent security vulnerabilities such as data leakage, injection attacks, and other types of attacks that rely on exposing too much information. Additionally, reducing the amount of data returned can improve the performance of your API by reducing the amount of data that needs to be processed and transmitted. \ No newline at end of file +Returning only the data that is needed for the client to function is an important best practice for API security. This is because limiting the amount of data that is returned reduces the amount of sensitive information that is exposed. By only returning the necessary data, you can help prevent security vulnerabilities such as data leakage, injection attacks, and other types of attacks that rely on exposing too much information. Additionally, reducing the amount of data returned can improve the performance of your API by reducing the amount of data that needs to be processed and transmitted. diff --git a/src/data/best-practices/api-security/content/cdn-for-file-uploads.md b/src/data/best-practices/api-security/content/cdn-for-file-uploads.md index 337b5da13..340b8934e 100644 --- a/src/data/best-practices/api-security/content/cdn-for-file-uploads.md +++ b/src/data/best-practices/api-security/content/cdn-for-file-uploads.md @@ -2,4 +2,4 @@ > Use CDN for file uploads -Using a Content Delivery Network (CDN) for file uploads can make an API more secure by offloading the file upload traffic from the API server and reducing the risk of DDoS attacks. \ No newline at end of file +Using a Content Delivery Network (CDN) for file uploads can make an API more secure by offloading the file upload traffic from the API server and reducing the risk of DDoS attacks. diff --git a/src/data/best-practices/api-security/content/centralized-logins.md b/src/data/best-practices/api-security/content/centralized-logins.md index f35d1c6d1..4dd009bce 100644 --- a/src/data/best-practices/api-security/content/centralized-logins.md +++ b/src/data/best-practices/api-security/content/centralized-logins.md @@ -10,4 +10,4 @@ Using centralized logins for all services and components is important for severa - Centralized logins make it easier to enforce security policies across different services and components, ensuring that only authorized users can access sensitive data or perform certain actions. -To use centralized logins, you need to set up a single sign-on (SSO) system that enables users to authenticate once and then access multiple services without having to provide credentials again. This can be done using protocols like OAuth or SAML, which enable secure authentication and authorization across different applications and services. Once set up, you can use centralized logging tools like ELK stack, Splunk, or Graylog to collect logs from different services and components and analyze them in one place. This enables you to quickly identify and respond to security threats or anomalies. \ No newline at end of file +To use centralized logins, you need to set up a single sign-on (SSO) system that enables users to authenticate once and then access multiple services without having to provide credentials again. This can be done using protocols like OAuth or SAML, which enable secure authentication and authorization across different applications and services. Once set up, you can use centralized logging tools like ELK stack, Splunk, or Graylog to collect logs from different services and components and analyze them in one place. This enables you to quickly identify and respond to security threats or anomalies. diff --git a/src/data/best-practices/api-security/content/check-dependencies.md b/src/data/best-practices/api-security/content/check-dependencies.md index 843d7921c..7df20a5a7 100644 --- a/src/data/best-practices/api-security/content/check-dependencies.md +++ b/src/data/best-practices/api-security/content/check-dependencies.md @@ -4,4 +4,4 @@ Vulnerabilities in third-party libraries and components can be exploited by attackers to gain access to your system or data. These vulnerabilities can be introduced through outdated or insecure dependencies that have not been updated with the latest security patches. -By regularly checking for vulnerabilities and keeping your dependencies up to date, you can ensure that your API is not susceptible to known security risks. This can be done by using automated tools or services that scan your codebase and provide reports on any vulnerabilities found in your dependencies. By addressing these vulnerabilities promptly, you can reduce the risk of your API being compromised by attackers. \ No newline at end of file +By regularly checking for vulnerabilities and keeping your dependencies up to date, you can ensure that your API is not susceptible to known security risks. This can be done by using automated tools or services that scan your codebase and provide reports on any vulnerabilities found in your dependencies. By addressing these vulnerabilities promptly, you can reduce the risk of your API being compromised by attackers. diff --git a/src/data/best-practices/api-security/content/code-review-process.md b/src/data/best-practices/api-security/content/code-review-process.md index d6a3bb681..f96c8854d 100644 --- a/src/data/best-practices/api-security/content/code-review-process.md +++ b/src/data/best-practices/api-security/content/code-review-process.md @@ -2,4 +2,4 @@ > Use a code review process and disregard self-approval. -Having a good code review process allows for additional sets of eyes to review the code and identify potential security issues or vulnerabilities. A code review process involves other team members reviewing the code to ensure it follows best practices and is secure. Disregarding self-approval means that the developer who wrote the code should not be the only one responsible for approving it for release. This helps to catch potential mistakes or oversights before the code is deployed, reducing the risk of security breaches or other issues. \ No newline at end of file +Having a good code review process allows for additional sets of eyes to review the code and identify potential security issues or vulnerabilities. A code review process involves other team members reviewing the code to ensure it follows best practices and is secure. Disregarding self-approval means that the developer who wrote the code should not be the only one responsible for approving it for release. This helps to catch potential mistakes or oversights before the code is deployed, reducing the risk of security breaches or other issues. diff --git a/src/data/best-practices/api-security/content/csp-header.md b/src/data/best-practices/api-security/content/csp-header.md index 9ff536c6c..3f8399f1e 100644 --- a/src/data/best-practices/api-security/content/csp-header.md +++ b/src/data/best-practices/api-security/content/csp-header.md @@ -2,4 +2,4 @@ > Send `Content-Security-Policy: default-src 'none'` header. -Sending the `Content-Security-Policy: default-src 'none'` header is a security best practice that helps prevent cross-site scripting (XSS) attacks. This header tells the browser to not allow any resources to be loaded from external sources, such as scripts, stylesheets, or images. It only allows resources that are explicitly whitelisted in the CSP header, such as scripts or stylesheets hosted on your own domain. This can help prevent malicious actors from injecting code into your web pages via XSS attacks, as the browser will not execute any scripts or load any resources that are not explicitly allowed by the CSP policy. \ No newline at end of file +Sending the `Content-Security-Policy: default-src 'none'` header is a security best practice that helps prevent cross-site scripting (XSS) attacks. This header tells the browser to not allow any resources to be loaded from external sources, such as scripts, stylesheets, or images. It only allows resources that are explicitly whitelisted in the CSP header, such as scripts or stylesheets hosted on your own domain. This can help prevent malicious actors from injecting code into your web pages via XSS attacks, as the browser will not execute any scripts or load any resources that are not explicitly allowed by the CSP policy. diff --git a/src/data/best-practices/api-security/content/debug-mode-off.md b/src/data/best-practices/api-security/content/debug-mode-off.md index 421e0100e..951798d1d 100644 --- a/src/data/best-practices/api-security/content/debug-mode-off.md +++ b/src/data/best-practices/api-security/content/debug-mode-off.md @@ -2,4 +2,4 @@ > Make sure to turn the debug mode off in production -Debug mode is a feature that is used to help developers debug their code. It is not meant to be used in production. It can expose sensitive information about the application and the server it is running on. Make sure to turn debug mode off in production. \ No newline at end of file +Debug mode is a feature that is used to help developers debug their code. It is not meant to be used in production. It can expose sensitive information about the application and the server it is running on. Make sure to turn debug mode off in production. diff --git a/src/data/best-practices/api-security/content/directory-listings.md b/src/data/best-practices/api-security/content/directory-listings.md index e9e41bec5..d29a8fad4 100644 --- a/src/data/best-practices/api-security/content/directory-listings.md +++ b/src/data/best-practices/api-security/content/directory-listings.md @@ -4,4 +4,4 @@ Directory listings are a feature of web servers that allow users to view the contents of a directory on a server. By default, web servers often have directory listings enabled, which means that anyone who has access to the server can see all the files and directories in a given folder. -Turning off directory listings is important for API security because it prevents attackers from gaining access to sensitive files and directories on the server. If directory listings are enabled and an attacker gains access to the server, they can easily view and download any files that are not properly protected. By disabling directory listings, you can ensure that only authorized users can access the files and directories on the server. \ No newline at end of file +Turning off directory listings is important for API security because it prevents attackers from gaining access to sensitive files and directories on the server. If directory listings are enabled and an attacker gains access to the server, they can easily view and download any files that are not properly protected. By disabling directory listings, you can ensure that only authorized users can access the files and directories on the server. diff --git a/src/data/best-practices/api-security/content/disable-entity-expansion.md b/src/data/best-practices/api-security/content/disable-entity-expansion.md index 25db7d24b..af8655072 100644 --- a/src/data/best-practices/api-security/content/disable-entity-expansion.md +++ b/src/data/best-practices/api-security/content/disable-entity-expansion.md @@ -2,4 +2,4 @@ > Disable entity expansion if using XML, YML or any other language -Disabling entity expansion is important when using XML, YAML, or any other language that allows entities because it helps prevent XXE (XML External Entity) or YAML tag injection attacks. In these attacks, attacker normally injects some sort of custom code in the input to perform attacks against the application.. By disabling entity expansion, the input cannot be manipulated in this way, reducing the risk of such attacks. \ No newline at end of file +Disabling entity expansion is important when using XML, YAML, or any other language that allows entities because it helps prevent XXE (XML External Entity) or YAML tag injection attacks. In these attacks, attacker normally injects some sort of custom code in the input to perform attacks against the application.. By disabling entity expansion, the input cannot be manipulated in this way, reducing the risk of such attacks. diff --git a/src/data/best-practices/api-security/content/disable-entity-parsing-xml.md b/src/data/best-practices/api-security/content/disable-entity-parsing-xml.md index 3b1ea9507..061ce4f14 100644 --- a/src/data/best-practices/api-security/content/disable-entity-parsing-xml.md +++ b/src/data/best-practices/api-security/content/disable-entity-parsing-xml.md @@ -4,4 +4,4 @@ If the XML parser is vulnerable to XXE attacks, the attacker can use this vulnerability to read files on the server, perform SSRF attacks, and more. This can lead to the disclosure of sensitive information, denial of service, and other attacks. -XXE (XML External Entity) attack is a type of attack that targets applications that parse XML input from untrusted sources. In this attack, an attacker injects a malicious XML payload. This payload can contain external entities that the attacker can use to retrieve sensitive data, execute remote code, or launch denial of service attacks. XXE attacks can be prevented by disabling external entity processing or by validating and sanitizing the XML input before parsing it. \ No newline at end of file +XXE (XML External Entity) attack is a type of attack that targets applications that parse XML input from untrusted sources. In this attack, an attacker injects a malicious XML payload. This payload can contain external entities that the attacker can use to retrieve sensitive data, execute remote code, or launch denial of service attacks. XXE attacks can be prevented by disabling external entity processing or by validating and sanitizing the XML input before parsing it. diff --git a/src/data/best-practices/api-security/content/endpoint-authentication.md b/src/data/best-practices/api-security/content/endpoint-authentication.md index 4a0c53460..e94cf1f73 100644 --- a/src/data/best-practices/api-security/content/endpoint-authentication.md +++ b/src/data/best-practices/api-security/content/endpoint-authentication.md @@ -1,6 +1,6 @@ # Endpoint Authentication > Check if all the protected endpoints are behind authentication -to avoid broken authentication process +> to avoid broken authentication process -By identifying and fixing broken authentication workflows, the API can prevent attacks such as brute force attacks, credential stuffing, session hijacking, and other authentication-related attacks. This can help ensure that the system is secure and that sensitive data is protected. \ No newline at end of file +By identifying and fixing broken authentication workflows, the API can prevent attacks such as brute force attacks, credential stuffing, session hijacking, and other authentication-related attacks. This can help ensure that the system is secure and that sensitive data is protected. diff --git a/src/data/best-practices/api-security/content/force-content-type.md b/src/data/best-practices/api-security/content/force-content-type.md index 60949eb1d..a130c7b81 100644 --- a/src/data/best-practices/api-security/content/force-content-type.md +++ b/src/data/best-practices/api-security/content/force-content-type.md @@ -2,4 +2,4 @@ > Always force the `Content-Type` header to be set to relevant MIME type. -Forcing the content-type for API security is important because it ensures that the client and server are communicating in a mutually agreed-upon format for the data being transmitted. This can prevent attacks such as content spoofing or injection, where an attacker tries to trick the server into processing malicious content by pretending that it is of a different content type. By forcing the content-type to a specific format, the server can validate that the data it is receiving is legitimate and safe to process. Additionally, forcing the content-type can help prevent certain types of parsing errors that could be exploited by attackers. \ No newline at end of file +Forcing the content-type for API security is important because it ensures that the client and server are communicating in a mutually agreed-upon format for the data being transmitted. This can prevent attacks such as content spoofing or injection, where an attacker tries to trick the server into processing malicious content by pretending that it is of a different content type. By forcing the content-type to a specific format, the server can validate that the data it is receiving is legitimate and safe to process. Additionally, forcing the content-type can help prevent certain types of parsing errors that could be exploited by attackers. diff --git a/src/data/best-practices/api-security/content/good-jwt-secret.md b/src/data/best-practices/api-security/content/good-jwt-secret.md index 61f09100d..ad92ac3bb 100644 --- a/src/data/best-practices/api-security/content/good-jwt-secret.md +++ b/src/data/best-practices/api-security/content/good-jwt-secret.md @@ -2,4 +2,4 @@ > You should have a good JWT secret to protect against token tempering as well as avoiding brute force attacks. -A strong secret key should be randomly generated, long, and complex, and should be stored securely and rotated periodically. \ No newline at end of file +A strong secret key should be randomly generated, long, and complex, and should be stored securely and rotated periodically. diff --git a/src/data/best-practices/api-security/content/hsts-header.md b/src/data/best-practices/api-security/content/hsts-header.md index 4dff63b6b..913ecd9be 100644 --- a/src/data/best-practices/api-security/content/hsts-header.md +++ b/src/data/best-practices/api-security/content/hsts-header.md @@ -6,4 +6,4 @@ SSL strip is a type of attack where an attacker intercepts traffic between a cli In an SSL strip attack, the attacker sets up a man-in-the-middle (MITM) position between the client and the server. When the client initiates a connection with the server, the attacker intercepts the SSL/TLS traffic and removes or replaces the HTTPS links with HTTP links. This can trick the user into thinking they are using a secure connection when in fact, they are not. The attacker can then monitor and manipulate the data transmitted between the client and server. -HSTS header is a security header that instructs browsers to only access the site over HTTPS. This header is used to prevent SSL Strip attacks. It is a good practice to use HSTS header with SSL. \ No newline at end of file +HSTS header is a security header that instructs browsers to only access the site over HTTPS. This header is used to prevent SSL Strip attacks. It is a good practice to use HSTS header with SSL. diff --git a/src/data/best-practices/api-security/content/index.md b/src/data/best-practices/api-security/content/index.md index 4e768b56d..792d60054 100644 --- a/src/data/best-practices/api-security/content/index.md +++ b/src/data/best-practices/api-security/content/index.md @@ -1 +1 @@ -# \ No newline at end of file +# diff --git a/src/data/best-practices/api-security/content/jwt-algorithm.md b/src/data/best-practices/api-security/content/jwt-algorithm.md index c843790a8..e9202c555 100644 --- a/src/data/best-practices/api-security/content/jwt-algorithm.md +++ b/src/data/best-practices/api-security/content/jwt-algorithm.md @@ -2,4 +2,4 @@ > Do not extract the algorithm from the header, use backend. -Extracting the algorithm from the header of a JWT token can pose a security risk, as an attacker could modify the algorithm and potentially gain unauthorized access. It is therefore recommended to verify the algorithm on the backend rather than extracting it from the header. This can help ensure that the algorithm used to sign and verify the token is secure and has not been tampered with. \ No newline at end of file +Extracting the algorithm from the header of a JWT token can pose a security risk, as an attacker could modify the algorithm and potentially gain unauthorized access. It is therefore recommended to verify the algorithm on the backend rather than extracting it from the header. This can help ensure that the algorithm used to sign and verify the token is secure and has not been tampered with. diff --git a/src/data/best-practices/api-security/content/jwt-payload.md b/src/data/best-practices/api-security/content/jwt-payload.md index bb660816f..24546acab 100644 --- a/src/data/best-practices/api-security/content/jwt-payload.md +++ b/src/data/best-practices/api-security/content/jwt-payload.md @@ -2,4 +2,4 @@ > Avoid storing sensitive data in JWT payload -Storing sensitive data in a JWT token payload can increase the risk of data breaches and other security incidents. If an attacker is able to obtain or tamper with the token, they could potentially access the sensitive data stored in the payload. \ No newline at end of file +Storing sensitive data in a JWT token payload can increase the risk of data breaches and other security incidents. If an attacker is able to obtain or tamper with the token, they could potentially access the sensitive data stored in the payload. diff --git a/src/data/best-practices/api-security/content/monitor-everything.md b/src/data/best-practices/api-security/content/monitor-everything.md index 2bd3ef2b0..99a34dc92 100644 --- a/src/data/best-practices/api-security/content/monitor-everything.md +++ b/src/data/best-practices/api-security/content/monitor-everything.md @@ -4,4 +4,4 @@ Using agents to monitor all requests, responses, and errors allows for real-time monitoring and detection of any abnormal activity or potential attacks. These agents can be configured to track metrics such as response times, error rates, and usage patterns, which can help identify any anomalies that could be indicative of an attack. By monitoring all requests and responses, the agents can provide visibility into the behavior of the API, which can help identify any potential security vulnerabilities or weaknesses. Additionally, agents can be used to log and analyze all data flowing through the API, which can be useful for debugging and auditing purposes. -To use agents for monitoring, a dedicated monitoring solution can be deployed alongside the API. This solution can be configured to capture data from all requests and responses, and analyze the data for any anomalies or issues. Agents can be implemented using various monitoring tools and technologies such as agents for application performance monitoring (APM), log monitoring, and network monitoring. The agents should be configured to provide real-time alerts to security teams if any suspicious activity is detected, allowing for immediate action to be taken. \ No newline at end of file +To use agents for monitoring, a dedicated monitoring solution can be deployed alongside the API. This solution can be configured to capture data from all requests and responses, and analyze the data for any anomalies or issues. Agents can be implemented using various monitoring tools and technologies such as agents for application performance monitoring (APM), log monitoring, and network monitoring. The agents should be configured to provide real-time alerts to security teams if any suspicious activity is detected, allowing for immediate action to be taken. diff --git a/src/data/best-practices/api-security/content/no-sniff-header.md b/src/data/best-practices/api-security/content/no-sniff-header.md index 1fbe4c5b6..8b29e6d32 100644 --- a/src/data/best-practices/api-security/content/no-sniff-header.md +++ b/src/data/best-practices/api-security/content/no-sniff-header.md @@ -4,4 +4,4 @@ You should send the `X-Content-Type-Options: nosniff` header to prevent [MIME type sniffing attacks](https://www.keycdn.com/support/what-is-mime-sniffing) on your web application. This header tells the browser not to override the response content type even if it's not the expected type. For example, if an attacker manages to upload an HTML file with a disguised extension like .jpg, the server may still send the correct content type header for the HTML file. However, some browsers may ignore this header and try to "sniff" the content type based on the actual contents of the file, leading to a potential cross-site scripting (XSS) attack. -By sending the `X-Content-Type-Options: nosniff` header, you tell the browser to always trust the provided content type and not try to sniff the content type. This helps to mitigate the risk of attackers exploiting content type mismatches to deliver malicious content to unsuspecting users. \ No newline at end of file +By sending the `X-Content-Type-Options: nosniff` header, you tell the browser to always trust the provided content type and not try to sniff the content type. This helps to mitigate the risk of attackers exploiting content type mismatches to deliver malicious content to unsuspecting users. diff --git a/src/data/best-practices/api-security/content/non-executable-stacks.md b/src/data/best-practices/api-security/content/non-executable-stacks.md index 33088fcfa..88affd10b 100644 --- a/src/data/best-practices/api-security/content/non-executable-stacks.md +++ b/src/data/best-practices/api-security/content/non-executable-stacks.md @@ -4,4 +4,4 @@ A stack usually refers to the call stack or execution stack. It is a data structure used by the computer program to manage and keep track of the sequence of function calls, local variables, and other related data during the execution of the program. -A non-executable stack is a security mechanism that prevents malicious code from being executed by preventing the stack memory from being executed as code. This helps to prevent attacks such as buffer overflow attacks, where an attacker tries to overwrite the return address on the stack to redirect the program to execute malicious code. By using non-executable stacks, the program can keep the stack separate from executable code and help prevent these types of attacks. \ No newline at end of file +A non-executable stack is a security mechanism that prevents malicious code from being executed by preventing the stack memory from being executed as code. This helps to prevent attacks such as buffer overflow attacks, where an attacker tries to overwrite the return address on the stack to redirect the program to execute malicious code. By using non-executable stacks, the program can keep the stack separate from executable code and help prevent these types of attacks. diff --git a/src/data/best-practices/api-security/content/oauth-redirect-ui.md b/src/data/best-practices/api-security/content/oauth-redirect-ui.md index 9e35ea303..0705e20d3 100644 --- a/src/data/best-practices/api-security/content/oauth-redirect-ui.md +++ b/src/data/best-practices/api-security/content/oauth-redirect-ui.md @@ -6,4 +6,4 @@ In OAuth, `redirect_uri` is a parameter that specifies the URI (Uniform Resource It is important to validate the `redirect_uri` on the server-side to prevent attacks such as open redirection attacks. In an open redirection attack, an attacker can modify the `redirect_uri` parameter to redirect the user to a malicious website. By validating the `redirect_uri` on the server-side, you can ensure that the redirect URI is a valid and authorized URI for the client application. -Validating the `redirect_uri` on the server-side can also prevent other types of attacks such as phishing attacks or cross-site request forgery (CSRF) attacks. By verifying that the `redirect_uri` matches a predefined list of authorized URIs, you can ensure that the user is redirected to a trusted site after authentication is complete. \ No newline at end of file +Validating the `redirect_uri` on the server-side can also prevent other types of attacks such as phishing attacks or cross-site request forgery (CSRF) attacks. By verifying that the `redirect_uri` matches a predefined list of authorized URIs, you can ensure that the user is redirected to a trusted site after authentication is complete. diff --git a/src/data/best-practices/api-security/content/only-server-side-encryption.md b/src/data/best-practices/api-security/content/only-server-side-encryption.md index d17b63091..6b5ddbb57 100644 --- a/src/data/best-practices/api-security/content/only-server-side-encryption.md +++ b/src/data/best-practices/api-security/content/only-server-side-encryption.md @@ -2,4 +2,4 @@ > Use server-side encryption instead of client-side encryption -Client-side encryption is not recommended because client side codebase can be easily reverse engineered which can lead to the exposure of encryption algorithms. \ No newline at end of file +Client-side encryption is not recommended because client side codebase can be easily reverse engineered which can lead to the exposure of encryption algorithms. diff --git a/src/data/best-practices/api-security/content/prefer-uuid.md b/src/data/best-practices/api-security/content/prefer-uuid.md index 6f1ed4da4..af1ee81eb 100644 --- a/src/data/best-practices/api-security/content/prefer-uuid.md +++ b/src/data/best-practices/api-security/content/prefer-uuid.md @@ -2,4 +2,4 @@ > Use UUIDs instead of auto-incrementing integers. UUIDs are globally unique, and are not sequential. They are also more difficult to guess than sequential integers. -Use of UUIDs over auto-incrementing IDs prevents attackers from guessing or iterating through resource IDs. UUIDs are randomly generated and contain 128 bits of entropy, making it practically impossible for attackers to guess them. In contrast, autoincrementing IDs can be easily predicted or iterated through, allowing attackers to access or manipulate resources they shouldn't have access to. Additionally, using UUIDs can help prevent information disclosure by hiding the order of resource creation or access. \ No newline at end of file +Use of UUIDs over auto-incrementing IDs prevents attackers from guessing or iterating through resource IDs. UUIDs are randomly generated and contain 128 bits of entropy, making it practically impossible for attackers to guess them. In contrast, autoincrementing IDs can be easily predicted or iterated through, allowing attackers to access or manipulate resources they shouldn't have access to. Additionally, using UUIDs can help prevent information disclosure by hiding the order of resource creation or access. diff --git a/src/data/best-practices/api-security/content/proper-http-methods.md b/src/data/best-practices/api-security/content/proper-http-methods.md index e0f99f351..d3027927d 100644 --- a/src/data/best-practices/api-security/content/proper-http-methods.md +++ b/src/data/best-practices/api-security/content/proper-http-methods.md @@ -1,5 +1,3 @@ # Proper HTTP Methods Use the proper HTTP method according to the operation: `GET (read)`, `POST (create)`, `PUT/PATCH (replace/update)`, and `DELETE (to delete a record)`, and respond with `405 Method Not Allowed` if the requested method isn't appropriate for the requested resource. - - diff --git a/src/data/best-practices/api-security/content/proper-response-code.md b/src/data/best-practices/api-security/content/proper-response-code.md index fa1ee405c..3e5980376 100644 --- a/src/data/best-practices/api-security/content/proper-response-code.md +++ b/src/data/best-practices/api-security/content/proper-response-code.md @@ -1,10 +1,11 @@ # Proper Response Code > Return the proper status code according to the operation completed. e.g. +> > - `200 OK` > - `400 Bad Request` > - `401 Unauthorized` > - `405 Method Not Allowed` > - ...etc. -Returning the proper status code according to the operation completed is important for API security because it allows the client to understand the outcome of their request and take appropriate actions. For example, if the server returns a 401 Unauthorized status code, the client knows that their authentication credentials are incorrect and can prompt the user to re-enter their login details. On the other hand, if the server returns a 200 OK status code even though the request failed, the client may not realize there was an issue and could potentially execute malicious actions or display incorrect data. Providing accurate status codes can help prevent security vulnerabilities and improve the overall reliability and usability of the API. \ No newline at end of file +Returning the proper status code according to the operation completed is important for API security because it allows the client to understand the outcome of their request and take appropriate actions. For example, if the server returns a 401 Unauthorized status code, the client knows that their authentication credentials are incorrect and can prompt the user to re-enter their login details. On the other hand, if the server returns a 200 OK status code even though the request failed, the client may not realize there was an issue and could potentially execute malicious actions or display incorrect data. Providing accurate status codes can help prevent security vulnerabilities and improve the overall reliability and usability of the API. diff --git a/src/data/best-practices/api-security/content/recommended-resources.md b/src/data/best-practices/api-security/content/recommended-resources.md index 7a6274b1f..0f1f6dd9b 100644 --- a/src/data/best-practices/api-security/content/recommended-resources.md +++ b/src/data/best-practices/api-security/content/recommended-resources.md @@ -5,4 +5,4 @@ Have a look at the following resources for more information on API security: - [Collection of Resources for Building APIs](https://github.com/yosriady/awesome-api-devtools) - [CS253: Web Security](https://www.youtube.com/watch?v=5JJrJGZ_LjM&list=PL1y1iaEtjSYiiSGVlL1cHsXN_kvJOOhu-) - [Securing Web Applications](https://www.youtube.com/watch?v=WlmKwIe9z1Q) -- [MIT 6.858: Computer Systems Security](https://www.youtube.com/watch?v=GqmQg-cszw4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) \ No newline at end of file +- [MIT 6.858: Computer Systems Security](https://www.youtube.com/watch?v=GqmQg-cszw4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) diff --git a/src/data/best-practices/api-security/content/remove-fingerprint-header.md b/src/data/best-practices/api-security/content/remove-fingerprint-header.md index 7ee9f6801..2d40c51e5 100644 --- a/src/data/best-practices/api-security/content/remove-fingerprint-header.md +++ b/src/data/best-practices/api-security/content/remove-fingerprint-header.md @@ -2,4 +2,4 @@ > Remove fingerprinting headers (i.e. x-powered-by etc) from the HTTP request. -Fingerprinting headers can be used to identify the web server and its version. This information can be used by attackers to identify vulnerabilities in the web server and exploit them. \ No newline at end of file +Fingerprinting headers can be used to identify the web server and its version. This information can be used by attackers to identify vulnerabilities in the web server and exploit them. diff --git a/src/data/best-practices/api-security/content/restrict-private-apis.md b/src/data/best-practices/api-security/content/restrict-private-apis.md index ada767013..33bce3e16 100644 --- a/src/data/best-practices/api-security/content/restrict-private-apis.md +++ b/src/data/best-practices/api-security/content/restrict-private-apis.md @@ -3,4 +3,3 @@ > Private APIs should only be accessible from safe listed IPs Private APIs should only be accessible from safe-listed IPs to ensure that only authorized users or systems can access the API. By restricting access to specific IP addresses, you can prevent unauthorized access from external networks or malicious actors. This can help to protect sensitive data and prevent attacks such as DDoS or brute-force attacks. Additionally, restricting access to safe-listed IPs can help to ensure the reliability and performance of the API by preventing excessive traffic from unauthorized sources. - diff --git a/src/data/best-practices/api-security/content/rollback-deployments.md b/src/data/best-practices/api-security/content/rollback-deployments.md index 6237b7c3e..ddc4b24d8 100644 --- a/src/data/best-practices/api-security/content/rollback-deployments.md +++ b/src/data/best-practices/api-security/content/rollback-deployments.md @@ -2,4 +2,4 @@ > Design a rollback solution for deployments. -Sometimes deploying a new version of the API can introduce unexpected bugs or issues that were not caught during testing. In such cases, rolling back to the previous version of the API can help to mitigate the impact of the issue and restore the service to a functional state. A well-designed rollback solution can help reduce downtime and minimize the impact on users. \ No newline at end of file +Sometimes deploying a new version of the API can introduce unexpected bugs or issues that were not caught during testing. In such cases, rolling back to the previous version of the API can help to mitigate the impact of the issue and restore the service to a functional state. A well-designed rollback solution can help reduce downtime and minimize the impact on users. diff --git a/src/data/best-practices/api-security/content/run-security-analysis.md b/src/data/best-practices/api-security/content/run-security-analysis.md index 81e909291..fa3f00d0b 100644 --- a/src/data/best-practices/api-security/content/run-security-analysis.md +++ b/src/data/best-practices/api-security/content/run-security-analysis.md @@ -2,4 +2,4 @@ > Continuously run security analysis on your code. -Continuous security analysis helps identify and address security vulnerabilities in the codebase before they can be exploited by attackers. It involves using automated tools and manual techniques to scan code for potential weaknesses, such as insecure coding practices, configuration errors, and outdated dependencies. By identifying and fixing vulnerabilities early in the development cycle, the risk of a security breach or data loss can be significantly reduced, improving the overall security posture of the system. \ No newline at end of file +Continuous security analysis helps identify and address security vulnerabilities in the codebase before they can be exploited by attackers. It involves using automated tools and manual techniques to scan code for potential weaknesses, such as insecure coding practices, configuration errors, and outdated dependencies. By identifying and fixing vulnerabilities early in the development cycle, the risk of a security breach or data loss can be significantly reduced, improving the overall security posture of the system. diff --git a/src/data/best-practices/api-security/content/sensitive-data-encryption.md b/src/data/best-practices/api-security/content/sensitive-data-encryption.md index 14abd1b71..48a1949b9 100644 --- a/src/data/best-practices/api-security/content/sensitive-data-encryption.md +++ b/src/data/best-practices/api-security/content/sensitive-data-encryption.md @@ -4,4 +4,4 @@ Encryption is a process of converting plain text data into a cipher text that can only be deciphered by someone who has the decryption key. This makes it difficult for attackers to access sensitive data, even if they are able to intercept it or gain unauthorized access to it. -To encrypt sensitive data, you can use encryption algorithms such as `AES` or `RSA`, along with a strong key management system to ensure that keys are securely stored and managed. Additionally, you can implement other security measures such as access controls, firewalls, and intrusion detection systems to further protect sensitive data. \ No newline at end of file +To encrypt sensitive data, you can use encryption algorithms such as `AES` or `RSA`, along with a strong key management system to ensure that keys are securely stored and managed. Additionally, you can implement other security measures such as access controls, firewalls, and intrusion detection systems to further protect sensitive data. diff --git a/src/data/best-practices/api-security/content/set-alerts.md b/src/data/best-practices/api-security/content/set-alerts.md index f2a244359..17a5377a6 100644 --- a/src/data/best-practices/api-security/content/set-alerts.md +++ b/src/data/best-practices/api-security/content/set-alerts.md @@ -2,4 +2,4 @@ > Use alerts for SMS, Slack, Email, Kibana, Cloudwatch, etc. -Using alerts for various communication channels such as SMS, Slack, Email, Kibana, Cloudwatch, etc. can help you quickly respond to any issues or anomalies in your system. These alerts can be set up to notify you in real-time if a particular event or condition occurs, allowing you to take proactive measures to prevent downtime, data loss, or security breaches. Additionally, alerts can provide valuable insights into system performance and user behavior, allowing you to make informed decisions about your API's design and implementation. \ No newline at end of file +Using alerts for various communication channels such as SMS, Slack, Email, Kibana, Cloudwatch, etc. can help you quickly respond to any issues or anomalies in your system. These alerts can be set up to notify you in real-time if a particular event or condition occurs, allowing you to take proactive measures to prevent downtime, data loss, or security breaches. Additionally, alerts can provide valuable insights into system performance and user behavior, allowing you to make informed decisions about your API's design and implementation. diff --git a/src/data/best-practices/api-security/content/throttle-requests.md b/src/data/best-practices/api-security/content/throttle-requests.md index 36459124a..51c3cfbbd 100644 --- a/src/data/best-practices/api-security/content/throttle-requests.md +++ b/src/data/best-practices/api-security/content/throttle-requests.md @@ -2,6 +2,6 @@ > Limit requests (throttling) to avoid DDoS / Brute Force attacks. -Limiting requests through throttling is important to prevent DDoS attacks and brute force attacks. DDoS attacks overwhelm the server with too many requests, while brute force attacks try to guess user credentials through multiple login attempts. +Limiting requests through throttling is important to prevent DDoS attacks and brute force attacks. DDoS attacks overwhelm the server with too many requests, while brute force attacks try to guess user credentials through multiple login attempts. -Throttling limits the number of requests that can be sent within a certain time period, making it harder for attackers to carry out these types of attacks. This can protect the system from being overwhelmed and can prevent attackers from gaining unauthorized access. \ No newline at end of file +Throttling limits the number of requests that can be sent within a certain time period, making it harder for attackers to carry out these types of attacks. This can protect the system from being overwhelmed and can prevent attackers from gaining unauthorized access. diff --git a/src/data/best-practices/api-security/content/token-expiry.md b/src/data/best-practices/api-security/content/token-expiry.md index 4a45d2a60..352389785 100644 --- a/src/data/best-practices/api-security/content/token-expiry.md +++ b/src/data/best-practices/api-security/content/token-expiry.md @@ -2,4 +2,4 @@ > Token expiry should be set to a reasonable time to reduce the window of vulnerability, limit the impact of token theft, and improve overall security. -Setting a short token expiration time (TTL, RTTL) is important for security purposes, as it reduces the window of vulnerability, limits the impact of token theft, and improves overall security. However, the expiration time should be balanced with usability, as setting it too short may inconvenience users and reduce productivity. \ No newline at end of file +Setting a short token expiration time (TTL, RTTL) is important for security purposes, as it reduces the window of vulnerability, limits the impact of token theft, and improves overall security. However, the expiration time should be balanced with usability, as setting it too short may inconvenience users and reduce productivity. diff --git a/src/data/best-practices/api-security/content/unit-integration-tests.md b/src/data/best-practices/api-security/content/unit-integration-tests.md index 191cc0fa8..2652ee316 100644 --- a/src/data/best-practices/api-security/content/unit-integration-tests.md +++ b/src/data/best-practices/api-security/content/unit-integration-tests.md @@ -2,4 +2,4 @@ > Audit your design and implementation with unit/integration tests coverage. -Unit and integration testing can help identify vulnerabilities in the API code and design, such as input validation errors, authentication and authorization flaws, and other security-related issues. By performing comprehensive testing, developers can ensure that the API works as intended and that it is secure against common attacks such as injection attacks, cross-site scripting, and other exploits. Adequate testing can also help identify and resolve performance bottlenecks, improve scalability and reliability, and ensure the overall quality of the API. \ No newline at end of file +Unit and integration testing can help identify vulnerabilities in the API code and design, such as input validation errors, authentication and authorization flaws, and other security-related issues. By performing comprehensive testing, developers can ensure that the API works as intended and that it is secure against common attacks such as injection attacks, cross-site scripting, and other exploits. Adequate testing can also help identify and resolve performance bottlenecks, improve scalability and reliability, and ensure the overall quality of the API. diff --git a/src/data/best-practices/api-security/content/use-https.md b/src/data/best-practices/api-security/content/use-https.md index 96e5f92ba..ce66602c5 100644 --- a/src/data/best-practices/api-security/content/use-https.md +++ b/src/data/best-practices/api-security/content/use-https.md @@ -5,4 +5,3 @@ Ensure that your API server uses HTTPS instead of HTTP. HTTPS is a secure protocol that encrypts data in transit, making it difficult for attackers to intercept and read sensitive information. To implement HTTPS, you need to obtain an SSL/TLS certificate and configure your server to use HTTPS. HTTPS uses ciphers to encrypt data in transit. It is important to choose secure ciphers that are resistant to attacks and offer strong encryption. Some common secure ciphers include AES, ChaCha20, and ECDHE for key exchange. Make sure to disable weak and outdated ciphers, such as RC4 and TLS 1.0/1.1, which are vulnerable to attacks. - diff --git a/src/data/best-practices/api-security/content/use-ids-ips-system.md b/src/data/best-practices/api-security/content/use-ids-ips-system.md index 68c78d3d2..5e2e320e2 100644 --- a/src/data/best-practices/api-security/content/use-ids-ips-system.md +++ b/src/data/best-practices/api-security/content/use-ids-ips-system.md @@ -2,4 +2,4 @@ > Use IDS and/or IPS systems to detect and block attacks. -Intrusion detection systems (IDS) and intrusion prevention systems (IPS) can be used to detect and block attacks. These systems can be configured to monitor all incoming and outgoing traffic, and detect any suspicious activity. If any suspicious activity is detected, the systems can be configured to block the traffic, preventing the attack from succeeding. IDS and IPS systems can be implemented using various tools and technologies such as network intrusion detection systems (NIDS), host-based intrusion detection systems (HIDS), and network intrusion prevention systems (NIPS). These systems can be deployed alongside the API, and configured to monitor all incoming and outgoing traffic. The systems can be configured to provide real-time alerts to security teams if any suspicious activity is detected, allowing for immediate action to be taken. \ No newline at end of file +Intrusion detection systems (IDS) and intrusion prevention systems (IPS) can be used to detect and block attacks. These systems can be configured to monitor all incoming and outgoing traffic, and detect any suspicious activity. If any suspicious activity is detected, the systems can be configured to block the traffic, preventing the attack from succeeding. IDS and IPS systems can be implemented using various tools and technologies such as network intrusion detection systems (NIDS), host-based intrusion detection systems (HIDS), and network intrusion prevention systems (NIPS). These systems can be deployed alongside the API, and configured to monitor all incoming and outgoing traffic. The systems can be configured to provide real-time alerts to security teams if any suspicious activity is detected, allowing for immediate action to be taken. diff --git a/src/data/best-practices/api-security/content/use-standard-authentication.md b/src/data/best-practices/api-security/content/use-standard-authentication.md index fa7b039fe..e9b61a2a8 100644 --- a/src/data/best-practices/api-security/content/use-standard-authentication.md +++ b/src/data/best-practices/api-security/content/use-standard-authentication.md @@ -14,4 +14,4 @@ There are several reasons why basic authentication should be avoided and replace - No support for multi-factor authentication: Basic authentication does not support multi-factor authentication (MFA), which is a critical security feature that provides an additional layer of protection against unauthorized access. -In contrast, other authentication techniques such as OAuth, OpenID Connect, and SAML provide more secure and robust methods for authentication. These methods typically use encrypted protocols to protect the user's credentials, provide mechanisms for verifying the integrity of the data, and support MFA. As a result, they are much more secure and reliable than basic authentication and should be used whenever possible. \ No newline at end of file +In contrast, other authentication techniques such as OAuth, OpenID Connect, and SAML provide more secure and robust methods for authentication. These methods typically use encrypted protocols to protect the user's credentials, provide mechanisms for verifying the integrity of the data, and support MFA. As a result, they are much more secure and reliable than basic authentication and should be used whenever possible. diff --git a/src/data/best-practices/api-security/content/validate-content-type.md b/src/data/best-practices/api-security/content/validate-content-type.md index 54d744863..d98296bc8 100644 --- a/src/data/best-practices/api-security/content/validate-content-type.md +++ b/src/data/best-practices/api-security/content/validate-content-type.md @@ -3,4 +3,3 @@ > Validate `content-type` on request headers to prevent XSS attacks Validating the `Content-Type` header on the request can help to make APIs more secure by ensuring that the request data is in the expected format and reducing the risk of attacks such as injection attacks or cross-site scripting (XSS). - diff --git a/src/data/best-practices/api-security/content/validate-user-input.md b/src/data/best-practices/api-security/content/validate-user-input.md index b3df39ab8..e3d1594bf 100644 --- a/src/data/best-practices/api-security/content/validate-user-input.md +++ b/src/data/best-practices/api-security/content/validate-user-input.md @@ -2,4 +2,4 @@ > Validate user input to avoid common vulnerabilities -User input is a common source of vulnerabilities in web applications. This is because user input is often not properly validated, sanitized, or escaped before being used in a web application. This can allow an attacker to manipulate the input and execute malicious code or cause the application to behave unexpectedly. \ No newline at end of file +User input is a common source of vulnerabilities in web applications. This is because user input is often not properly validated, sanitized, or escaped before being used in a web application. This can allow an attacker to manipulate the input and execute malicious code or cause the application to behave unexpectedly. diff --git a/src/data/best-practices/api-security/content/x-frame-options-deny.md b/src/data/best-practices/api-security/content/x-frame-options-deny.md index 2d24d7144..bf6e7450b 100644 --- a/src/data/best-practices/api-security/content/x-frame-options-deny.md +++ b/src/data/best-practices/api-security/content/x-frame-options-deny.md @@ -2,4 +2,4 @@ > Send `X-Frame-Options: deny` header. -The `X-Frame-Options` header prevents the page from being displayed in an iframe, which is commonly used in clickjacking attacks. By setting the value of this header to `deny`, you are telling the browser not to display the page in any iframe. This helps prevent the page from being embedded within an attacker's website and reduces the risk of clickjacking attacks. \ No newline at end of file +The `X-Frame-Options` header prevents the page from being displayed in an iframe, which is commonly used in clickjacking attacks. By setting the value of this header to `deny`, you are telling the browser not to display the page in any iframe. This helps prevent the page from being embedded within an attacker's website and reduces the risk of clickjacking attacks. diff --git a/src/data/best-practices/aws/content/alerts-as-notifications.md b/src/data/best-practices/aws/content/alerts-as-notifications.md index a9b43a036..7de2db596 100644 --- a/src/data/best-practices/aws/content/alerts-as-notifications.md +++ b/src/data/best-practices/aws/content/alerts-as-notifications.md @@ -2,4 +2,4 @@ > Get your alerts to become notifications. -If you've set everyting up correctly, your health checks should automatically destroy bad instances and spawn new ones. There's usually no action to take when getting a CloudWatch alert, as everything should be automated. If you're getting alerts where manual intervention is required, do a post-mortem and figure out if there's a way you can automate the action in future. The last time I had an actionable alert from CloudWatch was about a year ago, and it's extremely awesome not to be woken up at 4am for ops alerts any more. \ No newline at end of file +If you've set everyting up correctly, your health checks should automatically destroy bad instances and spawn new ones. There's usually no action to take when getting a CloudWatch alert, as everything should be automated. If you're getting alerts where manual intervention is required, do a post-mortem and figure out if there's a way you can automate the action in future. The last time I had an actionable alert from CloudWatch was about a year ago, and it's extremely awesome not to be woken up at 4am for ops alerts any more. diff --git a/src/data/best-practices/aws/content/app-changes-for-aws.md b/src/data/best-practices/aws/content/app-changes-for-aws.md index 6b02edb7d..5dbeebf5d 100644 --- a/src/data/best-practices/aws/content/app-changes-for-aws.md +++ b/src/data/best-practices/aws/content/app-changes-for-aws.md @@ -1,3 +1,3 @@ # App Changes for AWS -While a lot of applications can probably just be deployed to an EC2 instance and work well, if you're coming from a physical environment, you may need to re-architect your application in order to accomodate changes. Don't just think you can copy the files over and be done with it. \ No newline at end of file +While a lot of applications can probably just be deployed to an EC2 instance and work well, if you're coming from a physical environment, you may need to re-architect your application in order to accomodate changes. Don't just think you can copy the files over and be done with it. diff --git a/src/data/best-practices/aws/content/automate-everything.md b/src/data/best-practices/aws/content/automate-everything.md index 4c7cd962f..6184de2ab 100644 --- a/src/data/best-practices/aws/content/automate-everything.md +++ b/src/data/best-practices/aws/content/automate-everything.md @@ -1,3 +1,3 @@ # Automate Everything -This is more of general operations advice than AWS specific, but everything needs to be automated. Recovery, deployment, failover, etc. Package and OS updates should be managed by something, whether it's just a bash script, or Chef/Puppet, etc. You shouldn't have to care about this stuff. As mentioned in a different tip, you should also make sure to disable SSH access, as this will pretty quickly highlight any part of your process that isn't automated. Remember the key phrase from the earlier tip, if you have to SSH into your servers, then your automation has failed. \ No newline at end of file +This is more of general operations advice than AWS specific, but everything needs to be automated. Recovery, deployment, failover, etc. Package and OS updates should be managed by something, whether it's just a bash script, or Chef/Puppet, etc. You shouldn't have to care about this stuff. As mentioned in a different tip, you should also make sure to disable SSH access, as this will pretty quickly highlight any part of your process that isn't automated. Remember the key phrase from the earlier tip, if you have to SSH into your servers, then your automation has failed. diff --git a/src/data/best-practices/aws/content/avoid-fs-mounts.md b/src/data/best-practices/aws/content/avoid-fs-mounts.md index 9ef9fe4d5..9cbd409da 100644 --- a/src/data/best-practices/aws/content/avoid-fs-mounts.md +++ b/src/data/best-practices/aws/content/avoid-fs-mounts.md @@ -2,4 +2,4 @@ > Avoid filesystem mounts (FUSE, etc). -I've found them to be about as reliable as a large government department when used in critical applications. Use the SDK instead. \ No newline at end of file +I've found them to be about as reliable as a large government department when used in critical applications. Use the SDK instead. diff --git a/src/data/best-practices/aws/content/avoid-multiple-scaling-triggers.md b/src/data/best-practices/aws/content/avoid-multiple-scaling-triggers.md index d55c8a5e7..748c8d496 100644 --- a/src/data/best-practices/aws/content/avoid-multiple-scaling-triggers.md +++ b/src/data/best-practices/aws/content/avoid-multiple-scaling-triggers.md @@ -2,4 +2,4 @@ > Don't use multiple scaling triggers on the same group. -If you have multiple CloudWatch alarms which trigger scaling actions for the same auto-scaling group, it might not work as you initially expect it to. For example, let's say you add a trigger to scale up when CPU usage gets too high, or when the inbound network traffic gets high, and your scale down actions are the opposite. You might get an increase in CPU usage, but your inbound network is fine. So the high CPU trigger causes a scale-up action, but the low inbound traffic alarm immediately triggers a scale-down action. Depending on how you've set your cooldown period, this can cause quite a problem as they'll just fight against each other. If you want multiple triggers, you can use multiple auto-scaling groups. \ No newline at end of file +If you have multiple CloudWatch alarms which trigger scaling actions for the same auto-scaling group, it might not work as you initially expect it to. For example, let's say you add a trigger to scale up when CPU usage gets too high, or when the inbound network traffic gets high, and your scale down actions are the opposite. You might get an increase in CPU usage, but your inbound network is fine. So the high CPU trigger causes a scale-up action, but the low inbound traffic alarm immediately triggers a scale-down action. Depending on how you've set your cooldown period, this can cause quite a problem as they'll just fight against each other. If you want multiple triggers, you can use multiple auto-scaling groups. diff --git a/src/data/best-practices/aws/content/avoid-server-eips.md b/src/data/best-practices/aws/content/avoid-server-eips.md index df1705a5d..ce466c54b 100644 --- a/src/data/best-practices/aws/content/avoid-server-eips.md +++ b/src/data/best-practices/aws/content/avoid-server-eips.md @@ -2,4 +2,4 @@ > Don't give servers static/elastic IPs. -For a typical web application, you should put things behind a load balancer, and balance them between AZs. There are a few cases where Elastic IPs will probably need to be used, but in order to make best use of auto-scaling you'll want to use a load balancer instad of giving every instance their own unique IP. \ No newline at end of file +For a typical web application, you should put things behind a load balancer, and balance them between AZs. There are a few cases where Elastic IPs will probably need to be used, but in order to make best use of auto-scaling you'll want to use a load balancer instad of giving every instance their own unique IP. diff --git a/src/data/best-practices/aws/content/aws-right-choice.md b/src/data/best-practices/aws/content/aws-right-choice.md index 6d209ca2b..0de608ee5 100644 --- a/src/data/best-practices/aws/content/aws-right-choice.md +++ b/src/data/best-practices/aws/content/aws-right-choice.md @@ -2,4 +2,4 @@ > Make sure AWS is right for your workload. -You should make sure that using AWS is correct for your particular workload. If you have a steady load and 24/7 servers, it's possible there are cheaper providers you can use, or it might even be cheaper to use dedicated hardware of your own. One of the big benefits of AWS is the ability to scale up and down rapidly in response to load, but not everyone needs that feature. As when purchasing anything, you should shop around a bit first to make sure you're getting the best deal for what you need \ No newline at end of file +You should make sure that using AWS is correct for your particular workload. If you have a steady load and 24/7 servers, it's possible there are cheaper providers you can use, or it might even be cheaper to use dedicated hardware of your own. One of the big benefits of AWS is the ability to scale up and down rapidly in response to load, but not everyone needs that feature. As when purchasing anything, you should shop around a bit first to make sure you're getting the best deal for what you need diff --git a/src/data/best-practices/aws/content/beware-aws-limits.md b/src/data/best-practices/aws/content/beware-aws-limits.md index eb2850eaa..f8e32077b 100644 --- a/src/data/best-practices/aws/content/beware-aws-limits.md +++ b/src/data/best-practices/aws/content/beware-aws-limits.md @@ -2,4 +2,4 @@ > Be aware of AWS service limits before you deploy. -Various service limits are enforced which aren't highlighted until you're actually trying to deploy your application and get the error notification. These limits can easily be increased by making a request to AWS support, however that can involve a significant turn around time (as low as a few minutes, up to a few days, based on past experience), during which you won't be able to finish deploying. A few days before deploying, you should consult the service limits page to see if you think you're going to exceed any of them, and make your support request ahead of time. You will need to make a separate request to each department where you need a limit increased. It's also worth pointing out that some limits are global, while others are per-region. \ No newline at end of file +Various service limits are enforced which aren't highlighted until you're actually trying to deploy your application and get the error notification. These limits can easily be increased by making a request to AWS support, however that can involve a significant turn around time (as low as a few minutes, up to a few days, based on past experience), during which you won't be able to finish deploying. A few days before deploying, you should consult the service limits page to see if you think you're going to exceed any of them, and make your support request ahead of time. You will need to make a separate request to each department where you need a limit increased. It's also worth pointing out that some limits are global, while others are per-region. diff --git a/src/data/best-practices/aws/content/billing-alerts.md b/src/data/best-practices/aws/content/billing-alerts.md index e4a35c51a..765b90b17 100644 --- a/src/data/best-practices/aws/content/billing-alerts.md +++ b/src/data/best-practices/aws/content/billing-alerts.md @@ -2,4 +2,4 @@ > Set up granular billing alerts. -You should always have at least one billing alert set up, but that will only tell you on a monthly basis once you've exceeded your allowance. If you want to catch runaway billing early, you need a more fine grained approach. The way I do it is to set up an alert for my expected usage each week. So the first week's alert for say $1,000, the second for $2,000, third for $3,000, etc. If the week-2 alarm goes off before the 14th/15th of the month, then I know something is probably going wrong. For even more fine-grained control, you can set this up for each individual service, that way you instantly know which service is causing the problem. This could be useful if your usage on one service is quite steady month-to-month, but another is more erratic. Have the indidividual weekly alerts for the steady one, but just an overall one for the more erratic one. If everything is steady, then this is probably overkill, as looking at CloudWatch will quickly tell you which service is the one causing the problem. \ No newline at end of file +You should always have at least one billing alert set up, but that will only tell you on a monthly basis once you've exceeded your allowance. If you want to catch runaway billing early, you need a more fine grained approach. The way I do it is to set up an alert for my expected usage each week. So the first week's alert for say $1,000, the second for $2,000, third for $3,000, etc. If the week-2 alarm goes off before the 14th/15th of the month, then I know something is probably going wrong. For even more fine-grained control, you can set this up for each individual service, that way you instantly know which service is causing the problem. This could be useful if your usage on one service is quite steady month-to-month, but another is more erratic. Have the indidividual weekly alerts for the steady one, but just an overall one for the more erratic one. If everything is steady, then this is probably overkill, as looking at CloudWatch will quickly tell you which service is the one causing the problem. diff --git a/src/data/best-practices/aws/content/bucket-names-ssl.md b/src/data/best-practices/aws/content/bucket-names-ssl.md index 717f87063..935ccaf9e 100644 --- a/src/data/best-practices/aws/content/bucket-names-ssl.md +++ b/src/data/best-practices/aws/content/bucket-names-ssl.md @@ -2,4 +2,4 @@ > Use "-" instead of "." in bucket names for SSL. -If you ever want to use your bucket over SSL, using a "." will cause you to get certificate mismatch errors. You can't change bucket names once you've created them, so you'd have to copy everything to a new bucket. \ No newline at end of file +If you ever want to use your bucket over SSL, using a "." will cause you to get certificate mismatch errors. You can't change bucket names once you've created them, so you'd have to copy everything to a new bucket. diff --git a/src/data/best-practices/aws/content/cloudtrail.md b/src/data/best-practices/aws/content/cloudtrail.md index 35de80671..cf23efdcb 100644 --- a/src/data/best-practices/aws/content/cloudtrail.md +++ b/src/data/best-practices/aws/content/cloudtrail.md @@ -2,4 +2,4 @@ > Use CloudTrail to keep an audit log. -CloudTrail will log any action performed via the APIs or web console into an S3 bucket. Set up the bucket with versioning to be sure no one can modify your logs, and you then have a complete audit trail of all changes in your account. You hope that you will never need to use this, but it's well worth having for when you do. \ No newline at end of file +CloudTrail will log any action performed via the APIs or web console into an S3 bucket. Set up the bucket with versioning to be sure no one can modify your logs, and you then have a complete audit trail of all changes in your account. You hope that you will never need to use this, but it's well worth having for when you do. diff --git a/src/data/best-practices/aws/content/cloudwatch-cli-tools.md b/src/data/best-practices/aws/content/cloudwatch-cli-tools.md index 0730df6d0..6105de5f8 100644 --- a/src/data/best-practices/aws/content/cloudwatch-cli-tools.md +++ b/src/data/best-practices/aws/content/cloudwatch-cli-tools.md @@ -2,4 +2,4 @@ > Use the CLI tools. -It can become extremely tedious to create alarms using the web console, especially if you're setting up a lot of similar alarms, as there's no ability to "clone" an existing alarm while making a minor change elsewhere. Scripting this using the CLI tools can save you lots of time. \ No newline at end of file +It can become extremely tedious to create alarms using the web console, especially if you're setting up a lot of similar alarms, as there's no ability to "clone" an existing alarm while making a minor change elsewhere. Scripting this using the CLI tools can save you lots of time. diff --git a/src/data/best-practices/aws/content/cloudwatch-detailed-monitoring.md b/src/data/best-practices/aws/content/cloudwatch-detailed-monitoring.md index 1e81abad8..ac3c30778 100644 --- a/src/data/best-practices/aws/content/cloudwatch-detailed-monitoring.md +++ b/src/data/best-practices/aws/content/cloudwatch-detailed-monitoring.md @@ -2,4 +2,4 @@ > Use detailed monitoring. -It's ~$3.50 per instance/month, and well worth the extra cost for the extra detail. 1 minute granularity is much better than 5 minute. You can have cases where a problem is hidden in the 5 minute breakdown, but shows itself quite clearly in the 1 minute graphs. This may not be useful for everyone, but it's made investigating some issues much easier for me. \ No newline at end of file +It's ~$3.50 per instance/month, and well worth the extra cost for the extra detail. 1 minute granularity is much better than 5 minute. You can have cases where a problem is hidden in the 5 minute breakdown, but shows itself quite clearly in the 1 minute graphs. This may not be useful for everyone, but it's made investigating some issues much easier for me. diff --git a/src/data/best-practices/aws/content/cloudwatch-free-metrics.md b/src/data/best-practices/aws/content/cloudwatch-free-metrics.md index 5d29d89fd..b1404b09a 100644 --- a/src/data/best-practices/aws/content/cloudwatch-free-metrics.md +++ b/src/data/best-practices/aws/content/cloudwatch-free-metrics.md @@ -2,4 +2,4 @@ > Use the free metrics. -CloudWatch monitors all sorts of things for free (bandwidth, CPU usage, etc.), and you get up to 2 weeks of historical data. This saves you having to use your own tools to monitor you systems. If you need longer than 2 weeks, unfortunately you'll need to use a third-party or custom built monitoring solution. \ No newline at end of file +CloudWatch monitors all sorts of things for free (bandwidth, CPU usage, etc.), and you get up to 2 weeks of historical data. This saves you having to use your own tools to monitor you systems. If you need longer than 2 weeks, unfortunately you'll need to use a third-party or custom built monitoring solution. diff --git a/src/data/best-practices/aws/content/configured-azs-only.md b/src/data/best-practices/aws/content/configured-azs-only.md index eade6f027..3828cf53a 100644 --- a/src/data/best-practices/aws/content/configured-azs-only.md +++ b/src/data/best-practices/aws/content/configured-azs-only.md @@ -2,4 +2,4 @@ > Only use the availability zones (AZs) your ELB is configured for. -If you add your scaling group to multiple AZs, make sure your ELB is configured to use all of those AZs, otherwise your capacity will scale up, and the load balancer won't be able to see them. \ No newline at end of file +If you add your scaling group to multiple AZs, make sure your ELB is configured to use all of those AZs, otherwise your capacity will scale up, and the load balancer won't be able to see them. diff --git a/src/data/best-practices/aws/content/disable-ssh-access.md b/src/data/best-practices/aws/content/disable-ssh-access.md index 21d916854..01843ae84 100644 --- a/src/data/best-practices/aws/content/disable-ssh-access.md +++ b/src/data/best-practices/aws/content/disable-ssh-access.md @@ -4,4 +4,4 @@ This sounds crazy, I know, but port 22 should be disallowed for everyone in your security group. If there's one thing you take away from this post, this should be it: **If you have to SSH into your servers, then your automation has failed**. Disabling it at the firewall level (rather than on the servers themselves) will help the transition to this frame of thinking, as it will highlight any areas you need to automate, while still letting you easily re-instate access to solve immediate issues. It's incredibly freeing to know that you never need to SSH into an instance. This is both the most frightening and yet most useful thing I've learned. -Disabling inbound SSH has just been a way for me to stop myself cheating with automation (Oh, I'll just SSH in and fix this one thing). I can still re-enable it in the security group if I need to actively debug something on an instance, since sometimes there really is no other way to debug certain issues. It also depends on your application; If your application relies on you being able to push things to a server via SSH, then disabling it might be a bad idea. Blocking inbound SSH worked for me, and forced me to get my automation into a decent state, but it might not be for everyone. \ No newline at end of file +Disabling inbound SSH has just been a way for me to stop myself cheating with automation (Oh, I'll just SSH in and fix this one thing). I can still re-enable it in the security group if I need to actively debug something on an instance, since sometimes there really is no other way to debug certain issues. It also depends on your application; If your application relies on you being able to push things to a server via SSH, then disabling it might be a bad idea. Blocking inbound SSH worked for me, and forced me to get my automation into a decent state, but it might not be for everyone. diff --git a/src/data/best-practices/aws/content/ec2-roles.md b/src/data/best-practices/aws/content/ec2-roles.md index 8f64fcd5b..d2c845ea6 100644 --- a/src/data/best-practices/aws/content/ec2-roles.md +++ b/src/data/best-practices/aws/content/ec2-roles.md @@ -2,4 +2,4 @@ > Use EC2 roles, do not give applications an IAM account. -If your application has AWS credentials baked into it, you're "doing it wrong". One of the reasons it's important to use the AWS SDK for your language is that you can really easily use EC2 IAM roles. The idea of a role is that you specify the permissions a certain role should get, then assign that role to an EC2 instance. Whenever you use the AWS SDK on that instance, you don't specify any credentials. Instead, the SDK will retrieve temporary credentials which have the permissions of the role you set up. This is all handled transparently as far as you're concerned. It's secure, and extremely useful. \ No newline at end of file +If your application has AWS credentials baked into it, you're "doing it wrong". One of the reasons it's important to use the AWS SDK for your language is that you can really easily use EC2 IAM roles. The idea of a role is that you specify the permissions a certain role should get, then assign that role to an EC2 instance. Whenever you use the AWS SDK on that instance, you don't specify any credentials. Instead, the SDK will retrieve temporary credentials which have the permissions of the role you set up. This is all handled transparently as far as you're concerned. It's secure, and extremely useful. diff --git a/src/data/best-practices/aws/content/failover-event-subscription.md b/src/data/best-practices/aws/content/failover-event-subscription.md index eebe771a2..8a3f31521 100644 --- a/src/data/best-practices/aws/content/failover-event-subscription.md +++ b/src/data/best-practices/aws/content/failover-event-subscription.md @@ -2,4 +2,4 @@ > Set up event subscriptions for failover. -If you're using a Multi-AZ setup, this is one of those things you might not think about which ends up being incredibly useful when you do need it. \ No newline at end of file +If you're using a Multi-AZ setup, this is one of those things you might not think about which ends up being incredibly useful when you do need it. diff --git a/src/data/best-practices/aws/content/group-permissions.md b/src/data/best-practices/aws/content/group-permissions.md index 57b69ad00..8091b1127 100644 --- a/src/data/best-practices/aws/content/group-permissions.md +++ b/src/data/best-practices/aws/content/group-permissions.md @@ -2,4 +2,4 @@ > Assign permissions to groups, not users. -Managing users can be a pain, if you're using Active Directory, or some other external authentication mechanism which you've integrated with IAM, then this probably won't matter as much (or maybe it matters more). But I've found it much easier to manage permissions by assigning them only to groups, rather than to individual users. It's much easier to rein in permissions and get an overall view of the system than going through each individual user to see what permissions have been assigned. \ No newline at end of file +Managing users can be a pain, if you're using Active Directory, or some other external authentication mechanism which you've integrated with IAM, then this probably won't matter as much (or maybe it matters more). But I've found it much easier to manage permissions by assigning them only to groups, rather than to individual users. It's much easier to rein in permissions and get an overall view of the system than going through each individual user to see what permissions have been assigned. diff --git a/src/data/best-practices/aws/content/index.md b/src/data/best-practices/aws/content/index.md index 4e768b56d..792d60054 100644 --- a/src/data/best-practices/aws/content/index.md +++ b/src/data/best-practices/aws/content/index.md @@ -1 +1 @@ -# \ No newline at end of file +# diff --git a/src/data/best-practices/aws/content/key-management-strategy.md b/src/data/best-practices/aws/content/key-management-strategy.md index d263fd1db..55cf570ee 100644 --- a/src/data/best-practices/aws/content/key-management-strategy.md +++ b/src/data/best-practices/aws/content/key-management-strategy.md @@ -2,4 +2,4 @@ > Decide on a key-management strategy from the start. -Are you going to have one key-pair per group of instances, or are you going to have one key-pair you use for your entire account? It's easy to modify your authorized-keys file with a bootstrap script of course, but you need to decide if you want to manage multiple key-pairs or not, as things will get complicated later on if you try to change your mind. \ No newline at end of file +Are you going to have one key-pair per group of instances, or are you going to have one key-pair you use for your entire account? It's easy to modify your authorized-keys file with a bootstrap script of course, but you need to decide if you want to manage multiple key-pairs or not, as things will get complicated later on if you try to change your mind. diff --git a/src/data/best-practices/aws/content/multi-factor-auth-iam.md b/src/data/best-practices/aws/content/multi-factor-auth-iam.md index 599b63873..f579120f9 100644 --- a/src/data/best-practices/aws/content/multi-factor-auth-iam.md +++ b/src/data/best-practices/aws/content/multi-factor-auth-iam.md @@ -2,4 +2,4 @@ > IAM users can have multi-factor authentication, use it! -Enable MFA for your IAM users to add an extra layer of security. Your master account should most definitely have this, but it's also worth enabling it for normal IAM users too. \ No newline at end of file +Enable MFA for your IAM users to add an extra layer of security. Your master account should most definitely have this, but it's also worth enabling it for normal IAM users too. diff --git a/src/data/best-practices/aws/content/pre-warm-elb.md b/src/data/best-practices/aws/content/pre-warm-elb.md index 53459b446..879eaa1b1 100644 --- a/src/data/best-practices/aws/content/pre-warm-elb.md +++ b/src/data/best-practices/aws/content/pre-warm-elb.md @@ -2,5 +2,4 @@ > Pre-warm your ELBs if you're expecting heavy traffic. - It takes time for your ELB to scale up capacity. If you know you're going to have a large traffic spike (selling tickets, big event, etc), you need to "warm up" your ELB in advance. You can inject a load of traffic, and it will cause ELB to scale up and not choke when you actually get the traffic, however AWS suggest you contact them instead to prewarm your load balancer. (Source: [Best Practices in Evaluating Elastic Load Balancing](https://aws.amazon.com/articles/best-practices-in-evaluating-elastic-load-balancing/#pre-warming)). Alternatively you can install your own load balancer software on an EC2 instance and use that instead (HAProxy, etc). diff --git a/src/data/best-practices/aws/content/redundant-across-azs.md b/src/data/best-practices/aws/content/redundant-across-azs.md index 98a20eaca..9096d0637 100644 --- a/src/data/best-practices/aws/content/redundant-across-azs.md +++ b/src/data/best-practices/aws/content/redundant-across-azs.md @@ -2,4 +2,4 @@ > Always be redundant across availability zones (AZs). -AZs can have outages, it's happened in the past that certain things in an AZ have gone down. Spreading your application into multiple AZs is as simple as adding a new AZ to your load balancer and starting an instance in that AZ. You should spread your load over two AZs at the very least! If you can afford it, being redundant across regions can also be well worth it, but this generally has a more complex set up cost and isn't always necessary. You can now copy AMIs between regions, and you can set up your Route53 records to balance traffic between regions, but you can't use a single ELB across regions. \ No newline at end of file +AZs can have outages, it's happened in the past that certain things in an AZ have gone down. Spreading your application into multiple AZs is as simple as adding a new AZ to your load balancer and starting an instance in that AZ. You should spread your load over two AZs at the very least! If you can afford it, being redundant across regions can also be well worth it, but this generally has a more complex set up cost and isn't always necessary. You can now copy AMIs between regions, and you can set up your Route53 records to balance traffic between regions, but you can't use a single ELB across regions. diff --git a/src/data/best-practices/aws/content/release-eips.md b/src/data/best-practices/aws/content/release-eips.md index 8ead2cdac..1c1e6f9c2 100644 --- a/src/data/best-practices/aws/content/release-eips.md +++ b/src/data/best-practices/aws/content/release-eips.md @@ -2,4 +2,4 @@ > Don't keep unassociated Elastic IPs. -You get charged for any Elastic IPs you have created but not associated with an instance, so make sure you don't keep them around once you're done with them. \ No newline at end of file +You get charged for any Elastic IPs you have created but not associated with an instance, so make sure you don't keep them around once you're done with them. diff --git a/src/data/best-practices/aws/content/reserved-instances.md b/src/data/best-practices/aws/content/reserved-instances.md index b6951ffe1..2606b8b7d 100644 --- a/src/data/best-practices/aws/content/reserved-instances.md +++ b/src/data/best-practices/aws/content/reserved-instances.md @@ -2,4 +2,4 @@ > Use reserved instances to save big $$$. -Reserving an instance is just putting some money upfront in order to get a lower hourly rate. It ends up being a lot cheaper than an on-demand instance would cost. So if you know you're going to be keeping an instance around for 1 or 3 years, it's well worth reserving them. Reserved instances are a purely logical concept in AWS, you don't assign a specific instance to be reserved, but rather just specify the type and size, and any instances that match the criteria will get the lower price. \ No newline at end of file +Reserving an instance is just putting some money upfront in order to get a lower hourly rate. It ends up being a lot cheaper than an on-demand instance would cost. So if you know you're going to be keeping an instance around for 1 or 3 years, it's well worth reserving them. Reserved instances are a purely logical concept in AWS, you don't assign a specific instance to be reserved, but rather just specify the type and size, and any instances that match the criteria will get the lower price. diff --git a/src/data/best-practices/aws/content/s3-hive-results.md b/src/data/best-practices/aws/content/s3-hive-results.md index 720a2566c..0e0ec61a4 100644 --- a/src/data/best-practices/aws/content/s3-hive-results.md +++ b/src/data/best-practices/aws/content/s3-hive-results.md @@ -2,4 +2,4 @@ > Specify a directory on S3 for Hive results. -If you use Hive to output results to S3, you must specify a directory in the bucket, not the root of the bucket, otherwise you'll get a rather unhelpful NullPointerException with no real explanation as to why. \ No newline at end of file +If you use Hive to output results to S3, you must specify a directory in the bucket, not the root of the bucket, otherwise you'll get a rather unhelpful NullPointerException with no real explanation as to why. diff --git a/src/data/best-practices/aws/content/scale-down-events.md b/src/data/best-practices/aws/content/scale-down-events.md index 91b0e1313..6d3cd56d2 100644 --- a/src/data/best-practices/aws/content/scale-down-events.md +++ b/src/data/best-practices/aws/content/scale-down-events.md @@ -2,4 +2,4 @@ > Scale down on INSUFFICIENT_DATA as well as ALARM. -For your scale-down action, make sure to trigger a scale-down event when there's no metric data, as well as when your trigger goes off. For example, if you have an app which usually has very low traffic, but experiences occasional spikes, you want to be sure that it scales down once the spike is over and the traffic stops. If there's no traffic, you'll get `INSUFFIFIENT_DATA` instead of `ALARM` for your low traffic threshold and it won't trigger a scale-down action. \ No newline at end of file +For your scale-down action, make sure to trigger a scale-down event when there's no metric data, as well as when your trigger goes off. For example, if you have an app which usually has very low traffic, but experiences occasional spikes, you want to be sure that it scales down once the spike is over and the traffic stops. If there's no traffic, you'll get `INSUFFIFIENT_DATA` instead of `ALARM` for your low traffic threshold and it won't trigger a scale-down action. diff --git a/src/data/best-practices/aws/content/scale-horizontally.md b/src/data/best-practices/aws/content/scale-horizontally.md index 1b1b51ff4..a9e4788c8 100644 --- a/src/data/best-practices/aws/content/scale-horizontally.md +++ b/src/data/best-practices/aws/content/scale-horizontally.md @@ -1,3 +1,3 @@ # Scale Horizontally -I've found that using lots of smaller machines is generally more reliable than using a smaller number of larger machines. You need to balance this though, as trying to run your application from 100 t1.micro instances probably isn't going to work very well. Breaking your application into lots of smaller instances means you'll be more resiliant to failure in one of the machines. If you're just running from two massive compute cluster machines, and one goes down, things are going to get bad. \ No newline at end of file +I've found that using lots of smaller machines is generally more reliable than using a smaller number of larger machines. You need to balance this though, as trying to run your application from 100 t1.micro instances probably isn't going to work very well. Breaking your application into lots of smaller instances means you'll be more resiliant to failure in one of the machines. If you're just running from two massive compute cluster machines, and one goes down, things are going to get bad. diff --git a/src/data/best-practices/aws/content/security-audit.md b/src/data/best-practices/aws/content/security-audit.md index b80572e25..4163ee0b2 100644 --- a/src/data/best-practices/aws/content/security-audit.md +++ b/src/data/best-practices/aws/content/security-audit.md @@ -3,5 +3,3 @@ > Set up automated security auditing. It's important to keep track of changes in your infrastructure's security settings. One way to do this is to first set up a security auditer role ([JSON template](https://gist.github.com/bigsnarfdude/d0758b4fd335085623be)), which will give anyone assigned that role read-only access to any security related settings on your account. You can then use this rather [fantastic Python script](https://gist.github.com/jlevy/cce1b44fc24f94599d0a4b3e613cc15d), which will go over all the items in your account and produce a canonical output showing your configuration. You set up a cronjob somewhere to run this script, and compare its output to the output from the previous run. Any differences will show you exactly what has been changed in your security configuration. It's useful to set this up and just have it email you the diff of any changes. (Source: Intrusion Detection in the Cloud - [Presentation](http://awsmedia.s3.amazonaws.com/SEC402.pdf)) - - diff --git a/src/data/best-practices/aws/content/tag-everything.md b/src/data/best-practices/aws/content/tag-everything.md index d5c4942d5..e26458857 100644 --- a/src/data/best-practices/aws/content/tag-everything.md +++ b/src/data/best-practices/aws/content/tag-everything.md @@ -1,3 +1,3 @@ # Tag Everything -Pretty much everything can be given tags, use them! They're great for organising things, make it easier to search and group things up. You can also use them to trigger certain behaviour on your instances, for example a tag of env=debug could put your application into debug mode when it deploys, etc. \ No newline at end of file +Pretty much everything can be given tags, use them! They're great for organising things, make it easier to search and group things up. You can also use them to trigger certain behaviour on your instances, for example a tag of env=debug could put your application into debug mode when it deploys, etc. diff --git a/src/data/best-practices/aws/content/terminate-ssl.md b/src/data/best-practices/aws/content/terminate-ssl.md index ee40773d6..7e38e4263 100644 --- a/src/data/best-practices/aws/content/terminate-ssl.md +++ b/src/data/best-practices/aws/content/terminate-ssl.md @@ -2,4 +2,4 @@ > Terminate SSL on the load balancer. -You'll need to add your SSL certificate information to the ELB, but this will take the overhead of SSL termination away from your servers which can speed things up. Additionally, if you upload your SSL certificate, you can pass through the HTTPS traffic and the load balancer will add some extra headers to your request (x-forwarded-for, etc), which are useful if you want to know who the end user is. If you just forward TCP, then those headers aren't added and you lose the information. \ No newline at end of file +You'll need to add your SSL certificate information to the ELB, but this will take the overhead of SSL termination away from your servers which can speed things up. Additionally, if you upload your SSL certificate, you can pass through the HTTPS traffic and the load balancer will add some extra headers to your request (x-forwarded-for, etc), which are useful if you want to know who the end user is. If you just forward TCP, then those headers aren't added and you lose the information. diff --git a/src/data/best-practices/aws/content/termination-protection.md b/src/data/best-practices/aws/content/termination-protection.md index c4331e6ab..8c1eea872 100644 --- a/src/data/best-practices/aws/content/termination-protection.md +++ b/src/data/best-practices/aws/content/termination-protection.md @@ -2,4 +2,4 @@ > Use termination protection for non-auto-scaling instances. -If you have any instances which are one-off things that aren't under auto-scaling, then you should probably enable termination protection, to stop anyone from accidentally deleting the instance. I've had it happen, it sucks, learn from my mistake! \ No newline at end of file +If you have any instances which are one-off things that aren't under auto-scaling, then you should probably enable termination protection, to stop anyone from accidentally deleting the instance. I've had it happen, it sucks, learn from my mistake! diff --git a/src/data/best-practices/aws/content/tools-for-logs.md b/src/data/best-practices/aws/content/tools-for-logs.md index 2219ec053..c979717c0 100644 --- a/src/data/best-practices/aws/content/tools-for-logs.md +++ b/src/data/best-practices/aws/content/tools-for-logs.md @@ -2,4 +2,4 @@ > Have tools to view application logs. -You should have an admin tool, syslog viewer, or something that allows you to view current real-time log info without needing to SSH into a running instance. If you have centralised logging (which you really should), then you just want to be sure you can read the logs there without needing to use SSH. Needing to SSH into a running application instance to view logs is going to become problematic. \ No newline at end of file +You should have an admin tool, syslog viewer, or something that allows you to view current real-time log info without needing to SSH into a running instance. If you have centralised logging (which you really should), then you just want to be sure you can read the logs there without needing to use SSH. Needing to SSH into a running application instance to view logs is going to become problematic. diff --git a/src/data/best-practices/aws/content/use-alias-records.md b/src/data/best-practices/aws/content/use-alias-records.md index 8dd5bb4ae..2fc151368 100644 --- a/src/data/best-practices/aws/content/use-alias-records.md +++ b/src/data/best-practices/aws/content/use-alias-records.md @@ -2,4 +2,4 @@ > Use ALIAS records. -An ALIAS record will link your record set to a particular AWS resource directly (i.e. you can map a domain to an S3 bucket), but the key is that you don't get charged for any ALIAS lookups. So whereas a CNAME entry would cost you money, an ALIAS record won't. Also, unlike a CNAME, you can use an ALIAS on your zone apex. You can read more about this on [the AWS page for creating alias resource record sets](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingAliasRRSets.html). \ No newline at end of file +An ALIAS record will link your record set to a particular AWS resource directly (i.e. you can map a domain to an S3 bucket), but the key is that you don't get charged for any ALIAS lookups. So whereas a CNAME entry would cost you money, an ALIAS record won't. Also, unlike a CNAME, you can use an ALIAS on your zone apex. You can read more about this on [the AWS page for creating alias resource record sets](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingAliasRRSets.html). diff --git a/src/data/best-practices/aws/content/use-iam-acount.md b/src/data/best-practices/aws/content/use-iam-acount.md index 5274407aa..2e7e4a97a 100644 --- a/src/data/best-practices/aws/content/use-iam-acount.md +++ b/src/data/best-practices/aws/content/use-iam-acount.md @@ -5,4 +5,3 @@ Usually you'll have an "operations account" for a service, and your entire ops team will have the password. With AWS, you definitely don't want to do that. Everyone gets an IAM user with just the permissions they need (least privilege). An IAM user can control everything in the infrastructure. At the time of writing, the only thing an IAM user can't access are some parts of the billing pages. If you want to protect your account even more, make sure to [enable multi-factor authentication](http://aws.amazon.com/iam/details/mfa/) for everyone (you can use Google Authenticator). I've heard of some users who give the MFA token to two people, and the password to two others, so to perform any action on the master account, two of the users need to agree. This is overkill for my case, but worth mentioning in case someone else wants to do it. - diff --git a/src/data/best-practices/aws/content/use-iam-roles.md b/src/data/best-practices/aws/content/use-iam-roles.md index 0c833cd92..3ee1aa93d 100644 --- a/src/data/best-practices/aws/content/use-iam-roles.md +++ b/src/data/best-practices/aws/content/use-iam-roles.md @@ -1,3 +1,3 @@ # Use IAM Roles -Don't create users for application, always use IAM roles if you can. They simplify everything, and keeps things secure. Having application users just creates a point of failure (what if someone accidentally deletes the API key?) and it becomes a pain to manage. \ No newline at end of file +Don't create users for application, always use IAM roles if you can. They simplify everything, and keeps things secure. Having application users just creates a point of failure (what if someone accidentally deletes the API key?) and it becomes a pain to manage. diff --git a/src/data/best-practices/frontend-performance/content/analyse-stylesheets-complexity.md b/src/data/best-practices/frontend-performance/content/analyse-stylesheets-complexity.md index 73da37bdc..e650d1a02 100644 --- a/src/data/best-practices/frontend-performance/content/analyse-stylesheets-complexity.md +++ b/src/data/best-practices/frontend-performance/content/analyse-stylesheets-complexity.md @@ -9,4 +9,4 @@ Your CSS should be organized, using a CSS preprocessor can help you with that. S - [TestMyCSS | Optimize and Check CSS Performance](http://www.testmycss.com/) - [CSS Stats](https://cssstats.com/) - [macbre/analyze-css: CSS selectors complexity and performance analyzer](https://github.com/macbre/analyze-css) -- [Project Wallace](https://www.projectwallace.com/) is like CSS Stats but stores stats over time so you can track your changes \ No newline at end of file +- [Project Wallace](https://www.projectwallace.com/) is like CSS Stats but stores stats over time so you can track your changes diff --git a/src/data/best-practices/frontend-performance/content/analyze-js-for-perf-issues.md b/src/data/best-practices/frontend-performance/content/analyze-js-for-perf-issues.md index 7e8dc583d..71d3831ad 100644 --- a/src/data/best-practices/frontend-performance/content/analyze-js-for-perf-issues.md +++ b/src/data/best-practices/frontend-performance/content/analyze-js-for-perf-issues.md @@ -10,4 +10,4 @@ Use the Timeline tool in the Chrome Developer Tool to evaluate scripts events an - [JavaScript Profiling With The Chrome Developer Tools](https://www.smashingmagazine.com/2012/06/javascript-profiling-chrome-developer-tools/) - [How to Record Heap Snapshots | Tools for Web Developers](https://developers.google.com/web/tools/chrome-devtools/memory-problems/heap-snapshots) - [Chapter 22 - Profiling the Frontend - Blackfire](https://blackfire.io/docs/book/22-frontend-profiling) -- [30 Tips To Improve Javascript Performance](http://www.monitis.com/blog/30-tips-to-improve-javascript-performance/) \ No newline at end of file +- [30 Tips To Improve Javascript Performance](http://www.monitis.com/blog/30-tips-to-improve-javascript-performance/) diff --git a/src/data/best-practices/frontend-performance/content/avoid-404-files.md b/src/data/best-practices/frontend-performance/content/avoid-404-files.md index d7288b901..cab0cd43d 100644 --- a/src/data/best-practices/frontend-performance/content/avoid-404-files.md +++ b/src/data/best-practices/frontend-performance/content/avoid-404-files.md @@ -4,4 +4,4 @@ 404 request can slow down the performance of your website and negatively impact the user experience. Additionally, they can also cause search engines to crawl and index non-existent pages, which can negatively impact your search engine rankings. To avoid 404 requests, ensure that all links on your website are valid and that any broken links are fixed promptly. -- [How to avoid Bad Requests?](https://varvy.com/pagespeed/avoid-bad-requests.html) \ No newline at end of file +- [How to avoid Bad Requests?](https://varvy.com/pagespeed/avoid-bad-requests.html) diff --git a/src/data/best-practices/frontend-performance/content/avoid-base64-images.md b/src/data/best-practices/frontend-performance/content/avoid-base64-images.md index 131f0c328..e3615a55b 100644 --- a/src/data/best-practices/frontend-performance/content/avoid-base64-images.md +++ b/src/data/best-practices/frontend-performance/content/avoid-base64-images.md @@ -17,4 +17,4 @@ Instead of using Base64 encoded images, it is generally recommended to use binar - [Base64 Encoding & Performance, Part 1 and 2 by Harry Roberts](https://csswizardry.com/2017/02/base64-encoding-and-performance/) - [A closer look at Base64 image performance – The Page Not Found Blog](http://www.andygup.net/a-closer-look-at-base64-image-performance/) - [When to base64 encode images (and when not to) | David Calhoun](https://www.davidbcalhoun.com/2011/when-to-base64-encode-images-and-when-not-to/) -- [Base64 encoding images for faster pages | Performance and seo factors](https://varvy.com/pagespeed/base64-images.html) \ No newline at end of file +- [Base64 encoding images for faster pages | Performance and seo factors](https://varvy.com/pagespeed/base64-images.html) diff --git a/src/data/best-practices/frontend-performance/content/avoid-inline-css.md b/src/data/best-practices/frontend-performance/content/avoid-inline-css.md index 1c771701e..04f70c4dc 100644 --- a/src/data/best-practices/frontend-performance/content/avoid-inline-css.md +++ b/src/data/best-practices/frontend-performance/content/avoid-inline-css.md @@ -6,4 +6,4 @@ One of the first reason it's because it's a good practice to separate content fr Always use external stylesheets or embed CSS in your `` (and follow the others CSS performance rules) -- [Observe CSS Best Practices: Avoid CSS Inline Styles](https://www.lifewire.com/avoid-inline-styles-for-css-3466846) \ No newline at end of file +- [Observe CSS Best Practices: Avoid CSS Inline Styles](https://www.lifewire.com/avoid-inline-styles-for-css-3466846) diff --git a/src/data/best-practices/frontend-performance/content/avoid-multiple-inline-js-snippets.md b/src/data/best-practices/frontend-performance/content/avoid-multiple-inline-js-snippets.md index f9af78b27..6cab70eb3 100644 --- a/src/data/best-practices/frontend-performance/content/avoid-multiple-inline-js-snippets.md +++ b/src/data/best-practices/frontend-performance/content/avoid-multiple-inline-js-snippets.md @@ -6,4 +6,4 @@ Placing JavaScript embedded code directly in your `` can slow down your pa Ensure that all your files are loaded using `async` or `defer` and decide wisely the code that you will need to inject in your ``. -- [11 Tips to Optimize JavaScript and Improve Website Loading Speeds](https://www.upwork.com/hiring/development/11-tips-to-optimize-javascript-and-improve-website-loading-speeds/) \ No newline at end of file +- [11 Tips to Optimize JavaScript and Improve Website Loading Speeds](https://www.upwork.com/hiring/development/11-tips-to-optimize-javascript-and-improve-website-loading-speeds/) diff --git a/src/data/best-practices/frontend-performance/content/check-dependency-size.md b/src/data/best-practices/frontend-performance/content/check-dependency-size.md index 935238f54..04048350f 100644 --- a/src/data/best-practices/frontend-performance/content/check-dependency-size.md +++ b/src/data/best-practices/frontend-performance/content/check-dependency-size.md @@ -9,4 +9,4 @@ Always compare and choose the best and lighter library for your needs. You can a - [ai/size-limit: Prevent JS libraries bloat](https://github.com/ai/size-limit) - [webpack-bundle-analyzer - npm](https://www.npmjs.com/package/webpack-bundle-analyzer) - [js-dependency-viewer - npm](https://www.npmjs.com/package/js-dependency-viewer) -- [Size Limit: Make the Web lighter](https://evilmartians.com/chronicles/size-limit-make-the-web-lighter) \ No newline at end of file +- [Size Limit: Make the Web lighter](https://evilmartians.com/chronicles/size-limit-make-the-web-lighter) diff --git a/src/data/best-practices/frontend-performance/content/choose-image-format-approprietly.md b/src/data/best-practices/frontend-performance/content/choose-image-format-approprietly.md index 28b7b4c68..c9a5e9c8e 100644 --- a/src/data/best-practices/frontend-performance/content/choose-image-format-approprietly.md +++ b/src/data/best-practices/frontend-performance/content/choose-image-format-approprietly.md @@ -9,4 +9,4 @@ Use [Lighthouse](https://developers.google.com/web/tools/lighthouse/) to identif - [Serve Images in Next-Gen Formats](https://developers.google.com/web/tools/lighthouse/audits/webp) - [What Is the Right Image Format for Your Website?](https://www.sitepoint.com/what-is-the-right-image-format-for-your-website/) - [PNG8 - The Clear Winner](https://www.sitepoint.com/png8-the-clear-winner/) -- [8-bit vs 16-bit - What Color Depth You Should Use And Why It Matters](https://www.diyphotography.net/8-bit-vs-16-bit-color-depth-use-matters/) \ No newline at end of file +- [8-bit vs 16-bit - What Color Depth You Should Use And Why It Matters](https://www.diyphotography.net/8-bit-vs-16-bit-color-depth-use-matters/) diff --git a/src/data/best-practices/frontend-performance/content/chrome-dev-tools.md b/src/data/best-practices/frontend-performance/content/chrome-dev-tools.md index 14cae7cd9..d8b13092e 100644 --- a/src/data/best-practices/frontend-performance/content/chrome-dev-tools.md +++ b/src/data/best-practices/frontend-performance/content/chrome-dev-tools.md @@ -12,4 +12,4 @@ Some of the benefits of using Chrome DevTools include: Chrome DevTools are a powerful and essential tool for web developers, as it helps to improve debugging, testing, and optimization of the web application. -- [Chrome DevTools Docs](https://developer.chrome.com/docs/devtools/) \ No newline at end of file +- [Chrome DevTools Docs](https://developer.chrome.com/docs/devtools/) diff --git a/src/data/best-practices/frontend-performance/content/compress-your-images.md b/src/data/best-practices/frontend-performance/content/compress-your-images.md index 13dab8236..4c16f94d5 100644 --- a/src/data/best-practices/frontend-performance/content/compress-your-images.md +++ b/src/data/best-practices/frontend-performance/content/compress-your-images.md @@ -16,4 +16,4 @@ Optimized images load faster in your browser and consume less data. - [Compressor.io](https://compressor.io/compress) - [Cloudinary - Image Analysis Tool](https://webspeedtest.cloudinary.com) - [ImageEngine - Image Webpage Loading Test](https://demo.imgeng.in) -- [SVGOMG - Optimize SVG vector graphics files](https://jakearchibald.github.io/svgomg/) \ No newline at end of file +- [SVGOMG - Optimize SVG vector graphics files](https://jakearchibald.github.io/svgomg/) diff --git a/src/data/best-practices/frontend-performance/content/concatenate-css-single-file.md b/src/data/best-practices/frontend-performance/content/concatenate-css-single-file.md index f9242736f..40a06542f 100644 --- a/src/data/best-practices/frontend-performance/content/concatenate-css-single-file.md +++ b/src/data/best-practices/frontend-performance/content/concatenate-css-single-file.md @@ -8,4 +8,4 @@ If you are still using HTTP/1, you may need to still concatenate your files, it' - Ensure, of course, that concatenation does not break your project - [HTTP: Optimizing Application Delivery - High Performance Browser Networking (O'Reilly)](https://hpbn.co/optimizing-application-delivery/#optimizing-for-http2) -- [Performance Best Practices in the HTTP/2 Era](https://deliciousbrains.com/performance-best-practices-http2/) \ No newline at end of file +- [Performance Best Practices in the HTTP/2 Era](https://deliciousbrains.com/performance-best-practices-http2/) diff --git a/src/data/best-practices/frontend-performance/content/cookie-size-less-4096-bytes.md b/src/data/best-practices/frontend-performance/content/cookie-size-less-4096-bytes.md index 74e4b1612..7fb272bd5 100644 --- a/src/data/best-practices/frontend-performance/content/cookie-size-less-4096-bytes.md +++ b/src/data/best-practices/frontend-performance/content/cookie-size-less-4096-bytes.md @@ -8,4 +8,4 @@ Cookies are exchanged in the HTTP headers between web servers and browsers. It's - [Cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies) - [Browser Cookie Limits](http://browsercookielimits.squawky.net/) - [Website Performance: Cookies Don't Taste So Good - Monitis Blog](http://www.monitis.com/blog/website-performance-cookies-dont-taste-so-good/) -- [Google's Web Performance Best Practices #3: Minimize Request Overhead - GlobalDots Blog](https://www.globaldots.com/googles-web-performance-best-practices-3-minimize-request-overhead/) \ No newline at end of file +- [Google's Web Performance Best Practices #3: Minimize Request Overhead - GlobalDots Blog](https://www.globaldots.com/googles-web-performance-best-practices-3-minimize-request-overhead/) diff --git a/src/data/best-practices/frontend-performance/content/enable-compression.md b/src/data/best-practices/frontend-performance/content/enable-compression.md index 09fe33751..657b81a7e 100644 --- a/src/data/best-practices/frontend-performance/content/enable-compression.md +++ b/src/data/best-practices/frontend-performance/content/enable-compression.md @@ -4,4 +4,4 @@ Use a compression method such as Gzip or Brotli to reduce the size of your JavaS - [Check GZIP compression](https://checkgzipcompression.com/) - [Check Brotli Compression](https://tools.keycdn.com/brotli-test) -- [Can I use... Brotli](https://caniuse.com/#feat=brotli) \ No newline at end of file +- [Can I use... Brotli](https://caniuse.com/#feat=brotli) diff --git a/src/data/best-practices/frontend-performance/content/framework-guides.md b/src/data/best-practices/frontend-performance/content/framework-guides.md index 07befb4aa..791738c25 100644 --- a/src/data/best-practices/frontend-performance/content/framework-guides.md +++ b/src/data/best-practices/frontend-performance/content/framework-guides.md @@ -15,4 +15,4 @@ These guides are intended to help you optimize your application for performance ## Vue -- [Vue - Useful Links|Style Guide and Performance](https://learn-vuejs.github.io/vue-patterns/useful-links/) \ No newline at end of file +- [Vue - Useful Links|Style Guide and Performance](https://learn-vuejs.github.io/vue-patterns/useful-links/) diff --git a/src/data/best-practices/frontend-performance/content/index.md b/src/data/best-practices/frontend-performance/content/index.md index 4e768b56d..792d60054 100644 --- a/src/data/best-practices/frontend-performance/content/index.md +++ b/src/data/best-practices/frontend-performance/content/index.md @@ -1 +1 @@ -# \ No newline at end of file +# diff --git a/src/data/best-practices/frontend-performance/content/inline-critical-css.md b/src/data/best-practices/frontend-performance/content/inline-critical-css.md index eacdcc7e0..a08da39a0 100644 --- a/src/data/best-practices/frontend-performance/content/inline-critical-css.md +++ b/src/data/best-practices/frontend-performance/content/inline-critical-css.md @@ -10,4 +10,4 @@ Generate the CSS critical with online tools or using a plugin like the one that - [Critical by Addy Osmani on GitHub](https://github.com/addyosmani/critical) automates this. - [Inlining critical CSS for better web performance | Go Make Things](https://gomakethings.com/inlining-critical-css-for-better-web-performance/) - [Critical Path CSS Generator - Prioritize above the fold content :: SiteLocity](https://www.sitelocity.com/critical-path-css-generator) -- [Reduce the size of the above-the-fold content](https://developers.google.com/speed/docs/insights/PrioritizeVisibleContent) \ No newline at end of file +- [Reduce the size of the above-the-fold content](https://developers.google.com/speed/docs/insights/PrioritizeVisibleContent) diff --git a/src/data/best-practices/frontend-performance/content/keep-cookie-count-below-20.md b/src/data/best-practices/frontend-performance/content/keep-cookie-count-below-20.md index 74e4b1612..7fb272bd5 100644 --- a/src/data/best-practices/frontend-performance/content/keep-cookie-count-below-20.md +++ b/src/data/best-practices/frontend-performance/content/keep-cookie-count-below-20.md @@ -8,4 +8,4 @@ Cookies are exchanged in the HTTP headers between web servers and browsers. It's - [Cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies) - [Browser Cookie Limits](http://browsercookielimits.squawky.net/) - [Website Performance: Cookies Don't Taste So Good - Monitis Blog](http://www.monitis.com/blog/website-performance-cookies-dont-taste-so-good/) -- [Google's Web Performance Best Practices #3: Minimize Request Overhead - GlobalDots Blog](https://www.globaldots.com/googles-web-performance-best-practices-3-minimize-request-overhead/) \ No newline at end of file +- [Google's Web Performance Best Practices #3: Minimize Request Overhead - GlobalDots Blog](https://www.globaldots.com/googles-web-performance-best-practices-3-minimize-request-overhead/) diff --git a/src/data/best-practices/frontend-performance/content/keep-dependencies-up-to-date.md b/src/data/best-practices/frontend-performance/content/keep-dependencies-up-to-date.md index 0a03b4201..ac64230ee 100644 --- a/src/data/best-practices/frontend-performance/content/keep-dependencies-up-to-date.md +++ b/src/data/best-practices/frontend-performance/content/keep-dependencies-up-to-date.md @@ -6,5 +6,4 @@ Most of the time, new versions come with optimization and security fix. You shou If your project use NPM packages, [npm-check](https://www.npmjs.com/package/npm-check) is a pretty interesting library to upgrade / update your libraries. [Greenkeeper](https://greenkeeper.io/) can automatically look for your dependencies and suggest an update every time a new version is out. - -- [Vanilla JavaScript for building powerful web applications](https://plainjs.com/) \ No newline at end of file +- [Vanilla JavaScript for building powerful web applications](https://plainjs.com/) diff --git a/src/data/best-practices/frontend-performance/content/keep-ttfb-less-1-3s.md b/src/data/best-practices/frontend-performance/content/keep-ttfb-less-1-3s.md index f3faaa627..d6cef058f 100644 --- a/src/data/best-practices/frontend-performance/content/keep-ttfb-less-1-3s.md +++ b/src/data/best-practices/frontend-performance/content/keep-ttfb-less-1-3s.md @@ -5,4 +5,4 @@ Reduce as much as you can the time your browser waits before receiving data. - [What is Waiting (TTFB) in DevTools, and what to do about it](https://scaleyourcode.com/blog/article/27) - [Monitoring your servers with free tools is easy](https://scaleyourcode.com/blog/article/7) - [Time to First Byte (TTFB)](https://varvy.com/pagespeed/ttfb.html) -- [Global latency testing tool](https://latency.apex.sh) \ No newline at end of file +- [Global latency testing tool](https://latency.apex.sh) diff --git a/src/data/best-practices/frontend-performance/content/keep-web-font-under-300k.md b/src/data/best-practices/frontend-performance/content/keep-web-font-under-300k.md index b6e0727df..5cf7dba39 100644 --- a/src/data/best-practices/frontend-performance/content/keep-web-font-under-300k.md +++ b/src/data/best-practices/frontend-performance/content/keep-web-font-under-300k.md @@ -4,4 +4,4 @@ Web fonts are a great way to add style to your website. However, they can also b Webfont sizes shouldn't exceed 300kb (all variants included) and are optimized for performance. -- [Font Bytes - Page Weight](https://httparchive.org/reports/page-weight#bytesFont) \ No newline at end of file +- [Font Bytes - Page Weight](https://httparchive.org/reports/page-weight#bytesFont) diff --git a/src/data/best-practices/frontend-performance/content/load-offscreen-images-lazily.md b/src/data/best-practices/frontend-performance/content/load-offscreen-images-lazily.md index 74a9756d9..b36afcf03 100644 --- a/src/data/best-practices/frontend-performance/content/load-offscreen-images-lazily.md +++ b/src/data/best-practices/frontend-performance/content/load-offscreen-images-lazily.md @@ -11,5 +11,5 @@ It will improve the response time of the current page and then avoid loading unn - [verlok/lazyload: GitHub](https://github.com/verlok/lazyload) - [aFarkas/lazysizes: GitHub](https://github.com/aFarkas/lazysizes/) - [mfranzke/loading-attribute-polyfill: GitHub](https://github.com/mfranzke/loading-attribute-polyfill/) -- [Lazy Loading Images and Video | Web Fundamentals | Google Developers](https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video/) +- [Lazy Loading Images and Video | Web Fundamentals | Google Developers](https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video/) - [5 Brilliant Ways to Lazy Load Images For Faster Page Loads - Dynamic Drive Blog](http://blog.dynamicdrive.com/5-brilliant-ways-to-lazy-load-images-for-faster-page-loads/) diff --git a/src/data/best-practices/frontend-performance/content/make-css-files-non-blocking.md b/src/data/best-practices/frontend-performance/content/make-css-files-non-blocking.md index 5369f9e47..b78ef546b 100644 --- a/src/data/best-practices/frontend-performance/content/make-css-files-non-blocking.md +++ b/src/data/best-practices/frontend-performance/content/make-css-files-non-blocking.md @@ -9,4 +9,4 @@ You need to add the `rel` attribute with the preload value and add `as="style"` - [loadCSS by filament group](https://github.com/filamentgroup/loadCSS) - [Example of preload CSS using loadCSS](https://gist.github.com/thedaviddias/c24763b82b9991e53928e66a0bafc9bf) - [Preloading content with rel="preload"](https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content) -- [Preload: What Is It Good For? — Smashing Magazine](https://www.smashingmagazine.com/2016/02/preload-what-is-it-good-for/) \ No newline at end of file +- [Preload: What Is It Good For? — Smashing Magazine](https://www.smashingmagazine.com/2016/02/preload-what-is-it-good-for/) diff --git a/src/data/best-practices/frontend-performance/content/minify-css.md b/src/data/best-practices/frontend-performance/content/minify-css.md index 785239334..8c2538a31 100644 --- a/src/data/best-practices/frontend-performance/content/minify-css.md +++ b/src/data/best-practices/frontend-performance/content/minify-css.md @@ -9,4 +9,4 @@ Use tools to minify your files automatically before or during your build or your - [cssnano: A modular minifier based on the PostCSS ecosystem. - cssnano](https://cssnano.co/) - [CSS Minfier](https://goonlinetools.com/css-minifier/) - [@neutrinojs/style-minify - npm](https://www.npmjs.com/package/@neutrinojs/style-minify) -- [Online CSS Compressor](http://refresh-sf.com) \ No newline at end of file +- [Online CSS Compressor](http://refresh-sf.com) diff --git a/src/data/best-practices/frontend-performance/content/minify-html.md b/src/data/best-practices/frontend-performance/content/minify-html.md index 19ce1d08c..b5066c89a 100644 --- a/src/data/best-practices/frontend-performance/content/minify-html.md +++ b/src/data/best-practices/frontend-performance/content/minify-html.md @@ -1,4 +1,5 @@ # Minify HTML + > The HTML code is minified, comments, white spaces and new lines are removed from production files. Removing all unnecessary spaces, comments and attributes will reduce the size of your HTML and speed up your site's page load times and obviously lighten the download for your user. @@ -7,4 +8,4 @@ Most of the frameworks have plugins to facilitate the minification of the webpag - [HTML minifier | Minify Code](http://minifycode.com/html-minifier/) - [Online HTML Compressor](http://refresh-sf.com) -- [Experimenting with HTML minifier — Perfection Kills](http://perfectionkills.com/experimenting-with-html-minifier/#use_short_doctype) \ No newline at end of file +- [Experimenting with HTML minifier — Perfection Kills](http://perfectionkills.com/experimenting-with-html-minifier/#use_short_doctype) diff --git a/src/data/best-practices/frontend-performance/content/minify-your-javascript.md b/src/data/best-practices/frontend-performance/content/minify-your-javascript.md index 4ba984119..e1c750946 100644 --- a/src/data/best-practices/frontend-performance/content/minify-your-javascript.md +++ b/src/data/best-practices/frontend-performance/content/minify-your-javascript.md @@ -9,4 +9,4 @@ Use the tools suggested below to minify your files automatically before or durin - [terser - JavaScript parser, mangler and compressor toolkit for ES6+](https://github.com/terser/terser) - [uglify-js - npm](https://www.npmjs.com/package/uglify-js) - [Online JavaScript Compressor](http://refresh-sf.com) -- [Short read: How is HTTP/2 different? Should we still minify and concatenate?](https://scaleyourcode.com/blog/article/28) \ No newline at end of file +- [Short read: How is HTTP/2 different? Should we still minify and concatenate?](https://scaleyourcode.com/blog/article/28) diff --git a/src/data/best-practices/frontend-performance/content/minimize-http-requests.md b/src/data/best-practices/frontend-performance/content/minimize-http-requests.md index de3aa7f35..51deaa5ba 100644 --- a/src/data/best-practices/frontend-performance/content/minimize-http-requests.md +++ b/src/data/best-practices/frontend-performance/content/minimize-http-requests.md @@ -3,4 +3,4 @@ > Always ensure that every file requested are essential for your website or application. - [Combine external CSS](https://varvy.com/pagespeed/combine-external-css.html) -- [Combine external JavaScript](https://varvy.com/pagespeed/combine-external-javascript.html) \ No newline at end of file +- [Combine external JavaScript](https://varvy.com/pagespeed/combine-external-javascript.html) diff --git a/src/data/best-practices/frontend-performance/content/minimize-iframe-count.md b/src/data/best-practices/frontend-performance/content/minimize-iframe-count.md index d1e726945..32125f548 100644 --- a/src/data/best-practices/frontend-performance/content/minimize-iframe-count.md +++ b/src/data/best-practices/frontend-performance/content/minimize-iframe-count.md @@ -1,3 +1,3 @@ # Avoid iframes -Use iframes only if you don't have any other technical possibility. Try to avoid iframes as much as you can. Iframes are not only bad for performance, but also for accessibility and usability. Iframes are also not indexed by search engines. \ No newline at end of file +Use iframes only if you don't have any other technical possibility. Try to avoid iframes as much as you can. Iframes are not only bad for performance, but also for accessibility and usability. Iframes are also not indexed by search engines. diff --git a/src/data/best-practices/frontend-performance/content/page-load-time-below-3s.md b/src/data/best-practices/frontend-performance/content/page-load-time-below-3s.md index 8f3de0c13..23959bef0 100644 --- a/src/data/best-practices/frontend-performance/content/page-load-time-below-3s.md +++ b/src/data/best-practices/frontend-performance/content/page-load-time-below-3s.md @@ -1,4 +1,5 @@ # Page Load Time + > Reduce as much as possible your page load times to quickly deliver your content to your users. Faster your website or app is, less you have probability of bounce increases, in other terms you have less chances to lose your user or future client. Enough researches on the subject prove that point. @@ -7,4 +8,4 @@ Use online tools like [Page Speed Insights](https://developers.google.com/speed/ - [Compare your mobile site speed](https://www.thinkwithgoogle.com/feature/mobile/) - [Test Your Mobile Website Speed and Performance - Think With Google](https://testmysite.thinkwithgoogle.com/intl/en-us) -- [Average Page Load Times for 2018 - How does yours compare? - MachMetrics Speed Blog](https://www.machmetrics.com/speed-blog/average-page-load-times-websites-2018/) \ No newline at end of file +- [Average Page Load Times for 2018 - How does yours compare? - MachMetrics Speed Blog](https://www.machmetrics.com/speed-blog/average-page-load-times-websites-2018/) diff --git a/src/data/best-practices/frontend-performance/content/page-speed-insights.md b/src/data/best-practices/frontend-performance/content/page-speed-insights.md index 5b3fbd219..9079c25af 100644 --- a/src/data/best-practices/frontend-performance/content/page-speed-insights.md +++ b/src/data/best-practices/frontend-performance/content/page-speed-insights.md @@ -1,5 +1,5 @@ # Page Speed Insights -Page Speed Insights is a free tool from Google that analyzes the performance of a web page and provides suggestions for improvements. +Page Speed Insights is a free tool from Google that analyzes the performance of a web page and provides suggestions for improvements. -- [Page Speed Insights](https://pagespeed.web.dev/) \ No newline at end of file +- [Page Speed Insights](https://pagespeed.web.dev/) diff --git a/src/data/best-practices/frontend-performance/content/page-weight-below-1500.md b/src/data/best-practices/frontend-performance/content/page-weight-below-1500.md index 5b17d15d4..36852101e 100644 --- a/src/data/best-practices/frontend-performance/content/page-weight-below-1500.md +++ b/src/data/best-practices/frontend-performance/content/page-weight-below-1500.md @@ -8,4 +8,4 @@ All the listed best practices in this list will help you to reduce as much as po - [Page Weight](https://httparchive.org/reports/page-weight#bytesTotal) - [What Does My Site Cost?](https://whatdoesmysitecost.com/) -- [web - Measure full page size in Chrome DevTools - Stack Overflow](https://stackoverflow.com/questions/38239980/measure-full-page-size-in-chrome-devtools) \ No newline at end of file +- [web - Measure full page size in Chrome DevTools - Stack Overflow](https://stackoverflow.com/questions/38239980/measure-full-page-size-in-chrome-devtools) diff --git a/src/data/best-practices/frontend-performance/content/pre-load-urls-where-possible.md b/src/data/best-practices/frontend-performance/content/pre-load-urls-where-possible.md index 621aa6e25..037255375 100644 --- a/src/data/best-practices/frontend-performance/content/pre-load-urls-where-possible.md +++ b/src/data/best-practices/frontend-performance/content/pre-load-urls-where-possible.md @@ -6,4 +6,4 @@ Prefetching allows a browser to silently fetch the necessary resources needed to - [What Is Prefetching and Why Use It](https://www.keycdn.com/support/prefetching) - [Prefetching, preloading, prebrowsing](https://css-tricks.com/prefetching-preloading-prebrowsing/) -- [What is Preload, Prefetch, and Preconnect](https://www.keycdn.com/blog/resource-hints) \ No newline at end of file +- [What is Preload, Prefetch, and Preconnect](https://www.keycdn.com/blog/resource-hints) diff --git a/src/data/best-practices/frontend-performance/content/prefer-vector-images.md b/src/data/best-practices/frontend-performance/content/prefer-vector-images.md index a0349e0c6..76ec6595f 100644 --- a/src/data/best-practices/frontend-performance/content/prefer-vector-images.md +++ b/src/data/best-practices/frontend-performance/content/prefer-vector-images.md @@ -2,4 +2,4 @@ > Prefer using vector image rather than bitmap images (when possible). -Vector images (SVG) tend to be smaller than images and SVG's are responsive and scale perfectly. These images can be animated and modified by CSS. \ No newline at end of file +Vector images (SVG) tend to be smaller than images and SVG's are responsive and scale perfectly. These images can be animated and modified by CSS. diff --git a/src/data/best-practices/frontend-performance/content/prevent-flash-text.md b/src/data/best-practices/frontend-performance/content/prevent-flash-text.md index a81aab89c..bec37d7b0 100644 --- a/src/data/best-practices/frontend-performance/content/prevent-flash-text.md +++ b/src/data/best-practices/frontend-performance/content/prevent-flash-text.md @@ -3,4 +3,4 @@ > Avoid transparent text until the Webfont is loaded - [`font-display` for the Masses](https://css-tricks.com/font-display-masses/) -- [CSS font-display: The Future of Font Rendering on the Web](https://www.sitepoint.com/css-font-display-future-font-rendering-web/) \ No newline at end of file +- [CSS font-display: The Future of Font Rendering on the Web](https://www.sitepoint.com/css-font-display-future-font-rendering-web/) diff --git a/src/data/best-practices/frontend-performance/content/recommended-guides.md b/src/data/best-practices/frontend-performance/content/recommended-guides.md index 702c278bb..62cbea482 100644 --- a/src/data/best-practices/frontend-performance/content/recommended-guides.md +++ b/src/data/best-practices/frontend-performance/content/recommended-guides.md @@ -2,89 +2,89 @@ > Optimize the critical rendering path: -* [Critical CSS? Not So Fast!](https://csswizardry.com/2022/09/critical-css-not-so-fast/) -* [Priority Hints - What Your Browser Doesn’t Know (Yet)](https://www.etsy.com/codeascraft/priority-hints-what-your-browser-doesnt-know-yet) -* [Optimizing resource loading with Priority Hints](https://web.dev/priority-hints/) -* [Chrome Resource Priorities and Scheduling](https://docs.google.com/document/d/1bCDuq9H1ih9iNjgzyAL0gpwNFiEP4TZS-YLRp_RuMlc/edit?usp=sharing) -* [How To Optimize CSS for Peak Site Performance](https://kinsta.com/blog/optimize-css/) -* [Eliminate render blocking CSS to improve start render time](https://www.jeffreyknox.dev/blog/eliminate-render-blocking-css-to-improve-start-render-time/) -* [Small Bundles, Fast Pages: What To Do With Too Much JavaScript](https://calibreapp.com/blog/bundle-size-optimization) -* [How to Eliminate Render-Blocking Resources: a Deep Dive](https://sia.codes/posts/render-blocking-resources/) -* [The Critical Request: How to Prioritise Requests to Improve Speed](https://calibreapp.com/blog/critical-request) -* [How to Improve CSS Performance](https://calibreapp.com/blog/css-performance) -* [The Simplest Way to Load CSS Asynchronously](https://www.filamentgroup.com/lab/load-css-simpler/) -* [CSS audit](https://css-tricks.com/a-quick-css-audit-and-general-notes-about-design-systems/) -* [Measuring the Critical Rendering Path](https://developers.google.com/web/fundamentals/performance/critical-rendering-path/measure-crp) -* [Inlining or Caching? Both Please!](https://www.filamentgroup.com/lab/inlining-cache.html) -* [CSS and Network Performance](https://csswizardry.com/2018/11/css-and-network-performance/) -* [Analyzing Critical Rendering Path Performance](https://developers.google.com/web/fundamentals/performance/critical-rendering-path/analyzing-crp) -* [Front-End Performance Checklist](https://github.com/thedaviddias/Front-End-Performance-Checklist) -* [The PRPL Pattern](https://developers.google.com/web/fundamentals/performance/prpl-pattern/) -* [Now You See Me: How To Defer, Lazy-Load And Act With IntersectionObserver](https://www.smashingmagazine.com/2018/01/deferring-lazy-loading-intersection-observer-api/) -* [Optimising the front end for the browser](https://hackernoon.com/optimising-the-front-end-for-the-browser-f2f51a29c572) -* [Prefer DEFER Over ASYNC](https://calendar.perfplanet.com/2016/prefer-defer-over-async/) -* [A comprehensive guide to font loading strategies](https://www.zachleat.com/web/comprehensive-webfonts/) -* [Understanding the critical rendering path, rendering pages in 1 second](https://medium.com/@luisvieira_gmr/understanding-the-critical-rendering-path-rendering-pages-in-1-second-735c6e45b47a) -* [More Weight Doesn’t Mean More Wait](https://www.filamentgroup.com/lab/weight-wait.html) +- [Critical CSS? Not So Fast!](https://csswizardry.com/2022/09/critical-css-not-so-fast/) +- [Priority Hints - What Your Browser Doesn’t Know (Yet)](https://www.etsy.com/codeascraft/priority-hints-what-your-browser-doesnt-know-yet) +- [Optimizing resource loading with Priority Hints](https://web.dev/priority-hints/) +- [Chrome Resource Priorities and Scheduling](https://docs.google.com/document/d/1bCDuq9H1ih9iNjgzyAL0gpwNFiEP4TZS-YLRp_RuMlc/edit?usp=sharing) +- [How To Optimize CSS for Peak Site Performance](https://kinsta.com/blog/optimize-css/) +- [Eliminate render blocking CSS to improve start render time](https://www.jeffreyknox.dev/blog/eliminate-render-blocking-css-to-improve-start-render-time/) +- [Small Bundles, Fast Pages: What To Do With Too Much JavaScript](https://calibreapp.com/blog/bundle-size-optimization) +- [How to Eliminate Render-Blocking Resources: a Deep Dive](https://sia.codes/posts/render-blocking-resources/) +- [The Critical Request: How to Prioritise Requests to Improve Speed](https://calibreapp.com/blog/critical-request) +- [How to Improve CSS Performance](https://calibreapp.com/blog/css-performance) +- [The Simplest Way to Load CSS Asynchronously](https://www.filamentgroup.com/lab/load-css-simpler/) +- [CSS audit](https://css-tricks.com/a-quick-css-audit-and-general-notes-about-design-systems/) +- [Measuring the Critical Rendering Path](https://developers.google.com/web/fundamentals/performance/critical-rendering-path/measure-crp) +- [Inlining or Caching? Both Please!](https://www.filamentgroup.com/lab/inlining-cache.html) +- [CSS and Network Performance](https://csswizardry.com/2018/11/css-and-network-performance/) +- [Analyzing Critical Rendering Path Performance](https://developers.google.com/web/fundamentals/performance/critical-rendering-path/analyzing-crp) +- [Front-End Performance Checklist](https://github.com/thedaviddias/Front-End-Performance-Checklist) +- [The PRPL Pattern](https://developers.google.com/web/fundamentals/performance/prpl-pattern/) +- [Now You See Me: How To Defer, Lazy-Load And Act With IntersectionObserver](https://www.smashingmagazine.com/2018/01/deferring-lazy-loading-intersection-observer-api/) +- [Optimising the front end for the browser](https://hackernoon.com/optimising-the-front-end-for-the-browser-f2f51a29c572) +- [Prefer DEFER Over ASYNC](https://calendar.perfplanet.com/2016/prefer-defer-over-async/) +- [A comprehensive guide to font loading strategies](https://www.zachleat.com/web/comprehensive-webfonts/) +- [Understanding the critical rendering path, rendering pages in 1 second](https://medium.com/@luisvieira_gmr/understanding-the-critical-rendering-path-rendering-pages-in-1-second-735c6e45b47a) +- [More Weight Doesn’t Mean More Wait](https://www.filamentgroup.com/lab/weight-wait.html) > JavaScript Rendering Performance -* [Five Data-Loading Patterns To Boost Web Performance](https://www.smashingmagazine.com/2022/09/data-loading-patterns-improve-frontend-performance/) -* [Optimize long tasks](https://web.dev/optimize-long-tasks/) -* [The impact of removing jQuery on our web performance](https://insidegovuk.blog.gov.uk/2022/08/15/the-impact-of-removing-jquery-on-our-web-performance/) -* [Profiling & Optimizing the runtime performance with the DevTools Performance tab](iamtk.co/profiling-and-optimizing-the-runtime-performance-with-the-devtools-performance-tab) -* [Don't fight the browser preload scanner](https://web.dev/preload-scanner/) -* [The Web Performance impact of jQuery](https://twitter.com/TheRealNooshu/status/1509487050122276864) -* [Have Single-Page Apps Ruined the Web? | Transitional Apps](https://www.youtube.com/watch?v=860d8usGC0o) -* [Improve how you architect webapps](https://www.patterns.dev/) -* [Nuxt SSR Optimizing Tips](https://vueschool.io/articles/vuejs-tutorials/nuxt-ssr-optimizing-tips/, Filip Rakowski -* [GPU accelerated JavaScript](https://gpu.rocks/#/) -* [Introducing Partytown 🎉: Run Third-Party Scripts From a Web Worker](https://dev.to/adamdbradley/introducing-partytown-run-third-party-scripts-from-a-web-worker-2cnp) -* [Astro: Astro is a fresh but familiar approach to building websites. Astro combines decades of proven performance best practices with the DX improvements of the component-oriented era. Use your favorite JavaScript framework and automatically ship the bare-minimum amount of JavaScript—by default.](https://docs.astro.build/getting-started/) -* [Minimising Layout and Layout thrashing for 60 FPS](https://www.charistheo.io/blog/2021/09/dom-reflow-and-layout-thrashing/) -* [Does shadow DOM improve style performance?](https://nolanlawson.com/2021/08/15/does-shadow-dom-improve-style-performance/) -* [Debugging memory leaks - HTTP 203](https://www.youtube.com/watch?v=YDU_3WdfkxA) -* [Explore JavaScript Dependencies With Lighthouse Treemap](https://sia.codes/posts/lighthouse-treemap/) -* [The real cost of Javascript dependencies (and the state of JS package quality)](https://medium.com/voodoo-engineering/the-real-cost-of-javascript-dependencies-and-the-state-of-js-package-quality-a8dacd74c0ec) -* [The State Of Web Workers In 2021](https://www.smashingmagazine.com/2021/06/web-workers-2021/) -* [Techniques for developing high-performance animations](https://web.dev/animations/) -* [Building a Faster Web Experience with the postTask Scheduler](https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91), Callie (Airbnb Engineering & Data Science) -* [Don’t attach tooltips to document.body – Learn how the browser works – Debug forced reflow](https://atfzl.com/don-t-attach-tooltips-to-document-body) -* [How to Create and Fix Memory Leaks With Chrome DevTools](https://betterprogramming.pub/build-me-an-angular-app-with-memory-leaks-please-36302184e658) -* [JavaScript performance beyond bundle size](https://nolanlawson.com/2021/02/23/javascript-performance-beyond-bundle-size/) -* [The Import On Interaction Pattern](https://addyosmani.com/blog/import-on-interaction/) -* [The “Live DOM” Is Not “Slow”, “Bad”, Or “Wrong”. Web Developers Are.](https://levelup.gitconnected.com/the-live-dom-is-not-slow-bad-or-wrong-web-developers-are-2bf86c3b9e2e) -* [Prevent layout shifts with CSS grid stacks](https://www.hsablonniere.com/prevent-layout-shifts-with-css-grid-stacks--qcj5jo/) -* [content-visibility: the new CSS property that boosts your rendering performance](https://web.dev/content-visibility/) -* [Preact vs React - Updating React at Etsy](https://github.com/mq2thez/blog/blob/main/upgrade-react-etsy/preact-vs-react.md) -* [The Cost of Javascript Frameworks](https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/) -* [Fixing memory leaks in web applications](https://nolanlawson.com/2020/02/19/fixing-memory-leaks-in-web-applications/) -* [How to load polyfills only when needed](https://3perf.com/blog/polyfills/) -* [Responsible JavaScript: Part III - Third parties](https://alistapart.com/article/responsible-javascript-part-3/) -* [The cost of JavaScript in 2019](https://v8.dev/blog/cost-of-javascript-2019) -* [When should you be using Web Workers?](https://dassur.ma/things/when-workers/) -* [Responsible Javascript: Part II - Code Bundle](https://alistapart.com/article/responsible-javascript-part-2/) -* [Faster script loading with BinaryAST?](https://blog.cloudflare.com/binary-ast/) -* [Svelte 3: Rethinking reactivity](https://svelte.dev/blog/svelte-3-rethinking-reactivity) -* [Responsible Javascript: Part I - Web platform over frameworks](https://alistapart.com/article/responsible-javascript-part-1/) -* [JavaScript Loading Priorities in Chrome](https://addyosmani.com/blog/script-priorities/) -* [Idle Until Urgent](https://philipwalton.com/articles/idle-until-urgent/) -* [Browser painting and considerations for web performance](https://css-tricks.com/browser-painting-and-considerations-for-web-performance/) -* [The Cost Of JavaScript In 2018](https://medium.com/@addyosmani/the-cost-of-javascript-in-2018-7d8950fbb5d4) ([Video](https://www.youtube.com/watch?v=i5R7giitymk)) -* [Examining Web Worker Performance](https://www.loxodrome.io/post/web-worker-performance/) -* [Front-End Performance Checklist](https://github.com/thedaviddias/Front-End-Performance-Checklist) -* [jankfree](http://jankfree.org/) -* [What forces layout/reflow?](https://gist.github.com/paulirish/5d52fb081b3570c81e3a) -* [Using requestIdleCallback](https://developers.google.com/web/updates/2015/08/using-requestidlecallback) -* [Optimize Javascript Execution](https://developers.google.com/web/fundamentals/performance/rendering/optimize-javascript-execution) -* [Why Web Developers Need to Care about Interactivity](https://philipwalton.com/articles/why-web-developers-need-to-care-about-interactivity/) -* [Improving Performance with the Paint Timing API](https://www.sitepen.com/blog/2017/10/06/improving-performance-with-the-paint-timing-api) -* [Deploying ES2015+ Code in Production Today](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/) -* [Performant Web Animations and Interactions: Achieving 60 FPS](https://blog.algolia.com/performant-web-animations/) -* [JavaScript Start-up Performance](https://medium.com/reloading/javascript-start-up-performance-69200f43b201) -* [Performant Parallaxing](https://developers.google.com/web/updates/2016/12/performant-parallaxing) -* [The Anatomy of a Frame](https://aerotwist.com/blog/the-anatomy-of-a-frame/) -* [The future of loading CSS](https://jakearchibald.com/2016/link-in-body/) -* [4 Types of Memory Leaks in JavaScript and How to Get Rid Of Them](https://auth0.com/blog/four-types-of-leaks-in-your-javascript-code-and-how-to-get-rid-of-them/) -* [The cost of frameworks](https://aerotwist.com/blog/the-cost-of-frameworks/) -* [FLIP Your Animations](https://aerotwist.com/blog/flip-your-animations/) +- [Five Data-Loading Patterns To Boost Web Performance](https://www.smashingmagazine.com/2022/09/data-loading-patterns-improve-frontend-performance/) +- [Optimize long tasks](https://web.dev/optimize-long-tasks/) +- [The impact of removing jQuery on our web performance](https://insidegovuk.blog.gov.uk/2022/08/15/the-impact-of-removing-jquery-on-our-web-performance/) +- [Profiling & Optimizing the runtime performance with the DevTools Performance tab](iamtk.co/profiling-and-optimizing-the-runtime-performance-with-the-devtools-performance-tab) +- [Don't fight the browser preload scanner](https://web.dev/preload-scanner/) +- [The Web Performance impact of jQuery](https://twitter.com/TheRealNooshu/status/1509487050122276864) +- [Have Single-Page Apps Ruined the Web? | Transitional Apps](https://www.youtube.com/watch?v=860d8usGC0o) +- [Improve how you architect webapps](https://www.patterns.dev/) +- [Nuxt SSR Optimizing Tips](https://vueschool.io/articles/vuejs-tutorials/nuxt-ssr-optimizing-tips/, Filip Rakowski +- [GPU accelerated JavaScript](https://gpu.rocks/#/) +- [Introducing Partytown 🎉: Run Third-Party Scripts From a Web Worker](https://dev.to/adamdbradley/introducing-partytown-run-third-party-scripts-from-a-web-worker-2cnp) +- [Astro: Astro is a fresh but familiar approach to building websites. Astro combines decades of proven performance best practices with the DX improvements of the component-oriented era. Use your favorite JavaScript framework and automatically ship the bare-minimum amount of JavaScript—by default.](https://docs.astro.build/getting-started/) +- [Minimising Layout and Layout thrashing for 60 FPS](https://www.charistheo.io/blog/2021/09/dom-reflow-and-layout-thrashing/) +- [Does shadow DOM improve style performance?](https://nolanlawson.com/2021/08/15/does-shadow-dom-improve-style-performance/) +- [Debugging memory leaks - HTTP 203](https://www.youtube.com/watch?v=YDU_3WdfkxA) +- [Explore JavaScript Dependencies With Lighthouse Treemap](https://sia.codes/posts/lighthouse-treemap/) +- [The real cost of Javascript dependencies (and the state of JS package quality)](https://medium.com/voodoo-engineering/the-real-cost-of-javascript-dependencies-and-the-state-of-js-package-quality-a8dacd74c0ec) +- [The State Of Web Workers In 2021](https://www.smashingmagazine.com/2021/06/web-workers-2021/) +- [Techniques for developing high-performance animations](https://web.dev/animations/) +- [Building a Faster Web Experience with the postTask Scheduler](https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91), Callie (Airbnb Engineering & Data Science) +- [Don’t attach tooltips to document.body – Learn how the browser works – Debug forced reflow](https://atfzl.com/don-t-attach-tooltips-to-document-body) +- [How to Create and Fix Memory Leaks With Chrome DevTools](https://betterprogramming.pub/build-me-an-angular-app-with-memory-leaks-please-36302184e658) +- [JavaScript performance beyond bundle size](https://nolanlawson.com/2021/02/23/javascript-performance-beyond-bundle-size/) +- [The Import On Interaction Pattern](https://addyosmani.com/blog/import-on-interaction/) +- [The “Live DOM” Is Not “Slow”, “Bad”, Or “Wrong”. Web Developers Are.](https://levelup.gitconnected.com/the-live-dom-is-not-slow-bad-or-wrong-web-developers-are-2bf86c3b9e2e) +- [Prevent layout shifts with CSS grid stacks](https://www.hsablonniere.com/prevent-layout-shifts-with-css-grid-stacks--qcj5jo/) +- [content-visibility: the new CSS property that boosts your rendering performance](https://web.dev/content-visibility/) +- [Preact vs React - Updating React at Etsy](https://github.com/mq2thez/blog/blob/main/upgrade-react-etsy/preact-vs-react.md) +- [The Cost of Javascript Frameworks](https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/) +- [Fixing memory leaks in web applications](https://nolanlawson.com/2020/02/19/fixing-memory-leaks-in-web-applications/) +- [How to load polyfills only when needed](https://3perf.com/blog/polyfills/) +- [Responsible JavaScript: Part III - Third parties](https://alistapart.com/article/responsible-javascript-part-3/) +- [The cost of JavaScript in 2019](https://v8.dev/blog/cost-of-javascript-2019) +- [When should you be using Web Workers?](https://dassur.ma/things/when-workers/) +- [Responsible Javascript: Part II - Code Bundle](https://alistapart.com/article/responsible-javascript-part-2/) +- [Faster script loading with BinaryAST?](https://blog.cloudflare.com/binary-ast/) +- [Svelte 3: Rethinking reactivity](https://svelte.dev/blog/svelte-3-rethinking-reactivity) +- [Responsible Javascript: Part I - Web platform over frameworks](https://alistapart.com/article/responsible-javascript-part-1/) +- [JavaScript Loading Priorities in Chrome](https://addyosmani.com/blog/script-priorities/) +- [Idle Until Urgent](https://philipwalton.com/articles/idle-until-urgent/) +- [Browser painting and considerations for web performance](https://css-tricks.com/browser-painting-and-considerations-for-web-performance/) +- [The Cost Of JavaScript In 2018](https://medium.com/@addyosmani/the-cost-of-javascript-in-2018-7d8950fbb5d4) ([Video](https://www.youtube.com/watch?v=i5R7giitymk)) +- [Examining Web Worker Performance](https://www.loxodrome.io/post/web-worker-performance/) +- [Front-End Performance Checklist](https://github.com/thedaviddias/Front-End-Performance-Checklist) +- [jankfree](http://jankfree.org/) +- [What forces layout/reflow?](https://gist.github.com/paulirish/5d52fb081b3570c81e3a) +- [Using requestIdleCallback](https://developers.google.com/web/updates/2015/08/using-requestidlecallback) +- [Optimize Javascript Execution](https://developers.google.com/web/fundamentals/performance/rendering/optimize-javascript-execution) +- [Why Web Developers Need to Care about Interactivity](https://philipwalton.com/articles/why-web-developers-need-to-care-about-interactivity/) +- [Improving Performance with the Paint Timing API](https://www.sitepen.com/blog/2017/10/06/improving-performance-with-the-paint-timing-api) +- [Deploying ES2015+ Code in Production Today](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/) +- [Performant Web Animations and Interactions: Achieving 60 FPS](https://blog.algolia.com/performant-web-animations/) +- [JavaScript Start-up Performance](https://medium.com/reloading/javascript-start-up-performance-69200f43b201) +- [Performant Parallaxing](https://developers.google.com/web/updates/2016/12/performant-parallaxing) +- [The Anatomy of a Frame](https://aerotwist.com/blog/the-anatomy-of-a-frame/) +- [The future of loading CSS](https://jakearchibald.com/2016/link-in-body/) +- [4 Types of Memory Leaks in JavaScript and How to Get Rid Of Them](https://auth0.com/blog/four-types-of-leaks-in-your-javascript-code-and-how-to-get-rid-of-them/) +- [The cost of frameworks](https://aerotwist.com/blog/the-cost-of-frameworks/) +- [FLIP Your Animations](https://aerotwist.com/blog/flip-your-animations/) diff --git a/src/data/best-practices/frontend-performance/content/remove-unused-css.md b/src/data/best-practices/frontend-performance/content/remove-unused-css.md index 51e88d3da..f08677a69 100644 --- a/src/data/best-practices/frontend-performance/content/remove-unused-css.md +++ b/src/data/best-practices/frontend-performance/content/remove-unused-css.md @@ -7,4 +7,4 @@ Always check if the framework CSS you want to use don't already has a reset / no - [UnCSS Online](https://uncss-online.com/) - [PurifyCSS](https://github.com/purifycss/purifycss) - [PurgeCSS](https://github.com/FullHuman/purgecss) -- [Chrome DevTools Coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) \ No newline at end of file +- [Chrome DevTools Coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) diff --git a/src/data/best-practices/frontend-performance/content/serve-exact-size-images.md b/src/data/best-practices/frontend-performance/content/serve-exact-size-images.md index 3c4d38f80..88e17e12e 100644 --- a/src/data/best-practices/frontend-performance/content/serve-exact-size-images.md +++ b/src/data/best-practices/frontend-performance/content/serve-exact-size-images.md @@ -7,4 +7,4 @@ Small devices don't need images bigger than their viewport. It's recommended to - Create different image sizes for the devices you want to target - Use `srcset` and `picture` to deliver multiple variants of each image. -- [Responsive images - Learn web development | MDN](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) \ No newline at end of file +- [Responsive images - Learn web development | MDN](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) diff --git a/src/data/best-practices/frontend-performance/content/set-width-height-images.md b/src/data/best-practices/frontend-performance/content/set-width-height-images.md index 665f81445..2c5aded25 100644 --- a/src/data/best-practices/frontend-performance/content/set-width-height-images.md +++ b/src/data/best-practices/frontend-performance/content/set-width-height-images.md @@ -2,4 +2,4 @@ > Set width and height attributes on `` if the final rendered image size is known. -If height and width are set, the space required for the image is reserved when the page is loaded. However, without these attributes, the browser does not know the size of the image, and cannot reserve the appropriate space to it. The effect will be that the page layout will change during loading (while the images load). \ No newline at end of file +If height and width are set, the space required for the image is reserved when the page is loaded. However, without these attributes, the browser does not know the size of the image, and cannot reserve the appropriate space to it. The effect will be that the page layout will change during loading (while the images load). diff --git a/src/data/best-practices/frontend-performance/content/squoosh-ap.md b/src/data/best-practices/frontend-performance/content/squoosh-ap.md index 090f2eadc..312c059fc 100644 --- a/src/data/best-practices/frontend-performance/content/squoosh-ap.md +++ b/src/data/best-practices/frontend-performance/content/squoosh-ap.md @@ -2,4 +2,4 @@ Squoosh.app is a web app that allows you to compress images using a variety of codecs. It is built by Google Chrome team and is open source. -- [Squoosh.app](https://squoosh.app/) \ No newline at end of file +- [Squoosh.app](https://squoosh.app/) diff --git a/src/data/best-practices/frontend-performance/content/use-cdn.md b/src/data/best-practices/frontend-performance/content/use-cdn.md index 1964eeda9..8442885ea 100644 --- a/src/data/best-practices/frontend-performance/content/use-cdn.md +++ b/src/data/best-practices/frontend-performance/content/use-cdn.md @@ -2,5 +2,5 @@ Use a CDN to serve your static assets. This will reduce the load on your server and improve the performance of your site. - - [10 Tips to Optimize CDN Performance - CDN Planet](https://www.cdnplanet.com/blog/10-tips-optimize-cdn-performance/) - - [HTTP Caching | Web Fundamentals | Google Developers](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching) \ No newline at end of file +- [10 Tips to Optimize CDN Performance - CDN Planet](https://www.cdnplanet.com/blog/10-tips-optimize-cdn-performance/) +- [HTTP Caching | Web Fundamentals | Google Developers](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching) diff --git a/src/data/best-practices/frontend-performance/content/use-http-cache-headers.md b/src/data/best-practices/frontend-performance/content/use-http-cache-headers.md index 8de08e409..5f494b397 100644 --- a/src/data/best-practices/frontend-performance/content/use-http-cache-headers.md +++ b/src/data/best-practices/frontend-performance/content/use-http-cache-headers.md @@ -2,4 +2,4 @@ Set HTTP headers to avoid expensive number of roundtrips between your browser and the server. -- [Using cache-control for browser caching](https://varvy.com/pagespeed/cache-control.html) \ No newline at end of file +- [Using cache-control for browser caching](https://varvy.com/pagespeed/cache-control.html) diff --git a/src/data/best-practices/frontend-performance/content/use-https-on-your-website.md b/src/data/best-practices/frontend-performance/content/use-https-on-your-website.md index 83b935a29..8ebdc58e2 100644 --- a/src/data/best-practices/frontend-performance/content/use-https-on-your-website.md +++ b/src/data/best-practices/frontend-performance/content/use-https-on-your-website.md @@ -6,4 +6,4 @@ HTTPS is not only for ecommerce websites, but for all websites that are exchangi - [Enabling HTTPS Without Sacrificing Your Web Performance - Moz](https://moz.com/blog/enabling-https-without-sacrificing-web-performance) - [How HTTPS Affects Website Performance](https://wp-rocket.me/blog/https-affects-website-performance/) - [HTTP versus HTTPS versus HTTP2 - The real story | Tune The Web](https://www.tunetheweb.com/blog/http-versus-https-versus-http2/) -- [HTTP vs HTTPS — Test them both yourself](https://www.httpvshttps.com/) \ No newline at end of file +- [HTTP vs HTTPS — Test them both yourself](https://www.httpvshttps.com/) diff --git a/src/data/best-practices/frontend-performance/content/use-non-blocking-javascript.md b/src/data/best-practices/frontend-performance/content/use-non-blocking-javascript.md index a24df202f..1b64a5883 100644 --- a/src/data/best-practices/frontend-performance/content/use-non-blocking-javascript.md +++ b/src/data/best-practices/frontend-performance/content/use-non-blocking-javascript.md @@ -15,6 +15,5 @@ JavaScript blocks the normal parsing of the HTML document, so when the parser re - Add `async` (if the script don't rely on other scripts) or `defer` (if the script relies upon or relied upon by an async script) as an attribute to your script tag. - If you have small scripts, maybe use inline script place above async scripts. - - [Remove Render-Blocking JavaScript](https://developers.google.com/speed/docs/insights/BlockingJS) -- [Defer loading JavaScript](https://varvy.com/pagespeed/defer-loading-javascript.html) \ No newline at end of file +- [Defer loading JavaScript](https://varvy.com/pagespeed/defer-loading-javascript.html) diff --git a/src/data/best-practices/frontend-performance/content/use-preconnect-to-load-fonts.md b/src/data/best-practices/frontend-performance/content/use-preconnect-to-load-fonts.md index 848ea9b9a..5eb9e0e9b 100644 --- a/src/data/best-practices/frontend-performance/content/use-preconnect-to-load-fonts.md +++ b/src/data/best-practices/frontend-performance/content/use-preconnect-to-load-fonts.md @@ -1,7 +1,7 @@ # Preconnect on Fonts ```html - + ``` When you arrived on a website, your device needs to find out where your site lives and which server it needs to connect with. Your browser had to contact a DNS server and wait for the lookup complete before fetching the resource (fonts, CSS files...). Prefetches and preconnects allow the browser to lookup the DNS information and start establishing a TCP connection to the server hosting the font file. This provides a performance boost because by the time the browser gets around to parsing the css file with the font information and discovering it needs to request a font file from the server, it will already have pre-resolved the DNS information and have an open connection to the server ready in its connection pool. @@ -14,4 +14,4 @@ When you arrived on a website, your device needs to find out where your site liv - [Make Your Site Faster with Preconnect Hints | Viget](https://www.viget.com/articles/make-your-site-faster-with-preconnect-hints/) - [Ultimate Guide to Browser Hints: Preload, Prefetch, and Preconnect - MachMetrics Speed Blog](https://www.machmetrics.com/speed-blog/guide-to-browser-hints-preload-preconnect-prefetch/) - [A Comprehensive Guide to Font Loading Strategies—zachleat.com](https://www.zachleat.com/web/comprehensive-webfonts/#font-face) -- [typekit/webfontloader: Web Font Loader gives you added control when using linked fonts via @font-face.](https://github.com/typekit/webfontloader) \ No newline at end of file +- [typekit/webfontloader: Web Font Loader gives you added control when using linked fonts via @font-face.](https://github.com/typekit/webfontloader) diff --git a/src/data/best-practices/frontend-performance/content/use-same-protocol.md b/src/data/best-practices/frontend-performance/content/use-same-protocol.md index bd5bea11d..abff2ecf8 100644 --- a/src/data/best-practices/frontend-performance/content/use-same-protocol.md +++ b/src/data/best-practices/frontend-performance/content/use-same-protocol.md @@ -1,3 +1,3 @@ # Use same Protocol -Avoid having your website serving files coming from source using HTTP on your website which is using HTTPS for example. If your website is using HTTPS, external files should come from the same protocol. \ No newline at end of file +Avoid having your website serving files coming from source using HTTP on your website which is using HTTPS for example. If your website is using HTTPS, external files should come from the same protocol. diff --git a/src/data/best-practices/frontend-performance/content/use-service-workers-for-caching.md b/src/data/best-practices/frontend-performance/content/use-service-workers-for-caching.md index b5e81dd1f..e237f8c78 100644 --- a/src/data/best-practices/frontend-performance/content/use-service-workers-for-caching.md +++ b/src/data/best-practices/frontend-performance/content/use-service-workers-for-caching.md @@ -2,7 +2,7 @@ You are using Service Workers in your PWA to cache data or execute possible heavy tasks without impacting the user experience of your application. -- [Service Workers: an Introduction | Web Fundamentals | Google Developers](https://developers.google.com/web/fundamentals/primers/service-workers/) -- [Measuring the Real-world Performance Impact of Service Workers | Web | Google Developers](https://developers.google.com/web/showcase/2016/service-worker-perf) +- [Service Workers: an Introduction | Web Fundamentals | Google Developers](https://developers.google.com/web/fundamentals/primers/service-workers/) +- [Measuring the Real-world Performance Impact of Service Workers | Web | Google Developers](https://developers.google.com/web/showcase/2016/service-worker-perf) - [What Are Service Workers and How They Help Improve Performance](https://www.keycdn.com/blog/service-workers/) -- [How does a service worker work? - YouTube](https://www.youtube.com/watch?v=__xAtWgfzvc) \ No newline at end of file +- [How does a service worker work? - YouTube](https://www.youtube.com/watch?v=__xAtWgfzvc) diff --git a/src/data/best-practices/frontend-performance/content/use-woff2-font-format.md b/src/data/best-practices/frontend-performance/content/use-woff2-font-format.md index 77a901e24..290736ade 100644 --- a/src/data/best-practices/frontend-performance/content/use-woff2-font-format.md +++ b/src/data/best-practices/frontend-performance/content/use-woff2-font-format.md @@ -8,4 +8,4 @@ Check before buying your new font that the provider gives you the WOFF2 format. - [Create Your Own @font-face Kits » Font Squirrel](https://www.fontsquirrel.com/tools/webfont-generator) - [IcoMoon App - Icon Font, SVG, PDF & PNG Generator](https://icomoon.io/app/) - [Using @font-face | CSS-Tricks](https://css-tricks.com/snippets/css/using-font-face/?ref=frontendchecklist) -- [Can I use... WOFF2](https://caniuse.com/#feat=woff2) \ No newline at end of file +- [Can I use... WOFF2](https://caniuse.com/#feat=woff2) diff --git a/src/data/best-practices/frontend-performance/content/web-page-test.md b/src/data/best-practices/frontend-performance/content/web-page-test.md index 3108d5d7c..e0c745050 100644 --- a/src/data/best-practices/frontend-performance/content/web-page-test.md +++ b/src/data/best-practices/frontend-performance/content/web-page-test.md @@ -1,3 +1,3 @@ # webpagetest.org -Webpagetest.org is a website performance testing tool that allows users to test the load time and performance of web pages. It provides a wealth of information about the page load, including load time, Speed Index, and filmstrip view of the page load, as well as a breakdown of the page components and their load times. It also allows for testing from multiple locations and browsers. The test results can be shared and compared with others. It is widely used by developers, marketers, and website owners to improve the performance and user experience of their websites. \ No newline at end of file +Webpagetest.org is a website performance testing tool that allows users to test the load time and performance of web pages. It provides a wealth of information about the page load, including load time, Speed Index, and filmstrip view of the page load, as well as a breakdown of the page components and their load times. It also allows for testing from multiple locations and browsers. The test results can be shared and compared with others. It is widely used by developers, marketers, and website owners to improve the performance and user experience of their websites. diff --git a/src/data/best-practices/frontend-performance/frontend-performance.md b/src/data/best-practices/frontend-performance/frontend-performance.md index b53d4178d..dfe17ccfc 100644 --- a/src/data/best-practices/frontend-performance/frontend-performance.md +++ b/src/data/best-practices/frontend-performance/frontend-performance.md @@ -1,29 +1,29 @@ --- -jsonUrl: "/jsons/best-practices/frontend-performance.json" -pdfUrl: "/pdfs/best-practices/frontend-performance.pdf" +jsonUrl: '/jsons/best-practices/frontend-performance.json' +pdfUrl: '/pdfs/best-practices/frontend-performance.pdf' order: 1 -briefTitle: "Frontend Performance" -briefDescription: "Frontend Performance Best Practices" +briefTitle: 'Frontend Performance' +briefDescription: 'Frontend Performance Best Practices' isNew: true isUpcoming: false -title: "Frontend Performance Best Practices" -description: "Detailed list of best practices to improve your frontend performance" +title: 'Frontend Performance Best Practices' +description: 'Detailed list of best practices to improve your frontend performance' dimensions: width: 968 height: 1270.89 schema: - headline: "Frontend Performance Best Practices" - description: "Detailed list of best practices to improve the frontend performance of your website. Each best practice carries further details and how to implement that best practice." - imageUrl: "https://roadmap.sh/best-practices/frontend-performance.png" - datePublished: "2023-01-23" - dateModified: "2023-01-23" + headline: 'Frontend Performance Best Practices' + description: 'Detailed list of best practices to improve the frontend performance of your website. Each best practice carries further details and how to implement that best practice.' + imageUrl: 'https://roadmap.sh/best-practices/frontend-performance.png' + datePublished: '2023-01-23' + dateModified: '2023-01-23' seo: - title: "Frontend Performance Best Practices" - description: "Detailed list of best practices to improve the frontend performance of your website. Each best practice carries further details and how to implement that best practice." + title: 'Frontend Performance Best Practices' + description: 'Detailed list of best practices to improve the frontend performance of your website. Each best practice carries further details and how to implement that best practice.' keywords: - - "frontend performance" - - "frontend performance best practices" - - "frontend performance checklist" - - "frontend checklist" - - "make performant frontends" ---- \ No newline at end of file + - 'frontend performance' + - 'frontend performance best practices' + - 'frontend performance checklist' + - 'frontend checklist' + - 'make performant frontends' +--- diff --git a/src/data/guides/asymptotic-notation.md b/src/data/guides/asymptotic-notation.md index 70efe8b49..50df513d5 100644 --- a/src/data/guides/asymptotic-notation.md +++ b/src/data/guides/asymptotic-notation.md @@ -1,26 +1,25 @@ --- -title: "Asymptotic Notation" -description: "Learn the basics of measuring the time and space complexity of algorithms" +title: 'Asymptotic Notation' +description: 'Learn the basics of measuring the time and space complexity of algorithms' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Asymptotic Notation - roadmap.sh" - description: "Learn the basics of measuring the time and space complexity of algorithms" + title: 'Asymptotic Notation - roadmap.sh' + description: 'Learn the basics of measuring the time and space complexity of algorithms' isNew: false -type: "visual" +type: 'visual' date: 2021-04-03 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- Asymptotic notation is the standard way of measuring the time and space that an algorithm will consume as the input grows. In one of my last guides, I covered "Big-O notation" and a lot of you asked for a similar one for Asymptotic notation. You can find the [previous guide here](/guides/big-o-notation). [![Asymptotic Notation](/guides/asymptotic-notation.png)](/guides/asymptotic-notation.png) - diff --git a/src/data/guides/avoid-render-blocking-javascript-with-async-defer.md b/src/data/guides/avoid-render-blocking-javascript-with-async-defer.md index 941675b41..2111c473c 100644 --- a/src/data/guides/avoid-render-blocking-javascript-with-async-defer.md +++ b/src/data/guides/avoid-render-blocking-javascript-with-async-defer.md @@ -1,24 +1,23 @@ --- -title: "Async and Defer Script Loading" -description: "Learn how to avoid render blocking JavaScript using async and defer scripts." +title: 'Async and Defer Script Loading' +description: 'Learn how to avoid render blocking JavaScript using async and defer scripts.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Async and Defer Script Loading - roadmap.sh" - description: "Learn how to avoid render blocking JavaScript using async and defer scripts." + title: 'Async and Defer Script Loading - roadmap.sh' + description: 'Learn how to avoid render blocking JavaScript using async and defer scripts.' isNew: false -type: "visual" +type: 'visual' date: 2021-09-10 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![Avoid Render Blocking with Async and Defer](/guides/avoid-render-blocking-javascript-with-async-defer.png)](/guides/avoid-render-blocking-javascript-with-async-defer.png) - diff --git a/src/data/guides/basic-authentication.md b/src/data/guides/basic-authentication.md index 23a1a926b..4d0a8eb8d 100644 --- a/src/data/guides/basic-authentication.md +++ b/src/data/guides/basic-authentication.md @@ -1,24 +1,23 @@ --- -title: "Basic Authentication" -description: "Understand what is basic authentication and how it is implemented" +title: 'Basic Authentication' +description: 'Understand what is basic authentication and how it is implemented' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Basic Authentication - roadmap.sh" - description: "Understand what is basic authentication and how it is implemented" + title: 'Basic Authentication - roadmap.sh' + description: 'Understand what is basic authentication and how it is implemented' isNew: false -type: "visual" +type: 'visual' date: 2021-05-19 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![Basic Authentication](/guides/basic-authentication.png)](/guides/basic-authentication.png) - diff --git a/src/data/guides/basics-of-authentication.md b/src/data/guides/basics-of-authentication.md index 244dcff81..4ac970c3a 100644 --- a/src/data/guides/basics-of-authentication.md +++ b/src/data/guides/basics-of-authentication.md @@ -1,23 +1,23 @@ --- -title: "Basics of Authentication" -description: "Learn the basics of Authentication and Authorization" +title: 'Basics of Authentication' +description: 'Learn the basics of Authentication and Authorization' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Basics of Authentication - roadmap.sh" - description: "Learn the basics of Authentication and Authorization" + title: 'Basics of Authentication - roadmap.sh' + description: 'Learn the basics of Authentication and Authorization' isNew: false -type: "textual" +type: 'textual' date: 2022-09-21 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- Our last video series was about data structures. We looked at the most common data structures, their use cases, pros and cons, and the different operations you could perform on each data structure. @@ -79,6 +79,7 @@ Two-factor authentication is similar to multifactor authentication. The only dif Next we have the difference between authentication and authorization. This comes up a lot in the interviews, and beginners often confuse them. ### What is Authentication + Authentication is the process of verifying the identity. For example, when you enter your credentials at a login screen, the application here identifies you through your credentials. So this is what the authentication is, the process of verifying the identity. In case of an authentication failure, for example, if you enter an invalid username and password, the HTTP response code is "Unauthorized" 401. diff --git a/src/data/guides/big-o-notation.md b/src/data/guides/big-o-notation.md index 00078e4c6..32062ae7b 100644 --- a/src/data/guides/big-o-notation.md +++ b/src/data/guides/big-o-notation.md @@ -1,26 +1,25 @@ --- -title: "Big-O Notation" -description: "Easy to understand explanation of Big-O notation without any fancy terms" +title: 'Big-O Notation' +description: 'Easy to understand explanation of Big-O notation without any fancy terms' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Big-O Notation - roadmap.sh" - description: "Easy to understand explanation of Big-O notation without any fancy terms" + title: 'Big-O Notation - roadmap.sh' + description: 'Easy to understand explanation of Big-O notation without any fancy terms' isNew: false -type: "visual" +type: 'visual' date: 2021-03-15 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- -Big-O notation is the mathematical notation that helps analyse the algorithms to get an idea about how they might perform as the input grows. The image below explains Big-O in a simple way without using any fancy terminology. +Big-O notation is the mathematical notation that helps analyse the algorithms to get an idea about how they might perform as the input grows. The image below explains Big-O in a simple way without using any fancy terminology. [![Big-O Notation](/guides/big-o-notation.png)](/guides/big-o-notation.png) - diff --git a/src/data/guides/character-encodings.md b/src/data/guides/character-encodings.md index 3142e2b36..6769955ad 100644 --- a/src/data/guides/character-encodings.md +++ b/src/data/guides/character-encodings.md @@ -1,24 +1,23 @@ --- -title: "Character Encodings" -description: "Covers the basics of character encodings and explains ASCII vs Unicode" +title: 'Character Encodings' +description: 'Covers the basics of character encodings and explains ASCII vs Unicode' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Character Encodings - roadmap.sh" - description: "Covers the basics of character encodings and explains ASCII vs Unicode" + title: 'Character Encodings - roadmap.sh' + description: 'Covers the basics of character encodings and explains ASCII vs Unicode' isNew: false -type: "visual" +type: 'visual' date: 2021-05-14 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![Character Encodings](/guides/character-encodings.png)](/guides/character-encodings.png) - diff --git a/src/data/guides/ci-cd.md b/src/data/guides/ci-cd.md index 6fe17bfd1..f150b1ac3 100644 --- a/src/data/guides/ci-cd.md +++ b/src/data/guides/ci-cd.md @@ -1,26 +1,25 @@ --- -title: "What is CI and CD?" -description: "Learn the basics of CI/CD and how to implement that with GitHub Actions." +title: 'What is CI and CD?' +description: 'Learn the basics of CI/CD and how to implement that with GitHub Actions.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "What is CI and CD? - roadmap.sh" - description: "Learn the basics of CI/CD and how to implement that with GitHub Actions." + title: 'What is CI and CD? - roadmap.sh' + description: 'Learn the basics of CI/CD and how to implement that with GitHub Actions.' isNew: false -type: "visual" +type: 'visual' date: 2021-07-09 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- The image below details the differences between the continuous integration and continuous delivery. Also, here is the [accompanying video on implementing that with GitHub actions](https://www.youtube.com/watch?v=nyKZTKQS_EQ). [![CI vs CD](/guides/ci-cd.png)](/guides/ci-cd.png) - diff --git a/src/data/guides/consistency-patterns-in-distributed-systems.md b/src/data/guides/consistency-patterns-in-distributed-systems.md index aa88144df..c3b04a2ab 100644 --- a/src/data/guides/consistency-patterns-in-distributed-systems.md +++ b/src/data/guides/consistency-patterns-in-distributed-systems.md @@ -1,24 +1,24 @@ --- -title: "Consistency Patterns" -description: "Everything you need to know about Week, Strong and Eventual Consistency" +title: 'Consistency Patterns' +description: 'Everything you need to know about Week, Strong and Eventual Consistency' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Consistency Patterns - roadmap.sh" - description: "Everything you need to know about Week, Strong and Eventual Consistency" + title: 'Consistency Patterns - roadmap.sh' + description: 'Everything you need to know about Week, Strong and Eventual Consistency' isNew: true -canonicalUrl: "https://cs.fyi/guide/consistency-patterns-week-strong-eventual/" -type: "textual" +canonicalUrl: 'https://cs.fyi/guide/consistency-patterns-week-strong-eventual/' +type: 'textual' date: 2023-01-18 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- Before we talk about the Consistency Patterns, we should know what a distributed system is. Simply put, a distributed system is a system that consists of more than one components, and each component is responsible for one part of the application. @@ -39,11 +39,11 @@ When working with distributed systems, we need to think about managing the data ## Consistency Patterns -Consistency patterns refer to the ways in which data is stored and managed in a distributed system and how that data is made available to users and applications. There are three main types of consistency patterns: +Consistency patterns refer to the ways in which data is stored and managed in a distributed system and how that data is made available to users and applications. There are three main types of consistency patterns: -* Strong consistency -* Weak consistency -* Eventual Consistency +- Strong consistency +- Weak consistency +- Eventual Consistency Each of these patterns has its own advantages and disadvantages, and the choice of which pattern to use will depend on the specific requirements of the application or system. @@ -51,7 +51,7 @@ Each of these patterns has its own advantages and disadvantages, and the choice > After an update is made to the data, it will be immediately visible to any subsequent read operations. The data is replicated in a synchronous manner, ensuring that all copies of the data are updated at the same time. -In a strong consistency system, any updates to some data are immediately propagated to all locations. This ensures that all locations have the same version of the data, but it also means that the system is not highly available and has high latency. +In a strong consistency system, any updates to some data are immediately propagated to all locations. This ensures that all locations have the same version of the data, but it also means that the system is not highly available and has high latency. An example of strong consistency is a financial system where users can transfer money between accounts. The system is designed for **high data integrity**, so the data is stored in a single location and updates to that data are immediately propagated to all other locations. This ensures that all users and applications are working with the same, accurate data. For instance, when a user initiates a transfer of funds from one account to another, the system immediately updates the balance of both accounts and all other system components are immediately aware of the change. This ensures that all users can see the updated balance of both accounts and prevents any discrepancies. diff --git a/src/data/guides/design-patterns-for-humans.md b/src/data/guides/design-patterns-for-humans.md index 2e2cbd2c7..61529f909 100644 --- a/src/data/guides/design-patterns-for-humans.md +++ b/src/data/guides/design-patterns-for-humans.md @@ -1,23 +1,23 @@ --- -title: "Design Patterns for Humans" -description: "A language agnostic, ultra-simplified explanation to design patterns" +title: 'Design Patterns for Humans' +description: 'A language agnostic, ultra-simplified explanation to design patterns' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Design Patterns for Humans - roadmap.sh" - description: "A language agnostic, ultra-simplified explanation to design patterns" + title: 'Design Patterns for Humans - roadmap.sh' + description: 'A language agnostic, ultra-simplified explanation to design patterns' isNew: false -type: "textual" +type: 'textual' date: 2019-01-23 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- Design patterns are solutions to recurring problems; **guidelines on how to tackle certain problems**. They are not classes, packages or libraries that you can plug into your application and wait for the magic to happen. These are, rather, guidelines on how to tackle certain problems in certain situations. @@ -33,7 +33,7 @@ Wikipedia describes them as Developers, mostly beginners, make the mistake of over-thinking and forcing the design patterns which results in a horrible un-maintainable mess. The rule of thumb is to keep the codebase as simple as possible, once you start developing, you will start to see the patterns repeating in the codebase in which case you can go ahead and implement the relevant design patterns. - Design patterns are not a silver bullet to all your problems. -- Do not try to force them; bad things are supposed to happen, if done so. +- Do not try to force them; bad things are supposed to happen, if done so. - Keep in mind that design patterns are solutions **to** problems, not solutions **finding** problems; so don't overthink. - If used in a correct place in a correct manner, they can prove to be a savior; or else they can result in a horrible mess of a code. @@ -43,41 +43,47 @@ Developers, mostly beginners, make the mistake of over-thinking and forcing the This guide is about Gang of Four (GoF) design patterns, which refers to the four authors of [the book which introduced these design patterns](https://en.wikipedia.org/wiki/Design_Patterns). There are three types of design patterns: -* [Creational](#creational-design-patterns) -* [Structural](#structural-design-patterns) -* [Behavioral](#behavioral-design-patterns) +- [Creational](#creational-design-patterns) +- [Structural](#structural-design-patterns) +- [Behavioral](#behavioral-design-patterns) ## Creational Design Patterns In plain words + > Creational patterns are focused towards how to instantiate an object or group of related objects. Wikipedia says + > In software engineering, creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation. There are 6 types of Creational patterns - * [Simple Factory](#-simple-factory) - * [Factory Method](#-factory-method) - * [Abstract Factory](#-abstract-factory) - * [Builder](#-builder) - * [Prototype](#-prototype) - * [Singleton](#-singleton) +- [Simple Factory](#-simple-factory) +- [Factory Method](#-factory-method) +- [Abstract Factory](#-abstract-factory) +- [Builder](#-builder) +- [Prototype](#-prototype) +- [Singleton](#-singleton) + +## 🏠 Simple Factory -🏠 Simple Factory --------------- Real world example + > Consider, you are building a house and you need doors. You can either put on your carpenter clothes, bring some wood, glue, nails and all the tools required to build the door and start building it in your house or you can simply call the factory and get the built door delivered to you so that you don't need to learn anything about the door making or to deal with the mess that comes with making it. In plain words + > Simple factory simply generates an instance for client without exposing any instantiation logic to the client Wikipedia says + > In object-oriented programming (OOP), a factory is an object for creating other objects – formally a factory is a function or method that returns objects of a varying prototype or class from some method call, which is assumed to be "new". **Programmatic Example** First of all we have a door interface and the implementation + ```php interface Door { @@ -107,7 +113,9 @@ class WoodenDoor implements Door } } ``` + Then we have our door factory that makes the door and returns it + ```php class DoorFactory { @@ -117,7 +125,9 @@ class DoorFactory } } ``` + And then it can be used as + ```php // Make me a door of 100x200 $door = DoorFactory::makeDoor(100, 200); @@ -133,19 +143,21 @@ $door2 = DoorFactory::makeDoor(50, 100); When creating an object is not just a few assignments and involves some logic, it makes sense to put it in a dedicated factory instead of repeating the same code everywhere. -🏭 Factory Method --------------- +## 🏭 Factory Method Real world example + > Consider the case of a hiring manager. It is impossible for one person to interview for each of the positions. Based on the job opening, she has to decide and delegate the interview steps to different people. In plain words + > It provides a way to delegate the instantiation logic to child classes. Wikipedia says + > In class-based programming, the factory method pattern is a creational pattern that uses factory methods to deal with the problem of creating objects without having to specify the exact class of the object that will be created. This is done by creating objects by calling a factory method—either specified in an interface and implemented by child classes, or implemented in a base class and optionally overridden by derived classes—rather than by calling a constructor. - **Programmatic Example** +**Programmatic Example** Taking our hiring manager example above. First of all we have an interviewer interface and some implementations for it @@ -189,7 +201,9 @@ abstract class HiringManager } ``` + Now any child can extend it and provide the required interviewer + ```php class DevelopmentManager extends HiringManager { @@ -207,6 +221,7 @@ class MarketingManager extends HiringManager } } ``` + and then it can be used as ```php @@ -221,16 +236,18 @@ $marketingManager->takeInterview(); // Output: Asking about community building. Useful when there is some generic processing in a class but the required sub-class is dynamically decided at runtime. Or putting it in other words, when the client doesn't know what exact sub-class it might need. -🔨 Abstract Factory ----------------- +## 🔨 Abstract Factory Real world example + > Extending our door example from Simple Factory. Based on your needs you might get a wooden door from a wooden door shop, iron door from an iron shop or a PVC door from the relevant shop. Plus you might need a guy with different kind of specialities to fit the door, for example a carpenter for wooden door, welder for iron door etc. As you can see there is a dependency between the doors now, wooden door needs carpenter, iron door needs a welder etc. In plain words + > A factory of factories; a factory that groups the individual but related/dependent factories together without specifying their concrete classes. Wikipedia says + > The abstract factory pattern provides a way to encapsulate a group of individual factories that have a common theme without specifying their concrete classes **Programmatic Example** @@ -259,6 +276,7 @@ class IronDoor implements Door } } ``` + Then we have some fitting experts for each door type ```php @@ -285,6 +303,7 @@ class Carpenter implements DoorFittingExpert ``` Now we have our abstract factory that would let us make family of related objects i.e. wooden door factory would create a wooden door and wooden door fitting expert and iron door factory would create an iron door and iron door fitting expert + ```php interface DoorFactory { @@ -320,7 +339,9 @@ class IronDoorFactory implements DoorFactory } } ``` + And then it can be used as + ```php $woodenFactory = new WoodenDoorFactory(); @@ -340,20 +361,24 @@ $door->getDescription(); // Output: I am an iron door $expert->getDescription(); // Output: I can only fit iron doors ``` -As you can see the wooden door factory has encapsulated the `carpenter` and the `wooden door` also iron door factory has encapsulated the `iron door` and `welder`. And thus it had helped us make sure that for each of the created door, we do not get a wrong fitting expert. +As you can see the wooden door factory has encapsulated the `carpenter` and the `wooden door` also iron door factory has encapsulated the `iron door` and `welder`. And thus it had helped us make sure that for each of the created door, we do not get a wrong fitting expert. **When to use?** When there are interrelated dependencies with not-that-simple creation logic involved ## 👷 Builder + Real world example -> Imagine you are at Hardee's and you order a specific deal, lets say, "Big Hardee" and they hand it over to you without *any questions*; this is the example of simple factory. But there are cases when the creation logic might involve more steps. For example you want a customized Subway deal, you have several options in how your burger is made e.g what bread do you want? what types of sauces would you like? What cheese would you want? etc. In such cases builder pattern comes to the rescue. + +> Imagine you are at Hardee's and you order a specific deal, lets say, "Big Hardee" and they hand it over to you without _any questions_; this is the example of simple factory. But there are cases when the creation logic might involve more steps. For example you want a customized Subway deal, you have several options in how your burger is made e.g what bread do you want? what types of sauces would you like? What cheese would you want? etc. In such cases builder pattern comes to the rescue. In plain words + > Allows you to create different flavors of an object while avoiding constructor pollution. Useful when there could be several flavors of an object. Or when there are a lot of steps involved in creation of an object. Wikipedia says + > The builder pattern is an object creation software design pattern with the intentions of finding a solution to the telescoping constructor anti-pattern. Having said that let me add a bit about what telescoping constructor anti-pattern is. At one point or the other we have all seen a constructor like below: @@ -438,6 +463,7 @@ class BurgerBuilder } } ``` + And then it can be used as: ```php @@ -452,15 +478,18 @@ $burger = (new BurgerBuilder(14)) When there could be several flavors of an object and to avoid the constructor telescoping. The key difference from the factory pattern is that; factory pattern is to be used when the creation is a one step process while builder pattern is to be used when the creation is a multi step process. -🐑 Prototype ------------- +## 🐑 Prototype + Real world example + > Remember dolly? The sheep that was cloned! Lets not get into the details but the key point here is that it is all about cloning In plain words + > Create object based on an existing object through cloning. Wikipedia says + > The prototype pattern is a creational design pattern in software development. It is used when the type of objects to create is determined by a prototypical instance, which is cloned to produce new objects. In short, it allows you to create a copy of an existing object and modify it to your needs, instead of going through the trouble of creating an object from scratch and setting it up. @@ -502,7 +531,9 @@ class Sheep } } ``` + Then it can be cloned like below + ```php $original = new Sheep('Jolly'); echo $original->getName(); // Jolly @@ -521,15 +552,18 @@ Also you could use the magic method `__clone` to modify the cloning behavior. When an object is required that is similar to existing object or when the creation would be expensive as compared to cloning. -💍 Singleton ------------- +## 💍 Singleton + Real world example + > There can only be one president of a country at a time. The same president has to be brought to action, whenever duty calls. President here is singleton. In plain words + > Ensures that only one object of a particular class is ever created. Wikipedia says + > In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system. Singleton pattern is actually considered an anti-pattern and overuse of it should be avoided. It is not necessarily bad and could have some valid use-cases but should be used with caution because it introduces a global state in your application and change to it in one place could affect in the other areas and it could become pretty difficult to debug. The other bad thing about them is it makes your code tightly coupled plus mocking the singleton could be difficult. @@ -537,6 +571,7 @@ Singleton pattern is actually considered an anti-pattern and overuse of it shoul **Programmatic Example** To create a singleton, make the constructor private, disable cloning, disable extension and create a static variable to house the instance + ```php final class President { @@ -567,7 +602,9 @@ final class President } } ``` + Then in order to use + ```php $president1 = President::getInstance(); $president2 = President::getInstance(); @@ -576,33 +613,39 @@ var_dump($president1 === $president2); // true ``` ## Structural Design Patterns + In plain words + > Structural patterns are mostly concerned with object composition or in other words how the entities can use each other. Or yet another explanation would be, they help in answering "How to build a software component?" Wikipedia says + > In software engineering, structural design patterns are design patterns that ease the design by identifying a simple way to realize relationships between entities. There are 7 types of structural patterns - * [Adapter](#-adapter) - * [Bridge](#-bridge) - * [Composite](#-composite) - * [Decorator](#-decorator) - * [Facade](#-facade) - * [Flyweight](#-flyweight) - * [Proxy](#-proxy) +- [Adapter](#-adapter) +- [Bridge](#-bridge) +- [Composite](#-composite) +- [Decorator](#-decorator) +- [Facade](#-facade) +- [Flyweight](#-flyweight) +- [Proxy](#-proxy) + +## 🔌 Adapter -🔌 Adapter -------- Real world example + > Consider that you have some pictures in your memory card and you need to transfer them to your computer. In order to transfer them you need some kind of adapter that is compatible with your computer ports so that you can attach memory card to your computer. In this case card reader is an adapter. > Another example would be the famous power adapter; a three legged plug can't be connected to a two pronged outlet, it needs to use a power adapter that makes it compatible with the two pronged outlet. > Yet another example would be a translator translating words spoken by one person to another In plain words + > Adapter pattern lets you wrap an otherwise incompatible object in an adapter to make it compatible with another class. Wikipedia says + > In software engineering, the adapter pattern is a software design pattern that allows the interface of an existing class to be used as another interface. It is often used to make existing classes work with others without modifying their source code. **Programmatic Example** @@ -631,7 +674,9 @@ class AsianLion implements Lion } } ``` + And hunter expects any implementation of `Lion` interface to hunt. + ```php class Hunter { @@ -669,6 +714,7 @@ class WildDogAdapter implements Lion } } ``` + And now the `WildDog` can be used in our game using `WildDogAdapter`. ```php @@ -679,17 +725,20 @@ $hunter = new Hunter(); $hunter->hunt($wildDogAdapter); ``` -🚡 Bridge ------- +## 🚡 Bridge + Real world example + > Consider you have a website with different pages and you are supposed to allow the user to change the theme. What would you do? Create multiple copies of each of the pages for each of the themes or would you just create separate theme and load them based on the user's preferences? Bridge pattern allows you to do the second i.e. ![With and without the bridge pattern](https://cloud.githubusercontent.com/assets/11269635/23065293/33b7aea0-f515-11e6-983f-98823c9845ee.png) In Plain Words + > Bridge pattern is about preferring composition over inheritance. Implementation details are pushed from a hierarchy to another object with a separate hierarchy. Wikipedia says + > The bridge pattern is a design pattern used in software engineering that is meant to "decouple an abstraction from its implementation so that the two can vary independently" **Programmatic Example** @@ -733,7 +782,9 @@ class Careers implements WebPage } } ``` + And the separate theme hierarchy + ```php interface Theme @@ -763,7 +814,9 @@ class AquaTheme implements Theme } } ``` + And both the hierarchies + ```php $darkTheme = new DarkTheme(); @@ -777,12 +830,15 @@ echo $careers->getContent(); // "Careers page in Dark Black"; ## 🌿 Composite Real world example + > Every organization is composed of employees. Each of the employees has the same features i.e. has a salary, has some responsibilities, may or may not report to someone, may or may not have some subordinates etc. In plain words + > Composite pattern lets clients treat the individual objects in a uniform manner. Wikipedia says + > In software engineering, the composite pattern is a partitioning design pattern. The composite pattern describes that a group of objects is to be treated in the same way as a single instance of an object. The intent of a composite is to "compose" objects into tree structures to represent part-whole hierarchies. Implementing the composite pattern lets clients treat individual objects and compositions uniformly. **Programmatic Example** @@ -804,7 +860,7 @@ class Developer implements Employee protected $salary; protected $name; protected $roles; - + public function __construct(string $name, float $salary) { $this->name = $name; @@ -906,17 +962,18 @@ $organization->addEmployee($jane); echo "Net salaries: " . $organization->getNetSalaries(); // Net Salaries: 27000 ``` -☕ Decorator -------------- +## ☕ Decorator Real world example > Imagine you run a car service shop offering multiple services. Now how do you calculate the bill to be charged? You pick one service and dynamically keep adding to it the prices for the provided services till you get the final cost. Here each type of service is a decorator. In plain words + > Decorator pattern lets you dynamically change the behavior of an object at run time by wrapping them in an object of a decorator class. Wikipedia says + > In object-oriented programming, the decorator pattern is a design pattern that allows behavior to be added to an individual object, either statically or dynamically, without affecting the behavior of other objects from the same class. The decorator pattern is often useful for adhering to the Single Responsibility Principle, as it allows functionality to be divided between classes with unique areas of concern. **Programmatic Example** @@ -943,7 +1000,9 @@ class SimpleCoffee implements Coffee } } ``` + We want to make the code extensible to allow options to modify it if required. Lets make some add-ons (decorators) + ```php class MilkCoffee implements Coffee { @@ -1026,16 +1085,18 @@ echo $someCoffee->getCost(); // 20 echo $someCoffee->getDescription(); // Simple Coffee, milk, whip, vanilla ``` -📦 Facade ----------------- +## 📦 Facade Real world example + > How do you turn on the computer? "Hit the power button" you say! That is what you believe because you are using a simple interface that computer provides on the outside, internally it has to do a lot of stuff to make it happen. This simple interface to the complex subsystem is a facade. In plain words + > Facade pattern provides a simplified interface to a complex subsystem. Wikipedia says + > A facade is an object that provides a simplified interface to a larger body of code, such as a class library. **Programmatic Example** @@ -1081,7 +1142,9 @@ class Computer } } ``` + Here we have the facade + ```php class ComputerFacade { @@ -1108,23 +1171,27 @@ class ComputerFacade } } ``` + Now to use the facade + ```php $computer = new ComputerFacade(new Computer()); $computer->turnOn(); // Ouch! Beep beep! Loading.. Ready to be used! $computer->turnOff(); // Bup bup buzzz! Haah! Zzzzz ``` -🍃 Flyweight ---------- +## 🍃 Flyweight Real world example + > Did you ever have fresh tea from some stall? They often make more than one cup that you demanded and save the rest for any other customer so to save the resources e.g. gas etc. Flyweight pattern is all about that i.e. sharing. In plain words + > It is used to minimize memory usage or computational expenses by sharing as much as possible with similar objects. Wikipedia says + > In computer programming, flyweight is a software design pattern. A flyweight is an object that minimizes memory use by sharing as much data as possible with other similar objects; it is a way to use objects in large numbers when a simple repeated representation would use an unacceptable amount of memory. **Programmatic example** @@ -1180,6 +1247,7 @@ class TeaShop } } ``` + And it can be used as below ```php @@ -1197,13 +1265,17 @@ $shop->serve(); ``` ## 🎱 Proxy + Real world example + > Have you ever used an access card to go through a door? There are multiple options to open that door i.e. it can be opened either using access card or by pressing a button that bypasses the security. The door's main functionality is to open but there is a proxy added on top of it to add some functionality. Let me better explain it using the code example below. In plain words + > Using the proxy pattern, a class represents the functionality of another class. Wikipedia says + > A proxy, in its most general form, is a class functioning as an interface to something else. A proxy is a wrapper or agent object that is being called by the client to access the real serving object behind the scenes. Use of the proxy can simply be forwarding to the real object, or can provide additional logic. In the proxy extra functionality can be provided, for example caching when operations on the real object are resource intensive, or checking preconditions before operations on the real object are invoked. **Programmatic Example** @@ -1230,7 +1302,9 @@ class LabDoor implements Door } } ``` + Then we have a proxy to secure any doors that we want + ```php class SecuredDoor { @@ -1261,7 +1335,9 @@ class SecuredDoor } } ``` + And here is how it can be used + ```php $door = new SecuredDoor(new LabDoor()); $door->open('invalid'); // Big no! It ain't possible. @@ -1269,38 +1345,44 @@ $door->open('invalid'); // Big no! It ain't possible. $door->open('$ecr@t'); // Opening lab door $door->close(); // Closing lab door ``` + Yet another example would be some sort of data-mapper implementation. For example, I recently made an ODM (Object Data Mapper) for MongoDB using this pattern where I wrote a proxy around mongo classes while utilizing the magic method `__call()`. All the method calls were proxied to the original mongo class and result retrieved was returned as it is but in case of `find` or `findOne` data was mapped to the required class objects and the object was returned instead of `Cursor`. ## Behavioral Design Patterns In plain words + > It is concerned with assignment of responsibilities between the objects. What makes them different from structural patterns is they don't just specify the structure but also outline the patterns for message passing/communication between them. Or in other words, they assist in answering "How to run a behavior in software component?" Wikipedia says + > In software engineering, behavioral design patterns are design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication. There are 10 types of behavioral design patterns -* [Chain of Responsibility](#-chain-of-responsibility) -* [Command](#-command) -* [Iterator](#-iterator) -* [Mediator](#-mediator) -* [Memento](#-memento) -* [Observer](#-observer) -* [Visitor](#-visitor) -* [Strategy](#-strategy) -* [State](#-state) -* [Template Method](#-template-method) +- [Chain of Responsibility](#-chain-of-responsibility) +- [Command](#-command) +- [Iterator](#-iterator) +- [Mediator](#-mediator) +- [Memento](#-memento) +- [Observer](#-observer) +- [Visitor](#-visitor) +- [Strategy](#-strategy) +- [State](#-state) +- [Template Method](#-template-method) ## 🔗 Chain of Responsibility Real world example + > For example, you have three payment methods (`A`, `B` and `C`) setup in your account; each having a different amount in it. `A` has 100 USD, `B` has 300 USD and `C` having 1000 USD and the preference for payments is chosen as `A` then `B` then `C`. You try to purchase something that is worth 210 USD. Using Chain of Responsibility, first of all account `A` will be checked if it can make the purchase, if yes purchase will be made and the chain will be broken. If not, request will move forward to account `B` checking for amount if yes chain will be broken otherwise the request will keep forwarding till it finds the suitable handler. Here `A`, `B` and `C` are links of the chain and the whole phenomenon is Chain of Responsibility. In plain words + > It helps building a chain of objects. Request enters from one end and keeps going from object to object till it finds the suitable handler. Wikipedia says + > In object-oriented design, the chain-of-responsibility pattern is a design pattern consisting of a source of command objects and a series of processing objects. Each processing object contains logic that defines the types of command objects that it can handle; the rest are passed to the next processing object in the chain. **Programmatic Example** @@ -1394,22 +1476,25 @@ $bank->pay(259); // Paid 259 using Bitcoin! ``` -👮 Command -------- +## 👮 Command Real world example + > A generic example would be you ordering food at a restaurant. You (i.e. `Client`) ask the waiter (i.e. `Invoker`) to bring some food (i.e. `Command`) and waiter simply forwards the request to Chef (i.e. `Receiver`) who has the knowledge of what and how to cook. > Another example would be you (i.e. `Client`) switching on (i.e. `Command`) the television (i.e. `Receiver`) using a remote control (`Invoker`). In plain words + > Allows you to encapsulate actions in objects. The key idea behind this pattern is to provide the means to decouple client from receiver. Wikipedia says + > In object-oriented programming, the command pattern is a behavioral design pattern in which an object is used to encapsulate all information needed to perform an action or trigger an event at a later time. This information includes the method name, the object that owns the method and values for the method parameters. **Programmatic Example** First of all we have the receiver that has the implementation of every action that could be performed + ```php // Receiver class Bulb @@ -1425,7 +1510,9 @@ class Bulb } } ``` + then we have an interface that each of the commands are going to implement and then we have a set of commands + ```php interface Command { @@ -1485,7 +1572,9 @@ class TurnOff implements Command } } ``` + Then we have an `Invoker` with whom the client will interact to process any commands + ```php // Invoker class RemoteControl @@ -1496,7 +1585,9 @@ class RemoteControl } } ``` + Finally let's see how we can use it in our client + ```php $bulb = new Bulb(); @@ -1510,16 +1601,18 @@ $remote->submit($turnOff); // Darkness! Command pattern can also be used to implement a transaction based system. Where you keep maintaining the history of commands as soon as you execute them. If the final command is successfully executed, all good otherwise just iterate through the history and keep executing the `undo` on all the executed commands. -➿ Iterator --------- +## ➿ Iterator Real world example -> An old radio set will be a good example of iterator, where user could start at some channel and then use next or previous buttons to go through the respective channels. Or take an example of MP3 player or a TV set where you could press the next and previous buttons to go through the consecutive channels or in other words they all provide an interface to iterate through the respective channels, songs or radio stations. + +> An old radio set will be a good example of iterator, where user could start at some channel and then use next or previous buttons to go through the respective channels. Or take an example of MP3 player or a TV set where you could press the next and previous buttons to go through the consecutive channels or in other words they all provide an interface to iterate through the respective channels, songs or radio stations. In plain words + > It presents a way to access the elements of an object without exposing the underlying presentation. Wikipedia says + > In object-oriented programming, the iterator pattern is a design pattern in which an iterator is used to traverse a container and access the container's elements. The iterator pattern decouples algorithms from containers; in some cases, algorithms are necessarily container-specific and thus cannot be decoupled. **Programmatic example** @@ -1542,6 +1635,7 @@ class RadioStation } } ``` + Then we have our iterator ```php @@ -1600,7 +1694,9 @@ class StationList implements Countable, Iterator } } ``` + And then it can be used as + ```php $stationList = new StationList(); @@ -1616,16 +1712,18 @@ foreach($stationList as $station) { $stationList->removeStation(new RadioStation(89)); // Will remove station 89 ``` -👽 Mediator --------- +## 👽 Mediator Real world example + > A general example would be when you talk to someone on your mobile phone, there is a network provider sitting between you and them and your conversation goes through it instead of being directly sent. In this case network provider is mediator. In plain words + > Mediator pattern adds a third party object (called mediator) to control the interaction between two objects (called colleagues). It helps reduce the coupling between the classes communicating with each other. Because now they don't need to have the knowledge of each other's implementation. Wikipedia says + > In software engineering, the mediator pattern defines an object that encapsulates how a set of objects interact. This pattern is considered to be a behavioral pattern due to the way it can alter the program's running behavior. **Programmatic Example** @@ -1635,7 +1733,7 @@ Here is the simplest example of a chat room (i.e. mediator) with users (i.e. col First of all, we have the mediator i.e. the chat room ```php -interface ChatRoomMediator +interface ChatRoomMediator { public function showMessage(User $user, string $message); } @@ -1654,6 +1752,7 @@ class ChatRoom implements ChatRoomMediator ``` Then we have our users i.e. colleagues + ```php class User { protected $name; @@ -1673,7 +1772,9 @@ class User { } } ``` + And the usage + ```php $mediator = new ChatRoom(); @@ -1688,15 +1789,18 @@ $jane->send('Hey!'); // Feb 14, 10:58 [Jane]: Hey! ``` -💾 Memento -------- +## 💾 Memento + Real world example + > Take the example of calculator (i.e. originator), where whenever you perform some calculation the last calculation is saved in memory (i.e. memento) so that you can get back to it and maybe get it restored using some action buttons (i.e. caretaker). In plain words + > Memento pattern is about capturing and storing the current state of an object in a manner that it can be restored later on in a smooth manner. Wikipedia says + > The memento pattern is a software design pattern that provides the ability to restore an object to its previous state (undo via rollback). Usually useful when you need to provide some sort of undo functionality. @@ -1777,20 +1881,24 @@ $editor->restore($saved); $editor->getContent(); // This is the first sentence. This is second. ``` -😎 Observer --------- +## 😎 Observer + Real world example -> A good example would be the job seekers where they subscribe to some job posting site and they are notified whenever there is a matching job opportunity. + +> A good example would be the job seekers where they subscribe to some job posting site and they are notified whenever there is a matching job opportunity. In plain words + > Defines a dependency between objects so that whenever an object changes its state, all its dependents are notified. Wikipedia says + > The observer pattern is a software design pattern in which an object, called 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. **Programmatic example** Translating our example from above. First of all we have job seekers that need to be notified for a job posting + ```php class JobPost { @@ -1823,7 +1931,9 @@ class JobSeeker implements Observer } } ``` + Then we have our job postings to which the job seekers will subscribe + ```php class EmploymentAgency implements Observable { @@ -1847,7 +1957,9 @@ class EmploymentAgency implements Observable } } ``` + Then it can be used as + ```php // Create subscribers $johnDoe = new JobSeeker('John Doe'); @@ -1866,15 +1978,18 @@ $jobPostings->addJob(new JobPost('Software Engineer')); // Hi Jane Doe! New job posted: Software Engineer ``` -🏃 Visitor -------- +## 🏃 Visitor + Real world example + > Consider someone visiting Dubai. They just need a way (i.e. visa) to enter Dubai. After arrival, they can come and visit any place in Dubai on their own without having to ask for permission or to do some leg work in order to visit any place here; just let them know of a place and they can visit it. Visitor pattern lets you do just that, it helps you add places to visit so that they can visit as much as they can without having to do any legwork. In plain words + > Visitor pattern lets you add further operations to objects without having to modify them. Wikipedia says + > In object-oriented programming and software engineering, the visitor design pattern is a way of separating an algorithm from an object structure on which it operates. A practical result of this separation is the ability to add new operations to existing object structures without modifying those structures. It is one way to follow the open/closed principle. **Programmatic example** @@ -1896,7 +2011,9 @@ interface AnimalOperation public function visitDolphin(Dolphin $dolphin); } ``` + Then we have our implementations for the animals + ```php class Monkey implements Animal { @@ -1937,7 +2054,9 @@ class Dolphin implements Animal } } ``` + Let's implement our visitor + ```php class Speak implements AnimalOperation { @@ -1959,6 +2078,7 @@ class Speak implements AnimalOperation ``` And then it can be used as + ```php $monkey = new Monkey(); $lion = new Lion(); @@ -1966,10 +2086,11 @@ $dolphin = new Dolphin(); $speak = new Speak(); -$monkey->accept($speak); // Ooh oo aa aa! +$monkey->accept($speak); // Ooh oo aa aa! $lion->accept($speak); // Roaaar! $dolphin->accept($speak); // Tuut tutt tuutt! ``` + We could have done this simply by having an inheritance hierarchy for the animals but then we would have to modify the animals whenever we would have to add new actions to animals. But now we will not have to change them. For example, let's say we are asked to add the jump behavior to the animals, we can simply add that by creating a new visitor i.e. ```php @@ -1991,7 +2112,9 @@ class Jump implements AnimalOperation } } ``` + And for the usage + ```php $jump = new Jump(); @@ -2005,16 +2128,18 @@ $dolphin->accept($speak); // Tuut tutt tuutt! $dolphin->accept($jump); // Walked on water a little and disappeared ``` -💡 Strategy --------- +## 💡 Strategy Real world example + > Consider the example of sorting, we implemented bubble sort but the data started to grow and bubble sort started getting very slow. In order to tackle this we implemented Quick sort. But now although the quick sort algorithm was doing better for large datasets, it was very slow for smaller datasets. In order to handle this we implemented a strategy where for small datasets, bubble sort will be used and for larger, quick sort. In plain words + > Strategy pattern allows you to switch the algorithm or strategy based upon the situation. Wikipedia says + > In computer programming, the strategy pattern (also known as the policy pattern) is a behavioural software design pattern that enables an algorithm's behavior to be selected at runtime. **Programmatic example** @@ -2051,6 +2176,7 @@ class QuickSortStrategy implements SortStrategy ``` And then we have our client that is going to use any strategy + ```php class Sorter { @@ -2067,7 +2193,9 @@ class Sorter } } ``` + And it can be used as + ```php $dataset = [1, 5, 4, 3, 2, 8]; @@ -2078,15 +2206,18 @@ $sorter = new Sorter(new QuickSortStrategy()); $sorter->sort($dataset); // Output : Sorting using quick sort ``` -💢 State ------ +## 💢 State + Real world example -> Imagine you are using some drawing application, you choose the paint brush to draw. Now the brush changes its behavior based on the selected color i.e. if you have chosen red color it will draw in red, if blue then it will be in blue etc. + +> Imagine you are using some drawing application, you choose the paint brush to draw. Now the brush changes its behavior based on the selected color i.e. if you have chosen red color it will draw in red, if blue then it will be in blue etc. In plain words + > It lets you change the behavior of a class when the state changes. Wikipedia says + > The state pattern is a behavioral software design pattern that implements a state machine in an object-oriented way. With the state pattern, a state machine is implemented by implementing each individual state as a derived class of the state pattern interface, and implementing state transitions by invoking methods defined by the pattern's superclass. > The state pattern can be interpreted as a strategy pattern which is able to switch the current strategy through invocations of methods defined in the pattern's interface. @@ -2126,7 +2257,9 @@ class DefaultText implements WritingState } } ``` + Then we have our editor + ```php class TextEditor { @@ -2148,7 +2281,9 @@ class TextEditor } } ``` + And then it can be used as + ```php $editor = new TextEditor(new DefaultText()); @@ -2172,11 +2307,12 @@ $editor->type('Fifth line'); // fifth line ``` -📒 Template Method ---------------- +## 📒 Template Method Real world example + > Suppose we are getting some house built. The steps for building might look like +> > - Prepare the base of house > - Build the walls > - Add roof @@ -2185,9 +2321,11 @@ Real world example > The order of these steps could never be changed i.e. you can't build the roof before building the walls etc but each of the steps could be modified for example walls can be made of wood or polyester or stone. In plain words + > Template method defines the skeleton of how a certain algorithm could be performed, but defers the implementation of those steps to the children classes. Wikipedia says + > In software engineering, the template method pattern is a behavioral design pattern that defines the program skeleton of an algorithm in an operation, deferring some steps to subclasses. It lets one redefine certain steps of an algorithm without changing the algorithm's structure. **Programmatic Example** @@ -2195,6 +2333,7 @@ Wikipedia says Imagine we have a build tool that helps us test, lint, build, generate build reports (i.e. code coverage reports, linting report etc) and deploy our app on the test server. First of all we have our base class that specifies the skeleton for the build algorithm + ```php abstract class Builder { @@ -2264,6 +2403,7 @@ class IosBuilder extends Builder } } ``` + And then it can be used as ```php diff --git a/src/data/guides/dhcp-in-one-picture.md b/src/data/guides/dhcp-in-one-picture.md index 1920c0451..7ae3e6825 100644 --- a/src/data/guides/dhcp-in-one-picture.md +++ b/src/data/guides/dhcp-in-one-picture.md @@ -1,24 +1,23 @@ --- -title: "DHCP in One Picture" -description: "Here is what happens when a new device joins the network." +title: 'DHCP in One Picture' +description: 'Here is what happens when a new device joins the network.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "DHCP in One Picture - roadmap.sh" - description: "Here is what happens when a new device joins the network." + title: 'DHCP in One Picture - roadmap.sh' + description: 'Here is what happens when a new device joins the network.' isNew: false -type: "visual" +type: 'visual' date: 2021-04-28 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![DHCP in One Picture](/guides/dhcp.png)](/guides/dhcp.png) - diff --git a/src/data/guides/dns-in-one-picture.md b/src/data/guides/dns-in-one-picture.md index 8655df8c6..c4049b6a0 100644 --- a/src/data/guides/dns-in-one-picture.md +++ b/src/data/guides/dns-in-one-picture.md @@ -1,23 +1,23 @@ --- -title: "DNS in One Picture" -description: "Quick illustrative guide on how a website is found on the internet." +title: 'DNS in One Picture' +description: 'Quick illustrative guide on how a website is found on the internet.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "DNS in One Picture - roadmap.sh" - description: "Quick illustrative guide on how a website is found on the internet." + title: 'DNS in One Picture - roadmap.sh' + description: 'Quick illustrative guide on how a website is found on the internet.' isNew: false -type: "visual" +type: 'visual' date: 2018-12-04 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- DNS or Domain Name System is one of the fundamental blocks of the internet. As a developer, you should have at-least the basic understanding of how it works. This article is a brief introduction to what is DNS and how it works. diff --git a/src/data/guides/history-of-javascript.md b/src/data/guides/history-of-javascript.md index f523579bc..988b074f0 100644 --- a/src/data/guides/history-of-javascript.md +++ b/src/data/guides/history-of-javascript.md @@ -1,63 +1,72 @@ --- -title: "Brief History of JavaScript" -description: "How JavaScript was introduced and evolved over the years" +title: 'Brief History of JavaScript' +description: 'How JavaScript was introduced and evolved over the years' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Brief History of JavaScript - roadmap.sh" - description: "How JavaScript was introduced and evolved over the years" + title: 'Brief History of JavaScript - roadmap.sh' + description: 'How JavaScript was introduced and evolved over the years' isNew: false -type: "textual" +type: 'textual' date: 2017-10-28 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- -Around 10 years ago, Jeff Atwood (the founder of stackoverflow) made a case that JavaScript is going to be the future and he coined the “Atwood Law” which states that *Any application that can be written in JavaScript will eventually be written in JavaScript*. Fast-forward to today, 10 years later, if you look at it it rings truer than ever. JavaScript is continuing to gain more and more adoption. +Around 10 years ago, Jeff Atwood (the founder of stackoverflow) made a case that JavaScript is going to be the future and he coined the “Atwood Law” which states that _Any application that can be written in JavaScript will eventually be written in JavaScript_. Fast-forward to today, 10 years later, if you look at it it rings truer than ever. JavaScript is continuing to gain more and more adoption. ### JavaScript is announced -JavaScript was initially created by [Brendan Eich](https://twitter.com/BrendanEich) of NetScape and was first announced in a press release by Netscape in 1995. It has a bizarre history of naming; initially it was named `Mocha` by the creator, which was later renamed to `LiveScript`. In 1996, about a year later after the release, NetScape decided to rename it to be `JavaScript` with hopes of capitalizing on the Java community (although JavaScript did not have any relationship with Java) and released Netscape 2.0 with the official support of JavaScript. + +JavaScript was initially created by [Brendan Eich](https://twitter.com/BrendanEich) of NetScape and was first announced in a press release by Netscape in 1995. It has a bizarre history of naming; initially it was named `Mocha` by the creator, which was later renamed to `LiveScript`. In 1996, about a year later after the release, NetScape decided to rename it to be `JavaScript` with hopes of capitalizing on the Java community (although JavaScript did not have any relationship with Java) and released Netscape 2.0 with the official support of JavaScript. ### ES1, ES2 and ES3 + In 1996, Netscape decided to submit it to [ECMA International](https://en.wikipedia.org/wiki/Ecma_International) with the hopes of getting it standardized. First edition of the standard specification was released in 1997 and the language was standardized. After the initial release, `ECMAScript` was continued to be worked upon and in no-time two more versions were released ECMAScript 2 in 1998 and ECMAScript 3 in 1999. ### Decade of Silence and ES4 + After the release of ES3 in 1999, there was a complete silence for a decade and no changes were made to the official standard. There was some work on the fourth edition in the initial days; some of the features that were being discussed included classes, modules, static typings, destructuring etc. It was being targeted to be released by 2008 but was abandoned due to political differences concerning language complexity. However, the vendors kept introducing the extensions to the language and the developers were left scratching their heads — adding polyfills to battle compatibility issues between different browsers. ### From silence to ES5 + Google, Microsoft, Yahoo and other disputers of ES4 came together and decided to work on a less ambitious update to ES3 tentatively named ES3.1. But the teams were still fighting about what to include from ES4 and what not. Finally, in 2009 ES5 was released mainly focusing on fixing the compatibility and security issues etc. But there wasn’t much of a splash in the water — it took ages for the vendors to incorporate the standards and many developers were still using ES3 without being aware of the “modern” standards. ### Release of ES6 — ECMAScript 2015 + After a few years of the release of ES5, things started to change, TC39 (the committee under ECMA international responsible for ECMAScript standardization) kept working on the next version of ECMAScript (ES6) which was originally named ES Harmony, before being eventually released with the name ES2015. ES2015 adds significant features and syntactic sugar to allow writing complex applications. Some of the features that ES6 has to offer, include Classes, Modules, Arrows, Enhanced object literals, Template strings, Destructuring, Default param values + rest + spread, Let and Const, Iterators + for..of, Generators, Maps + Sets, Proxies, Symbols, Promises, math + number + string + array + object APIs [etc](http://es6-features.org/#Constants) Browser support for ES6 is still scarce but everything that ES6 has to offer is still available to developers by transpiling the ES6 code to ES5. With the release of 6th version of ECMAScript, TC39 decided to move to yearly model of releasing updates to ECMAScript so to make sure that the new features are added as soon as they are approved and we don’t have to wait for the full specification to be drafted and approved — thus 6th version of ECMAScript was renamed as ECMAScript 2015 or ES2015 before the release in June 2015. And the next versions of ECMAScript were decided to published in June of every year. ### Release of ES7 — ECMAScript 2016 + In June 2016, seventh version of ECMAScript was released. As ECMAScript has been moved to an yearly release model, ECMAScript 2016 (ES2016) comparatively did not have much to offer. ES2016 includes just two new features -* Exponentiation operator `**` -* `Array.prototype.includes` +- Exponentiation operator `**` +- `Array.prototype.includes` ### Release of ES8 — ECMAScript 2017 + The eighth version of ECMAScript was released in June 2017. The key highlight of ES8 was the addition of async functions. Here is the list of new features in ES8 -* `Object.values()` and `Object.entries()` -* String padding i.e. `String.prototype.padEnd()` and `String.prototype.padStart()` -* `Object.getOwnPropertyDescriptors` -* Trailing commas in function parameter lists and calls -* Async functions +- `Object.values()` and `Object.entries()` +- String padding i.e. `String.prototype.padEnd()` and `String.prototype.padStart()` +- `Object.getOwnPropertyDescriptors` +- Trailing commas in function parameter lists and calls +- Async functions ### What is ESNext then? + ESNext is a dynamic name that refers to whatever the current version of ECMAScript is at the given time. For example, at the time of this writing `ES2017` or `ES8` is `ESNext`. ### What does the future hold? + Since the release of ES6, [TC39](https://github.com/tc39) has quite streamlined their process. TC39 operates through a Github organization now and there are [several proposals](https://github.com/tc39/proposals) for new features or syntax to be added to the next versions of ECMAScript. Any one can go ahead and [submit a proposal](https://github.com/tc39/proposals) thus resulting in increasing the participation from the community. Every proposal goes through [four stages of maturity](https://tc39.github.io/process-document/) before it makes it into the specification. And that about wraps it up. Feel free to leave your feedback in the comments section below. Also here are the links to original language specifications [ES6](https://www.ecma-international.org/ecma-262/6.0/), [ES7](https://www.ecma-international.org/ecma-262/7.0/) and [ES8](https://www.ecma-international.org/ecma-262/8.0/). diff --git a/src/data/guides/how-to-setup-a-jump-server.md b/src/data/guides/how-to-setup-a-jump-server.md index 6d992cc07..e8cfe988f 100644 --- a/src/data/guides/how-to-setup-a-jump-server.md +++ b/src/data/guides/how-to-setup-a-jump-server.md @@ -1,23 +1,23 @@ --- -title: "Jump Servers: What, Why and How" -description: "Learn what is a Jump Server and how to set it up for SSH access." +title: 'Jump Servers: What, Why and How' +description: 'Learn what is a Jump Server and how to set it up for SSH access.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Jump Servers: What, Why and How - roadmap.sh" - description: "Learn what is a Jump Server and how to set it up for SSH access." + title: 'Jump Servers: What, Why and How - roadmap.sh' + description: 'Learn what is a Jump Server and how to set it up for SSH access.' isNew: true -type: "visual" +type: 'visual' date: 2023-03-20 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- Given below is the demonstration of a sample production environment for a web application that consists of two different components, application server and database server. @@ -34,7 +34,7 @@ A jump server is a server that is used to access other servers. It is also known In the above example, the application server is called the jump server. -For example, you might have this infrastructure on AWS, where you have a custom VPC with two subnets. +For example, you might have this infrastructure on AWS, where you have a custom VPC with two subnets. - **Public Subnet:** Outside world can access - **Private Subnet:** Only accessible from within the VPC @@ -51,7 +51,7 @@ We can easily SSH into the application server from the internet i.e. ssh -i ~/.ssh/mykey.pem ec2-user@3.112.5.67 ``` -But the database server doesn't have a public IP address. So, we can't SSH into it from the internet. For example, following won't work +But the database server doesn't have a public IP address. So, we can't SSH into it from the internet. For example, following won't work ```bash # Won't work because the IP address is private @@ -81,11 +81,11 @@ Warning: Identity file /home/ubuntu/.ssh/mykey.pem not accessible: No such file ubuntu@192.168.1.0: Permission denied (publickey). ``` -What happened? The reason is that the private key is not present on the application server i.e. `~/.ssh/mykey.pem`. Now, there are two ways to solve this problem. +What happened? The reason is that the private key is not present on the application server i.e. `~/.ssh/mykey.pem`. Now, there are two ways to solve this problem. ### Solution 1 - Copy the Private Key to Server -We can copy the private key from our local machine to the application server and use it there to access the database server. You can do that by running the following command on your local machine: +We can copy the private key from our local machine to the application server and use it there to access the database server. You can do that by running the following command on your local machine: ```bash scp -i path/to/key.pem examplefile yourusername@yourserver:/home/yourusername/ @@ -188,4 +188,4 @@ ssh db ## Conclusion -In this article, we learned about the jump server and how to use SSH agent forwarding to access a server that is not accessible from the internet. We also learned how to simplify the SSH command by adding host entries to the `~/.ssh/config` file. \ No newline at end of file +In this article, we learned about the jump server and how to use SSH agent forwarding to access a server that is not accessible from the internet. We also learned how to simplify the SSH command by adding host entries to the `~/.ssh/config` file. diff --git a/src/data/guides/http-basic-authentication.md b/src/data/guides/http-basic-authentication.md index 386f98fae..f1b565813 100644 --- a/src/data/guides/http-basic-authentication.md +++ b/src/data/guides/http-basic-authentication.md @@ -1,23 +1,23 @@ --- -title: "HTTP Basic Authentication" -description: "Learn what is HTTP Basic Authentication and how to implement it in Node.js" +title: 'HTTP Basic Authentication' +description: 'Learn what is HTTP Basic Authentication and how to implement it in Node.js' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "HTTP Basic Authentication - roadmap.sh" - description: "Learn what is HTTP Basic Authentication and how to implement it in Node.js" + title: 'HTTP Basic Authentication - roadmap.sh' + description: 'Learn what is HTTP Basic Authentication and how to implement it in Node.js' isNew: false -type: "textual" +type: 'textual' date: 2022-10-03 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- Our last guide was about the [basics of authentication](/guides/basics-of-authentication), where we discussed authentication, authorization, types of authentication, authentication factors, authentication strategies, and so on. @@ -27,17 +27,19 @@ In this guide today, we will be learning about basic authentication, and we will ## What is Basic Authentication? + Given the name "Basic Authentication", you should not confuse Basic Authentication with the standard username and password authentication. Basic authentication is a part of the HTTP specification, and the details can be [found in the RFC7617](https://www.rfc-editor.org/rfc/rfc7617.html). Because it is a part of the HTTP specifications, all the browsers have native support for "HTTP Basic Authentication". Given below is the screenshot from the implementation in Google Chrome. ![Chrome Basic Authentication](/guides/basic-authentication/chrome-basic-auth.png) - ## How does it Work? + Now that we know what basic authentication is, the question is, how does it work? The answer is: it is controlled by the response of the server. ### Step 1 + When the browser first requests the server, the server tries to check the availability of the `Authorization` header in the request. Because it is the first request, no `Authorization` header is found in the request. So the server responds with the `401 Unauthorized` response code and also sends the `WWW-Authenticate` header with the value set to `Basic`, which tells the browser that it needs to trigger the basic authentication flow. ``` @@ -50,19 +52,23 @@ If you notice the response, we have an additional parameter called `realm`, whic The browser might use Realm to cache the credential. In the future, when there is an authentication failure browser will check if it has the credentials in the cache for the given realm of the domain, and it may use the same credentials. ## Step 2 + Upon receiving the response from the server, the browser will notice the `WWW-Authenticate` header and will show the authentication popup. ![Chrome Basic Authentication](/guides/basic-authentication/chrome-basic-auth.png) ## Step 3 + After the user submits the credentials through this authentication popup, the browser will automatically encode the credentials using the `base64` encoding and send them in the `Authorization` header of the same request. ### Step 4 + Upon receiving the request, the server will decode and verify the credentials. If the credentials are valid, the server will send the response to the client. So that is how Basic Authentication works. ## Basic Authentication in Node.js + I have prepared the sample project in Node.js, which can be found on GitHub [kamranahmedse/node-basic-auth-example](https://github.com/kamranahmedse/node-basic-auth-example). If you look at the codebase of the project, we have two files `index.js` with the following content: ```javascript @@ -74,7 +80,7 @@ const authMiddleware = require('./auth'); const app = express(); const port = 3000; -// This middleware is where we have the +// This middleware is where we have the // basic authentication implementation app.use(authMiddleware); @@ -84,22 +90,24 @@ app.get('/', (req, res) => { app.listen(port, () => { console.log(`App running @ http://localhost:${port}`); -}) +}); ``` As you can see, it's just a regular express server. `authMiddleware` registration is where we have all the code for "Basic Authentication". Here is the content of the middleware: ```javascript // src/auth.js -const base64 = require("base-64"); +const base64 = require('base-64'); function decodeCredentials(authHeader) { // ... } -module.exports = function(req, res, next) { - // Take the header and decode credentials - const [username, password] = decodeCredentials(req.headers.authorization || ''); +module.exports = function (req, res, next) { + // Take the header and decode credentials + const [username, password] = decodeCredentials( + req.headers.authorization || '' + ); // Verify the credentials if (username === 'admin' && password === 'admin') { @@ -109,7 +117,7 @@ module.exports = function(req, res, next) { // Respond with authenticate header on auth failure. res.set('WWW-Authenticate', 'Basic realm="user_pages"'); res.status(401).send('Authentication required.'); -} +}; ``` And that is how the basic authentication is implemented in Node.js. diff --git a/src/data/guides/http-caching.md b/src/data/guides/http-caching.md index cbc658d82..fe0a3ba91 100644 --- a/src/data/guides/http-caching.md +++ b/src/data/guides/http-caching.md @@ -1,30 +1,30 @@ --- -title: "HTTP Caching" -description: "Everything you need to know about web caching" +title: 'HTTP Caching' +description: 'Everything you need to know about web caching' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "HTTP Caching - roadmap.sh" - description: "Everything you need to know about web caching" + title: 'HTTP Caching - roadmap.sh' + description: 'Everything you need to know about web caching' isNew: false -type: "textual" +type: 'textual' date: 2018-11-29 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- -As users, we easily get frustrated by the buffering of videos, the images that take seconds to load, and pages that got stuck because the content is being loaded. Loading the resources from some cache is much faster than fetching the same from the originating server. It reduces latency, speeds up the loading of resources, decreases the load on the server, cuts down the bandwidth costs etc. +As users, we easily get frustrated by the buffering of videos, the images that take seconds to load, and pages that got stuck because the content is being loaded. Loading the resources from some cache is much faster than fetching the same from the originating server. It reduces latency, speeds up the loading of resources, decreases the load on the server, cuts down the bandwidth costs etc. ### Introduction -What is a web cache? It is something that sits somewhere between the client and the server, continuously looking at the requests and their responses, looking for any responses that can be cached. So that there is less time consumed when the same request is made again. +What is a web cache? It is something that sits somewhere between the client and the server, continuously looking at the requests and their responses, looking for any responses that can be cached. So that there is less time consumed when the same request is made again. ![Web Cache](https://i.imgur.com/mJYVvTh.png) @@ -68,7 +68,7 @@ Unlike browser cache which serves a single user, proxy caches may serve hundreds A Reverse proxy cache or surrogate cache is implemented close to the origin servers in order to reduce the load on the server. Unlike proxy caches which are implemented by ISPs etc to reduce the bandwidth usage in a network, surrogates or reverse proxy caches are implemented near the origin servers by the server administrators to reduce the load on the server. ![Reverse Proxy Cache](http://i.imgur.com/Eg4Cru3.png) - + Although you can control the reverse proxy caches (since it is implemented by you on your server) you can not avoid or control browser and proxy caches. And if your website is not configured to use these caches properly, it will still be cached using whatever defaults are set on these caches. ### Caching Headers @@ -108,9 +108,9 @@ Before HTTP/1.1 and the introduction of `Cache-Control`, there was an `Expires` Expires: Mon, 13 Mar 2017 12:22:00 GMT ``` -It should be noted that the date cannot be more than a year and if the date format is wrong, the content will be considered stale. Also, the clock on the cache has to be in sync with the clock on the server, otherwise, the desired results might not be achieved. +It should be noted that the date cannot be more than a year and if the date format is wrong, the content will be considered stale. Also, the clock on the cache has to be in sync with the clock on the server, otherwise, the desired results might not be achieved. -Although the `Expires` header is still valid and is supported widely by the caches, preference should be given to HTTP/1.1 successor of it i.e. `Cache-Control`. +Although the `Expires` header is still valid and is supported widely by the caches, preference should be given to HTTP/1.1 successor of it i.e. `Cache-Control`. #### Pragma @@ -119,17 +119,18 @@ Another one from the old, pre HTTP/1.1 days, is `Pragma`. Everything that it cou #### Cache-Control Cache-Control specifies how long and in what manner should the content be cached. This family of headers was introduced in HTTP/1.1 to overcome the limitations of the `Expires` header. - -Value for the `Cache-Control` header is composite i.e. it can have multiple directive/values. Let's look at the possible values that this header may contain. + +Value for the `Cache-Control` header is composite i.e. it can have multiple directive/values. Let's look at the possible values that this header may contain. ##### private + Setting the cache to `private` means that the content will not be cached in any of the proxies and it will only be cached by the client (i.e. browser) ```html Cache-Control: private ``` -Having said that, don't let it fool you into thinking that setting this header will make your data any secure; you still have to use SSL for that purpose. +Having said that, don't let it fool you into thinking that setting this header will make your data any secure; you still have to use SSL for that purpose. ##### public @@ -140,6 +141,7 @@ Cache-Control: public ``` ##### no-store + **`no-store`** specifies that the content is not to be cached by any of the caches ```html @@ -147,6 +149,7 @@ Cache-Control: no-store ``` ##### no-cache + **`no-cache`** indicates that the cache can be maintained but the cached content is to be re-validated (using `ETag` for example) from the server before being served. That is, there is still a request to server but for validation and not to download the cached content. ```html @@ -154,14 +157,17 @@ Cache-Control: max-age=3600, no-cache, public ``` ##### max-age: seconds + **`max-age`** specifies the number of seconds for which the content will be cached. For example, if the `cache-control` looks like below: ```html Cache-Control: max-age=3600, public ``` + it would mean that the content is publicly cacheable and will be considered stale after 60 minutes ##### s-maxage: seconds + **`s-maxage`** here `s-` prefix stands for shared. This directive specifically targets the shared caches. Like `max-age` it also gets the number of seconds for which something is to be cached. If present, it will override `max-age` and `expires` headers for shared caching. ```html @@ -169,43 +175,43 @@ Cache-Control: s-maxage=3600, public ``` ##### must-revalidate -**`must-revalidate`** it might happen sometimes that if you have network problems and the content cannot be retrieved from the server, the browser may serve stale content without validation. `must-revalidate` avoids that. If this directive is present, it means that stale content cannot be served in any case and the data must be re-validated from the server before serving. + +**`must-revalidate`** it might happen sometimes that if you have network problems and the content cannot be retrieved from the server, the browser may serve stale content without validation. `must-revalidate` avoids that. If this directive is present, it means that stale content cannot be served in any case and the data must be re-validated from the server before serving. ```html Cache-Control: max-age=3600, public, must-revalidate ``` ##### proxy-revalidate -**`proxy-revalidate`** is similar to `must-revalidate` but it specifies the same for shared or proxy caches. In other words `proxy-revalidate` is to `must-revalidate` as `s-maxage` is to `max-age`. But why did they not call it `s-revalidate`?. I have no idea why, if you have any clue please leave a comment below. + +**`proxy-revalidate`** is similar to `must-revalidate` but it specifies the same for shared or proxy caches. In other words `proxy-revalidate` is to `must-revalidate` as `s-maxage` is to `max-age`. But why did they not call it `s-revalidate`?. I have no idea why, if you have any clue please leave a comment below. ##### Mixing Values -You can combine these directives in different ways to achieve different caching behaviors, however `no-cache/no-store` and `public/private` are mutually exclusive. + +You can combine these directives in different ways to achieve different caching behaviors, however `no-cache/no-store` and `public/private` are mutually exclusive. If you specify both `no-store` and `no-cache`, `no-store` will be given precedence over `no-cache`. ```html -; If specified both -Cache-Control: no-store, no-cache - -; Below will be considered +; If specified both Cache-Control: no-store, no-cache ; Below will be considered Cache-Control: no-store ``` For `private/public`, for any unauthenticated requests cache is considered `public` and for any authenticated ones cache is considered `private`. -### Validators +### Validators Up until now we only discussed how the content is cached and how long the cached content is to be considered fresh but we did not discuss how the client does the validation from the server. Below we discuss the headers used for this purpose. #### ETag -Etag or "entity tag" was introduced in HTTP/1.1 specs. Etag is just a unique identifier that the server attaches with some resource. This ETag is later on used by the client to make conditional HTTP requests stating `"give me this resource if ETag is not same as the ETag that I have"` and the content is downloaded only if the etags do not match. +Etag or "entity tag" was introduced in HTTP/1.1 specs. Etag is just a unique identifier that the server attaches with some resource. This ETag is later on used by the client to make conditional HTTP requests stating `"give me this resource if ETag is not same as the ETag that I have"` and the content is downloaded only if the etags do not match. Method by which ETag is generated is not specified in the HTTP docs and usually some collision-resistant hash function is used to assign etags to each version of a resource. There could be two types of etags i.e. strong and weak ```html -ETag: "j82j8232ha7sdh0q2882" - Strong Etag -ETag: W/"j82j8232ha7sdh0q2882" - Weak Etag (prefixed with `W/`) +ETag: "j82j8232ha7sdh0q2882" - Strong Etag ETag: W/"j82j8232ha7sdh0q2882" - Weak +Etag (prefixed with `W/`) ``` A strong validating ETag means that two resources are **exactly** same and there is no difference between them at all. While a weak ETag means that two resources although not strictly the same but could be considered the same. Weak etags might be useful for dynamic content, for example. @@ -223,7 +229,7 @@ Server will then compare this ETag with the ETag of the current version of resou #### Last-Modified Server might include the `Last-Modified` header indicating the date and time at which some content was last modified on. - + ```html Last-Modified: Wed, 15 Mar 2017 12:30:26 GMT ``` @@ -234,21 +240,21 @@ When the content gets stale, client will make a conditional request including th If-Modified-Since: Wed, 15 Mar 2017 12:30:26 GMT ``` -You might be questioning now, what if the cached content has both the `Last-Modified` and `ETag` assigned to it? Well, in that case both are to be used i.e. there will not be any re-downloading of the resource if and only if `ETag` matches the newly retrieved one and so does the `Last-Modified` date. If either the `ETag` does not match or the `Last-Modified` is greater than the one from the server, content has to be downloaded again. +You might be questioning now, what if the cached content has both the `Last-Modified` and `ETag` assigned to it? Well, in that case both are to be used i.e. there will not be any re-downloading of the resource if and only if `ETag` matches the newly retrieved one and so does the `Last-Modified` date. If either the `ETag` does not match or the `Last-Modified` is greater than the one from the server, content has to be downloaded again. ### Where do I start? -Now that we have got *everything* covered, let us put everything in perspective and see how you can use this information. +Now that we have got _everything_ covered, let us put everything in perspective and see how you can use this information. #### Utilizing Server -Before we get into the possible caching strategies , let me add the fact that most of the servers including Apache and Nginx allow you to implement your caching policy through the server so that you don't have to juggle with headers in your code. +Before we get into the possible caching strategies , let me add the fact that most of the servers including Apache and Nginx allow you to implement your caching policy through the server so that you don't have to juggle with headers in your code. **For example**, if you are using Apache and you have your static content placed at `/static`, you can put below `.htaccess` file in the directory to make all the content in it be cached for an year using below ```html -# Cache everything for an year -Header set Cache-Control "max-age=31536000, public" +# Cache everything for an year Header set Cache-Control "max-age=31536000, +public" ``` You can further use `filesMatch` directive to add conditionals and use different caching strategy for different kinds of files e.g. @@ -265,18 +271,18 @@ You can further use `filesMatch` directive to add conditionals and use different ``` -Or if you don't want to use the `.htaccess` file you can modify Apache's configuration file `http.conf`. Same goes for Nginx, you can add the caching information in the location or server block. +Or if you don't want to use the `.htaccess` file you can modify Apache's configuration file `http.conf`. Same goes for Nginx, you can add the caching information in the location or server block. #### Caching Recommendations There is no golden rule or set standards about how your caching policy should look like, each of the application is different and you have to look and find what suits your application the best. However, just to give you a rough idea - - You can have aggressive caching (e.g. cache for an year) on any static content and use fingerprinted filenames (e.g. `style.ju2i90.css`) so that the cache is automatically rejected whenever the files are updated. - Also it should be noted that you should not cross the upper limit of one year as it [might not be honored](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) - - Look and decide do you even need caching for any dynamic content, if yes how long it should be. For example, in case of some RSS feed of a blog there could be the caching of a few hours but there couldn't be any caching for inventory items in an ERP. - - Always add the validators (preferably ETags) in your response. - - Pay attention while choosing the visibility (private or public) of the cached content. Make sure that you do not accidentally cache any user-specific or sensitive content in any public proxies. When in doubt, do not use cache at all. - - Separate the content that changes often from the content that doesn't change that often (e.g. in javascript bundles) so that when it is updated it doesn't need to make the whole cached content stale. - - Test and monitor the caching headers being served by your site. You can use the browser console or `curl -I http://some-url.com` for that purpose. +- You can have aggressive caching (e.g. cache for an year) on any static content and use fingerprinted filenames (e.g. `style.ju2i90.css`) so that the cache is automatically rejected whenever the files are updated. + Also it should be noted that you should not cross the upper limit of one year as it [might not be honored](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) +- Look and decide do you even need caching for any dynamic content, if yes how long it should be. For example, in case of some RSS feed of a blog there could be the caching of a few hours but there couldn't be any caching for inventory items in an ERP. +- Always add the validators (preferably ETags) in your response. +- Pay attention while choosing the visibility (private or public) of the cached content. Make sure that you do not accidentally cache any user-specific or sensitive content in any public proxies. When in doubt, do not use cache at all. +- Separate the content that changes often from the content that doesn't change that often (e.g. in javascript bundles) so that when it is updated it doesn't need to make the whole cached content stale. +- Test and monitor the caching headers being served by your site. You can use the browser console or `curl -I http://some-url.com` for that purpose. And that about wraps it up. Stay tuned for more! diff --git a/src/data/guides/journey-to-http2.md b/src/data/guides/journey-to-http2.md index cd95cb9b0..e0d1a286f 100644 --- a/src/data/guides/journey-to-http2.md +++ b/src/data/guides/journey-to-http2.md @@ -1,23 +1,23 @@ --- -title: "Journey to HTTP/2" -description: "The evolution of HTTP. How it all started and where we stand today" +title: 'Journey to HTTP/2' +description: 'The evolution of HTTP. How it all started and where we stand today' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Journey to HTTP/2 - roadmap.sh" - description: "The evolution of HTTP. How it all started and where we stand today" + title: 'Journey to HTTP/2 - roadmap.sh' + description: 'The evolution of HTTP. How it all started and where we stand today' isNew: false -type: "textual" +type: 'textual' date: 2018-12-04 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- HTTP is the protocol that every web developer should know as it powers the whole web and knowing it is definitely going to help you develop better applications. In this guide, I am going to be discussing what HTTP is, how it came to be, where it is today and how did we get here. @@ -26,41 +26,39 @@ HTTP is the protocol that every web developer should know as it powers the whole First things first, what is HTTP? HTTP is the `TCP/IP` based application layer communication protocol which standardizes how the client and server communicate with each other. It defines how the content is requested and transmitted across the internet. By application layer protocol, I mean it's just an abstraction layer that standardizes how the hosts (clients and servers) communicate and itself it depends upon `TCP/IP` to get request and response between the client and server. By default TCP port `80` is used but other ports can be used as well. HTTPS, however, uses port `443`. -### HTTP/0.9 – The One Liner (1991) +### HTTP/0.9 – The One Liner (1991) The first documented version of HTTP was [`HTTP/0.9`](https://www.w3.org/Protocols/HTTP/AsImplemented.html) which was put forward in 1991. It was the simplest protocol ever; having a single method called `GET`. If a client had to access some webpage on the server, it would have made the simple request like below ```html GET /index.html ``` + And the response from server would have looked as follows ```html -(response body) -(connection closed) +(response body) (connection closed) ``` -That is, the server would get the request, reply with the HTML in response and as soon as the content has been transferred, the connection will be closed. There were +That is, the server would get the request, reply with the HTML in response and as soon as the content has been transferred, the connection will be closed. There were - No headers -- `GET` was the only allowed method +- `GET` was the only allowed method - Response had to be HTML As you can see, the protocol really had nothing more than being a stepping stone for what was to come. ### HTTP/1.0 - 1996 -In 1996, the next version of HTTP i.e. `HTTP/1.0` evolved that vastly improved over the original version. +In 1996, the next version of HTTP i.e. `HTTP/1.0` evolved that vastly improved over the original version. Unlike `HTTP/0.9` which was only designed for HTML response, `HTTP/1.0` could now deal with other response formats i.e. images, video files, plain text or any other content type as well. It added more methods (i.e. `POST` and `HEAD`), request/response formats got changed, HTTP headers got added to both the request and responses, status codes were added to identify the response, character set support was introduced, multi-part types, authorization, caching, content encoding and more was included. Here is how a sample `HTTP/1.0` request and response might have looked like: ```html -GET / HTTP/1.0 -Host: kamranahmed.info -User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) -Accept: */* +GET / HTTP/1.0 Host: kamranahmed.info User-Agent: Mozilla/5.0 (Macintosh; Intel +Mac OS X 10_10_5) Accept: */* ``` As you can see, alongside the request, client has also sent its personal information, required response type etc. While in `HTTP/0.9` client could never send such information because there were no headers. @@ -68,26 +66,20 @@ As you can see, alongside the request, client has also sent its personal informa Example response to the request above may have looked like below ```html -HTTP/1.0 200 OK -Content-Type: text/plain -Content-Length: 137582 -Expires: Thu, 05 Dec 1997 16:00:00 GMT -Last-Modified: Wed, 5 August 1996 15:55:28 GMT -Server: Apache 0.84 - -(response body) -(connection closed) +HTTP/1.0 200 OK Content-Type: text/plain Content-Length: 137582 Expires: Thu, 05 +Dec 1997 16:00:00 GMT Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: +Apache 0.84 (response body) (connection closed) ``` -In the very beginning of the response there is `HTTP/1.0` (HTTP followed by the version number), then there is the status code `200` followed by the reason phrase (or description of the status code, if you will). +In the very beginning of the response there is `HTTP/1.0` (HTTP followed by the version number), then there is the status code `200` followed by the reason phrase (or description of the status code, if you will). In this newer version, request and response headers were still kept as `ASCII` encoded, but the response body could have been of any type i.e. image, video, HTML, plain text or any other content type. So, now that server could send any content type to the client; not so long after the introduction, the term "Hyper Text" in `HTTP` became misnomer. `HMTP` or Hypermedia transfer protocol might have made more sense but, I guess, we are stuck with the name for life. One of the major drawbacks of `HTTP/1.0` were you couldn't have multiple requests per connection. That is, whenever a client will need something from the server, it will have to open a new TCP connection and after that single request has been fulfilled, connection will be closed. And for any next requirement, it will have to be on a new connection. Why is it bad? Well, let's assume that you visit a webpage having `10` images, `5` stylesheets and `5` javascript files, totalling to `20` items that needs to fetched when request to that webpage is made. Since the server closes the connection as soon as the request has been fulfilled, there will be a series of `20` separate connections where each of the items will be served one by one on their separate connections. This large number of connections results in a serious performance hit as requiring a new `TCP` connection imposes a significant performance penalty because of three-way handshake followed by slow-start. -#### Three-way Handshake +#### Three-way Handshake -Three-way handshake in its simplest form is that all the `TCP` connections begin with a three-way handshake in which the client and the server share a series of packets before starting to share the application data. +Three-way handshake in its simplest form is that all the `TCP` connections begin with a three-way handshake in which the client and the server share a series of packets before starting to share the application data. - `SYN` - Client picks up a random number, let's say `x`, and sends it to the server. - `SYN ACK` - Server acknowledges the request by sending an `ACK` packet back to the client which is made up of a random number, let's say `y` picked up by server and the number `x+1` where `x` is the number that was sent by the client @@ -97,7 +89,7 @@ Once the three-way handshake is completed, the data sharing between the client a ![Three-way Handshake](https://i.imgur.com/uERG2G2.png) -> Please note that there is a minor issue with the image, the last `ACK` packet sent by the client to end the handshake contains only `y+1` i.e. it should have been `ACK:y+1` instead of `ACK: x+1, y+1` +> Please note that there is a minor issue with the image, the last `ACK` packet sent by the client to end the handshake contains only `y+1` i.e. it should have been `ACK:y+1` instead of `ACK: x+1, y+1` However, some implementations of `HTTP/1.0` tried to overcome this issue by introducing a new header called `Connection: keep-alive` which was meant to tell the server "Hey server, do not close this connection, I need it again". But still, it wasn't that widely supported and the problem still persisted. @@ -115,7 +107,7 @@ After merely 3 years of `HTTP/1.0`, the next version i.e. `HTTP/1.1` was release - **Pipelining** It also introduced the support for pipelining, where the client could send multiple requests to the server without waiting for the response from server on the same connection and server had to send the response in the same sequence in which requests were received. But how does the client know that this is the point where first response download completes and the content for next response starts, you may ask! Well, to solve this, there must be `Content-Length` header present which clients can use to identify where the response ends and it can start waiting for the next response. - > It should be noted that in order to benefit from persistent connections or pipelining, `Content-Length` header must be available on the response, because this would let the client know when the transmission completes and it can send the next request (in normal sequential way of sending requests) or start waiting for the next response (when pipelining is enabled). + > It should be noted that in order to benefit from persistent connections or pipelining, `Content-Length` header must be available on the response, because this would let the client know when the transmission completes and it can send the next request (in normal sequential way of sending requests) or start waiting for the next response (when pipelining is enabled). > But there was still an issue with this approach. And that is, what if the data is dynamic and server cannot find the content length before hand? Well in that case, you really can't benefit from persistent connections, could you?! In order to solve this `HTTP/1.1` introduced chunked encoding. In such cases server may omit content-Length in favor of chunked encoding (more to it in a moment). However, if none of them are available, then the connection must be closed at the end of request. @@ -129,7 +121,7 @@ After merely 3 years of `HTTP/1.0`, the next version i.e. `HTTP/1.1` was release - Client cookies - Enhanced compression support - New status codes -- ..and more +- ..and more I am not going to dwell about all the `HTTP/1.1` features in this post as it is a topic in itself and you can already find a lot about it. The one such document that I would recommend you to read is [Key differences between `HTTP/1.0` and HTTP/1.1](https://www.ra.ethz.ch/cdstore/www8/data/2136/pdf/pd1.pdf) and here is the link to [original RFC](https://tools.ietf.org/html/rfc2616) for the overachievers. @@ -137,7 +129,7 @@ I am not going to dwell about all the `HTTP/1.1` features in this post as it is ### SPDY - 2009 -Google went ahead and started experimenting with alternative protocols to make the web faster and improving web security while reducing the latency of web pages. In 2009, they announced `SPDY`. +Google went ahead and started experimenting with alternative protocols to make the web faster and improving web security while reducing the latency of web pages. In 2009, they announced `SPDY`. > `SPDY` is a trademark of Google and isn't an acronym. @@ -147,13 +139,13 @@ It was seen that if we keep increasing the bandwidth, the network performance in The features of `SPDY` included, multiplexing, compression, prioritization, security etc. I am not going to get into the details of SPDY, as you will get the idea when we get into the nitty gritty of `HTTP/2` in the next section as I said `HTTP/2` is mostly inspired from SPDY. -`SPDY` didn't really try to replace HTTP; it was a translation layer over HTTP which existed at the application layer and modified the request before sending it over to the wire. It started to become a defacto standards and majority of browsers started implementing it. +`SPDY` didn't really try to replace HTTP; it was a translation layer over HTTP which existed at the application layer and modified the request before sending it over to the wire. It started to become a defacto standards and majority of browsers started implementing it. -In 2015, at Google, they didn't want to have two competing standards and so they decided to merge it into HTTP while giving birth to `HTTP/2` and deprecating SPDY. +In 2015, at Google, they didn't want to have two competing standards and so they decided to merge it into HTTP while giving birth to `HTTP/2` and deprecating SPDY. ### HTTP/2 - 2015 -By now, you must be convinced that why we needed another revision of the HTTP protocol. `HTTP/2` was designed for low latency transport of content. The key features or differences from the old version of `HTTP/1.1` include +By now, you must be convinced that why we needed another revision of the HTTP protocol. `HTTP/2` was designed for low latency transport of content. The key features or differences from the old version of `HTTP/1.1` include - Binary instead of Textual - Multiplexing - Multiple asynchronous HTTP requests over a single connection @@ -164,25 +156,22 @@ By now, you must be convinced that why we needed another revision of the HTTP pr ![HTTP Model](https://i.imgur.com/S85j8gg.png) - #### 1. Binary Protocol `HTTP/2` tends to address the issue of increased latency that existed in HTTP/1.x by making it a binary protocol. Being a binary protocol, it easier to parse but unlike `HTTP/1.x` it is no longer readable by the human eye. The major building blocks of `HTTP/2` are Frames and Streams ##### Frames and Streams -HTTP messages are now composed of one or more frames. There is a `HEADERS` frame for the meta data and `DATA` frame for the payload and there exist several other types of frames (`HEADERS`, `DATA`, `RST_STREAM`, `SETTINGS`, `PRIORITY` etc) that you can check through [the `HTTP/2` specs](https:/http2.github.iohttp2-spec/#FrameTypes). +HTTP messages are now composed of one or more frames. There is a `HEADERS` frame for the meta data and `DATA` frame for the payload and there exist several other types of frames (`HEADERS`, `DATA`, `RST_STREAM`, `SETTINGS`, `PRIORITY` etc) that you can check through [the `HTTP/2` specs](https:/http2.github.iohttp2-spec/#FrameTypes). Every `HTTP/2` request and response is given a unique stream ID and it is divided into frames. Frames are nothing but binary pieces of data. A collection of frames is called a Stream. Each frame has a stream id that identifies the stream to which it belongs and each frame has a common header. Also, apart from stream ID being unique, it is worth mentioning that, any request initiated by client uses odd numbers and the response from server has even numbers stream IDs. Apart from the `HEADERS` and `DATA`, another frame type that I think worth mentioning here is `RST_STREAM` which is a special frame type that is used to abort some stream i.e. client may send this frame to let the server know that I don't need this stream anymore. In `HTTP/1.1` the only way to make the server stop sending the response to client was closing the connection which resulted in increased latency because a new connection had to be opened for any consecutive requests. While in HTTP/2, client can use `RST_STREAM` and stop receiving a specific stream while the connection will still be open and the other streams will still be in play. - #### 2. Multiplexing Since `HTTP/2` is now a binary protocol and as I said above that it uses frames and streams for requests and responses, once a TCP connection is opened, all the streams are sent asynchronously through the same connection without opening any additional connections. And in turn, the server responds in the same asynchronous way i.e. the response has no order and the client uses the assigned stream id to identify the stream to which a specific packet belongs. This also solves the **head-of-line blocking** issue that existed in HTTP/1.x i.e. the client will not have to wait for the request that is taking time and other requests will still be getting processed. - #### 3. HPACK Header Compression It was part of a separate RFC which was specifically aimed at optimizing the sent headers. The essence of it is that when we are constantly accessing the server from a same client there is alot of redundant data that we are sending in the headers over and over, and sometimes there might be cookies increasing the headers size which results in bandwidth usage and increased latency. To overcome this, `HTTP/2` introduced header compression. @@ -193,7 +182,6 @@ Unlike request and response, headers are not compressed in `gzip` or `compress` While we are talking headers, let me add here that the headers are still the same as in HTTP/1.1, except for the addition of some pseudo headers i.e. `:method`, `:scheme`, `:host` and `:path` - #### 4. Server Push Server push is another tremendous feature of `HTTP/2` where the server, knowing that the client is going to ask for a certain resource, can push it to the client without even client asking for it. For example, let's say a browser loads a web page, it parses the whole page to find out the remote content that it has to load from the server and then sends consequent requests to the server to get that content. @@ -210,8 +198,8 @@ Without any priority information, server processes the requests asynchronously i There was extensive discussion on whether security (through `TLS`) should be made mandatory for `HTTP/2` or not. In the end, it was decided not to make it mandatory. However, most vendors stated that they will only support `HTTP/2` when it is used over `TLS`. So, although `HTTP/2` doesn't require encryption by specs but it has kind of become mandatory by default anyway. With that out of the way, `HTTP/2` when implemented over `TLS` does impose some requirements i.e. `TLS` version `1.2` or higher must be used, there must be a certain level of minimum key sizes, ephemeral keys are required etc. -`HTTP/2` is here and it has already [surpassed SPDY in adaption](https://caniuse.com/#search=http2) which is gradually increasing. `HTTP/2` has alot to offer in terms of performance gain and it is about time we should start using it. +`HTTP/2` is here and it has already [surpassed SPDY in adaption](https://caniuse.com/#search=http2) which is gradually increasing. `HTTP/2` has alot to offer in terms of performance gain and it is about time we should start using it. -For anyone interested in further details here is the [link to specs](https:/http2.github.iohttp2-spec) and a link [demonstrating the performance benefits of `HTTP/2`](https://www.http2demo.io/). +For anyone interested in further details here is the [link to specs](https:/http2.github.iohttp2-spec) and a link [demonstrating the performance benefits of `HTTP/2`](https://www.http2demo.io/). And that about wraps it up. Until next time! stay tuned. diff --git a/src/data/guides/jwt-authentication.md b/src/data/guides/jwt-authentication.md index 871cca708..5a1faa514 100644 --- a/src/data/guides/jwt-authentication.md +++ b/src/data/guides/jwt-authentication.md @@ -1,24 +1,23 @@ --- -title: "JWT Authentication" -description: "Understand what is JWT authentication and how is it implemented" +title: 'JWT Authentication' +description: 'Understand what is JWT authentication and how is it implemented' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "JWT Authentication - roadmap.sh" - description: "Understand what is JWT authentication and how is it implemented" + title: 'JWT Authentication - roadmap.sh' + description: 'Understand what is JWT authentication and how is it implemented' isNew: false -type: "visual" +type: 'visual' date: 2021-06-20 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![JWT Authentication](/guides/jwt-authentication.png)](/guides/jwt-authentication.png) - diff --git a/src/data/guides/levels-of-seniority.md b/src/data/guides/levels-of-seniority.md index 8d29a0084..d5d9ffb61 100644 --- a/src/data/guides/levels-of-seniority.md +++ b/src/data/guides/levels-of-seniority.md @@ -1,23 +1,23 @@ --- -title: "Levels of Seniority" -description: "How to Step Up as a Junior, Mid Level or a Senior Developer?" +title: 'Levels of Seniority' +description: 'How to Step Up as a Junior, Mid Level or a Senior Developer?' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Levels of Seniority - roadmap.sh" - description: "How to Step Up as a Junior, Mid Level or a Senior Developer?" + title: 'Levels of Seniority - roadmap.sh' + description: 'How to Step Up as a Junior, Mid Level or a Senior Developer?' isNew: false -type: "textual" +type: 'textual' date: 2020-12-03 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- I have been working on redoing the [roadmaps](https://roadmap.sh) – splitting the skillset based on the seniority levels to make them easier to follow and not scare the new developers away. Since the roadmaps are going to be just about the technical knowledge, I thought it would be a good idea to reiterate and have an article on what I think of different seniority roles. @@ -25,47 +25,50 @@ I have been working on redoing the [roadmaps](https://roadmap.sh) – splitting I have seen many organizations decide the seniority of developers by giving more significance to the years of experience than they should. I have seen developers labeled "Junior" doing the work of Senior Developers and I have seen "Lead" developers who weren't even qualified to be called "Senior". The seniority of a developer cannot just be decided by their age, years of experience or technical knowledge that they have got. There are other factors in play here -- their perception of work, how they interact with their peers and how they approach problems. We discuss these three key factors in detail for each of the seniority levels below. ### Different Seniority Titles + Different organizations might have different seniority titles but they mainly fall into three categories: -* Junior Developer -* Mid Level Developer -* Senior Developer +- Junior Developer +- Mid Level Developer +- Senior Developer ### Junior Developer + Junior developers are normally fresh graduates and it's either they don't have or they have minimal industry experience. Not only they have weak coding skills but there are also a few other things that give Junior developers away: -* Their main mantra is "making it work" without giving much attention to how the solution is achieved. To them, a working software and good software are equivalent. -* They usually require very specific and structured directions to achieve something. They suffer from tunnel vision, need supervision and continuous guidance to be effective team members. -* Most of the Junior developers just try to live up to the role and, when stuck, they might leave work for a senior developer instead of at least trying to take a stab at something. -* They don't know about the business side of the company and don't realize how management/sales/marketing/etc think and they don't realize how much rework, wasted effort, and end-user aggravation could be saved by getting to know the business domain. -* Over-engineering is a major problem, often leading to fragility and bugs. -* When given a problem, they often try to fix just the current problem a.k.a. fixing the symptoms instead of fixing the root problem. -* You might notice the "[Somebody Else's Problem](https://en.wikipedia.org/wiki/Somebody_else%27s_problem)" behavior from them. -* They don't know what or how much they don't know, thanks to the [Dunning–Kruger effect](https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect). -* They don't take initiatives and they might be afraid to work on an unfamiliar codebase. -* They don't participate in team discussions. +- Their main mantra is "making it work" without giving much attention to how the solution is achieved. To them, a working software and good software are equivalent. +- They usually require very specific and structured directions to achieve something. They suffer from tunnel vision, need supervision and continuous guidance to be effective team members. +- Most of the Junior developers just try to live up to the role and, when stuck, they might leave work for a senior developer instead of at least trying to take a stab at something. +- They don't know about the business side of the company and don't realize how management/sales/marketing/etc think and they don't realize how much rework, wasted effort, and end-user aggravation could be saved by getting to know the business domain. +- Over-engineering is a major problem, often leading to fragility and bugs. +- When given a problem, they often try to fix just the current problem a.k.a. fixing the symptoms instead of fixing the root problem. +- You might notice the "[Somebody Else's Problem](https://en.wikipedia.org/wiki/Somebody_else%27s_problem)" behavior from them. +- They don't know what or how much they don't know, thanks to the [Dunning–Kruger effect](https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect). +- They don't take initiatives and they might be afraid to work on an unfamiliar codebase. +- They don't participate in team discussions. Being a Junior developer in the team is not necessarily a bad thing; since you are just starting out, you are not expected to be a know-it-all person. However, it is your responsibility to learn, gain experience, not get stuck with the "Junior" title and improve yourself. Here are a few tips for Junior developers to help move up the ladder of seniority: -* All sorts of problems can be solved if you work on them long enough. Do not give up if Stack Overflow or an issue on GitHub doesn't have an answer. Saying "I am stuck, but I have tried X, Y, and Z. Do you have any pointers?" to your lead is much better than saying "This is beyond me." -* Read a lot of code, not just code in the projects that you are working on, but reference/framework source code, open-source. Ask your fellow developers, perhaps on Reddit too, about the good open-source examples for the language/tools of your choice. -* Do personal side-projects, share them with people, contribute to the open-source community. Reach out to people for help. You will be surprised how much support you can get from the community. I still remember my first open-source project on GitHub from around 6 years ago which was a small PHP script (a library) that fetched details for a given address from Google's Geocoding API. The codebase was super messy, it did not have any tests, did not have any linters or sniffers, and it did not have any CI because I didn't know about any of this at that time. I am not sure how but one kind soul somehow found the project, forked it, refactored it, "modernized" it, added linting, code sniffing, added CI and opened the pull request. This one pull request taught me so many things that I might have never learned that fast on my own because I was still in college, working for a small service-based company and doing just small websites all on my own without knowing what is right and what is not. This one PR on GitHub was my introduction to open-source and I owe everything to that. -* Avoid what is known as ["Somebody Else's Problem Field"](https://en.wikipedia.org/wiki/Somebody_else%27s_problem) behavior. -* When given a problem to solve, try to identify the root cause and fix that instead of fixing the symptoms. And remember, not being able to reproduce means not solved. It is solved when you understand why it occurred and why it no longer does. -* Have respect for the code that was written before you. Be generous when passing judgment on the architecture or the design decisions made in the codebase. Understand that code is often ugly and weird for a reason other than incompetence. Learning to live with and thrive with legacy code is a great skill. Never assume anybody is stupid. Instead, figure out how these intelligent, well-intentioned and experienced people have come to a decision that is stupid now. Approach inheriting legacy code with an "opportunity mindset" rather than a complaining one. -* It's okay to not know things. You don't need to be ashamed of not knowing things already. There are no stupid questions, ask however many questions that would allow you to work effectively. -* Don't let yourself be limited by the job title that you have. Keep working on your self-improvement. -* Do your homework. Predict what’s coming down the pipe. Be involved in the team discussions. Even if you are wrong, you will learn something. -* Learn about the domain that you are working with. Understand the product end-to-end as an end-user. Do not assume things, ask questions and get things cleared when in doubt. -* Learn to communicate effectively - soft skills matter. Learn how to write good emails, how to present your work, how to phrase your questions in a thoughtful manner. -* Sit with the senior developers, watch them work, find a mentor. No one likes a know-it-all. Get hold of your ego and be humble enough to take lessons from experienced people. -* Don't just blindly follow the advice of "experts", take it with a grain of salt. -* If you are asked to provide an estimate for some work, do not give an answer unless you have all the details to make a reasonable estimate. If you are forced to do that, pad it 2x or more depending on how much you don't know about what needs to be done for the task to be marked 'done'. -* Take some time to learn how to use a debugger. Debuggers are quite beneficial when navigating new, undocumented or poorly documented codebase, or to debug weird issues. -* Avoid saying "it works on my machine" -- yes, I have heard that a lot. -* Try to turn any feelings of inadequacy or imposter syndrome into energy to push yourself forward and increase your skills and knowledge. +- All sorts of problems can be solved if you work on them long enough. Do not give up if Stack Overflow or an issue on GitHub doesn't have an answer. Saying "I am stuck, but I have tried X, Y, and Z. Do you have any pointers?" to your lead is much better than saying "This is beyond me." +- Read a lot of code, not just code in the projects that you are working on, but reference/framework source code, open-source. Ask your fellow developers, perhaps on Reddit too, about the good open-source examples for the language/tools of your choice. +- Do personal side-projects, share them with people, contribute to the open-source community. Reach out to people for help. You will be surprised how much support you can get from the community. I still remember my first open-source project on GitHub from around 6 years ago which was a small PHP script (a library) that fetched details for a given address from Google's Geocoding API. The codebase was super messy, it did not have any tests, did not have any linters or sniffers, and it did not have any CI because I didn't know about any of this at that time. I am not sure how but one kind soul somehow found the project, forked it, refactored it, "modernized" it, added linting, code sniffing, added CI and opened the pull request. This one pull request taught me so many things that I might have never learned that fast on my own because I was still in college, working for a small service-based company and doing just small websites all on my own without knowing what is right and what is not. This one PR on GitHub was my introduction to open-source and I owe everything to that. +- Avoid what is known as ["Somebody Else's Problem Field"](https://en.wikipedia.org/wiki/Somebody_else%27s_problem) behavior. +- When given a problem to solve, try to identify the root cause and fix that instead of fixing the symptoms. And remember, not being able to reproduce means not solved. It is solved when you understand why it occurred and why it no longer does. +- Have respect for the code that was written before you. Be generous when passing judgment on the architecture or the design decisions made in the codebase. Understand that code is often ugly and weird for a reason other than incompetence. Learning to live with and thrive with legacy code is a great skill. Never assume anybody is stupid. Instead, figure out how these intelligent, well-intentioned and experienced people have come to a decision that is stupid now. Approach inheriting legacy code with an "opportunity mindset" rather than a complaining one. +- It's okay to not know things. You don't need to be ashamed of not knowing things already. There are no stupid questions, ask however many questions that would allow you to work effectively. +- Don't let yourself be limited by the job title that you have. Keep working on your self-improvement. +- Do your homework. Predict what’s coming down the pipe. Be involved in the team discussions. Even if you are wrong, you will learn something. +- Learn about the domain that you are working with. Understand the product end-to-end as an end-user. Do not assume things, ask questions and get things cleared when in doubt. +- Learn to communicate effectively - soft skills matter. Learn how to write good emails, how to present your work, how to phrase your questions in a thoughtful manner. +- Sit with the senior developers, watch them work, find a mentor. No one likes a know-it-all. Get hold of your ego and be humble enough to take lessons from experienced people. +- Don't just blindly follow the advice of "experts", take it with a grain of salt. +- If you are asked to provide an estimate for some work, do not give an answer unless you have all the details to make a reasonable estimate. If you are forced to do that, pad it 2x or more depending on how much you don't know about what needs to be done for the task to be marked 'done'. +- Take some time to learn how to use a debugger. Debuggers are quite beneficial when navigating new, undocumented or poorly documented codebase, or to debug weird issues. +- Avoid saying "it works on my machine" -- yes, I have heard that a lot. +- Try to turn any feelings of inadequacy or imposter syndrome into energy to push yourself forward and increase your skills and knowledge. ### Mid Level Developers + The next level after the Junior developers is Mid Level developers. They are technically stronger than the Junior developers and can work with minimal supervision. They still have some issues to address in order to jump to Senior level. Intermediate developers are more competent than the Junior developer. They start to see the flaws in their old codebase. They gain the knowledge but they get trapped into the next chain i.e. messing things up while trying to do them "the right way" e.g. hasty abstractions, overuse or unnecessary usage of Design Patterns -- they may be able to provide solution faster than the Junior developers but the solution might put you into another rabbit-hole in the long run. Without supervision, they might delay the execution while trying to "do things properly". They don't know when to make tradeoffs and they still don't know when to be dogmatic and when to be pragmatic. They can easily become attached to their solution, become myopic, and be unable to take feedback. @@ -73,21 +76,23 @@ Intermediate developers are more competent than the Junior developer. They start Mid-level developers are quite common. Most of the organizations wrongly label them as "Senior Developers". However, they need further mentoring in order to become Senior Developers. The next section describes the responsibilities of a senior developer and how you can become one. ### Senior Developers + Senior developers are the next level after the Mid-level developers. They are the people who can get things done on their own without any supervision and without creating any issues down the road. They are more mature, have gained experience by delivering both good and bad software in the past and have learned from it — they know how to be pragmatic. Here is the list of things that are normally expected of a Senior Developer: -* With their past experiences, mistakes made, issues faced by over-designed or under-designed software, they can foresee the problems and persuade the direction of the codebase or the architecture. -* They don't have a "Shiny-Toy" syndrome. They are pragmatic in the execution. They can make the tradeoffs when required, and they know why. They know where to be dogmatic and where to be pragmatic. -* They have a good picture of the field, know what the best tool for the job is in most cases (even if they don't know the tool). They have the innate ability to pick up a new tool/language/paradigm/etc in order to solve a problem that requires it. -* They are aware they're on a team. They view it as a part of their responsibility to mentor others. This can range from pair programming with junior devs to taking un-glorious tasks of writing docs or tests or whatever else needs to be done. -* They have a deep understanding of the domain - they know about the business side of the company and realize how management/sales/marketing/etc think and benefit from their knowledge of the business domain during the development. -* They don't make empty complaints, they make judgments based on the empirical evidence and they have suggestions for solutions. -* They think much more than just code - they know that their job is to provide solutions to the problems and not just to write code. -* They have the ability to take on large ill-defined problems, define them, break them up, and execute the pieces. A senior developer can take something big and abstract, and run with it. They will come up with a few options, discuss them with the team and implement them. -* They have respect for the code that was written before them. They are generous when passing judgment on the architecture or the design decisions made in the codebase. They approach inheriting legacy code with an "opportunity mindset" rather than a complaining one. -* They know how to give feedback without hurting anyone. +- With their past experiences, mistakes made, issues faced by over-designed or under-designed software, they can foresee the problems and persuade the direction of the codebase or the architecture. +- They don't have a "Shiny-Toy" syndrome. They are pragmatic in the execution. They can make the tradeoffs when required, and they know why. They know where to be dogmatic and where to be pragmatic. +- They have a good picture of the field, know what the best tool for the job is in most cases (even if they don't know the tool). They have the innate ability to pick up a new tool/language/paradigm/etc in order to solve a problem that requires it. +- They are aware they're on a team. They view it as a part of their responsibility to mentor others. This can range from pair programming with junior devs to taking un-glorious tasks of writing docs or tests or whatever else needs to be done. +- They have a deep understanding of the domain - they know about the business side of the company and realize how management/sales/marketing/etc think and benefit from their knowledge of the business domain during the development. +- They don't make empty complaints, they make judgments based on the empirical evidence and they have suggestions for solutions. +- They think much more than just code - they know that their job is to provide solutions to the problems and not just to write code. +- They have the ability to take on large ill-defined problems, define them, break them up, and execute the pieces. A senior developer can take something big and abstract, and run with it. They will come up with a few options, discuss them with the team and implement them. +- They have respect for the code that was written before them. They are generous when passing judgment on the architecture or the design decisions made in the codebase. They approach inheriting legacy code with an "opportunity mindset" rather than a complaining one. +- They know how to give feedback without hurting anyone. ### Conclusion -All teams are made up of a mix of all these seniority roles. Being content with your role is a bad thing and you should always strive to improve yourself for the next step. This article is based on my beliefs and observations in the industry. Lots of companies care more for the years of experience to decide the seniority which is a crappy metric -- you don't gain experience just by spending years. You gain it by continuously solving different sorts of problems, irrespective of the number of years you spend in the industry. I have seen fresh graduates having no industry experience get up to speed quickly and producing work of a Senior Engineer and I have seen Senior developers labeled "senior" merely because of their age and "years of experience". + +All teams are made up of a mix of all these seniority roles. Being content with your role is a bad thing and you should always strive to improve yourself for the next step. This article is based on my beliefs and observations in the industry. Lots of companies care more for the years of experience to decide the seniority which is a crappy metric -- you don't gain experience just by spending years. You gain it by continuously solving different sorts of problems, irrespective of the number of years you spend in the industry. I have seen fresh graduates having no industry experience get up to speed quickly and producing work of a Senior Engineer and I have seen Senior developers labeled "senior" merely because of their age and "years of experience". The most important traits that you need to have in order to step up in your career are: not settling with mediocrity, having an open mindset, being humble, learning from your mistakes, working on the challenging problems and having an opportunity mindset rather than a complaining one. diff --git a/src/data/guides/oauth.md b/src/data/guides/oauth.md index 42e1ea278..0fc5efcd2 100644 --- a/src/data/guides/oauth.md +++ b/src/data/guides/oauth.md @@ -1,24 +1,23 @@ --- -title: "OAuth — Open Authorization" -description: "Learn and understand what is OAuth and how it works" +title: 'OAuth — Open Authorization' +description: 'Learn and understand what is OAuth and how it works' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "OAuth — Open Authorization - roadmap.sh" - description: "Learn and understand what is OAuth and how it works" + title: 'OAuth — Open Authorization - roadmap.sh' + description: 'Learn and understand what is OAuth and how it works' isNew: false -type: "visual" +type: 'visual' date: 2021-06-28 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![OAuth - Open Authorization](/guides/oauth.png)](/guides/oauth.png) - diff --git a/src/data/guides/proxy-servers.md b/src/data/guides/proxy-servers.md index 7f45a25b4..de53315cf 100644 --- a/src/data/guides/proxy-servers.md +++ b/src/data/guides/proxy-servers.md @@ -1,69 +1,72 @@ --- -title: "Proxy Servers" -description: "How do proxy servers work and what are forward and reverse proxies?" +title: 'Proxy Servers' +description: 'How do proxy servers work and what are forward and reverse proxies?' author: - name: "Ebrahim Bharmal" - url: "https://twitter.com/BharmalEbrahim" - imageUrl: "/authors/ebrahimbharmal007.png" + name: 'Ebrahim Bharmal' + url: 'https://twitter.com/BharmalEbrahim' + imageUrl: '/authors/ebrahimbharmal007.png' seo: - title: "Proxy Servers - roadmap.sh" - description: "How do proxy servers work and what are forward and reverse proxies?" + title: 'Proxy Servers - roadmap.sh' + description: 'How do proxy servers work and what are forward and reverse proxies?' isNew: false -type: "textual" +type: 'textual' date: 2017-10-24 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- -The Internet has connected people across the world using social media and audio/video calling features along with providing an overabundance of knowledge and tools. All this comes with an inherent danger of security and privacy breaches. In this guide, we will talk about **proxies** that play a vital role in mitigating these risks. We will cover the following topics in this guide: +The Internet has connected people across the world using social media and audio/video calling features along with providing an overabundance of knowledge and tools. All this comes with an inherent danger of security and privacy breaches. In this guide, we will talk about **proxies** that play a vital role in mitigating these risks. We will cover the following topics in this guide: - [Proxy Server](#proxy-server) - [Forward Proxy Server](#forward-proxy-server) - [Reverse Proxy Server](#reverse-proxy-server) - [Summary](#summary) -## Proxy Server +## Proxy Server -***Every web request which is sent from the client to a web server goes through some type of proxy server.*** A proxy server acts as a gateway between client *(you)* and the internet and separates end-users from the websites you browse. It replaces the source IP address of the web request with the proxy server's IP address and then forwards it to the web server. The web server is unaware of the client, it only sees the proxy server. +**_Every web request which is sent from the client to a web server goes through some type of proxy server._** A proxy server acts as a gateway between client _(you)_ and the internet and separates end-users from the websites you browse. It replaces the source IP address of the web request with the proxy server's IP address and then forwards it to the web server. The web server is unaware of the client, it only sees the proxy server. -![Proxy Server Description](/guides/proxy/proxy-example.png) -> NOTE: This is not an accurate description but rather just an illustration. +![Proxy Server Description](/guides/proxy/proxy-example.png) + +> NOTE: This is not an accurate description but rather just an illustration. Proxy servers serve as a single point of control making it easier to enforce security policies. It also provides caching mechanism which stores the requested web pages on the proxy server to improve performance. If the requested web-page is available in cache memory then instead of forwarding the request to the web-server it will send the cached webpage back to the client. This **saves big companies thousands of dollars** by reducing the load on their servers as their website is visited by millions of users every day. - -## Forward Proxy Server -A forward proxy is generally implemented on the client side and **sits in front of multiple clients** or client sources. Forward proxy servers are mainly used by companies to **manage the internet usage** of their employees and **restrict content**. It is also used as a **firewall** to secure the company's network by blocking any request which would pose threat to the company's network. Proxy servers are also used to **bypass geo-restriction** and browse content that might be blocked in the user's country. It enables users to **browse anonymously**, as the proxy server masks their details from the website's servers. +## Forward Proxy Server + +A forward proxy is generally implemented on the client side and **sits in front of multiple clients** or client sources. Forward proxy servers are mainly used by companies to **manage the internet usage** of their employees and **restrict content**. It is also used as a **firewall** to secure the company's network by blocking any request which would pose threat to the company's network. Proxy servers are also used to **bypass geo-restriction** and browse content that might be blocked in the user's country. It enables users to **browse anonymously**, as the proxy server masks their details from the website's servers. + +![Forward Proxy Description](/guides/proxy/forward-proxy.png) -![Forward Proxy Description](/guides/proxy/forward-proxy.png) > NOTE: This is not an accurate description but rather just an illustration -## Reverse Proxy Server +## Reverse Proxy Server + +Reverse proxy servers are implemented on the **server side** instead of the client side. It **sits in front of multiple webservers** and manages incoming requests by forwarding them to the web servers. It provides anonymity for the **back-end web servers and not the client**. Reverse proxy servers are generally used to perform tasks such as **authentication, content caching, and encryption/decryption** on behalf of the web server. These tasks would **hog CPU cycles** on the web server and degrade the performance of the website by introducing a high amount of delay in loading the webpage. Reverse proxies are also used as **load balancers** to distribute the incoming traffic efficiently among the web servers but it is **not optimized** for this task. In essence, a reverse proxy server is a gateway to a web-server or group of web-servers. -Reverse proxy servers are implemented on the **server side** instead of the client side. It **sits in front of multiple webservers** and manages incoming requests by forwarding them to the web servers. It provides anonymity for the **back-end web servers and not the client**. Reverse proxy servers are generally used to perform tasks such as **authentication, content caching, and encryption/decryption** on behalf of the web server. These tasks would **hog CPU cycles** on the web server and degrade the performance of the website by introducing a high amount of delay in loading the webpage. Reverse proxies are also used as **load balancers** to distribute the incoming traffic efficiently among the web servers but it is **not optimized** for this task. In essence, a reverse proxy server is a gateway to a web-server or group of web-servers. +![Reverse Proxy Description](/guides/proxy/reverse-proxy.png) -![Reverse Proxy Description](/guides/proxy/reverse-proxy.png) -> NOTE: This is not an accurate description but rather just an illustration. Red lines represent the server's response and black lines represent the initial request from client(s). +> NOTE: This is not an accurate description but rather just an illustration. Red lines represent the server's response and black lines represent the initial request from client(s). -## Summary +## Summary -A proxy server acts as a gateway between client *(you)* and the internet and separates end-users from the websites you browse. ***The position of the proxy server on the network determines whether it is a forward or a reverse proxy server***. A Forward proxy is implemented on the client side and **sits in front of multiple clients** or client sources and forwards requests to the web server. Reverse proxy servers are implemented on the **server side** it **sits in front of multiple webservers** and manage the incoming requests by forwarding them to the web servers. +A proxy server acts as a gateway between client _(you)_ and the internet and separates end-users from the websites you browse. **_The position of the proxy server on the network determines whether it is a forward or a reverse proxy server_**. A Forward proxy is implemented on the client side and **sits in front of multiple clients** or client sources and forwards requests to the web server. Reverse proxy servers are implemented on the **server side** it **sits in front of multiple webservers** and manage the incoming requests by forwarding them to the web servers. -If all this was too much to take in, I have a simple analogy for you. +If all this was too much to take in, I have a simple analogy for you. -At a restaurant, the waiter/waitress takes your order and gives it to the kitchen head chef. The head chef then calls out the order and assigns tasks to everyone in the kitchen. +At a restaurant, the waiter/waitress takes your order and gives it to the kitchen head chef. The head chef then calls out the order and assigns tasks to everyone in the kitchen. -In this analogy: +In this analogy: -* You are the client -* Your order is the web request -* Waiter/Waitress is your forward proxy server -* Kitchen head chef is the reverse proxy server -* Other chefs working in the kitchen are the web servers +- You are the client +- Your order is the web request +- Waiter/Waitress is your forward proxy server +- Kitchen head chef is the reverse proxy server +- Other chefs working in the kitchen are the web servers With that said our guide comes to an end. Thank you for reading and feel free to submit any updates to the guide using the links below. diff --git a/src/data/guides/random-numbers.md b/src/data/guides/random-numbers.md index 4b9c6eda3..96389c310 100644 --- a/src/data/guides/random-numbers.md +++ b/src/data/guides/random-numbers.md @@ -1,26 +1,25 @@ --- -title: "Random Numbers: Are they?" -description: "Learn how they are generated and why they may not be truly random." +title: 'Random Numbers: Are they?' +description: 'Learn how they are generated and why they may not be truly random.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Random Numbers: Are they? - roadmap.sh" - description: "Learn how they are generated and why they may not be truly random." + title: 'Random Numbers: Are they? - roadmap.sh' + description: 'Learn how they are generated and why they may not be truly random.' isNew: false -type: "visual" +type: 'visual' date: 2021-03-14 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- -Random numbers are everywhere from computer games to lottery systems, graphics software, statistical sampling, computer simulation and cryptography. Graphic below is a quick explanation to how the random numbers are generated and why they may not be truly random. +Random numbers are everywhere from computer games to lottery systems, graphics software, statistical sampling, computer simulation and cryptography. Graphic below is a quick explanation to how the random numbers are generated and why they may not be truly random. [![Random Numbers](/guides/random-numbers.png)](/guides/random-numbers.png) - diff --git a/src/data/guides/scaling-databases.md b/src/data/guides/scaling-databases.md index fcd6390fa..ebbed72d4 100644 --- a/src/data/guides/scaling-databases.md +++ b/src/data/guides/scaling-databases.md @@ -1,26 +1,25 @@ --- -title: "Scaling Databases" -description: "Learn the ups and downs of different database scaling strategies" +title: 'Scaling Databases' +description: 'Learn the ups and downs of different database scaling strategies' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Scaling Databases - roadmap.sh" - description: "Learn the ups and downs of different database scaling strategies" + title: 'Scaling Databases - roadmap.sh' + description: 'Learn the ups and downs of different database scaling strategies' isNew: false -type: "visual" +type: 'visual' date: 2021-02-18 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- The chart below aims to give you a really basic understanding of how the capability of a DBMS is increased to handle a growing amount of load. [![Scaling Databases](/guides/scaling-databases.svg)](/guides/scaling-databases.svg) - diff --git a/src/data/guides/session-authentication.md b/src/data/guides/session-authentication.md index 2a9cb7194..355e0d801 100644 --- a/src/data/guides/session-authentication.md +++ b/src/data/guides/session-authentication.md @@ -1,24 +1,23 @@ --- -title: "Session Based Authentication" -description: "Understand what is session based authentication and how it is implemented" +title: 'Session Based Authentication' +description: 'Understand what is session based authentication and how it is implemented' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Session Based Authentication - roadmap.sh" - description: "Understand what is session based authentication and how it is implemented" + title: 'Session Based Authentication - roadmap.sh' + description: 'Understand what is session based authentication and how it is implemented' isNew: false -type: "visual" +type: 'visual' date: 2021-05-26 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![Session Authentication](/guides/session-authentication.png)](/guides/session-authentication.png) - diff --git a/src/data/guides/session-based-authentication.md b/src/data/guides/session-based-authentication.md index 8d4f4c7a9..c06006f9c 100644 --- a/src/data/guides/session-based-authentication.md +++ b/src/data/guides/session-based-authentication.md @@ -1,43 +1,46 @@ --- -title: "Session Based Authentication" -description: "Learn what is Session Based Authentication and how to implement it in Node.js" +title: 'Session Based Authentication' +description: 'Learn what is Session Based Authentication and how to implement it in Node.js' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Session Based Authentication - roadmap.sh" - description: "Learn what is Session Based Authentication and how to implement it in Node.js" + title: 'Session Based Authentication - roadmap.sh' + description: 'Learn what is Session Based Authentication and how to implement it in Node.js' isNew: false -type: "textual" +type: 'textual' date: 2022-11-01 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- HTTP is the internet protocol that standardizes how clients and servers interact with each other. When you open a website, among other things, HTTP is the protocol that helps load the website in the browser. ## HTTP is Stateless + HTTP is a stateless protocol which means that each request made from the client to the server is treated as a standalone request; neither the client nor the server keeps track of the subsequent requests. Sessions allow you to change that; with sessions, the server has a way to associate some information with the client so that when the same client requests the server, it can retrieve that information. In this guide, we will learn what is Session-Based Authentication and how to implement it in Node.js. We also have a separate [visual guide on Session-Based Authentication](/guides/session-authentication) as well that explains the topic visually. ## What is Session-Based Authentication? + Session-based authentication is a stateful authentication technique where we use sessions to keep track of the authenticated user. Here is how Session Based Authentication works: -* User submits the login request for authentication. -* Server validates the credentials. If the credentials are valid, the server initiates a session and stores some information about the client. This information can be stored in memory, file system, or database. The server also generates a unique identifier that it can later use to retrieve this session information from the storage. Server sends this unique session identifier to the client. -* Client saves the session id in a cookie and this cookie is sent to the server in each request made after the authentication. -* Server, upon receiving a request, checks if the session id is present in the request and uses this session id to get information about the client. +- User submits the login request for authentication. +- Server validates the credentials. If the credentials are valid, the server initiates a session and stores some information about the client. This information can be stored in memory, file system, or database. The server also generates a unique identifier that it can later use to retrieve this session information from the storage. Server sends this unique session identifier to the client. +- Client saves the session id in a cookie and this cookie is sent to the server in each request made after the authentication. +- Server, upon receiving a request, checks if the session id is present in the request and uses this session id to get information about the client. And that is how session-based authentication works. ## Session-Based Authentication in Node.js + Now that we know what session-based authentication is, let's see how we can implement session-based authentication in Node.js. Please note that, for the sake of simplicity, I have intentionally kept the project strictly relevant to the Session Based Authentication and have left out a lot of details that a production-ready application may require. Also, if you don't want to follow along, project [codebase can be found on GitHub](https://github.com/kamranahmedse/node-session-auth-example). @@ -47,17 +50,23 @@ First things first, create an empty directory that will be holding our applicati ```shell mkdir session-auth-example ``` + Now run the following command to setup a sample `package.json` file: + ```shell npm init -y ``` + Next, we need to install the dependencies: + ```shell npm install express express-session ``` + `Express` is the application framework, and `express-session` is the package that helps work with sessions easily. ### Setting up the server + Now create an `index.js` file at the root of the project with the following content: ```javascript @@ -66,17 +75,19 @@ const sessions = require('express-session'); const app = express(); -app.use(sessions({ - secret: "some secret", - cookie: { - maxAge: 1000 * 60 * 60 * 24 // 24 hours - }, - resave: true, - saveUninitialized: false, -})); +app.use( + sessions({ + secret: 'some secret', + cookie: { + maxAge: 1000 * 60 * 60 * 24, // 24 hours + }, + resave: true, + saveUninitialized: false, + }) +); app.use(express.json()); -app.use(express.urlencoded({extended: true})); +app.use(express.urlencoded({ extended: true })); // @todo register routes @@ -84,17 +95,20 @@ app.listen(3000, () => { console.log(`Server Running at port 3000`); }); ``` + The important piece to note here is the `express-session` middleware registration which automatically handles the session initialization, cooking parsing and session data retrieval, and so on. In our example here, we are passing the following configuration options: -* `secret`: This is used to sign the session ID cookie. Using a secret that cannot be guessed will reduce the ability to hijack a session. -* `cookie`: Object containing the configuration for session id cookie. -* `resave`: Forces the session to be saved back to the session store, even if the session data was never modified during the request. -* `saveUninitialized`: Forces an "uninitialized" session to be saved to the store, i.e., saves a session to the store even if the session was not initiated. + +- `secret`: This is used to sign the session ID cookie. Using a secret that cannot be guessed will reduce the ability to hijack a session. +- `cookie`: Object containing the configuration for session id cookie. +- `resave`: Forces the session to be saved back to the session store, even if the session data was never modified during the request. +- `saveUninitialized`: Forces an "uninitialized" session to be saved to the store, i.e., saves a session to the store even if the session was not initiated. Another important option is `store` which we can configure to change how/where the session data is stored on the server. By default, this data is stored in the memory, i.e., `MemoryStore`. Look at the [express-session documentation](https://github.com/expressjs/session) to learn more about the available options. ### Creating Handlers + Create a directory called the `handlers` at the project's root. This is the directory where we will be placing all the route-handling functions. Now let's create the homepage route, which will show the welcome message and a link to log out for the logged-in users and redirect to the login screen for the logged-out users. Create a file at `handlers/home.js` with the following content. @@ -105,14 +119,14 @@ module.exports = function HomeHandler(req, res) { return res.redirect('/login'); } - res.setHeader('Content-Type', 'text/HTML') + res.setHeader('Content-Type', 'text/HTML'); res.write(`

Welcome back ${req.session.userid}

Logout `); - res.end() -} + res.end(); +}; ``` At the top of this function, you will notice the check `req.session.userid`. `req.session` is automatically populated using the session cookie by the `express-session` middleware that we registered earlier. `req.session.userid` is one of the data fields that we will set to store the `userid` of the logged in user. @@ -133,7 +147,7 @@ module.exports = function LoginHandler(req, res) { return res.redirect('/'); } - res.setHeader('Content-Type', 'text/HTML') + res.setHeader('Content-Type', 'text/HTML'); res.write(`

Login

@@ -144,8 +158,9 @@ module.exports = function LoginHandler(req, res) { `); res.end(); -} +}; ``` + Again, at the top of the function, we are simply checking if we have `userid` in the session (which means the user is logged in). If the user is logged in, we redirect them to the homepage; if not, we show the login screen. In the login form, we have the method of `post`, and we submit the form to `/process-login`. Please note that, for the sake of simplicity, we have a simple HTML string returned in the response, but in a real-world application, you will probably have a separate view file. Let's first register this page and then implement `/process-login` endpoint. Open the `index.js` file from the root of the project and register the following route: @@ -173,7 +188,7 @@ module.exports = function processLogin(req, res) { As you can see, we are simply checking that the username and password should both be `admin` and `admin` for a user to authenticate successfully. Upon finding valid credentials, we set the `userid` in the session by updating `req.session.userid`. Similarly, you can set any data in the session. For example, if we wanted to store the user role, we would do the following: ```javascript -req.session.role = 'admin' +req.session.role = 'admin'; ``` And later access this value out of the session anywhere in the subsequent requests. @@ -189,10 +204,10 @@ app.post('/process-login', ProcessLoginHandler); Finally, we have the logout functionality. Create a file at `handlers/logout.js` with the following content: ```javascript -module.exports = function Logout(req, res) { +module.exports = function Logout(req, res) { req.session.destroy(); res.redirect('/'); -} +}; ``` We reset the session by calling `req.session.destroy()` and then redirecting the user to the homepage. Register the logout handler in the `index.js` file using the following: @@ -204,13 +219,14 @@ app.get('/logout', LogoutHandler); ``` ## Running the Application + Open the `package.json` file and register the `start` script as follows: ```javascript "scripts": { "start": "node index.js" }, -``` +``` Now you can start the application by running the following command: diff --git a/src/data/guides/setup-and-auto-renew-ssl-certificates.md b/src/data/guides/setup-and-auto-renew-ssl-certificates.md index 89b3951c4..31d7447e5 100644 --- a/src/data/guides/setup-and-auto-renew-ssl-certificates.md +++ b/src/data/guides/setup-and-auto-renew-ssl-certificates.md @@ -2,22 +2,22 @@ title: "Guide to Let's Encrypt SSL Setup" description: "Learn how to protect your website using Let's Encrypt SSL Certificates." author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: title: "Guide to Let's Encrypt SSL Setup - roadmap.sh" description: "Learn how to protect your website using Let's Encrypt SSL Certificates." isNew: true -type: "textual" +type: 'textual' date: 2023-03-13 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- In this tutorial, I will guide you on creating a free Let's Encrypt SSL certificate for your website that gets automatically renewed. This process requires minimal to no configuration on your part. Let's get started! @@ -76,17 +76,17 @@ This command will obtain an SSL certificate for the specified domain name, insta ## Auto-Renewal of SSL Certificate -SSL certificate generated using certbot is valid for 3 months; after which you need to renew the certificate. Certbot automatically sets up the renewal for you so you don't have to worry about. +SSL certificate generated using certbot is valid for 3 months; after which you need to renew the certificate. Certbot automatically sets up the renewal for you so you don't have to worry about. For the renewal to work, you need to have a cronjob or a systemd timer set up. To check if the automatic renewal is active, you can use one of two methods: -* Check cronjob to see if there is a certbot renewal cron job registered by running the following command: +- Check cronjob to see if there is a certbot renewal cron job registered by running the following command: ```shell sudo crontab -l ``` -* If you don't find the cron job registered, check the systemd timer by running the following command. +- If you don't find the cron job registered, check the systemd timer by running the following command. ```shell sudo systemctl list-timers diff --git a/src/data/guides/single-command-database-setup.md b/src/data/guides/single-command-database-setup.md index b5bc3b681..1895311be 100644 --- a/src/data/guides/single-command-database-setup.md +++ b/src/data/guides/single-command-database-setup.md @@ -1,25 +1,25 @@ --- -title: "Single Command Database Setup" -description: "Learn how to run MySQL, PostgreSQL, or MongoDB in Docker with single Command" +title: 'Single Command Database Setup' +description: 'Learn how to run MySQL, PostgreSQL, or MongoDB in Docker with single Command' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Single Command Database Setup - roadmap.sh" - description: "Learn how to run MySQL, PostgreSQL, or MongoDB in Docker with single Command" + title: 'Single Command Database Setup - roadmap.sh' + description: 'Learn how to run MySQL, PostgreSQL, or MongoDB in Docker with single Command' isNew: true -type: "textual" +type: 'textual' date: 2023-02-27 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "guide-sitemap" + - 'guide' + - 'guide-sitemap' --- -When you are working on a backend application, you are likely to need a database. You can either install it on your machine or use a Docker container. I prefer to use Docker containers because it is easier to setup and doesn't pollute my machine with unnecessary dependencies. +When you are working on a backend application, you are likely to need a database. You can either install it on your machine or use a Docker container. I prefer to use Docker containers because it is easier to setup and doesn't pollute my machine with unnecessary dependencies. This short guide will show you how to spin up a MySQL, PostgreSQL, or MongoDB instance on your local machine using docker. Feel free to submit a PR adding more databases. @@ -82,4 +82,4 @@ docker exec -it mdb \ mongo ``` -Feel free to [submit a pull request](https://github.com/kamranahmedse/roadmap.sh/tree/master/src/data/guides/single-command-database-setup.md) by adding additional databases to this guide. \ No newline at end of file +Feel free to [submit a pull request](https://github.com/kamranahmedse/roadmap.sh/tree/master/src/data/guides/single-command-database-setup.md) by adding additional databases to this guide. diff --git a/src/data/guides/ssl-tls-https-ssh.md b/src/data/guides/ssl-tls-https-ssh.md index dd2a177d0..78730346b 100644 --- a/src/data/guides/ssl-tls-https-ssh.md +++ b/src/data/guides/ssl-tls-https-ssh.md @@ -1,24 +1,23 @@ --- -title: "SSL vs TLS vs SSH" -description: "Quick tidbit on the differences between SSL, TLS, HTTPS and SSH" +title: 'SSL vs TLS vs SSH' +description: 'Quick tidbit on the differences between SSL, TLS, HTTPS and SSH' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "SSL vs TLS vs SSH - roadmap.sh" - description: "Quick tidbit on the differences between SSL, TLS, HTTPS and SSH" + title: 'SSL vs TLS vs SSH - roadmap.sh' + description: 'Quick tidbit on the differences between SSL, TLS, HTTPS and SSH' isNew: false -type: "visual" +type: 'visual' date: 2021-04-22 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![SSL vs TLS vs HTTPs vs SSH](/guides/ssl-tls-https-ssh.png)](/guides/ssl-tls-https-ssh.png) - diff --git a/src/data/guides/sso.md b/src/data/guides/sso.md index cafad23d9..55e5d1c3b 100644 --- a/src/data/guides/sso.md +++ b/src/data/guides/sso.md @@ -1,24 +1,23 @@ --- -title: "SSO — Single Sign On" -description: "Learn the basics of SAML and understand how does Single Sign On work." +title: 'SSO — Single Sign On' +description: 'Learn the basics of SAML and understand how does Single Sign On work.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "SSO — Single Sign On - roadmap.sh" - description: "Learn the basics of SAML and understand how does Single Sign On work." + title: 'SSO — Single Sign On - roadmap.sh' + description: 'Learn the basics of SAML and understand how does Single Sign On work.' isNew: false -type: "visual" +type: 'visual' date: 2021-07-01 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![SSO](/guides/sso.png)](/guides/sso.png) - diff --git a/src/data/guides/token-authentication.md b/src/data/guides/token-authentication.md index 8059e5fba..19dcdb6a1 100644 --- a/src/data/guides/token-authentication.md +++ b/src/data/guides/token-authentication.md @@ -1,24 +1,23 @@ --- -title: "Token Based Authentication" -description: "Understand what is token based authentication and how it is implemented" +title: 'Token Based Authentication' +description: 'Understand what is token based authentication and how it is implemented' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Token Based Authentication - roadmap.sh" - description: "Understand what is token based authentication and how it is implemented" + title: 'Token Based Authentication - roadmap.sh' + description: 'Understand what is token based authentication and how it is implemented' isNew: false -type: "visual" +type: 'visual' date: 2021-06-02 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![Token based Authentication](/guides/token-authentication.png)](/guides/token-authentication.png) - diff --git a/src/data/guides/torrent-client.md b/src/data/guides/torrent-client.md index e6624a8e7..63af12295 100644 --- a/src/data/guides/torrent-client.md +++ b/src/data/guides/torrent-client.md @@ -1,26 +1,26 @@ --- -title: "Building a BitTorrent Client" -description: "Learn everything you need to know about BitTorrent by writing a client in Go" +title: 'Building a BitTorrent Client' +description: 'Learn everything you need to know about BitTorrent by writing a client in Go' author: - name: "Jesse Li" - url: "https://twitter.com/__jesse_li" - imageUrl: "/authors/jesse.png" + name: 'Jesse Li' + url: 'https://twitter.com/__jesse_li' + imageUrl: '/authors/jesse.png' seo: - title: "Building a BitTorrent Client - roadmap.sh" - description: "Learn everything you need to know about BitTorrent by writing a client in Go" + title: 'Building a BitTorrent Client - roadmap.sh' + description: 'Learn everything you need to know about BitTorrent by writing a client in Go' isNew: false -type: "textual" +type: 'textual' date: 2021-01-17 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- -BitTorrent is a protocol for downloading and distributing files across the Internet. In contrast with the traditional client/server relationship, in which downloaders connect to a central server (for example: watching a movie on Netflix, or loading the web page you're reading now), participants in the BitTorrent network, called **peers**, download pieces of files from *each other*—this is what makes it a **peer-to-peer** protocol. In this article we will investigate how this works, and build our own client that can find peers and exchange data between them. +BitTorrent is a protocol for downloading and distributing files across the Internet. In contrast with the traditional client/server relationship, in which downloaders connect to a central server (for example: watching a movie on Netflix, or loading the web page you're reading now), participants in the BitTorrent network, called **peers**, download pieces of files from _each other_—this is what makes it a **peer-to-peer** protocol. In this article we will investigate how this works, and build our own client that can find peers and exchange data between them. ![diagram showing the difference between client/server (all clients connecting to one server) and peer-to-peer (peers connecting to each other) relationships](/guides/torrent-client/client-server-p2p.png) @@ -29,6 +29,7 @@ The protocol evolved organically over the past 20 years, and various people and I'll be using a [Debian ISO](https://cdimage.debian.org/debian-cd/current/amd64/bt-cd/#indexlist) file as my guinea pig because it's big, but not huge, at 350MB. As a popular Linux distribution, there will be lots of fast and cooperative peers for us to connect to. And we'll avoid the legal and ethical issues related to downloading pirated content. ## Finding peers + Here’s a problem: we want to download a file with BitTorrent, but it’s a peer-to-peer protocol and we have no idea where to find peers to download it from. This is a lot like moving to a new city and trying to make friends—maybe we’ll hit up a local pub or a meetup group! Centralized locations like these are the big idea behind trackers, which are central servers that introduce peers to each other. They’re just web servers running over HTTP, and you can find Debian’s at http://bttracker.debian.org:6969/ ![illustration of a desktop computer and laptop sitting at a pub](/guides/torrent-client/trackers.png) @@ -36,42 +37,42 @@ Here’s a problem: we want to download a file with BitTorrent, but it’s a pee Of course, these central servers are liable to get raided by the feds if they facilitate peers exchanging illegal content. You may remember reading about trackers like TorrentSpy, Popcorn Time, and KickassTorrents getting seized and shut down. New methods cut out the middleman by making even **peer discovery** a distributed process. We won't be implementing them, but if you're interested, some terms you can research are **DHT**, **PEX**, and **magnet links**. ### Parsing a .torrent file + A .torrent file describes the contents of a torrentable file and information for connecting to a tracker. It's all we need in order to kickstart the process of downloading a torrent. Debian's .torrent file looks like this: ```markdown d8:announce41:http://bttracker.debian.org:6969/announce7:comment35:"Debian CD from cdimage.debian.org"13:creation datei1573903810e9:httpseedsl145:https://cdimage.debian.org/cdimage/release/10.2.0//srv/cdbuilder.debian.org/dst/deb-cd/weekly-builds/amd64/iso-cd/debian-10.2.0-amd64-netinst.iso145:https://cdimage.debian.org/cdimage/archive/10.2.0//srv/cdbuilder.debian.org/dst/deb-cd/weekly-builds/amd64/iso-cd/debian-10.2.0-amd64-netinst.isoe4:infod6:lengthi351272960e4:name31:debian-10.2.0-amd64-netinst.iso12:piece lengthi262144e6:pieces26800:�����PS�^�� (binary blob of the hashes of each piece)ee ``` -That mess is encoded in a format called **Bencode** (pronounced *bee-encode*), and we'll need to decode it. - -Bencode can encode roughly the same types of structures as JSON—strings, integers, lists, and dictionaries. Bencoded data is not as human-readable/writable as JSON, but it can efficiently handle binary data and it's really simple to parse from a stream. Strings come with a length prefix, and look like `4:spam`. Integers go between *start* and *end* markers, so `7` would encode to `i7e`. Lists and dictionaries work in a similar way: `l4:spami7ee` represents `['spam', 7]`, while `d4:spami7ee` means `{spam: 7}`. +That mess is encoded in a format called **Bencode** (pronounced _bee-encode_), and we'll need to decode it. +Bencode can encode roughly the same types of structures as JSON—strings, integers, lists, and dictionaries. Bencoded data is not as human-readable/writable as JSON, but it can efficiently handle binary data and it's really simple to parse from a stream. Strings come with a length prefix, and look like `4:spam`. Integers go between _start_ and _end_ markers, so `7` would encode to `i7e`. Lists and dictionaries work in a similar way: `l4:spami7ee` represents `['spam', 7]`, while `d4:spami7ee` means `{spam: 7}`. In a prettier format, our .torrent file looks like this: ```markdown d - 8:announce - 41:http://bttracker.debian.org:6969/announce - 7:comment - 35:"Debian CD from cdimage.debian.org" - 13:creation date - i1573903810e - 4:info - d - 6:length - i351272960e - 4:name - 31:debian-10.2.0-amd64-netinst.iso - 12:piece length - i262144e - 6:pieces - 26800:�����PS�^�� (binary blob of the hashes of each piece) - e +8:announce +41:http://bttracker.debian.org:6969/announce +7:comment +35:"Debian CD from cdimage.debian.org" +13:creation date +i1573903810e +4:info +d +6:length +i351272960e +4:name +31:debian-10.2.0-amd64-netinst.iso +12:piece length +i262144e +6:pieces +26800:�����PS�^�� (binary blob of the hashes of each piece) +e e ``` -In this file, we can spot the URL of the tracker, the creation date (as a Unix timestamp), the name and size of the file, and a big binary blob containing the SHA-1 hashes of each **piece**, which are equally-sized parts of the file we want to download. The exact size of a piece varies between torrents, but they are usually somewhere between 256KB and 1MB. This means that a large file might be made up of *thousands* of pieces. We'll download these pieces from our peers, check them against the hashes from our torrent file, assemble them together, and boom, we've got a file! +In this file, we can spot the URL of the tracker, the creation date (as a Unix timestamp), the name and size of the file, and a big binary blob containing the SHA-1 hashes of each **piece**, which are equally-sized parts of the file we want to download. The exact size of a piece varies between torrents, but they are usually somewhere between 256KB and 1MB. This means that a large file might be made up of _thousands_ of pieces. We'll download these pieces from our peers, check them against the hashes from our torrent file, assemble them together, and boom, we've got a file! !["illustration of a file being cut with scissors into multiple pieces, starting with piece 0](/guides/torrent-client/pieces.png) @@ -129,6 +130,7 @@ func (bto *bencodeTorrent) toTorrentFile() (*TorrentFile, error) { ``` ### Retrieving peers from the tracker + Now that we have information about the file and its tracker, let's talk to the tracker to **announce** our presence as a peer and to retrieve a list of other peers. We just need to make a GET request to the `announce` URL supplied in the .torrent file, with a few query parameters: ```go @@ -153,20 +155,21 @@ func (t *TorrentFile) buildTrackerURL(peerID [20]byte, port uint16) (string, err The important ones: -* **info_hash**: Identifies the *file* we're trying to download. It's the infohash we calculated earlier from the bencoded `info` dict. The tracker will use this to figure out which peers to show us. -* **peer_id**: A 20 byte name to identify *ourselves* to trackers and peers. We'll just generate 20 random bytes for this. Real BitTorrent clients have IDs like `-TR2940-k8hj0wgej6ch` which identify the client software and version—in this case, TR2940 stands for Transmission client 2.94. +- **info_hash**: Identifies the _file_ we're trying to download. It's the infohash we calculated earlier from the bencoded `info` dict. The tracker will use this to figure out which peers to show us. +- **peer_id**: A 20 byte name to identify _ourselves_ to trackers and peers. We'll just generate 20 random bytes for this. Real BitTorrent clients have IDs like `-TR2940-k8hj0wgej6ch` which identify the client software and version—in this case, TR2940 stands for Transmission client 2.94. ![a file with a name tag saying 'info_hash' and a person with a name tag 'peer_id'](/guides/torrent-client/info-hash-peer-id.png) ### Parsing the tracker response + We get back a bencoded response: ```markdown d - 8:interval - i900e - 5:peers - 252:(another long binary blob) +8:interval +i900e +5:peers +252:(another long binary blob) e ``` @@ -202,13 +205,15 @@ func Unmarshal(peersBin []byte) ([]Peer, error) { ``` ## Downloading from peers + Now that we have a list of peers, it's time to connect with them and start downloading pieces! We can break down the process into a few steps. For each peer, we want to: 1. Start a TCP connection with the peer. This is like starting a phone call. -2. Complete a two-way BitTorrent **handshake**. *"Hello?" "Hello."* -3. Exchange **messages** to download **pieces**. *"I'd like piece #231 please."* +2. Complete a two-way BitTorrent **handshake**. _"Hello?" "Hello."_ +3. Exchange **messages** to download **pieces**. _"I'd like piece #231 please."_ ## Start a TCP connection + ```go conn, err := net.DialTimeout("tcp", peer.String(), 3*time.Second) if err != nil { @@ -219,11 +224,12 @@ if err != nil { I set a timeout so that I don't waste too much time on peers that aren't going to let me connect. For the most part, it's a pretty standard TCP connection. ### Complete the handshake + We've just set up a connection with a peer, but we want do a handshake to validate our assumptions that the peer -* can communicate using the BitTorrent protocol -* is able to understand and respond to our messages -* has the file that we want, or at least knows what we're talking about +- can communicate using the BitTorrent protocol +- is able to understand and respond to our messages +- has the file that we want, or at least knows what we're talking about ![Two computers communicating. One asks 'do you speak BitTorrent and have this file?' and the other replies 'I speak BitTorrent and have that file'](/guides/torrent-client/handshake.png) @@ -241,7 +247,7 @@ Put together, a handshake string might look like this: \x13BitTorrent protocol\x00\x00\x00\x00\x00\x00\x00\x00\x86\xd4\xc8\x00\x24\xa4\x69\xbe\x4c\x50\xbc\x5a\x10\x2c\xf7\x17\x80\x31\x00\x74-TR2940-k8hj0wgej6ch ``` -After we send a handshake to our peer, we should receive a handshake back in the same format. The infohash we get back should match the one we sent so that we know that we're talking about the same file. If everything goes as planned, we're good to go. If not, we can sever the connection because there's something wrong. *"Hello?" "这是谁? 你想要什么?" "Okay, wow, wrong number."* +After we send a handshake to our peer, we should receive a handshake back in the same format. The infohash we get back should match the one we sent so that we know that we're talking about the same file. If everything goes as planned, we're good to go. If not, we can sever the connection because there's something wrong. _"Hello?" "这是谁? 你想要什么?" "Okay, wow, wrong number."_ In our code, let's make a struct to represent a handshake, and write a few methods for serializing and reading them: @@ -273,6 +279,7 @@ func Read(r io.Reader) (*Handshake, error) { ``` ### Send and receive messages + Once we've completed the initial handshake, we can send and receive **messages**. Well, not quite—if the other peer isn't ready to accept messages, we can't send any until they tell us they're ready. In this state, we're considered **choked** by the other peer. They'll send us an **unchoke** message to let us know that we can begin asking them for data. By default, we assume that we're choked until proven otherwise. Once we've been unchoked, we can then begin sending **requests** for pieces, and they can send us messages back containing pieces. @@ -280,6 +287,7 @@ Once we've been unchoked, we can then begin sending **requests** for pieces, and !["A cartoon in which person 1 says 'hello I would like piece number—' and person 2 grabs him by the neck and says '00 00 00 01 00 (choke)'](/guides/torrent-client/choke.png) #### Interpreting messages + A message has a length, an **ID** and a **payload**. On the wire, it looks like: ![A message with 4 byte for the length, 1 byte for ID, and an optional payload](/guides/torrent-client/message.png) @@ -356,11 +364,12 @@ func Read(r io.Reader) (*Message, error) { ``` #### Bitfields -One of the most interesting types of message is the **bitfield**, which is a data structure that peers use to efficiently encode which pieces they are able to send us. A bitfield looks like a byte array, and to check which pieces they have, we just need to look at the positions of the *bits* set to 1. You can think of it like the digital equivalent of a coffee shop loyalty card. We start with a blank card of all `0`, and flip bits to `1` to mark their positions as "stamped." + +One of the most interesting types of message is the **bitfield**, which is a data structure that peers use to efficiently encode which pieces they are able to send us. A bitfield looks like a byte array, and to check which pieces they have, we just need to look at the positions of the _bits_ set to 1. You can think of it like the digital equivalent of a coffee shop loyalty card. We start with a blank card of all `0`, and flip bits to `1` to mark their positions as "stamped." ![a coffee shop loyalty card with eight slots, with stamps on the first four slots and a stamp on the second to last slot, represented as 11110010](/guides/torrent-client/bitfield.png) -By working with *bits* instead of *bytes*, this data structure is super compact. We can stuff information about eight pieces in the space of a single byte—the size of a `bool`. The tradeoff is that accessing values becomes a little more tricky. The smallest unit of memory that computers can address are bytes, so to get to our bits, we have to do some bitwise manipulation: +By working with _bits_ instead of _bytes_, this data structure is super compact. We can stuff information about eight pieces in the space of a single byte—the size of a `bool`. The tradeoff is that accessing values becomes a little more tricky. The smallest unit of memory that computers can address are bytes, so to get to our bits, we have to do some bitwise manipulation: ```go // A Bitfield represents the pieces that a peer has @@ -382,9 +391,11 @@ func (bf Bitfield) SetPiece(index int) { ``` ### Putting it all together + We now have all the tools we need to download a torrent: we have a list of peers obtained from the tracker, and we can communicate with them by dialing a TCP connection, initiating a handshake, and sending and receiving messages. Our last big problems are handling the **concurrency** involved in talking to multiple peers at once, and managing the **state** of our peers as we interact with them. These are both classically Hard problems. #### Managing concurrency: channels as queues + In Go, we [share memory by communicating](https://blog.golang.org/share-memory-by-communicating), and we can think of a Go channel as a cheap thread-safe queue. We'll set up two channels to synchronize our concurrent workers: one for dishing out work (pieces to download) between peers, and another for collecting downloaded pieces. As downloaded pieces come in through the results channel, we can copy them into a buffer to start assembling our complete file. @@ -460,6 +471,7 @@ func (t *Torrent) startDownloadWorker(peer peers.Peer, workQueue chan *pieceWork ``` #### Managing state + We'll keep track of each peer in a struct, and modify that struct as we read messages. It'll include data like how much we've downloaded from the peer, how much we've requested from them, and whether we're choked. If we wanted to scale this further, we could formalize this as a finite state machine. But a struct and a switch are good enough for now. ```go @@ -492,11 +504,13 @@ func (state *pieceProgress) readMessage() error { ``` #### Time to make requests! -Files, pieces, and piece hashes aren't the full story—we can go further by breaking down pieces into **blocks**. A block is a part of a piece, and we can fully define a block by the **index** of the piece it's part of, its byte **offset** within the piece, and its **length**. When we make requests for data from peers, we are actually requesting *blocks*. A block is usually 16KB large, meaning that a single 256 KB piece might actually require 16 requests. + +Files, pieces, and piece hashes aren't the full story—we can go further by breaking down pieces into **blocks**. A block is a part of a piece, and we can fully define a block by the **index** of the piece it's part of, its byte **offset** within the piece, and its **length**. When we make requests for data from peers, we are actually requesting _blocks_. A block is usually 16KB large, meaning that a single 256 KB piece might actually require 16 requests. A peer is supposed to sever the connection if they receive a request for a block larger than 16KB. However, based on my experience, they're often perfectly happy to satisfy requests up to 128KB. I only got moderate gains in overall speed with larger block sizes, so it's probably better to stick with the spec. #### Pipelining + Network round-trips are expensive, and requesting each block one by one will absolutely thank the performance of our download. Therefore, it's important to **pipeline** our requests such that we keep up a constant pressure of some number of unfulfilled requests. This can increase the throughput of our connection by an order of magnitude. ![Two email threads simulating peer connections. The thread on the left shows a request followed by a reply, repeated three times. The thread on the left sends three requests, and receives three replies in quick succession.](/guides/torrent-client/pipelining.png) @@ -552,6 +566,7 @@ func attemptDownloadPiece(c *client.Client, pw *pieceWork) ([]byte, error) { ``` #### main.go + This is a short one. We're almost there. ```go @@ -583,4 +598,5 @@ func main() { ## This isn't the full story + For brevity, I included only a few of the important snippets of code. Notably, I left out all the glue code, parsing, unit tests, and the boring parts that build character. View my [full implementation](https://github.com/veggiedefender/torrent-client) if you're interested. diff --git a/src/data/guides/unfamiliar-codebase.md b/src/data/guides/unfamiliar-codebase.md index 57c5e3bc1..e2c3a6a19 100644 --- a/src/data/guides/unfamiliar-codebase.md +++ b/src/data/guides/unfamiliar-codebase.md @@ -1,24 +1,23 @@ --- -title: "Unfamiliar Codebase" -description: "Tips on getting familiar with an unfamiliar codebase" +title: 'Unfamiliar Codebase' +description: 'Tips on getting familiar with an unfamiliar codebase' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "Unfamiliar Codebase - roadmap.sh" - description: "Tips on getting familiar with an unfamiliar codebase" + title: 'Unfamiliar Codebase - roadmap.sh' + description: 'Tips on getting familiar with an unfamiliar codebase' isNew: false -type: "visual" +type: 'visual' date: 2021-05-04 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![Unfamiliar Codebase](/guides/unfamiliar-codebase.png)](/guides/unfamiliar-codebase.png) - diff --git a/src/data/guides/what-are-web-vitals.md b/src/data/guides/what-are-web-vitals.md index 29cafdf71..6ad4825db 100644 --- a/src/data/guides/what-are-web-vitals.md +++ b/src/data/guides/what-are-web-vitals.md @@ -1,24 +1,23 @@ --- -title: "What are Web Vitals?" -description: "Learn what are the core web vitals and how to measure them." +title: 'What are Web Vitals?' +description: 'Learn what are the core web vitals and how to measure them.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "What are Web Vitals? - roadmap.sh" - description: "Learn what are the core web vitals and how to measure them." + title: 'What are Web Vitals? - roadmap.sh' + description: 'Learn what are the core web vitals and how to measure them.' isNew: false -type: "visual" +type: 'visual' date: 2021-09-05 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![Web Vitals](/guides/web-vitals.png)](/guides/web-vitals.png) - diff --git a/src/data/guides/what-is-internet.md b/src/data/guides/what-is-internet.md index e5b9bcf48..58fe8dc4d 100644 --- a/src/data/guides/what-is-internet.md +++ b/src/data/guides/what-is-internet.md @@ -1,57 +1,56 @@ --- -title: "How does the internet work?" -description: "Learn the basics of internet and everything involved with this short video series" +title: 'How does the internet work?' +description: 'Learn the basics of internet and everything involved with this short video series' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "How does the internet work? - roadmap.sh" - description: "Learn the basics of internet and everything involved with this short video series" + title: 'How does the internet work? - roadmap.sh' + description: 'Learn the basics of internet and everything involved with this short video series' isNew: false -type: "textual" +type: 'textual' date: 2021-02-29 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- Since the explosive growth of web-based applications, every developer stands to benefit from understanding how the Internet works. Through this article and its accompanying introductory series of short videos about the Internet from [code.org](https://code.org), you will learn the basics of the Internet and how it works. After going through this article, you will be able to answer the following questions: -* What is the Internet? -* How does the information move on the internet? -* How do the networks talk to each other and the protocols involved? -* What's the relationship between packets, routers, and reliability? -* HTTP and the HTML – How are you viewing this webpage in your browser? -* How is the information transfer on the internet made secure? -* What is cybersecurity and what are some common internet crimes? +- What is the Internet? +- How does the information move on the internet? +- How do the networks talk to each other and the protocols involved? +- What's the relationship between packets, routers, and reliability? +- HTTP and the HTML – How are you viewing this webpage in your browser? +- How is the information transfer on the internet made secure? +- What is cybersecurity and what are some common internet crimes? ## What is the Internet? -The Internet is a global network of computers connected to each other which communicate through a standardized set of protocols. +The Internet is a global network of computers connected to each other which communicate through a standardized set of protocols. -In the video below, Vint Cerf, one of the "fathers of the internet," explains the history of how the Internet works and how no one person or organization is really in charge of it. +In the video below, Vint Cerf, one of the "fathers of the internet," explains the history of how the Internet works and how no one person or organization is really in charge of it. - ## Wires, Cables, and Wi-Fi Information on the Internet moves from one computer to another in the form of bits over various mediums, including Ethernet cables, fiber optic cables, and wireless signals (i.e., radio waves). -In the video linked below, you will learn about the different mediums for data transfer on the Internet and the pros and cons for each. +In the video linked below, you will learn about the different mediums for data transfer on the Internet and the pros and cons for each. ## IP Addresses and DNS -Now that you know about the physical medium for the data transfer over the internet, it's time to learn about the protocols involved. How does the information traverse from one computer to another in this massive global network of computers? +Now that you know about the physical medium for the data transfer over the internet, it's time to learn about the protocols involved. How does the information traverse from one computer to another in this massive global network of computers? -In the video below, you will get a brief introduction to IP, DNS, and how these protocols make the Internet work. +In the video below, you will get a brief introduction to IP, DNS, and how these protocols make the Internet work. @@ -59,7 +58,7 @@ In the video below, you will get a brief introduction to IP, DNS, and how these Information transfer on the Internet from one computer to another does not need to follow a fixed path; in fact, it may change paths during the transfer. This information transfer is done in the form of packets and these packets may follow different routes depending on certain factors. -In this video, you will learn about how the packets of information are routed from one computer to another to reach the destination. +In this video, you will learn about how the packets of information are routed from one computer to another to reach the destination. diff --git a/src/data/guides/what-is-sli-slo-sla.md b/src/data/guides/what-is-sli-slo-sla.md index a0d37b57a..2d5daec09 100644 --- a/src/data/guides/what-is-sli-slo-sla.md +++ b/src/data/guides/what-is-sli-slo-sla.md @@ -1,24 +1,23 @@ --- -title: "SLIs, SLOs and SLAs" -description: "Learn what are different indicators for performance identification of any service." +title: 'SLIs, SLOs and SLAs' +description: 'Learn what are different indicators for performance identification of any service.' author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' seo: - title: "SLIs, SLOs and SLAs - roadmap.sh" - description: "Learn what are different indicators for performance identification of any service." + title: 'SLIs, SLOs and SLAs - roadmap.sh' + description: 'Learn what are different indicators for performance identification of any service.' isNew: false -type: "visual" +type: 'visual' date: 2021-08-31 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "visual-guide" - - "guide-sitemap" + - 'guide' + - 'visual-guide' + - 'guide-sitemap' --- [![SLI vs SLO vs SLA](/guides/sli-slo-sla.jpeg)](/guides/sli-slo-sla.jpeg) - diff --git a/src/data/guides/why-build-it-and-they-will-come-wont-work-anymore.md b/src/data/guides/why-build-it-and-they-will-come-wont-work-anymore.md index 0ee5ed6b3..0d7a730c3 100644 --- a/src/data/guides/why-build-it-and-they-will-come-wont-work-anymore.md +++ b/src/data/guides/why-build-it-and-they-will-come-wont-work-anymore.md @@ -1,34 +1,32 @@ --- -title: "Build it and they will come?" -description: "Why “build it and they will come” alone won’t work anymore" +title: 'Build it and they will come?' +description: 'Why “build it and they will come” alone won’t work anymore' author: - name: "Peter Thaleikis" - url: "https://twitter.com/spekulatius1984" - imageUrl: "/authors/spekulatius.jpg" + name: 'Peter Thaleikis' + url: 'https://twitter.com/spekulatius1984' + imageUrl: '/authors/spekulatius.jpg' seo: - title: "Build it and they will come? - roadmap.sh" - description: "Why “build it and they will come” alone won’t work anymore" + title: 'Build it and they will come? - roadmap.sh' + description: 'Why “build it and they will come” alone won’t work anymore' isNew: false -type: "textual" +type: 'textual' date: 2021-05-04 sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "guide" - - "textual-guide" - - "guide-sitemap" + - 'guide' + - 'textual-guide' + - 'guide-sitemap' --- -We all have heard the mantra *"build it and they will come"* many times. Stories of people building a startup or project and seemingly stumbling upon a goldmine aren't few, but they aren't the rule. These stories are still the exception in the mass of launched projects and startups. +We all have heard the mantra _"build it and they will come"_ many times. Stories of people building a startup or project and seemingly stumbling upon a goldmine aren't few, but they aren't the rule. These stories are still the exception in the mass of launched projects and startups. Before the [Wright brothers](https://en.wikipedia.org/wiki/Wright_brothers) built their Kitty Hawk, people generally believed heavy objects could not fly - physics simply forbade it. The idea of regularly boarding airplanes as we do it these days was unthinkable. It was considered an unrealistic daydream for humans to ever claim the sky. When the first airplanes took off, people were fascinated, of course. It was a topic people continued to talk about for ages. Technology had made something impossible possible. While the wording "build it and they will come" originated from the movie [Field of Dreams](https://en.wikipedia.org/wiki/Field_of_Dreams), this and similar historic events gave birth to the idea behind it. The engineers' and inventors' dreams came true: spend time doing what you love while success follows magically. The internet and web-standards democratized access to this dream. But with it, the idea behind it faded and became less and less powerful. In 2020, there are very strong signs the popular saying isn't correct anymore. - -Why doesn't "build it and they will come" work anymore? -------------------------------------------------------- +## Why doesn't "build it and they will come" work anymore? There are a few reasons for working hard to make "build it and they will come" a thing of the past. This being said, it doesn't mean you can't succeed in building a side-project anymore. You've just got to adjust the way you are building it. @@ -48,9 +46,7 @@ Besides building is easier than ever before and attention is in short supply, th Does sound pretty grim for inventors, developers, and engineers? Well, yes and no. We've got to tweak the approach to get in front of the eye of potential users and customers. - -How to market your project nowadays? ------------------------------------- +## How to market your project nowadays? The very first step to improving the odds of success is [idea validation](https://peterthaleikis.com/business-idea-validation/). While this sounds fairly obvious, many engineers and developers still don't validate their ideas before starting to build the MVP. The result is another stale project and wasted effort. To succeed you need to work on marketing before you start building anything. In the link mentioned before, I describe my approach to validation and collecting useful marketing information at the same time. @@ -78,14 +74,10 @@ Launching seems like this special moment when you release your project into the Many developers plan to launch their product on a few sites and see where it takes their project from there on. This works well if your product goes viral by luck. A much more sustainable approach is constantly working a little on it. Marketing is most effective if done consistently. That holds true for blogging as well as most other forms of marketing. A simple approach to keep you on the path to marketing your project regularly is subscribing to a free [newsletter with small marketing opportunities](https://wheretopost.email). This way, you are regularly reminded and given bite-sized tasks to complete. - -Closing Words -------------- +## Closing Words I hope the article helped you to wrap your head around the idea that building side-projects alone doesn't solve any issues anymore. If you like what you've just read and want to read more, please consider subscribing to [my newsletter](https://peterthaleikis.com/newsletter). I'll send out the occasional email about interesting new articles or side-projects. - -About the author ----------------- +## About the author [Peter Thaleikis](https://peterthaleikis.com/) a software engineer and business owner. He has been developing web applications since around 2000. Before he started his own software development company [Bring Your Own Ideas Ltd.](https://bringyourownideas.com/), he has been a Lead Developer for multiple organizations. diff --git a/src/data/roadmaps/android/android.md b/src/data/roadmaps/android/android.md index 0151731bd..b08ff4b85 100644 --- a/src/data/roadmaps/android/android.md +++ b/src/data/roadmaps/android/android.md @@ -1,45 +1,45 @@ --- # jsonUrl: "/jsons/roadmaps/android.json" -pdfUrl: "/pdfs/roadmaps/android.pdf" +pdfUrl: '/pdfs/roadmaps/android.pdf' order: 4 -briefTitle: "Android" -briefDescription: "Step by step guide to becoming an Android Developer in 2023" -title: "Android Developer" -description: "Step by step guide to becoming an Android developer in 2023" +briefTitle: 'Android' +briefDescription: 'Step by step guide to becoming an Android Developer in 2023' +title: 'Android Developer' +description: 'Step by step guide to becoming an Android developer in 2023' hasTopics: false schema: - headline: "Android Developer Roadmap" - description: "Learn how to become a Android Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/android.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Android Developer Roadmap' + description: 'Learn how to become a Android Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/android.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Android Developer Roadmap: Learn to become an Android developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Android Developer Roadmap: Learn to become an Android developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming an android developer" - - "android developer roadmap" - - "android roadmap" - - "become android developer" - - "android developer skills" - - "android skills test" - - "skills for android development" - - "learn android development" - - "what is android" - - "android quiz" - - "android interview questions" + - 'guide to becoming an android developer' + - 'android developer roadmap' + - 'android roadmap' + - 'become android developer' + - 'android developer skills' + - 'android skills test' + - 'skills for android development' + - 'learn android development' + - 'what is android' + - 'android quiz' + - 'android interview questions' relatedRoadmaps: - - "frontend" - - "javascript" - - "react" - - "nodejs" + - 'frontend' + - 'javascript' + - 'react' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- The intent of this guide is to give you an idea about the Android development landscape and to help guide your learning if you are confused. Before we start, please note that the roadmap is opinionated, and you might have different opinions than those of the author. Having said that, [we would love to hear your opinions](https://github.com/kamranahmedse/developer-roadmap/issues/new) and incorporate them in the roadmap if suitable. @@ -53,85 +53,93 @@ Here is the full version of the roadmap in a single image and after that we have [![](/roadmaps/android/roadmap.svg)](/roadmaps/android/roadmap.png) ## Broken Down Version + Below is the broken down version of the roadmap with links and resources to learn more about each of the items listed in the complete roadmap above. ## Pick a Language + For the languages, you can develop Android apps either by using Kotlin or Java. [![](/roadmaps/android/pick-language.svg)](/roadmaps/android/pick-language.svg) -Although, you can use both [Kotlin](https://en.wikipedia.org/wiki/Kotlin_(programming_language)) and [Java](https://en.wikipedia.org/wiki/Java_(programming_language)) to develop native Android apps, [Google announced in 2019](https://android-developers.googleblog.com/2019/05/google-io-2019-empowering-developers-to-build-experiences-on-Android-Play.html) to make Kotlin the preferred way of developing Android applications. If you were to start learning Android development today, Kotlin should be your language of choice. +Although, you can use both [Kotlin]() and [Java]() to develop native Android apps, [Google announced in 2019](https://android-developers.googleblog.com/2019/05/google-io-2019-empowering-developers-to-build-experiences-on-Android-Play.html) to make Kotlin the preferred way of developing Android applications. If you were to start learning Android development today, Kotlin should be your language of choice. ## The Fundamentals -Install [Android Studio](https://developer.android.com/studio) and learn the basics of Kotlin to get started. + +Install [Android Studio](https://developer.android.com/studio) and learn the basics of Kotlin to get started. [![](/roadmaps/android/the-fundamentals.png)](/roadmaps/android/the-fundamentals.png) We have also listed down some free resources which you can use for the items listed in the image above. If you have some better ones, please do suggest. Also, you don't need to go through all of them, just go through them and pick what you like. -* [Learn the basics of Kotlin](https://blog.teamtreehouse.com/absolute-beginners-guide-kotlin) -* [Kotlin Docs](https://kotlinlang.org/docs/reference/basic-syntax.html) and [Official Kotlin Tutorials](https://kotlinlang.org/docs/tutorials/) -* [Data Structures and Algorithms](https://www.studytonight.com/data-structures/introduction-to-data-structures). Also [check this](https://www.tutorialspoint.com/data_structures_algorithms/index.htm). -* [Kotlin Data Structures](https://kotlinlang.org/docs/reference/collections-overview.html) -* [Algorithms and Data Structures in Kotlin](https://github.com/bmaslakov/kotlin-algorithm-club) -* [Gradle](https://docs.gradle.org/current/userguide/what_is_gradle.html) -* [Getting started with Gradle](https://docs.gradle.org/current/userguide/getting_started.html) -Note: Android Studio comes with a working installation of Gradle, so you don’t need to install Gradle separately in that case. +- [Learn the basics of Kotlin](https://blog.teamtreehouse.com/absolute-beginners-guide-kotlin) +- [Kotlin Docs](https://kotlinlang.org/docs/reference/basic-syntax.html) and [Official Kotlin Tutorials](https://kotlinlang.org/docs/tutorials/) +- [Data Structures and Algorithms](https://www.studytonight.com/data-structures/introduction-to-data-structures). Also [check this](https://www.tutorialspoint.com/data_structures_algorithms/index.htm). +- [Kotlin Data Structures](https://kotlinlang.org/docs/reference/collections-overview.html) +- [Algorithms and Data Structures in Kotlin](https://github.com/bmaslakov/kotlin-algorithm-club) +- [Gradle](https://docs.gradle.org/current/userguide/what_is_gradle.html) +- [Getting started with Gradle](https://docs.gradle.org/current/userguide/getting_started.html) + Note: Android Studio comes with a working installation of Gradle, so you don’t need to install Gradle separately in that case. ## Version Control Systems + Version Control Systems record your changes to the codebase and allow you to recall specific versions later. There are multiple Version Control Systems available, but [Git](https://git-scm.com/) is the most common one these days. [![](/roadmaps/android/git-github.png)](/roadmaps/android/git-github.png) Here are some of the resources to get you started. Feel free to google and find something else that you find easier. -* [Udacity — Version Control with Git](https://www.udacity.com/course/version-control-with-git--ud123) -* [GitHub Hello World](https://guides.github.com/activities/hello-world/) +- [Udacity — Version Control with Git](https://www.udacity.com/course/version-control-with-git--ud123) +- [GitHub Hello World](https://guides.github.com/activities/hello-world/) ## Building an Application -Here is the list of items that you are going to need when developing Android applications. Please note that this is an exhaustive list, and you don't need to know it all from the get-go. Get an idea of the items listed, and just start building some apps and keep the items listed in the back of your mind and have a deep dive when using them. +Here is the list of items that you are going to need when developing Android applications. Please note that this is an exhaustive list, and you don't need to know it all from the get-go. Get an idea of the items listed, and just start building some apps and keep the items listed in the back of your mind and have a deep dive when using them. [![](/roadmaps/android/build-an-application.png)](/roadmaps/android/build-an-application.png) To learn more about the items listed in the image above, here are the links to the relevant docs. -* [Using Activities and Activity Life Cycles](https://developer.android.com/guide/components/activities/intro-activities) -* Building Flexible Interfaces using [Fragments](https://developer.android.com/guide/components/fragments) -* [Debugging using Android Studio Debugger](https://developer.android.com/studio/debug) -* [Handling App Configurations](https://developer.android.com/work/managed-configurations) -* [Using Intents and Intent Filters](https://developer.android.com/guide/components/intents-filters) -* [Understand Context](https://guides.codepath.com/android/Using-Context) -* [Learn about Multithreading](https://developer.android.com/training/multiple-threads) -* [Data Privacy](https://www.raywenderlich.com/6901838-data-privacy-for-android) -* [Securing Network Data](https://www.raywenderlich.com/5634-securing-network-data-tutorial-for-android) -* [Dependency Injection](https://developer.android.com/training/dependency-injection) -* [Content Providers](https://developer.android.com/guide/topics/providers/content-providers) -* [Glide](https://github.com/bumptech/glide), [Retrofit](https://square.github.io/retrofit/), [Crashlytics](https://firebase.google.com/docs/crashlytics/get-started), [GSON](https://github.com/google/gson) -* [Room](https://developer.android.com/topic/libraries/architecture/room), [Navigation](https://developer.android.com/guide/navigation/navigation-getting-started), [Work Manager](https://developer.android.com/topic/libraries/architecture/workmanager), [LiveData](https://developer.android.com/topic/libraries/architecture/livedata), [Data Binding](https://developer.android.com/topic/libraries/data-binding) -* [RxJava](https://github.com/ReactiveX/RxJava), [RxKotlin](https://github.com/ReactiveX/RxKotlin) -* [Memory Management Overview](https://developer.android.com/topic/performance/memory-overview) -* [Diving deeper into context-oriented programming in Kotlin](https://proandroiddev.com/diving-deeper-into-context-oriented-programming-in-kotlin-3ecb4ec38814) +- [Using Activities and Activity Life Cycles](https://developer.android.com/guide/components/activities/intro-activities) +- Building Flexible Interfaces using [Fragments](https://developer.android.com/guide/components/fragments) +- [Debugging using Android Studio Debugger](https://developer.android.com/studio/debug) +- [Handling App Configurations](https://developer.android.com/work/managed-configurations) +- [Using Intents and Intent Filters](https://developer.android.com/guide/components/intents-filters) +- [Understand Context](https://guides.codepath.com/android/Using-Context) +- [Learn about Multithreading](https://developer.android.com/training/multiple-threads) +- [Data Privacy](https://www.raywenderlich.com/6901838-data-privacy-for-android) +- [Securing Network Data](https://www.raywenderlich.com/5634-securing-network-data-tutorial-for-android) +- [Dependency Injection](https://developer.android.com/training/dependency-injection) +- [Content Providers](https://developer.android.com/guide/topics/providers/content-providers) +- [Glide](https://github.com/bumptech/glide), [Retrofit](https://square.github.io/retrofit/), [Crashlytics](https://firebase.google.com/docs/crashlytics/get-started), [GSON](https://github.com/google/gson) +- [Room](https://developer.android.com/topic/libraries/architecture/room), [Navigation](https://developer.android.com/guide/navigation/navigation-getting-started), [Work Manager](https://developer.android.com/topic/libraries/architecture/workmanager), [LiveData](https://developer.android.com/topic/libraries/architecture/livedata), [Data Binding](https://developer.android.com/topic/libraries/data-binding) +- [RxJava](https://github.com/ReactiveX/RxJava), [RxKotlin](https://github.com/ReactiveX/RxKotlin) +- [Memory Management Overview](https://developer.android.com/topic/performance/memory-overview) +- [Diving deeper into context-oriented programming in Kotlin](https://proandroiddev.com/diving-deeper-into-context-oriented-programming-in-kotlin-3ecb4ec38814) ## Jetpack Compose + Jetpack Compose is Android’s modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs. -* [Jetpack Compose](https://developer.android.com/jetpack/compose/documentation) -* [Material Design 3](https://m3.material.io/) -* [Getting started with Material Components](https://m3.material.io/libraries/mdc-android/getting-started) + +- [Jetpack Compose](https://developer.android.com/jetpack/compose/documentation) +- [Material Design 3](https://m3.material.io/) +- [Getting started with Material Components](https://m3.material.io/libraries/mdc-android/getting-started) ## Free Resources + I would highly recommend watching [this free course](https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012) from Google on Developing Android Apps with Kotlin. You may also get started with this [free course](https://developer.android.com/courses/android-basics-kotlin/course) on the Android developer's page, where concepts are taught with the help of code labs, projects and quizzes, and you also earn badges as you learn that appear on your Google developer profile. Also, here are some of the resources to learn more about the topics listed above. -* [Developing Android Apps with Kotlin](https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012) -* [Android Basics in Kotlin](https://developer.android.com/courses/android-basics-kotlin/course) -* [Android Developer Guides](https://developer.android.com/guide) -* [Kodeco](https://www.kodeco.com) +- [Developing Android Apps with Kotlin](https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012) +- [Android Basics in Kotlin](https://developer.android.com/courses/android-basics-kotlin/course) +- [Android Developer Guides](https://developer.android.com/guide) +- [Kodeco](https://www.kodeco.com) ## Wrap Up That wraps it up for the Android developer roadmap. Again, remember to not be exhausted by the list; just learn the basics and start working on some project and the rest of the learnings will come along the way. Good luck! - + For any suggestions, improvements and feedback, feel free to [submit an issue](https://github.com/kamranahmedse/developer-roadmap) or reach out to me on twitter [@kamranahmedse](https://twitter.com/kamranahmedse). +


diff --git a/src/data/roadmaps/angular/angular.md b/src/data/roadmaps/angular/angular.md index a38e78389..917fb37dc 100644 --- a/src/data/roadmaps/angular/angular.md +++ b/src/data/roadmaps/angular/angular.md @@ -1,48 +1,47 @@ --- -jsonUrl: "/jsons/roadmaps/angular.json" -pdfUrl: "/pdfs/roadmaps/angular.pdf" +jsonUrl: '/jsons/roadmaps/angular.json' +pdfUrl: '/pdfs/roadmaps/angular.pdf' order: 3 -briefTitle: "Angular" -briefDescription: "Step by step guide to become a Angular Developer in 2023" -title: "Angular Developer" -description: "Everything that is there to learn about Angular and the ecosystem in 2023." +briefTitle: 'Angular' +briefDescription: 'Step by step guide to become a Angular Developer in 2023' +title: 'Angular Developer' +description: 'Everything that is there to learn about Angular and the ecosystem in 2023.' hasTopics: true dimensions: width: 968 height: 2277.8 schema: - headline: "Angular Developer Roadmap" - description: "Learn how to become a Angular Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/angular.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Angular Developer Roadmap' + description: 'Learn how to become a Angular Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/angular.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Angular Developer Roadmap: Learn to become a Angular developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for angular development. Learn to become a modern Angular developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Angular Developer Roadmap: Learn to become a Angular developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for angular development. Learn to become a modern Angular developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a angular developer" - - "angular developer roadmap" - - "angular roadmap" - - "become angular developer" - - "angular developer skills" - - "angular skills test" - - "skills for angular development" - - "learn angular development" - - "what is angular" - - "angular quiz" - - "angular interview questions" + - 'guide to becoming a angular developer' + - 'angular developer roadmap' + - 'angular roadmap' + - 'become angular developer' + - 'angular developer skills' + - 'angular skills test' + - 'skills for angular development' + - 'learn angular development' + - 'what is angular' + - 'angular quiz' + - 'angular interview questions' relatedRoadmaps: - - "frontend" - - "javascript" - - "react" - - "vue" - - "nodejs" + - 'frontend' + - 'javascript' + - 'react' + - 'vue' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/100-what-is-typescript.md b/src/data/roadmaps/angular/content/100-typescript-basics/100-what-is-typescript.md index 8b4c8919e..c2d32a3ff 100644 --- a/src/data/roadmaps/angular/content/100-typescript-basics/100-what-is-typescript.md +++ b/src/data/roadmaps/angular/content/100-typescript-basics/100-what-is-typescript.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [What is TypeScript](https://thenewstack.io/what-is-typescript/) - [W3Schools – TypeScript Tutorial](https://www.w3schools.com/typescript/) - [Tutorials point – TypeScript Tutorial](https://www.tutorialspoint.com/typescript/index.htm) -- [TypeScript Crash Course for Beginners](https://www.youtube.com/watch?v=d56mG7DezGs) \ No newline at end of file +- [TypeScript Crash Course for Beginners](https://www.youtube.com/watch?v=d56mG7DezGs) diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/102-structural-typing.md b/src/data/roadmaps/angular/content/100-typescript-basics/102-structural-typing.md index ca86b7691..e3e70b73d 100644 --- a/src/data/roadmaps/angular/content/100-typescript-basics/102-structural-typing.md +++ b/src/data/roadmaps/angular/content/100-typescript-basics/102-structural-typing.md @@ -1,6 +1,6 @@ # Structural Typing -Type compatibility in TypeScript is based on structural subtyping. `Structural typing` is a way of relating types based solely on their members. This is in contrast with nominal typing. +Type compatibility in TypeScript is based on structural subtyping. `Structural typing` is a way of relating types based solely on their members. This is in contrast with nominal typing. TypeScript’s structural type system was designed based on how JavaScript code is typically written. Because JavaScript widely uses anonymous objects like function expressions and object literals, it’s much more natural to represent the relationships found in JavaScript libraries with a structural type system instead of a nominal one. @@ -9,4 +9,3 @@ Visit the following resources to learn more: - [Structural typings — Medium](https://medium.com/redox-techblog/structural-typing-in-typescript-4b89f21d6004) - [Structural typings — Typescriptlang](https://www.typescriptlang.org/docs/handbook/type-compatibility.html) - [Structural typing video for Beginners](https://www.youtube.com/watch?v=kWtwsX_rT3k) - diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md b/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md index 94b5eadb0..05d1d7642 100644 --- a/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md +++ b/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md @@ -5,4 +5,4 @@ In TypeScript, several places where `type inference` is used to provide type inf Visit the following resources to learn more: - [Type Interface - typescriptlang](https://www.typescriptlang.org/docs/handbook/type-inference.html) -- [Type Inference video for Beginners](https://www.youtube.com/watch?v=3ui_st7rtfA) \ No newline at end of file +- [Type Inference video for Beginners](https://www.youtube.com/watch?v=3ui_st7rtfA) diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/104-union-types.md b/src/data/roadmaps/angular/content/100-typescript-basics/104-union-types.md index 9016dfebf..ec65e2baa 100644 --- a/src/data/roadmaps/angular/content/100-typescript-basics/104-union-types.md +++ b/src/data/roadmaps/angular/content/100-typescript-basics/104-union-types.md @@ -1,6 +1,6 @@ # Union Types -In TypeScript, we can define a variable that can have multiple types of values. In other words, TypeScript can combine one or two types of data (i.e., number, string, etc.) in a single type, a union type. Union types are a powerful way to express a variable with multiple types. Two or more data types can be combined using the pipe ('|') symbol between the types. For example, `(type1 | type2 | type3 | .. | typeN)`. +In TypeScript, we can define a variable that can have multiple types of values. In other words, TypeScript can combine one or two types of data (i.e., number, string, etc.) in a single type, a union type. Union types are a powerful way to express a variable with multiple types. Two or more data types can be combined using the pipe ('|') symbol between the types. For example, `(type1 | type2 | type3 | .. | typeN)`. Visit the following resources to learn more: diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/105-builtin-types.md b/src/data/roadmaps/angular/content/100-typescript-basics/105-builtin-types.md index 4c8ed8720..c18084593 100644 --- a/src/data/roadmaps/angular/content/100-typescript-basics/105-builtin-types.md +++ b/src/data/roadmaps/angular/content/100-typescript-basics/105-builtin-types.md @@ -5,4 +5,4 @@ The Builtin types represent the different types of values supported by the langu Visit the following resources to learn more: - [TypeScript Types - Tutorialspoint](https://www.tutorialspoint.com/typescript/typescript_types.htm) -- [Builtin Type video for Beginners](https://www.youtube.com/watch?v=Nt9ajBrqV_M) \ No newline at end of file +- [Builtin Type video for Beginners](https://www.youtube.com/watch?v=Nt9ajBrqV_M) diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/101-observable-lifecycle.md b/src/data/roadmaps/angular/content/101-rxjs-basics/101-observable-lifecycle.md index 0818fd9c1..e6c5db0c6 100644 --- a/src/data/roadmaps/angular/content/101-rxjs-basics/101-observable-lifecycle.md +++ b/src/data/roadmaps/angular/content/101-rxjs-basics/101-observable-lifecycle.md @@ -3,10 +3,11 @@ 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 + +- Creation +- Subscription +- Execution +- Destruction Visit the following resources to learn more: diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/103-rxjs-vs-promises.md b/src/data/roadmaps/angular/content/101-rxjs-basics/103-rxjs-vs-promises.md index f8fe6b796..f62d9b8b1 100644 --- a/src/data/roadmaps/angular/content/101-rxjs-basics/103-rxjs-vs-promises.md +++ b/src/data/roadmaps/angular/content/101-rxjs-basics/103-rxjs-vs-promises.md @@ -5,7 +5,7 @@ In a nutshell, the main differences between the Promise and the Observable are a - The Promise is eager, whereas the Observable is lazy, - The Promise is always asynchronous, while the Observable can be either asynchronous or synchronous, - The Promise can provide a single value, whereas the Observable is a stream of values (from 0 to multiple values), -you can apply RxJS operators to the Observable to get a new tailored stream. + you can apply RxJS operators to the Observable to get a new tailored stream. Visit the following resources to learn more: diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/100-filtering.md b/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/100-filtering.md index 0bec27188..a5d5f40bd 100644 --- a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/100-filtering.md +++ b/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/100-filtering.md @@ -4,4 +4,4 @@ RxJS provides a variety of filtering operators that you can use to filter and tr Visit the following resources to learn more: -- [Understanding RxJS Operators]( https://rxjs.dev/api/operators) +- [Understanding RxJS Operators](https://rxjs.dev/api/operators) diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/102-transformation.md b/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/102-transformation.md index c79ed3687..7a723ad12 100644 --- a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/102-transformation.md +++ b/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/102-transformation.md @@ -2,20 +2,20 @@ In RxJS, "transformation" refers to the process of modifying or manipulating the data emitted by an Observable. There are a variety of methods available in RxJS that can be used to transform the data emitted by an Observable, including: - - map: applies a function to each item emitted by the Observable and emits the resulting value - - flatMap: applies a function to each item emitted by the Observable, and then flattens the resulting Observables into a single Observable - - concatMap: applies a function to each item emitted by the Observable, and then concatenates the resulting Observables into a single Observable - - mergeMap: applies a function to each item emitted by the Observable, and then merges the resulting Observables into a single Observable - - switchMap: applies a function to each item emitted by the Observable, and then switches to the latest resulting Observable +- map: applies a function to each item emitted by the Observable and emits the resulting value +- flatMap: applies a function to each item emitted by the Observable, and then flattens the resulting Observables into a single Observable +- concatMap: applies a function to each item emitted by the Observable, and then concatenates the resulting Observables into a single Observable +- mergeMap: applies a function to each item emitted by the Observable, and then merges the resulting Observables into a single Observable +- switchMap: applies a function to each item emitted by the Observable, and then switches to the latest resulting Observable These are just a few examples of the many methods available in RxJS for transforming the data emitted by an Observable. Each method has its own specific use case, and the best method to use will depend on the requirements of your application. Here are the official documentation links for the RxJS transformation methods: - - [map](https://rxjs.dev/api/operators/map) - - [flatMap](https://rxjs.dev/api/operators/flatMap) - - [concatMap](https://rxjs.dev/api/operators/concatMap) - - [mergeMap](https://rxjs.dev/api/operators/mergeMap) - - [switchMap](https://rxjs.dev/api/operators/switchMap) +- [map](https://rxjs.dev/api/operators/map) +- [flatMap](https://rxjs.dev/api/operators/flatMap) +- [concatMap](https://rxjs.dev/api/operators/concatMap) +- [mergeMap](https://rxjs.dev/api/operators/mergeMap) +- [switchMap](https://rxjs.dev/api/operators/switchMap) You can find more information and examples on these methods in the official RxJS documentation. Additionally, you can find more operators on https://rxjs.dev/api/operators and you can also find more information on the library as a whole on https://rxjs.dev/ diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/103-combination.md b/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/103-combination.md index 83749a2c9..4b51a486a 100644 --- a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/103-combination.md +++ b/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/103-combination.md @@ -2,28 +2,28 @@ Combination operators in RxJS are used to combine multiple observables into a single observable. There are several types of combination operators, including: - - Merge: merges multiple observables into a single observable that emits items from each source observable in a sequence. +- Merge: merges multiple observables into a single observable that emits items from each source observable in a sequence. - - Concat: concatenates multiple observables into a single observable that emits the items from each source observable in sequence, one after the other. +- Concat: concatenates multiple observables into a single observable that emits the items from each source observable in sequence, one after the other. - - Zip: combines the items from multiple observables into a single observable by combining the items from each observable at a corresponding index. +- Zip: combines the items from multiple observables into a single observable by combining the items from each observable at a corresponding index. - - CombineLatest: combines the latest values from multiple observables into a single observable by emitting an item whenever any of the source observables emit an item. +- CombineLatest: combines the latest values from multiple observables into a single observable by emitting an item whenever any of the source observables emit an item. - - WithLatestFrom: combines the latest value from one observable with the latest values from multiple other observables. +- WithLatestFrom: combines the latest value from one observable with the latest values from multiple other observables. - - ForkJoin: combines the items from multiple observables into a single observable by emitting an item only after all of the source observables have emitted an item. +- ForkJoin: combines the items from multiple observables into a single observable by emitting an item only after all of the source observables have emitted an item. Further documentation can be found in the official RxJS documentation: - - Merge: https://rxjs.dev/api/operators/merge +- Merge: https://rxjs.dev/api/operators/merge - - Concat: https://rxjs.dev/api/operators/concat +- Concat: https://rxjs.dev/api/operators/concat - - Zip: https://rxjs.dev/api/operators/zip +- Zip: https://rxjs.dev/api/operators/zip - - CombineLatest: https://rxjs.dev/api/operators/combineLatest +- CombineLatest: https://rxjs.dev/api/operators/combineLatest - - WithLatestFrom: https://rxjs.dev/api/operators/withLatestFrom +- WithLatestFrom: https://rxjs.dev/api/operators/withLatestFrom - - ForkJoin: https://rxjs.dev/api/operators/forkJoin +- ForkJoin: https://rxjs.dev/api/operators/forkJoin diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/index.md b/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/index.md index a3f9ec118..19ecd4247 100644 --- a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/index.md +++ b/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/index.md @@ -1,5 +1,4 @@ -# RxJS 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. @@ -17,9 +16,9 @@ Pipeable operators are functions, so they could be used like ordinary functions: ```bash obs.pipe(op1(), op2(), op3(), op4()); - ``` +``` - ## Creation Operators +## 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. @@ -35,4 +34,3 @@ Visit the following resources to learn more: - [List of creation operators](https://rxjs.dev/guide/operators#creation-operators-list) - [Full RxJS Operators Documentation](https://rxjs.dev/guide/operators) - diff --git a/src/data/roadmaps/angular/content/102-angular-basics/100-angularjs-vs-angular.md b/src/data/roadmaps/angular/content/102-angular-basics/100-angularjs-vs-angular.md index 97210bfce..6a73152f7 100644 --- a/src/data/roadmaps/angular/content/102-angular-basics/100-angularjs-vs-angular.md +++ b/src/data/roadmaps/angular/content/102-angular-basics/100-angularjs-vs-angular.md @@ -5,4 +5,4 @@ AngularJS was the older version of Angular, whose support officially ended in Ja Visit the following resources to learn more: - [AngularJS Website](https://angularjs.org/) -- [Official - Getting started with Angular](https://angular.io/start) \ No newline at end of file +- [Official - Getting started with Angular](https://angular.io/start) diff --git a/src/data/roadmaps/angular/content/102-angular-basics/101-angular-components.md b/src/data/roadmaps/angular/content/102-angular-basics/101-angular-components.md index a5a181e37..658e39b7d 100644 --- a/src/data/roadmaps/angular/content/102-angular-basics/101-angular-components.md +++ b/src/data/roadmaps/angular/content/102-angular-basics/101-angular-components.md @@ -2,12 +2,12 @@ Components are the main building block for Angular applications. Each component consists of: -* An HTML template that declares what renders on the page -* A TypeScript class that defines the behavior -* A CSS selector that defines how the component is used in a template -* Optionally, CSS styles applied to the template +- An HTML template that declares what renders on the page +- A TypeScript class that defines the behavior +- A CSS selector that defines how the component is used in a template +- Optionally, CSS styles applied to the template Visit the following resources to learn more: - [Angular Components Overview](https://angular.io/guide/component-overview) -- [Standalone Components in Angular](https://www.youtube.com/watch?v=x5PZwb4XurU) \ No newline at end of file +- [Standalone Components in Angular](https://www.youtube.com/watch?v=x5PZwb4XurU) diff --git a/src/data/roadmaps/angular/content/102-angular-basics/102-angular-templates.md b/src/data/roadmaps/angular/content/102-angular-basics/102-angular-templates.md index f20c1b32c..d7bc3ecb8 100644 --- a/src/data/roadmaps/angular/content/102-angular-basics/102-angular-templates.md +++ b/src/data/roadmaps/angular/content/102-angular-basics/102-angular-templates.md @@ -5,4 +5,4 @@ A Template is a form of HTML which tells Angular to go towards another component Visit the following resources to learn more: - [Understanding Templates](https://angular.io/guide/template-overview) -- [Template Syntax](https://angular.io/guide/template-syntax) \ No newline at end of file +- [Template Syntax](https://angular.io/guide/template-syntax) diff --git a/src/data/roadmaps/angular/content/102-angular-basics/103-angular-modules.md b/src/data/roadmaps/angular/content/102-angular-basics/103-angular-modules.md index 042b47f65..6d095eb7d 100644 --- a/src/data/roadmaps/angular/content/102-angular-basics/103-angular-modules.md +++ b/src/data/roadmaps/angular/content/102-angular-basics/103-angular-modules.md @@ -4,4 +4,4 @@ Modules in Angular act like a container where we can group the components, direc Visit the following resources to learn more: -- [Introduction to Modules](https://angular.io/guide/architecture-modules) \ No newline at end of file +- [Introduction to Modules](https://angular.io/guide/architecture-modules) diff --git a/src/data/roadmaps/angular/content/102-angular-basics/104-dependency-injection.md b/src/data/roadmaps/angular/content/102-angular-basics/104-dependency-injection.md index d03ee277d..43668928e 100644 --- a/src/data/roadmaps/angular/content/102-angular-basics/104-dependency-injection.md +++ b/src/data/roadmaps/angular/content/102-angular-basics/104-dependency-injection.md @@ -5,4 +5,4 @@ Dependency Injection is one of the fundamental concepts in Angular. DI is wired Visit the following resources to learn more: - [Understanding Dependency Injection](https://angular.io/guide/dependency-injection) -- [Dependency Injection in Action](https://angular.io/guide/dependency-injection-in-action) \ No newline at end of file +- [Dependency Injection in Action](https://angular.io/guide/dependency-injection-in-action) diff --git a/src/data/roadmaps/angular/content/102-angular-basics/106-routing.md b/src/data/roadmaps/angular/content/102-angular-basics/106-routing.md index f3885e517..45240dfda 100644 --- a/src/data/roadmaps/angular/content/102-angular-basics/106-routing.md +++ b/src/data/roadmaps/angular/content/102-angular-basics/106-routing.md @@ -5,4 +5,4 @@ Routing in Angular allows the users to create a single-page application with mul Visit the following resources to learn more: - [Angular Routing](https://angular.io/guide/routing-overview) -- [Common Routing Tasks](https://angular.io/guide/router) \ No newline at end of file +- [Common Routing Tasks](https://angular.io/guide/router) diff --git a/src/data/roadmaps/angular/content/102-angular-basics/index.md b/src/data/roadmaps/angular/content/102-angular-basics/index.md index d4e8db216..049bbe2ed 100644 --- a/src/data/roadmaps/angular/content/102-angular-basics/index.md +++ b/src/data/roadmaps/angular/content/102-angular-basics/index.md @@ -2,4 +2,4 @@ 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. \ No newline at end of file +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. diff --git a/src/data/roadmaps/angular/content/103-angular-cli/100-ng-build.md b/src/data/roadmaps/angular/content/103-angular-cli/100-ng-build.md index f0dc67d66..bfa588154 100644 --- a/src/data/roadmaps/angular/content/103-angular-cli/100-ng-build.md +++ b/src/data/roadmaps/angular/content/103-angular-cli/100-ng-build.md @@ -5,4 +5,4 @@ The command can be used to build a project of type "application" or "library". W Visit the following resources to learn more: - [Ng Build - Angular.io](https://angular.io/cli/build) -- [Building an Angular project](https://www.youtube.com/watch?v=VB6WuCPDwz0) \ No newline at end of file +- [Building an Angular project](https://www.youtube.com/watch?v=VB6WuCPDwz0) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/101-ng-serve.md b/src/data/roadmaps/angular/content/103-angular-cli/101-ng-serve.md index 02d8ca63c..77623c5fe 100644 --- a/src/data/roadmaps/angular/content/103-angular-cli/101-ng-serve.md +++ b/src/data/roadmaps/angular/content/103-angular-cli/101-ng-serve.md @@ -5,4 +5,4 @@ ng serve — This command builds, deploy, serves and every time watches your cod Visit the following resources to learn more: - [Ng serve - Angular.io](https://angular.io/cli/serve) -- [Running a project with ng serve](https://www.youtube.com/watch?v=-w-RfHcLt5U) \ No newline at end of file +- [Running a project with ng serve](https://www.youtube.com/watch?v=-w-RfHcLt5U) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/102-ng-generate.md b/src/data/roadmaps/angular/content/103-angular-cli/102-ng-generate.md index 4be1359aa..b834c9c5b 100644 --- a/src/data/roadmaps/angular/content/103-angular-cli/102-ng-generate.md +++ b/src/data/roadmaps/angular/content/103-angular-cli/102-ng-generate.md @@ -2,8 +2,7 @@ ng generate is used to create the component in angular project. These are the two main ways to generate a new component in Angular: using ng g c , and using ng generate component . Using either of these two commands, the new component can be generated pretty easily and followed by the suitable component name of your choice. - Visit the following resources to learn more: - [Ng generate - Angular.io](https://angular.io/cli/generate) -- [Angular cli generate component](https://www.youtube.com/watch?v=NlHlu_zzmo4) \ No newline at end of file +- [Angular cli generate component](https://www.youtube.com/watch?v=NlHlu_zzmo4) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/103-ng-test.md b/src/data/roadmaps/angular/content/103-angular-cli/103-ng-test.md index 04ebf9e23..dd707c49c 100644 --- a/src/data/roadmaps/angular/content/103-angular-cli/103-ng-test.md +++ b/src/data/roadmaps/angular/content/103-angular-cli/103-ng-test.md @@ -4,8 +4,7 @@ ng test is used to runs unit tests in angular project. `ng test [options]` | `ng t [options]` - Visit the following resources to learn more: - [Ng test - Angular.io](https://angular.io/cli/test) -- [Angular Ng test commands](https://www.youtube.com/watch?v=n1O_eRwzRKA) \ No newline at end of file +- [Angular Ng test commands](https://www.youtube.com/watch?v=n1O_eRwzRKA) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/104-ng-e2e.md b/src/data/roadmaps/angular/content/103-angular-cli/104-ng-e2e.md index eea23651a..cb1f592b7 100644 --- a/src/data/roadmaps/angular/content/103-angular-cli/104-ng-e2e.md +++ b/src/data/roadmaps/angular/content/103-angular-cli/104-ng-e2e.md @@ -5,4 +5,4 @@ End-to-end testing (E2E) of Angular applications is performed using the Protract Visit the following resources to learn more: - [Ng e2e - Angular.io](https://angular.io/cli/e2e) -- [Angular cli generate component](https://www.youtube.com/watch?v=3vFnhzEGfew) \ No newline at end of file +- [Angular cli generate component](https://www.youtube.com/watch?v=3vFnhzEGfew) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/105-ng-new.md b/src/data/roadmaps/angular/content/103-angular-cli/105-ng-new.md index 39a3de8f6..1665fde80 100644 --- a/src/data/roadmaps/angular/content/103-angular-cli/105-ng-new.md +++ b/src/data/roadmaps/angular/content/103-angular-cli/105-ng-new.md @@ -9,4 +9,4 @@ The default Angular project, All dependencies installed in node_modules folder , Visit the following resources to learn more: - [Ng New - Angular.io](https://angular.io/cli/new) -- [ng New command](https://www.youtube.com/watch?v=NdEpZezptkQ) \ No newline at end of file +- [ng New command](https://www.youtube.com/watch?v=NdEpZezptkQ) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/index.md b/src/data/roadmaps/angular/content/103-angular-cli/index.md index f968afc21..fc16784cb 100644 --- a/src/data/roadmaps/angular/content/103-angular-cli/index.md +++ b/src/data/roadmaps/angular/content/103-angular-cli/index.md @@ -1,10 +1,10 @@ # Angular CLI -The Angular CLI is a command-line interface tool that you use to initialize, develop, scaffold, and maintain Angular applications directly from a command shell. we can install angular latest CLI using the following command +The Angular CLI is a command-line interface tool that you use to initialize, develop, scaffold, and maintain Angular applications directly from a command shell. we can install angular latest CLI using the following command `npm install -g @angular/cli` Visit the following resources to learn more: - [Angular CLI - Angular.io](https://angular.io/cli) -- [Angular CLI - setup](https://www.youtube.com/watch?v=mZnzX3J5XKI) \ No newline at end of file +- [Angular CLI - setup](https://www.youtube.com/watch?v=mZnzX3J5XKI) diff --git a/src/data/roadmaps/angular/content/104-templates/102-template-statements.md b/src/data/roadmaps/angular/content/104-templates/102-template-statements.md index bcf3a22d7..7ce46702a 100644 --- a/src/data/roadmaps/angular/content/104-templates/102-template-statements.md +++ b/src/data/roadmaps/angular/content/104-templates/102-template-statements.md @@ -1,6 +1,6 @@ # 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 `;`. +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 `;`. Visit the following resources to learn more: diff --git a/src/data/roadmaps/angular/content/105-rendering-topics/100-builtin-directives.md b/src/data/roadmaps/angular/content/105-rendering-topics/100-builtin-directives.md index 463e10f78..56bd86fa8 100644 --- a/src/data/roadmaps/angular/content/105-rendering-topics/100-builtin-directives.md +++ b/src/data/roadmaps/angular/content/105-rendering-topics/100-builtin-directives.md @@ -4,8 +4,7 @@ SKDirectives are classes that add additional behavior to elements in your Angula `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. - Visit the following resources to learn more: - [Understanding BuiltIn Directives](https://angular.io/guide/built-in-directives) -- [BuiltIn Directives Types](https://thinkster.io/tutorials/angular-2-directives) \ No newline at end of file +- [BuiltIn Directives Types](https://thinkster.io/tutorials/angular-2-directives) diff --git a/src/data/roadmaps/angular/content/105-rendering-topics/101-builtin-pipes.md b/src/data/roadmaps/angular/content/105-rendering-topics/101-builtin-pipes.md index e235d5a70..416b3ee58 100644 --- a/src/data/roadmaps/angular/content/105-rendering-topics/101-builtin-pipes.md +++ b/src/data/roadmaps/angular/content/105-rendering-topics/101-builtin-pipes.md @@ -1,11 +1,10 @@ # 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 +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` - Visit the following resources to learn more: - [Understanding BuiltIn Pipes](https://angular.io/guide/pipes) -- [BuiltIn Pipes - exampls](https://codecraft.tv/courses/angular/pipes/built-in-pipes/) \ No newline at end of file +- [BuiltIn Pipes - exampls](https://codecraft.tv/courses/angular/pipes/built-in-pipes/) diff --git a/src/data/roadmaps/angular/content/105-rendering-topics/102-change-detection.md b/src/data/roadmaps/angular/content/105-rendering-topics/102-change-detection.md index ae7a59cbb..e684ebc3d 100644 --- a/src/data/roadmaps/angular/content/105-rendering-topics/102-change-detection.md +++ b/src/data/roadmaps/angular/content/105-rendering-topics/102-change-detection.md @@ -5,4 +5,4 @@ Change detection is the process through which Angular checks to see whether your Visit the following resources to learn more: - [Understanding Change detection](https://angular.io/guide/change-detection) -- [4 Runtime Performance Optimizations ( Change detection )](https://www.youtube.com/watch?v=f8sA-i6gkGQ) \ No newline at end of file +- [4 Runtime Performance Optimizations ( Change detection )](https://www.youtube.com/watch?v=f8sA-i6gkGQ) diff --git a/src/data/roadmaps/angular/content/105-rendering-topics/index.md b/src/data/roadmaps/angular/content/105-rendering-topics/index.md index 63bac718d..376c9920b 100644 --- a/src/data/roadmaps/angular/content/105-rendering-topics/index.md +++ b/src/data/roadmaps/angular/content/105-rendering-topics/index.md @@ -1 +1 @@ -# Rendering topics \ No newline at end of file +# Rendering topics diff --git a/src/data/roadmaps/angular/content/106-forms/100-reactive-forms.md b/src/data/roadmaps/angular/content/106-forms/100-reactive-forms.md index a3413c452..6f3668160 100644 --- a/src/data/roadmaps/angular/content/106-forms/100-reactive-forms.md +++ b/src/data/roadmaps/angular/content/106-forms/100-reactive-forms.md @@ -1,10 +1,10 @@ # Reactive Forms -Reactive Forms in angular are those which used to handle the inputs coming from the user. We can define controls by using classes such as FormGroup and FormControl. +Reactive Forms in angular are those which used to handle the inputs coming from the user. We can define controls by using classes such as FormGroup and FormControl. Visit the following resources to learn more: - [Reactive forms - Angular](https://angular.io/guide/reactive-forms) - [Angular Reactive Forms](https://www.javatpoint.com/angular-reactive-forms) - [How To Use Reactive Forms in Angular](https://www.digitalocean.com/community/tutorials/angular-reactive-forms-introduction) -- [Reactive Form in Angular](https://www.youtube.com/watch?v=8k4ctDmVn7w) \ No newline at end of file +- [Reactive Form in Angular](https://www.youtube.com/watch?v=8k4ctDmVn7w) diff --git a/src/data/roadmaps/angular/content/106-forms/101-template-driven-forms.md b/src/data/roadmaps/angular/content/106-forms/101-template-driven-forms.md index c6aae8c3b..5e7b2f9b3 100644 --- a/src/data/roadmaps/angular/content/106-forms/101-template-driven-forms.md +++ b/src/data/roadmaps/angular/content/106-forms/101-template-driven-forms.md @@ -1,6 +1,6 @@ # Template Driven Forms -A Template driven form is the simplest form we can build in Angular. It is mainly used for creating simple form application. +A Template driven form is the simplest form we can build in Angular. It is mainly used for creating simple form application. It uses two-way data-binding (ngModel) to create and handle the form components. @@ -9,4 +9,4 @@ Visit the following resources to learn more: - [Building a template-driven form](https://angular.io/guide/forms) - [Template-Driven Forms](https://codecraft.tv/courses/angular/forms/template-driven/) - [Template driven form](https://www.youtube.com/watch?v=whr14XxB8-M) -- [Template driven form Validations](https://www.youtube.com/watch?v=cVd4ZCIXprs) \ No newline at end of file +- [Template driven form Validations](https://www.youtube.com/watch?v=cVd4ZCIXprs) diff --git a/src/data/roadmaps/angular/content/107-routing/100-configuration.md b/src/data/roadmaps/angular/content/107-routing/100-configuration.md index af4abbfe2..a025a48b1 100644 --- a/src/data/roadmaps/angular/content/107-routing/100-configuration.md +++ b/src/data/roadmaps/angular/content/107-routing/100-configuration.md @@ -1 +1 @@ -# Configuration \ No newline at end of file +# Configuration diff --git a/src/data/roadmaps/angular/content/107-routing/103-router-events.md b/src/data/roadmaps/angular/content/107-routing/103-router-events.md index 7b8aaf456..e20ed6a8e 100644 --- a/src/data/roadmaps/angular/content/107-routing/103-router-events.md +++ b/src/data/roadmaps/angular/content/107-routing/103-router-events.md @@ -1 +1 @@ -# Router events \ No newline at end of file +# Router events diff --git a/src/data/roadmaps/angular/content/108-services-remote-data/100-dependency-injection.md b/src/data/roadmaps/angular/content/108-services-remote-data/100-dependency-injection.md index 82644739d..100505df1 100644 --- a/src/data/roadmaps/angular/content/108-services-remote-data/100-dependency-injection.md +++ b/src/data/roadmaps/angular/content/108-services-remote-data/100-dependency-injection.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [What is Dependency Injection ? - angular.io ](https://angular.io/guide/dependency-injection) - [Introduction of Dependency injection](https://www.youtube.com/watch?v=OFPIGlxunL0) - diff --git a/src/data/roadmaps/angular/content/109-lifecycle-hooks.md b/src/data/roadmaps/angular/content/109-lifecycle-hooks.md index cb066e087..4066bb936 100644 --- a/src/data/roadmaps/angular/content/109-lifecycle-hooks.md +++ b/src/data/roadmaps/angular/content/109-lifecycle-hooks.md @@ -4,7 +4,7 @@ A component instance has a lifecycle that starts when Angular instantiates the c Your application can use lifecycle hook methods to tap into key events in the lifecycle of a component or directive to initialize new instances, initiate change detection when needed, respond to updates during change detection, and clean up before deletion of instances. -The following life cycle hooks of angular are : +The following life cycle hooks of angular are : `OnChanges` , `OnInit` , `DoCheck` , `OnDestroy` , `AfterContentInit` , `AfterContentChecked` , `AfterViewInit` , `AfterViewChecked` diff --git a/src/data/roadmaps/angular/content/110-state-management/100-ngxs.md b/src/data/roadmaps/angular/content/110-state-management/100-ngxs.md index cd24fce7b..36faf5ce7 100644 --- a/src/data/roadmaps/angular/content/110-state-management/100-ngxs.md +++ b/src/data/roadmaps/angular/content/110-state-management/100-ngxs.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [What is NGXS ? - Ngxs.io ](https://www.ngxs.io/) - [Details about NGXS - Medium ](https://medium.com/@knoldus/introduction-to-ngxs-state-management-pattern-library-for-angular-ec76f681ceba) - [Practise of NGXS](https://www.youtube.com/watch?v=SGj11j4hxmg) - diff --git a/src/data/roadmaps/angular/content/110-state-management/101-ngrx.md b/src/data/roadmaps/angular/content/110-state-management/101-ngrx.md index 5145d1ff5..ccef8decb 100644 --- a/src/data/roadmaps/angular/content/110-state-management/101-ngrx.md +++ b/src/data/roadmaps/angular/content/110-state-management/101-ngrx.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [What is NGRX ? - ngrx.io ](https://ngrx.io/) - [Details about NGRX - Medium ](https://ahmedrebai.medium.com/introduction-to-state-management-with-ngrx-and-angular-91f4ff27ec9f) - [Practise of NGRX](https://www.youtube.com/watch?v=f97ICOaekNU) - diff --git a/src/data/roadmaps/angular/content/111-zones.md b/src/data/roadmaps/angular/content/111-zones.md index 3921f153e..be9f572e2 100644 --- a/src/data/roadmaps/angular/content/111-zones.md +++ b/src/data/roadmaps/angular/content/111-zones.md @@ -1 +1 @@ -# Zones \ No newline at end of file +# Zones diff --git a/src/data/roadmaps/angular/content/112-creating-a-custom-x/100-directive.md b/src/data/roadmaps/angular/content/112-creating-a-custom-x/100-directive.md index e22a61d69..db4788d1c 100644 --- a/src/data/roadmaps/angular/content/112-creating-a-custom-x/100-directive.md +++ b/src/data/roadmaps/angular/content/112-creating-a-custom-x/100-directive.md @@ -7,4 +7,4 @@ From the core concept, Angular directives are categorized into three categories: Visit the following resources to learn more: - [Create a custom directive - Freecodecamp](https://www.freecodecamp.org/news/angular-directives-learn-how-to-use-or-create-custom-directives-in-angular-c9b133c24442/) -- [Create a custom directive video for Beginners](https://www.youtube.com/watch?v=AoN56g6UAsE) \ No newline at end of file +- [Create a custom directive video for Beginners](https://www.youtube.com/watch?v=AoN56g6UAsE) diff --git a/src/data/roadmaps/angular/content/112-creating-a-custom-x/101-pipe.md b/src/data/roadmaps/angular/content/112-creating-a-custom-x/101-pipe.md index a449f22ee..2ad6f9a5a 100644 --- a/src/data/roadmaps/angular/content/112-creating-a-custom-x/101-pipe.md +++ b/src/data/roadmaps/angular/content/112-creating-a-custom-x/101-pipe.md @@ -5,4 +5,4 @@ Pipes to transform strings, currency amounts, dates, and other data for display. Visit the following resources to learn more: - [Create a custom pipe - angular.io](https://angular.io/guide/pipes-custom-data-trans) -- [Create a custom pipe video for Beginners](https://www.youtube.com/watch?v=P2587FN4Y0w) \ No newline at end of file +- [Create a custom pipe video for Beginners](https://www.youtube.com/watch?v=P2587FN4Y0w) diff --git a/src/data/roadmaps/aspnet-core/aspnet-core.md b/src/data/roadmaps/aspnet-core/aspnet-core.md index d0863244c..b79375fef 100644 --- a/src/data/roadmaps/aspnet-core/aspnet-core.md +++ b/src/data/roadmaps/aspnet-core/aspnet-core.md @@ -1,62 +1,61 @@ --- -jsonUrl: "/jsons/roadmaps/aspnet-core.json" -pdfUrl: "/pdfs/roadmaps/aspnet-core.pdf" +jsonUrl: '/jsons/roadmaps/aspnet-core.json' +pdfUrl: '/pdfs/roadmaps/aspnet-core.pdf' order: 9 -briefTitle: "ASP.NET Core" -briefDescription: "Step by step guide to becoming an ASP.NET Core Developer in 2023" -title: "ASP.NET Core Developer" -description: "Step by step guide to becoming an ASP.NET core developer in 2023" +briefTitle: 'ASP.NET Core' +briefDescription: 'Step by step guide to becoming an ASP.NET Core Developer in 2023' +title: 'ASP.NET Core Developer' +description: 'Step by step guide to becoming an ASP.NET core developer in 2023' isNew: false hasTopics: true dimensions: width: 968 height: 2773.45 schema: - headline: "ASP.NET Core Developer Roadmap" - description: "Learn how to become a ASP.NET Core Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/aspnet-core.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'ASP.NET Core Developer Roadmap' + description: 'Learn how to become a ASP.NET Core Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/aspnet-core.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Learn to become a modern ASP.NET core developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for asp.net core development. Learn to become a modern ASP.NET core developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Learn to become a modern ASP.NET core developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for asp.net core development. Learn to become a modern ASP.NET core developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a developer" - - "guide to becoming an asp.net core developer" - - "asp.net core developer" - - "asp.net core engineer" - - "asp.net core skills" - - "guide to asp.net core" - - "asp.net developer roadmap" - - "asp net developer roadmap" - - "asp developer roadmap" - - "asp.net core roadmap" - - "asp.net core skills" - - "asp.net core skills test" - - "skills for asp.net core" - - "cloud development" - - "what is asp.net core" - - "asp.net core quiz" - - "asp.net core interview questions" - - "asp.net core engineer roadmap" - - "asp.net core developer roadmap" - - "become an asp.net core developer" - - "asp.net core developer career path" - - "asp.net core developer" - - "modern asp.net core developer" + - 'guide to becoming a developer' + - 'guide to becoming an asp.net core developer' + - 'asp.net core developer' + - 'asp.net core engineer' + - 'asp.net core skills' + - 'guide to asp.net core' + - 'asp.net developer roadmap' + - 'asp net developer roadmap' + - 'asp developer roadmap' + - 'asp.net core roadmap' + - 'asp.net core skills' + - 'asp.net core skills test' + - 'skills for asp.net core' + - 'cloud development' + - 'what is asp.net core' + - 'asp.net core quiz' + - 'asp.net core interview questions' + - 'asp.net core engineer roadmap' + - 'asp.net core developer roadmap' + - 'become an asp.net core developer' + - 'asp.net core developer career path' + - 'asp.net core developer' + - 'modern asp.net core developer' relatedRoadmaps: - - "backend" - - "devops" - - "python" - - "golang" - - "java" - - "nodejs" + - 'backend' + - 'devops' + - 'python' + - 'golang' + - 'java' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- - diff --git a/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/100-csharp.md b/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/100-csharp.md index 4ae282054..75e74b9bb 100644 --- a/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/100-csharp.md +++ b/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/100-csharp.md @@ -5,4 +5,4 @@ C# is a modern coding language that was developed by Microsoft that focuses on a Visit the following resources to learn more: - [C# official website?](https://learn.microsoft.com/en-us/dotnet/csharp//) -- [The Beginners Guide to C#](https://www.w3schools.com/CS/index.php) \ No newline at end of file +- [The Beginners Guide to C#](https://www.w3schools.com/CS/index.php) diff --git a/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/101-dotnet.md b/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/101-dotnet.md index 53ac36d92..0a633905f 100644 --- a/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/101-dotnet.md +++ b/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/101-dotnet.md @@ -6,4 +6,4 @@ For more information, visit the following link: - [What is .NET?](https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet) - [Intro to .NET](https://www.codecademy.com/article/what-is-net) -- [An Overview of .NET](https://auth0.com/blog/what-is-dotnet-platform-overview/) \ No newline at end of file +- [An Overview of .NET](https://auth0.com/blog/what-is-dotnet-platform-overview/) diff --git a/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/102-dotnet-cli.md b/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/102-dotnet-cli.md index aecdd05ef..d3bdc6657 100644 --- a/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/102-dotnet-cli.md +++ b/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/102-dotnet-cli.md @@ -5,4 +5,4 @@ Visit the following resources to learn more: - [Microsoft - .NET CLI overview](https://learn.microsoft.com/en-us/dotnet/core/tools/) -- [Intro To The .NET CLI](https://youtu.be/RQLzp2Z8-BE) \ No newline at end of file +- [Intro To The .NET CLI](https://youtu.be/RQLzp2Z8-BE) diff --git a/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/index.md b/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/index.md index 6fe3111d2..d05e767ae 100644 --- a/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/index.md +++ b/src/data/roadmaps/aspnet-core/content/100-basics-of-csharp/index.md @@ -10,4 +10,4 @@ Visit the following links for more information: - [C Sharp Basics](https://www.codecademy.com/catalog/language/c-sharp) - [Introduction to C#](https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/tutorials/) -- [Basics Of C#](https://www.c-sharpcorner.com/UploadFile/e9fdcd/basics-of-C-Sharp/) \ No newline at end of file +- [Basics Of C#](https://www.c-sharpcorner.com/UploadFile/e9fdcd/basics-of-C-Sharp/) diff --git a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/100-git.md b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/100-git.md index b69580842..eb35be86b 100644 --- a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/100-git.md +++ b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/100-git.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Git & GitHub Crash Course For Beginners](https://www.youtube.com/watch?v=SWYqp7iY_Tc) - [Learn Git with Tutorials, News and Tips - Atlassian](https://www.atlassian.com/git) -- [Git Cheat Sheet](https://cs.fyi/guide/git-cheatsheet) \ No newline at end of file +- [Git Cheat Sheet](https://cs.fyi/guide/git-cheatsheet) diff --git a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/101-azure-devops-services.md b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/101-azure-devops-services.md index e710cb6dc..38d258e04 100644 --- a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/101-azure-devops-services.md +++ b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/101-azure-devops-services.md @@ -13,4 +13,4 @@ These services can be used to create a full-featured development environment tha For more information, visit the following links: - [Build, test, and deploy .NET Core apps](https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/dotnet-core?view=azure-devops&tabs=dotnetfive) -- [Microsoft Azure DevOps for ASP .NET Core Web apps](https://techmindfactory.com/Microsoft-Azure-DevOps-for-ASP-.NET-Core-Web-apps/) \ No newline at end of file +- [Microsoft Azure DevOps for ASP .NET Core Web apps](https://techmindfactory.com/Microsoft-Azure-DevOps-for-ASP-.NET-Core-Web-apps/) diff --git a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/index.md b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/index.md index 75a64cfad..16288e576 100644 --- a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/index.md +++ b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/index.md @@ -21,4 +21,4 @@ For more information, visit the following links: - [A Step-by-Step Approach to Learn OOP](https://www.geeksforgeeks.org/a-step-by-step-approach-to-learn-object-oriented-programming/) - [Asp.net - Complete Tutorial](https://www.youtube.com/watch?v=kdPtNMb8tPw) - [Learn Cloud Computing](https://www.youtube.com/watch?v=eWwK2FKWp0g) -- [DevOps Course for Beginners](https://www.youtube.com/watch?v=hQcFE0RD0cQ) \ No newline at end of file +- [DevOps Course for Beginners](https://www.youtube.com/watch?v=hQcFE0RD0cQ) diff --git a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/100-database-design-basics.md b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/100-database-design-basics.md index 41d3970da..0c8bd5c94 100644 --- a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/100-database-design-basics.md +++ b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/100-database-design-basics.md @@ -6,4 +6,4 @@ The main objectives of database design in DBMS are to produce logical and physic Visit the following resources to learn more: - [Database design basics](https://support.microsoft.com/en-us/office/database-design-basics-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5) -- [Database Design Course](https://www.youtube.com/watch?v=ztHopE5Wnpc) \ No newline at end of file +- [Database Design Course](https://www.youtube.com/watch?v=ztHopE5Wnpc) diff --git a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/101-sql-basics.md b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/101-sql-basics.md index c89bea3e6..45ff5ac75 100644 --- a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/101-sql-basics.md +++ b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/101-sql-basics.md @@ -7,8 +7,7 @@ Although SQL is an ANSI/ISO standard, there are different versions of the SQL la However, to be compliant with the ANSI standard, they all support at least the major commands (such as SELECT, UPDATE, DELETE, INSERT, WHERE) in a similar manner. - Visit the following resources to learn more: - [Introduction to SQL](https://www.w3schools.com/sql/sql_intro.asp) -- [SQL Tutorial - Full Database Course for Beginners](https://www.youtube.com/watch?v=HXV3zeQKqGY) \ No newline at end of file +- [SQL Tutorial - Full Database Course for Beginners](https://www.youtube.com/watch?v=HXV3zeQKqGY) diff --git a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/102-stored-procedures.md b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/102-stored-procedures.md index 966e1192e..49439b425 100644 --- a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/102-stored-procedures.md +++ b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/102-stored-procedures.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Stored Procedure Tutorial](https://www.w3schools.com/sql/sql_stored_procedures.asp) - [Stored Procedure in SQL: Benefits And How to Create It](https://www.simplilearn.com/tutorials/sql-tutorial/stored-procedure-in-sql) -- [SQL Server stored procedures for beginners](https://www.sqlshack.com/sql-server-stored-procedures-for-beginners/) \ No newline at end of file +- [SQL Server stored procedures for beginners](https://www.sqlshack.com/sql-server-stored-procedures-for-beginners/) diff --git a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/104-triggers.md b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/104-triggers.md index f4054c762..73e07aec6 100644 --- a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/104-triggers.md +++ b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/104-triggers.md @@ -11,4 +11,4 @@ For more information, visit the following links: - [Database Triggers](https://docs.oracle.com/cd/A57673_01/DOC/server/doc/SCN73/ch15.htm) - [Database Triggers: Examples & Overview](https://study.com/academy/lesson/database-triggers-examples-overview.html) - [What are Triggers in SQL?](https://www.edureka.co/blog/triggers-in-sql/) -- [What is a SQL Trigger?](https://www.essentialsql.com/sql-trigger/) \ No newline at end of file +- [What is a SQL Trigger?](https://www.essentialsql.com/sql-trigger/) diff --git a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/index.md b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/index.md index c551214a2..f1d5f6c31 100644 --- a/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/index.md +++ b/src/data/roadmaps/aspnet-core/content/102-database-fundamentals/index.md @@ -13,4 +13,4 @@ Visit the following resources to learn more: - [Intro To Relational Databases](https://www.udacity.com/course/intro-to-relational-databases--ud197) - [What is Relational Database](https://youtu.be/OqjJjpjDRLc) - [NoSQL Explained](https://www.mongodb.com/nosql-explained) -- [How do NoSQL Databases work](https://www.youtube.com/watch?v=0buKQHokLK8) \ No newline at end of file +- [How do NoSQL Databases work](https://www.youtube.com/watch?v=0buKQHokLK8) diff --git a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/100-mvc.md b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/100-mvc.md index e1854db53..dd05ba09c 100644 --- a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/100-mvc.md +++ b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/100-mvc.md @@ -10,4 +10,4 @@ Visit the following resources to learn more: - [MVC Official Documentation](https://learn.microsoft.com/en-us/aspnet/core/mvc/overview?WT.mc_id=dotnet-35129-website&view=aspnetcore-7.0) - [ASP.NET MVC Architecture](https://www.tutorialsteacher.com/mvc/mvc-architecture) -- [MVC Framework - Introduction](https://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm) \ No newline at end of file +- [MVC Framework - Introduction](https://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm) diff --git a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/101-rest.md b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/101-rest.md index 774677766..c8a34733e 100644 --- a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/101-rest.md +++ b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/101-rest.md @@ -6,4 +6,4 @@ For more information, visit the following resources: - [What is REST Services?](http://www.codedigest.com/quick-start/16/what-is-rest-services-how-to-create-rest-services-in-aspnet) - [Restful API In ASP.NET: Introduction of REST & Web API](https://www.c-sharpcorner.com/UploadFile/4b0136/restful-api-in-Asp-Net-introduction-of-rest-web-api/) -- [What are RESTful APIs](https://www.pragimtech.com/blog/blazor/what-are-restful-apis/) \ No newline at end of file +- [What are RESTful APIs](https://www.pragimtech.com/blog/blazor/what-are-restful-apis/) diff --git a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/102-razor-pages.md b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/102-razor-pages.md index 74420d4c5..293d51054 100644 --- a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/102-razor-pages.md +++ b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/102-razor-pages.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Basics of Razor Pagess](https://www.jetbrains.com/dotnet/guide/tutorials/basics/razor-pages/) - [Get started with Razor Pages in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/?view=aspnetcore-7.0) -- [What Is Razor Pages?](https://www.learnrazorpages.com/) \ No newline at end of file +- [What Is Razor Pages?](https://www.learnrazorpages.com/) diff --git a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/103-razor-components.md b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/103-razor-components.md index d5984b87a..c38771ae6 100644 --- a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/103-razor-components.md +++ b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/103-razor-components.md @@ -8,4 +8,4 @@ For more information, vist the following links: - [ASP.NET Core Razor components](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/?view=aspnetcore-7.0) - [What is Core razor components?](https://www.youtube.com/watch?v=KseDLejhYi0) -- [Core Razor Componets in .NET](https://www.c-sharpcorner.com/blogs/asp-net-core-razor-componets) \ No newline at end of file +- [Core Razor Componets in .NET](https://www.c-sharpcorner.com/blogs/asp-net-core-razor-componets) diff --git a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/104-middlewares.md b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/104-middlewares.md index 8cadd97a5..0fbc91a86 100644 --- a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/104-middlewares.md +++ b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/104-middlewares.md @@ -8,4 +8,4 @@ Visit the following links for more resources: - [What is Middleware?](https://www.redhat.com/en/topics/middleware/what-is-middleware) - [Introduction to Middleware](https://www.techtarget.com/searchapparchitecture/definition/middleware) -- [What is Middleware in .NET?](https://www.talend.com/resources/what-is-middleware/) \ No newline at end of file +- [What is Middleware in .NET?](https://www.talend.com/resources/what-is-middleware/) diff --git a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/105-filters-and-attributes.md b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/105-filters-and-attributes.md index 725e737a6..137dee745 100644 --- a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/105-filters-and-attributes.md +++ b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/105-filters-and-attributes.md @@ -4,4 +4,4 @@ In the ASP.NET Core framework, filters and attributes are used to add additional - **Filters** are classes that implement one or more of the filter interfaces provided by the framework, such as `IActionFilter`, `IResultFilter`, `IExceptionFilter`, and `IAuthorizationFilter`. Filters can be applied to controllers, action methods, or globally to the entire application. They can be used to perform tasks such as logging, caching, and handling exceptions. -- **Attributes** are classes that derive from `Attribute` class, and are used to decorate controllers, action methods, or properties with additional metadata. For example, the Authorize attribute can be used to require that a user is authenticated before accessing a specific action method, and the `ValidateAntiForgeryToken` attribute can be used to protect against cross-site request forgery (CSRF) attacks. \ No newline at end of file +- **Attributes** are classes that derive from `Attribute` class, and are used to decorate controllers, action methods, or properties with additional metadata. For example, the Authorize attribute can be used to require that a user is authenticated before accessing a specific action method, and the `ValidateAntiForgeryToken` attribute can be used to protect against cross-site request forgery (CSRF) attacks. diff --git a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/106-app-settings-and-configurations.md b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/106-app-settings-and-configurations.md index 20075110e..700a89321 100644 --- a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/106-app-settings-and-configurations.md +++ b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/106-app-settings-and-configurations.md @@ -10,4 +10,4 @@ For more information, visit the following links: - [What is Azure App Configuration?](https://learn.microsoft.com/en-us/azure/azure-app-configuration/overview) - [What are App Configurations and how do I work with them?](https://support.procore.com/faq/what-are-app-configurations) -- [Configuration & AppSettings](https://docs.servicestack.net/appsettings) \ No newline at end of file +- [Configuration & AppSettings](https://docs.servicestack.net/appsettings) diff --git a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/index.md b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/index.md index 048af8a45..58ea9de10 100644 --- a/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/index.md +++ b/src/data/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/index.md @@ -6,4 +6,4 @@ For more information, visit the following resources: - [ASP.NET documentation](https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-7.0) - [ASP.NET Core Tutorial](https://www.tutorialspoint.com/asp.net_core/index.htm) -- [Learn ASP.NET Core from Scratch](https://www.tutorialsteacher.com/core) \ No newline at end of file +- [Learn ASP.NET Core from Scratch](https://www.tutorialsteacher.com/core) diff --git a/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/100-framework-basics.md b/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/100-framework-basics.md index efa509eec..57866a8bc 100644 --- a/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/100-framework-basics.md +++ b/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/100-framework-basics.md @@ -9,4 +9,4 @@ For more resources, visit the following link: - [ORM Framework](https://www.h2kinfosys.com/blog/orm-framework/) - [What are Frameworks in ORM](https://www.killerphp.com/articles/what-are-orm-frameworks/) - [Essentials of ORM Framework](https://medium.com/@mikependon/the-essentials-of-orm-framework-in-your-software-development-837131efd91b) -- [ORM Frameworks – What is an Object-Relational Mapping Framework](https://onlinecode.org/what-are-orm-frameworks/) \ No newline at end of file +- [ORM Frameworks – What is an Object-Relational Mapping Framework](https://onlinecode.org/what-are-orm-frameworks/) diff --git a/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/102-change-tracker-api.md b/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/102-change-tracker-api.md index 717bd291a..eb02b1631 100644 --- a/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/102-change-tracker-api.md +++ b/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/102-change-tracker-api.md @@ -9,4 +9,4 @@ For more resources, visit the following links: - [Change Tracking in EF Core](https://learn.microsoft.com/en-us/ef/core/change-tracking/) - [Intro to Change Tracking](https://www.oreilly.com/library/view/programming-entity-framework/9781449331825/ch05.html) -- [ChangeTracker in Entity Framework Core](https://www.entityframeworktutorial.net/efcore/changetracker-in-ef-core.aspxs) \ No newline at end of file +- [ChangeTracker in Entity Framework Core](https://www.entityframeworktutorial.net/efcore/changetracker-in-ef-core.aspxs) diff --git a/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/103-lazy-eager-explicit-loading.md b/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/103-lazy-eager-explicit-loading.md index 626614f4c..7b90ff860 100644 --- a/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/103-lazy-eager-explicit-loading.md +++ b/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/103-lazy-eager-explicit-loading.md @@ -12,4 +12,4 @@ Visit the following links for more resources: - [Eager Loading & Lazy Loading](https://www.c-sharpcorner.com/article/eager-loading-lazy-loading-and-explicit-loading-in-entity-framework/) - [Difference between Eager and Lazy Loading](https://stackoverflow.com/questions/31366236/lazy-loading-vs-eager-loading) -- [Working With Lazy & Eager Loading in Entity Framework](https://dzone.com/articles/working-with-lazy-loading-and-eager-loading-in-ent) \ No newline at end of file +- [Working With Lazy & Eager Loading in Entity Framework](https://dzone.com/articles/working-with-lazy-loading-and-eager-loading-in-ent) diff --git a/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/index.md b/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/index.md index 54940df44..5644798f8 100644 --- a/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/index.md +++ b/src/data/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/index.md @@ -6,4 +6,4 @@ For more information, visit the following links: - [Example of Entity Framework Core](https://learn.microsoft.com/en-us/ef/core/) - [Entity Framework Core Documentation](https://learn.microsoft.com/en-us/ef/) -- [What are the Basics of Entity Framework Core?](https://www.jetbrains.com/dotnet/guide/tutorials/basics/entity-framework-core/) \ No newline at end of file +- [What are the Basics of Entity Framework Core?](https://www.jetbrains.com/dotnet/guide/tutorials/basics/entity-framework-core/) diff --git a/src/data/roadmaps/aspnet-core/content/104-orm/102-repodb.md b/src/data/roadmaps/aspnet-core/content/104-orm/102-repodb.md index b88700c42..2fb3ac113 100644 --- a/src/data/roadmaps/aspnet-core/content/104-orm/102-repodb.md +++ b/src/data/roadmaps/aspnet-core/content/104-orm/102-repodb.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Get Started with RepoDB](https://repodb.net/) - [Complete Guide to RepoDB](https://medium.com/nerd-for-tech/everything-you-need-to-know-about-repodb-23cd4b9939c1) -- [Why Choose RepoDB?](https://blog.devgenius.io/why-choose-repodb-orm-over-dapper-da87432c7830) \ No newline at end of file +- [Why Choose RepoDB?](https://blog.devgenius.io/why-choose-repodb-orm-over-dapper-da87432c7830) diff --git a/src/data/roadmaps/aspnet-core/content/104-orm/103-nhibernate.md b/src/data/roadmaps/aspnet-core/content/104-orm/103-nhibernate.md index 13f395893..91e17cc2a 100644 --- a/src/data/roadmaps/aspnet-core/content/104-orm/103-nhibernate.md +++ b/src/data/roadmaps/aspnet-core/content/104-orm/103-nhibernate.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [What is Nhibernate?](https://www.partech.nl/en/publications/2021/08/what-is-nhibernate-and-how-is-it-different-from-entity-framework) - [NHibernate - ORM](https://www.tutorialspoint.com/nhibernate/nhibernate_orm.htm) -- [Get Started with NHibernate](https://nhibernate.info/) \ No newline at end of file +- [Get Started with NHibernate](https://nhibernate.info/) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/100-scrutor.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/100-scrutor.md index 5b8875bea..88a8b37e4 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/100-scrutor.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/100-scrutor.md @@ -7,4 +7,4 @@ One of the main features of Scrutor is its ability to automatically scan assembl For more information, visit the following resources: - [How to use Scrutor in ASP.Net Core?](https://www.infoworld.com/article/3321356/how-to-use-scrutor-in-aspnet-core.html) -- [Complete Guide to Scrutor](https://andrewlock.net/using-scrutor-to-automatically-register-your-services-with-the-asp-net-core-di-container/) \ No newline at end of file +- [Complete Guide to Scrutor](https://andrewlock.net/using-scrutor-to-automatically-register-your-services-with-the-asp-net-core-di-container/) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/100-microsoft-extensions-dependency-injection.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/100-microsoft-extensions-dependency-injection.md index 51542d085..a1314ed8a 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/100-microsoft-extensions-dependency-injection.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/100-microsoft-extensions-dependency-injection.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Guide to Microsoft Extensions Dependency Injection](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection?view=dotnet-plat-ext-7.0) - [Exploring the Microsoft.Extensions.DependencyInjection](https://www.codeproject.com/Articles/5339241/Exploring-the-Microsoft-Extensions-DependencyInjec) -- [How to use Microsoft.Extensions.DependencyInjection](https://stackoverflow.com/questions/53825155/how-can-i-use-microsoft-extensions-dependencyinjection-in-an-net-core-console-a) \ No newline at end of file +- [How to use Microsoft.Extensions.DependencyInjection](https://stackoverflow.com/questions/53825155/how-can-i-use-microsoft-extensions-dependencyinjection-in-an-net-core-console-a) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/101-auto-fac.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/101-auto-fac.md index c2d06685a..0dbcda98b 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/101-auto-fac.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/101-auto-fac.md @@ -8,4 +8,4 @@ Visit the following resources for more information: - [Autofac’s Documentation](https://autofac.readthedocs.io/en/latest/) - [Getting started with Autofac](https://autofac.org/) -- [Dependency Injection with Autofac](https://www.codeproject.com/Articles/25380/Dependency-Injection-with-Autofac) \ No newline at end of file +- [Dependency Injection with Autofac](https://www.codeproject.com/Articles/25380/Dependency-Injection-with-Autofac) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/102-ninject.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/102-ninject.md index c3a64f24a..9d47eb670 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/102-ninject.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/102-ninject.md @@ -8,4 +8,4 @@ For more information, visit the following resources: - [Intro to Ninject](http://www.ninject.org/) - [What is Ninject and when do you use it?](https://stackoverflow.com/questions/17375234/what-is-ninject-and-when-do-you-use-it) -- [How to use NInject?](https://www.infoworld.com/article/3191648/how-to-implement-di-in-webapi-using-ninject.html) \ No newline at end of file +- [How to use NInject?](https://www.infoworld.com/article/3191648/how-to-implement-di-in-webapi-using-ninject.html) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/103-castle-windsor.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/103-castle-windsor.md index 012d0ff8a..196e70eef 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/103-castle-windsor.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/103-castle-windsor.md @@ -8,4 +8,4 @@ Visit the following links for more resources: - [Getting Started with Dependency Injection Using Castle Windsor](https://www.codementor.io/@copperstarconsulting/getting-started-with-dependency-injection-using-castle-windsor-4meqzcsvh) - [What is Castle Windsor?](https://stackoverflow.com/questions/124871/what-is-castle-windsor-and-why-should-i-care) -- [Intro to Castle Windsor](http://www.castleproject.org/projects/windsor/) \ No newline at end of file +- [Intro to Castle Windsor](http://www.castleproject.org/projects/windsor/) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/104-simple-injector.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/104-simple-injector.md index 9ccce1f4d..9e7e5a438 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/104-simple-injector.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/104-simple-injector.md @@ -8,4 +8,4 @@ For more information, visit the following resources: - [How to use Simple Injector?](https://www.infoworld.com/article/3636242/how-to-use-simple-injector-in-aspnet-core-mvc.html) - [Simple Injector's Documentation](https://docs.simpleinjector.org/en/latest/) -- [Example of Dependency Injection Using Simple Injector](https://www.c-sharpcorner.com/UploadFile/4d9083/dependency-injection-using-simple-injector/) \ No newline at end of file +- [Example of Dependency Injection Using Simple Injector](https://www.c-sharpcorner.com/UploadFile/4d9083/dependency-injection-using-simple-injector/) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/index.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/index.md index 47ddea9c8..ef48dfe53 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/index.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/101-di-containers/index.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [What is DI Container?](https://www.dotnettricks.com/learn/dependencyinjection/what-is-ioc-container-or-di-container) - [Getting Started with DI Container](https://stackoverflow.com/questions/50718586/what-is-a-di-container) -- [How to Use DI Container?](https://learn.userfrosting.com/services/the-di-container) \ No newline at end of file +- [How to Use DI Container?](https://learn.userfrosting.com/services/the-di-container) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/100-scoped.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/100-scoped.md index 7620bb46f..adb67175a 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/100-scoped.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/100-scoped.md @@ -7,4 +7,4 @@ Scoped lifetime is useful when you have services that are specific to a given re For more information, visit the following resources: - [Dependency Injection - What is Scope?](https://javaranch.com/journal/2008/10/dependency-injection-what-is-scope.html) -- [Effective Dependency Injection Scoping](https://medium.com/android-news/effective-dependency-injection-scoping-4bac813d4491) \ No newline at end of file +- [Effective Dependency Injection Scoping](https://medium.com/android-news/effective-dependency-injection-scoping-4bac813d4491) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/101-transient.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/101-transient.md index 1bfa63f43..3d038b61d 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/101-transient.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/101-transient.md @@ -8,4 +8,4 @@ For more information: - [What are Transient Dependencies?](https://blazor-university.com/dependency-injection/dependency-lifetimes-and-scopes/transient-dependencies/) - [Dependency Injection Lifetime](https://www.tektutorialshub.com/asp-net-core/asp-net-core-dependency-injection-lifetime/) -- [Dependency Injection Explained with Transient](https://www.youtube.com/watch?v=NkTF_6IQPiY) \ No newline at end of file +- [Dependency Injection Explained with Transient](https://www.youtube.com/watch?v=NkTF_6IQPiY) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/102-singleton.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/102-singleton.md index 4148b2cc5..51a2e087c 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/102-singleton.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/102-singleton.md @@ -8,4 +8,4 @@ For more information: - [What are Singleton Dependencies?](https://blazor-university.com/dependency-injection/dependency-lifetimes-and-scopes/transient-dependencies/) - [Dependency Injection Lifetime](https://www.tektutorialshub.com/asp-net-core/asp-net-core-dependency-injection-lifetime/) -- [Dependency Injection Explained with Singleton](https://www.youtube.com/watch?v=NkTF_6IQPiY) \ No newline at end of file +- [Dependency Injection Explained with Singleton](https://www.youtube.com/watch?v=NkTF_6IQPiY) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/index.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/index.md index 68b7d3c92..44b507c41 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/index.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/index.md @@ -10,6 +10,6 @@ Additionally, you can also create a custom lifecycle by implementing the `Micros For more resources, visit the following links: - - [Complete Guide to Dependency Injection Lifecycles](https://www.youtube.com/watch?v=wA5bPsv2CLA) - - [What are Service Life Cyles in ASP.NET Core?](https://endjin.com/blog/2022/09/service-lifetimes-in-aspnet-core) - - [Learn Service Lifetimes in .NET Core](https://henriquesd.medium.com/dependency-injection-and-service-lifetimes-in-net-core-ab9189349420) \ No newline at end of file +- [Complete Guide to Dependency Injection Lifecycles](https://www.youtube.com/watch?v=wA5bPsv2CLA) +- [What are Service Life Cyles in ASP.NET Core?](https://endjin.com/blog/2022/09/service-lifetimes-in-aspnet-core) +- [Learn Service Lifetimes in .NET Core](https://henriquesd.medium.com/dependency-injection-and-service-lifetimes-in-net-core-ab9189349420) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/index.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/index.md index 33a2d7255..576dabf1d 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/index.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/index.md @@ -9,4 +9,4 @@ Visit the following links for more resources: - [What is Dependency Injection?](https://stackoverflow.com/questions/130794/what-is-dependency-injection) - [Dependency Injection, It's Definition & principles](https://www.growin.com/blog/what-is-dependency-injection/) -- [Intro to Dependency Injections](https://www.freecodecamp.org/news/a-quick-intro-to-dependency-injection-what-it-is-and-when-to-use-it-7578c84fa88f/) \ No newline at end of file +- [Intro to Dependency Injections](https://www.freecodecamp.org/news/a-quick-intro-to-dependency-injection-what-it-is-and-when-to-use-it-7578c84fa88f/) diff --git a/src/data/roadmaps/aspnet-core/content/106-caching/100-memory-cache.md b/src/data/roadmaps/aspnet-core/content/106-caching/100-memory-cache.md index 51d5cc03f..3c74002fa 100644 --- a/src/data/roadmaps/aspnet-core/content/106-caching/100-memory-cache.md +++ b/src/data/roadmaps/aspnet-core/content/106-caching/100-memory-cache.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Cache in-memory in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-7.0) - [Intro to In-Memory Caching in C#](https://www.youtube.com/watch?v=2jj2wH60QuE) -- [What is Memory Caching?](https://hazelcast.com/glossary/memory-caching/) \ No newline at end of file +- [What is Memory Caching?](https://hazelcast.com/glossary/memory-caching/) diff --git a/src/data/roadmaps/aspnet-core/content/106-caching/101-entity-framework-cache.md b/src/data/roadmaps/aspnet-core/content/106-caching/101-entity-framework-cache.md index 2bf4abcc9..0c1290448 100644 --- a/src/data/roadmaps/aspnet-core/content/106-caching/101-entity-framework-cache.md +++ b/src/data/roadmaps/aspnet-core/content/106-caching/101-entity-framework-cache.md @@ -9,4 +9,4 @@ Visit the following resources to learn more: - [Entity Framework 2nd Level Cache](https://www.gridgain.com/docs/latest/developers-guide/net-specific/net-entity-framework-cache) - [What is Entity Framework?](https://www.youtube.com/watch?v=Z7713GBhi4k) -- [Caching In Entity Framework](https://www.c-sharpcorner.com/article/caching-in-entity-framework-ef-core-using-ncache/) \ No newline at end of file +- [Caching In Entity Framework](https://www.c-sharpcorner.com/article/caching-in-entity-framework-ef-core-using-ncache/) diff --git a/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/100-memcached.md b/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/100-memcached.md index 3dae74ed9..21577ee93 100644 --- a/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/100-memcached.md +++ b/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/100-memcached.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Using Memcached as Distributed Cache in .NET Core](https://dotnetcorecentral.com/blog/using-memcached-as-distributed-cache-in-net-core/) - [Memcached as Distributed Cache in .Net Core Application](https://www.youtube.com/watch?v=yQ8Kwx9M_Hg) -- [Intro to Memcached](https://memcached.org/) \ No newline at end of file +- [Intro to Memcached](https://memcached.org/) diff --git a/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/101-redis/index.md b/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/101-redis/index.md index 79523da68..c7d62e615 100644 --- a/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/101-redis/index.md +++ b/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/101-redis/index.md @@ -1,11 +1,11 @@ # Redis -Redis is an open source (BSD licensed) which is an in-memory data structure store used as a database, cache, message broker, and streaming engine. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and various levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. +Redis is an open source (BSD licensed) which is an in-memory data structure store used as a database, cache, message broker, and streaming engine. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and various levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. -You can use Redis in many programming languages. It is such a popular and widely used cache that Microsoft Azure also provides its cloud-based version with the name Azure Cache for Redis. +You can use Redis in many programming languages. It is such a popular and widely used cache that Microsoft Azure also provides its cloud-based version with the name Azure Cache for Redis. Visit the following resources to learn more: - [Learn how to build with Redis Stack and .NET](https://redis.io/docs/stack/get-started/tutorials/stack-dotnet/) - [Redis Cache In ASP.NET 6.0 Web API](https://www.c-sharpcorner.com/article/easily-use-redis-cache-in-asp-net-6-0-web-api/) -- [ASP.Net Core Distributed Caching - Redis Caching](https://www.youtube.com/watch?v=4Br-QnBo6Yw) \ No newline at end of file +- [ASP.Net Core Distributed Caching - Redis Caching](https://www.youtube.com/watch?v=4Br-QnBo6Yw) diff --git a/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/101-redis/stackexchange-redis.md b/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/101-redis/stackexchange-redis.md index b815447f9..927007735 100644 --- a/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/101-redis/stackexchange-redis.md +++ b/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/101-redis/stackexchange-redis.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Using StackExchange.Redis with .NET](https://docs.redis.com/latest/rs/references/client_references/client_csharp/) - [Introduction to StackExchange.Redis](https://www.youtube.com/watch?v=rsXvpCHdldg) -- [Getting Started with Stackexchange Redis](https://stackexchange.github.io/StackExchange.Redis/) \ No newline at end of file +- [Getting Started with Stackexchange Redis](https://stackexchange.github.io/StackExchange.Redis/) diff --git a/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/index.md b/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/index.md index 9dc3ae491..7fa3a0bdd 100644 --- a/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/index.md +++ b/src/data/roadmaps/aspnet-core/content/106-caching/102-distributed-cache/index.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Distributed caching in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-7.0) - [Distributed Caching In ASP.NET Core With Redis](https://www.youtube.com/watch?v=Tt5zIKVMMbs) -- [What is a Distributed Cached?](https://hazelcast.com/glossary/distributed-cache/) \ No newline at end of file +- [What is a Distributed Cached?](https://hazelcast.com/glossary/distributed-cache/) diff --git a/src/data/roadmaps/aspnet-core/content/106-caching/index.md b/src/data/roadmaps/aspnet-core/content/106-caching/index.md index 03c0911fb..826062640 100644 --- a/src/data/roadmaps/aspnet-core/content/106-caching/index.md +++ b/src/data/roadmaps/aspnet-core/content/106-caching/index.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Caching in ASP.Net](https://www.c-sharpcorner.com/UploadFile/2072a9/caching-in-Asp-Net/) - [Overview of caching in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/performance/caching/overview?view=aspnetcore-7.0) -- [Intro to Data Caching in ASP.NET](https://www.tutorialspoint.com/asp.net/asp.net_data_caching.htm) \ No newline at end of file +- [Intro to Data Caching in ASP.NET](https://www.tutorialspoint.com/asp.net/asp.net_data_caching.htm) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/100-elasticsearch.md b/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/100-elasticsearch.md index 0427de7ef..3d408bed5 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/100-elasticsearch.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/100-elasticsearch.md @@ -7,4 +7,4 @@ To learn more, visit the following resources: - [Elasticsearch in ASP.NET Core](https://code-maze.com/elasticsearch-aspnet-core/) - [An Elasticsearch Tutorial for .NET Developers](https://www.toptal.com/dot-net/elasticsearch-dot-net-developers) -- [How to integrate ElasticSearch in ASP.NET?](https://blexin.com/en/blog-en/how-to-integrate-elasticsearch-in-asp-net-core/) \ No newline at end of file +- [How to integrate ElasticSearch in ASP.NET?](https://blexin.com/en/blog-en/how-to-integrate-elasticsearch-in-asp-net-core/) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/101-solr.md b/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/101-solr.md index e5da88724..7e0dbabc2 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/101-solr.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/101-solr.md @@ -8,4 +8,4 @@ For more information, visit the following resources: - [Guide to Solr in ASP.NET](https://www.codeproject.com/Tips/480091/Using-Solr-for-Search-with-NET-Csharp) - [How to get Started with Solr.NET?](https://stackoverflow.com/questions/5646615/how-to-get-started-with-solr-net) -- [Integrate Solr Instance With .NET Core](https://stacksecrets.com/dot-net-core/integrate-solr-instance-with-net-core) \ No newline at end of file +- [Integrate Solr Instance With .NET Core](https://stacksecrets.com/dot-net-core/integrate-solr-instance-with-net-core) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/102-sphinx.md b/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/102-sphinx.md index 634593785..82b894afb 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/102-sphinx.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/102-sphinx.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Overview of Sphinx in ASP.NET](https://www.sphinxconnector.net/) - [Intro to Sphinx](http://sphinxsearch.com/forum/view.html?id=3609) -- [Documentation of Sphinx in ASP.NET](https://www.ericholscher.com/blog/2016/jul/1/sphinx-and-rtd-for-writers/) \ No newline at end of file +- [Documentation of Sphinx in ASP.NET](https://www.ericholscher.com/blog/2016/jul/1/sphinx-and-rtd-for-writers/) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/index.md b/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/index.md index 30d67ab4b..d43a22940 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/index.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/100-search-engines/index.md @@ -8,4 +8,4 @@ To learn more, visit the following resources: - [Search Engine Optimization with ASP.NET](https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/september/search-engine-optimization-with-asp-net-4-0-visual-studio-2010-and-iis7) - [Creating an ASP.NET Search Engine](https://www.developerfusion.com/article/4389/create-a-site-search-engine-in-aspnet/) -- [Simple Search Engine in ASP.NET](https://www.youtube.com/watch?v=KTkubhS-u50) \ No newline at end of file +- [Simple Search Engine in ASP.NET](https://www.youtube.com/watch?v=KTkubhS-u50) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/100-dynamodb.md b/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/100-dynamodb.md index 41be0b793..0f027ccf6 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/100-dynamodb.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/100-dynamodb.md @@ -7,4 +7,4 @@ DynamoDB is designed to handle extremely high levels of read and write throughpu For more information, visit the following links: - [Getting started with DynamoDB](https://aws.amazon.com/dynamodb/) -- [Introduction to DynamoDB](https://cloudacademy.com/lab/introduction-dynamodb/) \ No newline at end of file +- [Introduction to DynamoDB](https://cloudacademy.com/lab/introduction-dynamodb/) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/101-cosmosdb.md b/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/101-cosmosdb.md index e9f1fa700..5e31ad4f2 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/101-cosmosdb.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/101-cosmosdb.md @@ -1,9 +1,7 @@ # CosmosDB - - For more information, visit the following resources: - [What is Azure Cosmos DB?](https://intellipaat.com/blog/what-is-azure-cosmos-db/) - [Cosmos DB, Its Features, Benefits, Pricing etc](https://stackify.com/what-is-azure-cosmos-db/) -- [Getting started with Cosmos DB](https://acloudguru.com/blog/engineering/azure-cosmos-db-lets-you-focus-on-the-good-stuff) \ No newline at end of file +- [Getting started with Cosmos DB](https://acloudguru.com/blog/engineering/azure-cosmos-db-lets-you-focus-on-the-good-stuff) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/index.md b/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/index.md index c9cc43cc4..0a3ae3e78 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/index.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/101-cloud/index.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [Building a .NET Cloud Application](https://www.c-sharpcorner.com/article/building-the-net-cloud-application/) - [How to make a .NET Cloud Application?](https://dotnet.microsoft.com/en-us/apps/cloud) -- [Getting started with Cloud](https://aws.amazon.com/free/) \ No newline at end of file +- [Getting started with Cloud](https://aws.amazon.com/free/) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/101-postgresql.md b/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/101-postgresql.md index 4524263a5..0ae55d6fe 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/101-postgresql.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/101-postgresql.md @@ -8,4 +8,4 @@ For more information, visit the following resources: - [Postgresql - Open Source Relational Database](https://www.postgresql.org/) - [What is Postgresql?](https://postgresqltutorial.com/postgresql-getting-started/what-is-postgresql/) -- [Introduction, Advantages & Disadvantages of PostgreSQL](https://guru99.com/introduction-postgresql.htmlPostgresql) \ No newline at end of file +- [Introduction, Advantages & Disadvantages of PostgreSQL](https://guru99.com/introduction-postgresql.htmlPostgresql) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/102-mariadb.md b/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/102-mariadb.md index 03398f293..d7f1fe8a6 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/102-mariadb.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/102-mariadb.md @@ -8,4 +8,4 @@ To learn more, visit the following resources: - [How to use MariaDB in ASP.NET?](https://blog.georgekosmidis.net/using-mariadb-in-an-aspnet-core-api-with-entity-framework-core.html) - [Working with MariaDB and .Net](https://mariadb.com/kb/en/mariadb-and-net/) -- [Building an application with ASP.NET & MariaDB](https://medium.com/@BMatt92656920/building-a-web-application-with-asp-net-core-mvc-entity-framework-core-mariadb-bootstrap-a2bf0927d20e) \ No newline at end of file +- [Building an application with ASP.NET & MariaDB](https://medium.com/@BMatt92656920/building-a-web-application-with-asp-net-core-mvc-entity-framework-core-mariadb-bootstrap-a2bf0927d20e) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/103-mysql.md b/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/103-mysql.md index 8fd83c816..3dd3d40eb 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/103-mysql.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/103-mysql.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Getting started with ASP.NET Core and MySQL](https://dev.mysql.com/blog-archive/getting-started-with-asp-net-core-and-mysql-connectornet/) - [MySql database connectivity with ASP.Net](https://www.c-sharpcorner.com/UploadFile/brij_mcn/mysql-database-connectivity-with-Asp-Net/) -- [How To Connect MySQL With ASP.NET](https://www.youtube.com/watch?v=g5rVd1JGbIg) \ No newline at end of file +- [How To Connect MySQL With ASP.NET](https://www.youtube.com/watch?v=g5rVd1JGbIg) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/index.md b/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/index.md index 51893095a..67e6bf474 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/index.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/102-relational/index.md @@ -7,4 +7,4 @@ The main feature of a relational database is the ability to establish relationsh For more information, visit the following links: - [Introduction to Working with Database in ASP.NET](https://learn.microsoft.com/en-us/aspnet/web-pages/overview/data/5-working-with-data) -- [Implement a Relational Database with ASP.NET](https://openclassrooms.com/en/courses/5671811-implement-a-relational-database-with-asp-net-core) \ No newline at end of file +- [Implement a Relational Database with ASP.NET](https://openclassrooms.com/en/courses/5671811-implement-a-relational-database-with-asp-net-core) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/100-redis.md b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/100-redis.md index 3c5d3194e..2bce876a1 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/100-redis.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/100-redis.md @@ -8,4 +8,4 @@ To learn more, visit the following resources: - [Redis OM .NET](https://redis.io/docs/stack/get-started/tutorials/stack-dotnet/) - [Caching in ASP.NET using Redis](https://www.codemag.com/Article/2205091/Distributed-Caching-in-ASP.NET-Core-6-Using-Redis-in-Azure) -- [Getting started in Redis with .NET](https://docs.redis.com/latest/rs/references/client_references/client_csharp/) \ No newline at end of file +- [Getting started in Redis with .NET](https://docs.redis.com/latest/rs/references/client_references/client_csharp/) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/101-mongodb.md b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/101-mongodb.md index 5056f374e..c12850054 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/101-mongodb.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/101-mongodb.md @@ -7,4 +7,4 @@ In an ASP.NET application, MongoDB can be used as a data store to persist and re To learn more, visit the following resources: - [Use MongoDB in Your C# ASP.NET Apps](https://developer.okta.com/blog/2020/01/02/mongodb-csharp-aspnet-datastore) -- [MongoDB With ASP.NET Core Web API](https://www.c-sharpcorner.com/article/using-mongodb-with-asp-net-core-web-api/) \ No newline at end of file +- [MongoDB With ASP.NET Core Web API](https://www.c-sharpcorner.com/article/using-mongodb-with-asp-net-core-web-api/) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/102-litedb.md b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/102-litedb.md index 8ea7c598c..1d62510b2 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/102-litedb.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/102-litedb.md @@ -7,4 +7,4 @@ LiteDB supports data types like string, int, decimal, DateTime, and also support For more information, visit the following links: - [Getting started with LiteDB](https://www.litedb.org/) -- [Overview of LiteDB in ASP.NET](https://www.litedb.org/docs/) \ No newline at end of file +- [Overview of LiteDB in ASP.NET](https://www.litedb.org/docs/) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/103-cassandra.md b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/103-cassandra.md index 81cc88959..3fdc7a668 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/103-cassandra.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/103-cassandra.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Introduction to Cassandra](https://www.tutorialspoint.com/cassandra/cassandra_introduction.htm) - [Overview of Cassandra in ASP.NET](https://www.spiceworks.com/tech/big-data/articles/what-is-cassandra/) -- [Introduction to Apache Cassandra](https://www.geeksforgeeks.org/introduction-to-apache-cassandra/) \ No newline at end of file +- [Introduction to Apache Cassandra](https://www.geeksforgeeks.org/introduction-to-apache-cassandra/) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/104-ravendb.md b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/104-ravendb.md index 3ef1432ce..b7f68a93a 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/104-ravendb.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/104-ravendb.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Using RavenDB in ASP.NET Applications](https://www.codeguru.com/dotnet/using-ravendb-in-asp-net-applications/) - [Getting started with RavenDB](https://ravendb.net/docs/article-page/5.4/csharp/start/getting-started) -- [Using RavenDB Unit of Work and .NET Core MVC](https://ayende.com/blog/187906-B/using-ravendb-unit-of-work-and-net-core-mvc) \ No newline at end of file +- [Using RavenDB Unit of Work and .NET Core MVC](https://ayende.com/blog/187906-B/using-ravendb-unit-of-work-and-net-core-mvc) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/105-couchdb.md b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/105-couchdb.md index 3a6638795..60ee9d337 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/105-couchdb.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/105-couchdb.md @@ -4,8 +4,7 @@ CouchDB is an open-source, NoSQL document database designed for the web. It uses In an ASP.NET application, CouchDB can be used as a data store to persist and retrieve application data. There are several libraries available for integrating CouchDB with an ASP.NET application, such as Couchbase, which provides a .NET client for CouchDB that can be used to interact with the CouchDB server from within an ASP.NET application. - Visit the following resources to learn more: - [CouchDB in ASP.NET Core Application](https://www.c-sharpcorner.com/article/crud-operation-to-couchdb-via-rest-api-in-asp-net-core-application/) -- [Use CouchDB with .NET](https://stackoverflow.com/questions/1050152/use-couchdb-with-net) \ No newline at end of file +- [Use CouchDB with .NET](https://stackoverflow.com/questions/1050152/use-couchdb-with-net) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/index.md b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/index.md index 59835778e..49a349a41 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/index.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/index.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [NoSQL in .NET Applications](https://www.slideshare.net/shijucv/nosql-database-in-net-apps) - [Open Source NoSQL Database for .NET](https://www.alachisoft.com/nosdb/) -- [Use NoSQL databases in ASP.NET](https://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure) \ No newline at end of file +- [Use NoSQL databases in ASP.NET](https://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/index.md b/src/data/roadmaps/aspnet-core/content/107-databases/index.md index 0cc86dc8e..7f6e049d9 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/index.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/index.md @@ -10,9 +10,8 @@ In an ASP.NET application, there are several types of databases that can be used Each database type has its own set of features and use cases, and the choice of which database to use will depend on the specific requirements of the application. - To learn more, visit the following links: - [ASP.NET Database Tutorial](https://www.guru99.com/insert-update-delete-asp-net.html) - [Introduction to Working with a Database in ASP.NET](https://learn.microsoft.com/en-us/aspnet/web-pages/overview/data/5-working-with-data) -- [ASP.NET Web Pages - Databases](https://www.w3schools.com/asp/webpages_database.asp) \ No newline at end of file +- [ASP.NET Web Pages - Databases](https://www.w3schools.com/asp/webpages_database.asp) diff --git a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/100-serilog.md b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/100-serilog.md index 9eec27447..4dc410794 100644 --- a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/100-serilog.md +++ b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/100-serilog.md @@ -6,4 +6,4 @@ For more resources, visit the following links: - [How to Work with Serilog in ASP.NET?](https://www.codeguru.com/dotnet/serilog-c-sharp/) - [Complete guide to Serilog in ASP.NET](https://github.com/serilog/serilog-aspnetcore) -- [Advanced Serilog features in ASP.NET](https://www.infoworld.com/article/3624022/how-to-use-advanced-serilog-features-in-aspnet-core-mvc.html) \ No newline at end of file +- [Advanced Serilog features in ASP.NET](https://www.infoworld.com/article/3624022/how-to-use-advanced-serilog-features-in-aspnet-core-mvc.html) diff --git a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/101-nlog.md b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/101-nlog.md index 90bcc5fb2..4a1ba4119 100644 --- a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/101-nlog.md +++ b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/101-nlog.md @@ -8,4 +8,4 @@ For more resources, visit the following links: - [Logging with NLog in ASP.NET](https://codewithmukesh.com/blog/logging-with-nlog-in-aspnet-core/) - [Introduction To NLog With ASP.NET Core](https://www.c-sharpcorner.com/article/introduction-to-nlog-with-asp-net-core2/) -- [Tutorial of Nlog with ASP.NET](https://www.youtube.com/watch?v=PnlxRmHg0lU) \ No newline at end of file +- [Tutorial of Nlog with ASP.NET](https://www.youtube.com/watch?v=PnlxRmHg0lU) diff --git a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/100-elk-stack.md b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/100-elk-stack.md index c34f278d4..f37821b45 100644 --- a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/100-elk-stack.md +++ b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/100-elk-stack.md @@ -10,4 +10,4 @@ For more information, visit the following links: - [What Is Elk?](https://aws.amazon.com/what-is/elk-stack/) - [Complete Guide to Elk](https://logz.io/learn/complete-guide-elk-stack/) -- [ELK Stack Tutorial: What is Kibana, Logstash & Elasticsearch?](https://www.guru99.com/elk-stack-tutorial.html) \ No newline at end of file +- [ELK Stack Tutorial: What is Kibana, Logstash & Elasticsearch?](https://www.guru99.com/elk-stack-tutorial.html) diff --git a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/101-sentry.md b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/101-sentry.md index 8e53cbb15..846378f7f 100644 --- a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/101-sentry.md +++ b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/101-sentry.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Sentry Documentation in .NET](https://docs.sentry.io/platforms/dotnet/) - [ASP.NET and Sentry](https://docs.sentry.io/platforms/dotnet/guides/aspnetcore/) -- [Usage of Sentry in ASP.NET](https://docs.sentry.io/platforms/dotnet/guides/aspnetcore/usage/) \ No newline at end of file +- [Usage of Sentry in ASP.NET](https://docs.sentry.io/platforms/dotnet/guides/aspnetcore/usage/) diff --git a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/102-datadog.md b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/102-datadog.md index 4b7883871..738a4f88b 100644 --- a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/102-datadog.md +++ b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/102-datadog.md @@ -7,4 +7,4 @@ In an ASP.NET application, Datadog can be used to monitor and analyze the perfor Visit the following links: - [Documentation of Datadog](https://www.datadoghq.com/) -- [Configuring the .NET Core with Datadog](https://docs.datadoghq.com/tracing/trace_collection/library_config/dotnet-core/?tab=environmentvariables) \ No newline at end of file +- [Configuring the .NET Core with Datadog](https://docs.datadoghq.com/tracing/trace_collection/library_config/dotnet-core/?tab=environmentvariables) diff --git a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/103-loggly.md b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/103-loggly.md index 5423fc6fb..931964ec6 100644 --- a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/103-loggly.md +++ b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/103-loggly.md @@ -7,4 +7,4 @@ In an ASP.NET application, Loggly can be used to collect and analyze log data. L For more resources, visit the following links: - [Loggly in ASP.NET Core using Serilog](https://itnext.io/loggly-in-asp-net-core-using-serilog-dc0e2c7d52eb) -- [Using Loggly For Troubleshooting Bugs](https://www.loggly.com/blog/use-loggly-troubleshooting-bugs-code/) \ No newline at end of file +- [Using Loggly For Troubleshooting Bugs](https://www.loggly.com/blog/use-loggly-troubleshooting-bugs-code/) diff --git a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/104-elmah.md b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/104-elmah.md index 6271c001d..81f04e40e 100644 --- a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/104-elmah.md +++ b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/104-elmah.md @@ -8,4 +8,4 @@ For more resources, visit the following links: - [Introduction To ELMAH](https://www.c-sharpcorner.com/article/introduction-to-elmah-in-mvc/) - [How to Configure Elmah in ASP.net MVC](https://www.youtube.com/watch?v=oqheVBZR0PM) -- [ELMAH Integration in ASP.NET MVC Application](https://www.ecanarys.com/Blogs/ArticleID/184/ELMAH-Integration-in-ASP-NET-MVC-Application) \ No newline at end of file +- [ELMAH Integration in ASP.NET MVC Application](https://www.ecanarys.com/Blogs/ArticleID/184/ELMAH-Integration-in-ASP-NET-MVC-Application) diff --git a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/index.md b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/index.md index 62ba90392..434ab8cf8 100644 --- a/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/index.md +++ b/src/data/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/index.md @@ -7,4 +7,4 @@ The use of log management system can help IT professionals to identify and troub Visit the following resources for more information: - [Structured Logging and Logs Management in ASP.NET](https://medium.com/@stavsofer/structured-logging-and-logs-management-asp-net-core-serilog-seq-61109f740696) -- [ASP.NET Logging Basics](https://www.loggly.com/ultimate-guide/net-logging-basics/) \ No newline at end of file +- [ASP.NET Logging Basics](https://www.loggly.com/ultimate-guide/net-logging-basics/) diff --git a/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/101-odata.md b/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/101-odata.md index 94df079b8..1a06a8c94 100644 --- a/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/101-odata.md +++ b/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/101-odata.md @@ -7,4 +7,4 @@ In ASP.NET, OData can be used to create RESTful web services that expose data in For more information, visit the following links: - [Create an OData v4 Endpoint Using ASP.NET](https://learn.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint) -- [Example of OData Protocol With ASP.NET Core](https://www.youtube.com/watch?v=L9HdnNCi0R0) \ No newline at end of file +- [Example of OData Protocol With ASP.NET Core](https://www.youtube.com/watch?v=L9HdnNCi0R0) diff --git a/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/102-sieve.md b/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/102-sieve.md index 0c8dda809..0361198b8 100644 --- a/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/102-sieve.md +++ b/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/102-sieve.md @@ -7,4 +7,4 @@ Sieve is typically used in email servers and clients, and it can be used to impl To learn more, visit the following resources: - [Analysis of Sieve](https://en.wikipedia.org/wiki/Sieve_analysis) -- [Sorting in a .NET Core API using Sieve](https://www.youtube.com/watch?v=x0utCah3cFk) \ No newline at end of file +- [Sorting in a .NET Core API using Sieve](https://www.youtube.com/watch?v=x0utCah3cFk) diff --git a/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/index.md b/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/index.md index 14c9fc632..5106be6e9 100644 --- a/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/index.md +++ b/src/data/roadmaps/aspnet-core/content/109-api-clients/100-rest/index.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [What is REST Services in ASP.NET?](http://www.codedigest.com/quick-start/16/what-is-rest-services-how-to-create-rest-services-in-aspnet) - [What are RESTful APIs?](https://www.pragimtech.com/blog/blazor/what-are-restful-apis/) -- [Tutorial of Rest and Restful API](https://www.youtube.com/watch?v=4r1CIUs5s2I) \ No newline at end of file +- [Tutorial of Rest and Restful API](https://www.youtube.com/watch?v=4r1CIUs5s2I) diff --git a/src/data/roadmaps/aspnet-core/content/109-api-clients/101-grpc.md b/src/data/roadmaps/aspnet-core/content/109-api-clients/101-grpc.md index 5c3e79317..6e58a5b6d 100644 --- a/src/data/roadmaps/aspnet-core/content/109-api-clients/101-grpc.md +++ b/src/data/roadmaps/aspnet-core/content/109-api-clients/101-grpc.md @@ -8,4 +8,4 @@ To learn more, visit the following resources: - [Overview for gRPC on .NET](https://learn.microsoft.com/en-us/aspnet/core/grpc/?view=aspnetcore-7.0) - [Getting Started with ASP.NET Core and gRPC](https://blog.jetbrains.com/dotnet/2021/07/19/getting-started-with-asp-net-core-and-grpc/) -- [Create a gRPC client & server in ASP.NET](https://learn.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-7.0&tabs=visual-studio) \ No newline at end of file +- [Create a gRPC client & server in ASP.NET](https://learn.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-7.0&tabs=visual-studio) diff --git a/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/100-graphql-dotnet.md b/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/100-graphql-dotnet.md index c40eb723e..4fc05df9f 100644 --- a/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/100-graphql-dotnet.md +++ b/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/100-graphql-dotnet.md @@ -7,4 +7,4 @@ Learn more from the following resources: - [Introduction to GraphQL .NET in ASP.NET](https://graphql-dotnet.github.io/docs/getting-started/introduction/) - [How to use GraphQL in .NET?](https://softchris.github.io/pages/dotnet-graphql.html) -- [Building and consuming GraphQL API in ASP.NET](https://www.red-gate.com/simple-talk/development/dotnet-development/building-and-consuming-graphql-api-in-asp-net-core-5/) \ No newline at end of file +- [Building and consuming GraphQL API in ASP.NET](https://www.red-gate.com/simple-talk/development/dotnet-development/building-and-consuming-graphql-api-in-asp-net-core-5/) diff --git a/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/101-hot-chocolate.md b/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/101-hot-chocolate.md index b88648417..410319a8f 100644 --- a/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/101-hot-chocolate.md +++ b/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/101-hot-chocolate.md @@ -8,4 +8,4 @@ To learn more, visit the following resources: - [Getting started with HotChocolate](https://learn.microsoft.com/en-us/shows/on-net/getting-started-with-hotchocolate) - [ASP.NET Core and HotChocolate](https://chillicream.com/docs/hotchocolate/v12/api-reference/aspnetcore) -- [Intro to HotChocolate](https://chillicream.com/docs/hotchocolate) \ No newline at end of file +- [Intro to HotChocolate](https://chillicream.com/docs/hotchocolate) diff --git a/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/index.md b/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/index.md index f028c1a9e..5fec7a86f 100644 --- a/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/index.md +++ b/src/data/roadmaps/aspnet-core/content/109-api-clients/102-graphql/index.md @@ -8,4 +8,4 @@ To learn more, visit the following resources: - [How to implement GraphQL in ASP.Net](https://blog.christian-schou.dk/how-to-implement-graphql-in-asp-net-core/) - [Intro to GraphQL](https://graphql-dotnet.github.io/docs/getting-started/introduction/) -- [Developing API In .NET Core With GraphQL](https://www.c-sharpcorner.com/article/building-api-in-net-core-with-graphql2/) \ No newline at end of file +- [Developing API In .NET Core With GraphQL](https://www.c-sharpcorner.com/article/building-api-in-net-core-with-graphql2/) diff --git a/src/data/roadmaps/aspnet-core/content/109-api-clients/index.md b/src/data/roadmaps/aspnet-core/content/109-api-clients/index.md index 5a5970c61..f53e7de56 100644 --- a/src/data/roadmaps/aspnet-core/content/109-api-clients/index.md +++ b/src/data/roadmaps/aspnet-core/content/109-api-clients/index.md @@ -10,4 +10,4 @@ Visit the following links to learn more: - [How to Call a Web API From a .NET Client](https://learn.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client) - [Overview of Web API REST Service in ASP.NET](https://www.c-sharpcorner.com/article/consuming-asp-net-web-api-rest-service-in-asp-net-mvc-using-http-client/) -- [Building an ASP.NET Web API With ASP.NET](https://www.toptal.com/asp-dot-net/asp-net-web-api-tutorial) \ No newline at end of file +- [Building an ASP.NET Web API With ASP.NET](https://www.toptal.com/asp-dot-net/asp-net-web-api-tutorial) diff --git a/src/data/roadmaps/aspnet-core/content/110-real-time-communication/100-web-sockets.md b/src/data/roadmaps/aspnet-core/content/110-real-time-communication/100-web-sockets.md index c93b6b454..c524206ca 100644 --- a/src/data/roadmaps/aspnet-core/content/110-real-time-communication/100-web-sockets.md +++ b/src/data/roadmaps/aspnet-core/content/110-real-time-communication/100-web-sockets.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [WebSockets support in ASP.NET](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/websockets?view=aspnetcore-7.0) - [Understanding WebSockets with ASP.NET](https://sahansera.dev/understanding-websockets-with-aspnetcore-5/) -- [Writing a WebSocket server in ASP.NET](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server) \ No newline at end of file +- [Writing a WebSocket server in ASP.NET](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server) diff --git a/src/data/roadmaps/aspnet-core/content/110-real-time-communication/101-singlar-core.md b/src/data/roadmaps/aspnet-core/content/110-real-time-communication/101-singlar-core.md index 7dcf79ea6..a92dbd2a9 100644 --- a/src/data/roadmaps/aspnet-core/content/110-real-time-communication/101-singlar-core.md +++ b/src/data/roadmaps/aspnet-core/content/110-real-time-communication/101-singlar-core.md @@ -4,4 +4,4 @@ SignalR is a real-time communication library for .NET that allows for the creati For more information, visit the following links: -- [Overview of ASP.NET Core SignalR](https://learn.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-7.0) \ No newline at end of file +- [Overview of ASP.NET Core SignalR](https://learn.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-7.0) diff --git a/src/data/roadmaps/aspnet-core/content/110-real-time-communication/index.md b/src/data/roadmaps/aspnet-core/content/110-real-time-communication/index.md index f817a4f67..73c2f8757 100644 --- a/src/data/roadmaps/aspnet-core/content/110-real-time-communication/index.md +++ b/src/data/roadmaps/aspnet-core/content/110-real-time-communication/index.md @@ -7,4 +7,4 @@ There are several technologies and libraries available for implementing real-tim To learn more, visit the following resources: - [Overview of ASP.NET Core SignalR](https://learn.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-7.0) -- [Real-time ASP.NET with SignalR](https://dotnet.microsoft.com/en-us/apps/aspnet/signalr) \ No newline at end of file +- [Real-time ASP.NET with SignalR](https://dotnet.microsoft.com/en-us/apps/aspnet/signalr) diff --git a/src/data/roadmaps/aspnet-core/content/111-object-mapping/100-atuo-mapper.md b/src/data/roadmaps/aspnet-core/content/111-object-mapping/100-atuo-mapper.md index 439886f97..51ac490a6 100644 --- a/src/data/roadmaps/aspnet-core/content/111-object-mapping/100-atuo-mapper.md +++ b/src/data/roadmaps/aspnet-core/content/111-object-mapping/100-atuo-mapper.md @@ -8,4 +8,4 @@ To learn more, visit the following resources: - [What is Automapper in ASP.NET?](https://www.simplilearn.com/tutorials/asp-dot-net-tutorial/automapper-in-c-sharp) - [Getting Started with AutoMapper in ASP.NET](https://code-maze.com/automapper-net-core/) -- [Examples of AutoMapper in ASP.NET](https://dotnettutorials.net/lesson/automapper-in-c-sharp/) \ No newline at end of file +- [Examples of AutoMapper in ASP.NET](https://dotnettutorials.net/lesson/automapper-in-c-sharp/) diff --git a/src/data/roadmaps/aspnet-core/content/111-object-mapping/101-express-mapper.md b/src/data/roadmaps/aspnet-core/content/111-object-mapping/101-express-mapper.md index fe67002e1..0ccd42fee 100644 --- a/src/data/roadmaps/aspnet-core/content/111-object-mapping/101-express-mapper.md +++ b/src/data/roadmaps/aspnet-core/content/111-object-mapping/101-express-mapper.md @@ -7,4 +7,4 @@ ExpressMapper uses a convention-based approach to mapping, which means that it a To learn more, visit the following links: - [Intro to Express Mapper](https://expressmapper.org/) -- [Express Mapper - The New .NET Mapper](https://www.codeproject.com/Tips/1009198/Expressmapper-The-New-NET-Mapper) \ No newline at end of file +- [Express Mapper - The New .NET Mapper](https://www.codeproject.com/Tips/1009198/Expressmapper-The-New-NET-Mapper) diff --git a/src/data/roadmaps/aspnet-core/content/111-object-mapping/102-agile-mapper.md b/src/data/roadmaps/aspnet-core/content/111-object-mapping/102-agile-mapper.md index 3eb415dd0..f42bc5857 100644 --- a/src/data/roadmaps/aspnet-core/content/111-object-mapping/102-agile-mapper.md +++ b/src/data/roadmaps/aspnet-core/content/111-object-mapping/102-agile-mapper.md @@ -7,4 +7,4 @@ AgileMapper uses a convention-based approach to mapping, which means that it aut To learn more, visit the following links: - [Comparison of Object Mapper Libraries](https://www.simplilearn.com/tutorials/asp-dot-net-tutorial/automapper-in-c-sharp) -- [Overview of Agile Mapper](https://readthedocs.org/projects/agilemapper/) \ No newline at end of file +- [Overview of Agile Mapper](https://readthedocs.org/projects/agilemapper/) diff --git a/src/data/roadmaps/aspnet-core/content/111-object-mapping/103-mapster.md b/src/data/roadmaps/aspnet-core/content/111-object-mapping/103-mapster.md index 6d520969c..6cce52ba6 100644 --- a/src/data/roadmaps/aspnet-core/content/111-object-mapping/103-mapster.md +++ b/src/data/roadmaps/aspnet-core/content/111-object-mapping/103-mapster.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [Getting Started With Mapster in ASP.NET](https://code-maze.com/mapster-aspnetcore-introduction/) - [Overview of Mapster in .Net ](https://medium.com/@M-S-2/enjoy-using-mapster-in-net-6-2d3f287a0989) -- [Introduction to Mapster](https://youtube.com/watch?v=bClE7Uon9e8) \ No newline at end of file +- [Introduction to Mapster](https://youtube.com/watch?v=bClE7Uon9e8) diff --git a/src/data/roadmaps/aspnet-core/content/111-object-mapping/index.md b/src/data/roadmaps/aspnet-core/content/111-object-mapping/index.md index ad23eae02..1f8c84f39 100644 --- a/src/data/roadmaps/aspnet-core/content/111-object-mapping/index.md +++ b/src/data/roadmaps/aspnet-core/content/111-object-mapping/index.md @@ -8,4 +8,4 @@ Visit the following links to learn more: - [Building a Fast Object-to-Object Mapper in .NET](https://www.twilio.com/blog/building-blazing-fast-object-mapper-c-sharp-net-core) - [Overview of Object Mapping in ASP.NET](https://docs.abp.io/en/abp/latest/Object-To-Object-Mapping) -- [Comparison of Object Mapper Libraries](https://www.simplilearn.com/tutorials/asp-dot-net-tutorial/automapper-in-c-sharp) \ No newline at end of file +- [Comparison of Object Mapper Libraries](https://www.simplilearn.com/tutorials/asp-dot-net-tutorial/automapper-in-c-sharp) diff --git a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/100-hangfire.md b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/100-hangfire.md index 3250a888a..f49f92892 100644 --- a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/100-hangfire.md +++ b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/100-hangfire.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [Hangfire with ASP.NET Core](https://code-maze.com/hangfire-with-asp-net-core/) - [Intro to Hangfire](https://www.partech.nl/nl/publicaties/2021/05/a-beginners-guide-to-hangfire) -- [How to use Hangfire with ASP.NET](https://blog.christian-schou.dk/how-to-use-hangfire-with-asp-net-core-5-0-api/) \ No newline at end of file +- [How to use Hangfire with ASP.NET](https://blog.christian-schou.dk/how-to-use-hangfire-with-asp-net-core-5-0-api/) diff --git a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/101-native-background-service.md b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/101-native-background-service.md index 00beea172..b8f9bb4a6 100644 --- a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/101-native-background-service.md +++ b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/101-native-background-service.md @@ -8,4 +8,4 @@ Visit the following links to learn more: - [Background tasks with hosted services in ASP.NET](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-7.0&tabs=visual-studio) - [BackgroundService in ASP.NET Core](https://medium.com/@daniel.sagita/backgroundservice-for-a-long-running-work-3debe8f8d25b) -- [Tutorial on Background Tasks in ASP.NET](https://youtube.com/watch?v=rugxQIH_p3A) \ No newline at end of file +- [Tutorial on Background Tasks in ASP.NET](https://youtube.com/watch?v=rugxQIH_p3A) diff --git a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/102-quartz.md b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/102-quartz.md index 1ce7fc973..200732f21 100644 --- a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/102-quartz.md +++ b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/102-quartz.md @@ -7,4 +7,4 @@ With Quartz, you can schedule jobs to run at specific times or intervals, and yo To learn more, visit the following links: - [Intro to Quartz in ASP.NET](https://aspnetboilerplate.com/Pages/Documents/Quartz-Integration) -- [How to work with Quartz.Net in ASP.NET](https://www.infoworld.com/article/3078781/how-to-work-with-quartz-net-in-c.html) \ No newline at end of file +- [How to work with Quartz.Net in ASP.NET](https://www.infoworld.com/article/3078781/how-to-work-with-quartz-net-in-c.html) diff --git a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/103-coravel.md b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/103-coravel.md index abb80d444..fa008e840 100644 --- a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/103-coravel.md +++ b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/103-coravel.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [Documentation of Coravel](https://docs.coravel.net/) - [ASP.NET Task Scheduling with Coravel](https://www.youtube.com/watch?v=vu0fxlWl0wo) -- [How to Run a .Net Console App with Coravel](https://www.youtube.com/watch?v=KQpw_OYkKq8) \ No newline at end of file +- [How to Run a .Net Console App with Coravel](https://www.youtube.com/watch?v=KQpw_OYkKq8) diff --git a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/index.md b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/index.md index 4d7ce4015..4c1a8bcb7 100644 --- a/src/data/roadmaps/aspnet-core/content/112-task-scheduling/index.md +++ b/src/data/roadmaps/aspnet-core/content/112-task-scheduling/index.md @@ -7,4 +7,4 @@ In ASP.NET, task scheduling can be implemented using a variety of libraries and To learn more, visit the following links: - [Task Scheduling in ASP.NET](https://www.youtube.com/watch?v=Vg4AOpb7OqA) -- [How schedule Tasks in ASP.NET?](https://beansoftware.com/ASP.NET-Tutorials/Scheduled-Tasks.aspx) \ No newline at end of file +- [How schedule Tasks in ASP.NET?](https://beansoftware.com/ASP.NET-Tutorials/Scheduled-Tasks.aspx) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/100-selenium.md b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/100-selenium.md index e0ad916d7..75ecef561 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/100-selenium.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/100-selenium.md @@ -5,4 +5,4 @@ Selenium is an open-source library that allows developers to automate web browse To learn more, visit the following links: - [Automated UI Tests with Selenium and ASP.NET](https://code-maze.com/selenium-aspnet-core-ui-tests/) -- [Selenium Web Driver in .NET](https://stephan-bester.medium.com/automated-testing-with-selenium-web-driver-in-net-bde6854d3207) \ No newline at end of file +- [Selenium Web Driver in .NET](https://stephan-bester.medium.com/automated-testing-with-selenium-web-driver-in-net-bde6854d3207) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/101-playwright.md b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/101-playwright.md index 303413254..8208766f8 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/101-playwright.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/101-playwright.md @@ -6,4 +6,4 @@ To learn more, visit the following: - [Playwright for .NET](https://github.com/microsoft/playwright-dotnet) - [How to test Apps with Playwright and .NETs](https://www.twilio.com/blog/test-web-apps-with-playwright-and-csharp-dotnet) -- [End-to-End Tests With ASP.NET and Playwright](https://khalidabuhakmeh.com/end-to-end-test-with-aspnet-core-xunit-and-playwright) \ No newline at end of file +- [End-to-End Tests With ASP.NET and Playwright](https://khalidabuhakmeh.com/end-to-end-test-with-aspnet-core-xunit-and-playwright) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/102-puppeteer.md b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/102-puppeteer.md index 74bec6a8f..ee129b8e8 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/102-puppeteer.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/102-puppeteer.md @@ -5,4 +5,4 @@ Puppeteer is an open-source library for automating web browsers, similar to Sele For more information, visit the following links: - [Why use Puppeteer?](https://www.kiltandcode.com/puppeteer-sharp-crawl-the-web-using-csharp-and-headless-chrome/) -- [Documentations of Puppeteer](https://www.puppeteersharp.com/) \ No newline at end of file +- [Documentations of Puppeteer](https://www.puppeteersharp.com/) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/103-cypress.md b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/103-cypress.md index c6a9da8fc..78585fa90 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/103-cypress.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/103-cypress.md @@ -5,4 +5,4 @@ Cypress is an open-source end-to-end testing framework for web applications, it' To learn more, visit the following links: - [Cypress - End To End Testing Tool](https://www.c-sharpcorner.com/article/getting-started-with-cypress-io/) -- [Overview of Cypress](https://www.cypress.io/) \ No newline at end of file +- [Overview of Cypress](https://www.cypress.io/) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/index.md b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/index.md index b9559dd67..e0a31b9f9 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/index.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/100-e2e-testing/index.md @@ -6,4 +6,4 @@ Visit the following links to learn more: - [End-to-End Testing ASP.NET Core APIs](https://www.youtube.com/watch?v=WWN-9ahbdIU) - [ASP.NET Core and its testing](https://blog.devgenius.io/asp-net-core-end-to-end-testing-52325e28e387) -- [Unit Test and E2E Test in ASP.NET](https://learn.microsoft.com/en-us/odata/webapi/unittest-e2etest) \ No newline at end of file +- [Unit Test and E2E Test in ASP.NET](https://learn.microsoft.com/en-us/odata/webapi/unittest-e2etest) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/100-fluent-assertions.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/100-fluent-assertions.md index 2c465c604..1f7f8754b 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/100-fluent-assertions.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/100-fluent-assertions.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Introduction of Fluent Assertions](https://fluentassertions.com/introduction) - [Improving Unit Tests with Fluent Assertions](https://code-maze.com/unit-tests-with-fluent-assertions/) -- [Exploring Fluent Assertions in Unit Testing](https://www.meziantou.net/exploring-fluent-assertions.htm) \ No newline at end of file +- [Exploring Fluent Assertions in Unit Testing](https://www.meziantou.net/exploring-fluent-assertions.htm) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/101-shouldly.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/101-shouldly.md index b7ca7e52b..f91c4b854 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/101-shouldly.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/101-shouldly.md @@ -5,4 +5,4 @@ Shouldly is a .NET library that provides a set of extension methods for writing To learn more, visit the following links: - [How to Use Shouldly to Improve Unit Tests in .NET?](https://code-maze.com/improve-unit-tests-shouldly-dotnet/) -- [Improve Test Asserts with Shouldly](https://visualstudiomagazine.com/articles/2015/08/01/improve-test-asserts-with-shouldly.aspx?admgarea=ALM) \ No newline at end of file +- [Improve Test Asserts with Shouldly](https://visualstudiomagazine.com/articles/2015/08/01/improve-test-asserts-with-shouldly.aspx?admgarea=ALM) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/102-mstest.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/102-mstest.md index 9c0ceb5a5..d8a1d2c1f 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/102-mstest.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/102-mstest.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [.NET Core testing with MSTest](https://www.oreilly.com/library/view/c-and-net/9781788292481/aa08c601-f374-4e31-be8e-8eb69d63bd19.xhtml) - [Unit testing with MSTest and .NET](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-mstest) -- [Complete Guide of MSTest for Unit Testing in ASP.NET](https://sweetcode.io/a-complete-guide-of-mstest-for-unit-testing-in-asp-net/) \ No newline at end of file +- [Complete Guide of MSTest for Unit Testing in ASP.NET](https://sweetcode.io/a-complete-guide-of-mstest-for-unit-testing-in-asp-net/) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/103-xunit.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/103-xunit.md index a38adc5ae..d214445e5 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/103-xunit.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/103-xunit.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Unit Testing with xUnit in ASP.NET Core](https://code-maze.com/aspnetcore-unit-testing-xunit/) - [Unit testing in .NET Core using and xUnit](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test) -- [Getting Started With Unit Testing Using ASP.NET And xUnit](https://www.c-sharpcorner.com/article/getting-started-with-unit-testing-using-c-sharp-and-xunit/) \ No newline at end of file +- [Getting Started With Unit Testing Using ASP.NET And xUnit](https://www.c-sharpcorner.com/article/getting-started-with-unit-testing-using-c-sharp-and-xunit/) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/104-nunit.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/104-nunit.md index dd4cc4bf3..9599b6f14 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/104-nunit.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/104-nunit.md @@ -5,4 +5,4 @@ NUnit is a unit testing framework for the .NET framework, it's an open-source te Visit the following links for more resources: - [NUnit With C#](https://www.c-sharpcorner.com/UploadFile/84c85b/nunit-with-C-Sharp/) -- [Unit testing C# with NUnit and .NET Core](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-nunit) \ No newline at end of file +- [Unit testing C# with NUnit and .NET Core](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-nunit) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/105-nsubstitute.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/105-nsubstitute.md index a76505059..811ec9dbb 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/105-nsubstitute.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/105-nsubstitute.md @@ -5,4 +5,4 @@ NSubstitute is a popular open-source .NET library that allows developers to crea To learn more, visit the following links: - [Overview of NSubstitute](https://github.com/nsubstitute/NSubstitute) -- [Getting started NSubstitute](https://nsubstitute.github.io/help/getting-started/) \ No newline at end of file +- [Getting started NSubstitute](https://nsubstitute.github.io/help/getting-started/) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/106-moq.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/106-moq.md index e995b8c43..8ce7697a1 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/106-moq.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/106-moq.md @@ -6,4 +6,4 @@ Visit the following links to learn more: - [What is use of Moq?](https://stackoverflow.com/questions/678878/what-is-use-of-moq) - [Moq - Unit Test In .NET Core App](https://www.c-sharpcorner.com/article/moq-unit-test-net-core-app-using-mock-object/) -- [Getting started with Mocking using Moq in .NET](https://www.youtube.com/watch?v=9ZvDBSQa_so) \ No newline at end of file +- [Getting started with Mocking using Moq in .NET](https://www.youtube.com/watch?v=9ZvDBSQa_so) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/107-fake-it-easy.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/107-fake-it-easy.md index 6ed99fc34..1f783db6f 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/107-fake-it-easy.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/107-fake-it-easy.md @@ -5,4 +5,4 @@ FakeItEasy is an open-source library for .NET that allows developers to create f Visit the following links to learn more: - [Easy mocking in C# code with FakeItEasy library](https://devislandblog.wordpress.com/2018/05/09/easy-mocking-in-c-code-with-fakeiteasy-library/) -- [FakeItEasy when testing ASP.NET Core controllers](https://stackoverflow.com/questions/56170818/how-to-fake-an-interface-method-dynamically-with-fakeiteasy-when-testing-asp-net) \ No newline at end of file +- [FakeItEasy when testing ASP.NET Core controllers](https://stackoverflow.com/questions/56170818/how-to-fake-an-interface-method-dynamically-with-fakeiteasy-when-testing-asp-net) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/index.md b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/index.md index 6e129533d..282871d62 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/index.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/101-unit-testing/index.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Overview of .NET Unit Testing](https://www.toptal.com/dot-net/dotnet-unit-testing-tutorial) - [Unit Testing in ASP.NET - Complete Tutorial](https://www.guru99.com/asp-net-unit-testing-project.html) -- [How to UnitTest ASP.Net MVC Controllers with XUnit ?](https://www.youtube.com/watch?v=VtPosbYAhD8) \ No newline at end of file +- [How to UnitTest ASP.Net MVC Controllers with XUnit ?](https://www.youtube.com/watch?v=VtPosbYAhD8) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/100-web-application-factory.md b/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/100-web-application-factory.md index be2855a29..71461222e 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/100-web-application-factory.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/100-web-application-factory.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Integration tests in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-7.0) - [Integration Testing ASP.NET Core WebAPI Applications](https://www.youtube.com/watch?v=xs8gNQjCXw0) -- [How to use WebApplicationFactory in .NET](https://stackoverflow.com/questions/69058176/how-to-use-webapplicationfactory-in-net6-without-speakable-entry-point) \ No newline at end of file +- [How to use WebApplicationFactory in .NET](https://stackoverflow.com/questions/69058176/how-to-use-webapplicationfactory-in-net6-without-speakable-entry-point) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/101-test-server.md b/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/101-test-server.md index 9276c1f5f..a6575c4a0 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/101-test-server.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/101-test-server.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Integration Tests with TestServer](https://visualstudiomagazine.com/articles/2017/07/01/testserver.aspx) - [ASP.NET Core Integration Tests With TestServer](https://scotthannen.org/blog/2021/11/18/testserver-how-did-i-not-know.html) -- [How do you create a TestServer in .NET](https://stackoverflow.com/questions/69897652/how-do-you-create-a-test-server-in-net-6) \ No newline at end of file +- [How do you create a TestServer in .NET](https://stackoverflow.com/questions/69897652/how-do-you-create-a-test-server-in-net-6) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/index.md b/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/index.md index 3dc72e252..154b3c947 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/index.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/102-integration-testing/index.md @@ -6,4 +6,4 @@ Visit the following links to learn more:; - [Integration tests in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-7.0) - [Integration Testing ASP.NET Core WebAPI Applications](https://www.youtube.com/watch?v=xs8gNQjCXw0) -- [A Sample Project Integration Test In ASP.NET](https://www.youtube.com/watch?v=ziSKkR2nvis) \ No newline at end of file +- [A Sample Project Integration Test In ASP.NET](https://www.youtube.com/watch?v=ziSKkR2nvis) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/100-spec-flow.md b/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/100-spec-flow.md index 08c4e5fd6..385ce1c6c 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/100-spec-flow.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/100-spec-flow.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [SpecFlow’s documentation](https://docs.specflow.org/_/downloads/specflow/en/latest/pdf/) - [Getting Started with SpecFlow](https://docs.specflow.org/projects/getting-started/en/latest/index.html) -- [What is SpecFlow?](https://specflow.org/tools/specflow/) \ No newline at end of file +- [What is SpecFlow?](https://specflow.org/tools/specflow/) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/101-bddfy.md b/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/101-bddfy.md index 80338aa5f..c572cfe81 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/101-bddfy.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/101-bddfy.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Using BDDfy for Unit Tests](https://www.michael-whelan.net/using-bddfy-for-unit-tests/) - [Introducing BDDfy in ASP.NET](https://codeproject.com/Articles/205381/Introducing-BDDfy-the-simplest-BDD-framework-for-N) -- [Implement BDD with .NET](https://www.youtube.com/watch?v=GYN_srjAvyk) \ No newline at end of file +- [Implement BDD with .NET](https://www.youtube.com/watch?v=GYN_srjAvyk) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/102-light-bdd.md b/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/102-light-bdd.md index 13789f21e..d36ac9592 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/102-light-bdd.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/102-light-bdd.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Getting started with Behavior Driven Development (BDD) in .NET](https://www.youtube.com/watch?v=EEeVU0z26u0) - [Introduction To BDD using SpecFlow in ASP.NET](https://www.youtube.com/watch?v=8KPrhBqZ-kk) -- [The Lightweight Behavior Driven Development test framework](https://github.com/LightBDD/LightBDD) \ No newline at end of file +- [The Lightweight Behavior Driven Development test framework](https://github.com/LightBDD/LightBDD) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/index.md b/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/index.md index 1a7f16011..2f28a8db0 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/index.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/103-behavior-testing/index.md @@ -1,8 +1,8 @@ # Behavior Testing -Behavior testing, also known as Behavioral-Driven Development (BDD), is a software development methodology that focuses on the behavior of the system being developed, rather than its implementation. BDD is a variation of Test-Driven Development (TDD), which emphasizes the use of automated tests to drive the development of software. BDD frameworks such as SpecFlow, Cucumber, and LightBDD provide a set of tools for writing and executing BDD tests in the context of ASP.NET. These frameworks allow developers to write tests using a fluent API, which allows them to describe the behavior of their application in a natural language format. They also provide a set of extension methods, which can be used to add additional functionality, such as validating the output of a test, logging test results, or integrating with other testing tools. +Behavior testing, also known as Behavioral-Driven Development (BDD), is a software development methodology that focuses on the behavior of the system being developed, rather than its implementation. BDD is a variation of Test-Driven Development (TDD), which emphasizes the use of automated tests to drive the development of software. BDD frameworks such as SpecFlow, Cucumber, and LightBDD provide a set of tools for writing and executing BDD tests in the context of ASP.NET. These frameworks allow developers to write tests using a fluent API, which allows them to describe the behavior of their application in a natural language format. They also provide a set of extension methods, which can be used to add additional functionality, such as validating the output of a test, logging test results, or integrating with other testing tools. To learn more, visit the following links: - [A Complete Tutorial on ASP.NET Testing](https://www.lambdatest.com/blog/aspnet-testing/) -- [Learn Behavior Testing in ASP.NET](https://public.vectorly.team/articles/learn_Behavior_Testing_for_Tech_Lead_role_ASP.NET_Developer) \ No newline at end of file +- [Learn Behavior Testing in ASP.NET](https://public.vectorly.team/articles/learn_Behavior_Testing_for_Tech_Lead_role_ASP.NET_Developer) diff --git a/src/data/roadmaps/aspnet-core/content/113-testing/index.md b/src/data/roadmaps/aspnet-core/content/113-testing/index.md index 3e69f43cc..3753f2482 100644 --- a/src/data/roadmaps/aspnet-core/content/113-testing/index.md +++ b/src/data/roadmaps/aspnet-core/content/113-testing/index.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [A Complete Tutorial on ASP.NET Testing](https://www.lambdatest.com/blog/aspnet-testing/) - [Unit test controller logic in ASP.NET](https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/testing?view=aspnetcore-7.0) -- [Integration tests in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-7.0) \ No newline at end of file +- [Integration tests in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-7.0) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/100-active-mq.md b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/100-active-mq.md index 88cc94005..7e9c2d251 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/100-active-mq.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/100-active-mq.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [What Is ActiveMQ And How Can You Use It?](https://www.c-sharpcorner.com/article/what-is-activemq-and-how-can-you-use-it/) - [Messaging with .NET and ActiveMQ](https://remark.wordpress.com/articles/messaging-with-net-and-activemq/) -- [Messaging with ActiveMQ and ASP.NET](https://havret.io/activemq-artemis-net-core) \ No newline at end of file +- [Messaging with ActiveMQ and ASP.NET](https://havret.io/activemq-artemis-net-core) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/101-apache-kafka.md b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/101-apache-kafka.md index 09ec2e53c..5e366d31d 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/101-apache-kafka.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/101-apache-kafka.md @@ -7,4 +7,4 @@ Kafka is based on a publish-subscribe model, where producers write data to topic To learn more, visit the following links: - [Working with Apache Kafka in ASP.NET](https://www.codemag.com/Article/2201061/Working-with-Apache-Kafka-in-ASP.NET-6-Core) -- [Kafka and .NET](https://docs.confluent.io/kafka-clients/dotnet/current/overview.html) \ No newline at end of file +- [Kafka and .NET](https://docs.confluent.io/kafka-clients/dotnet/current/overview.html) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/102-rabbit-mq.md b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/102-rabbit-mq.md index 2aede5fa5..f812c06b9 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/102-rabbit-mq.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/102-rabbit-mq.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [How to Use RabbitMQ in ASP NET?](https://www.freecodespot.com/blog/use-rabbitmq-in-asp-net-core/) - [Introduction of RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html) -- [ASP.NET and RabbitMQ](https://referbruv.com/blog/integrating-rabbitmq-with-aspnet-core-quickstart-with-an-example/) \ No newline at end of file +- [ASP.NET and RabbitMQ](https://referbruv.com/blog/integrating-rabbitmq-with-aspnet-core-quickstart-with-an-example/) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/103-net-mq.md b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/103-net-mq.md index ee06126ab..66d3c51f5 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/103-net-mq.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/103-net-mq.md @@ -7,4 +7,4 @@ NetMQ is built on top of ZeroMQ, a high-performance, asynchronous messaging libr Visit the following links to learn more: - [Documentation of NetMQ](https://netmq.readthedocs.io/en/latest/introduction/) -- [NetMQ and creating a Dynamic Worker in .NET](https://mikaelkoskinen.net/post/netmq-and-creating-a-dynamic-worker-per-task) \ No newline at end of file +- [NetMQ and creating a Dynamic Worker in .NET](https://mikaelkoskinen.net/post/netmq-and-creating-a-dynamic-worker-per-task) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/104-azure-service-bus.md b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/104-azure-service-bus.md index 060e17c1c..2828bf45c 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/104-azure-service-bus.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/104-azure-service-bus.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Getting Started With Azure Service Bus and ASP.NET Core](https://www.c-sharpcorner.com/article/get-started-with-azure-service-bus-queues-asp-net-core-part-1/) - [How to Send & receive messages from Azure Service Bus queue (.NET)?](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues?tabs=passwordless) -- [What is Azure Service Bus?](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) \ No newline at end of file +- [What is Azure Service Bus?](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/index.md b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/index.md index 12df3bd20..8bd0350a2 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/index.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/100-message-brokers/index.md @@ -7,4 +7,4 @@ In the context of ASP.NET, message brokers can be used to send and receive messa Visit the following links to learn more: - [What are message brokers?](https://www.ibm.com/topics/message-brokers) -- [Building a messaging solution with .Net Core?](https://medium.com/c-sharp-progarmming/quick-start-how-could-you-build-a-messaging-solution-with-net-core-b5f8253f31ea) \ No newline at end of file +- [Building a messaging solution with .Net Core?](https://medium.com/c-sharp-progarmming/quick-start-how-could-you-build-a-messaging-solution-with-net-core-b5f8253f31ea) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/100-mass-transit.md b/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/100-mass-transit.md index 5f73833b0..fd873523e 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/100-mass-transit.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/100-mass-transit.md @@ -7,4 +7,4 @@ It supports multiple messaging transports such as RabbitMQ, Azure Service Bus, A To learn more, visit the following links: - [Using MassTransit with RabbitMQ in ASP.NET Core](https://code-maze.com/masstransit-rabbitmq-aspnetcore/) -- [Complete guide to MassTransit](https://github.com/MassTransit/MassTransit) \ No newline at end of file +- [Complete guide to MassTransit](https://github.com/MassTransit/MassTransit) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/101-nservice-bus.md b/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/101-nservice-bus.md index 1747683d2..c61ab3f39 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/101-nservice-bus.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/101-nservice-bus.md @@ -7,4 +7,4 @@ NSB supports multiple messaging transports, including MSMQ, RabbitMQ, and Azure To learn more, visit the following links: - [Using NServiceBus in an ASP.NET](https://docs.particular.net/samples/web/send-from-aspnetcore-webapi/) -- [Learn NServiceBus from .NET Core](https://www.codeproject.com/Articles/1224839/Learn-NServiceBus-from-NET-Core-WebAPI) \ No newline at end of file +- [Learn NServiceBus from .NET Core](https://www.codeproject.com/Articles/1224839/Learn-NServiceBus-from-NET-Core-WebAPI) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/102-easy-net-q.md b/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/102-easy-net-q.md index c508516aa..503c8be83 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/102-easy-net-q.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/102-easy-net-q.md @@ -7,4 +7,4 @@ EasyNetQ supports a wide range of messaging patterns, such as publish-subscribe, To learn more, visit the following links: - [Overview of EasyNetQ](https://easynetq.com/) -- [RabbitMQ with EasyNetQ Tutorials](https://www.youtube.com/watch?v=CqxV_Xn4PlI) \ No newline at end of file +- [RabbitMQ with EasyNetQ Tutorials](https://www.youtube.com/watch?v=CqxV_Xn4PlI) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/index.md b/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/index.md index b95f9b423..9361e45db 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/index.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/101-message-bus/index.md @@ -7,4 +7,4 @@ There are different types of message buses, such as event-driven message buses, Visit the following links to learn more: - [Implementation of Message Bus C# microservices](https://stackoverflow.com/questions/51330229/implementation-of-message-bus-c-sharp-microservices) -- [Building a Message Bus with .NET Core](https://fatihdumanli.medium.com/build-a-message-bus-implementation-with-net-core-and-rabbitmq-9ba350b777f4) \ No newline at end of file +- [Building a Message Bus with .NET Core](https://fatihdumanli.medium.com/build-a-message-bus-implementation-with-net-core-and-rabbitmq-9ba350b777f4) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/102-kubernetes.md b/src/data/roadmaps/aspnet-core/content/114-microservices/102-kubernetes.md index 0b0ac410a..bed1ea37f 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/102-kubernetes.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/102-kubernetes.md @@ -1,8 +1,8 @@ # Kubernetes -Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources (similar to the Autopilot and Aquaman systems of Microsoft Azure). +Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources (similar to the Autopilot and Aquaman systems of Microsoft Azure). -The popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues. +The popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues. Visit the following resources to learn more: diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/103-docker-swarm.md b/src/data/roadmaps/aspnet-core/content/114-microservices/103-docker-swarm.md index 0d7fe2fe2..0083d7cf3 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/103-docker-swarm.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/103-docker-swarm.md @@ -7,4 +7,4 @@ With Docker Swarm, you can easily deploy and scale your applications across mult To learn more, visit the following links: - [Introduction to Docker Swarm](https://www.section.io/engineering-education/introduction-to-docker-swarm-in-container-orchestration/) -- [How - Deploy to Swarm?](https://docs.docker.com/get-started/swarm-deploy/) \ No newline at end of file +- [How - Deploy to Swarm?](https://docs.docker.com/get-started/swarm-deploy/) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/104-ocelot.md b/src/data/roadmaps/aspnet-core/content/114-microservices/104-ocelot.md index a9bd0246d..e69e2d8c9 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/104-ocelot.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/104-ocelot.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [Implement API Gateways with Ocelot](https://learn.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot) - [Getting Started with Ocelot](https://ocelot.readthedocs.io/en/latest/introduction/gettingstarted.html) -- [Building an API Gateway in ASP.NET using Ocelotss](https://www.youtube.com/watch?v=hlUGZ6Hmv6s) \ No newline at end of file +- [Building an API Gateway in ASP.NET using Ocelotss](https://www.youtube.com/watch?v=hlUGZ6Hmv6s) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/105-docker.md b/src/data/roadmaps/aspnet-core/content/114-microservices/105-docker.md index 8cd2afcb7..7951d1c0e 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/105-docker.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/105-docker.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [ASP.NET and Docker](https://www.tatvasoft.com/blog/asp-net-core-and-docker/) - [Introduction to .NET and Docker](https://learn.microsoft.com/en-us/dotnet/core/docker/introduction) -- [What is Docker, Why use it?](https://www.youtube.com/watch?v=vmnvOITMoIg) \ No newline at end of file +- [What is Docker, Why use it?](https://www.youtube.com/watch?v=vmnvOITMoIg) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/106-yarp.md b/src/data/roadmaps/aspnet-core/content/114-microservices/106-yarp.md index 1808ae1f9..7774508da 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/106-yarp.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/106-yarp.md @@ -5,4 +5,4 @@ YARP (Yet Another Robot Platform) is an open-source software framework for robot To learn more, visit the following links: - [Getting Started with YARP](https://microsoft.github.io/reverse-proxy/articles/getting-started.html) -- [YARP: The .NET Reverse proxy](https://www.youtube.com/watch?v=1IqQkNcsqWE) \ No newline at end of file +- [YARP: The .NET Reverse proxy](https://www.youtube.com/watch?v=1IqQkNcsqWE) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/107-orleans.md b/src/data/roadmaps/aspnet-core/content/114-microservices/107-orleans.md index 63d1ec788..350520e52 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/107-orleans.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/107-orleans.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [Microsoft Orleans](https://learn.microsoft.com/en-us/dotnet/orleans/overview) - [Building real applications with Orleans](https://www.youtube.com/watch?v=8duFuggnj8o) -- [Introduction to Orleans](https://dev.to/willvelida/introduction-to-microsoft-orleans-796) \ No newline at end of file +- [Introduction to Orleans](https://dev.to/willvelida/introduction-to-microsoft-orleans-796) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/108-steel-toe.md b/src/data/roadmaps/aspnet-core/content/114-microservices/108-steel-toe.md index e04c411a2..df4086b41 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/108-steel-toe.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/108-steel-toe.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [.NET Microservices with Steeltoe](https://learn.microsoft.com/en-us/shows/on-net/net-microservices-with-steeltoe) - [Steeltoe Documentation](https://docs.steeltoe.io/api/v3/welcome/index.html) -- [.NET Microservices with Steeltoe](https://www.youtube.com/watch?v=QLRi6iPapVg) \ No newline at end of file +- [.NET Microservices with Steeltoe](https://www.youtube.com/watch?v=QLRi6iPapVg) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/109-dapr.md b/src/data/roadmaps/aspnet-core/content/114-microservices/109-dapr.md index b8464a33f..dcb08b436 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/109-dapr.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/109-dapr.md @@ -5,4 +5,4 @@ Dapr (Distributed Application Runtime) is an open-source, portable runtime that To learn more, visit the following links: - [Get started with Dapr](https://learn.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/getting-started) -- [Building an event-driven .NET Core app with Dapr](https://medium.com/polarsquad/building-an-event-driven-net-core-app-with-dapr-58cc83ab120b) \ No newline at end of file +- [Building an event-driven .NET Core app with Dapr](https://medium.com/polarsquad/building-an-event-driven-net-core-app-with-dapr-58cc83ab120b) diff --git a/src/data/roadmaps/aspnet-core/content/114-microservices/index.md b/src/data/roadmaps/aspnet-core/content/114-microservices/index.md index 8ec859c71..7c262464b 100644 --- a/src/data/roadmaps/aspnet-core/content/114-microservices/index.md +++ b/src/data/roadmaps/aspnet-core/content/114-microservices/index.md @@ -7,4 +7,4 @@ In ASP.NET, microservices can be built using the .NET Core framework, which is a To learn more, visit the following links: - [Intro to Microservices Using ASP.NET Core](https://www.c-sharpcorner.com/article/microservice-using-asp-net-core/) -- [Advantages and Disadvantages of Microservices Architecture](https://www.dotnettricks.com/learn/microservices/architecture-example-advantages) \ No newline at end of file +- [Advantages and Disadvantages of Microservices Architecture](https://www.dotnettricks.com/learn/microservices/architecture-example-advantages) diff --git a/src/data/roadmaps/aspnet-core/content/115-ci-cd/100-github-actions.md b/src/data/roadmaps/aspnet-core/content/115-ci-cd/100-github-actions.md index 11b85c901..7e257f027 100644 --- a/src/data/roadmaps/aspnet-core/content/115-ci-cd/100-github-actions.md +++ b/src/data/roadmaps/aspnet-core/content/115-ci-cd/100-github-actions.md @@ -8,4 +8,4 @@ Visit the following links to learn more: - [Intro to GitHub Actions for .NET](https://devblogs.microsoft.com/dotnet/dotnet-loves-github-actions/) - [Tutorial: Create a GitHub Action with .NET](https://learn.microsoft.com/en-us/dotnet/devops/create-dotnet-github-action) -- [Building and testing .NET](https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net) \ No newline at end of file +- [Building and testing .NET](https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net) diff --git a/src/data/roadmaps/aspnet-core/content/115-ci-cd/101-azure-pipelines.md b/src/data/roadmaps/aspnet-core/content/115-ci-cd/101-azure-pipelines.md index 767a26486..8614c1cef 100644 --- a/src/data/roadmaps/aspnet-core/content/115-ci-cd/101-azure-pipelines.md +++ b/src/data/roadmaps/aspnet-core/content/115-ci-cd/101-azure-pipelines.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [Deploy ASP.NET Apps with Azure Pipelines](https://learn.microsoft.com/en-us/training/modules/deploy-aspnet-apps-azure-app-service-pipelines/) - [Build ASP.NET apps with .NET Framework](https://learn.microsoft.com/en-us/azure/devops/pipelines/apps/aspnet/build-aspnet-4?view=azure-devops) -- [How to Build, test & deploy .NET Apps](https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/dotnet-core?view=azure-devops&tabs=dotnetfive) \ No newline at end of file +- [How to Build, test & deploy .NET Apps](https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/dotnet-core?view=azure-devops&tabs=dotnetfive) diff --git a/src/data/roadmaps/aspnet-core/content/115-ci-cd/102-travis-ci.md b/src/data/roadmaps/aspnet-core/content/115-ci-cd/102-travis-ci.md index 09165beb0..2111f3a64 100644 --- a/src/data/roadmaps/aspnet-core/content/115-ci-cd/102-travis-ci.md +++ b/src/data/roadmaps/aspnet-core/content/115-ci-cd/102-travis-ci.md @@ -7,4 +7,4 @@ In ASP.NET, Travis CI can be used to automate various tasks related to the devel Visit the following links to learn more: - [How to use Travis CI to Deploy to Azure in ASP.NET](https://devblogs.microsoft.com/cse/2015/09/30/using-travis-ci-to-deploy-to-azure/) -- [Concepts for Beginners of Travis CI in ASP.NET](https://docs.travis-ci.com/user/for-beginners/) \ No newline at end of file +- [Concepts for Beginners of Travis CI in ASP.NET](https://docs.travis-ci.com/user/for-beginners/) diff --git a/src/data/roadmaps/aspnet-core/content/115-ci-cd/103-jenkins.md b/src/data/roadmaps/aspnet-core/content/115-ci-cd/103-jenkins.md index bf229009d..6bc646a41 100644 --- a/src/data/roadmaps/aspnet-core/content/115-ci-cd/103-jenkins.md +++ b/src/data/roadmaps/aspnet-core/content/115-ci-cd/103-jenkins.md @@ -8,4 +8,4 @@ To learn more, visit the following links: - [Continuous Deployment With Jenkins And .NET](https://www.c-sharpcorner.com/article/continuous-deployment-with-jenkins-and-net/) - [How to build ASP.NET Core code with Jenkins](https://referbruv.com/blog/cicd-getting-started-automating-aspnet-core-build-using-jenkins/) -- [How to publish ASP.NET Apps using Jenkins](https://www.ahmetkucukoglu.com/en/how-to-publish-asp-net-core-application-by-using-jenkins) \ No newline at end of file +- [How to publish ASP.NET Apps using Jenkins](https://www.ahmetkucukoglu.com/en/how-to-publish-asp-net-core-application-by-using-jenkins) diff --git a/src/data/roadmaps/aspnet-core/content/115-ci-cd/104-circle-ci.md b/src/data/roadmaps/aspnet-core/content/115-ci-cd/104-circle-ci.md index d07b048c3..e31cd1df2 100644 --- a/src/data/roadmaps/aspnet-core/content/115-ci-cd/104-circle-ci.md +++ b/src/data/roadmaps/aspnet-core/content/115-ci-cd/104-circle-ci.md @@ -7,4 +7,4 @@ In ASP.NET, CircleCI can be used to automate various tasks related to the develo Visit the following links to learn more: - [How to Setup CircleCI for ASP.NET project](https://discuss.circleci.com/t/setup-circleci-for-asp-net-project/33796s) -- [Building and testing an ASP.NET apps with CircleCI](https://circleci.com/blog/building-and-testing-an-asp-net-core-application/) \ No newline at end of file +- [Building and testing an ASP.NET apps with CircleCI](https://circleci.com/blog/building-and-testing-an-asp-net-core-application/) diff --git a/src/data/roadmaps/aspnet-core/content/115-ci-cd/105-team-city.md b/src/data/roadmaps/aspnet-core/content/115-ci-cd/105-team-city.md index ce238455b..1767ab868 100644 --- a/src/data/roadmaps/aspnet-core/content/115-ci-cd/105-team-city.md +++ b/src/data/roadmaps/aspnet-core/content/115-ci-cd/105-team-city.md @@ -4,9 +4,8 @@ TeamCity is a Java-based continuous integration and continuous delivery (CI/CD) In ASP.NET, TeamCity can be used to automate various tasks related to the development, testing, and deployment of ASP.NET applications. For example, you can use TeamCity to automatically build, test, and deploy an ASP.NET application to a hosting provider, such as Azure or AWS, every time you push code to your source control repository. - Visit the following links to learn more: - [Tutorial on TeamCity with ASP.NET](https://www.jetbrains.com/help/teamcity/net.html) - [How to Build ASP.NET application with TeamCity?](https://www.youtube.com/watch?v=KNzxyhSWV-4) -- [How to deploy ASP.NET Core sites using Teamcity?](https://medium.com/monkii/how-to-deploy-asp-net-core-sites-using-teamcity-or-just-command-line-cf05fdee58f5) \ No newline at end of file +- [How to deploy ASP.NET Core sites using Teamcity?](https://medium.com/monkii/how-to-deploy-asp-net-core-sites-using-teamcity-or-just-command-line-cf05fdee58f5) diff --git a/src/data/roadmaps/aspnet-core/content/115-ci-cd/index.md b/src/data/roadmaps/aspnet-core/content/115-ci-cd/index.md index 6b1f15565..a0b2faf81 100644 --- a/src/data/roadmaps/aspnet-core/content/115-ci-cd/index.md +++ b/src/data/roadmaps/aspnet-core/content/115-ci-cd/index.md @@ -7,4 +7,4 @@ In the context of ASP.NET, CI/CD can be used to automate various tasks related t To learn more, visit the following links: - [How to reate a CI/CD pipeline for ASP.NET?](https://www.azuredevopslabs.com/labs/vstsextend/azuredevopsprojectdotnet/) -- [Building a CI/CD Pipeline in Azure DevOps for ASP.NET Core](https://youtube.com/watch?v=eOQL0nXQlLs) \ No newline at end of file +- [Building a CI/CD Pipeline in Azure DevOps for ASP.NET Core](https://youtube.com/watch?v=eOQL0nXQlLs) diff --git a/src/data/roadmaps/aspnet-core/content/116-client-side-libraries/100-blazor.md b/src/data/roadmaps/aspnet-core/content/116-client-side-libraries/100-blazor.md index 3cb64ccad..523fc860c 100644 --- a/src/data/roadmaps/aspnet-core/content/116-client-side-libraries/100-blazor.md +++ b/src/data/roadmaps/aspnet-core/content/116-client-side-libraries/100-blazor.md @@ -2,12 +2,13 @@ Blazor is a framework for building web applications using C# and .NET that runs in the browser via WebAssembly. It allows developers to write C# code that runs directly in the browser, eliminating the need for JavaScript. -Blazor comes in two flavors: - - Blazor WebAssembly, a client-side solution that allows you to run C# code directly in the browser using WebAssembly. The app is executed on the client-side and can work offline, it can also interact with JavaScript and access the browser's DOM. - - Blazor Server, a server-side solution that allows you to run C# code on the server and update the UI in real-time. The app is executed on the server-side and requires an active connection to the server to function. +Blazor comes in two flavors: + +- Blazor WebAssembly, a client-side solution that allows you to run C# code directly in the browser using WebAssembly. The app is executed on the client-side and can work offline, it can also interact with JavaScript and access the browser's DOM. +- Blazor Server, a server-side solution that allows you to run C# code on the server and update the UI in real-time. The app is executed on the server-side and requires an active connection to the server to function. To learn more, visit the following resources: - [Guide to ASP.NET Core Blazor](https://learn.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-7.0) - [What Is Blazor And How It Works?](https://www.c-sharpcorner.com/article/what-is-blazor-and-how-does-it-works/) -- [Tutorial of ASP.NET Core Blazor](https://www.youtube.com/watch?v=LyO4zj6NRuc) \ No newline at end of file +- [Tutorial of ASP.NET Core Blazor](https://www.youtube.com/watch?v=LyO4zj6NRuc) diff --git a/src/data/roadmaps/aspnet-core/content/116-client-side-libraries/index.md b/src/data/roadmaps/aspnet-core/content/116-client-side-libraries/index.md index da079159b..84bf9b712 100644 --- a/src/data/roadmaps/aspnet-core/content/116-client-side-libraries/index.md +++ b/src/data/roadmaps/aspnet-core/content/116-client-side-libraries/index.md @@ -4,4 +4,4 @@ Client-side libraries in ASP.NET are libraries that are used to add functionalit Visit the following resources to learn more: -- [How to use Client Side Library in ASP.NET Core](https://www.youtube.com/watch?v=VwqozSbQuec) \ No newline at end of file +- [How to use Client Side Library in ASP.NET Core](https://www.youtube.com/watch?v=VwqozSbQuec) diff --git a/src/data/roadmaps/aspnet-core/content/117-template-engines/100-razor.md b/src/data/roadmaps/aspnet-core/content/117-template-engines/100-razor.md index bae587c12..aa3310947 100644 --- a/src/data/roadmaps/aspnet-core/content/117-template-engines/100-razor.md +++ b/src/data/roadmaps/aspnet-core/content/117-template-engines/100-razor.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Complete Guide to ASP.NET Razor](https://w3schools.com/asp/razor_intro.asp) - [Introduction to ASP.NET Web Programming Using Razor](https://learn.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/introducing-razor-syntax-c) -- [An Introduction To Razor](https://khalidabuhakmeh.com/what-is-razor-aspnet) \ No newline at end of file +- [An Introduction To Razor](https://khalidabuhakmeh.com/what-is-razor-aspnet) diff --git a/src/data/roadmaps/aspnet-core/content/117-template-engines/101-dot-liquid.md b/src/data/roadmaps/aspnet-core/content/117-template-engines/101-dot-liquid.md index 9387f0296..b3ef956e8 100644 --- a/src/data/roadmaps/aspnet-core/content/117-template-engines/101-dot-liquid.md +++ b/src/data/roadmaps/aspnet-core/content/117-template-engines/101-dot-liquid.md @@ -5,4 +5,4 @@ DotLiquid is an open-source templating engine for .NET that is based on the Liqu To learn more, visit the following resources: - [Guide to DotLiquid](https://discoverdot.net/projects/dotliquid) -- [What is DotLiquid in ASP.NET Core?](https://grandnode.medium.com/dotliquid-in-asp-net-core-e-commerce-platform-how-to-handle-message-templates-a6865be3a612) \ No newline at end of file +- [What is DotLiquid in ASP.NET Core?](https://grandnode.medium.com/dotliquid-in-asp-net-core-e-commerce-platform-how-to-handle-message-templates-a6865be3a612) diff --git a/src/data/roadmaps/aspnet-core/content/117-template-engines/102-scriban.md b/src/data/roadmaps/aspnet-core/content/117-template-engines/102-scriban.md index cd60037fe..cbd9a5198 100644 --- a/src/data/roadmaps/aspnet-core/content/117-template-engines/102-scriban.md +++ b/src/data/roadmaps/aspnet-core/content/117-template-engines/102-scriban.md @@ -5,4 +5,4 @@ Scriban is an open-source, lightweight template engine for .NET that is based on Visit the following links to learn more about Scriban: - [Guide to Scriban in ASP.NET](https://github.com/scriban/scriban) -- [Introduction to Scriban](https://www.markvanaalst.com/blog/sxa/sxa-9-3-introducing-scriban/) \ No newline at end of file +- [Introduction to Scriban](https://www.markvanaalst.com/blog/sxa/sxa-9-3-introducing-scriban/) diff --git a/src/data/roadmaps/aspnet-core/content/117-template-engines/103-fluid.md b/src/data/roadmaps/aspnet-core/content/117-template-engines/103-fluid.md index 5f95f8394..c1759f1f7 100644 --- a/src/data/roadmaps/aspnet-core/content/117-template-engines/103-fluid.md +++ b/src/data/roadmaps/aspnet-core/content/117-template-engines/103-fluid.md @@ -4,4 +4,4 @@ Fluid is a template engine for .NET that is based on the Fluid template language To learn more, visit the following links: -- [Overview of Fluid](https://github.com/sebastienros/fluid) \ No newline at end of file +- [Overview of Fluid](https://github.com/sebastienros/fluid) diff --git a/src/data/roadmaps/aspnet-core/content/117-template-engines/index.md b/src/data/roadmaps/aspnet-core/content/117-template-engines/index.md index 2273d29ac..f5cad8d5d 100644 --- a/src/data/roadmaps/aspnet-core/content/117-template-engines/index.md +++ b/src/data/roadmaps/aspnet-core/content/117-template-engines/index.md @@ -5,4 +5,4 @@ Template engines in ASP.NET are libraries that allow developers to embed dynamic To learn more, visit the followin link: - [Template Engine in ASP.NET](https://ej2.syncfusion.com/aspnetmvc/documentation/common/template-engine) -- [How to to Create Custom Templates using the .Net Template Engine ](https://www.infoq.com/articles/dotnet-core-template-engine/) \ No newline at end of file +- [How to to Create Custom Templates using the .Net Template Engine ](https://www.infoq.com/articles/dotnet-core-template-engine/) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/100-mediatr.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/100-mediatr.md index 6bb591e19..32b708b16 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/100-mediatr.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/100-mediatr.md @@ -5,4 +5,4 @@ MediatR is an open-source library for .NET that is designed to simplify the proc For more information, visit the following links: - [Use MediatR in ASP.NET or ASP.NET Core](https://medium.com/dotnet-hub/use-mediatr-in-asp-net-or-asp-net-core-cqrs-and-mediator-in-dotnet-how-to-use-mediatr-cqrs-aspnetcore-5076e2f2880c) -- [How to implement CQRS using MediatR in an ASP.NET?](https://blog.christian-schou.dk/how-to-implement-cqrs-with-mediatr-in-asp-net/) \ No newline at end of file +- [How to implement CQRS using MediatR in an ASP.NET?](https://blog.christian-schou.dk/how-to-implement-cqrs-with-mediatr-in-asp-net/) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/101-fluent-validation.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/101-fluent-validation.md index 09958f467..cc882f4eb 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/101-fluent-validation.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/101-fluent-validation.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Documentations of FluentValidation](https://docs.fluentvalidation.net/en/latest/) - [FluentValidation in ASP.NET Core](https://docs.fluentvalidation.net/en/latest/aspnet.html) -- [Overview of FluentValidation in ASP.NET Core](https://code-maze.com/fluentvalidation-in-aspnet/) \ No newline at end of file +- [Overview of FluentValidation in ASP.NET Core](https://code-maze.com/fluentvalidation-in-aspnet/) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/102-polly.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/102-polly.md index 2ff634a02..7e22e1693 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/102-polly.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/102-polly.md @@ -5,4 +5,4 @@ Polly is an open-source library for .NET that provides a simple and flexible API To learn more, visit the following resources: - [Using Polly for .NET Resilience](https://www.telerik.com/blogs/using-polly-for-net-resilience-and-transient-fault-handling-with-net-core) -- [Build Resilient Microservices Using Polly In ASP.NET](https://procodeguide.com/programming/polly-in-aspnet-core/) \ No newline at end of file +- [Build Resilient Microservices Using Polly In ASP.NET](https://procodeguide.com/programming/polly-in-aspnet-core/) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/103-nuke.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/103-nuke.md index bd3d2bd0c..ccf6b94c9 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/103-nuke.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/103-nuke.md @@ -7,4 +7,4 @@ NUKE allows you to define your build process using a simple, declarative syntax, To learn more, visit the following links: - [How to Build Automation with NUKE](https://learn.microsoft.com/en-us/shows/on-net/build-automation-with-nuke) -- [Automate your .NET project builds with NUKE](https://laurentkempe.com/2022/02/02/automate-your-dotnet-project-builds-with-nuke-a-cross-platform-build-automation-solution/) \ No newline at end of file +- [Automate your .NET project builds with NUKE](https://laurentkempe.com/2022/02/02/automate-your-dotnet-project-builds-with-nuke-a-cross-platform-build-automation-solution/) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/104-benchmark-net.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/104-benchmark-net.md index fd3de53a4..bb637ec0f 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/104-benchmark-net.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/104-benchmark-net.md @@ -6,4 +6,4 @@ To learn more, visit the following links: - [Benchmarking .NET Using BenchmarkDotNet](https://www.codemag.com/Article/2209061/Benchmarking-.NET-6-Applications-Using-BenchmarkDotNet-A-Deep-Dive) - [Benchmarking ASP.NET Applications with .NET Crank](https://www.youtube.com/watch?v=2IgfrnG-128) -- [Intro to BenchmarkDotNet](https://www.youtube.com/watch?v=mmza9x3QxYE) \ No newline at end of file +- [Intro to BenchmarkDotNet](https://www.youtube.com/watch?v=mmza9x3QxYE) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/105-noda-time.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/105-noda-time.md index 5608cb445..9f0f0c910 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/105-noda-time.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/105-noda-time.md @@ -5,4 +5,4 @@ Noda Time is an open-source library for .NET that provides a more complete and a To learn more, visit the following links: - [Intro to Noda Time](https://nodatime.org/) -- [What's the use of Noda Time?](https://nodatime.org/3.1.x/userguide/rationale) \ No newline at end of file +- [What's the use of Noda Time?](https://nodatime.org/3.1.x/userguide/rationale) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/106-gen-fu.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/106-gen-fu.md index 2db8391c8..a38935ee4 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/106-gen-fu.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/106-gen-fu.md @@ -4,4 +4,4 @@ GenFu is an open-source library for .NET that provides a simple and flexible way To learn more, visit the following links: -- [Overview of GenFu in ASP.NET](https://github.com/MisterJames/GenFu) \ No newline at end of file +- [Overview of GenFu in ASP.NET](https://github.com/MisterJames/GenFu) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/107-swash-buckle.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/107-swash-buckle.md index 874bd1f3d..8cb080877 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/107-swash-buckle.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/107-swash-buckle.md @@ -6,4 +6,4 @@ To learn more, visit the following resources: - [Get started with Swashbuckle and ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-7.0&tabs=visual-studio) - [How to Setup Swagger in ASP.NET with Swashbuckle?](https://www.andrewhoefling.com/Blog/Post/web-api-swagger-swashbuckle) -- [How to use Swagger/Swashbuckle in ASP.NET?](https://www.pragimtech.com/blog/azure/how-to-use-swagger-in-asp.net-core-web-api/) \ No newline at end of file +- [How to use Swagger/Swashbuckle in ASP.NET?](https://www.pragimtech.com/blog/azure/how-to-use-swagger-in-asp.net-core-web-api/) diff --git a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/index.md b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/index.md index 20814e336..9e2382fd5 100644 --- a/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/index.md +++ b/src/data/roadmaps/aspnet-core/content/118-good-to-know-libraries/index.md @@ -11,4 +11,4 @@ There are many libraries available for .NET and ASP.NET that can help you with v To learn more, visit the following resources: - [Top ASP.NET Libraries – Every Developer Should Know](https://procodeguide.com/programming/top-12-aspnet-core-libraries/) -- [Top 10 .NET Libraries Every Developer Should Know](https://www.syncfusion.com/blogs/post/top-10-net-core-libraries-every-web-developers-should-know.aspx) \ No newline at end of file +- [Top 10 .NET Libraries Every Developer Should Know](https://www.syncfusion.com/blogs/post/top-10-net-core-libraries-every-web-developers-should-know.aspx) diff --git a/src/data/roadmaps/backend/backend.md b/src/data/roadmaps/backend/backend.md index 34ea5290c..1db4f8aa1 100644 --- a/src/data/roadmaps/backend/backend.md +++ b/src/data/roadmaps/backend/backend.md @@ -1,74 +1,73 @@ --- -jsonUrl: "/jsons/roadmaps/backend.json" -pdfUrl: "/pdfs/roadmaps/backend.pdf" +jsonUrl: '/jsons/roadmaps/backend.json' +pdfUrl: '/pdfs/roadmaps/backend.pdf' order: 2 -briefTitle: "Backend" -briefDescription: "Step by step guide to becoming a backend developer in 2023" -title: "Backend Developer" -description: "Step by step guide to becoming a modern backend developer in 2023" +briefTitle: 'Backend' +briefDescription: 'Step by step guide to becoming a backend developer in 2023' +title: 'Backend Developer' +description: 'Step by step guide to becoming a modern backend developer in 2023' hasTopics: true -tnsBannerLink: "https://thenewstack.io?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert" +tnsBannerLink: 'https://thenewstack.io?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert' dimensions: width: 968 height: 2840.4 sponsor: - url: "https://www.fermyon.com/spin?utm_source=backend&utm_medium=banner&utm_campaign=roadmap-sh" - title: "Serverless Backend Apps" - imageUrl: "https://i.imgur.com/2ONZopb.jpg" - description: "Go from blinking cursor to deployed serverless Backend apps in 66 seconds with Fermyon Cloud." + url: 'https://www.fermyon.com/spin?utm_source=backend&utm_medium=banner&utm_campaign=roadmap-sh' + title: 'Serverless Backend Apps' + imageUrl: 'https://i.imgur.com/2ONZopb.jpg' + description: 'Go from blinking cursor to deployed serverless Backend apps in 66 seconds with Fermyon Cloud.' event: - category: "SponsorClick" - action: "Fermyon Redirect" - label: "Backend / Fermyon Link" + category: 'SponsorClick' + action: 'Fermyon Redirect' + label: 'Backend / Fermyon Link' schema: - headline: "Backend Developer Roadmap" - description: "Learn how to become a Backend Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/backend.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Backend Developer Roadmap' + description: 'Learn how to become a Backend Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/backend.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Backend Developer Roadmap" - description: "Learn to become a modern backend developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern backend development." + title: 'Backend Developer Roadmap' + description: 'Learn to become a modern backend developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern backend development.' keywords: - - "backend roadmap 2023" - - "backend developer roadmap 2023" - - "guide to becoming a developer" - - "guide to becoming a backend developer" - - "backend roadmap" - - "backend developer" - - "backend engineer" - - "backend skills" - - "backend development" - - "javascript developer" - - "backend development skills" - - "backend development skills test" - - "backend engineer roadmap" - - "backend developer roadmap" - - "become a backend developer" - - "backend developer career path" - - "javascript developer" - - "modern javascript developer" - - "node developer" - - "skills for backend development" - - "learn backend development" - - "what is backend development" - - "backend developer quiz" - - "backend developer interview questions" + - 'backend roadmap 2023' + - 'backend developer roadmap 2023' + - 'guide to becoming a developer' + - 'guide to becoming a backend developer' + - 'backend roadmap' + - 'backend developer' + - 'backend engineer' + - 'backend skills' + - 'backend development' + - 'javascript developer' + - 'backend development skills' + - 'backend development skills test' + - 'backend engineer roadmap' + - 'backend developer roadmap' + - 'become a backend developer' + - 'backend developer career path' + - 'javascript developer' + - 'modern javascript developer' + - 'node developer' + - 'skills for backend development' + - 'learn backend development' + - 'what is backend development' + - 'backend developer quiz' + - 'backend developer interview questions' relatedRoadmaps: - - "system-design" - - "python" - - "java" - - "golang" - - "devops" - - "javascript" - - "nodejs" - - "postgresql-dba" + - 'system-design' + - 'python' + - 'java' + - 'golang' + - 'devops' + - 'javascript' + - 'nodejs' + - 'postgresql-dba' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- - diff --git a/src/data/roadmaps/backend/content/100-internet/101-what-is-http.md b/src/data/roadmaps/backend/content/100-internet/101-what-is-http.md index 4f518aff6..303f0d7d2 100644 --- a/src/data/roadmaps/backend/content/100-internet/101-what-is-http.md +++ b/src/data/roadmaps/backend/content/100-internet/101-what-is-http.md @@ -4,7 +4,6 @@ HTTP is the `TCP/IP` based application layer communication protocol which standa Visit the following resources to learn more: - - [Everything you need to know about HTTP](https://cs.fyi/guide/http-in-depth) - [What is HTTP?](https://www.cloudflare.com/en-gb/learning/ddos/glossary/hypertext-transfer-protocol-http/) - [Full HTTP Networking Course](https://www.youtube.com/watch?v=2JYT5f2isg4) diff --git a/src/data/roadmaps/backend/content/101-basic-frontend/101-css.md b/src/data/roadmaps/backend/content/101-basic-frontend/101-css.md index a89c32dfb..a60786958 100644 --- a/src/data/roadmaps/backend/content/101-basic-frontend/101-css.md +++ b/src/data/roadmaps/backend/content/101-basic-frontend/101-css.md @@ -13,4 +13,3 @@ Visit the following resources to learn more: - [CSS Crash Course For Absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) - [HTML and CSS Tutorial](https://www.youtube.com/watch?v=D-h8L5hgW-w) - [CSS Masterclass - Tutorial & Course for Beginners](https://www.youtube.com/watch?v=FqmB-Zj2-PA) - diff --git a/src/data/roadmaps/backend/content/102-os-general-knowledge/103-threads-and-concurrency.md b/src/data/roadmaps/backend/content/102-os-general-knowledge/103-threads-and-concurrency.md index efd999d53..a8a39415d 100644 --- a/src/data/roadmaps/backend/content/102-os-general-knowledge/103-threads-and-concurrency.md +++ b/src/data/roadmaps/backend/content/102-os-general-knowledge/103-threads-and-concurrency.md @@ -10,4 +10,4 @@ Visit the following resources to learn more: - [Concurrency in Operating System](https://www.javatpoint.com/concurrency-in-operating-system) - [Intro to Processes & Threads](https://www.youtube.com/watch?v=exbKr6fnoUw) - [Introduction to Concurrency](https://www.youtube.com/watch?v=iKtvNJQoCNw) -- [Concurrency, Threading and Parallelism Explained](https://www.youtube.com/watch?v=olYdb0DdGtM) \ No newline at end of file +- [Concurrency, Threading and Parallelism Explained](https://www.youtube.com/watch?v=olYdb0DdGtM) diff --git a/src/data/roadmaps/backend/content/102-os-general-knowledge/105-memory-management.md b/src/data/roadmaps/backend/content/102-os-general-knowledge/105-memory-management.md index e488751ec..3768c5675 100644 --- a/src/data/roadmaps/backend/content/102-os-general-knowledge/105-memory-management.md +++ b/src/data/roadmaps/backend/content/102-os-general-knowledge/105-memory-management.md @@ -1,6 +1,6 @@ # Memory Management -The term Memory can be defined as a collection of data in a specific format. It is used to store instructions and process data. The memory comprises a large array or group of words or bytes, each with its own location. The primary motive of a computer system is to execute programs. These programs, along with the information they access, should be in the main memory during execution. The CPU fetches instructions from memory according to the value of the program counter. +The term Memory can be defined as a collection of data in a specific format. It is used to store instructions and process data. The memory comprises a large array or group of words or bytes, each with its own location. The primary motive of a computer system is to execute programs. These programs, along with the information they access, should be in the main memory during execution. The CPU fetches instructions from memory according to the value of the program counter. To achieve a degree of multiprogramming and proper utilization of memory, memory management is important. There are several memory management methods, reflecting various approaches, and the effectiveness of each algorithm depends on the situation. diff --git a/src/data/roadmaps/backend/content/102-os-general-knowledge/108-posix-basics.md b/src/data/roadmaps/backend/content/102-os-general-knowledge/108-posix-basics.md index 55805e37a..dc61acd18 100644 --- a/src/data/roadmaps/backend/content/102-os-general-knowledge/108-posix-basics.md +++ b/src/data/roadmaps/backend/content/102-os-general-knowledge/108-posix-basics.md @@ -2,7 +2,7 @@ POSIX (Portable Operating System Interface) is a family of standards for maintaining compatibility between operating systems. It describes utilities, APIs, and services that a compliant OS should provide to software, thus making it easier to port programs from one system to another. -A practical example: in a Unix-like operating system, there are three *standard streams*, `stdin`, `stdout` and `stderr` - they are I/O connections that you will probably come across when using a terminal, as they manage the flow from the **standard input** (stdin), **standard output** (stdout) and **standard error** (stderr). +A practical example: in a Unix-like operating system, there are three _standard streams_, `stdin`, `stdout` and `stderr` - they are I/O connections that you will probably come across when using a terminal, as they manage the flow from the **standard input** (stdin), **standard output** (stdout) and **standard error** (stderr). So, in this case, when we want to interact with any of these streams (through a process, for example), the POSIX operating system API makes it easier - for example, in the `` C header where the stdin, stderr, and stdout are defined as `STDIN_FILENO`, `STDERR_FILENO` and `STDOUT_FILENO`. diff --git a/src/data/roadmaps/backend/content/103-learn-a-language/103-csharp.md b/src/data/roadmaps/backend/content/103-learn-a-language/103-csharp.md index efcebbb9b..6e0d794f0 100644 --- a/src/data/roadmaps/backend/content/103-learn-a-language/103-csharp.md +++ b/src/data/roadmaps/backend/content/103-learn-a-language/103-csharp.md @@ -1,4 +1,5 @@ # C# + C# (pronounced "C sharp") is a general purpose programming language made by Microsoft. It is used to perform different tasks and can be used to create web apps, games, mobile apps, etc. Visit the following resources to learn more: diff --git a/src/data/roadmaps/backend/content/103-learn-a-language/105-javascript.md b/src/data/roadmaps/backend/content/103-learn-a-language/105-javascript.md index f867cbca6..0eb4bfb79 100644 --- a/src/data/roadmaps/backend/content/103-learn-a-language/105-javascript.md +++ b/src/data/roadmaps/backend/content/103-learn-a-language/105-javascript.md @@ -2,7 +2,7 @@ Apart from being used in the browser, JavaScript is also used in backend e.g. using [Node.js](https://nodejs.org/) or [Deno](https://deno.land/) for writing server-side code in JavaScript. -If you pick up JavaScript for the Backend, my personal recommendation would be to learn [JavaScript](/javascript) and then go with [Node.js](/nodejs) as it is the most popular and widely used option. Also, I would recommend learning TypeScript later on as you continue with your backend development Journey; it's a superset of JavaScript and is used in many projects. +If you pick up JavaScript for the Backend, my personal recommendation would be to learn [JavaScript](/javascript) and then go with [Node.js](/nodejs) as it is the most popular and widely used option. Also, I would recommend learning TypeScript later on as you continue with your backend development Journey; it's a superset of JavaScript and is used in many projects. Visit the following resources to learn more: diff --git a/src/data/roadmaps/backend/content/103-learn-a-language/index.md b/src/data/roadmaps/backend/content/103-learn-a-language/index.md index d305ca9a9..30a80ec67 100644 --- a/src/data/roadmaps/backend/content/103-learn-a-language/index.md +++ b/src/data/roadmaps/backend/content/103-learn-a-language/index.md @@ -1,6 +1,6 @@ # Learn a Language -Even if you’re a beginner the least you would have known is that Web Development is majorly classified into two facets: Frontend Development and Backend Development. And obviously, they both have their respective set of tools and technologies. For instance, when we talk about Frontend Development, there always comes 3 names first and foremost – HTML, CSS, and JavaScript. +Even if you’re a beginner the least you would have known is that Web Development is majorly classified into two facets: Frontend Development and Backend Development. And obviously, they both have their respective set of tools and technologies. For instance, when we talk about Frontend Development, there always comes 3 names first and foremost – HTML, CSS, and JavaScript. In the same way, when it comes to Backend Web Development – we primarily require a backend (or you can say server-side) programming language to make the website function along with various other tools & technologies such as databases, frameworks, web servers, etc. diff --git a/src/data/roadmaps/backend/content/104-version-control-systems/index.md b/src/data/roadmaps/backend/content/104-version-control-systems/index.md index 5303ea3aa..aacbc4656 100644 --- a/src/data/roadmaps/backend/content/104-version-control-systems/index.md +++ b/src/data/roadmaps/backend/content/104-version-control-systems/index.md @@ -2,7 +2,6 @@ Version control/source control systems allow developers to track and control changes to code over time. These services often include the ability to make atomic revisions to code, branch/fork off of specific points, and to compare versions of code. They are useful in determining the who, what, when, and why code changes were made. - Visit the following resources to learn more: - [Git](https://git-scm.com/) diff --git a/src/data/roadmaps/backend/content/105-repo-hosting-services/100-github.md b/src/data/roadmaps/backend/content/105-repo-hosting-services/100-github.md index 38daf0d9f..25068b826 100644 --- a/src/data/roadmaps/backend/content/105-repo-hosting-services/100-github.md +++ b/src/data/roadmaps/backend/content/105-repo-hosting-services/100-github.md @@ -10,4 +10,4 @@ Visit the following resources to learn more: - [What is GitHub?](https://www.youtube.com/watch?v=w3jLJU7DT5E) - [Git vs. GitHub: Whats the difference?](https://www.youtube.com/watch?v=wpISo9TNjfU) - [Git and GitHub for Beginners](https://www.youtube.com/watch?v=RGOj5yH7evk) -- [Git and GitHub - CS50 Beyond 2019](https://www.youtube.com/watch?v=eulnSXkhE7I) \ No newline at end of file +- [Git and GitHub - CS50 Beyond 2019](https://www.youtube.com/watch?v=eulnSXkhE7I) diff --git a/src/data/roadmaps/backend/content/108-more-about-databases/101-acid.md b/src/data/roadmaps/backend/content/108-more-about-databases/101-acid.md index ab8013a09..617b68b89 100644 --- a/src/data/roadmaps/backend/content/108-more-about-databases/101-acid.md +++ b/src/data/roadmaps/backend/content/108-more-about-databases/101-acid.md @@ -1,6 +1,6 @@ # ACID -ACID are the four properties of relational database systems that help in making sure that we are able to perform the transactions in a reliable manner. It's an acronym which refers to the presence of four properties: atomicity, consistency, isolation and durability +ACID are the four properties of relational database systems that help in making sure that we are able to perform the transactions in a reliable manner. It's an acronym which refers to the presence of four properties: atomicity, consistency, isolation and durability Visit the following resources to learn more: diff --git a/src/data/roadmaps/backend/content/108-more-about-databases/104-database-normalization.md b/src/data/roadmaps/backend/content/108-more-about-databases/104-database-normalization.md index c5e753386..dcdec34c0 100644 --- a/src/data/roadmaps/backend/content/108-more-about-databases/104-database-normalization.md +++ b/src/data/roadmaps/backend/content/108-more-about-databases/104-database-normalization.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [What is Normalization in DBMS (SQL)? 1NF, 2NF, 3NF, BCNF Database with Example](https://www.guru99.com/database-normalization.html) - [Database normalization](https://en.wikipedia.org/wiki/Database_normalization) -- [Basic Concept of Database Normalization](https://www.youtube.com/watch?v=xoTyrdT9SZI) \ No newline at end of file +- [Basic Concept of Database Normalization](https://www.youtube.com/watch?v=xoTyrdT9SZI) diff --git a/src/data/roadmaps/backend/content/108-more-about-databases/105-failure-modes.md b/src/data/roadmaps/backend/content/108-more-about-databases/105-failure-modes.md index 3ece98265..8d20d6c65 100644 --- a/src/data/roadmaps/backend/content/108-more-about-databases/105-failure-modes.md +++ b/src/data/roadmaps/backend/content/108-more-about-databases/105-failure-modes.md @@ -2,13 +2,13 @@ There are several different failure modes that can occur in a database, including: -* Read contention: This occurs when multiple clients or processes are trying to read data from the same location in the database at the same time, which can lead to delays or errors. -* Write contention: This occurs when multiple clients or processes are trying to write data to the same location in the database at the same time, which can lead to delays or errors. -* Thundering herd: This occurs when a large number of clients or processes try to access the same resource simultaneously, which can lead to resource exhaustion and reduced performance. -* Cascade: This occurs when a failure in one part of the database system causes a chain reaction that leads to failures in other parts of the system. -* Deadlock: This occurs when two or more transactions are waiting for each other to release a lock on a resource, leading to a standstill. -* Corruption: This occurs when data in the database becomes corrupted, which can lead to errors or unexpected results when reading or writing to the database. -* Hardware failure: This occurs when hardware components, such as disk drives or memory, fail, which can lead to data loss or corruption. -* Software failure: This occurs when software components, such as the database management system or application, fail, which can lead to errors or unexpected results. -* Network failure: This occurs when the network connection between the database and the client is lost, which can lead to errors or timeouts when trying to access the database. -* Denial of service (DoS) attack: This occurs when a malicious actor attempts to overwhelm the database with requests, leading to resource exhaustion and reduced performance. +- Read contention: This occurs when multiple clients or processes are trying to read data from the same location in the database at the same time, which can lead to delays or errors. +- Write contention: This occurs when multiple clients or processes are trying to write data to the same location in the database at the same time, which can lead to delays or errors. +- Thundering herd: This occurs when a large number of clients or processes try to access the same resource simultaneously, which can lead to resource exhaustion and reduced performance. +- Cascade: This occurs when a failure in one part of the database system causes a chain reaction that leads to failures in other parts of the system. +- Deadlock: This occurs when two or more transactions are waiting for each other to release a lock on a resource, leading to a standstill. +- Corruption: This occurs when data in the database becomes corrupted, which can lead to errors or unexpected results when reading or writing to the database. +- Hardware failure: This occurs when hardware components, such as disk drives or memory, fail, which can lead to data loss or corruption. +- Software failure: This occurs when software components, such as the database management system or application, fail, which can lead to errors or unexpected results. +- Network failure: This occurs when the network connection between the database and the client is lost, which can lead to errors or timeouts when trying to access the database. +- Denial of service (DoS) attack: This occurs when a malicious actor attempts to overwhelm the database with requests, leading to resource exhaustion and reduced performance. diff --git a/src/data/roadmaps/backend/content/108-more-about-databases/106-profiling-performance.md b/src/data/roadmaps/backend/content/108-more-about-databases/106-profiling-performance.md index 7d0287e00..1aa9cc618 100644 --- a/src/data/roadmaps/backend/content/108-more-about-databases/106-profiling-performance.md +++ b/src/data/roadmaps/backend/content/108-more-about-databases/106-profiling-performance.md @@ -2,10 +2,10 @@ There are several ways to profile the performance of a database: -* Monitor system performance: You can use tools like the Windows Task Manager or the Unix/Linux top command to monitor the performance of your database server. These tools allow you to see the overall CPU, memory, and disk usage of the system, which can help identify any resource bottlenecks. -* Use database-specific tools: Most database management systems (DBMSs) have their own tools for monitoring performance. For example, Microsoft SQL Server has the SQL Server Management Studio (SSMS) and the sys.dm_os_wait_stats dynamic management view, while Oracle has the Oracle Enterprise Manager and the v$waitstat view. These tools allow you to see specific performance metrics, such as the amount of time spent waiting on locks or the number of physical reads and writes. -* Use third-party tools: There are also several third-party tools that can help you profile the performance of a database. Some examples include SolarWinds Database Performance Analyzer, Quest Software Foglight, and Redgate SQL Monitor. These tools often provide more in-depth performance analysis and can help you identify specific issues or bottlenecks. -* Analyze slow queries: If you have specific queries that are running slowly, you can use tools like EXPLAIN PLAN or SHOW PLAN in MySQL or SQL Server to see the execution plan for the query and identify any potential issues. You can also use tools like the MySQL slow query log or the SQL Server Profiler to capture slow queries and analyze them further. -* Monitor application performance: If you are experiencing performance issues with a specific application that is using the database, you can use tools like Application Insights or New Relic to monitor the performance of the application and identify any issues that may be related to the database. +- Monitor system performance: You can use tools like the Windows Task Manager or the Unix/Linux top command to monitor the performance of your database server. These tools allow you to see the overall CPU, memory, and disk usage of the system, which can help identify any resource bottlenecks. +- Use database-specific tools: Most database management systems (DBMSs) have their own tools for monitoring performance. For example, Microsoft SQL Server has the SQL Server Management Studio (SSMS) and the sys.dm_os_wait_stats dynamic management view, while Oracle has the Oracle Enterprise Manager and the v$waitstat view. These tools allow you to see specific performance metrics, such as the amount of time spent waiting on locks or the number of physical reads and writes. +- Use third-party tools: There are also several third-party tools that can help you profile the performance of a database. Some examples include SolarWinds Database Performance Analyzer, Quest Software Foglight, and Redgate SQL Monitor. These tools often provide more in-depth performance analysis and can help you identify specific issues or bottlenecks. +- Analyze slow queries: If you have specific queries that are running slowly, you can use tools like EXPLAIN PLAN or SHOW PLAN in MySQL or SQL Server to see the execution plan for the query and identify any potential issues. You can also use tools like the MySQL slow query log or the SQL Server Profiler to capture slow queries and analyze them further. +- Monitor application performance: If you are experiencing performance issues with a specific application that is using the database, you can use tools like Application Insights or New Relic to monitor the performance of the application and identify any issues that may be related to the database. Have a look at the documentation for the database that you are using. diff --git a/src/data/roadmaps/backend/content/109-apis/100-rest.md b/src/data/roadmaps/backend/content/109-apis/100-rest.md index 8f0cf0834..47d318f77 100644 --- a/src/data/roadmaps/backend/content/109-apis/100-rest.md +++ b/src/data/roadmaps/backend/content/109-apis/100-rest.md @@ -1,10 +1,10 @@ # REST -REST, or REpresentational State Transfer, is an architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. +REST, or REpresentational State Transfer, is an architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. Visit the following resources to learn more: - [What is REST?](https://www.codecademy.com/article/what-is-rest) - [What is a REST API?](https://www.redhat.com/en/topics/api/what-is-a-rest-api) - [Roy Fieldings dissertation chapter, Representational State Transfer (REST)](https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm) -- [Learn REST: A RESTful Tutorial](https://restapitutorial.com/) \ No newline at end of file +- [Learn REST: A RESTful Tutorial](https://restapitutorial.com/) diff --git a/src/data/roadmaps/backend/content/109-apis/104-hateoas.md b/src/data/roadmaps/backend/content/109-apis/104-hateoas.md index 934add41b..348a17ba8 100644 --- a/src/data/roadmaps/backend/content/109-apis/104-hateoas.md +++ b/src/data/roadmaps/backend/content/109-apis/104-hateoas.md @@ -1,6 +1,6 @@ # Hateoas -HATEOAS is an acronym for Hypermedia As The Engine Of Application State, it's the concept that when sending information over a RESTful API the document received should contain everything the client needs in order to parse and use the data i.e they don't have to contact any other endpoint not explicitly mentioned within the Document +HATEOAS is an acronym for Hypermedia As The Engine Of Application State, it's the concept that when sending information over a RESTful API the document received should contain everything the client needs in order to parse and use the data i.e they don't have to contact any other endpoint not explicitly mentioned within the Document Visit the following resources to learn more: diff --git a/src/data/roadmaps/backend/content/109-apis/106-authentication/100-cookie-based.md b/src/data/roadmaps/backend/content/109-apis/106-authentication/100-cookie-based.md index 673410620..f242a3d8c 100644 --- a/src/data/roadmaps/backend/content/109-apis/106-authentication/100-cookie-based.md +++ b/src/data/roadmaps/backend/content/109-apis/106-authentication/100-cookie-based.md @@ -5,4 +5,3 @@ Cookies are pieces of data used to identify the user and their preferences. The Visit the following resources to learn more: - [How does cookie based authentication work?](https://stackoverflow.com/questions/17769011/how-does-cookie-based-authentication-work) - diff --git a/src/data/roadmaps/backend/content/109-apis/106-authentication/103-token-authentication.md b/src/data/roadmaps/backend/content/109-apis/106-authentication/103-token-authentication.md index 0900ac046..7cafc387c 100644 --- a/src/data/roadmaps/backend/content/109-apis/106-authentication/103-token-authentication.md +++ b/src/data/roadmaps/backend/content/109-apis/106-authentication/103-token-authentication.md @@ -8,7 +8,6 @@ Token-based authentication is different from traditional password-based or serve But using tokens requires a bit of coding know-how. Most developers pick up the techniques quickly, but there is a learning curve. - Visit the following resources to learn more: - [What Is Token-Based Authentication?](https://www.okta.com/identity-101/what-is-token-based-authentication/) diff --git a/src/data/roadmaps/backend/content/109-apis/106-authentication/105-openid.md b/src/data/roadmaps/backend/content/109-apis/106-authentication/105-openid.md index 0b9568b79..81ae5ae14 100644 --- a/src/data/roadmaps/backend/content/109-apis/106-authentication/105-openid.md +++ b/src/data/roadmaps/backend/content/109-apis/106-authentication/105-openid.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [Official Website](https://openid.net/) - [What is OpenID](https://openid.net/connect/) - [OAuth vs OpenID](https://securew2.com/blog/oauth-vs-openid-which-is-better) -- [An Illustrated Guide to OAuth and OpenID Connect](https://www.youtube.com/watch?v=t18YB3xDfXI) \ No newline at end of file +- [An Illustrated Guide to OAuth and OpenID Connect](https://www.youtube.com/watch?v=t18YB3xDfXI) diff --git a/src/data/roadmaps/backend/content/109-apis/106-authentication/105-saml.md b/src/data/roadmaps/backend/content/109-apis/106-authentication/105-saml.md index 9cec13756..7847a6d90 100644 --- a/src/data/roadmaps/backend/content/109-apis/106-authentication/105-saml.md +++ b/src/data/roadmaps/backend/content/109-apis/106-authentication/105-saml.md @@ -1 +1 @@ -# Saml \ No newline at end of file +# Saml diff --git a/src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.md b/src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.md index 45bb64625..d735171e4 100644 --- a/src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.md +++ b/src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.md @@ -5,5 +5,5 @@ Sharding strategy is a technique to split a large dataset into smaller chunks (l Visit the following resources to learn more: - [Database Sharding – System Design Interview Concept](https://www.geeksforgeeks.org/database-sharding-a-system-design-concept/) -- [Wikipedia - Sharding in Datbase Architectures](https://en.wikipedia.org/wiki/Shard_(database_architecture)) +- [Wikipedia - Sharding in Datbase Architectures]() - [How sharding a database can make it faster](https://stackoverflow.blog/2022/03/14/how-sharding-a-database-can-make-it-faster/) diff --git a/src/data/roadmaps/backend/content/110-caching/100-cdn.md b/src/data/roadmaps/backend/content/110-caching/100-cdn.md index 68b2adfd5..23a82be48 100644 --- a/src/data/roadmaps/backend/content/110-caching/100-cdn.md +++ b/src/data/roadmaps/backend/content/110-caching/100-cdn.md @@ -4,7 +4,6 @@ A Content Delivery Network (CDN) service aims to provide high availability and p Traditional commercial CDNs (Amazon CloudFront, Akamai, CloudFlare and Fastly) provide servers across the globe which can be used for this purpose. Serving assets and contents via a CDN reduces bandwidth on website hosting, provides an extra layer of caching to reduce potential outages and can improve website security as well - Visit the following resources to learn more: - [CloudFlare - What is a CDN? | How do CDNs work?](https://www.cloudflare.com/en-ca/learning/cdn/what-is-a-cdn/) diff --git a/src/data/roadmaps/backend/content/110-caching/101-server-side/index.md b/src/data/roadmaps/backend/content/110-caching/101-server-side/index.md index 00fe88f47..5e2e8f6dd 100644 --- a/src/data/roadmaps/backend/content/110-caching/101-server-side/index.md +++ b/src/data/roadmaps/backend/content/110-caching/101-server-side/index.md @@ -10,4 +10,3 @@ Visit the following resources to learn more: - [Server-side caching ](https://www.starwindsoftware.com/resource-library/server-side-caching/) - [Server-side caching and Client-side caching](https://www.codingninjas.com/codestudio/library/server-side-caching-and-client-side-caching) - diff --git a/src/data/roadmaps/backend/content/110-caching/index.md b/src/data/roadmaps/backend/content/110-caching/index.md index a0d734661..c0948bd54 100644 --- a/src/data/roadmaps/backend/content/110-caching/index.md +++ b/src/data/roadmaps/backend/content/110-caching/index.md @@ -1,3 +1,3 @@ # Caching -Caching is a technique of storing frequently used data or information in a local memory, for a certain time period. So, next time, when the client requests the same information, instead of retrieving the information from the database, it will give the information from the local memory. The main advantage of caching is that it improves the performance by reducing the processing burden. +Caching is a technique of storing frequently used data or information in a local memory, for a certain time period. So, next time, when the client requests the same information, instead of retrieving the information from the database, it will give the information from the local memory. The main advantage of caching is that it improves the performance by reducing the processing burden. diff --git a/src/data/roadmaps/backend/content/111-web-security-knowledge/101-sha-family.md b/src/data/roadmaps/backend/content/111-web-security-knowledge/101-sha-family.md index c10ee1cbb..c2f280c3c 100644 --- a/src/data/roadmaps/backend/content/111-web-security-knowledge/101-sha-family.md +++ b/src/data/roadmaps/backend/content/111-web-security-knowledge/101-sha-family.md @@ -1,6 +1,7 @@ # SHA family SHA (Secure Hash Algorithms) is a family of cryptographic hash functions created by the NIST (National Institute of Standards and Technology). The family includes: + - SHA-0: Published in 1993, this is the first algorithm in the family. Shortly after its release, it was discontinued for an undisclosed significant flaw. - SHA-1: Created to replace SHA-0 and which resembles MD5, this algorithm has been considered insecure since 2010. - SHA-2: This isn't an algorithm, but a set of them, with SHA-256 and SHA-512 being the most popular. SHA-2 is still secure and widely used. diff --git a/src/data/roadmaps/backend/content/111-web-security-knowledge/106-server-security.md b/src/data/roadmaps/backend/content/111-web-security-knowledge/106-server-security.md index d8de494dc..ffafecc66 100644 --- a/src/data/roadmaps/backend/content/111-web-security-knowledge/106-server-security.md +++ b/src/data/roadmaps/backend/content/111-web-security-knowledge/106-server-security.md @@ -1,13 +1,13 @@ -# Server Security +# Server Security Learn about the security of your server and how to secure it. Here are some of the topics off the top of my head: -* Use a firewall: One of the most effective ways to secure a server is to use a firewall to block all unnecessary incoming traffic. You can use iptables on Linux systems or a hardware firewall to do this. -* Close unnecessary ports: Make sure to close any ports that are not needed for your server to function properly. This will reduce the attack surface of your server and make it more difficult for attackers to gain access. -* Use strong passwords: Use long, complex passwords for all of your accounts, and consider using a password manager to store them securely. -* Keep your system up to date: Make sure to keep your operating system and software up to date with the latest security patches. This will help to prevent vulnerabilities from being exploited by attackers. -* Use SSL/TLS for communication: Use Secure Sockets Layer (SSL) or Transport Layer Security (TLS) to encrypt communication between your server and client devices. This will help to protect against man-in-the-middle attacks and other types of cyber threats. -* Use a intrusion detection system (IDS): An IDS monitors network traffic and alerts you to any suspicious activity, which can help you to identify and respond to potential threats in a timely manner. -* Enable two-factor authentication: Two-factor authentication adds an extra layer of security to your accounts by requiring a second form of authentication, such as a code sent to your phone, in addition to your password. +- Use a firewall: One of the most effective ways to secure a server is to use a firewall to block all unnecessary incoming traffic. You can use iptables on Linux systems or a hardware firewall to do this. +- Close unnecessary ports: Make sure to close any ports that are not needed for your server to function properly. This will reduce the attack surface of your server and make it more difficult for attackers to gain access. +- Use strong passwords: Use long, complex passwords for all of your accounts, and consider using a password manager to store them securely. +- Keep your system up to date: Make sure to keep your operating system and software up to date with the latest security patches. This will help to prevent vulnerabilities from being exploited by attackers. +- Use SSL/TLS for communication: Use Secure Sockets Layer (SSL) or Transport Layer Security (TLS) to encrypt communication between your server and client devices. This will help to protect against man-in-the-middle attacks and other types of cyber threats. +- Use a intrusion detection system (IDS): An IDS monitors network traffic and alerts you to any suspicious activity, which can help you to identify and respond to potential threats in a timely manner. +- Enable two-factor authentication: Two-factor authentication adds an extra layer of security to your accounts by requiring a second form of authentication, such as a code sent to your phone, in addition to your password. Also learn about OpenSSL and creating your own PKI as well as managing certs, renewals, and mutual client auth with x509 certs diff --git a/src/data/roadmaps/backend/content/112-testing/100-integration-testing.md b/src/data/roadmaps/backend/content/112-testing/100-integration-testing.md index e20437595..bf4a05619 100644 --- a/src/data/roadmaps/backend/content/112-testing/100-integration-testing.md +++ b/src/data/roadmaps/backend/content/112-testing/100-integration-testing.md @@ -1,6 +1,6 @@ # Integration Testing -Integration testing is a broad category of tests where multiple software modules are __integrated__ and tested as a group. It is meant to test the __interaction__ between multiple services, resources, or modules. For example, an API's interaction with a backend service, or a service with a database. +Integration testing is a broad category of tests where multiple software modules are **integrated** and tested as a group. It is meant to test the **interaction** between multiple services, resources, or modules. For example, an API's interaction with a backend service, or a service with a database. Visit the following resources to learn more: diff --git a/src/data/roadmaps/backend/content/112-testing/101-unit-testing.md b/src/data/roadmaps/backend/content/112-testing/101-unit-testing.md index 36da1be19..dc2b3a337 100644 --- a/src/data/roadmaps/backend/content/112-testing/101-unit-testing.md +++ b/src/data/roadmaps/backend/content/112-testing/101-unit-testing.md @@ -1,6 +1,6 @@ # Unit Testing -Unit testing is where individual __units__ (modules, functions/methods, routines, etc.) of software are tested to ensure their correctness. This low-level testing ensures smaller components are functionally sound while taking the burden off of higher-level tests. Generally, a developer writes these tests during the development process and they are run as automated tests. +Unit testing is where individual **units** (modules, functions/methods, routines, etc.) of software are tested to ensure their correctness. This low-level testing ensures smaller components are functionally sound while taking the burden off of higher-level tests. Generally, a developer writes these tests during the development process and they are run as automated tests. Visit the following resources to learn more: diff --git a/src/data/roadmaps/backend/content/114-design-and-development-principles/100-gof-design-patterns.md b/src/data/roadmaps/backend/content/114-design-and-development-principles/100-gof-design-patterns.md index 6b152b230..7b6746b62 100644 --- a/src/data/roadmaps/backend/content/114-design-and-development-principles/100-gof-design-patterns.md +++ b/src/data/roadmaps/backend/content/114-design-and-development-principles/100-gof-design-patterns.md @@ -1,6 +1,6 @@ # Design Patterns -Design patterns are typical solutions to commonly occurring problems in software design. They can be broken into three categories: +Design patterns are typical solutions to commonly occurring problems in software design. They can be broken into three categories: - Creational Patterns for the creation of objects - Structural Patterns to provide relationship between objects diff --git a/src/data/roadmaps/backend/content/114-design-and-development-principles/index.md b/src/data/roadmaps/backend/content/114-design-and-development-principles/index.md index 46706a444..62948c52a 100644 --- a/src/data/roadmaps/backend/content/114-design-and-development-principles/index.md +++ b/src/data/roadmaps/backend/content/114-design-and-development-principles/index.md @@ -1 +1 @@ -# Design and development principles \ No newline at end of file +# Design and development principles diff --git a/src/data/roadmaps/backend/content/115-architectural-patterns/105-service-mesh.md b/src/data/roadmaps/backend/content/115-architectural-patterns/105-service-mesh.md index 67de3f8d6..de9589f57 100644 --- a/src/data/roadmaps/backend/content/115-architectural-patterns/105-service-mesh.md +++ b/src/data/roadmaps/backend/content/115-architectural-patterns/105-service-mesh.md @@ -10,4 +10,4 @@ Service meshes are commonly used in cloud-native architectures and are often man Visit the following resources to learn more: -- [What is a Service Mesh?](https://www.nginx.com/blog/what-is-a-service-mesh/) \ No newline at end of file +- [What is a Service Mesh?](https://www.nginx.com/blog/what-is-a-service-mesh/) diff --git a/src/data/roadmaps/backend/content/115-architectural-patterns/106-twelve-factor-apps.md b/src/data/roadmaps/backend/content/115-architectural-patterns/106-twelve-factor-apps.md index e2f7e5f36..abdd4b33c 100644 --- a/src/data/roadmaps/backend/content/115-architectural-patterns/106-twelve-factor-apps.md +++ b/src/data/roadmaps/backend/content/115-architectural-patterns/106-twelve-factor-apps.md @@ -4,18 +4,18 @@ The Twelve-Factor App is a methodology for building scalable and maintainable so The Twelve-Factor App methodology consists of the following principles: -* Codebase: There should be a single codebase for the application, with multiple deployments. -* Dependencies: The application should explicitly declare and isolate its dependencies. -* Config: The application should store configuration in the environment. -* Backing services: The application should treat backing services as attached resources. -* Build, release, run: The application should be built, released, and run as an isolated unit. -* Processes: The application should be executed as one or more stateless processes. -* Port binding: The application should expose its services through port binding. -* Concurrency: The application should scale out by adding more processes, not by adding threads. -* Disposability: The application should be designed to start and stop quickly. -* Dev/prod parity: The development, staging, and production environments should be as similar as possible. -* Logs: The application should treat logs as event streams. -* Admin processes: The application should run admin/maintenance tasks as one-off processes. +- Codebase: There should be a single codebase for the application, with multiple deployments. +- Dependencies: The application should explicitly declare and isolate its dependencies. +- Config: The application should store configuration in the environment. +- Backing services: The application should treat backing services as attached resources. +- Build, release, run: The application should be built, released, and run as an isolated unit. +- Processes: The application should be executed as one or more stateless processes. +- Port binding: The application should expose its services through port binding. +- Concurrency: The application should scale out by adding more processes, not by adding threads. +- Disposability: The application should be designed to start and stop quickly. +- Dev/prod parity: The development, staging, and production environments should be as similar as possible. +- Logs: The application should treat logs as event streams. +- Admin processes: The application should run admin/maintenance tasks as one-off processes. The Twelve-Factor App methodology is widely adopted by developers of SaaS applications, and it is seen as a best practice for building cloud-native applications that are scalable, maintainable, and easy to deploy. diff --git a/src/data/roadmaps/backend/content/116-search-engines/100-elasticsearch.md b/src/data/roadmaps/backend/content/116-search-engines/100-elasticsearch.md index 8354b3dfa..c4e3148dd 100644 --- a/src/data/roadmaps/backend/content/116-search-engines/100-elasticsearch.md +++ b/src/data/roadmaps/backend/content/116-search-engines/100-elasticsearch.md @@ -6,5 +6,3 @@ Visit the following resources to learn more: - [Elasticsearch Website](https://www.elastic.co/elasticsearch/) - [Elasticsearch Documentation](https://www.elastic.co/guide/index.html) - - diff --git a/src/data/roadmaps/backend/content/116-search-engines/index.md b/src/data/roadmaps/backend/content/116-search-engines/index.md index bc600ec99..4e46223a2 100644 --- a/src/data/roadmaps/backend/content/116-search-engines/index.md +++ b/src/data/roadmaps/backend/content/116-search-engines/index.md @@ -1 +1 @@ -# Search engines \ No newline at end of file +# Search engines diff --git a/src/data/roadmaps/backend/content/117-message-brokers/100-rabbitmq.md b/src/data/roadmaps/backend/content/117-message-brokers/100-rabbitmq.md index 3f5165b1c..23d780698 100644 --- a/src/data/roadmaps/backend/content/117-message-brokers/100-rabbitmq.md +++ b/src/data/roadmaps/backend/content/117-message-brokers/100-rabbitmq.md @@ -1,8 +1,8 @@ -# RabbitMQ - -With tens of thousands of users, RabbitMQ is one of the most popular open-source message brokers. RabbitMQ is lightweight and easy to deploy on-premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements. - +# RabbitMQ + +With tens of thousands of users, RabbitMQ is one of the most popular open-source message brokers. RabbitMQ is lightweight and easy to deploy on-premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements. + Visit the following resources to learn more: - [RabbitMQ Tutorials](https://www.rabbitmq.com/getstarted.html) -- [RabbitMQ Tutorial - Message Queues and Distributed Systems](https://www.youtube.com/watch?v=nFxjaVmFj5E) +- [RabbitMQ Tutorial - Message Queues and Distributed Systems](https://www.youtube.com/watch?v=nFxjaVmFj5E) diff --git a/src/data/roadmaps/backend/content/117-message-brokers/101-kafka.md b/src/data/roadmaps/backend/content/117-message-brokers/101-kafka.md index 3cf72a75e..3c7f480a1 100644 --- a/src/data/roadmaps/backend/content/117-message-brokers/101-kafka.md +++ b/src/data/roadmaps/backend/content/117-message-brokers/101-kafka.md @@ -1,8 +1,8 @@ -# Kafka - -Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. - +# Kafka + +Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. + Visit the following resources to learn more: - [Apache Kafka quickstart](https://kafka.apache.org/quickstart) -- [Apache Kafka Fundamentals](https://www.youtube.com/watch?v=B5j3uNBH8X4) +- [Apache Kafka Fundamentals](https://www.youtube.com/watch?v=B5j3uNBH8X4) diff --git a/src/data/roadmaps/backend/content/117-message-brokers/index.md b/src/data/roadmaps/backend/content/117-message-brokers/index.md index d603e49e5..96af81492 100644 --- a/src/data/roadmaps/backend/content/117-message-brokers/index.md +++ b/src/data/roadmaps/backend/content/117-message-brokers/index.md @@ -1,7 +1,7 @@ -# Message Brokers - -Message brokers are an inter-application communication technology to help build a common integration mechanism to support cloud-native, microservices-based, serverless, and hybrid cloud architectures. Two of the most famous message brokers are `RabbitMQ` and `Apache Kafka` - +# Message Brokers + +Message brokers are an inter-application communication technology to help build a common integration mechanism to support cloud-native, microservices-based, serverless, and hybrid cloud architectures. Two of the most famous message brokers are `RabbitMQ` and `Apache Kafka` + Visit the following resources to learn more: -- [Introduction to Message Brokers](https://www.youtube.com/watch?v=57Qr9tk6Uxc) +- [Introduction to Message Brokers](https://www.youtube.com/watch?v=57Qr9tk6Uxc) diff --git a/src/data/roadmaps/backend/content/118-containerization/103-kubernetes.md b/src/data/roadmaps/backend/content/118-containerization/103-kubernetes.md index e963aa790..d13d0efb3 100644 --- a/src/data/roadmaps/backend/content/118-containerization/103-kubernetes.md +++ b/src/data/roadmaps/backend/content/118-containerization/103-kubernetes.md @@ -1,8 +1,8 @@ # Kubernetes -Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources. (similar to the Autopilot and Aquaman systems of Microsoft Azure) +Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources. (similar to the Autopilot and Aquaman systems of Microsoft Azure) -The popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues. +The popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues. Visit the following resources to learn more: diff --git a/src/data/roadmaps/backend/content/122-web-servers/index.md b/src/data/roadmaps/backend/content/122-web-servers/index.md index a3b5ef149..a03092d23 100644 --- a/src/data/roadmaps/backend/content/122-web-servers/index.md +++ b/src/data/roadmaps/backend/content/122-web-servers/index.md @@ -1,6 +1,6 @@ # Web Servers -Web servers can be either hardware or software, or perhaps a combination of the two. +Web servers can be either hardware or software, or perhaps a combination of the two. ### Hardware Side: @@ -9,7 +9,7 @@ A hardware web server is a computer that houses web server software and the file ### Software side: A software web server has a number of software components that regulate how hosted files are accessed by online users. This is at the very least an HTTP server. Software that knows and understands HTTP and URLs (web addresses) is known as an HTTP server (the protocol your browser uses to view webpages). The content of these hosted websites is sent to the end user's device through an HTTP server, which may be accessed via the domain names of the websites it holds. - + Basically, an HTTP request is made by a browser anytime it wants a file that is stored on a web server. The relevant (hardware) web server receives the request, which is then accepted by the appropriate (software) HTTP server, which then locates the requested content and returns it to the browser over HTTP. (If the server cannot locate the requested page, it responds with a 404 error.) Visit the following resources to learn more: diff --git a/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/100-graceful-degradation.md b/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/100-graceful-degradation.md index cfde2ef2f..2d294d294 100644 --- a/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/100-graceful-degradation.md +++ b/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/100-graceful-degradation.md @@ -9,4 +9,3 @@ Visit the following resources to learn more: - [What is Graceful Degradation & Why Does it Matter?](https://blog.hubspot.com/website/graceful-degradation) - [Four Considerations When Designing Systems For Graceful Degradation](https://newrelic.com/blog/best-practices/design-software-for-graceful-degradation) - [The Art of Graceful Degradation](https://farfetchtechblog.com/en/blog/post/the-art-of-failure-ii-graceful-degradation/) - diff --git a/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/101-throttling.md b/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/101-throttling.md index 7c07b4400..ec19dfe86 100644 --- a/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/101-throttling.md +++ b/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/101-throttling.md @@ -4,9 +4,9 @@ Throttling is a design pattern that is used to limit the rate at which a system There are several ways to implement throttling in a cloud environment: -* Rate limiting: This involves setting a maximum number of requests that can be made to a system or component within a specified time period. -* Resource allocation: This involves allocating a fixed amount of resources to a system or component, and then limiting the use of those resources if they are exceeded. -* Token bucket: This involves using a "bucket" of tokens to represent the available resources, and then allowing a certain number of tokens to be "consumed" by each request. When the bucket is empty, additional requests are denied until more tokens become available. +- Rate limiting: This involves setting a maximum number of requests that can be made to a system or component within a specified time period. +- Resource allocation: This involves allocating a fixed amount of resources to a system or component, and then limiting the use of those resources if they are exceeded. +- Token bucket: This involves using a "bucket" of tokens to represent the available resources, and then allowing a certain number of tokens to be "consumed" by each request. When the bucket is empty, additional requests are denied until more tokens become available. Throttling is an important aspect of cloud design, as it helps to ensure that resources are used efficiently and that the system remains stable and available. It is often used in conjunction with other design patterns, such as auto-scaling and load balancing, to provide a scalable and resilient cloud environment. diff --git a/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/102-backpressure.md b/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/102-backpressure.md index ae6d8b838..b79e090d0 100644 --- a/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/102-backpressure.md +++ b/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/102-backpressure.md @@ -4,9 +4,9 @@ Backpressure is a design pattern that is used to manage the flow of data through There are several ways to implement backpressure in a cloud environment: -* Buffering: This involves storing incoming data in a buffer until it can be processed, allowing the system to continue receiving data even if it is temporarily unable to process it. -* Batching: This involves grouping incoming data into batches and processing the batches in sequence, rather than processing each piece of data individually. -* Flow control: This involves using mechanisms such as flow control signals or windowing to regulate the rate at which data is transmitted between systems. +- Buffering: This involves storing incoming data in a buffer until it can be processed, allowing the system to continue receiving data even if it is temporarily unable to process it. +- Batching: This involves grouping incoming data into batches and processing the batches in sequence, rather than processing each piece of data individually. +- Flow control: This involves using mechanisms such as flow control signals or windowing to regulate the rate at which data is transmitted between systems. Backpressure is an important aspect of cloud design, as it helps to ensure that data is processed efficiently and that the system remains stable and available. It is often used in conjunction with other design patterns, such as auto-scaling and load balancing, to provide a scalable and resilient cloud environment. diff --git a/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/103-loadshifting.md b/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/103-loadshifting.md index 6f025198c..d881761d2 100644 --- a/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/103-loadshifting.md +++ b/src/data/roadmaps/backend/content/123-scalability/100-mitigation-strategies/103-loadshifting.md @@ -4,9 +4,9 @@ Load shifting is a design pattern that is used to manage the workload of a syste There are several ways to implement load shifting in a cloud environment: -* Scheduling: This involves scheduling the execution of tasks or workloads to occur at specific times or intervals. -* Load balancing: This involves distributing the workload of a system across multiple resources, such as servers or containers, to ensure that the workload is balanced and that resources are used efficiently. -* Auto-scaling: This involves automatically adjusting the number of resources that are available to a system based on the workload, allowing the system to scale up or down as needed. +- Scheduling: This involves scheduling the execution of tasks or workloads to occur at specific times or intervals. +- Load balancing: This involves distributing the workload of a system across multiple resources, such as servers or containers, to ensure that the workload is balanced and that resources are used efficiently. +- Auto-scaling: This involves automatically adjusting the number of resources that are available to a system based on the workload, allowing the system to scale up or down as needed. Load shifting is an important aspect of cloud design, as it helps to ensure that resources are used efficiently and that the system remains stable and available. It is often used in conjunction with other design patterns, such as throttling and backpressure, to provide a scalable and resilient cloud environment. diff --git a/src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md b/src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md index 21cef3fe2..a8ee160bf 100644 --- a/src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md +++ b/src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md @@ -8,6 +8,6 @@ Telemetry is the process of continuously collecting data from different componen Visit the following resources to learn more: -- [What is Instrumentation?](https://en.wikipedia.org/wiki/Instrumentation_(computer_programming)) +- [What is Instrumentation?]() - [What is Monitoring?](https://www.yottaa.com/performance-monitoring-backend-vs-front-end-solutions/) - [What is Telemetry?](https://www.sumologic.com/insight/what-is-telemetry/) diff --git a/src/data/roadmaps/backend/content/123-scalability/102-migration-strategies.md b/src/data/roadmaps/backend/content/123-scalability/102-migration-strategies.md index ef5547036..c5c8ae470 100644 --- a/src/data/roadmaps/backend/content/123-scalability/102-migration-strategies.md +++ b/src/data/roadmaps/backend/content/123-scalability/102-migration-strategies.md @@ -5,4 +5,3 @@ Learn how to run database migrations effectively. Especially zero downtime multi Visit the following resources to learn more: - [Databases as a Challenge for Continuous Delivery](https://phauer.com/2015/databases-challenge-continuous-delivery/) - diff --git a/src/data/roadmaps/backend/content/123-scalability/104-observability.md b/src/data/roadmaps/backend/content/123-scalability/104-observability.md index 54eaa054b..8eeaef97a 100644 --- a/src/data/roadmaps/backend/content/123-scalability/104-observability.md +++ b/src/data/roadmaps/backend/content/123-scalability/104-observability.md @@ -12,4 +12,4 @@ Visit the following resources to learn more: - [AWS CloudWatch Docs](https://aws.amazon.com/cloudwatch/getting-started/) - [Sentry Docs](https://docs.sentry.io/) - [AWS re:Invent 2017: Improving Microservice and Serverless Observability with Monitor](https://www.youtube.com/watch?v=Wx0SHRb2xcI) -- [Observability and Instrumentation: What They Are and Why They Matter](https://newrelic.com/blog/best-practices/observability-instrumentation) \ No newline at end of file +- [Observability and Instrumentation: What They Are and Why They Matter](https://newrelic.com/blog/best-practices/observability-instrumentation) diff --git a/src/data/roadmaps/backend/content/123-scalability/index.md b/src/data/roadmaps/backend/content/123-scalability/index.md index 4cb1eac1a..255e672ad 100644 --- a/src/data/roadmaps/backend/content/123-scalability/index.md +++ b/src/data/roadmaps/backend/content/123-scalability/index.md @@ -1,20 +1,21 @@ # 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. +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. +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. +- 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. Visit the following resources to learn more: - [Scalable Architecture: A Definition and How-To Guide](https://www.sentinelone.com/blog/scalable-architecture/) -- [Scaling Distributed Systems - Software Architecture Introduction](https://www.youtube.com/watch?v=gxfERVP18-g) \ No newline at end of file +- [Scaling Distributed Systems - Software Architecture Introduction](https://www.youtube.com/watch?v=gxfERVP18-g) diff --git a/src/data/roadmaps/blockchain/blockchain.md b/src/data/roadmaps/blockchain/blockchain.md index efca60ac7..bdeadc91a 100644 --- a/src/data/roadmaps/blockchain/blockchain.md +++ b/src/data/roadmaps/blockchain/blockchain.md @@ -1,67 +1,66 @@ --- -jsonUrl: "/jsons/roadmaps/blockchain.json" -pdfUrl: "/pdfs/roadmaps/blockchain.pdf" +jsonUrl: '/jsons/roadmaps/blockchain.json' +pdfUrl: '/pdfs/roadmaps/blockchain.pdf' order: 6 -briefTitle: "Blockchain" -briefDescription: "Step by step guide to becoming a blockchain developer in 2023" -title: "Blockchain Developer" -description: "Step by step guide to becoming a blockchain developer in 2023." +briefTitle: 'Blockchain' +briefDescription: 'Step by step guide to becoming a blockchain developer in 2023' +title: 'Blockchain Developer' +description: 'Step by step guide to becoming a blockchain developer in 2023.' isNew: false hasTopics: true dimensions: width: 968 height: 2173.87 schema: - headline: "Blockchain Developer Roadmap" - description: "Learn how to become a Blockchain Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/blockchain.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Blockchain Developer Roadmap' + description: 'Learn how to become a Blockchain Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/blockchain.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Blockchain Developer Roadmap: Learn to become a blockchain developer" - description: "Learn to become a blockchain developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern backend development." + title: 'Blockchain Developer Roadmap: Learn to become a blockchain developer' + description: 'Learn to become a blockchain developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern backend development.' keywords: - - "blockchain roadmap 2023" - - "web3 developer roadmap" - - "web3 developer roadmap 2023" - - "web3 roadmap" - - "blockchain developer roadmap 2023" - - "guide to becoming a blockchain developer" - - "guide to becoming a blockchain developer" - - "blockchain roadmap" - - "blockchain developer" - - "blockchain engineer" - - "blockchain skills" - - "blockchain development" - - "javascript developer" - - "blockchain development skills" - - "blockchain development skills test" - - "blockchain engineer roadmap" - - "blockchain developer roadmap" - - "become a blockchain developer" - - "blockchain developer career path" - - "javascript developer" - - "modern javascript developer" - - "node developer" - - "skills for blockchain development" - - "learn blockchain development" - - "what is blockchain development" - - "blockchain developer quiz" - - "blockchain developer interview questions" + - 'blockchain roadmap 2023' + - 'web3 developer roadmap' + - 'web3 developer roadmap 2023' + - 'web3 roadmap' + - 'blockchain developer roadmap 2023' + - 'guide to becoming a blockchain developer' + - 'guide to becoming a blockchain developer' + - 'blockchain roadmap' + - 'blockchain developer' + - 'blockchain engineer' + - 'blockchain skills' + - 'blockchain development' + - 'javascript developer' + - 'blockchain development skills' + - 'blockchain development skills test' + - 'blockchain engineer roadmap' + - 'blockchain developer roadmap' + - 'become a blockchain developer' + - 'blockchain developer career path' + - 'javascript developer' + - 'modern javascript developer' + - 'node developer' + - 'skills for blockchain development' + - 'learn blockchain development' + - 'what is blockchain development' + - 'blockchain developer quiz' + - 'blockchain developer interview questions' relatedRoadmaps: - - "frontend" - - "backend" - - "javascript" - - "nodejs" - - "react" - - "vue" - - "angular" + - 'frontend' + - 'backend' + - 'javascript' + - 'nodejs' + - 'react' + - 'vue' + - 'angular' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- - diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/102-decentralization-vs-trust.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/102-decentralization-vs-trust.md index 510befc39..a954fcc73 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/102-decentralization-vs-trust.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/102-decentralization-vs-trust.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [What Crypto Is Really About](https://blog.chain.link/what-crypto-is-really-about/) - [Ethereum Consensus Mechanisms](https://ethereum.org/en/developers/docs/consensus-mechanisms/) -- [The Superiority of Cryptographic Truth](https://youtu.be/AEtBPbmIRKQ) \ No newline at end of file +- [The Superiority of Cryptographic Truth](https://youtu.be/AEtBPbmIRKQ) diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md index 53d6a9946..5e250a35b 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md @@ -4,6 +4,6 @@ A fork happens whenever a community makes a change to the blockchain’s protoco Visit the following resources to learn more: -- [Blockchain Fork](https://en.wikipedia.org/wiki/Fork_(blockchain)) +- [Blockchain Fork]() - [What is a fork?](https://www.coinbase.com/learn/crypto-basics/what-is-a-fork) - [What Is a Hard Fork?](https://www.investopedia.com/terms/h/hard-fork.asp) diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/104-cryptocurrencies.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/104-cryptocurrencies.md index c47208928..8e4770e44 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/104-cryptocurrencies.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/104-cryptocurrencies.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [What Is Cryptocurrency?](https://www.investopedia.com/terms/c/cryptocurrency.asp) - [Cryptocurrency: What It Is and How It Works](https://www.nerdwallet.com/article/investing/cryptocurrency) -- [How Cryptocurrency actually works.](https://youtu.be/rYQgy8QDEBI) \ No newline at end of file +- [How Cryptocurrency actually works.](https://youtu.be/rYQgy8QDEBI) diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/106-cryptography.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/106-cryptography.md index 001b57221..37cfc69af 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/106-cryptography.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/106-cryptography.md @@ -1,6 +1,6 @@ # Cryptography -Cryptography, or cryptology, is the practice and study of techniques for secure communication in the presence of adversarial behavior. +Cryptography, or cryptology, is the practice and study of techniques for secure communication in the presence of adversarial behavior. Visit the following resources to learn more: diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md index f20352e1e..f57e74f55 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md @@ -1,6 +1,6 @@ # Consensus protocols -Consensus for blockchain is a procedure in which the peers of a Blockchain network reach agreement about the present state of the data in the network. Through this, consensus algorithms establish reliability and trust in the Blockchain network. +Consensus for blockchain is a procedure in which the peers of a Blockchain network reach agreement about the present state of the data in the network. Through this, consensus algorithms establish reliability and trust in the Blockchain network. Visit the following resources to learn more: diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/108-blockchain-interoperability.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/108-blockchain-interoperability.md index 93fe0798c..8867a3c0d 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/108-blockchain-interoperability.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/108-blockchain-interoperability.md @@ -1,6 +1,6 @@ # Blockchain interoperability -The concept of “blockchain interoperability” refers to the ability of different blockchain networks to exchange and leverage data between one another and to move unique types of digital assets between the networks’ respective blockchains. +The concept of “blockchain interoperability” refers to the ability of different blockchain networks to exchange and leverage data between one another and to move unique types of digital assets between the networks’ respective blockchains. Visit the following resources to learn more: diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/101-ton.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/101-ton.md index 266fc7729..9933eeec2 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/101-ton.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/101-ton.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [TON Telegram integration highlights synergy of blockchain community](https://cointelegraph.com/news/ton-telegram-integration-highlights-synergy-of-blockchain-community) - [Start building on The Open Network](https://ton.org/dev) - [TON Introduction](https://ton.org/docs/learn/introduction) -- [Blockchain analysis](https://ton.org/analysis) \ No newline at end of file +- [Blockchain analysis](https://ton.org/analysis) diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/avalanche.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/avalanche.md index dc3aaa488..f3216fa0d 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/avalanche.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/avalanche.md @@ -1,6 +1,6 @@ # Avalanche -Avalanche describes itself as an “open, programmable smart contracts platform for decentralized applications.” What does that mean? Like many other decentralized protocols, Avalanche has its own token called AVAX, which is used to pay transaction fees and can be staked to secure the network. +Avalanche describes itself as an “open, programmable smart contracts platform for decentralized applications.” What does that mean? Like many other decentralized protocols, Avalanche has its own token called AVAX, which is used to pay transaction fees and can be staked to secure the network. Visit the following resources to learn more: diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/fantom.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/fantom.md index 738415b75..e238fd260 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/fantom.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/fantom.md @@ -5,4 +5,4 @@ Fantom is a decentralized, open-source smart contract platform that supports dec Visit the following resources to learn more: - [Fantom whitepaper](https://arxiv.org/pdf/1810.10360.pdf) -- [Fantom overview](https://docs.fantom.foundation/ ) +- [Fantom overview](https://docs.fantom.foundation/) diff --git a/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/100-solidity.md b/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/100-solidity.md index 45e4966f3..e12b3e036 100644 --- a/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/100-solidity.md +++ b/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/100-solidity.md @@ -2,8 +2,8 @@ Solidity is an object-oriented programming language created specifically by Ethereum Network team for constructing smart contracts on various blockchain platforms, most notably, Ethereum. -* It's used to create smart contracts that implements business logic and generate a chain of transaction records in the blockchain system. -* It acts as a tool for creating machine-level code and compiling it on the Ethereum Vitural Machine (EVM). +- It's used to create smart contracts that implements business logic and generate a chain of transaction records in the blockchain system. +- It acts as a tool for creating machine-level code and compiling it on the Ethereum Vitural Machine (EVM). Like any other programming languages, Solidity also has variables, functions, classes, arithmetic operations, string manipulation, and many more. diff --git a/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/101-vyper.md b/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/101-vyper.md index 922e5a79b..d9272738d 100644 --- a/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/101-vyper.md +++ b/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/101-vyper.md @@ -5,4 +5,4 @@ Vyper is a contract-oriented, pythonic programming language that targets the Eth Visit the following resources to learn more: - [Vyper Programming Language](https://vyper.readthedocs.io/en/stable/) -- [Learn Vyper in Y Minutes](https://learnxinyminutes.com/docs/vyper/) \ No newline at end of file +- [Learn Vyper in Y Minutes](https://learnxinyminutes.com/docs/vyper/) diff --git a/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/102-rust.md b/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/102-rust.md index 592c0e289..40a3b5b03 100644 --- a/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/102-rust.md +++ b/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/102-rust.md @@ -5,4 +5,4 @@ Rust is a multi-paradigm, general-purpose programming language. Rust emphasizes Visit the following resources to learn more: - [Rust Programming Language](https://www.rust-lang.org/) -- [How to write and deploy a smart contract in Rust](https://learn.figment.io/tutorials/write-and-deploy-a-smart-contract-on-near) \ No newline at end of file +- [How to write and deploy a smart contract in Rust](https://learn.figment.io/tutorials/write-and-deploy-a-smart-contract-on-near) diff --git a/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/index.md b/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/index.md index 8c1edbbe8..a13226a57 100644 --- a/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/index.md +++ b/src/data/roadmaps/blockchain/content/103-smart-contracts/100-programming-languages/index.md @@ -4,4 +4,4 @@ Smart contracts can be programmed using relatively developer-friendly languages. Visit the following resources to learn more: -- [Smart Contract Languages](https://ethereum.org/en/developers/docs/smart-contracts/languages/) \ No newline at end of file +- [Smart Contract Languages](https://ethereum.org/en/developers/docs/smart-contracts/languages/) diff --git a/src/data/roadmaps/blockchain/content/103-smart-contracts/101-testing/index.md b/src/data/roadmaps/blockchain/content/103-smart-contracts/101-testing/index.md index d17940efb..6ef6c33f0 100644 --- a/src/data/roadmaps/blockchain/content/103-smart-contracts/101-testing/index.md +++ b/src/data/roadmaps/blockchain/content/103-smart-contracts/101-testing/index.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Testing Smart Contracts](https://ethereum.org/en/developers/docs/smart-contracts/testing/) - [How to Test Ethereum Smart Contracts](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) -- [Writing automated smart contract tests](https://docs.openzeppelin.com/learn/writing-automated-tests) \ No newline at end of file +- [Writing automated smart contract tests](https://docs.openzeppelin.com/learn/writing-automated-tests) diff --git a/src/data/roadmaps/blockchain/content/103-smart-contracts/index.md b/src/data/roadmaps/blockchain/content/103-smart-contracts/index.md index 3274a014f..5e65578fe 100644 --- a/src/data/roadmaps/blockchain/content/103-smart-contracts/index.md +++ b/src/data/roadmaps/blockchain/content/103-smart-contracts/index.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Smart Contracts Introduction](https://www.blockchain.education/blockchain101/smart-contracts) - [What Is a Smart Contract?](https://chain.link/education/smart-contracts) -- [Smart contracts - Simply Explained](https://youtu.be/ZE2HxTmxfrI) \ No newline at end of file +- [Smart contracts - Simply Explained](https://youtu.be/ZE2HxTmxfrI) diff --git a/src/data/roadmaps/blockchain/content/104-smart-contract-frameworks/100-hardhat.md b/src/data/roadmaps/blockchain/content/104-smart-contract-frameworks/100-hardhat.md index aa24c2650..03783f3e0 100644 --- a/src/data/roadmaps/blockchain/content/104-smart-contract-frameworks/100-hardhat.md +++ b/src/data/roadmaps/blockchain/content/104-smart-contract-frameworks/100-hardhat.md @@ -5,4 +5,4 @@ Hardhat is an Ethereum development environment. It allows users to compile contr Visit the following resources to learn more: - [Hardhat Overview](https://hardhat.org/hardhat-runner/docs/getting-started#overview) -- [Build and Deploy Smart Contracts using Hardhat](https://youtu.be/GBc3lBrXEBo) \ No newline at end of file +- [Build and Deploy Smart Contracts using Hardhat](https://youtu.be/GBc3lBrXEBo) diff --git a/src/data/roadmaps/blockchain/content/104-smart-contract-frameworks/103-foundry.md b/src/data/roadmaps/blockchain/content/104-smart-contract-frameworks/103-foundry.md index 62b4ced9d..ce807b8b4 100644 --- a/src/data/roadmaps/blockchain/content/104-smart-contract-frameworks/103-foundry.md +++ b/src/data/roadmaps/blockchain/content/104-smart-contract-frameworks/103-foundry.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Foundry Overview](https://book.getfoundry.sh/) - [Intro to Foundry](https://youtu.be/fNMfMxGxeag) - diff --git a/src/data/roadmaps/blockchain/content/105-blockchain-security/100-practices/100-fuzz-testing-and-static-analysis.md b/src/data/roadmaps/blockchain/content/105-blockchain-security/100-practices/100-fuzz-testing-and-static-analysis.md index 45d509b94..f50fdbdff 100644 --- a/src/data/roadmaps/blockchain/content/105-blockchain-security/100-practices/100-fuzz-testing-and-static-analysis.md +++ b/src/data/roadmaps/blockchain/content/105-blockchain-security/100-practices/100-fuzz-testing-and-static-analysis.md @@ -1,11 +1,11 @@ # Fuzz Testing and Static Analysis - Fuzzing or fuzz testing is an automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a smart contract. +Fuzzing or fuzz testing is an automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a smart contract. - Static analysis is the analysis of smart contracts performed without executing them. +Static analysis is the analysis of smart contracts performed without executing them. - Visit the following resources to learn more: +Visit the following resources to learn more: - [Getting Started with Smart Contract Fuzzing](https://www.immunebytes.com/blog/getting-started-with-smart-contract-fuzzing/) - [Solidity smart contract Static Code Analysis](https://lightrains.com/blogs/solidity-static-analysis-tools/#static-code-analysis) -- [Smart contract Fuzzing](https://youtu.be/LRyyNzrqgOc) \ No newline at end of file +- [Smart contract Fuzzing](https://youtu.be/LRyyNzrqgOc) diff --git a/src/data/roadmaps/blockchain/content/105-blockchain-security/100-practices/index.md b/src/data/roadmaps/blockchain/content/105-blockchain-security/100-practices/index.md index 0c13bc5b5..5e772b57d 100644 --- a/src/data/roadmaps/blockchain/content/105-blockchain-security/100-practices/index.md +++ b/src/data/roadmaps/blockchain/content/105-blockchain-security/100-practices/index.md @@ -5,4 +5,4 @@ Smart contract programming requires a different engineering mindset. The cost of Visit the following resources to learn more: - [Ethereum Smart Contract Security Best Practices](https://consensys.github.io/smart-contract-best-practices/) -- [Smart Contract Security and Auditing 101](https://youtu.be/0aJfCug1zTM) \ No newline at end of file +- [Smart Contract Security and Auditing 101](https://youtu.be/0aJfCug1zTM) diff --git a/src/data/roadmaps/blockchain/content/105-blockchain-security/101-tools/103-echidna.md b/src/data/roadmaps/blockchain/content/105-blockchain-security/101-tools/103-echidna.md index a5936f961..3e28dc3c9 100644 --- a/src/data/roadmaps/blockchain/content/105-blockchain-security/101-tools/103-echidna.md +++ b/src/data/roadmaps/blockchain/content/105-blockchain-security/101-tools/103-echidna.md @@ -1,6 +1,6 @@ # Echidna -Echidna is a Haskell program designed for fuzzing/property-based testing of Ethereum smarts contracts. It uses sophisticated grammar-based fuzzing campaigns based on a contract ABI to falsify user-defined predicates or Solidity assertions. +Echidna is a Haskell program designed for fuzzing/property-based testing of Ethereum smarts contracts. It uses sophisticated grammar-based fuzzing campaigns based on a contract ABI to falsify user-defined predicates or Solidity assertions. Visit the following resources to learn more: diff --git a/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/100-react.md b/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/100-react.md index 83adaaa61..12328c89c 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/100-react.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/100-react.md @@ -10,4 +10,4 @@ Visit the following resources to learn more: - [The Beginners Guide to React](https://egghead.io/courses/the-beginner-s-guide-to-react) - [React JS Course for Beginners](https://www.youtube.com/watch?v=nTeuhbP7wdE) - [React Course - Beginners Tutorial for React JavaScript Library [2022]](https://www.youtube.com/watch?v=bMknfKXIFA8) -- [Understanding Reacts UI Rendering Process](https://www.youtube.com/watch?v=i793Qm6kv3U) \ No newline at end of file +- [Understanding Reacts UI Rendering Process](https://www.youtube.com/watch?v=i793Qm6kv3U) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/101-angular.md b/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/101-angular.md index d381075ab..cc84cc3de 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/101-angular.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/101-angular.md @@ -5,4 +5,4 @@ Angular is a component based front-end development framework built on TypeScript Visit the following resources to learn more: - [Visit Dedicated Angular Roadmap](/angular) -- [Official - Getting started with Angular](https://angular.io/start) \ No newline at end of file +- [Official - Getting started with Angular](https://angular.io/start) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/102-vue.md b/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/102-vue.md index 4dd82aacf..930e0a6fa 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/102-vue.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/102-vue.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [Vue.js Website](https://vuejs.org/) - [Official Getting Started](https://vuejs.org/v2/guide/) - [Vue.js Course for Beginners](https://www.youtube.com/watch?v=FXpIoQ_rT_c) -- [Vue.js Crash Course](https://www.youtube.com/watch?v=qZXt1Aom3Cs) \ No newline at end of file +- [Vue.js Crash Course](https://www.youtube.com/watch?v=qZXt1Aom3Cs) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/index.md b/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/index.md index ec62c34a2..f0a3831da 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/index.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/100-frontend-frameworks/index.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Web3 Frontend – Everything You Need to Learn About Building Dapp Frontends](https://moralis.io/web3-frontend-everything-you-need-to-learn-about-building-dapp-frontends/) - [What is the difference between a framework and a library?](https://www.youtube.com/watch?v=D_MO9vIRBcA) -- [ Which JS Framework is best?](https://www.youtube.com/watch?v=cuHDQhDhvPE) \ No newline at end of file +- [ Which JS Framework is best?](https://www.youtube.com/watch?v=cuHDQhDhvPE) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/100-testing.md b/src/data/roadmaps/blockchain/content/109-dapps/100-testing.md index 69730831a..3b1f7ef5a 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/100-testing.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/100-testing.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [What is Software Testing?](https://www.guru99.com/software-testing-introduction-importance.html) - [Testing Pyramid](https://www.browserstack.com/guide/testing-pyramid-for-test-automation) -- [How to test dApps (decentralized applications)](https://rhian-is.medium.com/how-to-test-dapps-decentralized-applications-4662cf61db90) \ No newline at end of file +- [How to test dApps (decentralized applications)](https://rhian-is.medium.com/how-to-test-dapps-decentralized-applications-4662cf61db90) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/103-architecture.md b/src/data/roadmaps/blockchain/content/109-dapps/103-architecture.md index cf7429227..3f3205eb5 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/103-architecture.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/103-architecture.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [The Architecture of a Web 3.0 application](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - [Decentralized Applications Architecture: Back End, Security and Design Patterns](https://www.freecodecamp.org/news/how-to-design-a-secure-backend-for-your-decentralized-application-9541b5d8bddb/) -- [Blockchain Development: Dapp Architecture](https://youtu.be/KBSq8-LnUDI?t=286) \ No newline at end of file +- [Blockchain Development: Dapp Architecture](https://youtu.be/KBSq8-LnUDI?t=286) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/104-security.md b/src/data/roadmaps/blockchain/content/109-dapps/104-security.md index 1717af7b3..3eba95b1e 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/104-security.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/104-security.md @@ -1,6 +1,6 @@ # Security -dApps face unique security challenges as they run on immutable blockchains. dApps are harder to maintain, and developers cannot modify or update their codes once deployed. Therefore, special consideration must be taken before putting it on the blockchain. +dApps face unique security challenges as they run on immutable blockchains. dApps are harder to maintain, and developers cannot modify or update their codes once deployed. Therefore, special consideration must be taken before putting it on the blockchain. Visit the following resources to learn more: diff --git a/src/data/roadmaps/blockchain/content/109-dapps/106-node-as-a-service/103-quicknode.md b/src/data/roadmaps/blockchain/content/109-dapps/106-node-as-a-service/103-quicknode.md index 6ec39b217..eba53b149 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/106-node-as-a-service/103-quicknode.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/106-node-as-a-service/103-quicknode.md @@ -4,4 +4,4 @@ QuickNode is a Web3 developer platform used to build and scale blockchain applic Visit the following resources to learn more: -- [Quicknode official site](https://www.quicknode.com/) \ No newline at end of file +- [Quicknode official site](https://www.quicknode.com/) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/106-node-as-a-service/index.md b/src/data/roadmaps/blockchain/content/109-dapps/106-node-as-a-service/index.md index 86b1f1c8e..a13062549 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/106-node-as-a-service/index.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/106-node-as-a-service/index.md @@ -1,6 +1,6 @@ # Node as a Service (NaaS) -Running your own blockchain node can be challenging, especially when getting started or while scaling fast. There are a number of services that run optimized node infrastructures for you, so you can focus on developing your application or product instead. +Running your own blockchain node can be challenging, especially when getting started or while scaling fast. There are a number of services that run optimized node infrastructures for you, so you can focus on developing your application or product instead. Visit the following resources to learn more: diff --git a/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/100-javascript.md b/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/100-javascript.md index ec69d0d03..87777b0d0 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/100-javascript.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/100-javascript.md @@ -11,4 +11,4 @@ Visit the following resources to learn more: - [JavaScript Crash Course for Beginners](https://youtu.be/hdI2bqOjy3c) - [Node.js Crash Course](https://www.youtube.com/watch?v=fBNz5xF-Kx4) - [Node.js Tutorial for Beginners](https://www.youtube.com/watch?v=TlB_eWDSMt4) -- [Codecademy - Learn JavaScript](https://www.codecademy.com/learn/introduction-to-javascript) \ No newline at end of file +- [Codecademy - Learn JavaScript](https://www.codecademy.com/learn/introduction-to-javascript) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/102-go.md b/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/102-go.md index b8c7d7047..831974b11 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/102-go.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/102-go.md @@ -9,4 +9,4 @@ Visit the following resources to learn more: - [Go Reference Documentation](https://go.dev/doc/) - [Go by Example - annotated example programs](https://gobyexample.com/) - [Learn Go | Codecademy](https://www.codecademy.com/learn/learn-go) -- [W3Schools Go Tutorial ](https://www.w3schools.com/go/) \ No newline at end of file +- [W3Schools Go Tutorial ](https://www.w3schools.com/go/) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/index.md b/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/index.md index ec749399c..7ba868c49 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/index.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/107-supporting-languages/index.md @@ -1,4 +1,3 @@ # Supporting Languages While the bulk of the logic in blockchain applications is handled by smart contracts, all the surrounding services that support those smart contracts (frontend, monitoring, etc.) are often written in other languages. - diff --git a/src/data/roadmaps/blockchain/content/109-dapps/108-client-libraries/101-web3-js.md b/src/data/roadmaps/blockchain/content/109-dapps/108-client-libraries/101-web3-js.md index 4748f700b..b3e887494 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/108-client-libraries/101-web3-js.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/108-client-libraries/101-web3-js.md @@ -4,4 +4,4 @@ web3.js is a collection of libraries that allow you to interact with a local or Visit the following resources to learn more: -- [web3.js Documentation](https://web3js.readthedocs.io/) \ No newline at end of file +- [web3.js Documentation](https://web3js.readthedocs.io/) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/109-client-nodes/103-substrate.md b/src/data/roadmaps/blockchain/content/109-dapps/109-client-nodes/103-substrate.md index 2224d14be..666851151 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/109-client-nodes/103-substrate.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/109-client-nodes/103-substrate.md @@ -1,7 +1,7 @@ # Substrate -Substrate is a Software Development Kit (SDK) specifically designed to provide you with all of the fundamental components s blockchain requires so you can focus on crafting the logic that makes your chain unique and innovative. +Substrate is a Software Development Kit (SDK) specifically designed to provide you with all of the fundamental components s blockchain requires so you can focus on crafting the logic that makes your chain unique and innovative. Visit the following resources to learn more: -- [Substrate Documentation](https://docs.substrate.io/quick-start/) \ No newline at end of file +- [Substrate Documentation](https://docs.substrate.io/quick-start/) diff --git a/src/data/roadmaps/blockchain/content/109-dapps/109-client-nodes/index.md b/src/data/roadmaps/blockchain/content/109-dapps/109-client-nodes/index.md index 82c765bbc..7357fffe1 100644 --- a/src/data/roadmaps/blockchain/content/109-dapps/109-client-nodes/index.md +++ b/src/data/roadmaps/blockchain/content/109-dapps/109-client-nodes/index.md @@ -1,4 +1,3 @@ # Client Nodes A blockchain is a distributed network of computers (known as nodes) running software that can verify blocks and transaction data. The software application, known as a client, must be run on your computer to turn it into a blockchain node. - diff --git a/src/data/roadmaps/blockchain/content/110-building-for-scale/101-optimistic-rollups-and-fraud-proofs.md b/src/data/roadmaps/blockchain/content/110-building-for-scale/101-optimistic-rollups-and-fraud-proofs.md index e12362e35..d8f9b6713 100644 --- a/src/data/roadmaps/blockchain/content/110-building-for-scale/101-optimistic-rollups-and-fraud-proofs.md +++ b/src/data/roadmaps/blockchain/content/110-building-for-scale/101-optimistic-rollups-and-fraud-proofs.md @@ -1,9 +1,9 @@ # Optimistic Rollups and Fraud Proofs -‍Optimistic rollups are a layer 2 (L2) construction that improves throughput and latency on Ethereum’s base layer by moving computation and data storage off-chain. An optimistic rollup processes transactions outside of Ethereum Mainnet, reducing congestion on the base layer and improving scalability. +‍Optimistic rollups are a layer 2 (L2) construction that improves throughput and latency on Ethereum’s base layer by moving computation and data storage off-chain. An optimistic rollup processes transactions outside of Ethereum Mainnet, reducing congestion on the base layer and improving scalability. Optimistic rollups allow anyone to publish blocks without providing proofs of validity. However, to ensure the chain remains safe, optimistic rollups specify a time window during which anyone can dispute a state transition. Visit the following resources to learn more: -- [How Do Optimistic Rollups Work (The Complete Guide)](https://www.alchemy.com/overviews/optimistic-rollups) \ No newline at end of file +- [How Do Optimistic Rollups Work (The Complete Guide)](https://www.alchemy.com/overviews/optimistic-rollups) diff --git a/src/data/roadmaps/computer-science/computer-science.md b/src/data/roadmaps/computer-science/computer-science.md index b5d20d59d..fdc77cddc 100644 --- a/src/data/roadmaps/computer-science/computer-science.md +++ b/src/data/roadmaps/computer-science/computer-science.md @@ -1,53 +1,52 @@ --- -jsonUrl: "/jsons/roadmaps/computer-science.json" -pdfUrl: "/pdfs/roadmaps/computer-science.pdf" +jsonUrl: '/jsons/roadmaps/computer-science.json' +pdfUrl: '/pdfs/roadmaps/computer-science.pdf' order: 1 -briefTitle: "Computer Science" -briefDescription: "Curriculum with free resources for a self-taught developer." -title: "Computer Science" -description: "Computer Science curriculum with free resources for a self-taught developer." +briefTitle: 'Computer Science' +briefDescription: 'Curriculum with free resources for a self-taught developer.' +title: 'Computer Science' +description: 'Computer Science curriculum with free resources for a self-taught developer.' isNew: true hasTopics: true dimensions: width: 968 height: 3009.05 schema: - headline: "Computer Science Roadmap" - description: "Computer Science roadmap for the self-taught developers and bootcamp grads. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/computer-science.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Computer Science Roadmap' + description: 'Computer Science roadmap for the self-taught developers and bootcamp grads. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/computer-science.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Computer Science Roadmap: Curriculum for the self taught developer" - description: "Computer Science study plan with free resources for the self-taught and bootcamp grads wanting to learn Computer Science." + title: 'Computer Science Roadmap: Curriculum for the self taught developer' + description: 'Computer Science study plan with free resources for the self-taught and bootcamp grads wanting to learn Computer Science.' keywords: - - "computer science roadmap" - - "computer science" - - "computer science roadmap 2023" - - "guide to computer science" - - "software engineer roadmap" - - "software engineer roadmap 2023" - - "self-taught computer science roadmap" - - "computer science skills" - - "computer science skills test" - - "cs roadmap" - - "computer science curriculum" - - "cs curriculum" - - "skills for computer science" - - "what is computer science" - - "computer science quiz" - - "computer science interview questions" + - 'computer science roadmap' + - 'computer science' + - 'computer science roadmap 2023' + - 'guide to computer science' + - 'software engineer roadmap' + - 'software engineer roadmap 2023' + - 'self-taught computer science roadmap' + - 'computer science skills' + - 'computer science skills test' + - 'cs roadmap' + - 'computer science curriculum' + - 'cs curriculum' + - 'skills for computer science' + - 'what is computer science' + - 'computer science quiz' + - 'computer science interview questions' relatedRoadmaps: - - "frontend" - - "backend" - - "devops" - - "software-design-architecture" + - 'frontend' + - 'backend' + - 'devops' + - 'software-design-architecture' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/computer-science/content/100-roadmap-note.md b/src/data/roadmaps/computer-science/content/100-roadmap-note.md index 2660b7fa5..3334522ff 100644 --- a/src/data/roadmaps/computer-science/content/100-roadmap-note.md +++ b/src/data/roadmaps/computer-science/content/100-roadmap-note.md @@ -2,7 +2,6 @@ Please note that this is a study plan for software engineering, not web development, we have [separate roadmaps for web development](/), if you are interested. -It's not an exhaustive list and is a highly opinionated list of topics. The roadmap is still a work in progress and we will continue to improve it further. I would love to hear your feedback and suggestions for improving this roadmap. +It's not an exhaustive list and is a highly opinionated list of topics. The roadmap is still a work in progress and we will continue to improve it further. I would love to hear your feedback and suggestions for improving this roadmap. Please [create an issue with your suggestions](https://github.com/kamranahmedse/developer-roadmap/issues) or [reach out to me on twitter](https://twitter.com/kamranahmedse) with your feedback and suggestions for improving this roadmap further. - diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/index.md b/src/data/roadmaps/computer-science/content/101-pick-a-language/index.md index cf097052e..760d894ad 100644 --- a/src/data/roadmaps/computer-science/content/101-pick-a-language/index.md +++ b/src/data/roadmaps/computer-science/content/101-pick-a-language/index.md @@ -2,8 +2,8 @@ You need to pick a programming language to learn the Computer Science concepts. My personal recommendation would be to pick C++ or C and the reason for that is: -* They allow you to deal with pointers and memory allocation/deallocation, so you feel the data structures and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. -* You will be able to find a lot of resources for the topics listed in this roadmap using C or C++. You can find a lot of resources for Python and Java, but they are not as abundant as C++ and C. +- They allow you to deal with pointers and memory allocation/deallocation, so you feel the data structures and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. +- You will be able to find a lot of resources for the topics listed in this roadmap using C or C++. You can find a lot of resources for Python and Java, but they are not as abundant as C++ and C. Given below is the list of resources; pick ones relevant to the language of your choice. diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/102-stack.md b/src/data/roadmaps/computer-science/content/102-data-structures/102-stack.md index aa5b2a434..b176921b0 100644 --- a/src/data/roadmaps/computer-science/content/102-data-structures/102-stack.md +++ b/src/data/roadmaps/computer-science/content/102-data-structures/102-stack.md @@ -7,6 +7,3 @@ Visit the following resources to learn more: - [Stack Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=I5lq6sCuABE) - [Stack in 3 minutes](https://www.youtube.com/watch?v=KcT3aVgrrpU) - [Stack Data Structure](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - - diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/103-queue.md b/src/data/roadmaps/computer-science/content/102-data-structures/103-queue.md index 68252c09b..8b31b26cf 100644 --- a/src/data/roadmaps/computer-science/content/102-data-structures/103-queue.md +++ b/src/data/roadmaps/computer-science/content/102-data-structures/103-queue.md @@ -8,5 +8,3 @@ Visit the following resources to learn more: - [Queue in 3 Minutes](https://www.youtube.com/watch?v=D6gu-_tmEpQ) - [Queues - Coursera](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [Circular Buffer - Wikipedia](https://en.wikipedia.org/wiki/Circular_buffer) - - diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/103-graph-representation.md b/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/103-graph-representation.md index 7af47b5a2..45d951d48 100644 --- a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/103-graph-representation.md +++ b/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/103-graph-representation.md @@ -1,8 +1,8 @@ # Graph Representation -A graph can either be represented as an adjacency matrix or an adjacency list. +A graph can either be represented as an adjacency matrix or an adjacency list. -The adjacency matrix is a 2D array of size `V x V` where `V` is the number of vertices in a graph. Let the 2D array be `adj[][]`, a slot `adj[i][j] = 1` indicates that there is an edge from vertex `i` to vertex `j`. +The adjacency matrix is a 2D array of size `V x V` where `V` is the number of vertices in a graph. Let the 2D array be `adj[][]`, a slot `adj[i][j] = 1` indicates that there is an edge from vertex `i` to vertex `j`. Adjacency list is an array of vectors. Size of the array is equal to the number of vertices. Let the array be `array[]`. An entry `array[i]` represents the list of vertices adjacent to the ith vertex. This representation can also be used to represent a weighted graph. The weights of edges can be represented as lists of pairs. diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/index.md b/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/index.md index cc7484e12..5165cb2ae 100644 --- a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/index.md +++ b/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/index.md @@ -13,4 +13,3 @@ Visit the following resources to learn more: - [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (cont)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) - [CSE373 2020 - Lecture 15 - Graph Algorithms (cont 2)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) - [6.006 Single-Source Shortest Paths Problem](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/100-big-o-notation.md b/src/data/roadmaps/computer-science/content/103-asymptotic-notation/100-big-o-notation.md index 058b413a4..d7da55f7c 100644 --- a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/100-big-o-notation.md +++ b/src/data/roadmaps/computer-science/content/103-asymptotic-notation/100-big-o-notation.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [Big O Notations](https://www.youtube.com/watch?v=V6mKVRU1evU) - [moviesCS 61B Lecture 19: Asymptotic Analysis](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) - [Big Oh Notation (and Omega and Theta)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN&index=3) - diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/index.md b/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/index.md index 39662e36c..5427123d8 100644 --- a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/index.md +++ b/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/index.md @@ -2,15 +2,15 @@ Given below is the list of common algorithmic runtimes. The runtimes are listed in ascending order of their complexity. -* O(1) - Constant -* O(log n) - Logarithmic -* O(n) - Linear -* O(n log n) - Linearithmic -* O(n^2) - Quadratic -* O(n^3) - Cubic -* O(2^n) - Exponential -* O(n!) - Factorial -* O(n^n) - Polynomial +- O(1) - Constant +- O(log n) - Logarithmic +- O(n) - Linear +- O(n log n) - Linearithmic +- O(n^2) - Quadratic +- O(n^3) - Cubic +- O(2^n) - Exponential +- O(n!) - Factorial +- O(n^n) - Polynomial Visit the following resources to learn more: diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/103-heap-sort.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/103-heap-sort.md index 4ebc20c3e..b27bce7db 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/103-heap-sort.md +++ b/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/103-heap-sort.md @@ -10,8 +10,3 @@ Visit the following resources to learn more: - [Heap Sort Algorithm - MIT](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291s) - [Heap Sort Algorithm](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) - [Lecture 4 - Heaps and Heap Sort](https://www.youtube.com/watch?v=B7hVxCmfPtM&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=5) - - - - - diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/100-breadth-first-search.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/100-breadth-first-search.md index e3a4e7105..267554742 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/100-breadth-first-search.md +++ b/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/100-breadth-first-search.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Breadth First Search or BFS for a Graph](https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/) - [Graph Algorithms II - DFS, BFS, Kruskals Algorithm, Union Find Data Structure - Lecture 7](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/104-a-star-algorithm.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/104-a-star-algorithm.md index abeac1108..bbd2459ee 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/104-a-star-algorithm.md +++ b/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/104-a-star-algorithm.md @@ -1,8 +1,8 @@ -# A* Algorithm +# A\* Algorithm -A* is a graph traversal algorithm that is used to find the shortest path between two nodes in a graph. It is a modified version of Dijkstra's algorithm that uses heuristics to find the shortest path. It is used in pathfinding and graph traversal. +A\* is a graph traversal algorithm that is used to find the shortest path between two nodes in a graph. It is a modified version of Dijkstra's algorithm that uses heuristics to find the shortest path. It is used in pathfinding and graph traversal. Visit the following resources to learn more: -- [A* Search Algorithm - Wikipedia](https://en.wikipedia.org/wiki/A*_search_algorithm) -- [A* Pathfinding (E01: algorithm explanation)](https://www.youtube.com/watch?v=-L-WgKMFuhE) +- [A\* Search Algorithm - Wikipedia](https://en.wikipedia.org/wiki/A*_search_algorithm) +- [A\* Pathfinding (E01: algorithm explanation)](https://www.youtube.com/watch?v=-L-WgKMFuhE) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/index.md index 0c3f58e01..693d87fdc 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/index.md +++ b/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/index.md @@ -7,5 +7,3 @@ Visit the following resources to learn more: - [Greedy Algorithms - Geeks for Geeks](https://www.geeksforgeeks.org/greedy-algorithms/) - [Greedy Algorithms - Programiz](https://www.programiz.com/dsa/greedy-algorithm) - [Greedy Algorithms Tutorial – Solve Coding Challenges](https://www.youtube.com/watch?v=bC7o8P_Ste4) - - diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/index.md index 7f757582f..bde386d34 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/index.md +++ b/src/data/roadmaps/computer-science/content/104-common-algorithms/index.md @@ -2,14 +2,14 @@ Here are some common algorithms that you should know. You can find more information about them in the [Algorithms](https://www.khanacademy.org/computing/computer-science/algorithms) section of the Computer Science course. -* Sorting -* Recursion -* Searching -* Cache Algorithms -* Tree Algorithms -* Graph Algorithms -* Greedy Algorithms -* Backtracking -* Substring Search -* Suffix Arrays -* Dynamic Programming +- Sorting +- Recursion +- Searching +- Cache Algorithms +- Tree Algorithms +- Graph Algorithms +- Greedy Algorithms +- Backtracking +- Substring Search +- Suffix Arrays +- Dynamic Programming diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/101-knuth-morris-pratt.md b/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/101-knuth-morris-pratt.md index abead52dd..c0f2828ed 100644 --- a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/101-knuth-morris-pratt.md +++ b/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/101-knuth-morris-pratt.md @@ -2,10 +2,10 @@ Knuth morris pratt is a string searching algorithm that uses a precomputed array to find the substring in a string. This array is known as the prefix function. The prefix function is the longest prefix that is also a suffix of a substring. The prefix function is used to skip the characters that are already matched. The algorithm is as follows: -* Compute the prefix function of the substring. -* Traverse through the string and substring simultaneously. -* If the characters match, increment the index of both the string and substring. -* If the characters don't match, increment the index of the string by the value of the prefix function at the index of the substring. +- Compute the prefix function of the substring. +- Traverse through the string and substring simultaneously. +- If the characters match, increment the index of both the string and substring. +- If the characters don't match, increment the index of the string by the value of the prefix function at the index of the substring. Visit the following resources to learn more: diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/index.md b/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/index.md index fc20005e0..b7220f07f 100644 --- a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/index.md +++ b/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/index.md @@ -9,4 +9,3 @@ Visit the following resources to learn more: - [Check if a string is substring of another](https://www.geeksforgeeks.org/check-string-substring-another/) - [Anagram Substring Search (Or Search for all permutations)](https://www.geeksforgeeks.org/anagram-substring-search-search-permutations/) - [Substring Search - Exercises](https://algs4.cs.princeton.edu/53substring/) - diff --git a/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/100-class-diagrams.md b/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/100-class-diagrams.md index 413959486..8311992a9 100644 --- a/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/100-class-diagrams.md +++ b/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/100-class-diagrams.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [UML Class Diagram Tutorial](https://www.youtube.com/watch?v=UI6lqHOVHic) - [UML Class Diagram Tutorial](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLfoY2ARMh0hC2FcJKP5voAKCpk6PZXSd5&index=2) - diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/100-p.md b/src/data/roadmaps/computer-science/content/113-complexity-classes/100-p.md index 25ef08e60..69a40df64 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/100-p.md +++ b/src/data/roadmaps/computer-science/content/113-complexity-classes/100-p.md @@ -1,6 +1,6 @@ # P -The P in the P class stands for Polynomial Time. It is the collection of decision problems(problems with a “yes” or “no” answer) that can be solved by a deterministic machine in polynomial time. +The P in the P class stands for Polynomial Time. It is the collection of decision problems(problems with a “yes” or “no” answer) that can be solved by a deterministic machine in polynomial time. Visit the following resources to learn more: diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/101-np.md b/src/data/roadmaps/computer-science/content/113-complexity-classes/101-np.md index a14f9059d..c8b8bd389 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/101-np.md +++ b/src/data/roadmaps/computer-science/content/113-complexity-classes/101-np.md @@ -1,6 +1,6 @@ # NP -The NP in NP class stands for Non-deterministic Polynomial Time. It is the collection of decision problems that can be solved by a non-deterministic machine in polynomial time. +The NP in NP class stands for Non-deterministic Polynomial Time. It is the collection of decision problems that can be solved by a non-deterministic machine in polynomial time. Visit the following resources to learn more: diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/index.md b/src/data/roadmaps/computer-science/content/113-complexity-classes/index.md index 87650c9ec..334863d2e 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/index.md +++ b/src/data/roadmaps/computer-science/content/113-complexity-classes/index.md @@ -1,6 +1,6 @@ # Complexity Classes -In computer science, there exist some problems whose solutions are not yet found, the problems are divided into classes known as Complexity Classes. In complexity theory, a Complexity Class is a set of problems with related complexity. These classes help scientists to groups problems based on how much time and space they require to solve problems and verify the solutions. It is the branch of the theory of computation that deals with the resources required to solve a problem. +In computer science, there exist some problems whose solutions are not yet found, the problems are divided into classes known as Complexity Classes. In complexity theory, a Complexity Class is a set of problems with related complexity. These classes help scientists to groups problems based on how much time and space they require to solve problems and verify the solutions. It is the branch of the theory of computation that deals with the resources required to solve a problem. Visit the following resources to learn more: @@ -18,10 +18,3 @@ Visit the following resources to learn more: - [CSE373 2020 - Lecture 24 - Satisfiability](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) - [CSE373 2020 - Lecture 25 - More NP-Completeness](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) - [CSE373 2020 - Lecture 26 - NP-Completeness Challenge](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - - - - - - - diff --git a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/index.md b/src/data/roadmaps/computer-science/content/115-balanced-search-trees/index.md index 0afadf856..de5a1429a 100644 --- a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/index.md +++ b/src/data/roadmaps/computer-science/content/115-balanced-search-trees/index.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Self-balancing binary search tree - Wikipedia](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - [Balanced Search Trees Operations and Applications 11 min](https://www.youtube.com/watch?v=IbNZ-x1I2IM) - [Balanced binary search tree rotations](https://www.youtube.com/watch?v=q4fnJZr8ztY) - diff --git a/src/data/roadmaps/computer-science/content/116-system-design/102-caching.md b/src/data/roadmaps/computer-science/content/116-system-design/102-caching.md index 2a0a419cc..d213e574e 100644 --- a/src/data/roadmaps/computer-science/content/116-system-design/102-caching.md +++ b/src/data/roadmaps/computer-science/content/116-system-design/102-caching.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [System Design - Caching](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#caching) - [What is Caching | System Design Basics](https://www.youtube.com/watch?v=joifNgoXXFk) - diff --git a/src/data/roadmaps/computer-science/content/117-databases/114-views.md b/src/data/roadmaps/computer-science/content/117-databases/114-views.md index e77a8ae72..6e4bbdc8b 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/114-views.md +++ b/src/data/roadmaps/computer-science/content/117-databases/114-views.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [SQL | Views](https://www.geeksforgeeks.org/sql-views/) - [Datbase Views](https://www.ibm.com/docs/en/eamfoc/7.6.0?topic=structure-views) -- [SQL Views - Wikipedia](https://en.wikipedia.org/wiki/View_(SQL)) +- [SQL Views - Wikipedia]() diff --git a/src/data/roadmaps/computer-science/content/117-databases/116-stored-procedures.md b/src/data/roadmaps/computer-science/content/117-databases/116-stored-procedures.md index 0328adbfc..109d0667e 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/116-stored-procedures.md +++ b/src/data/roadmaps/computer-science/content/117-databases/116-stored-procedures.md @@ -1,6 +1,6 @@ # Stored Procedures -Stored Procedures are created to perform one or more DML operations on Database. It is nothing but the group of SQL statements that accepts some input in the form of parameters and performs some task and may or may not returns a value. +Stored Procedures are created to perform one or more DML operations on Database. It is nothing but the group of SQL statements that accepts some input in the form of parameters and performs some task and may or may not returns a value. Visit the following resources to learn more: diff --git a/src/data/roadmaps/computer-science/content/117-databases/118-replication.md b/src/data/roadmaps/computer-science/content/117-databases/118-replication.md index fb10b2296..39c4813ab 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/118-replication.md +++ b/src/data/roadmaps/computer-science/content/117-databases/118-replication.md @@ -5,4 +5,4 @@ Replication is a process that involves sharing information to ensure consistency Visit the following resources to learn more: - [Database Replication](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#database-replication) -- [Replication (computing)](https://en.wikipedia.org/wiki/Replication_(computing)) +- [Replication (computing)]() diff --git a/src/data/roadmaps/computer-science/content/120-how-computers-work/102-registers-and-ram.md b/src/data/roadmaps/computer-science/content/120-how-computers-work/102-registers-and-ram.md index 4f9119f89..0efc79100 100644 --- a/src/data/roadmaps/computer-science/content/120-how-computers-work/102-registers-and-ram.md +++ b/src/data/roadmaps/computer-science/content/120-how-computers-work/102-registers-and-ram.md @@ -1,13 +1,12 @@ # Registers and RAMs -***Registers*** are the smallest data-holding elements built into the processor itself. Registers are the memory locations that are directly accessible by the processor. The registers hold the instruction or operands currently accessed by the CPU. +**_Registers_** are the smallest data-holding elements built into the processor itself. Registers are the memory locations that are directly accessible by the processor. The registers hold the instruction or operands currently accessed by the CPU. Registers are the high-speed accessible storage elements. The processor accesses the registers within one CPU clock cycle. The processor can decode the instructions and perform operations on the register contents at more than one operation per CPU clock cycle. -***Memory*** is a hardware device that stores computer programs, instructions, and data. The memory that is internal to the processor is primary memory (RAM), and the memory that is external to the processor is secondary (**Hard Drive**). +**_Memory_** is a hardware device that stores computer programs, instructions, and data. The memory that is internal to the processor is primary memory (RAM), and the memory that is external to the processor is secondary (**Hard Drive**). Primary memory or RAM is a volatile memory, meaning the primary memory data exist when the system's power is on, and the data vanishes as the system is switched off. The primary memory contains the data required by the currently executing program in the CPU. If the data required by the processor is not in primary memory, then the data is transferred from secondary storage to primary memory, and then it is fetched by the processor. - Visit the following resources to learn more: - [Registers and RAM](https://youtu.be/fpnE6UAfbtU) diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/100-computer-hardware-components.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/100-computer-hardware-components.md index 6738d089b..2a5cd8007 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/100-computer-hardware-components.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/100-computer-hardware-components.md @@ -7,6 +7,7 @@ When it comes to understanding basic IT skills, one cannot overlook the importan The CPU serves as the heart and brain of a computer. It performs all the processing inside the computer and is responsible for executing instructions, performing calculations, and managing the flow of data. **Key Points:** + - Considered the "brain" of the computer. - Performs all the major processes and calculations. @@ -15,6 +16,7 @@ The CPU serves as the heart and brain of a computer. It performs all the process The motherboard is the main circuit board that connects all components of the computer. It provides a central hub for communication between the CPU, memory, and other hardware components. **Key Points:** + - Connects all other hardware components. - Allows components to communicate with each other. @@ -23,6 +25,7 @@ The motherboard is the main circuit board that connects all components of the co Random Access Memory (RAM) is where data is temporarily stored while the computer is powered on. The data is constantly accessed, written, and rewritten by the CPU. The more RAM a system has, the more tasks it can process simultaneously. **Key Points:** + - Temporary storage for data while the computer is on. - More RAM allows for better multitasking. @@ -31,6 +34,7 @@ Random Access Memory (RAM) is where data is temporarily stored while the compute Storage devices like hard disk drives (HDD) or solid-state drives (SSD) are used to store data permanently on the computer, even when the device is powered off. Operating systems, software, and user files are stored on these drives. **Key Points:** + - Permanent storage for data. - Comes in HDD and SSD types, with SSDs being faster but more expensive. @@ -39,6 +43,7 @@ Storage devices like hard disk drives (HDD) or solid-state drives (SSD) are used The GPU is responsible for rendering images, videos, and animations on the computer screen. Its main function is to handle and display graphics, making your visuals smooth and responsive. **Key Points:** + - Handles and processes graphics and visuals. - Important for gaming, video editing, and graphic design tasks. @@ -47,6 +52,7 @@ The GPU is responsible for rendering images, videos, and animations on the compu The power supply unit provides the necessary power to all components in the computer. It converts the AC power from the wall socket into the DC power that the computer's components require. **Key Points:** + - Provides power to all computer components. - Converts AC power to DC power. @@ -55,7 +61,8 @@ The power supply unit provides the necessary power to all components in the comp Input devices, such as a mouse, keyboard, or scanner, are used to interact with and input data into the computer. Output devices, like the display monitor and speakers, present information and data in a format we can understand. **Key Points:** + - Input devices allow users to interact with the computer. - Output devices present information to the user. -By understanding these essential computer hardware components, you can enhance your knowledge of how a computer functions and improve your IT troubleshooting and maintenance skills. Happy computing! \ No newline at end of file +By understanding these essential computer hardware components, you can enhance your knowledge of how a computer functions and improve your IT troubleshooting and maintenance skills. Happy computing! diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/100-nfc.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/100-nfc.md index d4ba0658b..c5a488d1e 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/100-nfc.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/100-nfc.md @@ -4,11 +4,12 @@ ## How NFC works -When two NFC-enabled devices are brought close to each other, a connection is established, and they can exchange data with each other. This communication is enabled through *NFC Tags* and *NFC Readers*. NFC Tags are small integrated circuits that store and transmit data, while NFC Readers are devices capable of reading the data stored in NFC Tags. +When two NFC-enabled devices are brought close to each other, a connection is established, and they can exchange data with each other. This communication is enabled through _NFC Tags_ and _NFC Readers_. NFC Tags are small integrated circuits that store and transmit data, while NFC Readers are devices capable of reading the data stored in NFC Tags. ## NFC Modes NFC operates primarily in three modes: + - **Reader/Writer Mode**: This mode enables the NFC device to read or write data from or to NFC Tags. For example, you can scan an NFC Tag on a poster to access more information about a product or service. - **Peer-to-Peer Mode**: This mode allows two NFC-enabled devices to exchange information directly. Examples include sharing data such as contact information, photos, or connecting devices for multiplayer gaming. - **Card Emulation Mode**: This mode allows an NFC device to act like a smart card or access card, enabling contactless payment and secure access control applications. @@ -23,7 +24,7 @@ While NFC brings convenience through its numerous applications, it also poses se ## Security Best Practices -To minimize the risks associated with NFC, follow these best practices: +To minimize the risks associated with NFC, follow these best practices: - Keep your device's firmware and applications updated to minimize known vulnerabilities. - Use strong and unique passwords for secure NFC applications and services. @@ -31,4 +32,4 @@ To minimize the risks associated with NFC, follow these best practices: - Be cautious when scanning unknown NFC Tags and interacting with unfamiliar devices. - Ensure you're using trusted and secure apps to handle your NFC transactions. -In conclusion, understanding the basics of NFC and adhering to security best practices will help ensure that you can safely and effectively use this innovative technology. \ No newline at end of file +In conclusion, understanding the basics of NFC and adhering to security best practices will help ensure that you can safely and effectively use this innovative technology. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/101-wifi.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/101-wifi.md index 41910615c..0566d1066 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/101-wifi.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/101-wifi.md @@ -38,4 +38,4 @@ To protect yourself and your devices, follow these best practices: - **Use a Virtual Private Network (VPN)**: Connect to the internet using a VPN, which provides a secure, encrypted tunnel for data transmission. -By understanding the potential security risks associated with WiFi connections and following these best practices, you can enjoy the convenience, flexibility, and mobility of WiFi while ensuring a secure browsing experience. \ No newline at end of file +By understanding the potential security risks associated with WiFi connections and following these best practices, you can enjoy the convenience, flexibility, and mobility of WiFi while ensuring a secure browsing experience. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/102-bluetooth.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/102-bluetooth.md index 4b26d9f2e..f9228918f 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/102-bluetooth.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/102-bluetooth.md @@ -14,4 +14,4 @@ Below are some key points about Bluetooth: - **Potential vulnerabilities**: Despite its built-in security measures, Bluetooth is not immune to cyber attacks. Some common risks include "bluejacking" (unauthorized sending of messages or files), "bluesnarfing" (unauthorized access to device data), and "BlueBorne" (an attack vector that exploits Bluetooth connections to infiltrate devices and spread malware). Users should be cautious in their usage of Bluetooth and follow best practices like not accepting unknown connection requests and turning off Bluetooth when not in use. -In conclusion, Bluetooth offers a convenient means of connecting devices wirelessly. While it provides reasonably secure communication, users must stay informed about potential vulnerabilities and follow good security practices to safeguard their devices. \ No newline at end of file +In conclusion, Bluetooth offers a convenient means of connecting devices wirelessly. While it provides reasonably secure communication, users must stay informed about potential vulnerabilities and follow good security practices to safeguard their devices. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/103-infrared.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/103-infrared.md index 5545a1132..530f8bf4b 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/103-infrared.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/103-infrared.md @@ -19,8 +19,9 @@ Infrared (IR) is a type of wireless communication technology that utilizes light While infrared connections are generally secure due to their limited range and inability to penetrate walls, they are still susceptible to attacks. An attacker with direct access to the transmission path can intercept, modify or inject data into the communication. To maintain security in infrared connections, consider the following precautions: + - **Encryption:** Use encryption methods to protect sensitive data transmitted over infrared connections. - **Authentication:** Implement authentication mechanisms that confirm the identities of devices before allowing access. - **Physical security:** Ensure that devices using infrared communication are located in secure areas, limiting the possibility of tampering or eavesdropping. -In summary, infrared is a useful technology for short-range communication purposes with certain benefits, such as privacy and low power consumption. However, it also has limitations and security considerations that must be addressed. \ No newline at end of file +In summary, infrared is a useful technology for short-range communication purposes with certain benefits, such as privacy and low power consumption. However, it also has limitations and security considerations that must be addressed. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/index.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/index.md index f4ce96b23..f4a590494 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/index.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/101-connection-types/index.md @@ -1,6 +1,6 @@ # Connection Types and their function -In the realm of cyber security, understanding various connection types is crucial in maintaining a secure network environment. This section will provide you with an overview of different connection types commonly encountered in IT and their impact on security. +In the realm of cyber security, understanding various connection types is crucial in maintaining a secure network environment. This section will provide you with an overview of different connection types commonly encountered in IT and their impact on security. ## Wired Connections @@ -26,4 +26,4 @@ A VPN is a secure tunnel that creates a private network connection over a public P2P is a decentralized connection type where devices connect directly with each other, without the need for a central server. P2P is commonly used for file-sharing services and can pose significant security risks if utilized without adequate security measures in place. To minimize risks, avoid using untrusted P2P services and refrain from sharing sensitive information on such networks. -In summary, understanding and managing different connection types is an essential aspect of cyber security. By using secure connections and taking preventive measures, you can reduce the risk of unauthorized access, data breaches, and other malicious activities. \ No newline at end of file +In summary, understanding and managing different connection types is an essential aspect of cyber security. By using secure connections and taking preventive measures, you can reduce the risk of unauthorized access, data breaches, and other malicious activities. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/102-os-independent-troubleshooting.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/102-os-independent-troubleshooting.md index 539f58cda..f65cff9fe 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/102-os-independent-troubleshooting.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/102-os-independent-troubleshooting.md @@ -40,4 +40,4 @@ Logs are records of system events, application behavior, and user activity, whic - **Analyze log content**: Examine events, error messages, or patterns that might shed light on the root cause of the issue. - **Leverage log-analysis tools**: Utilize specialized tools or scripts to help parse, filter, and analyze large or complex log files. -In conclusion, developing OS-independent troubleshooting skills allows you to effectively diagnose and resolve issues on any system. By following a structured approach, understanding common symptoms, and utilizing the appropriate tools, you can minimize downtime and maintain the security and efficiency of your organization's IT systems. \ No newline at end of file +In conclusion, developing OS-independent troubleshooting skills allows you to effectively diagnose and resolve issues on any system. By following a structured approach, understanding common symptoms, and utilizing the appropriate tools, you can minimize downtime and maintain the security and efficiency of your organization's IT systems. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/100-icloud.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/100-icloud.md index 42e78668f..f7d0503ce 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/100-icloud.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/100-icloud.md @@ -1,6 +1,6 @@ # iCloud -iCloud is a cloud storage and cloud computing service provided by Apple Inc. It allows users to store data, such as documents, photos, and music, on remote servers and synchronize them across their Apple devices, including iPhones, iPads, and MacBooks. +iCloud is a cloud storage and cloud computing service provided by Apple Inc. It allows users to store data, such as documents, photos, and music, on remote servers and synchronize them across their Apple devices, including iPhones, iPads, and MacBooks. ## Features and Benefits @@ -26,4 +26,4 @@ Apple takes the security of iCloud very seriously and has implemented multiple l - **Two-Factor Authentication (2FA)**: Users can enable 2FA for their Apple ID to add an extra layer of security. This requires an additional verification step (such as entering a code received on a trusted device) when signing into iCloud or any Apple service. - **Secure Tokens**: Apple uses secure tokens for authentication, which means that your iCloud password is not stored on your devices or on Apple's servers. -Overall, iCloud is a convenient and secure way for Apple device users to store and synchronize their data across devices. This cloud-based service offers numerous features to ensure seamless access and enhanced protection for user data. \ No newline at end of file +Overall, iCloud is a convenient and secure way for Apple device users to store and synchronize their data across devices. This cloud-based service offers numerous features to ensure seamless access and enhanced protection for user data. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/101-google-suite.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/101-google-suite.md index aabde979c..e732eff21 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/101-google-suite.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/101-google-suite.md @@ -30,4 +30,4 @@ Google Meet is a video conferencing tool that allows users to host and join secu Google Chat is a communication platform for teams that provides direct messaging, group conversations, and virtual meeting spaces. Users can create chat rooms for specific projects or topics, collaborate on documents in real-time, and make use of Google Meet for video chats. -These are just some of the many tools offered by Google Suite. This platform is a popular choice for individuals, teams, and organizations looking for a comprehensive and efficient way to manage their work and communication needs. \ No newline at end of file +These are just some of the many tools offered by Google Suite. This platform is a popular choice for individuals, teams, and organizations looking for a comprehensive and efficient way to manage their work and communication needs. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/102-ms-office-suite.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/102-ms-office-suite.md index 10088aab0..3ca7421d5 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/102-ms-office-suite.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/102-ms-office-suite.md @@ -16,4 +16,4 @@ Microsoft Office Suite, often referred to as MS Office, is one of the most widel As part of Microsoft's Office 365 subscription, users also have access to cloud-based services like OneDrive, Skype for Business, and Microsoft Teams, which further enhance collaboration and productivity. -When considering your cyber security strategy, it is essential to ensure that your MS Office applications are always up-to-date. Regular updates improve security, fix bugs, and protect against new threats. Additionally, it is crucial to follow best practices, such as using strong passwords and only downloading reputable add-ins, to minimize potential risks. \ No newline at end of file +When considering your cyber security strategy, it is essential to ensure that your MS Office applications are always up-to-date. Regular updates improve security, fix bugs, and protect against new threats. Additionally, it is crucial to follow best practices, such as using strong passwords and only downloading reputable add-ins, to minimize potential risks. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/index.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/index.md index 0f1b4ef3d..72ec29de2 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/index.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/103-popular-suites/index.md @@ -6,11 +6,11 @@ Software suites are widely used in professional and personal environments and pr Microsoft Office is the most widely used suite of applications, consisting of programs such as: -- *Word*: A powerful word processor used for creating documents, reports, and letters. -- *Excel*: A versatile spreadsheet application used for data analysis, calculations, and visualizations. -- *PowerPoint*: A presentation software for designing and displaying slideshows. -- *Outlook*: A comprehensive email and calendar management tool. -- *OneNote*: A digital notebook for organizing and storing information. +- _Word_: A powerful word processor used for creating documents, reports, and letters. +- _Excel_: A versatile spreadsheet application used for data analysis, calculations, and visualizations. +- _PowerPoint_: A presentation software for designing and displaying slideshows. +- _Outlook_: A comprehensive email and calendar management tool. +- _OneNote_: A digital notebook for organizing and storing information. Microsoft Office is available both as a standalone product and as part of the cloud-based Office 365 subscription, which includes additional features and collaboration options. @@ -18,12 +18,12 @@ Microsoft Office is available both as a standalone product and as part of the cl Google Workspace is a cloud-based suite of productivity tools by Google, which includes widely known applications such as: -- *Google Docs*: A collaborative word processor that seamlessly integrates with other Google services. -- *Google Sheets*: A robust spreadsheet application with a wide array of functions and capabilities. -- *Google Slides*: A user-friendly presentation tool that makes collaboration effortless. -- *Google Drive*: A cloud storage service that allows for easy storage, sharing, and syncing of files. -- *Gmail*: A popular email service with advanced filtering and search capabilities. -- *Google Calendar*: A scheduling and event management application that integrates with other Google services. +- _Google Docs_: A collaborative word processor that seamlessly integrates with other Google services. +- _Google Sheets_: A robust spreadsheet application with a wide array of functions and capabilities. +- _Google Slides_: A user-friendly presentation tool that makes collaboration effortless. +- _Google Drive_: A cloud storage service that allows for easy storage, sharing, and syncing of files. +- _Gmail_: A popular email service with advanced filtering and search capabilities. +- _Google Calendar_: A scheduling and event management application that integrates with other Google services. Google Workspace is particularly popular for its real-time collaboration capabilities and ease of access through web browsers. @@ -31,12 +31,12 @@ Google Workspace is particularly popular for its real-time collaboration capabil LibreOffice is a free, open-source suite of applications that offers a solid alternative to proprietary productivity suites. It includes tools such as: -- *Writer*: A word processor that supports various document formats. -- *Calc*: A powerful spreadsheet application with extensive formula and function libraries. -- *Impress*: A presentation software that supports customizable templates and animations. -- *Base*: A database management tool for creating and managing relational databases. -- *Draw*: A vector graphics editor for creating and editing images and diagrams. +- _Writer_: A word processor that supports various document formats. +- _Calc_: A powerful spreadsheet application with extensive formula and function libraries. +- _Impress_: A presentation software that supports customizable templates and animations. +- _Base_: A database management tool for creating and managing relational databases. +- _Draw_: A vector graphics editor for creating and editing images and diagrams. LibreOffice is compatible with various platforms, including Windows, macOS, and Linux, and provides excellent support for standard file formats. -In conclusion, being proficient in using these popular software suites will not only improve your basic IT skills but also help you maintain good cybersecurity practices. Familiarity with these suites will enable you to effectively manage and secure your digital assets while also identifying potential vulnerabilities that may arise during their use. Stay tuned for further topics on enhancing your cybersecurity knowledge. \ No newline at end of file +In conclusion, being proficient in using these popular software suites will not only improve your basic IT skills but also help you maintain good cybersecurity practices. Familiarity with these suites will enable you to effectively manage and secure your digital assets while also identifying potential vulnerabilities that may arise during their use. Stay tuned for further topics on enhancing your cybersecurity knowledge. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/104-basics-of-computer-networking.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/104-basics-of-computer-networking.md index c30211199..9060281d4 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/104-basics-of-computer-networking.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/104-basics-of-computer-networking.md @@ -49,4 +49,4 @@ The Open Systems Interconnection (OSI) model is a conceptual framework used to u - **Presentation Layer**: Translates data into a format that is suitable for transmission between devices. - **Application Layer**: Represents the user interface with which applications interact. -Mastering the basics of computer networking is key to understanding and implementing effective cyber security measures. This chapter has covered essential networking concepts, but it is important to continually expand your knowledge in this ever-evolving field. \ No newline at end of file +Mastering the basics of computer networking is key to understanding and implementing effective cyber security measures. This chapter has covered essential networking concepts, but it is important to continually expand your knowledge in this ever-evolving field. diff --git a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/index.md b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/index.md index ea90c3738..43e88fc50 100644 --- a/src/data/roadmaps/cyber-security/content/100-basic-it-skills/index.md +++ b/src/data/roadmaps/cyber-security/content/100-basic-it-skills/index.md @@ -63,4 +63,4 @@ As the digital world is constantly evolving, so too are cyber threats. Therefore - Keeping software and operating systems updated - Regularly backing up data -By honing these basic IT skills, you will be better prepared to navigate and protect your digital life, as well as making the most of the technology at your fingertips. \ No newline at end of file +By honing these basic IT skills, you will be better prepared to navigate and protect your digital life, as well as making the most of the technology at your fingertips. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/100-windows.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/100-windows.md index f6e7680c0..67ff6d8ca 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/100-windows.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/100-windows.md @@ -6,7 +6,7 @@ Windows is a popular operating system (OS) developed by Microsoft Corporation. I - **Ease of use:** Windows is designed with a user-friendly interface, making it easy for users to navigate, manage files, and access applications. -- **Compatibility:** Windows is compatible with a vast range of hardware and software, including most peripherals like printers, webcams, and more. +- **Compatibility:** Windows is compatible with a vast range of hardware and software, including most peripherals like printers, webcams, and more. - **Regular updates:** Microsoft provides regular updates for Windows, which helps maintain security, fix bugs, and enhance features. @@ -42,4 +42,4 @@ To improve the security of Windows devices, users should: - Regularly back up important data to an external storage device or a secure cloud service to avoid data loss. -By following these security tips and staying informed about potential threats, Windows users can protect their devices and data from various cyber-attacks. \ No newline at end of file +By following these security tips and staying informed about potential threats, Windows users can protect their devices and data from various cyber-attacks. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/101-linux.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/101-linux.md index 012eddf3f..18c660941 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/101-linux.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/101-linux.md @@ -30,4 +30,4 @@ While Linux is inherently secure, there are best practices to enhance your syste - Disable unused services: Unnecessary services can be potential security risks; ensure only required services are running on your system. - Implement a Security-Enhanced Linux (SELinux) policy: SELinux provides a mandatory access control (MAC) system that restricts user and process access to system resources. -By understanding Linux's features and best practices, you can leverage its powerful capabilities and robust security features to enhance your computing environment's performance and safety. \ No newline at end of file +By understanding Linux's features and best practices, you can leverage its powerful capabilities and robust security features to enhance your computing environment's performance and safety. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/102-macos.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/102-macos.md index 4b6a8d872..fbf0b6c4f 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/102-macos.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/102-macos.md @@ -1,10 +1,10 @@ # MacOS -**macOS** is a series of proprietary graphical operating systems developed and marketed by Apple Inc. It is the primary operating system for Apple's Mac computers. macOS is widely recognized for its sleek design, robust performance, and innovative features, making it one of the most popular operating systems globally. +**macOS** is a series of proprietary graphical operating systems developed and marketed by Apple Inc. It is the primary operating system for Apple's Mac computers. macOS is widely recognized for its sleek design, robust performance, and innovative features, making it one of the most popular operating systems globally. ## Key Features -- **User-friendly interface**: macOS is known for its simple and intuitive user interface, which makes it easy for users to navigate and use the system efficiently. +- **User-friendly interface**: macOS is known for its simple and intuitive user interface, which makes it easy for users to navigate and use the system efficiently. - **Security**: macOS has several built-in security features, such as XProtect, Gatekeeper, and FileVault, to provide a secure computing environment. Additionally, macOS is based on UNIX, which is known for its strong security and stability. @@ -26,4 +26,4 @@ - **Install antivirus software**: To add an extra layer of security, consider installing a reputable antivirus program on your Mac to protect against malware and other threats. -By following these security tips and staying vigilant, users can ensure their Mac remains a secure and enjoyable computing environment. \ No newline at end of file +By following these security tips and staying vigilant, users can ensure their Mac remains a secure and enjoyable computing environment. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/index.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/index.md index 70730831a..7ff142d26 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/index.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/index.md @@ -34,4 +34,4 @@ Linux is an open-source operating system considered to be more secure than its c Although Linux distributions are less targeted by cybercriminals, it is vital to follow security best practices, such as keeping your system updated and employing security tools like antivirus software and firewalls. -Remember, the security of your operating system relies on timely updates, proper configuration, and the use of appropriate security tools. Stay vigilant and informed to ensure your system remains secure against ever-evolving cyber threats. \ No newline at end of file +Remember, the security of your operating system relies on timely updates, proper configuration, and the use of appropriate security tools. Stay vigilant and informed to ensure your system remains secure against ever-evolving cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/103-install-and-configure.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/103-install-and-configure.md index 183630014..29377a8d7 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/103-install-and-configure.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/103-install-and-configure.md @@ -32,4 +32,4 @@ While software configurations will vary depending on the specific application or - **Disable Unnecessary Services**: Disable any unused or unnecessary services on your systems. Unnecessary services can contribute to an increased attack surface and potential vulnerabilities. -By following these guidelines, you can establish a robust foundation for system security through proper installation and configuration. Remember that maintaining strong cybersecurity is an ongoing process that requires continuous learning and adaptation to stay ahead of evolving threats. \ No newline at end of file +By following these guidelines, you can establish a robust foundation for system security through proper installation and configuration. Remember that maintaining strong cybersecurity is an ongoing process that requires continuous learning and adaptation to stay ahead of evolving threats. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/104-versions-and-differences.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/104-versions-and-differences.md index 6ce5895c4..c5596f505 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/104-versions-and-differences.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/104-versions-and-differences.md @@ -22,4 +22,4 @@ When we talk about differences in the context of cybersecurity, they can refer t - **Threat Differences**: Various types of cyber threats exist (e.g., malware, phishing, denial-of-service attacks), and it is crucial to understand their differences in order to implement the most effective countermeasures. -To sum up, keeping up with different versions of software and understanding the differences between technologies and threats are vital steps in maintaining a strong cyber security posture. Always update your software to the latest version, and continuously educate yourself on emerging threats and technologies to stay one step ahead of potential cyber attacks. \ No newline at end of file +To sum up, keeping up with different versions of software and understanding the differences between technologies and threats are vital steps in maintaining a strong cyber security posture. Always update your software to the latest version, and continuously educate yourself on emerging threats and technologies to stay one step ahead of potential cyber attacks. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/105-navigating-using-gui-and-cli.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/105-navigating-using-gui-and-cli.md index eb4530083..a5443b7a4 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/105-navigating-using-gui-and-cli.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/105-navigating-using-gui-and-cli.md @@ -34,4 +34,4 @@ A Command Line Interface (CLI) is a text-based interface that allows users to in By understanding how to navigate and use both GUI and CLI, you will be better equipped to manage and secure your computer systems and network devices, as well as perform various cyber security tasks that may require a combination of these interfaces. It is essential to be familiar with both methods, as some tasks may require the precision and control offered by CLI, while others may be more efficiently performed using a GUI. -In the following sections, we will discuss some common CLI tools and their usage, along with how to secure and manage your computer systems and network devices using these interfaces. Stay tuned! \ No newline at end of file +In the following sections, we will discuss some common CLI tools and their usage, along with how to secure and manage your computer systems and network devices using these interfaces. Stay tuned! diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/106-understand-permissions.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/106-understand-permissions.md index 8d68186a0..6c20ab0fa 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/106-understand-permissions.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/106-understand-permissions.md @@ -31,4 +31,4 @@ To ensure cyber security with permissions, follow these best practices: - **Use Groups and Roles**: Group users based on their job roles and assign permissions to groups instead of individuals. This simplifies the permission management process. - **Implement Security Training**: Educate users about the importance of permissions and their responsibilities to maintain a secure environment. -By understanding permissions and following best practices, you can enhance cyber security and minimize the risk of unauthorized access and data breaches. \ No newline at end of file +By understanding permissions and following best practices, you can enhance cyber security and minimize the risk of unauthorized access and data breaches. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/107-installing-apps.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/107-installing-apps.md index fb699e8b2..2fed603f8 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/107-installing-apps.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/107-installing-apps.md @@ -26,4 +26,4 @@ Consider installing a security app from a reputable company to protect your devi Regularly review the apps on your device and uninstall any that are no longer being used. This will not only free up storage space but also reduce potential security risks that might arise if these apps are not maintained or updated by their developers. -By following these guidelines, you can significantly increase your device's security and protect your valuable data from cyber threats. \ No newline at end of file +By following these guidelines, you can significantly increase your device's security and protect your valuable data from cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/108-performing-crud-on-files.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/108-performing-crud-on-files.md index a37895c1c..231b635b6 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/108-performing-crud-on-files.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/108-performing-crud-on-files.md @@ -6,57 +6,57 @@ When working with files in any system or application, understanding and performi - **Windows**: You can create new files using the built-in text editor (Notepad) or dedicated file creation software. You can also use PowerShell commands for quicker file creation. The `New-Item` command followed by the file path creates a file. - ``` - New-Item -Path "C:\Example\example.txt" -ItemType "file" - ``` + ``` + New-Item -Path "C:\Example\example.txt" -ItemType "file" + ``` - **Linux**: Unlike Windows, file creation is usually done through the terminal. The `touch` command helps create a file in the desired directory. - ``` - touch /example/example.txt - ``` + ``` + touch /example/example.txt + ``` ## File Reading - **Windows**: You can read a file using standard file readers, such as Notepad, Wordpad, etc., or you can utilize PowerShell commands. The `Get-Content` command provides the file content. - ``` - Get-Content -Path "C:\Example\example.txt" - ``` + ``` + Get-Content -Path "C:\Example\example.txt" + ``` - **Linux**: The `cat` command is the most common way to read the contents of a file in Linux. - ``` - cat /example/example.txt - ``` + ``` + cat /example/example.txt + ``` ## File Updating - **Windows**: File updating can be accomplished using the previously mentioned text editors or PowerShell. The `Set-Content` or `Add-Content` commands are useful for updating a file. - ``` - Set-Content -Path "C:\Example\example.txt" -Value "Updated content" - Add-Content -Path "C:\Example\example.txt" -Value "Appended content" - ``` + ``` + Set-Content -Path "C:\Example\example.txt" -Value "Updated content" + Add-Content -Path "C:\Example\example.txt" -Value "Appended content" + ``` - **Linux**: Linux uses the built-in text editors, such as `nano` or `vim`, to update files. Alternatively, the `echo` command can append content to a file. - ``` - echo "Appended content" >> /example/example.txt - ``` + ``` + echo "Appended content" >> /example/example.txt + ``` ## File Deletion - **Windows**: File deletion is performed by right-clicking the file and selecting 'Delete' or using PowerShell commands. The `Remove-Item` command followed by the file path can delete a file. - ``` - Remove-Item -Path "C:\Example\example.txt" - ``` + ``` + Remove-Item -Path "C:\Example\example.txt" + ``` - **Linux**: The `rm` command allows you to delete a file in Linux. - ``` - rm /example/example.txt - ``` + ``` + rm /example/example.txt + ``` -By mastering these CRUD operations, you can enhance your cyber security knowledge and implement effective incident response and file management strategies. \ No newline at end of file +By mastering these CRUD operations, you can enhance your cyber security knowledge and implement effective incident response and file management strategies. diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/109-troubleshooting.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/109-troubleshooting.md index 8f5a78834..4bc83adc6 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/109-troubleshooting.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/109-troubleshooting.md @@ -37,4 +37,4 @@ Mastering the art of troubleshooting is essential for successful cyber security I hope this brief summary on troubleshooting has been informative and helps you further enhance your understanding of cyber security. Keep learning and good luck in your cyber security journey! -*[Your Name Here], The Cyber Security Guide Author* \ No newline at end of file +_[Your Name Here], The Cyber Security Guide Author_ diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/110-common-commands.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/110-common-commands.md index 1e6084b07..a333d6f5f 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/110-common-commands.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/110-common-commands.md @@ -2,7 +2,7 @@ In this guide, we will cover essential common commands you need to know when starting your journey in cyber security. By becoming proficient in these commands, you will be able to navigate, analyze, and manage different aspects of systems and networks. The list will cover command prompts, shell commands, and other tools. -*Please note this guide assumes you already have basic knowledge of command line interfaces (CLI)* +_Please note this guide assumes you already have basic knowledge of command line interfaces (CLI)_ ## Operating System Commands @@ -80,4 +80,4 @@ These commands are useful for analyzing and troubleshooting network connections. - `Aircrack-ng`: A suite of tools for auditing wireless networks. -By familiarizing yourself with these common commands and tools, you'll have a solid foundation to build upon in your cyber security journey. As you progress, you will encounter more advanced tools and techniques, so keep learning and stay curious! \ No newline at end of file +By familiarizing yourself with these common commands and tools, you'll have a solid foundation to build upon in your cyber security journey. As you progress, you will encounter more advanced tools and techniques, so keep learning and stay curious! diff --git a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/index.md b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/index.md index ca1bf3655..8509b3773 100644 --- a/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/index.md +++ b/src/data/roadmaps/cyber-security/content/101-operating-systems/learn-for-each/index.md @@ -1 +1 @@ -# Learn for each \ No newline at end of file +# Learn for each diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/100-osi-model.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/100-osi-model.md index a584d4b8e..05e013cdf 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/100-osi-model.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/100-osi-model.md @@ -34,4 +34,4 @@ The **Application layer** is the interface between the user and the communicatio Each of these layers interacts with the adjacent layers to pass data packets back and forth. Understanding the OCI model is crucial for addressing potential security threats and vulnerabilities that can occur at each layer. By implementing strong network security measures at each layer, you can minimize the risk of cyber attacks and keep your data safe. -In the next section, we will discuss network protocols and how they play an essential role in network communication and security. \ No newline at end of file +In the next section, we will discuss network protocols and how they play an essential role in network communication and security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/102-common-ports.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/102-common-ports.md index 7d584070b..78d03d60a 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/102-common-ports.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/102-common-ports.md @@ -36,4 +36,4 @@ Ports are crucial in networking, as they facilitate communication between device - **NTP (Network Time Protocol) - Port 123**: NTP is a standard protocol used to synchronize time across network devices. -Understanding these common ports and their functions is essential for network administrators and cyber security professionals. Proper knowledge of these ports will help you identify and assess potential security risks, as well as implement robust network defense measures. \ No newline at end of file +Understanding these common ports and their functions is essential for network administrators and cyber security professionals. Proper knowledge of these ports will help you identify and assess potential security risks, as well as implement robust network defense measures. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/103-ssl-and-tls-basics.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/103-ssl-and-tls-basics.md index b619e01d4..a794e1f86 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/103-ssl-and-tls-basics.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/103-ssl-and-tls-basics.md @@ -12,9 +12,9 @@ TLS is an improved and more secure version of SSL, with TLS 1.0 being released a ## Key Components -* **Encryption**: SSL and TLS use powerful algorithms to protect data through encryption, ensuring it's unreadable by anyone without the proper decryption keys. -* **Authentication**: SSL/TLS digital certificates verify the identities of clients and servers, providing trust and authenticity. -* **Integrity**: These security protocols use message authentication codes to ensure that the data sent between clients and servers has not been tampered with during transmission. +- **Encryption**: SSL and TLS use powerful algorithms to protect data through encryption, ensuring it's unreadable by anyone without the proper decryption keys. +- **Authentication**: SSL/TLS digital certificates verify the identities of clients and servers, providing trust and authenticity. +- **Integrity**: These security protocols use message authentication codes to ensure that the data sent between clients and servers has not been tampered with during transmission. ## Handshake Process @@ -26,4 +26,4 @@ SSL and TLS follow a series of steps, known as the "handshake process," to creat - **Key generation and exchange**: Both the client and server generate the master secret and session keys using the pre-master secret and shared random numbers. These keys are used for encrypting and decrypting the data transmitted. - **Secured connection**: Once the keys are exchanged, the client and server can now communicate securely using the established encryption and keys. -Secure communication is critical for any organization handling sensitive data. SSL and TLS serve as the backbone for protecting data in transit and play a significant role in ensuring the confidentiality, integrity, and authenticity of online communications. \ No newline at end of file +Secure communication is critical for any organization handling sensitive data. SSL and TLS serve as the backbone for protecting data in transit and play a significant role in ensuring the confidentiality, integrity, and authenticity of online communications. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/104-basics-of-nas-and-san.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/104-basics-of-nas-and-san.md index a62d5b80a..b0f0c4ff3 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/104-basics-of-nas-and-san.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/104-basics-of-nas-and-san.md @@ -31,4 +31,4 @@ When it comes to deciding between NAS and SAN, there are several factors to cons - **Performance Requirements**: If you need high-performance storage for intensive applications, SANs may be a more appropriate choice than NAS. - **Data Management**: While NAS solutions excel in handling file-based storage, SANs provide better support for block-level storage and can deliver improved performance for virtualized environments and database applications. -It's essential to evaluate your organization's specific needs and requirements to determine which storage solution is the most appropriate fit. As you expand your knowledge in cyber security, a solid understanding of both NAS and SAN technologies will prove invaluable in implementing secure and efficient data storage systems. \ No newline at end of file +It's essential to evaluate your organization's specific needs and requirements to determine which storage solution is the most appropriate fit. As you expand your knowledge in cyber security, a solid understanding of both NAS and SAN technologies will prove invaluable in implementing secure and efficient data storage systems. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/105-basics-of-subnetting.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/105-basics-of-subnetting.md index 10e9ed836..b1d91b38c 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/105-basics-of-subnetting.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/105-basics-of-subnetting.md @@ -36,18 +36,18 @@ Let's suppose we have the network `192.168.1.0` with a subnet mask of `255.255.2 - Our subnets will have the following network addresses: - - `192.168.1.0` - - `192.168.1.64` - - `192.168.1.128` - - `192.168.1.192` + - `192.168.1.0` + - `192.168.1.64` + - `192.168.1.128` + - `192.168.1.192` - The valid host ranges within each subnet are: - - `192.168.1.1 - 192.168.1.62` - - `192.168.1.65 - 192.168.1.126` - - `192.168.1.129 - 192.168.1.190` - - `192.168.1.193 - 192.168.1.254` + - `192.168.1.1 - 192.168.1.62` + - `192.168.1.65 - 192.168.1.126` + - `192.168.1.129 - 192.168.1.190` + - `192.168.1.193 - 192.168.1.254` - Allocate IP addresses from these host ranges to devices within their respective subnets, and configure devices with the correct subnet mask (`255.255.255.192`). -Understanding the basics of subnetting is essential to properly configuring and securing your network. By efficiently dividing your network into smaller subnets, you can optimize performance, organization, and security. \ No newline at end of file +Understanding the basics of subnetting is essential to properly configuring and securing your network. By efficiently dividing your network into smaller subnets, you can optimize performance, organization, and security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/100-public-vs-private-ip-addresses.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/100-public-vs-private-ip-addresses.md index 6d5f38d2b..0406bceab 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/100-public-vs-private-ip-addresses.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/100-public-vs-private-ip-addresses.md @@ -4,7 +4,7 @@ When it comes to IP addresses, they are categorized in two major types: Public I ## Public IP Addresses -A public IP address is a globally unique IP address that is assigned to a device or a network. This type of IP address is reachable over the Internet and enables devices to communicate with other devices, servers, and networks located anywhere in the world. +A public IP address is a globally unique IP address that is assigned to a device or a network. This type of IP address is reachable over the Internet and enables devices to communicate with other devices, servers, and networks located anywhere in the world. Here are some key features of public IP addresses: @@ -34,4 +34,4 @@ Private IP address ranges: Example: `192.168.1.100` -In summary, public IP addresses are used for communication over the Internet, whereas private IP addresses are used within local networks. Understanding the difference between these two types of IP addresses is essential for grasping the basics of network connectivity and cyber security. \ No newline at end of file +In summary, public IP addresses are used for communication over the Internet, whereas private IP addresses are used within local networks. Understanding the difference between these two types of IP addresses is essential for grasping the basics of network connectivity and cyber security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/101-localhost.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/101-localhost.md index 0fdf875e5..5901d6a7f 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/101-localhost.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/101-localhost.md @@ -1,6 +1,6 @@ # localhost -Localhost (also known as loopback address) is a term used to define a network address that is used by a device (usually a computer or a server) to refer to itself. In other words, it's a way for your device to establish a network connection to itself. The most commonly used IP address for localhost is `127.0.0.1`, which is reserved as a loopback address in IPv4 networks. For IPv6 networks, it's represented by `::1`. +Localhost (also known as loopback address) is a term used to define a network address that is used by a device (usually a computer or a server) to refer to itself. In other words, it's a way for your device to establish a network connection to itself. The most commonly used IP address for localhost is `127.0.0.1`, which is reserved as a loopback address in IPv4 networks. For IPv6 networks, it's represented by `::1`. ## Purpose and Usage of Localhost @@ -22,4 +22,4 @@ To connect to localhost, you can use several methods depending on the tasks you - **Application Settings**: Some applications, such as web servers or database servers, may have configuration settings that allow you to bind them to the loopback address (`127.0.0.1` or `::1`). This will restrict the services to the local system and prevent them from being accessed by external sources. -Remember, connections to localhost do not pass through your computer's physical network interfaces, and as such, they're not subject to the same security risks or performance limitations that a real network connection might have. \ No newline at end of file +Remember, connections to localhost do not pass through your computer's physical network interfaces, and as such, they're not subject to the same security risks or performance limitations that a real network connection might have. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/102-loopback.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/102-loopback.md index a24eba5b2..9f00f6a99 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/102-loopback.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/102-loopback.md @@ -19,4 +19,4 @@ Apart from loopback addresses, there's also a network device known as the "loopb ## Summary -Loopback plays a crucial role in IP technology by enabling devices to run diagnostic tests and validate the correct functioning of software and hardware components. Using the loopback addresses for IPv4 (`127.0.0.1`) and IPv6 (`::1`), it allows network packets to circulate internally within the local device, facilitating developers to test and verify network operations. \ No newline at end of file +Loopback plays a crucial role in IP technology by enabling devices to run diagnostic tests and validate the correct functioning of software and hardware components. Using the loopback addresses for IPv4 (`127.0.0.1`) and IPv6 (`::1`), it allows network packets to circulate internally within the local device, facilitating developers to test and verify network operations. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/102-wan.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/102-wan.md index f5f3d033d..a1fd3b350 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/102-wan.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/102-wan.md @@ -28,4 +28,4 @@ Here are a few widely-used WAN technologies: ## Conclusion -Understanding the concept of WAN is essential in the context of cyber security, as it forms the backbone of connectivity between remote LANs. Ensuring security measures are taken to protect data transmission over WANs is crucial to maintaining the overall protection of businesses and their sensitive information. \ No newline at end of file +Understanding the concept of WAN is essential in the context of cyber security, as it forms the backbone of connectivity between remote LANs. Ensuring security measures are taken to protect data transmission over WANs is crucial to maintaining the overall protection of businesses and their sensitive information. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/103-cidr.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/103-cidr.md index 245cfdfe6..f36db15ea 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/103-cidr.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/103-cidr.md @@ -4,7 +4,7 @@ CIDR, or Classless Inter-Domain Routing, is a method of allocating IP addresses ## How CIDR works -CIDR achieves its goals by replacing the traditional Class A, B, and C addressing schemes with a system that allows for variable-length subnet masking (VLSM). In CIDR, an IP address and its subnet mask are written together as a single entity, referred to as a _CIDR notation_. +CIDR achieves its goals by replacing the traditional Class A, B, and C addressing schemes with a system that allows for variable-length subnet masking (VLSM). In CIDR, an IP address and its subnet mask are written together as a single entity, referred to as a _CIDR notation_. A CIDR notation looks like this: `192.168.1.0/24`. Here, `192.168.1.0` is the IP address, and `/24` represents the subnet mask. The number after the slash (/) is called the _prefix length_, which indicates how many bits of the subnet mask should be set to 1 (bitmask). The remaining bits of the subnet mask are set to 0. @@ -20,4 +20,4 @@ For example, a `/24` prefix length corresponds to a subnet mask of `255.255.255. CIDR also plays a crucial role in the IPv6 addressing system, where the use of CIDR notation and address aggregation has become even more critical in managing the immense address space of IPv6 efficiently. -In conclusion, CIDR is an essential component of modern IP networking systems, enabling better utilization of IP address space and improving the overall scalability and performance of the Internet. It's crucial for network administrators and security professionals to have a solid understanding of CIDR, as it plays a significant role in configuring, managing, and securing IP networks. \ No newline at end of file +In conclusion, CIDR is an essential component of modern IP networking systems, enabling better utilization of IP address space and improving the overall scalability and performance of the Internet. It's crucial for network administrators and security professionals to have a solid understanding of CIDR, as it plays a significant role in configuring, managing, and securing IP networks. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/104-subnet-mask.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/104-subnet-mask.md index aa317be2e..42d48ab27 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/104-subnet-mask.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/104-subnet-mask.md @@ -21,4 +21,4 @@ Understanding and configuring subnet masks correctly is crucial in cybersecurity - Enhance network efficiency by preventing unnecessary broadcast traffic - Improve the overall network stability and monitoring capabilities -To determine the appropriate subnet mask for different requirements, you can use various subnetting tools available online. Proper management of subnet masks is crucial for maintaining a secure, efficient, and well-functioning network. \ No newline at end of file +To determine the appropriate subnet mask for different requirements, you can use various subnetting tools available online. Proper management of subnet masks is crucial for maintaining a secure, efficient, and well-functioning network. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/105-default-gateway.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/105-default-gateway.md index 3488ed742..47f597726 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/105-default-gateway.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/105-default-gateway.md @@ -22,4 +22,4 @@ To benefit from the services of a default gateway, your device needs to be prope **Note**: Each device connected to a network must have a unique IP address. Also, remember that devices on the same network should use the same default gateway address. -In conclusion, recognizing the significance of the default gateway and having a working knowledge of how it functions is an essential part of IP terminology, affecting both cyber security and efficient data routing. Continuing your education on the subject will better equip you to take advantage of your devices' networking features, as well as protect your valuable data from potential cyber threats. \ No newline at end of file +In conclusion, recognizing the significance of the default gateway and having a working knowledge of how it functions is an essential part of IP terminology, affecting both cyber security and efficient data routing. Continuing your education on the subject will better equip you to take advantage of your devices' networking features, as well as protect your valuable data from potential cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/index.md index 11f42e4bf..a9a084de3 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/106-ip-terminology/index.md @@ -8,9 +8,9 @@ IP is a protocol that enables data exchange between computers over a network. Ea ## IPv4 and IPv6 -*IPv4*: It's the fourth version of IP, using 32-bit addresses and allowing a total of about 4.3 billion unique addresses. +_IPv4_: It's the fourth version of IP, using 32-bit addresses and allowing a total of about 4.3 billion unique addresses. -*IPv6*: To overcome the exhaustion of IPv4 addresses, IPv6 was introduced. It expands the number of unique addresses by using 128-bit addresses, providing a virtually limitless pool of addresses. +_IPv6_: To overcome the exhaustion of IPv4 addresses, IPv6 was introduced. It expands the number of unique addresses by using 128-bit addresses, providing a virtually limitless pool of addresses. ## IP Address @@ -40,4 +40,4 @@ NAT allows multiple devices in a private network to share a single public IP add A firewall is a security measure that filters, monitors, and controls incoming and outgoing traffic in a network. It helps to protect devices and data from unauthorized access or malicious activities. -By understanding these IP terminologies, you'll be better equipped to handle networking and cybersecurity tasks. \ No newline at end of file +By understanding these IP terminologies, you'll be better equipped to handle networking and cybersecurity tasks. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/100-star-topology.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/100-star-topology.md index 259e8184c..5ea4b814b 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/100-star-topology.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/100-star-topology.md @@ -1,6 +1,6 @@ # Star -In a star network topology, all devices (nodes) are connected to a central device, called a hub or switch. The central device manages the data transmission between the devices connected to it, creating a star-like structure. +In a star network topology, all devices (nodes) are connected to a central device, called a hub or switch. The central device manages the data transmission between the devices connected to it, creating a star-like structure. ## Advantages @@ -17,4 +17,4 @@ In a star network topology, all devices (nodes) are connected to a central devic ## Applications -Star topology is commonly used in home and office networks, as well as in local area networks (LANs). It is a suitable choice when centralized control and easier network management are necessary, or when scalability and easy addition of new devices are priority. \ No newline at end of file +Star topology is commonly used in home and office networks, as well as in local area networks (LANs). It is a suitable choice when centralized control and easier network management are necessary, or when scalability and easy addition of new devices are priority. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/101-ring-topology.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/101-ring-topology.md index 3805e57a6..1ef19163e 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/101-ring-topology.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/101-ring-topology.md @@ -14,4 +14,4 @@ Ring topology is a type of network configuration where each device is connected - **Limited Scalability:** Adding or removing devices in a ring topology can temporarily disrupt the network as the circular pattern needs to be re-established. - **Slower Data Transfer:** Since data packets must pass through multiple devices before reaching the destination, the overall speed of data transfer can be slower compared to other topologies. -Despite its drawbacks, ring topology can be a suitable option for small networks with a predictable data transfer pattern that require minimal maintenance and setup effort. However, for larger and more complex networks, other topologies like star, mesh, or hybrid configurations may provide better flexibility, reliability, and performance. \ No newline at end of file +Despite its drawbacks, ring topology can be a suitable option for small networks with a predictable data transfer pattern that require minimal maintenance and setup effort. However, for larger and more complex networks, other topologies like star, mesh, or hybrid configurations may provide better flexibility, reliability, and performance. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/102-mesh-topology.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/102-mesh-topology.md index eee649cd6..cd106ae54 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/102-mesh-topology.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/102-mesh-topology.md @@ -16,4 +16,4 @@ Mesh topology is a network configuration that involves direct connections betwee - **Increased latency**: As data travels through multiple nodes before reaching its destination, this can sometimes result in increased latency compared to other network topologies. - **Power consumption**: Wireless mesh networks, in particular, can consume more power than other topologies due to the need for each node to maintain multiple connections, potentially reducing the battery life of devices. -In summary, mesh topology offers a robust, fault-tolerant, and scalable network configuration ideal for systems that demand high reliability and flexible growth. However, its complexity, costs, and potential latency and power consumption issues need to be carefully considered when deciding whether it is the most suitable network topology for a specific scenario. \ No newline at end of file +In summary, mesh topology offers a robust, fault-tolerant, and scalable network configuration ideal for systems that demand high reliability and flexible growth. However, its complexity, costs, and potential latency and power consumption issues need to be carefully considered when deciding whether it is the most suitable network topology for a specific scenario. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/103-bus-topology.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/103-bus-topology.md index 4dc2dc073..0dc6e1555 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/103-bus-topology.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/103-bus-topology.md @@ -1,6 +1,6 @@ # Bus -A **bus topology** is a type of network configuration where all the devices or nodes in the network are connected to a single, central cable known as the bus, backbone or trunk. This common shared path serves as the medium for data transmission and communication amongst the nodes. +A **bus topology** is a type of network configuration where all the devices or nodes in the network are connected to a single, central cable known as the bus, backbone or trunk. This common shared path serves as the medium for data transmission and communication amongst the nodes. ## How Bus Topology Works @@ -18,4 +18,4 @@ In a bus topology, every node has a unique address that identifies it on the net - **Single point of failure**: If the central cable (bus) fails or gets damaged, the entire network will be affected and may result in a complete breakdown. - **Maintenance difficulty**: Troubleshooting and identifying issues within the network can be challenging due to the shared path for data transmission. -Bus topology can be an effective solution for small networks with minimal devices. However, as network size and complexity increase, other topologies such as star, ring, or mesh may be more suitable for maintaining efficiency and reliability. \ No newline at end of file +Bus topology can be an effective solution for small networks with minimal devices. However, as network size and complexity increase, other topologies such as star, ring, or mesh may be more suitable for maintaining efficiency and reliability. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/index.md index 9ba2f1d82..12e02a22d 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/107-network-topologies/index.md @@ -7,10 +7,12 @@ Network topologies describe the arrangement of various devices in a network, the In a bus topology, all devices in the network are connected to a single communication medium (usually a coaxial cable) called a "bus." Data is transmitted in a single direction along the bus, and devices look for their address in the data to know if it's meant for them. **Advantages:** + - Easy to set up and extend - Requires less cabling than other topologies **Disadvantages:** + - If the main cable fails, the entire network fails - Performance degrades as more devices are added - Limited cable length and number of devices @@ -20,11 +22,13 @@ In a bus topology, all devices in the network are connected to a single communic A star topology connects all devices to a central point or hub (typically a switch or a router). The central point is responsible for transmitting data between devices in the network. **Advantages:** + - Easy to add or remove devices without affecting the rest of the network - If one device fails, it doesn't affect the entire network - Centralized management **Disadvantages:** + - Requires more cabling than bus topology - If the central hub fails, the entire network fails @@ -33,10 +37,12 @@ A star topology connects all devices to a central point or hub (typically a swit In a ring topology, devices are connected in a circular pattern, with each device having exactly two neighbors. Data is transmitted in one direction around the ring, passing through each device before reaching its destination. **Advantages:** + - Equal access to resources for all devices - Can handle high-traffic loads **Disadvantages:** + - Adding or removing devices can disrupt the network - If one device fails, it can affect the entire network - Data transmission can be slow due to the loop structure @@ -46,10 +52,12 @@ In a ring topology, devices are connected in a circular pattern, with each devic A mesh topology connects all devices directly to every other device in the network. It can be a full mesh (where every device is connected to every other device) or a partial mesh (where some devices are connected to all others, while others maintain only a few connections). **Advantages:** + - High fault-tolerance and redundancy, making it more resilient - Eliminates the need for a central hub **Disadvantages:** + - Requires a large number of cables, making it expensive and difficult to manage - Can be challenging to set up and maintain @@ -58,11 +66,13 @@ A mesh topology connects all devices directly to every other device in the netwo A hybrid topology combines two or more different topologies, such as a star and ring topology, in a single network. It can be customized to fit specific network requirements and performance needs. **Advantages:** + - Can be tailored to meet specific needs - Optimizes the strengths of various topologies **Disadvantages:** + - Can be complex and difficult to manage - More expensive than other topologies -Understanding these different network topologies can help you design a more secure and efficient network or improve the existing network structure in your organization. It's essential to consider factors such as scalability, reliability, and cost when selecting the best topology for your needs. \ No newline at end of file +Understanding these different network topologies can help you design a more secure and efficient network or improve the existing network structure in your organization. It's essential to consider factors such as scalability, reliability, and cost when selecting the best topology for your needs. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/100-ssh.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/100-ssh.md index a7c6d046f..a0013d2e7 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/100-ssh.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/100-ssh.md @@ -4,30 +4,30 @@ SSH, or Secure Shell, is a cryptographic network protocol that provides a secure ## Key Features -* **Encryption**: SSH uses a variety of encryption algorithms to ensure the confidentiality and integrity of data transmitted between the client and server. +- **Encryption**: SSH uses a variety of encryption algorithms to ensure the confidentiality and integrity of data transmitted between the client and server. -* **Authentication**: SSH supports multiple authentication methods, including password-based, public key, and host-based authentication, providing flexibility in securely verifying the identities of communicating parties. +- **Authentication**: SSH supports multiple authentication methods, including password-based, public key, and host-based authentication, providing flexibility in securely verifying the identities of communicating parties. -* **Port Forwarding**: SSH allows forwarding of network ports, enabling users to tunnel other protocols securely, such as HTTP or FTP, through an encrypted connection. +- **Port Forwarding**: SSH allows forwarding of network ports, enabling users to tunnel other protocols securely, such as HTTP or FTP, through an encrypted connection. -* **Secure File Transfer**: SSH provides two file transfer protocols, SCP (Secure Copy Protocol) and SFTP (SSH File Transfer Protocol), to securely transfer files between a local client and remote server. +- **Secure File Transfer**: SSH provides two file transfer protocols, SCP (Secure Copy Protocol) and SFTP (SSH File Transfer Protocol), to securely transfer files between a local client and remote server. ## Common Use Cases -* **Remote System Administration**: Administrators can securely access and manage remote systems, such as servers and network devices, using SSH to execute commands and configure settings. +- **Remote System Administration**: Administrators can securely access and manage remote systems, such as servers and network devices, using SSH to execute commands and configure settings. -* **Secure File Transfers**: Developers and administrators can transfer files securely between systems using SCP or SFTP, protecting sensitive data from eavesdropping. +- **Secure File Transfers**: Developers and administrators can transfer files securely between systems using SCP or SFTP, protecting sensitive data from eavesdropping. -* **Remote Application Access**: Users can securely access remote applications by creating an SSH tunnel, allowing them to connect to services that would otherwise be inaccessible due to firewalls or other network restrictions. +- **Remote Application Access**: Users can securely access remote applications by creating an SSH tunnel, allowing them to connect to services that would otherwise be inaccessible due to firewalls or other network restrictions. ## Tips for Secure SSH Usage -* **Disable root login**: To reduce the risk of unauthorized access, it is recommended to disable direct root login and use a standard user account with sudo privileges for administration tasks. +- **Disable root login**: To reduce the risk of unauthorized access, it is recommended to disable direct root login and use a standard user account with sudo privileges for administration tasks. -* **Use Key-Based Authentication**: To further enhance security, disallow password-based authentication and use public key authentication instead, making it more difficult for attackers to gain access through brute-force attacks. +- **Use Key-Based Authentication**: To further enhance security, disallow password-based authentication and use public key authentication instead, making it more difficult for attackers to gain access through brute-force attacks. -* **Limit SSH Access**: Restrict SSH access to specific IP addresses or networks, minimizing the potential attack surface. +- **Limit SSH Access**: Restrict SSH access to specific IP addresses or networks, minimizing the potential attack surface. -* **Keep SSH Software Updated**: Regularly update your SSH client and server software to ensure you have the latest security patches and features. +- **Keep SSH Software Updated**: Regularly update your SSH client and server software to ensure you have the latest security patches and features. -In summary, SSH is a vital protocol for ensuring secure communication, remote access, and file transfers. By understanding its key features, use cases, and best practices, users can leverage the security benefits of SSH to protect their sensitive data and systems. \ No newline at end of file +In summary, SSH is a vital protocol for ensuring secure communication, remote access, and file transfers. By understanding its key features, use cases, and best practices, users can leverage the security benefits of SSH to protect their sensitive data and systems. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/101-rdp.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/101-rdp.md index 348f22727..d8a46bab5 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/101-rdp.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/101-rdp.md @@ -29,4 +29,4 @@ To mitigate these risks, you should: - Use strong, unique passwords for RDP accounts and consider implementing two-factor authentication. - Limit RDP access to specific IP addresses or Virtual Private Networks (VPNs) to reduce exposure. - Apply security patches regularly to keep RDP up-to-date and minimize the risk of exploits. -- Employ network-level authentication (NLA) to offer an additional layer of security. \ No newline at end of file +- Employ network-level authentication (NLA) to offer an additional layer of security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/102-ftp.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/102-ftp.md index e8ecac175..318c07942 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/102-ftp.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/102-ftp.md @@ -28,4 +28,4 @@ FTP has some significant security issues, primarily because it was designed befo To mitigate these security risks, several secure alternatives to the FTP protocol have been developed, such as FTPS (FTP Secure) and SFTP (SSH File Transfer Protocol), which encrypt data transfers and provide additional security features. -In conclusion, FTP is a commonly used protocol for transferring files between computers over a network. While it is easy to use, it has significant security vulnerabilities that make it a less desirable option for secure file transfers. It's essential to use more secure alternatives like FTPS or SFTP for transferring sensitive data. \ No newline at end of file +In conclusion, FTP is a commonly used protocol for transferring files between computers over a network. While it is easy to use, it has significant security vulnerabilities that make it a less desirable option for secure file transfers. It's essential to use more secure alternatives like FTPS or SFTP for transferring sensitive data. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/103-sftp.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/103-sftp.md index 5f32beb8a..6a3ab6eb9 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/103-sftp.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/103-sftp.md @@ -4,13 +4,13 @@ ## Key features of SFTP -* **Security**: SFTP automatically encrypts data before it is sent, ensuring that your files and sensitive data are protected from unauthorized access while in transit. +- **Security**: SFTP automatically encrypts data before it is sent, ensuring that your files and sensitive data are protected from unauthorized access while in transit. -* **Authentication**: SFTP relies on SSH for user authentication, allowing you to use password-based, public key, or host-based authentication methods. +- **Authentication**: SFTP relies on SSH for user authentication, allowing you to use password-based, public key, or host-based authentication methods. -* **File Integrity**: SFTP uses checksums to verify that transferred files have maintained their integrity during transport, allowing you to confirm that files received are identical to those sent. +- **File Integrity**: SFTP uses checksums to verify that transferred files have maintained their integrity during transport, allowing you to confirm that files received are identical to those sent. -* **Resume Capability**: SFTP offers support for resuming interrupted file transfers, making it an ideal choice for transferring large files or transferring files over potentially unreliable connections. +- **Resume Capability**: SFTP offers support for resuming interrupted file transfers, making it an ideal choice for transferring large files or transferring files over potentially unreliable connections. ## How SFTP works @@ -20,8 +20,8 @@ SFTP operates over an established SSH connection between the client and server. SFTP is an ideal choice whenever you need to securely transfer files between a client and a server. Examples of when you might want to use SFTP instead of other protocols include: -* Transferring sensitive data such as customer information, financial records, or intellectual property. -* Uploading or downloading files to/from a remote server in a secure manner, especially when dealing with confidential data. -* Managing files on a remote server, which may involve creating, renaming, or deleting files and directories. +- Transferring sensitive data such as customer information, financial records, or intellectual property. +- Uploading or downloading files to/from a remote server in a secure manner, especially when dealing with confidential data. +- Managing files on a remote server, which may involve creating, renaming, or deleting files and directories. -Overall, SFTP provides a secure and reliable way of transferring files over the internet, making it an essential tool for maintaining the integrity and confidentiality of your data in today's cyber security landscape. \ No newline at end of file +Overall, SFTP provides a secure and reliable way of transferring files over the internet, making it an essential tool for maintaining the integrity and confidentiality of your data in today's cyber security landscape. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/104-http-https.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/104-http-https.md index dedf315cb..763c5d550 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/104-http-https.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/104-http-https.md @@ -20,4 +20,4 @@ To implement HTTPS, websites need to obtain an SSL/TLS certificate from a truste ## In Summary -When browsing the internet, always look for the padlock icon in the address bar, which indicates a secure HTTPS connection. This helps protect your personal information from being intercepted by attackers. As a website owner or developer, it's crucial to prioritize implementing HTTPS, to provide a secure and trustworthy experience for your users. \ No newline at end of file +When browsing the internet, always look for the padlock icon in the address bar, which indicates a secure HTTPS connection. This helps protect your personal information from being intercepted by attackers. As a website owner or developer, it's crucial to prioritize implementing HTTPS, to provide a secure and trustworthy experience for your users. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/105-ssl-tls.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/105-ssl-tls.md index 4501bb72d..320d33b0e 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/105-ssl-tls.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/105-ssl-tls.md @@ -12,7 +12,7 @@ TLS is the successor to SSL and is continually evolving with new versions and up ## How SSL/TLS Works -SSL/TLS operates by encrypting the data transmitted between a client and a server, ensuring that the data cannot be easily intercepted or tampered with. The encryption is achieved using a combination of cryptographic algorithms, key exchanges, and digital certificates. +SSL/TLS operates by encrypting the data transmitted between a client and a server, ensuring that the data cannot be easily intercepted or tampered with. The encryption is achieved using a combination of cryptographic algorithms, key exchanges, and digital certificates. Here are the key steps in setting up an SSL/TLS connection: @@ -30,4 +30,4 @@ Here are the key steps in setting up an SSL/TLS connection: - **Authentication:** SSL/TLS uses digital certificates to authenticate the server and sometimes the client. This helps to ensure that the parties involved in the communication are who they claim to be. -- **Data integrity:** SSL/TLS includes mechanisms to confirm that the data received has not been tampered with during transmission, maintaining the integrity of the information being sent. \ No newline at end of file +- **Data integrity:** SSL/TLS includes mechanisms to confirm that the data received has not been tampered with during transmission, maintaining the integrity of the information being sent. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/index.md index 2a1b9f02f..932658570 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/108-common-protocols/index.md @@ -32,4 +32,4 @@ File Transfer Protocol (FTP) is a standard network protocol used for transferrin Simple Mail Transfer Protocol (SMTP) is the standard protocol for sending email messages across a network. It defines how email messages should be formatted, encrypted, and relayed between email clients, servers, and other email systems. -Understanding these common protocols and their roles in network communication is vital for ensuring the proper implementation of cyber security measures. It will help you better identify potential vulnerabilities and make informed decisions on network defense strategies. \ No newline at end of file +Understanding these common protocols and their roles in network communication is vital for ensuring the proper implementation of cyber security measures. It will help you better identify potential vulnerabilities and make informed decisions on network defense strategies. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/100-vmware.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/100-vmware.md index 631877172..af5fb5cf0 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/100-vmware.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/100-vmware.md @@ -32,4 +32,4 @@ VMware's virtualization technologies offer various advantages, such as: - **Simplified management**: Virtualized environments can be managed from a central location, reducing the time and effort required to maintain and monitor IT resources. -In conclusion, VMware is an industry-leading company providing various virtualization products and services that cater to different types of users and environments. As a user, you should evaluate your requirements and choose the right VMware product for your needs to fully reap the benefits of virtualization. \ No newline at end of file +In conclusion, VMware is an industry-leading company providing various virtualization products and services that cater to different types of users and environments. As a user, you should evaluate your requirements and choose the right VMware product for your needs to fully reap the benefits of virtualization. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/101-virtualbox.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/101-virtualbox.md index 2aa986c20..cea4300eb 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/101-virtualbox.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/101-virtualbox.md @@ -34,4 +34,4 @@ While VirtualBox has numerous benefits, there are certain performance limitation --- -In conclusion, VirtualBox is a powerful and flexible tool for creating and managing virtual environments on a variety of host operating systems. With its open-source nature, cross-platform compatibility, and user-friendly interface, it is an excellent choice for cybersecurity enthusiasts and professionals looking to explore virtualization technologies. \ No newline at end of file +In conclusion, VirtualBox is a powerful and flexible tool for creating and managing virtual environments on a variety of host operating systems. With its open-source nature, cross-platform compatibility, and user-friendly interface, it is an excellent choice for cybersecurity enthusiasts and professionals looking to explore virtualization technologies. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/102-esxi.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/102-esxi.md index b1c2d350d..d4a3458d9 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/102-esxi.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/102-esxi.md @@ -1,6 +1,6 @@ # esxi -VMware ESXi is a Type 1 hypervisor and the core building block for VMware's virtualization technology. It represents a bare-metal hypervisor, which means it is installed directly onto your physical server's hardware, without the need for a supporting operating system. This results in elevated performance, reduced overhead, and efficient resource allocation. +VMware ESXi is a Type 1 hypervisor and the core building block for VMware's virtualization technology. It represents a bare-metal hypervisor, which means it is installed directly onto your physical server's hardware, without the need for a supporting operating system. This results in elevated performance, reduced overhead, and efficient resource allocation. Key features and benefits of ESXi include: @@ -18,4 +18,4 @@ Key features and benefits of ESXi include: To get started with ESXi, you'll need to have compatible hardware and download the ESXi ISO from VMware's website. After installing it on your server, you can manage the virtual machines through VMware vSphere Client or other third-party tools. For more advanced management features, such as high availability, fault tolerance, and distributed resource scheduling, consider investing in VMware vSphere to fully leverage ESXi's potential. -In summary, VMware's ESXi enables organizations to create, run, and manage multiple virtual machines on a single physical server. With its bare-metal performance, robust security, and seamless integration with management tools, ESXi is a powerful solution for businesses looking to optimize their IT infrastructure through virtualization technologies. \ No newline at end of file +In summary, VMware's ESXi enables organizations to create, run, and manage multiple virtual machines on a single physical server. With its bare-metal performance, robust security, and seamless integration with management tools, ESXi is a powerful solution for businesses looking to optimize their IT infrastructure through virtualization technologies. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/104-proxmox.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/104-proxmox.md index 8233d50f4..58205ec7e 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/104-proxmox.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/104-proxmox.md @@ -4,22 +4,22 @@ Proxmox is an open-source platform for enterprise-level virtualization. It is a ## Key Features -* **Server Virtualization**: Proxmox enables you to turn your physical server into multiple virtual servers, each running its own operating system, applications, and services. This helps to maximize server usage and reduce operating costs. +- **Server Virtualization**: Proxmox enables you to turn your physical server into multiple virtual servers, each running its own operating system, applications, and services. This helps to maximize server usage and reduce operating costs. -* **High Availability**: Proxmox VE supports high availability and failover. In case of hardware or software failure, automatic migration of virtual machines can prevent downtime for critical applications and services. +- **High Availability**: Proxmox VE supports high availability and failover. In case of hardware or software failure, automatic migration of virtual machines can prevent downtime for critical applications and services. -* **Storage**: Proxmox offers a variety of storage solution options, including local (LVM, ZFS, directories), network (iSCSI, NFS, GlusterFS, Ceph), and distributed storage (Ceph RBD). +- **Storage**: Proxmox offers a variety of storage solution options, including local (LVM, ZFS, directories), network (iSCSI, NFS, GlusterFS, Ceph), and distributed storage (Ceph RBD). -* **Live Migration**: Live migration is a crucial feature that allows you to move running virtual machines from one host to another with minimal downtime. +- **Live Migration**: Live migration is a crucial feature that allows you to move running virtual machines from one host to another with minimal downtime. -* **Operating System Support**: Proxmox VE supports a wide range of guest operating systems, including Linux, Windows, BSD, and others. +- **Operating System Support**: Proxmox VE supports a wide range of guest operating systems, including Linux, Windows, BSD, and others. -* **Web Interface**: Proxmox offers a powerful and user-friendly web interface for managing your virtual environment. This allows you to create, start, stop or delete virtual machines, monitor their performance, manage their storage, and more from any web browser. +- **Web Interface**: Proxmox offers a powerful and user-friendly web interface for managing your virtual environment. This allows you to create, start, stop or delete virtual machines, monitor their performance, manage their storage, and more from any web browser. -* **Role-based Access Control**: Proxmox VE provides a role-based access control system, allowing you to create users with specific permissions and assign them to different parts of the Proxmox system. +- **Role-based Access Control**: Proxmox VE provides a role-based access control system, allowing you to create users with specific permissions and assign them to different parts of the Proxmox system. -* **Backup and Restore**: Proxmox offers built-in backup and restore functionality, allowing you to easily create full, incremental, or differential backups of your virtual machines and easily restore them when needed. +- **Backup and Restore**: Proxmox offers built-in backup and restore functionality, allowing you to easily create full, incremental, or differential backups of your virtual machines and easily restore them when needed. ## Conclusion -As a powerful and feature-rich virtualization solution, Proxmox Virtual Environment enables administrators to manage their virtual infrastructure more efficiently and reliably. Boasting an easy-to-use web interface, comprehensive storage options, and support for multiple operating systems, Proxmox VE is an excellent choice for managing your virtual environment. \ No newline at end of file +As a powerful and feature-rich virtualization solution, Proxmox Virtual Environment enables administrators to manage their virtual infrastructure more efficiently and reliably. Boasting an easy-to-use web interface, comprehensive storage options, and support for multiple operating systems, Proxmox VE is an excellent choice for managing your virtual environment. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/index.md index 209b47502..10b3e4bb9 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/109-virtualization-technologies/index.md @@ -35,4 +35,4 @@ There are several virtualization software and solutions available in the market, - **Citrix XenServer**: An open-source virtualization platform that supports server, desktop, and network virtualization. - **Oracle VM VirtualBox**: A free and open-source virtualization solution that supports server, desktop, and storage virtualization. -To protect your organization's information assets and ensure the security of your virtualized environments, it's essential to understand virtualization technologies and implement best practices. In the sections that follow, we will discuss essential security measures and techniques to improve the overall cybersecurity posture of your virtualized infrastructure. \ No newline at end of file +To protect your organization's information assets and ensure the security of your virtualized environments, it's essential to understand virtualization technologies and implement best practices. In the sections that follow, we will discuss essential security measures and techniques to improve the overall cybersecurity posture of your virtualized infrastructure. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/100-hypervisor.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/100-hypervisor.md index cb5edceb1..da870aa97 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/100-hypervisor.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/100-hypervisor.md @@ -4,9 +4,9 @@ A **hypervisor** is a software component that plays a vital role in virtualizati There are two primary types of hypervisors: -- **Type 1 hypervisors** (*Bare-metal Hypervisors*) - These hypervisors run directly on the host's hardware, without the need for an underlying operating system, offering better performance and security. Examples of type 1 hypervisors include VMware ESXi, Microsoft Hyper-V, and Xen. +- **Type 1 hypervisors** (_Bare-metal Hypervisors_) - These hypervisors run directly on the host's hardware, without the need for an underlying operating system, offering better performance and security. Examples of type 1 hypervisors include VMware ESXi, Microsoft Hyper-V, and Xen. -- **Type 2 hypervisors** (*Hosted Hypervisors*) - These hypervisors run as an application on an existing operating system, which makes them less performant and potentially less secure. However, they are generally easier to set up and manage. Examples of type 2 hypervisors include Oracle VirtualBox, VMware Workstation, and Parallels Desktop. +- **Type 2 hypervisors** (_Hosted Hypervisors_) - These hypervisors run as an application on an existing operating system, which makes them less performant and potentially less secure. However, they are generally easier to set up and manage. Examples of type 2 hypervisors include Oracle VirtualBox, VMware Workstation, and Parallels Desktop. ## Benefits of using a Hypervisor @@ -26,4 +26,4 @@ Though hypervisors can enhance your cybersecurity posture, it's essential to be - **Monitoring:** Implement continuous monitoring and logging mechanisms to detect and respond to potential security threats in the virtual environment. - **Network Segmentation:** Isolate sensitive VMs on separate networks or virtual LANs (VLANs) to minimize the risk of unauthorized access or lateral movement within the virtualized environment. -In conclusion, a hypervisor is a powerful tool in cybersecurity and virtualization. By understanding its types, benefits, and security considerations, you can make informed decisions on how to best leverage hypervisor technology to protect your digital assets. \ No newline at end of file +In conclusion, a hypervisor is a powerful tool in cybersecurity and virtualization. By understanding its types, benefits, and security considerations, you can make informed decisions on how to best leverage hypervisor technology to protect your digital assets. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/101-vm.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/101-vm.md index 339c963f0..d747d7879 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/101-vm.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/101-vm.md @@ -4,7 +4,7 @@ Virtualization technology enables the creation of multiple virtual environments, ## What are Virtual Machines? -A virtual machine (VM) is a virtual environment that emulates a physical computer, allowing you to run an operating system and applications separately from the underlying hardware. VMs allow for efficient utilization of computer resources, as they enable multiple instances of a system to run on the same physical machine. +A virtual machine (VM) is a virtual environment that emulates a physical computer, allowing you to run an operating system and applications separately from the underlying hardware. VMs allow for efficient utilization of computer resources, as they enable multiple instances of a system to run on the same physical machine. ## Key Components of VMs @@ -17,7 +17,7 @@ A hypervisor, also known as a virtual machine monitor (VMM), is the software res ## Guest Operating System -The guest operating system, or guest OS, is the operating system installed on a virtual machine. Since VMs are independent of each other, you can run different operating systems and applications on each one without any conflicts. +The guest operating system, or guest OS, is the operating system installed on a virtual machine. Since VMs are independent of each other, you can run different operating systems and applications on each one without any conflicts. ## Virtual Hardware @@ -38,4 +38,4 @@ There is a wide range of virtualization software available, including: - Microsoft Hyper-V: A Type 1 hypervisor integrated into the Windows Server operating system. - Oracle VM VirtualBox: A Type 2 hypervisor that runs on Windows, macOS, and Linux hosts, popular for desktop virtualization. -In conclusion, virtual machines play a critical role in modern computing, providing a flexible and efficient method to optimize computing resources, isolate applications, and enhance security. Understanding VMs and virtualization technology is an essential part of any comprehensive cybersecurity guide. \ No newline at end of file +In conclusion, virtual machines play a critical role in modern computing, providing a flexible and efficient method to optimize computing resources, isolate applications, and enhance security. Understanding VMs and virtualization technology is an essential part of any comprehensive cybersecurity guide. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/102-guest-os.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/102-guest-os.md index 6eaf1e56c..ea276853e 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/102-guest-os.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/102-guest-os.md @@ -24,4 +24,4 @@ To manage guest operating systems effectively, you must use virtualization softw - **Oracle VirtualBox**: Oracle's VirtualBox is an open-source hypervisor that supports the creation and management of guests operating systems across multiple host OS platforms. - **Microsoft Hyper-V**: Microsoft's free hypervisor solution, Hyper-V, is capable of creating and managing guest operating systems on Windows-based host machines. -In conclusion, a guest operating system plays a vital role in virtualization, allowing users to operate multiple OS within virtual machines on a single host, optimizing resources, and providing the flexibility to work with a variety of applications and environments. \ No newline at end of file +In conclusion, a guest operating system plays a vital role in virtualization, allowing users to operate multiple OS within virtual machines on a single host, optimizing resources, and providing the flexibility to work with a variety of applications and environments. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/103-host-os.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/103-host-os.md index 6c9f7be47..8a26425c0 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/103-host-os.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/103-host-os.md @@ -12,4 +12,4 @@ Some key points regarding Host OS in virtualization include: - _Security Considerations_: Protecting the host OS is crucial since its vulnerability can potentially affect every virtual machine running on the host. To secure the host, ensure that it is regularly updated, uses strong authentication measures, follows strict access controls, and employs network security best practices. -By understanding host OS and its roles in virtualization, you can better manage your virtual environment and ensure optimal performance and security for your virtual machines. \ No newline at end of file +By understanding host OS and its roles in virtualization, you can better manage your virtual environment and ensure optimal performance and security for your virtual machines. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/index.md index fa1825c57..9b521b16b 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/110-virutalization-basics/index.md @@ -34,4 +34,4 @@ Let's take a brief look at some virtualization basics: - **Oracle VirtualBox**: VirtualBox is a free, open-source virtualization solution that supports various operating systems, making it a popular choice for developers and researchers. -Understanding the basics of virtualization can help you better maintain, secure, and optimize your IT infrastructure. As you continue your journey through cybersecurity, consider diving deeper into the various aspects of virtualization and explore how it can benefit your organization. \ No newline at end of file +Understanding the basics of virtualization can help you better maintain, secure, and optimize your IT infrastructure. As you continue your journey through cybersecurity, consider diving deeper into the various aspects of virtualization and explore how it can benefit your organization. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/100-nslookup.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/100-nslookup.md index bb7a063b9..037aee60d 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/100-nslookup.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/100-nslookup.md @@ -4,10 +4,10 @@ ## Uses -* Query DNS servers to verify the configuration of domain names -* Find the IP address of a specific domain name -* Troubleshoot DNS-related issues and errors -* Identify the authoritative DNS servers for a domain +- Query DNS servers to verify the configuration of domain names +- Find the IP address of a specific domain name +- Troubleshoot DNS-related issues and errors +- Identify the authoritative DNS servers for a domain ## How to Use @@ -21,12 +21,12 @@ Below are some of the most-commonly queried DNS record types: -* **A**: Stands for 'Address'; returns the IPv4 address associated with a domain name -* **AAAA**: Stands for 'Address', for IPv6; returns the IPv6 address associated with a domain name -* **NS**: Stands for 'Name Server'; returns the authoritative DNS servers for a specific domain -* **MX**: Stands for 'Mail Exchange'; returns the mail server(s) responsible for handling email for a specific domain -* **CNAME**: Stands for 'Canonical Name'; returns the domain name that an alias is pointing to -* **TXT**: Stands for 'Text'; returns additional text information that can be associated with a domain, like security policies (e.g., SPF) +- **A**: Stands for 'Address'; returns the IPv4 address associated with a domain name +- **AAAA**: Stands for 'Address', for IPv6; returns the IPv6 address associated with a domain name +- **NS**: Stands for 'Name Server'; returns the authoritative DNS servers for a specific domain +- **MX**: Stands for 'Mail Exchange'; returns the mail server(s) responsible for handling email for a specific domain +- **CNAME**: Stands for 'Canonical Name'; returns the domain name that an alias is pointing to +- **TXT**: Stands for 'Text'; returns additional text information that can be associated with a domain, like security policies (e.g., SPF) ## Example @@ -36,4 +36,4 @@ If you want to find the A (IPv4) record for example.com, follow these steps: - Type `nslookup` and hit Enter - Type `A example.com` and hit Enter -This will return the IPv4 address associated with the domain name example.com. \ No newline at end of file +This will return the IPv4 address associated with the domain name example.com. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/101-iptables.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/101-iptables.md index 28bea44da..a7687d779 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/101-iptables.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/101-iptables.md @@ -60,4 +60,4 @@ iptables-restore < /etc/iptables/rules.v4 ## Conclusion -IPTables is a powerful tool for managing packet filtering rules in Linux systems. With proper configuration, it can greatly enhance your system's security and ensure smooth network traffic flow. Understanding IPTables can help you diagnose and resolve network-related issues while providing essential protection from cyber threats. \ No newline at end of file +IPTables is a powerful tool for managing packet filtering rules in Linux systems. With proper configuration, it can greatly enhance your system's security and ensure smooth network traffic flow. Understanding IPTables can help you diagnose and resolve network-related issues while providing essential protection from cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/102-packet-sniffers.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/102-packet-sniffers.md index 131bcd13a..25ddc7c4d 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/102-packet-sniffers.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/102-packet-sniffers.md @@ -27,4 +27,4 @@ There are numerous packet sniffers available, both open-source and commercial. S Packet sniffers are valuable tools for cybersecurity professionals. They can help identify unauthorized or malicious network activity, track down the source of specific traffic patterns or attacks, and assist with the development of network security policies. When using packet sniffers, it's important to keep in mind that monitoring other users' network activity without their consent may raise legal and ethical issues. -To sum up, packet sniffers are powerful tools that can provide valuable insights into network traffic and security, ultimately helping to maintain and secure any given network environment. \ No newline at end of file +To sum up, packet sniffers are powerful tools that can provide valuable insights into network traffic and security, ultimately helping to maintain and secure any given network environment. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/103-ipconfig.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/103-ipconfig.md index f26b178fc..fff42db65 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/103-ipconfig.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/103-ipconfig.md @@ -64,4 +64,4 @@ IPConfig has several options that can provide more comprehensive information or ipconfig /showclassid ``` -In conclusion, IPConfig is a powerful and handy tool for managing and troubleshooting network connections on Windows systems. It allows you to view and modify network configuration settings, lease IP addresses, and interact with the DNS resolver cache easily. \ No newline at end of file +In conclusion, IPConfig is a powerful and handy tool for managing and troubleshooting network connections on Windows systems. It allows you to view and modify network configuration settings, lease IP addresses, and interact with the DNS resolver cache easily. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/104-netstat.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/104-netstat.md index caf88eeac..eccea0370 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/104-netstat.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/104-netstat.md @@ -4,17 +4,17 @@ Netstat, short for 'network statistics', is a command-line tool that provides va ## Key Features -* **Network Connections:** Netstat can show open and active network connections, including inbound and outbound, as well as display the ports on which your system is currently listening. -* **Routing Tables:** Netstat provides information about your system's routing tables, which can help you identify the path a packet takes to reach its destination. -* **Network Interface Statistics:** Netstat displays statistics for network interfaces, covering details such as packets transmitted, packets received, errors, and more. +- **Network Connections:** Netstat can show open and active network connections, including inbound and outbound, as well as display the ports on which your system is currently listening. +- **Routing Tables:** Netstat provides information about your system's routing tables, which can help you identify the path a packet takes to reach its destination. +- **Network Interface Statistics:** Netstat displays statistics for network interfaces, covering details such as packets transmitted, packets received, errors, and more. ## Common Netstat Commands -* `netstat -a`: Displays all active connections and listening ports -* `netstat -n`: Displays active connections without resolving hostnames (faster) -* `netstat -r`: Displays the routing table -* `netstat -i`: Displays network interfaces and their statistics -* `netstat -s`: Displays network protocol statistics (TCP, UDP, ICMP) +- `netstat -a`: Displays all active connections and listening ports +- `netstat -n`: Displays active connections without resolving hostnames (faster) +- `netstat -r`: Displays the routing table +- `netstat -i`: Displays network interfaces and their statistics +- `netstat -s`: Displays network protocol statistics (TCP, UDP, ICMP) ## Example Use Cases @@ -22,4 +22,4 @@ Netstat, short for 'network statistics', is a command-line tool that provides va - **Monitor Network Connections:** Netstat allows you to monitor active connections to ensure that nothing unauthorized or suspicious is connecting to your system. - **Troubleshoot Network Issues:** By displaying routing table information, netstat can help you understand the pathways your system takes to reach various destinations, which can be crucial when diagnosing network problems. -Netstat is a versatile and powerful tool for gaining insights into your system's network behavior. Armed with this knowledge, you'll be better equipped to address potential vulnerabilities and monitor your system's health in the context of cyber security. \ No newline at end of file +Netstat is a versatile and powerful tool for gaining insights into your system's network behavior. Armed with this knowledge, you'll be better equipped to address potential vulnerabilities and monitor your system's health in the context of cyber security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/105-port-scanners.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/105-port-scanners.md index 0509ade18..fd471ef44 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/105-port-scanners.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/105-port-scanners.md @@ -33,4 +33,4 @@ Here are some popular and widely used port scanning tools: - **Masscan:** Masscan is a high-speed port scanner that is typically used for large-scale scanning, thanks to its ability to scan the entire internet within a few minutes. - **Angry IP Scanner:** It is a cross-platform port scanner that is very user-friendly and suitable for beginners. It supports both TCP and UDP scanning. -Remember to always use port scanners responsibly and only on your own systems or where you have permission to perform a scan. Unauthorized port scanning can have legal and ethical implications. \ No newline at end of file +Remember to always use port scanners responsibly and only on your own systems or where you have permission to perform a scan. Unauthorized port scanning can have legal and ethical implications. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/106-ping.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/106-ping.md index 96c675d5f..6fa1ff587 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/106-ping.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/106-ping.md @@ -32,4 +32,4 @@ Ping is particularly useful for diagnosing and troubleshooting network connectiv By understanding and utilizing the ping command, users can diagnose and resolve various network-related issues to ensure a stable and secure online experience. -Remember that some devices or servers may be configured not to respond to ICMP requests, which might result in no response or a "Request timed out" message after using the ping command. This behavior is usually configured to prevent potential security risks or attacks, so don't panic if you encounter this while troubleshooting. \ No newline at end of file +Remember that some devices or servers may be configured not to respond to ICMP requests, which might result in no response or a "Request timed out" message after using the ping command. This behavior is usually configured to prevent potential security risks or attacks, so don't panic if you encounter this while troubleshooting. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/107-dig.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/107-dig.md index 9ff21db9b..68a3fcc57 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/107-dig.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/107-dig.md @@ -35,4 +35,4 @@ Some common options to use with `dig` include: ## Conclusion -In summary, `dig` is a valuable command-line tool for performing DNS queries and troubleshooting domain name resolution problems. Its power and flexibility make it an essential tool for any network administrator or cybersecurity professional. \ No newline at end of file +In summary, `dig` is a valuable command-line tool for performing DNS queries and troubleshooting domain name resolution problems. Its power and flexibility make it an essential tool for any network administrator or cybersecurity professional. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/108-arp.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/108-arp.md index 27bca778c..9faa1f373 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/108-arp.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/108-arp.md @@ -29,4 +29,4 @@ The output will display the IP and MAC addresses of devices on the network that As crucial as ARP is, it can be exploited by attackers for malicious purposes. ARP spoofing, also known as ARP poisoning, is a form of cyberattack in which an attacker sends fake ARP requests to a network to link their MAC address with an IP address that legitimately belongs to another device. This enables the attacker to intercept and manipulate network traffic or launch denial-of-service (DoS) attacks. -To mitigate ARP spoofing, consider implementing security measures such as monitoring ARP traffic, using a static ARP table, or employing security solutions like intrusion detection and prevention systems. Additionally, maintaining a secure and up-to-date network infrastructure can help reduce potential vulnerabilities. \ No newline at end of file +To mitigate ARP spoofing, consider implementing security measures such as monitoring ARP traffic, using a static ARP table, or employing security solutions like intrusion detection and prevention systems. Additionally, maintaining a secure and up-to-date network infrastructure can help reduce potential vulnerabilities. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/109-protocol-analyzers.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/109-protocol-analyzers.md index fd3177c5a..5b0036ea8 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/109-protocol-analyzers.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/109-protocol-analyzers.md @@ -28,4 +28,4 @@ Here's a list of some widely-used protocol analyzers: - **Microsoft Message Analyzer**: Microsoft Message Analyzer is a versatile protocol analyzer developed by Microsoft that provides deep packet inspection and analysis of network traffic, including encrypted traffic. -In conclusion, protocol analyzers are essential tools for network administrators, security professionals, and developers alike to ensure the performance, security, and stability of their networks. By understanding how these tools work and using them effectively, you can take proactive measures to maintain and improve the health of your network. \ No newline at end of file +In conclusion, protocol analyzers are essential tools for network administrators, security professionals, and developers alike to ensure the performance, security, and stability of their networks. By understanding how these tools work and using them effectively, you can take proactive measures to maintain and improve the health of your network. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/110-nmap.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/110-nmap.md index 26254476b..16ca99198 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/110-nmap.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/110-nmap.md @@ -4,15 +4,15 @@ ## Features of Nmap -* **Host Discovery**: Nmap facilitates finding hosts on the network using various techniques such as ICMP echo requests, TCP SYN/ACK probes, and ARP scans. +- **Host Discovery**: Nmap facilitates finding hosts on the network using various techniques such as ICMP echo requests, TCP SYN/ACK probes, and ARP scans. -* **Port Scanning**: Nmap can identify open ports on target hosts, which can reveal potential security vulnerabilities and provide crucial information during a penetration test. +- **Port Scanning**: Nmap can identify open ports on target hosts, which can reveal potential security vulnerabilities and provide crucial information during a penetration test. -* **Service and Version Detection**: Nmap can detect the name and version of the services running on target hosts. This information helps to identify software that might be outdated or have known security flaws. +- **Service and Version Detection**: Nmap can detect the name and version of the services running on target hosts. This information helps to identify software that might be outdated or have known security flaws. -* **Operating System Detection**: Nmap can make intelligent guesses about the operating system of a target host, which can be useful for tuning your attack strategy based on the vulnerabilities of specific systems. +- **Operating System Detection**: Nmap can make intelligent guesses about the operating system of a target host, which can be useful for tuning your attack strategy based on the vulnerabilities of specific systems. -* **Scriptable**: Nmap has a built-in scripting engine (NSE) that allows users to write custom scripts for automating and extending its functionality. +- **Scriptable**: Nmap has a built-in scripting engine (NSE) that allows users to write custom scripts for automating and extending its functionality. ## How to use Nmap @@ -28,8 +28,8 @@ This command will perform a "ping scan" (`-sn`) on the specified IP range (`192. ## Important Notes -* While Nmap is a valuable tool for cyber security professionals, it can also be used by malicious attackers to gather information about potential targets. It is essential to use Nmap responsibly and only on networks and systems that you have permission to scan. +- While Nmap is a valuable tool for cyber security professionals, it can also be used by malicious attackers to gather information about potential targets. It is essential to use Nmap responsibly and only on networks and systems that you have permission to scan. -* Scanning large networks can generate considerable traffic and may impact the performance of the target hosts. It is important to configure your scans appropriately and be mindful of potential network disruptions. +- Scanning large networks can generate considerable traffic and may impact the performance of the target hosts. It is important to configure your scans appropriately and be mindful of potential network disruptions. -For more information and usage examples, refer to the [official Nmap documentation](https://nmap.org/book/man.html). \ No newline at end of file +For more information and usage examples, refer to the [official Nmap documentation](https://nmap.org/book/man.html). diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/111-route.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/111-route.md index 76215240d..ef37d8ff9 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/111-route.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/111-route.md @@ -56,4 +56,4 @@ This command modifies the existing route to the destination network 192.168.2.0 ## Conclusion -The `route` command is an essential tool for network administrators and anyone involved in cyber security. Understanding and being able to manipulate the IP routing table can help ensure that your computer is able to communicate effectively with other devices on the network, thus contributing to a more secure and efficient network environment. \ No newline at end of file +The `route` command is an essential tool for network administrators and anyone involved in cyber security. Understanding and being able to manipulate the IP routing table can help ensure that your computer is able to communicate effectively with other devices on the network, thus contributing to a more secure and efficient network environment. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/112-tcpdump.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/112-tcpdump.md index e20ad191f..565eedf9c 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/112-tcpdump.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/112-tcpdump.md @@ -4,10 +4,10 @@ Tcpdump is a powerful command-line packet analyzer tool that allows you to monit ## Key Features -* Capture packets in real-time -* Display captured packets in a human-readable format -* Write packets to a file and read saved packet files -* Filter packets based on specific conditions such as IP addresses, protocol, or port +- Capture packets in real-time +- Display captured packets in a human-readable format +- Write packets to a file and read saved packet files +- Filter packets based on specific conditions such as IP addresses, protocol, or port ## Basic Usage @@ -25,40 +25,40 @@ Here are some essential tcpdump commands for different tasks: - **Monitor a specific interface**: To monitor a specific network interface, replace `` with the name of the interface you want to monitor: - ```bash - tcpdump -i - ``` + ```bash + tcpdump -i + ``` - **Capture specific number of packets:** To capture a specific number of packets, use the `-c` option followed by the number of packets you want to capture: - ```bash - tcpdump -i any -c 10 - ``` + ```bash + tcpdump -i any -c 10 + ``` - **Save captured packets to a file:** Tcpdump can save the captured packets to a file for further analysis. To save the packets in a file, use the `-w` option followed by the file name: - ```bash - tcpdump -i any -w capture.pcap - ``` + ```bash + tcpdump -i any -w capture.pcap + ``` - **Filter captured packets**: You can filter the captured packets by various parameters such as IP addresses, protocol, or port numbers. Some examples of the filter are: - * Capture packets from/to a specific IP address: + - Capture packets from/to a specific IP address: - ```bash - tcpdump -i any host 192.168.1.1 - ``` - - * Capture packets related to a specific port: + ```bash + tcpdump -i any host 192.168.1.1 + ``` - ```bash - tcpdump -i any port 80 - ``` - - * Capture packets by protocol (e.g., icmp, tcp, or udp): + - Capture packets related to a specific port: - ```bash - tcpdump -i any icmp - ``` + ```bash + tcpdump -i any port 80 + ``` -You can learn more about tcpdump filters and advanced options from its official documentation or by typing `man tcpdump` in your terminal. Tcpdump is an invaluable tool for any network administrator and will help you get to the root of any network issues. \ No newline at end of file + - Capture packets by protocol (e.g., icmp, tcp, or udp): + + ```bash + tcpdump -i any icmp + ``` + +You can learn more about tcpdump filters and advanced options from its official documentation or by typing `man tcpdump` in your terminal. Tcpdump is an invaluable tool for any network administrator and will help you get to the root of any network issues. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/113-tracert.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/113-tracert.md index 38df05596..f4ebca318 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/113-tracert.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/113-tracert.md @@ -13,9 +13,9 @@ The output will show a list of hops in sequential order, with each line represen When analyzing the results of a tracert command, consider the following: -- *Hops*: These are the individual steps the data packets take to reach the destination. If the route appears excessively long, there may be an issue with the network configuration or an inefficient routing path. -- *Round-trip Time (RTT)*: This measures how long it takes for data packets to travel from the source to the destination and back. If the RTT is consistently high or increases significantly between specific hops, there could be a network delay, bottleneck, or congestion. -- *Request Timed Out*: If you see this error, it means that a data packet failed to reach a specific hop within the given time. This could be an indication of a connection failure, firewall blocking, or packet loss. +- _Hops_: These are the individual steps the data packets take to reach the destination. If the route appears excessively long, there may be an issue with the network configuration or an inefficient routing path. +- _Round-trip Time (RTT)_: This measures how long it takes for data packets to travel from the source to the destination and back. If the RTT is consistently high or increases significantly between specific hops, there could be a network delay, bottleneck, or congestion. +- _Request Timed Out_: If you see this error, it means that a data packet failed to reach a specific hop within the given time. This could be an indication of a connection failure, firewall blocking, or packet loss. However, note that some routers may be configured to discard or de-prioritize ICMP echo requests (the packets used by tracert) due to security reasons or traffic management, which might result in incomplete or inaccurate tracert results. @@ -31,4 +31,4 @@ For more advanced network troubleshooting and analysis, you may consider other t - `ping`: To test basic connectivity and latency towards a specific host or IP address. - `nslookup` or `dig`: To look up DNS records, diagnose DNS problems, or verify proper domain name resolution. -- `mtr` (My Traceroute): Available on Linux and macOS, it combines the functionality of both "traceroute" and "ping," providing real-time, continuous statistics on each hop's performance. \ No newline at end of file +- `mtr` (My Traceroute): Available on Linux and macOS, it combines the functionality of both "traceroute" and "ping," providing real-time, continuous statistics on each hop's performance. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/index.md index f9efbeffe..0149f65de 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/111-troubleshooting-tools/index.md @@ -38,4 +38,4 @@ Usage: `nmap [-options] [target host/IP]` Download link: [https://www.wireshark.org/download.html](https://www.wireshark.org/download.html) -Understanding these troubleshooting tools and their applications will help you resolve network issues more effectively and maintain a secure IT infrastructure. Remember to balance security and functionality when managing your network. Practicing good cyber hygiene, staying updated with the latest threats, and continuously assessing your network security will help you stay one step ahead of potential attackers. \ No newline at end of file +Understanding these troubleshooting tools and their applications will help you resolve network issues more effectively and maintain a secure IT infrastructure. Remember to balance security and functionality when managing your network. Practicing good cyber hygiene, staying updated with the latest threats, and continuously assessing your network security will help you stay one step ahead of potential attackers. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/100-kerberos.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/100-kerberos.md index f5801bbf8..56aa9fbc5 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/100-kerberos.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/100-kerberos.md @@ -32,4 +32,4 @@ Here is a high-level summary of the Kerberos authentication process: - **Time-sensitive**: Kerberos is sensitive to time differences between servers and clients. Synchronized clocks are necessary to maintain accurate ticket lifetimes and prevent replay attacks. - **Complexity**: The protocol can be complex to set up and requires proper management of secret keys. -In summary, Kerberos is a robust and widely used authentication protocol that helps secure client/server communications. Its centralized management and strong security measures make it an excellent choice for organizations with demanding authentication requirements. However, it also has its limitations and complexities that must be carefully managed to maintain a secure and efficient authentication process. \ No newline at end of file +In summary, Kerberos is a robust and widely used authentication protocol that helps secure client/server communications. Its centralized management and strong security measures make it an excellent choice for organizations with demanding authentication requirements. However, it also has its limitations and complexities that must be carefully managed to maintain a secure and efficient authentication process. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/101-ldap.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/101-ldap.md index abd12e88a..fd754217d 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/101-ldap.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/101-ldap.md @@ -3,12 +3,14 @@ LDAP is a protocol used to access directory services, i.e., a hierarchical database that holds information about various objects, such as users, groups, computer accounts, and more. In the context of cybersecurity, it's essential in storing information related to authentication, authorization, and user profiles. LDAP is primarily utilized in enterprise environments as a centralized system for managing user accounts and their permissions. **How LDAP works** + - It is based on a client-server model, where the client sends a request to the server (usually an LDAP directory server), and the server responds accordingly. - LDAP servers store directory entries in a hierarchical (tree-like) structure, starting from the root (known as the "base DN") and following a series of branches down to individual entries. - Each entry in the LDAP directory has a distinguished name (DN), which uniquely identifies the entry in the hierarchy. **LDAP in Cyber Security** In cybersecurity, LDAP servers are often used for the following purposes: + - **Authentication**: LDAP stores user account and password information, which can be used to authenticate users to access specific applications or resources. - **Authorization**: Using LDAP directory groups, you can manage access controls for users and grant or deny permissions based on their role or membership. - **User Management**: LDAP provides a single, centralized repository for managing user account information, making it easier to maintain consistent user data across multiple systems or applications. @@ -22,4 +24,4 @@ To enhance the security of your LDAP implementation, consider adopting these bes - Limit the searchable scope on the client-side, to minimize the risk of information disclosure. - Use strong authentication methods, such as multi-factor authentication (MFA), to secure access to the LDAP directory. -In conclusion, LDAP is a critical component in many enterprise-level cybersecurity architectures, as it plays a vital role in handling authentication and authorization processes. To ensure the security of your LDAP implementation, it's crucial to follow best practices and carefully manage access to directory services. \ No newline at end of file +In conclusion, LDAP is a critical component in many enterprise-level cybersecurity architectures, as it plays a vital role in handling authentication and authorization processes. To ensure the security of your LDAP implementation, it's crucial to follow best practices and carefully manage access to directory services. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/102-sso.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/102-sso.md index 645635668..7295ebdf4 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/102-sso.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/102-sso.md @@ -40,4 +40,4 @@ SSO operates by leveraging a centralized authentication system, usually provided - **Reduced Help Desk Costs:** With fewer password-related issues to address, help desk teams can focus on more critical tasks, resulting in lower support costs. -Overall, implementing Single Sign-On in your organization can dramatically improve both user experience and system security. However, it is essential to choose a reliable Identity Provider and ensure secure integration with all relevant Service Providers. \ No newline at end of file +Overall, implementing Single Sign-On in your organization can dramatically improve both user experience and system security. However, it is essential to choose a reliable Identity Provider and ensure secure integration with all relevant Service Providers. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/103-certificates.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/103-certificates.md index 50539b301..131c42140 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/103-certificates.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/103-certificates.md @@ -37,4 +37,4 @@ Digital certificates offer various benefits in the realm of cybersecurity, such ## Conclusion -Digital certificates provide a crucial layer of security and trust for online communications. Understanding their role in cybersecurity, the different types of certificates, and the importance of acquiring certificates from trusted CAs can greatly enhance your organization's online security posture and reputation. \ No newline at end of file +Digital certificates provide a crucial layer of security and trust for online communications. Understanding their role in cybersecurity, the different types of certificates, and the importance of acquiring certificates from trusted CAs can greatly enhance your organization's online security posture and reputation. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/104-local-auth.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/104-local-auth.md index ffde029cb..9441b4fd6 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/104-local-auth.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/104-local-auth.md @@ -20,10 +20,12 @@ Here is a high-level overview of how local authentication works: ## Advantages and Disadvantages of Local Authentication ## Advantages + - **Simplicity**: Local authentication is simple to set up, as it doesn't require any external authentication services or additional infrastructure. - **No Dependency on Internet Connectivity**: Since user credentials are stored locally, users can still authenticate even if there is no internet connection. -## Disadvantages +## Disadvantages + - **Scalability**: Managing and maintaining user accounts on individual systems becomes difficult when the number of systems and users increases. - **Increased Risk**: Information about user accounts, including passwords, may be stored in plain text, making them vulnerable to unauthorized access. - **Incomplete Security**: Local authentication alone may not provide sufficient security to protect sensitive information, necessitating the use of additional security measures such as secure socket layer (SSL) and two-factor authentication (2FA). @@ -38,4 +40,4 @@ To ensure the security of your system while using local authentication: - Periodically review user accounts to ensure they have the appropriate access privileges and are no longer needed. - Implement logs and monitoring to detect any suspicious activity on your system relating to user authentication. -In conclusion, local authentication can be an effective method for authenticating users on a single system. However, it is important to be aware of its limitations and make sure to implement additional security measures when necessary to keep your data safe. \ No newline at end of file +In conclusion, local authentication can be an effective method for authenticating users on a single system. However, it is important to be aware of its limitations and make sure to implement additional security measures when necessary to keep your data safe. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/105-radius.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/105-radius.md index 34ade6b9e..09a846aaa 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/105-radius.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/105-radius.md @@ -28,4 +28,4 @@ Another popular AAA protocol is Terminal Access Controller Access-Control System Organizations may choose between RADIUS and TACACS+ based on their specific requirements, network setup, and device compatibility. -In conclusion, RADIUS plays a crucial role in implementing a robust and efficient AAA framework, simplifying network administration while ensuring security and compliance. \ No newline at end of file +In conclusion, RADIUS plays a crucial role in implementing a robust and efficient AAA framework, simplifying network administration while ensuring security and compliance. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/index.md index a53b13770..c68da5b59 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/112-auth-methodologies/index.md @@ -26,4 +26,4 @@ SSO is an authentication process that enables users to access multiple related, --- -To maintain a strong cyber security posture, implementing effective authentication methodologies is essential. Each method has its own strengths and weaknesses, and the best approach depends on your organization's individual needs and resources. By choosing the right mix of authentication methods, you can ensure that only authorized users have access to your sensitive systems and data, significantly reducing the risk of cyber threats. \ No newline at end of file +To maintain a strong cyber security posture, implementing effective authentication methodologies is essential. Each method has its own strengths and weaknesses, and the best approach depends on your organization's individual needs and resources. By choosing the right mix of authentication methods, you can ensure that only authorized users have access to your sensitive systems and data, significantly reducing the risk of cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/100-dhcp.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/100-dhcp.md index 9362981d4..805cb68fd 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/100-dhcp.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/100-dhcp.md @@ -12,10 +12,10 @@ DHCP, or Dynamic Host Configuration Protocol, is a network management protocol t ## Benefits -* **Reduced administration effort**: DHCP reduces the time and effort required to manage IP address assignments in a network, as it automatically assigns and reclaims IP addresses based on lease management. +- **Reduced administration effort**: DHCP reduces the time and effort required to manage IP address assignments in a network, as it automatically assigns and reclaims IP addresses based on lease management. -* **Scalability**: DHCP is helpful for both small and large networks. It allows the easy integration and removal of new devices, without manual IP address assignments. +- **Scalability**: DHCP is helpful for both small and large networks. It allows the easy integration and removal of new devices, without manual IP address assignments. -* **Consistency**: DHCP enables consistent management of network settings, which helps reduce errors and ensures that devices in the network can access the necessary resources. +- **Consistency**: DHCP enables consistent management of network settings, which helps reduce errors and ensures that devices in the network can access the necessary resources. -In summary, DHCP simplifies IP address management and network configuration for network administrators, ensuring efficient use of IP addresses and streamlining network administration. This is particularly valuable in large networks with numerous devices or when devices frequently need to connect or disconnect from the network. \ No newline at end of file +In summary, DHCP simplifies IP address management and network configuration for network administrators, ensuring efficient use of IP addresses and streamlining network administration. This is particularly valuable in large networks with numerous devices or when devices frequently need to connect or disconnect from the network. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/101-dns.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/101-dns.md index c6d7b7441..44040eeff 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/101-dns.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/101-dns.md @@ -20,4 +20,4 @@ Here are the key concepts and functions of DNS: - **DNS Security**: Cyber threats such as DNS hijacking, cache poisoning, and Distributed Denial of Service (DDoS) attacks have highlighted the importance of DNS security. Several security measures and protocols, including DNSSEC (Domain Name System Security Extensions), help protect DNS servers and their records from these threats. -In summary, DNS is a critical component of the internet, enabling users to connect to websites and online services using easily memorable domain names instead of numerical IP addresses. DNS servers, hierarchically organized and employing caching mechanisms, efficiently manage and resolve domain name queries while implementing security measures to maintain the integrity and safety of the internet infrastructure. \ No newline at end of file +In summary, DNS is a critical component of the internet, enabling users to connect to websites and online services using easily memorable domain names instead of numerical IP addresses. DNS servers, hierarchically organized and employing caching mechanisms, efficiently manage and resolve domain name queries while implementing security measures to maintain the integrity and safety of the internet infrastructure. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/102-ntp.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/102-ntp.md index 6b036b2d7..eaa6ca4f7 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/102-ntp.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/102-ntp.md @@ -22,4 +22,4 @@ While NTP is essential for maintaining accurate time synchronization across a ne - **Time Spoofing**: An attacker can manipulate NTP traffic to alter the time on client devices, potentially causing authentication failures or allowing unauthorized access. Use authentication keys with NTP to ensure the integrity of time updates by verifying the server's identity. - **Untrusted Servers**: Obtain time from a reliable time source to prevent tampering. Always configure clients to use trusted NTP servers, like pool.ntp.org, which provides access to a global group of well-maintained NTP servers. -By understanding and implementing these crucial aspects of NTP, you can improve the overall security posture of your network by ensuring accurate time synchronization across all systems. \ No newline at end of file +By understanding and implementing these crucial aspects of NTP, you can improve the overall security posture of your network by ensuring accurate time synchronization across all systems. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/103-ipam.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/103-ipam.md index cfe667b52..d70396c42 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/103-ipam.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/103-ipam.md @@ -18,4 +18,4 @@ IP Address Management (IPAM) is a critical aspect of cyber security, as it helps - **Reporting and analytics:** An IPAM system can provide detailed reports on IP address usage, allocation history, and other statistics. This information can help organizations identify trends, optimize their networks, and improve overall security. -In conclusion, IPAM plays a vital role in cyber security by enabling organizations to manage and monitor their IP address spaces efficiently. Implementing a comprehensive IPAM solution can help organizations maintain secure and effective network communication, comply with policies, and prevent unauthorized access. \ No newline at end of file +In conclusion, IPAM plays a vital role in cyber security by enabling organizations to manage and monitor their IP address spaces efficiently. Implementing a comprehensive IPAM solution can help organizations maintain secure and effective network communication, comply with policies, and prevent unauthorized access. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/index.md index bd74444e6..1a5dcb4cd 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/functions-of-each/index.md @@ -1 +1 @@ -# Functions of each \ No newline at end of file +# Functions of each diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/index.md index 0c07deca4..9c4dd5305 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/index.md @@ -4,18 +4,18 @@ In the world of cyber security, having a strong foundation in networking knowled ## Topics -* **Network Architecture**: Learn about the different networking models, such as the OSI model and TCP/IP model, which define how data is structured, transmitted, and received in a network. +- **Network Architecture**: Learn about the different networking models, such as the OSI model and TCP/IP model, which define how data is structured, transmitted, and received in a network. -* **Network Protocols**: Familiarize yourself with various network protocols that are essential for effective communication between devices, including HTTP, HTTPS, FTP, and more. These protocols ensure that data is transmitted reliably and securely across networks. +- **Network Protocols**: Familiarize yourself with various network protocols that are essential for effective communication between devices, including HTTP, HTTPS, FTP, and more. These protocols ensure that data is transmitted reliably and securely across networks. -* **IP Addressing and Subnetting**: Gain an understanding of IP addresses (both IPv4 and IPv6), how they are assigned, and how subnetting works to divide networks into smaller segments for better management and security. +- **IP Addressing and Subnetting**: Gain an understanding of IP addresses (both IPv4 and IPv6), how they are assigned, and how subnetting works to divide networks into smaller segments for better management and security. -* **Routing and Switching**: Learn about the roles of routers and switches in a network, as well as related technologies and protocols like DHCP, NAT, and various routing protocols (such as OSPF and BGP). +- **Routing and Switching**: Learn about the roles of routers and switches in a network, as well as related technologies and protocols like DHCP, NAT, and various routing protocols (such as OSPF and BGP). -* **Wireless Networking**: Delve into the world of wireless networks by studying the different types of wireless technologies like Wi-Fi, Bluetooth, and cellular networks. Understand the security concerns and best practices associated with wireless communication. +- **Wireless Networking**: Delve into the world of wireless networks by studying the different types of wireless technologies like Wi-Fi, Bluetooth, and cellular networks. Understand the security concerns and best practices associated with wireless communication. -* **Network Security**: Explore various techniques and tools used to defend networks from cyber threats, including firewalls, intrusion detection systems (IDS), intrusion prevention systems (IPS), and VPNs. Learn about security protocols like SSL/TLS, encryption algorithms, and secure access control mechanisms. +- **Network Security**: Explore various techniques and tools used to defend networks from cyber threats, including firewalls, intrusion detection systems (IDS), intrusion prevention systems (IPS), and VPNs. Learn about security protocols like SSL/TLS, encryption algorithms, and secure access control mechanisms. -* **Network Troubleshooting**: Understand common network issues and how to resolve them, using various network troubleshooting tools and methodologies like ping, traceroute, and Wireshark. +- **Network Troubleshooting**: Understand common network issues and how to resolve them, using various network troubleshooting tools and methodologies like ping, traceroute, and Wireshark. -By developing a strong foundation in networking knowledge, you will be well-equipped to tackle various cyber security challenges and protect your digital assets from potential threats. Remember, the ever-evolving landscape of cyber security demands continuous learning and updating of skills to stay ahead in the game. \ No newline at end of file +By developing a strong foundation in networking knowledge, you will be well-equipped to tackle various cyber security challenges and protect your digital assets from potential threats. Remember, the ever-evolving landscape of cyber security demands continuous learning and updating of skills to stay ahead in the game. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/100-vlan.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/100-vlan.md index 7023045b4..0b22d06d2 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/100-vlan.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/100-vlan.md @@ -4,10 +4,10 @@ A **VLAN** or **Virtual Local Area Network** is a logical grouping of devices or ## Key Features of VLANs -* **Isolation:** VLANs isolate traffic between different groups, helping to minimize the risk of unauthorized access to sensitive data. -* **Scalability:** VLANs allow network administrators to grow and change networks with ease, without causing disruptions. -* **Cost Effectiveness:** VLANs can reduce the need for additional hardware by reusing existing switches and networks for added functionality. -* **Improved Performance:** By narrowing the broadcast domain, VLANs can improve network performance by reducing unnecessary traffic. +- **Isolation:** VLANs isolate traffic between different groups, helping to minimize the risk of unauthorized access to sensitive data. +- **Scalability:** VLANs allow network administrators to grow and change networks with ease, without causing disruptions. +- **Cost Effectiveness:** VLANs can reduce the need for additional hardware by reusing existing switches and networks for added functionality. +- **Improved Performance:** By narrowing the broadcast domain, VLANs can improve network performance by reducing unnecessary traffic. ## Types of VLANs @@ -23,4 +23,4 @@ VLANs are created and managed through network switches that support VLAN configu VLANs play a crucial role in network security; however, they are not foolproof. VLAN hopping and unauthorized access can still occur if proper measures, such as Private VLANs and Access Control Lists (ACLs), are not implemented to secure the network. -In summary, VLANs offer a flexible and secure way to manage and segment networks based on needs and requirements. By understanding their purpose, types, and security considerations, network administrators can efficiently use VLANs to improve overall network performance and security. \ No newline at end of file +In summary, VLANs offer a flexible and secure way to manage and segment networks based on needs and requirements. By understanding their purpose, types, and security considerations, network administrators can efficiently use VLANs to improve overall network performance and security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/101-dmz.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/101-dmz.md index d5f7af276..8eff5eda3 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/101-dmz.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/101-dmz.md @@ -17,4 +17,4 @@ The key components in a DMZ include: - **Intrusion Detection and Prevention Systems (IDS/IPS)**: These tools continuously monitor and analyze network traffic, looking for signs of unauthorized access or malicious activities, and automatically take appropriate actions to mitigate threats. - **Public-Facing Servers**: These are the servers hosted within the DMZ, designed to serve content and resources to external users. They are typically configured with additional security measures to further reduce the risk of compromise. -As the author of this guide, I hope this brief summary about DMZ helps you enhance your understanding of cyber security terminologies and their importance in protecting organizations' networks and data. Keep reading for more insights! \ No newline at end of file +As the author of this guide, I hope this brief summary about DMZ helps you enhance your understanding of cyber security terminologies and their importance in protecting organizations' networks and data. Keep reading for more insights! diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/102-arp.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/102-arp.md index 8c0db0528..ac0481ff1 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/102-arp.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/102-arp.md @@ -14,4 +14,4 @@ While ARP is crucial for the functioning of most networks, it also presents cert To mitigate ARP poisoning attacks, organizations can implement security measures such as static ARP entries, dynamic ARP inspection, and ensuring that their network devices are updated with the latest security patches. -By understanding ARP and the potential security risks it presents, you can help protect your network by incorporating appropriate security solutions and staying vigilant against potential threats. \ No newline at end of file +By understanding ARP and the potential security risks it presents, you can help protect your network by incorporating appropriate security solutions and staying vigilant against potential threats. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/103-vm.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/103-vm.md index 8fe9037a5..d4d8886bf 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/103-vm.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/103-vm.md @@ -20,4 +20,4 @@ Key terminologies associated with VMs include: - **Live Migration**: This refers to the process of moving a running virtual machine from one physical host to another with minimal or no disruption to the guest OS and its applications. Live migration enables load balancing and ensures minimal downtime during hardware maintenance. -Understanding and effectively utilizing virtual machines plays a significant role in enhancing the security posture of an organization, allowing for agile incident response and proactive threat analysis. \ No newline at end of file +Understanding and effectively utilizing virtual machines plays a significant role in enhancing the security posture of an organization, allowing for agile incident response and proactive threat analysis. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/104-nat.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/104-nat.md index ec9529f81..b82036430 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/104-nat.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/104-nat.md @@ -22,4 +22,4 @@ NAT is implemented on a router, firewall or a similar networking device. When de - **Performance impact:** The translation process may introduce latency and reduce performance in high-traffic networks. - **End-to-End Connectivity:** NAT generally breaks the end-to-end communication model of the internet, which can cause issues in some scenarios. -In summary, NAT plays a crucial role in modern cybersecurity by conserving IP addresses, obscuring internal networks and providing a level of security against external threats. While there are some disadvantages, its benefits make it an essential component in network security. \ No newline at end of file +In summary, NAT plays a crucial role in modern cybersecurity by conserving IP addresses, obscuring internal networks and providing a level of security against external threats. While there are some disadvantages, its benefits make it an essential component in network security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/105-ip.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/105-ip.md index ac3bd7354..84937345a 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/105-ip.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/105-ip.md @@ -35,4 +35,4 @@ To safeguard against IP-based threats, consider implementing the following cyber - Employ intrusion detection and prevention systems (IDPS) to monitor and counter threats. - Educate users about safe internet habits and the importance of strong, unique passwords. -Understanding IP and its associated security risks is crucial in ensuring the safe and efficient transfer of data across networks. By following best practices, you can help protect your network and devices from potential cyber threats. \ No newline at end of file +Understanding IP and its associated security risks is crucial in ensuring the safe and efficient transfer of data across networks. By following best practices, you can help protect your network and devices from potential cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/106-dns.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/106-dns.md index 66b2287f6..8f926c723 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/106-dns.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/106-dns.md @@ -20,4 +20,4 @@ Some common DNS record types you might encounter include: - **MX (Mail Exchange) Record**: Specifies the mail servers responsible for handling email for the domain. - **TXT (Text) Record**: Contains human-readable or machine-readable text, often used for verification purposes or providing additional information about a domain. -As an essential part of the internet, the security and integrity of the DNS infrastructure are crucial. However, it's vulnerable to various types of cyber attacks, such as DNS cache poisoning, Distributed Denial of Service (DDoS) attacks, and DNS hijacking. Proper DNS security measures, such as DNSSEC (DNS Security Extensions) and monitoring unusual DNS traffic patterns, can help mitigate risks associated with these attacks. \ No newline at end of file +As an essential part of the internet, the security and integrity of the DNS infrastructure are crucial. However, it's vulnerable to various types of cyber attacks, such as DNS cache poisoning, Distributed Denial of Service (DDoS) attacks, and DNS hijacking. Proper DNS security measures, such as DNSSEC (DNS Security Extensions) and monitoring unusual DNS traffic patterns, can help mitigate risks associated with these attacks. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/107-dhcp.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/107-dhcp.md index 84af76ccf..2c7d86eba 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/107-dhcp.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/107-dhcp.md @@ -20,4 +20,4 @@ The DHCP process consists of four main steps: ## Importance in Cyber Security -Understanding DHCP is crucial for network professionals and cyber security experts as it can be a potential attack vector. Adversaries can exploit DHCP by setting up rogue DHCP servers on the network, conducting man-in-the-middle attacks or even conducting denial-of-service attacks. Consequently, securing DHCP servers, monitoring network traffic for anomalies, and employing strong authentication and authorization methods are essential practices for maintaining network security. \ No newline at end of file +Understanding DHCP is crucial for network professionals and cyber security experts as it can be a potential attack vector. Adversaries can exploit DHCP by setting up rogue DHCP servers on the network, conducting man-in-the-middle attacks or even conducting denial-of-service attacks. Consequently, securing DHCP servers, monitoring network traffic for anomalies, and employing strong authentication and authorization methods are essential practices for maintaining network security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/108-router.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/108-router.md index 90586e5fd..139d956fa 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/108-router.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/108-router.md @@ -30,4 +30,4 @@ As routers are a critical gateway between your network and the internet, it's es - Create a guest network: If your router supports it, create a separate network for guests to use. This isolates them from your primary network, ensuring that they cannot access your devices or data. -By understanding routers and their role in cybersecurity, you can take the necessary steps to secure your network and protect your data. \ No newline at end of file +By understanding routers and their role in cybersecurity, you can take the necessary steps to secure your network and protect your data. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/109-switch.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/109-switch.md index e5acabd06..e61db330d 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/109-switch.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/109-switch.md @@ -3,6 +3,7 @@ A **switch** is a networking device that connects devices together on a computer network. It filters and forwards data packets between different devices by using their MAC (Media Access Control) addresses to identify them. Switches play an essential role in managing traffic and ensuring that data reaches its intended destination efficiently. ## Key Features and Functions + - **Intelligent Traffic Management:** Switches monitor the data packets as they travel through the network, only forwarding them to the devices that need to receive the data. This optimizes network performance and reduces congestion. - **Layer 2 Switching:** Switches operate at the data link layer (Layer 2) of the OSI (Open Systems Interconnection) model. They use MAC addresses to identify devices and determine the appropriate path for data packets. - **Broadcast Domains:** A switch creates separate collision domains, breaking up a single broadcast domain into multiple smaller ones, which helps minimize the impact of broadcast traffic on network performance. @@ -15,4 +16,4 @@ Switches can be categorized into two main types: - **Unmanaged Switch:** These switches are simple plug-and-play devices that require no configuration. They are best suited for small networks or places where advanced features and customized settings are not necessary. - **Managed Switch:** These switches offer a higher level of control and customization, allowing network administrators to monitor, manage, and secure network traffic. Managed switches are typically used in enterprise-level networks or environments that require advanced security features and traffic optimization. -By understanding the role and functionality of switches within computer networks, you can better navigate the complexities of cyber security and make informed decisions for optimizing network performance and security. \ No newline at end of file +By understanding the role and functionality of switches within computer networks, you can better navigate the complexities of cyber security and make informed decisions for optimizing network performance and security. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/110-vpn.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/110-vpn.md index 57e9cde8d..ca34c453b 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/110-vpn.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/110-vpn.md @@ -12,4 +12,4 @@ When you connect to a VPN, your device's IP address is replaced with the VPN ser Using a reliable VPN service is an essential part of maintaining good cyber security, especially when using public Wi-Fi networks or accessing sensitive information online. -Keep in mind, however, that not all VPNs are created equal. Make sure to do your research and choose a reputable VPN provider with a strong focus on privacy and security. Some popular and trusted VPN services include ExpressVPN, NordVPN, and CyberGhost. \ No newline at end of file +Keep in mind, however, that not all VPNs are created equal. Make sure to do your research and choose a reputable VPN provider with a strong focus on privacy and security. Some popular and trusted VPN services include ExpressVPN, NordVPN, and CyberGhost. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/index.md index 5bf00c8c5..85e58a302 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-the-terminology/index.md @@ -1 +1 @@ -# Understand the terminology \ No newline at end of file +# Understand the terminology diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md index d03b26718..784081d6d 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md @@ -16,7 +16,7 @@ This example will display the man page for the `ls` command, which is used to li ## Man Page Sections -Man pages are divided into sections, which cover different topics such as general commands, system calls, library functions, device drivers, and more. Each section is numbered, and you may see the same command or utility listed in different sections. +Man pages are divided into sections, which cover different topics such as general commands, system calls, library functions, device drivers, and more. Each section is numbered, and you may see the same command or utility listed in different sections. The section numbers are as follows: @@ -47,4 +47,4 @@ Once you're inside a man page, you can navigate and search using the following k - `N` to jump to the previous instance of the search term - `q` to quit the man page and return to the command prompt -The man pages are an invaluable resource for understanding how and when to use specific commands and utilities on Unix-based systems. Make it a habit to refer to them whenever you encounter an unfamiliar command or need a reference for using a specific utility. \ No newline at end of file +The man pages are an invaluable resource for understanding how and when to use specific commands and utilities on Unix-based systems. Make it a habit to refer to them whenever you encounter an unfamiliar command or need a reference for using a specific utility. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/101-lan.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/101-lan.md index 445009063..477d0048c 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/101-lan.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/101-lan.md @@ -36,4 +36,4 @@ Understanding LAN is crucial for maintaining a secure network environment. Since - **Regular Updates**: Keep your workstations, servers and network devices up-to-date with security patches and updates to fix vulnerabilities. - **Network Monitoring**: Use network monitoring tools to keep track of network traffic and identify potential threats or anomalies. -By understanding the components and importance of LAN, you can effectively contribute to improving your organization's cyber security posture. In the next chapter, we will discuss additional cyber security topics that you need to be familiar with. \ No newline at end of file +By understanding the components and importance of LAN, you can effectively contribute to improving your organization's cyber security posture. In the next chapter, we will discuss additional cyber security topics that you need to be familiar with. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/103-wlan.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/103-wlan.md index 36f3b5e3b..71f5bdf16 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/103-wlan.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/103-wlan.md @@ -7,7 +7,6 @@ A **Wireless Local Area Network (WLAN)** is a type of local area network that us There are two main components in a WLAN: - **Wireless Access Point (WAP)**: A WAP is a networking device that enables wireless devices to connect to the network. It acts as a bridge between the devices and the wired network, converting RF signals into data that can travel through a wired connection. - - **Wireless Client**: Wireless clients are devices like laptops, smartphones, and tablets that are fitted with WLAN adapters. These adapters enable devices to send and receive wireless signals to connect with the WAP. ## Key WLAN Standards @@ -32,4 +31,4 @@ As WLANs use wireless signals to transmit data, they can be susceptible to vario - **Wi-Fi Protected Access 3 (WPA3)**: WPA3 is the latest security standard with enhanced encryption and authentication features. It addresses the vulnerabilities in WPA2 and provides even stronger security for WLANs. -To maintain a secure WLAN, it's essential to use the appropriate security standard, change default settings, and regularly update firmware to address any security vulnerabilities. \ No newline at end of file +To maintain a secure WLAN, it's essential to use the appropriate security standard, change default settings, and regularly update firmware to address any security vulnerabilities. diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/index.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/index.md index 10cc68acc..9e70d9fc5 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/index.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/index.md @@ -1 +1 @@ -# Understand these \ No newline at end of file +# Understand these diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md index dc1864014..5dc852cc1 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md @@ -49,4 +49,4 @@ These suggested best practices can maximize the effectiveness of salting: --- -In summary, salting is a vital technique that enhances password security by adding a unique and random element to each password hash. This added layer of protection defends against precomputed tables and dictionary attacks, ensuring the security of user credentials in the face of persistent hacking efforts. Paired with best practices, salting can provide a robust defense against the ever-evolving threats in the cybersecurity landscape. \ No newline at end of file +In summary, salting is a vital technique that enhances password security by adding a unique and random element to each password hash. This added layer of protection defends against precomputed tables and dictionary attacks, ensuring the security of user credentials in the face of persistent hacking efforts. Paired with best practices, salting can provide a robust defense against the ever-evolving threats in the cybersecurity landscape. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/101-hashing.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/101-hashing.md index b1ef4f102..ff114acf9 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/101-hashing.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/101-hashing.md @@ -1,16 +1,16 @@ # Hashing -In this section, we will discuss the concept of *hashing*, an important cryptographic primitive, and its multiple applications in the realm of cyber security. +In this section, we will discuss the concept of _hashing_, an important cryptographic primitive, and its multiple applications in the realm of cyber security. **What is Hashing?** -A *hash function* is a mathematical algorithm that takes an input (or 'message') and returns a fixed-size string of bytes, usually in the form of a hexadecimal number. The output is called the *hash value* or simply, the *hash*. Some characteristics of a good hash function are: +A _hash function_ is a mathematical algorithm that takes an input (or 'message') and returns a fixed-size string of bytes, usually in the form of a hexadecimal number. The output is called the _hash value_ or simply, the _hash_. Some characteristics of a good hash function are: -- *Deterministic*: The same input will always result in the same hash output. -- *Efficient*: The time taken to compute the hash should be as quick as possible. -- *Avalanche Effect*: A tiny change in the input should result in a drastically different hash output. -- *One-way Function*: It should be computationally infeasible to reverse-engineer the input from its hash output. -- *Collision Resistance*: It should be extremely unlikely to find two different inputs that produce the same hash output. +- _Deterministic_: The same input will always result in the same hash output. +- _Efficient_: The time taken to compute the hash should be as quick as possible. +- _Avalanche Effect_: A tiny change in the input should result in a drastically different hash output. +- _One-way Function_: It should be computationally infeasible to reverse-engineer the input from its hash output. +- _Collision Resistance_: It should be extremely unlikely to find two different inputs that produce the same hash output. **Common Hashing Algorithms** @@ -24,12 +24,12 @@ There are several widely used hashing algorithms with different strengths and we Hashing is a versatile mechanism and serves many purposes in cyber security, such as: -- *Data Integrity*: Hashing can be used to ensure that a file or piece of data hasn't been altered or tampered with. Comparing the hash value of the original and received data can determine if they match. +- _Data Integrity_: Hashing can be used to ensure that a file or piece of data hasn't been altered or tampered with. Comparing the hash value of the original and received data can determine if they match. -- *Password Storage*: Storing users' passwords as hashes makes it difficult for attackers to obtain the plain-text passwords even if they gain access to the stored hashes. +- _Password Storage_: Storing users' passwords as hashes makes it difficult for attackers to obtain the plain-text passwords even if they gain access to the stored hashes. -- *Digital Signatures*: Digital signatures often rely on cryptographic hash functions to verify the integrity and authenticity of a message or piece of data. +- _Digital Signatures_: Digital signatures often rely on cryptographic hash functions to verify the integrity and authenticity of a message or piece of data. -- *Proof of Work*: Hash functions are employed in consensus algorithms like the one used in Bitcoin mining, as they can solve computational challenges. +- _Proof of Work_: Hash functions are employed in consensus algorithms like the one used in Bitcoin mining, as they can solve computational challenges. -In conclusion, hashing is a crucial technique in ensuring data integrity and maintaining security in various areas of cyber security. Understanding and adopting secure hashing algorithms is an essential skill for any cyber security professional. \ No newline at end of file +In conclusion, hashing is a crucial technique in ensuring data integrity and maintaining security in various areas of cyber security. Understanding and adopting secure hashing algorithms is an essential skill for any cyber security professional. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/102-key-exchange.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/102-key-exchange.md index 8079fb1d3..b09a54367 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/102-key-exchange.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/102-key-exchange.md @@ -6,9 +6,9 @@ Key exchange, also known as key establishment, is a process where two parties es Before diving into key exchange methods, let's briefly differentiate between symmetric and asymmetric encryption: -* **Symmetric encryption** uses the same key for encryption and decryption. Examples include the Advanced Encryption Standard (AES) and Triple Data Encryption Algorithm (3DES). The main challenge in symmetric encryption is securely sharing the key between the involved parties. +- **Symmetric encryption** uses the same key for encryption and decryption. Examples include the Advanced Encryption Standard (AES) and Triple Data Encryption Algorithm (3DES). The main challenge in symmetric encryption is securely sharing the key between the involved parties. -* **Asymmetric encryption**, also known as public-key cryptography, uses two different keys - a private key and a public key. The private key is kept secret, while the public key is shared freely. You can encrypt a message using the recipient's public key, and only the corresponding private key can decrypt it. Examples of asymmetric encryption algorithms include RSA and Elliptic Curve Cryptography (ECC). +- **Asymmetric encryption**, also known as public-key cryptography, uses two different keys - a private key and a public key. The private key is kept secret, while the public key is shared freely. You can encrypt a message using the recipient's public key, and only the corresponding private key can decrypt it. Examples of asymmetric encryption algorithms include RSA and Elliptic Curve Cryptography (ECC). ## Diffie-Hellman Key Exchange @@ -40,4 +40,4 @@ In practice, secure key exchange often involves the use of public-key infrastruc During key exchange, parties exchange certificates to verify each other's public keys. This process is often followed by a secure key exchange protocol like DH or ECDH to establish a shared secret key for symmetric encryption. -In conclusion, key exchange protocols play a crucial role in ensuring secure communication. Understanding the fundamentals of key exchange and its various mechanisms can greatly help in achieving robust cybersecurity. \ No newline at end of file +In conclusion, key exchange protocols play a crucial role in ensuring secure communication. Understanding the fundamentals of key exchange and its various mechanisms can greatly help in achieving robust cybersecurity. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/103-pki.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/103-pki.md index dcce130bb..f4cce3c6e 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/103-pki.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/103-pki.md @@ -31,4 +31,4 @@ Public Key Infrastructure, or PKI, is a system used to manage the distribution a - Digital signatures - Internet of Things (IoT) security -In summary, PKI plays a crucial role in establishing trust and secure communication between entities in the digital world. By using a system of trusted CAs and digital certificates, PKI provides a secure means of exchanging data, authentication, and maintaining the integrity of digital assets. \ No newline at end of file +In summary, PKI plays a crucial role in establishing trust and secure communication between entities in the digital world. By using a system of trusted CAs and digital certificates, PKI provides a secure means of exchanging data, authentication, and maintaining the integrity of digital assets. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/104-private-vs-public-key.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/104-private-vs-public-key.md index 9b3c693b7..a3f8f330a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/104-private-vs-public-key.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/104-private-vs-public-key.md @@ -7,6 +7,7 @@ Cryptography plays a vital role in securing cyber systems from unauthorized acce A Private Key, also known as a Secret Key, is a confidential cryptographic key that is uniquely associated with an individual or an organization. It should be kept secret and not revealed to anyone, except the authorized person who owns it. The Private Key is used for decrypting data that was encrypted using the corresponding Public Key, or for signing digital documents, proving the identity of the signer. Key characteristics of Private Keys: + - Confidential and not shared with others - Used for decryption or digital signing - Loss or theft of Private Key can lead to data breaches and compromise of sensitive information @@ -16,6 +17,7 @@ Key characteristics of Private Keys: A Public Key is an openly available cryptographic key that is paired with a Private Key. Anyone can use the Public Key to encrypt data or to verify signatures, but only the person/organization with the corresponding Private Key can decrypt the encrypted data or create signatures. The Public Key can be distributed freely without compromising the security of the underlying cryptographic system. Key characteristics of Public Keys: + - Publicly available and can be shared with anyone - Used for encryption or verifying digital signatures - Loss or theft of Public Key does not compromise sensitive information or communication security @@ -29,4 +31,4 @@ The main differences between Private and Public keys are as follows: - Purpose: The Private Key is used for decrypting data and creating digital signatures, while the Public Key is used for encrypting data and verifying digital signatures. - Security: Loss or theft of the Private Key can lead to serious security breaches while losing a Public Key does not compromise the security of the system. -Understanding the roles and differences between Private and Public Keys is essential for ensuring the effective application of Public-Key Cryptography in securing cyber systems and protecting sensitive information. \ No newline at end of file +Understanding the roles and differences between Private and Public Keys is essential for ensuring the effective application of Public-Key Cryptography in securing cyber systems and protecting sensitive information. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/105-obfuscation.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/105-obfuscation.md index 01989f63d..8cb5504bc 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/105-obfuscation.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/105-obfuscation.md @@ -5,6 +5,7 @@ Obfuscation is the practice of making something difficult to understand or find ## 5.1 Why Use Obfuscation? The primary purpose of obfuscation is to enhance security by: + - Concealing sensitive information from unauthorized access or misuse. - Protecting intellectual property (such as proprietary algorithms and code). - Preventing or impeding reverse engineering, tampering, or analysis of code or data structures. @@ -17,19 +18,19 @@ There are several techniques for obfuscating data or code, including: - **Identifier renaming**: This technique involves changing the names of variables, functions, or objects in code to make it harder for an attacker to understand their purpose or behavior. - *Example: Renaming `processPayment()` to `a1b2c3()`.* + _Example: Renaming `processPayment()` to `a1b2c3()`._ - **Control flow alteration**: This involves modifying the structure of code to make it difficult to follow or analyze, without affecting its functionality. This can include techniques such as inserting dummy loops or conditionals, or changing the order of instructions. - *Example: Changing a straightforward loop into a series of nested loops with added conditional statements.* + _Example: Changing a straightforward loop into a series of nested loops with added conditional statements._ - **Data encoding**: Transforming or encoding data can make it less legible and harder to extract or manipulate. This can involve encoding strings or data structures, or splitting data across multiple variables or containers. - *Example: Encoding a string as a series of character codes or a base64-encoded binary string.* + _Example: Encoding a string as a series of character codes or a base64-encoded binary string._ - **Code encryption**: Encrypting portions of code or entire programs can prevent reverse engineering, tampering, or analysis. The code is decrypted at runtime, either by an interpreter or within the application itself. - *Example: Using a cryptographically secure encryption algorithm, such as AES, to encrypt the main logic of a program.* + _Example: Using a cryptographically secure encryption algorithm, such as AES, to encrypt the main logic of a program._ ## 5.3 Limitations and Considerations @@ -39,4 +40,4 @@ While obfuscation can be an effective deterrent against casual or unskilled atta - Obfuscation can impact performance and maintainability: The added complexity and overhead can make code slower to execute and harder to maintain or update. - Relying solely on obfuscation is not recommended: It should be used as one layer in a comprehensive security strategy that includes encryption, authentication, and access control. -In conclusion, obfuscation can be a useful tool to improve the security posture of a system, but it should not be relied upon as the only means of protection. \ No newline at end of file +In conclusion, obfuscation can be a useful tool to improve the security posture of a system, but it should not be relied upon as the only means of protection. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/index.md index 7b01e15e3..ae3286d10 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/index.md @@ -30,4 +30,4 @@ Proper key management is crucial to maintain the security of encrypted data. Key Cryptanalysis is the process of attempting to break cryptographic systems, often by exploiting weaknesses in the algorithms, protocols, or key management processes. The strength of a cryptographic system lies in its resistance to cryptanalysis. As a cyber security professional, understanding cryptanalysis techniques can help you identify and protect against potential vulnerabilities in your organization's cryptographic infrastructure. -In conclusion, cryptography is a fundamental aspect of cyber security, offering a layer of protection for sensitive data in digital networks. To effectively implement cryptography in your organization, you should be familiar with the various types of cryptography, cryptographic protocols, and key management best practices, and understand the potential threats posed by cryptanalysis. \ No newline at end of file +In conclusion, cryptography is a fundamental aspect of cyber security, offering a layer of protection for sensitive data in digital networks. To effectively implement cryptography in your organization, you should be familiar with the various types of cryptography, cryptographic protocols, and key management best practices, and understand the potential threats posed by cryptanalysis. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-malware-and-types.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-malware-and-types.md index 97e099616..abac13777 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-malware-and-types.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-malware-and-types.md @@ -34,4 +34,4 @@ A rootkit is a type of malware designed to hide or obscure the presence of other Keyloggers are a type of malware that monitor and record users' keystrokes, allowing attackers to capture sensitive information, such as login credentials or financial information entered on a keyboard. -Understanding the different types of malware can help you better identify and protect against various cyber threats. As the cyber landscape continues to evolve, it's essential to stay informed about emerging malware and equip yourself with the necessary security skills and knowledge. \ No newline at end of file +Understanding the different types of malware can help you better identify and protect against various cyber threats. As the cyber landscape continues to evolve, it's essential to stay informed about emerging malware and equip yourself with the necessary security skills and knowledge. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/100-preparation.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/100-preparation.md index a6de6450d..e08b9d400 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/100-preparation.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/100-preparation.md @@ -4,7 +4,7 @@ The **preparation** stage of the incident response process is crucial to ensure ## Incident Response Plan -An *Incident Response Plan* is a documented set of guidelines and procedures for identifying, investigating, and responding to security incidents. It should include the following components: +An _Incident Response Plan_ is a documented set of guidelines and procedures for identifying, investigating, and responding to security incidents. It should include the following components: - **Roles and Responsibilities**: Define the roles within the incident response team and the responsibilities of each member. - **Incident Classification**: Establish criteria to classify incidents based on their severity, impact, and type. @@ -14,7 +14,7 @@ An *Incident Response Plan* is a documented set of guidelines and procedures for ## Incident Response Team -An *Incident Response Team* is a group of individuals within an organization that have been appointed to manage security incidents. The team should be comprised of members with diverse skillsets and backgrounds, including but not limited to: +An _Incident Response Team_ is a group of individuals within an organization that have been appointed to manage security incidents. The team should be comprised of members with diverse skillsets and backgrounds, including but not limited to: - Security Analysts - Network Engineers @@ -30,4 +30,4 @@ Employee training and awareness is a crucial component of the preparation stage. The preparation phase is not a one-time activity; it should be regularly revisited, evaluated, and updated based on lessons learned from previous incidents, changes in the organization's structure, and emerging threats in the cybersecurity landscape. -In summary, the preparation stage is the foundation of an effective incident response process. By establishing a comprehensive plan, assembling a skilled team, and ensuring ongoing employee training and awareness, organizations can minimize the potential damage of cybersecurity incidents and respond to them quickly and effectively. \ No newline at end of file +In summary, the preparation stage is the foundation of an effective incident response process. By establishing a comprehensive plan, assembling a skilled team, and ensuring ongoing employee training and awareness, organizations can minimize the potential damage of cybersecurity incidents and respond to them quickly and effectively. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/101-identification.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/101-identification.md index af977f335..dde32dd24 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/101-identification.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/101-identification.md @@ -1,12 +1,12 @@ # Identification -The *Identification* step in the incident response process is the initial phase where an organization detects and confirms that a security incident has occurred. As the cornerstone of effective incident response, it is crucial to identify potential threats as quickly as possible. In this section, we will explore various aspects of the identification phase and discuss how to effectively recognize security incidents. +The _Identification_ step in the incident response process is the initial phase where an organization detects and confirms that a security incident has occurred. As the cornerstone of effective incident response, it is crucial to identify potential threats as quickly as possible. In this section, we will explore various aspects of the identification phase and discuss how to effectively recognize security incidents. ## Key Elements of Identification -- **Monitoring:** Implement robust monitoring systems, which include security information and event management (SIEM) solutions, intrusion detection systems (IDS), antivirus software, and firewalls, to consistently track and scrutinize IT environment activities. +- **Monitoring:** Implement robust monitoring systems, which include security information and event management (SIEM) solutions, intrusion detection systems (IDS), antivirus software, and firewalls, to consistently track and scrutinize IT environment activities. -- **Alerts and Indicators:** Establish clear and meaningful alerts and indicators of compromise (IoCs) to quickly identify and respond to anomalous behavior or potential threats. +- **Alerts and Indicators:** Establish clear and meaningful alerts and indicators of compromise (IoCs) to quickly identify and respond to anomalous behavior or potential threats. - **Threat Intelligence:** Leverage threat intelligence from various sources, such as reputable security vendors, industry partners, and government agencies, to stay informed about emerging threats and vulnerabilities. @@ -16,7 +16,7 @@ The *Identification* step in the incident response process is the initial phase ## Identifying Security Incidents -Detecting cyber incidents is an ongoing process which requires continuous refinement and improvement. Begin by focusing on early detection and quick containment, as incidents tend to become costlier the longer they remain undetected. +Detecting cyber incidents is an ongoing process which requires continuous refinement and improvement. Begin by focusing on early detection and quick containment, as incidents tend to become costlier the longer they remain undetected. Some key aspects to keep in mind when identifying security incidents are: @@ -26,4 +26,4 @@ Some key aspects to keep in mind when identifying security incidents are: - **Regularly review and update detection tools:** Keep detection tools up to date and ensure they are properly calibrated to minimize false positives and negatives. -As the author of this guide, I suggest you invest time and resources into developing a solid identification process. By putting in place effective detection measures, you are building the foundation for a successful incident response capability, empowering your organization to respond efficiently to cyber threats and minimize potential damages. \ No newline at end of file +As the author of this guide, I suggest you invest time and resources into developing a solid identification process. By putting in place effective detection measures, you are building the foundation for a successful incident response capability, empowering your organization to respond efficiently to cyber threats and minimize potential damages. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/102-containment.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/102-containment.md index 1765759ff..386de2d5d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/102-containment.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/102-containment.md @@ -23,4 +23,4 @@ The following are some key steps that you should follow during the containment p - **Implement Temporary Measures** - Take immediate actions to block the attacker and secure the environment while minimizing disruption. - **Update Containment Strategy** - Integrate lessons learned from previous incidents and external resources to continuously improve your containment process. -By properly executing the containment phase of the Incident Response Process, you will be well-prepared to eradicate the root cause of the cyber security threat and recover your affected systems with minimal damage to your organization. \ No newline at end of file +By properly executing the containment phase of the Incident Response Process, you will be well-prepared to eradicate the root cause of the cyber security threat and recover your affected systems with minimal damage to your organization. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/103-eradication.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/103-eradication.md index 8e5c543d7..cfcb5266d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/103-eradication.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/103-eradication.md @@ -18,4 +18,4 @@ In some cases, it may be necessary to restore compromised systems from known bac Be sure to retain any critical artifacts, logs, and other evidence associated with the incident. This information may be needed later for legal or insurance purposes, audit requirements, or continuous improvement of the organization's incident response capabilities. -Remember that each incident is unique, and the eradication strategy must be customized according to the given incident's specifics. Proper documentation and communication should be maintained throughout the process to ensure smooth execution and avoid overlooking critical aspects. After eradication has been completed, it is essential to move forward and strengthen the overall cybersecurity posture to prevent future incidents. \ No newline at end of file +Remember that each incident is unique, and the eradication strategy must be customized according to the given incident's specifics. Proper documentation and communication should be maintained throughout the process to ensure smooth execution and avoid overlooking critical aspects. After eradication has been completed, it is essential to move forward and strengthen the overall cybersecurity posture to prevent future incidents. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/104-recovery.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/104-recovery.md index 16caf3921..a6b619b6d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/104-recovery.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/104-recovery.md @@ -42,4 +42,4 @@ Thorough documentation of the incident, response actions, and post-incident anal Lastly, it is important to never consider the recovery process as "finished." Just as the threat landscape evolves, your organization should maintain a proactive approach to cyber security by regularly reviewing, updating, and enhancing your incident response process. -In summary, the recovery phase of the incident response process involves the restoration of affected systems and data, post-incident analysis, implementing improvements, documenting the incident, and maintaining a continuous improvement mindset. By following these steps, you will be better equipped to handle and recover from future cyber security incidents. \ No newline at end of file +In summary, the recovery phase of the incident response process involves the restoration of affected systems and data, post-incident analysis, implementing improvements, documenting the incident, and maintaining a continuous improvement mindset. By following these steps, you will be better equipped to handle and recover from future cyber security incidents. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/105-lessons-learned.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/105-lessons-learned.md index 420d4098c..fffef20bd 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/105-lessons-learned.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/105-lessons-learned.md @@ -22,4 +22,4 @@ Sharing the lessons learned with employees raises awareness and ensures that the It's crucial to maintain accurate and detailed records of security incidents, including the measures taken by the organization to address them. This documentation serves as evidence of the existence of an effective incident response plan, which may be required for legal, regulatory, and compliance purposes. Furthermore, documenting incidents helps organizations to learn from their experience, assess trends and patterns, and refine their security processes. -In conclusion, the lessons learned phase aims to identify opportunities to strengthen an organization's cybersecurity framework, prevent similar incidents from happening again, and continuously improve the incident response plan. Regular reviews of cybersecurity incidents contribute to building a robust and resilient security posture, mitigating risks and reducing the impact of cyber threats on the organization's assets and operations. \ No newline at end of file +In conclusion, the lessons learned phase aims to identify opportunities to strengthen an organization's cybersecurity framework, prevent similar incidents from happening again, and continuously improve the incident response plan. Regular reviews of cybersecurity incidents contribute to building a robust and resilient security posture, mitigating risks and reducing the impact of cyber threats on the organization's assets and operations. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/index.md index 7c02cc36c..f9022b0e9 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-incident-response-process/index.md @@ -52,4 +52,4 @@ The final stage of the incident response process aims to learn from the incident - Updating the incident response plan based on lessons learned - Sharing findings with relevant stakeholders and incorporating feedback for continuous improvement -An effective incident response process can significantly reduce the impact of security incidents and help organizations recover more quickly. Regular review and practice of the process will ensure that the right skills and knowledge are in place to handle any potential threats. \ No newline at end of file +An effective incident response process can significantly reduce the impact of security incidents and help organizations recover more quickly. Regular review and practice of the process will ensure that the right skills and knowledge are in place to handle any potential threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-owasp-top-10.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-owasp-top-10.md index 288e42dd3..86e89f4f3 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-owasp-top-10.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/101-owasp-top-10.md @@ -24,4 +24,4 @@ The OWASP Top 10 is updated periodically, with the most recent version released - **Insufficient Logging & Monitoring**: Insufficient logging and monitoring, coupled with inadequate integration with incident response, allow attackers to maintain their presence within a system, move laterally, and exfiltrate or tamper with data. -To mitigate these risks, the OWASP Top 10 project provides detailed information, including how to test for each risk, code examples for various programming languages, and specific steps to prevent or remediate the issues. By understanding and implementing the recommended practices, organizations can improve their web application security and protect their users' data. \ No newline at end of file +To mitigate these risks, the OWASP Top 10 project provides detailed information, including how to test for each risk, code examples for various programming languages, and specific steps to prevent or remediate the issues. By understanding and implementing the recommended practices, organizations can improve their web application security and protect their users' data. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-privilege-escalation-attacks.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-privilege-escalation-attacks.md index ce86c87a8..e53d94e39 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-privilege-escalation-attacks.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-privilege-escalation-attacks.md @@ -18,4 +18,4 @@ To protect your systems and data from privilege escalation attacks, consider imp - **Monitor and Log System Activities**: Implement logging and monitoring systems to detect suspicious account activities or changes in user privileges that may indicate a privilege escalation attack. -By understanding the types of privilege escalation attacks and following these best practices, you can create a more secure environment for your data and systems, and reduce the risk of unauthorized users gaining unrestricted access. \ No newline at end of file +By understanding the types of privilege escalation attacks and following these best practices, you can create a more secure environment for your data and systems, and reduce the risk of unauthorized users gaining unrestricted access. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/100-zero-day.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/100-zero-day.md index 28a57d947..8e08310cb 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/100-zero-day.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/100-zero-day.md @@ -1,6 +1,6 @@ # Zero Day -A **zero-day** refers to a vulnerability in software, hardware, or firmware that is unknown to the parties responsible for fixing or patching it. Cybercriminals can exploit these vulnerabilities to gain unauthorized access to systems, steal sensitive data, or perform other malicious activities. Zero-day vulnerabilities are particularly dangerous because they are difficult to detect and prevent, given that there are no existing fixes or defenses against them. +A **zero-day** refers to a vulnerability in software, hardware, or firmware that is unknown to the parties responsible for fixing or patching it. Cybercriminals can exploit these vulnerabilities to gain unauthorized access to systems, steal sensitive data, or perform other malicious activities. Zero-day vulnerabilities are particularly dangerous because they are difficult to detect and prevent, given that there are no existing fixes or defenses against them. ## Zero-Day Exploits @@ -17,4 +17,4 @@ Due to the unknown nature of zero-day vulnerabilities, traditional security meas - **Implement strong access control**: Control access to critical systems and data, limit the number of privileged accounts, and enforce least privilege policies wherever possible, making it harder for attackers to exploit zero-day vulnerabilities. - **Educate employees**: Train employees to recognize and avoid common attack vectors such as phishing emails or downloading suspicious files, as they can often be the initial entry point for zero-day exploits. -In conclusion, while it is impossible to predict and prevent zero-day vulnerabilities completely, organizations can improve their cyber resilience by taking a proactive approach and using a combination of security methods and best practices. \ No newline at end of file +In conclusion, while it is impossible to predict and prevent zero-day vulnerabilities completely, organizations can improve their cyber resilience by taking a proactive approach and using a combination of security methods and best practices. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/101-known-vs-unknown.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/101-known-vs-unknown.md index 423348c2a..92b6e73d4 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/101-known-vs-unknown.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/101-known-vs-unknown.md @@ -23,4 +23,4 @@ Unknown threats are those that have not yet been identified or documented by the Defending against unknown threats requires a proactive approach. Incorporating threat intelligence, network monitoring, and behavior-based anomaly detection can help organizations identify potential threats before they cause damage. Additionally, following the principle of least privilege, segmenting networks, and maintaining strong data encryption can reduce the impact of unknown threats when they are discovered. -In conclusion, understanding the difference between known and unknown threats is crucial for implementing effective cyber security measures. By staying informed about the latest threats and investing in the right security tools and practices to tackle both known and unknown risks, organizations can better protect their networks, systems, and data from cyber attacks. \ No newline at end of file +In conclusion, understanding the difference between known and unknown threats is crucial for implementing effective cyber security measures. By staying informed about the latest threats and investing in the right security tools and practices to tackle both known and unknown risks, organizations can better protect their networks, systems, and data from cyber attacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/102-apt.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/102-apt.md index 3aee9ea25..c7aae56e5 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/102-apt.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/102-apt.md @@ -20,4 +20,4 @@ Due to the sophisticated and persistent nature of APTs, they can be challenging - Keep systems updated and patched to prevent exploitation of known vulnerabilities. - Employ advanced threat intelligence solutions to identify and anticipate potential APT campaigns. -APT attacks can be damaging and disruptive to organizations, but understanding the nature of these threats and implementing a comprehensive security strategy can help minimize the risk and protect valuable assets. Remember, APTs are not just a concern for large enterprises and governments; organizations of all sizes can be targeted. Staying vigilant and proactive is key to staying safe from these advanced threats. \ No newline at end of file +APT attacks can be damaging and disruptive to organizations, but understanding the nature of these threats and implementing a comprehensive security strategy can help minimize the risk and protect valuable assets. Remember, APTs are not just a concern for large enterprises and governments; organizations of all sizes can be targeted. Staying vigilant and proactive is key to staying safe from these advanced threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/index.md index 317289ba1..c7e608c06 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/102-threat-classification/index.md @@ -47,4 +47,4 @@ DDoS attacks are attempts to render a computer system, network, or website unava - **Detection**: Implement monitoring and detection tools to identify threats or suspicious activity. - **Response**: Develop a response plan for handling incidents, including containment, remediation, and communication. -By understanding the various types of cyber threats and their characteristics, organizations can better protect themselves and their assets from potential attack. Regularly updating your threat classification knowledge and revising your security practices will ensure that your organization stays one step ahead of cyber criminals. \ No newline at end of file +By understanding the various types of cyber threats and their characteristics, organizations can better protect themselves and their assets from potential attack. Regularly updating your threat classification knowledge and revising your security practices will ensure that your organization stays one step ahead of cyber criminals. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-cia-triad.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-cia-triad.md index 77e892314..4d553936c 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-cia-triad.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-cia-triad.md @@ -32,4 +32,4 @@ Availability ensures that systems and information are accessible and functional - Fault Tolerance: The capacity of a system to continue functioning, even partially, in the presence of faults or failures. - Backups: Regularly saving copies of your data to prevent loss in case of a catastrophe, such as a hardware failure, malware attack, or natural disaster. -In summary, the CIA Triad is an essential aspect of cybersecurity, providing a clear framework to evaluate and implement security measures. By ensuring confidentiality, integrity, and availability, you create a robust and secure environment for your information and systems. \ No newline at end of file +In summary, the CIA Triad is an essential aspect of cybersecurity, providing a clear framework to evaluate and implement security measures. By ensuring confidentiality, integrity, and availability, you create a robust and secure environment for your information and systems. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/100-mac-based.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/100-mac-based.md index badee5899..39fa4283f 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/100-mac-based.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/100-mac-based.md @@ -32,4 +32,4 @@ To implement MAC-based hardening, it's important to follow these general steps: - **Train Staff**: Provide training to your staff to ensure understanding and adherence to your organization's MAC-based policies. - **Monitor and Audit**: Continually monitor the system for deviations from the MAC policies and perform periodic audits to verify their enforcement. -In summary, MAC-based hardening offers robust access controls by enforcing strict policies in accordance with your organization's security requirements. In doing so, it reduces the potential for unauthorized access to data and resources, ultimately enhancing your cybersecurity posture. \ No newline at end of file +In summary, MAC-based hardening offers robust access controls by enforcing strict policies in accordance with your organization's security requirements. In doing so, it reduces the potential for unauthorized access to data and resources, ultimately enhancing your cybersecurity posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/101-nac-based.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/101-nac-based.md index 6dea593a7..f1a91df7d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/101-nac-based.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/101-nac-based.md @@ -18,10 +18,10 @@ Network Access Control (NAC) based hardening is a crucial component in enhancing To get the most out of a NAC-based hardening approach, here are some best practices to consider: -* **Develop a Comprehensive Access Control Policy:** Clearly define the roles, responsibilities, and access permissions within your organization, ensuring that users have the least privilege required to perform their job functions. -* **Regularly Review and Update Policies:** As your organization evolves, so should your NAC policies. Regularly review and update policies to maintain alignment with organizational changes. -* **Educate Users:** Educate end-users about the importance of security and their role in maintaining a secure network. Offer training on topics such as password management, avoiding phishing attacks, and identifying social engineering attempts. -* **Ensure Comprehensive Coverage:** Ensure that your NAC solution covers all entry points to your network, including remote access, wireless networks, and guest access. -* **Monitor and Respond to NAC Alerts:** NAC solutions generate alerts when suspicious activity is detected, such as an unauthorized device trying to connect to the network. Make sure you have a process in place to respond to these alerts in a timely manner. +- **Develop a Comprehensive Access Control Policy:** Clearly define the roles, responsibilities, and access permissions within your organization, ensuring that users have the least privilege required to perform their job functions. +- **Regularly Review and Update Policies:** As your organization evolves, so should your NAC policies. Regularly review and update policies to maintain alignment with organizational changes. +- **Educate Users:** Educate end-users about the importance of security and their role in maintaining a secure network. Offer training on topics such as password management, avoiding phishing attacks, and identifying social engineering attempts. +- **Ensure Comprehensive Coverage:** Ensure that your NAC solution covers all entry points to your network, including remote access, wireless networks, and guest access. +- **Monitor and Respond to NAC Alerts:** NAC solutions generate alerts when suspicious activity is detected, such as an unauthorized device trying to connect to the network. Make sure you have a process in place to respond to these alerts in a timely manner. -By implementing NAC-based hardening in your cybersecurity strategy, you protect your organization from threats and maintain secure access to critical resources. \ No newline at end of file +By implementing NAC-based hardening in your cybersecurity strategy, you protect your organization from threats and maintain secure access to critical resources. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/102-port-blocking.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/102-port-blocking.md index e7f5c1d9c..39b8ed955 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/102-port-blocking.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/102-port-blocking.md @@ -1,6 +1,6 @@ # Port Blocking -Port blocking is an essential practice in hardening the security of your network and devices. It involves restricting, filtering, or entirely denying access to specific network ports to minimize exposure to potential cyber threats. By limiting access to certain ports, you can effectively safeguard your systems against unauthorized access and reduce the likelihood of security breaches. +Port blocking is an essential practice in hardening the security of your network and devices. It involves restricting, filtering, or entirely denying access to specific network ports to minimize exposure to potential cyber threats. By limiting access to certain ports, you can effectively safeguard your systems against unauthorized access and reduce the likelihood of security breaches. ## Why is Port Blocking Important? @@ -18,4 +18,4 @@ To implement port blocking, consider the following steps: - **Testing**: Test your configuration to ensure that only the necessary ports are accessible, and the blocked ports are indeed blocked. - **Monitoring and maintaining**: Regularly monitor and review open ports for any possible changes, and update your port blocking policy and configurations as needed. -Remember, implementing port blocking is just one piece of a comprehensive cybersecurity strategy. Be sure to consider additional hardening concepts and best practices to ensure your network remains secure. \ No newline at end of file +Remember, implementing port blocking is just one piece of a comprehensive cybersecurity strategy. Be sure to consider additional hardening concepts and best practices to ensure your network remains secure. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/103-group-policy.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/103-group-policy.md index d3a2339b4..9afd06ae3 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/103-group-policy.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/103-group-policy.md @@ -24,4 +24,4 @@ Here are some typical scenarios in which Group Policy can be utilized to enforce - **Restricted Groups**: Manage group memberships, including local administrator groups, to ensure that only authorized users have elevated privileges on targeted devices. -By understanding and leveraging the capabilities of Group Policy, you can establish a robust and secure environment that meets your organization's specific requirements. Keep in mind that maintaining a well-documented, granular, and least-privileged approach to Group Policy settings will help ensure a manageable and resilient security posture. \ No newline at end of file +By understanding and leveraging the capabilities of Group Policy, you can establish a robust and secure environment that meets your organization's specific requirements. Keep in mind that maintaining a well-documented, granular, and least-privileged approach to Group Policy settings will help ensure a manageable and resilient security posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/104-acls.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/104-acls.md index f41e4261b..0e16072dc 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/104-acls.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/104-acls.md @@ -1,8 +1,9 @@ # ACLs -Access Control Lists (ACLs) act as an essential part of an organization's security infrastructure by helping to manage access rights to resources and maintain security between users, groups, and systems. +Access Control Lists (ACLs) act as an essential part of an organization's security infrastructure by helping to manage access rights to resources and maintain security between users, groups, and systems. In this section, we will discuss the following: + - What are Access Control Lists - Types of ACLs - How to implement and administer ACLs @@ -16,17 +17,17 @@ Access Control Lists are rule sets that define which user, group, or system has There are two primary types of ACLs: Discretionary and Mandatory. - **Discretionary Access Control Lists (DACLs)** -DACLs allow the owner of a resource to determine who can gain access to the resource, and the level of access they can have. For example, a user or a group of users may have read access rights to a particular file, whereas another group may have full control over the file. + DACLs allow the owner of a resource to determine who can gain access to the resource, and the level of access they can have. For example, a user or a group of users may have read access rights to a particular file, whereas another group may have full control over the file. - **Mandatory Access Control Lists (MACLs)** -MACLs rely on predefined security labels or classifications to enforce access control. In this case, resources are assigned security labels, and users or systems are given security clearances. Access is granted only if the user's security clearance level matches the resource label. + MACLs rely on predefined security labels or classifications to enforce access control. In this case, resources are assigned security labels, and users or systems are given security clearances. Access is granted only if the user's security clearance level matches the resource label. ## Implementing and Administering ACLs Here are some best practices you can follow when implementing and administering Access Control Lists: - **Define clear access policies**: Establish clear rules and guidelines for accessing resources, such as who can access specific resources and what type of access they can have. - + - **Use Role-Based Access Control (RBAC)**: Assign permissions to roles instead of individual users. This will help simplify the ACL management process. - **Regular audits and reviews**: Periodically review and update the ACLs to ensure that access permissions are aligned with business requirements and security policies. @@ -35,4 +36,4 @@ Here are some best practices you can follow when implementing and administering - **Maintain a change management process**: Document all changes to ACLs, including the date of change, the reason for the change, and the individual responsible for executing the change. -Remember that a well-implemented and maintained ACL system can significantly reduce the risks associated with unauthorized access to your organization's critical assets. \ No newline at end of file +Remember that a well-implemented and maintained ACL system can significantly reduce the risks associated with unauthorized access to your organization's critical assets. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/105-sinkholes.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/105-sinkholes.md index 79bcd3fd6..79d582add 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/105-sinkholes.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/105-sinkholes.md @@ -31,4 +31,4 @@ There are mainly two types of sinkholes used in cybersecurity: Passive Sinkholes ## Conclusion -Sinkholes are valuable tools in the cybersecurity arsenal, helping to prevent and mitigate the effects of DDoS attacks and botnets. By isolating malicious traffic, they not only minimize the impact of attacks on networks but also provide valuable insights into attack patterns, contributing to the development of more robust cybersecurity measures. \ No newline at end of file +Sinkholes are valuable tools in the cybersecurity arsenal, helping to prevent and mitigate the effects of DDoS attacks and botnets. By isolating malicious traffic, they not only minimize the impact of attacks on networks but also provide valuable insights into attack patterns, contributing to the development of more robust cybersecurity measures. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/106-patching.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/106-patching.md index 2366eb318..0a7890992 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/106-patching.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/106-patching.md @@ -26,4 +26,4 @@ To make patching effective, organizations need to establish a well-structured pa - **Patch rollback** - In case a patch causes unexpected issues or conflicts, having a plan for rolling back patches is essential. This may include creating backups and having a process for quickly restoring systems to their pre-patch state. -By integrating patching into your organization's cyber security strategy, you can significantly reduce the attack surface and protect your critical assets from cyber threats. Regular patching, combined with other hardening concepts and best practices, ensures a strong and resilient cyber security posture. \ No newline at end of file +By integrating patching into your organization's cyber security strategy, you can significantly reduce the attack surface and protect your critical assets from cyber threats. Regular patching, combined with other hardening concepts and best practices, ensures a strong and resilient cyber security posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/107-jump-server.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/107-jump-server.md index bab3ec61e..8cfcc1259 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/107-jump-server.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/107-jump-server.md @@ -17,4 +17,4 @@ A **jump server**, also known as a **bastion host** or **jump host**, is a criti - **Employ Network Segmentation**: Deploy the jump server in a separate network segment from the rest of the environment. Implement strong firewall rules and access control lists (ACLs) to control traffic between the segments. - **Monitor and Audit**: Regularly monitor and review the logs and activity on the jump server to detect and investigate security incidents. Enable security alerts and notifications for suspicious activities. -In summary, a jump server is a crucial security component that helps protect sensitive network environments by providing isolation, access control, and monitoring. By properly configuring and managing a jump server, organizations can significantly reduce the risk of unauthorized access and potential security breaches. \ No newline at end of file +In summary, a jump server is a crucial security component that helps protect sensitive network environments by providing isolation, access control, and monitoring. By properly configuring and managing a jump server, organizations can significantly reduce the risk of unauthorized access and potential security breaches. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/108-endpoint-security.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/108-endpoint-security.md index cb119a487..aa1e30c74 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/108-endpoint-security.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/108-endpoint-security.md @@ -24,4 +24,4 @@ To effectively secure your endpoints, consider implementing the following measur - **User Training**: Educate users about the importance of endpoint security and the best practices for maintaining it. This includes topics like creating strong passwords, avoiding phishing scams, and following safe browsing practices. -By taking a comprehensive approach to endpoint security, you can protect your organization's network and sensitive data from the growing threat of cyberattacks. \ No newline at end of file +By taking a comprehensive approach to endpoint security, you can protect your organization's network and sensitive data from the growing threat of cyberattacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/index.md index c2aa05056..271554d0a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/103-hardening-concepts/index.md @@ -34,4 +34,4 @@ Perform regular audits on the security of your systems, networks, and applicatio Ensure that all users are educated and aware of security threats and practices, including phishing, password security, and safe browsing habits. Regularly train and refresh employees on security best practices to maintain a security-conscious environment. -By implementing these hardening concepts, you can significantly enhance the security of your systems, networks, and applications, reducing the risk of cyber threats and unauthorized access. \ No newline at end of file +By implementing these hardening concepts, you can significantly enhance the security of your systems, networks, and applications, reducing the risk of cyber threats and unauthorized access. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/104-handshakes.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/104-handshakes.md index 1c5f3b80f..4fffa8ee2 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/104-handshakes.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/104-handshakes.md @@ -4,7 +4,7 @@ In the world of cyber security, a **handshake** refers to the process of establi There are two common types of handshakes in cyber security: -- **Three-Way Handshake** +- **Three-Way Handshake** - **Cryptographic Handshake** ## Three-Way Handshake (TCP Handshake) @@ -28,4 +28,4 @@ A cryptographic handshake is used to establish a secure connection using cryptog Once this process is successfully completed, a secure communication channel is established, and encrypted data can be shared between both parties. -Understanding handshakes in cyber security is crucial for professionals, as it helps ensure secure communication and data exchange between devices and users. This knowledge can be useful in protecting sensitive information and preventing cyber attacks. \ No newline at end of file +Understanding handshakes in cyber security is crucial for professionals, as it helps ensure secure communication and data exchange between devices and users. This knowledge can be useful in protecting sensitive information and preventing cyber attacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/105-threat-intel-osint.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/105-threat-intel-osint.md index 8c431b225..d1800a67d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/105-threat-intel-osint.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/105-threat-intel-osint.md @@ -39,4 +39,4 @@ Collecting and analyzing OSINT for threat intelligence may seem like a daunting - **Collaborate and share with peers**: The security community is known for collaboration and knowledge sharing. Engage with other security professionals to benefit from their knowledge and experience. -In conclusion, OSINT is a significant aspect of threat intelligence that helps organizations identify and mitigate potential security threats. By effectively collecting and analyzing OSINT, you can gain a better understanding of the ever-evolving threat landscape and develop more effective strategies to protect your organization. \ No newline at end of file +In conclusion, OSINT is a significant aspect of threat intelligence that helps organizations identify and mitigate potential security threats. By effectively collecting and analyzing OSINT, you can gain a better understanding of the ever-evolving threat landscape and develop more effective strategies to protect your organization. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/106-false-true-negative-positive.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/106-false-true-negative-positive.md index 4484425d9..b88c9936a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/106-false-true-negative-positive.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/106-false-true-negative-positive.md @@ -1,6 +1,6 @@ # False Negative / False Positive -In cybersecurity, one important aspect is the accuracy of security tools and systems in detecting threats and attacks. To capture this concept, we refer to four terms: *true positive, true negative, false positive, and false negative*. +In cybersecurity, one important aspect is the accuracy of security tools and systems in detecting threats and attacks. To capture this concept, we refer to four terms: _true positive, true negative, false positive, and false negative_. ## True Positive (TP) @@ -21,9 +21,10 @@ A false negative occurs when the security tool fails to detect an actual threat To have an effective cybersecurity system, security professionals aim to maximize true positives and true negatives, while minimizing false positives and false negatives. Balancing these aspects ensures that the security tools maintain their effectiveness without causing undue disruptions to a user's experience. ## Key Points + - **True Positive (TP)**: Correctly identifying a threat - **True Negative (TN)**: Correctly identifying there is no threat - **False Positive (FP)**: Mistakenly identifying a non-threat as a threat - **False Negative (FN)**: Failing to detect a real threat -In summary, understanding false true negative positive concepts is crucial in developing and maintaining an effective cyber security system. By considering these metrics, security professionals can optimize their tools and processes to provide the best protection against cyber threats. \ No newline at end of file +In summary, understanding false true negative positive concepts is crucial in developing and maintaining an effective cyber security system. By considering these metrics, security professionals can optimize their tools and processes to provide the best protection against cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/107-blue-team-read-team-purple-team.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/107-blue-team-read-team-purple-team.md index 1132fdd0b..b86a89d87 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/107-blue-team-read-team-purple-team.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/107-blue-team-read-team-purple-team.md @@ -39,4 +39,4 @@ The Purple Team bridges the gap between the Blue Team and Red Team, helping to c - Evaluate and measure the effectiveness of security controls - Foster a culture of continuous improvement and collaboration -By investing in Blue, Red, and Purple Team efforts, organizations can achieve a more robust and resilient security posture, capable of withstanding and adapting to ever-evolving threats. \ No newline at end of file +By investing in Blue, Red, and Purple Team efforts, organizations can achieve a more robust and resilient security posture, capable of withstanding and adapting to ever-evolving threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/108-authentication-vs-authorization.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/108-authentication-vs-authorization.md index 9bbb9f61b..9c9c7f25d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/108-authentication-vs-authorization.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/108-authentication-vs-authorization.md @@ -10,7 +10,7 @@ To ensure cybersecurity, it's essential to understand the differences between tw - [Biometrics (fingerprint, facial recognition, etc.)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5428991/) - [Security tokens or certificates](https://www.comodo.com/e-commerce/ssl-certificates/certificate.php) -In simple terms, authentication answers the question, *"Who are you?"* +In simple terms, authentication answers the question, _"Who are you?"_ ## Authorization @@ -24,8 +24,8 @@ Common methods of implementing authorization include: - [Access Control Lists (ACLs)](https://en.wikipedia.org/wiki/Access-control_list) - [Attribute-based access control (ABAC)](https://en.wikipedia.org/wiki/Attribute-based_access_control) -In a nutshell, authorization answers the question, *"What are you allowed to do?"* +In a nutshell, authorization answers the question, _"What are you allowed to do?"_ ## Conclusion -Authentication and authorization are critical components of a secure system. By understanding their distinct roles in the security process, you can better manage access to resources and protect sensitive data. Remember, authentication verifies the identity of a user, while authorization determines and enforces the actions and resources the user is permitted to access within a system or application. \ No newline at end of file +Authentication and authorization are critical components of a secure system. By understanding their distinct roles in the security process, you can better manage access to resources and protect sensitive data. Remember, authentication verifies the identity of a user, while authorization determines and enforces the actions and resources the user is permitted to access within a system or application. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/109-basics-of-ids-ips.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/109-basics-of-ids-ips.md index 6dba71d7a..7763d01eb 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/109-basics-of-ids-ips.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/109-basics-of-ids-ips.md @@ -29,4 +29,4 @@ There are two types of IPS: - Network-based systems protect networks, while host-based systems protect individual hosts within a network. - Regularly updating and configuring IDS/IPS is necessary to continually defend against evolving threats. -By understanding the basics of IDS and IPS, you can better evaluate your security needs and take the right steps to protect your network and hosts from potential intruders. \ No newline at end of file +By understanding the basics of IDS and IPS, you can better evaluate your security needs and take the right steps to protect your network and hosts from potential intruders. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/110-honeypots.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/110-honeypots.md index 7f5bf16ab..5520084cc 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/110-honeypots.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/110-honeypots.md @@ -32,4 +32,4 @@ While honeypots can be powerful tools in a security professional's arsenal, ther - **Maintenance and resources**: Developing and maintaining honeypots can be resource-intensive, requiring dedicated systems or virtual machines, expertise in system administration, and ongoing monitoring. -It's important to carefully weigh the benefits and risks of implementing honeypots and ensure they are used responsibly and strategically within your cybersecurity plan. \ No newline at end of file +It's important to carefully weigh the benefits and risks of implementing honeypots and ensure they are used responsibly and strategically within your cybersecurity plan. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/111-concept-of-isolation.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/111-concept-of-isolation.md index 5cc48f51a..c4a1f0d1b 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/111-concept-of-isolation.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/111-concept-of-isolation.md @@ -30,4 +30,4 @@ Network isolation aims to separate and control communication between different s - **Virtual Private Networks (VPNs)**: Encrypted connections that securely tunnel network traffic over the public internet, protecting it from eavesdropping or tampering and ensuring the privacy of the communication. -Implementing the concept of isolation within your cyber security strategy can significantly enhance your organization's security posture by limiting the attack surface, containing potential threats, and mitigating the impact of security breaches. \ No newline at end of file +Implementing the concept of isolation within your cyber security strategy can significantly enhance your organization's security posture by limiting the attack surface, containing potential threats, and mitigating the impact of security breaches. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/112-os-hardening.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/112-os-hardening.md index 7dd69c9bc..6ae2db330 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/112-os-hardening.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/112-os-hardening.md @@ -31,4 +31,4 @@ A comprehensive OS hardening process includes the following steps: - **Apply required hardening measures**: Implement necessary changes, including applying patches, updating software, and configuring security settings. - **Monitor and review**: Continuously monitor your environment and update your hardening measures and policies as needed. -By incorporating OS hardening into your cybersecurity practices, you can significantly reduce the risks associated with cyber threats and protect your business's valuable assets. \ No newline at end of file +By incorporating OS hardening into your cybersecurity practices, you can significantly reduce the risks associated with cyber threats and protect your business's valuable assets. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/113-cyber-kill-chain.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/113-cyber-kill-chain.md index 190ce6e4c..1b26dc855 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/113-cyber-kill-chain.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/113-cyber-kill-chain.md @@ -14,4 +14,4 @@ The concept is based on a military model, where the term "kill chain" represents Understanding and analyzing the Cyber Kill Chain helps organizations and individuals take a more proactive approach to cybersecurity. By recognizing the signs of an attack at each stage, appropriate countermeasures can be employed to either prevent or minimize the damage from the attack. -By staying informed and diligently employing security best practices, you can effectively protect your digital assets and contribute to a safer cyberspace. \ No newline at end of file +By staying informed and diligently employing security best practices, you can effectively protect your digital assets and contribute to a safer cyberspace. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/114-mfa-2fa.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/114-mfa-2fa.md index 76d1cd9f5..9e1972fc1 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/114-mfa-2fa.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/114-mfa-2fa.md @@ -6,12 +6,13 @@ Multi-Factor Authentication (MFA) and Two-Factor Authentication (2FA) are securi ## Two-Factor Authentication (2FA) -2FA strengthens security by requiring two distinct forms of verification before granting access. This means that even if a malicious actor has your password, they will still need the second form of verification to access your account, reducing the risk of unauthorized access. +2FA strengthens security by requiring two distinct forms of verification before granting access. This means that even if a malicious actor has your password, they will still need the second form of verification to access your account, reducing the risk of unauthorized access. Two-Factor Authentication usually involves a combination of: -* Something you know (e.g., passwords, PINs) -* Something you have (e.g., physical tokens, mobile phones) -* Something you are (e.g., biometrics, such as fingerprints or facial recognition) + +- Something you know (e.g., passwords, PINs) +- Something you have (e.g., physical tokens, mobile phones) +- Something you are (e.g., biometrics, such as fingerprints or facial recognition) A common example of 2FA is when you receive a unique code via SMS when logging into a website or access sensitive information. You will need to provide that code along with your password to gain access, adding an extra layer of security. @@ -23,6 +24,6 @@ The main advantage of using MFA over 2FA is that even if one factor is compromis ## Importance in Cybersecurity -Using MFA and 2FA lends more security to user accounts, lowering the chances of being compromised. They provide multiple layers of protection, making it significantly harder for cybercriminals to breach accounts or gain unauthorized access. +Using MFA and 2FA lends more security to user accounts, lowering the chances of being compromised. They provide multiple layers of protection, making it significantly harder for cybercriminals to breach accounts or gain unauthorized access. -Implementing 2FA and MFA should be a priority for businesses and individuals alike in order to maintain a high level of cybersecurity. By educating users on the benefits and importance of these forms of authentication and ensuring their widespread adoption, we can create a more secure online environment. \ No newline at end of file +Implementing 2FA and MFA should be a priority for businesses and individuals alike in order to maintain a high level of cybersecurity. By educating users on the benefits and importance of these forms of authentication and ensuring their widespread adoption, we can create a more secure online environment. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/115-backups-and-resiliency.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/115-backups-and-resiliency.md index c3879f1c2..501efb717 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/115-backups-and-resiliency.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/115-backups-and-resiliency.md @@ -32,4 +32,4 @@ Infrastructure resiliency refers to the ability of your organization's IT system - **Regular monitoring and maintenance**: Proactively monitor your infrastructure for signs of potential issues, and perform routine maintenance to minimize vulnerabilities and reduce the likelihood of failures. -By investing in robust data backups and building a resilient infrastructure, you will ensure that your organization is well-prepared to handle any unexpected disruptions and maintain the continuity of essential operations. \ No newline at end of file +By investing in robust data backups and building a resilient infrastructure, you will ensure that your organization is well-prepared to handle any unexpected disruptions and maintain the continuity of essential operations. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/116-definition-of-risk.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/116-definition-of-risk.md index d8e1c9223..f7762722c 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/116-definition-of-risk.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/116-definition-of-risk.md @@ -8,4 +8,4 @@ In the context of cybersecurity, risk can be defined as the possibility of damag - **Impact:** The potential amount of damage or loss that can occur to your organization, system, or data due to the successful execution of a threat. Impacts can be financial, reputational, operational, or any other negative consequence that your organization faces as a result of a security breach. -When evaluating the risk levels of a cybersecurity scenario, it is important to assess the likelihood of a specific threat exploiting a specific vulnerability, as well as the associated impact if such an event occurs. By understanding risks and their components, you can better prioritize your security resources and take appropriate steps to mitigate potential risks. Remember that risk cannot be entirely eliminated, but rather managed to an acceptable level through effective security measures and strategies. \ No newline at end of file +When evaluating the risk levels of a cybersecurity scenario, it is important to assess the likelihood of a specific threat exploiting a specific vulnerability, as well as the associated impact if such an event occurs. By understanding risks and their components, you can better prioritize your security resources and take appropriate steps to mitigate potential risks. Remember that risk cannot be entirely eliminated, but rather managed to an acceptable level through effective security measures and strategies. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/117-compliance-and-auditors.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/117-compliance-and-auditors.md index abb74241d..0dbf8e601 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/117-compliance-and-auditors.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/117-compliance-and-auditors.md @@ -6,8 +6,8 @@ Compliance and auditors play a crucial role in maintaining the security and inte Compliance refers to adhering to a set of rules, regulations, and best practices defined by industry standards, government regulations, or an organization's internal security policies. These may include: -- **Industry Standards**: Security standards specific to an industry, e.g., *Payment Card Industry Data Security Standard (PCI DSS)* for companies handling credit card transactions. -- **Government Regulations**: Rules defined at a national or regional level to ensure the protection of sensitive information, e.g., *General Data Protection Regulation (GDPR)* in the European Union. +- **Industry Standards**: Security standards specific to an industry, e.g., _Payment Card Industry Data Security Standard (PCI DSS)_ for companies handling credit card transactions. +- **Government Regulations**: Rules defined at a national or regional level to ensure the protection of sensitive information, e.g., _General Data Protection Regulation (GDPR)_ in the European Union. - **Internal Security Policies**: Guidelines and procedures created by an organization to manage its digital infrastructure and data securely. ## Auditors @@ -18,5 +18,5 @@ Auditors, specifically cybersecurity auditors or information system auditors, ar - **Risk Management**: Identify and evaluate potential risks and vulnerabilities to an organization's digital infrastructure, such as data breaches, cyber-attacks, or human errors. - **Documentation**: Prepare detailed reports highlighting findings, recommendations, and corrective actions. This may include a list of vulnerabilities, compliance gaps, and improvement suggestions. - **Consultation**: Provide expert advice and technical guidance to management and IT teams to help organizations meet compliance requirements and improve their overall security posture. - -To summarize, compliance and auditors are essential in maintaining an organization's cybersecurity stance. Effective coordination between security professionals, management, and IT teams is needed to ensure the safety and protection of sensitive data and systems from evolving cyber threats. \ No newline at end of file + +To summarize, compliance and auditors are essential in maintaining an organization's cybersecurity stance. Effective coordination between security professionals, management, and IT teams is needed to ensure the safety and protection of sensitive data and systems from evolving cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/118-zero-trust.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/118-zero-trust.md index c770eeea7..e7ff737d5 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/118-zero-trust.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/118-zero-trust.md @@ -24,4 +24,4 @@ _Zero Trust_ is a modern security framework that addresses the ever-evolving thr - **Adaptability**: A Zero Trust approach can be applied to a wide range of environments and can be tailored to meet the specific security needs and objectives of an organization. -By implementing a Zero Trust framework, an organization can strengthen its security posture, safeguard against internal and external threats, and maintain control over their critical assets in an increasingly interconnected world. \ No newline at end of file +By implementing a Zero Trust framework, an organization can strengthen its security posture, safeguard against internal and external threats, and maintain control over their critical assets in an increasingly interconnected world. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/119-perimiter-dmz-segmentation.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/119-perimiter-dmz-segmentation.md index 67c15a4fc..55ef0ef2c 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/119-perimiter-dmz-segmentation.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/119-perimiter-dmz-segmentation.md @@ -21,4 +21,4 @@ To implement a DMZ in your network, you can use devices such as firewalls, route - Perimeter and DMZ segmentation are crucial security techniques that help protect internal networks from external threats. - Perimeter segmentation involves isolating an organization's internal networks from the untrusted external network, typically using security appliances such as firewalls, IDS, and IPS. - DMZ segmentation involves creating a separate, secure area within the network for hosting public-facing services that need to be accessible to external users while maintaining additional security for internal assets. -- Implementing proper network segmentation and security policies can significantly reduce the risk of data breaches and other security threats. \ No newline at end of file +- Implementing proper network segmentation and security policies can significantly reduce the risk of data breaches and other security threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/120-penetration-rules-of-engagement.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/120-penetration-rules-of-engagement.md index 087293988..e2bf2c666 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/120-penetration-rules-of-engagement.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/120-penetration-rules-of-engagement.md @@ -1,6 +1,6 @@ # Penetration Testing Rules of Engagement -Penetration testing, also known as ethical hacking, is an essential component of a strong cybersecurity program. Rules of engagement (RoE) for penetration testing define the scope, boundaries, and guidelines for conducting a successful penetration test. These rules are crucial to ensure lawful, efficient, and safe testing. +Penetration testing, also known as ethical hacking, is an essential component of a strong cybersecurity program. Rules of engagement (RoE) for penetration testing define the scope, boundaries, and guidelines for conducting a successful penetration test. These rules are crucial to ensure lawful, efficient, and safe testing. ## Key Components @@ -16,4 +16,4 @@ Penetration testing, also known as ethical hacking, is an essential component of - **Rules of Engagement Document**: Formalize all rules in a written document and have it signed by all relevant parties (e.g., system owner, penetration tester, legal advisor). This document should include information such as scope, approach, communication guidelines, and restrictions on testing techniques. Keep it as a reference for incident handling and accountability during the test. -In conclusion, robust penetration rules of engagement not only help identify potential security vulnerabilities in your organization but also ensure that the testing process is transparent and compliant. Establishing RoE is necessary to minimize the risk of legal issues, miscommunications, and disruptions to the organization's routine operations. \ No newline at end of file +In conclusion, robust penetration rules of engagement not only help identify potential security vulnerabilities in your organization but also ensure that the testing process is transparent and compliant. Establishing RoE is necessary to minimize the risk of legal issues, miscommunications, and disruptions to the organization's routine operations. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/121-basics-of-reverse-engineering.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/121-basics-of-reverse-engineering.md index 7ef4cb262..0f2f055c3 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/121-basics-of-reverse-engineering.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/121-basics-of-reverse-engineering.md @@ -45,4 +45,4 @@ Here are some basic reverse engineering techniques: - **Cryptographic analysis:** Identifying and analyzing encryption and decryption algorithms used within a program or analyzing any cryptographic keys or certificates that may be present. - **Pattern recognition:** Identifying common patterns, structures, or routines in code that may indicate the use of known algorithms or frameworks. -Remember that mastering the art of reverse engineering takes time and practice. As you delve deeper into the world of reverse engineering, you will develop the ability to recognize patterns, understand complex systems, and ultimately, better defend against cyber threats. \ No newline at end of file +Remember that mastering the art of reverse engineering takes time and practice. As you delve deeper into the world of reverse engineering, you will develop the ability to recognize patterns, understand complex systems, and ultimately, better defend against cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/122-vulnerability-management.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/122-vulnerability-management.md index 549b124b6..29d09d3dd 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/122-vulnerability-management.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/122-vulnerability-management.md @@ -4,21 +4,21 @@ Vulnerability management is a crucial aspect of cybersecurity, as it helps organ ## Importance of Vulnerability Management -- __Prevent cyberattacks__: By addressing vulnerabilities before they can be exploited, organizations reduce the chances of successful attacks and protect their critical assets. -- __Comply with regulations__: Organizations must adhere to various data protection standards and regulations, such as GDPR, HIPAA, or PCI DSS. A robust vulnerability management program can help meet these requirements. -- __Maintain customer trust__: Frequent security breaches can lead to reputational damages, making it vital to prioritize vulnerability management as a means to safeguard customer data. -- __Save costs__: Proactively identifying and mitigating vulnerabilities reduces the financial implications of dealing with a security breach, including the costs of incident response, legal liabilities, and penalties. +- **Prevent cyberattacks**: By addressing vulnerabilities before they can be exploited, organizations reduce the chances of successful attacks and protect their critical assets. +- **Comply with regulations**: Organizations must adhere to various data protection standards and regulations, such as GDPR, HIPAA, or PCI DSS. A robust vulnerability management program can help meet these requirements. +- **Maintain customer trust**: Frequent security breaches can lead to reputational damages, making it vital to prioritize vulnerability management as a means to safeguard customer data. +- **Save costs**: Proactively identifying and mitigating vulnerabilities reduces the financial implications of dealing with a security breach, including the costs of incident response, legal liabilities, and penalties. ## Components of Vulnerability Management -- __Vulnerability Assessment__: Regular vulnerability assessments are essential to identify security weaknesses. This includes scanning networks, system components, software, and applications to identify existing vulnerabilities. +- **Vulnerability Assessment**: Regular vulnerability assessments are essential to identify security weaknesses. This includes scanning networks, system components, software, and applications to identify existing vulnerabilities. -- __Risk Analysis__: After identifying vulnerabilities, it is essential to assess their potential risks. This involves determining the likelihood and impact of each vulnerability, prioritizing them based on severity, and deciding which vulnerabilities to address first. +- **Risk Analysis**: After identifying vulnerabilities, it is essential to assess their potential risks. This involves determining the likelihood and impact of each vulnerability, prioritizing them based on severity, and deciding which vulnerabilities to address first. -- __Remediation__: The remediation process involves implementing patches, updates, or configuration changes to address the identified vulnerabilities. It is crucial to regularly review and ensure that patches have been applied effectively to prevent further exploitation. +- **Remediation**: The remediation process involves implementing patches, updates, or configuration changes to address the identified vulnerabilities. It is crucial to regularly review and ensure that patches have been applied effectively to prevent further exploitation. -- __Verification__: After remediation, organizations must verify that the implemented solutions have effectively eliminated the risk posed by the vulnerability. Verification processes may include re-scanning and penetration testing. +- **Verification**: After remediation, organizations must verify that the implemented solutions have effectively eliminated the risk posed by the vulnerability. Verification processes may include re-scanning and penetration testing. -- __Reporting__: Maintaining comprehensive and accurate records of vulnerability management activities is essential for regulatory compliance and informing key stakeholders about the organization's security posture. Regular reporting can also aid in identifying problem areas and trends, allowing decision-makers to allocate resources and plan accordingly. +- **Reporting**: Maintaining comprehensive and accurate records of vulnerability management activities is essential for regulatory compliance and informing key stakeholders about the organization's security posture. Regular reporting can also aid in identifying problem areas and trends, allowing decision-makers to allocate resources and plan accordingly. -By implementing a thorough vulnerability management program, organizations can significantly reduce their risk exposure and improve their overall cybersecurity posture. In today's digital landscape, proactively managing vulnerabilities is a critical step in safeguarding sensitive information and maintaining customer trust. \ No newline at end of file +By implementing a thorough vulnerability management program, organizations can significantly reduce their risk exposure and improve their overall cybersecurity posture. In today's digital landscape, proactively managing vulnerabilities is a critical step in safeguarding sensitive information and maintaining customer trust. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/123-threat-hunting.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/123-threat-hunting.md index 21ec6fdd7..e16a1e98a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/123-threat-hunting.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/123-threat-hunting.md @@ -36,4 +36,4 @@ Successful threat hunters should possess a strong combination of technical skill - **Knowledge of common attacker tactics, techniques, and procedures (TTPs)**: Awareness of the latest TTPs, ensuring that you stay ahead of potential threats. - **Critical thinking and problem-solving**: Ability to analyze complex scenarios and think creatively to identify potential threats and vulnerabilities. -By developing a strong foundation in threat hunting concepts and techniques, security professionals are better equipped to proactively identify and mitigate potential attacks, thereby strengthening their organization's overall cybersecurity posture. \ No newline at end of file +By developing a strong foundation in threat hunting concepts and techniques, security professionals are better equipped to proactively identify and mitigate potential attacks, thereby strengthening their organization's overall cybersecurity posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/124-forensics.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/124-forensics.md index 218ff7d07..a20b81c4d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/124-forensics.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/124-forensics.md @@ -17,4 +17,4 @@ Professionals working in digital forensics need a solid understanding of various - Strong analytical and problem-solving skills - Effective communication abilities to convey technical findings to non-technical stakeholders -Overall, digital forensics is a crucial component of cybersecurity as it helps organizations respond effectively to cyber attacks, identify vulnerabilities, and take appropriate steps to safeguard their digital assets. \ No newline at end of file +Overall, digital forensics is a crucial component of cybersecurity as it helps organizations respond effectively to cyber attacks, identify vulnerabilities, and take appropriate steps to safeguard their digital assets. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/125-runbooks.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/125-runbooks.md index 658603e51..791450084 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/125-runbooks.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/125-runbooks.md @@ -28,4 +28,4 @@ Here are key components that make up an effective runbook: Runbooks should be periodically reviewed and updated to ensure their effectiveness. It is important to incorporate lessons learned from past incidents, emerging threats, and new technologies into the runbook to keep it relevant and effective. -In conclusion, runbooks play a crucial role in fostering a resilient cyber security posture. Organizations should invest time and effort in developing and maintaining comprehensive runbooks for dealing with a wide range of security incidents. \ No newline at end of file +In conclusion, runbooks play a crucial role in fostering a resilient cyber security posture. Organizations should invest time and effort in developing and maintaining comprehensive runbooks for dealing with a wide range of security incidents. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/126-defense-in-depth.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/126-defense-in-depth.md index be852a24e..b02c14478 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/126-defense-in-depth.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/126-defense-in-depth.md @@ -33,4 +33,4 @@ Defense in depth benefits greatly from collaboration between various stakeholder In addition, sharing information about threats and vulnerabilities with other organizations, industry associations, and law enforcement agencies can help strengthen the collective security of all parties involved. -In summary, defense in depth involves the implementation of multiple layers of security measures, continuous monitoring, and collaboration to protect an organization's valuable assets from cyber threats. By adopting this approach, organizations can minimize the risk of a breach and improve their overall cybersecurity posture. \ No newline at end of file +In summary, defense in depth involves the implementation of multiple layers of security measures, continuous monitoring, and collaboration to protect an organization's valuable assets from cyber threats. By adopting this approach, organizations can minimize the risk of a breach and improve their overall cybersecurity posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/127-common-exploit-frameworks.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/127-common-exploit-frameworks.md index e526e241a..76d134d58 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/127-common-exploit-frameworks.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/127-common-exploit-frameworks.md @@ -7,39 +7,39 @@ Exploit frameworks are essential tools in the cybersecurity landscape, as they p [Metasploit](https://www.metasploit.com/) is probably the most widely used and well-known exploit framework. It is an open-source platform with a large and active user community, which constantly contributes to its development, vulnerability research, and exploit creation. - **Key Features:** - - Supports more than 1,500 exploits and over 3,000 modules - - Provides a command-line interface as well as a Graphical User Interface (GUI) called Armitage - - Offers integration with other popular tools, such as Nmap and Nessus - - Enables payload delivery, exploit execution, and post-exploitation tasks + - Supports more than 1,500 exploits and over 3,000 modules + - Provides a command-line interface as well as a Graphical User Interface (GUI) called Armitage + - Offers integration with other popular tools, such as Nmap and Nessus + - Enables payload delivery, exploit execution, and post-exploitation tasks ## Canvas [Canvas](https://www.immunityinc.com/products/canvas/) is a commercial exploit framework developed by Immunity Inc. It includes a wide range of modules that target various platforms, networking devices, and vulnerabilities. - **Key Features:** - - Contains a collection of more than 450 exploits - - Offers exploit development and fuzzing tools - - Provides intuitive GUI for managing and executing attacks - - Allows customization through Python scripting + - Contains a collection of more than 450 exploits + - Offers exploit development and fuzzing tools + - Provides intuitive GUI for managing and executing attacks + - Allows customization through Python scripting ## Exploit Pack [Exploit Pack](https://exploitpack.com/) is another commercial exploit framework that focuses on ease of use and extensive exploit modules selection. It is frequently updated to include the latest exploits and vulnerabilities. - **Key Features:** - - Offers over 38,000 exploits for Windows, Linux, macOS, and other platforms - - Provides a GUI for managing and executing exploits - - Allows exploit customization and development using JavaScript - - Includes fuzzers, shellcode generators, and other advanced features + - Offers over 38,000 exploits for Windows, Linux, macOS, and other platforms + - Provides a GUI for managing and executing exploits + - Allows exploit customization and development using JavaScript + - Includes fuzzers, shellcode generators, and other advanced features ## Social-Engineer Toolkit (SET) [SET](https://github.com/trustedsec/social-engineer-toolkit) is an open-source framework designed to perform social engineering attacks, such as phishing and spear-phishing. Developed by TrustedSec, it focuses on human interaction and targets user credentials, software vulnerabilities, and more. - **Key Features:** - - Executes email-based attacks, SMS-based attacks, and URL shortening/exploitation - - Provides template-based phishing email creation - - Integrates with Metasploit for payloads and exploits - - Offers USB-based exploitation for human-interface devices + - Executes email-based attacks, SMS-based attacks, and URL shortening/exploitation + - Provides template-based phishing email creation + - Integrates with Metasploit for payloads and exploits + - Offers USB-based exploitation for human-interface devices -When using these exploit frameworks, it is important to remember that they are powerful tools that can cause significant damage if misused. Always ensure that you have explicit permission from the target organization before conducting any penetration testing activities. \ No newline at end of file +When using these exploit frameworks, it is important to remember that they are powerful tools that can cause significant damage if misused. Always ensure that you have explicit permission from the target organization before conducting any penetration testing activities. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/128-common-hacking-tools.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/128-common-hacking-tools.md index e92eba00f..80e5e1150 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/128-common-hacking-tools.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/128-common-hacking-tools.md @@ -32,4 +32,4 @@ Aircrack-ng is a set of tools targeting Wi-Fi security. It includes tools for ca Kali Linux is a Linux distribution, specifically built for penetration testing and security auditing. It comes preinstalled with a wide range of hacking tools and is commonly used by ethical hackers and security professionals. -Keep in mind that while these tools are commonly used by hackers, they can also be employed ethically by security professionals to understand and address vulnerabilities in their own systems. The key is to use them responsibly and always seek permission before testing any network or system that does not belong to you. \ No newline at end of file +Keep in mind that while these tools are commonly used by hackers, they can also be employed ethically by security professionals to understand and address vulnerabilities in their own systems. The key is to use them responsibly and always seek permission before testing any network or system that does not belong to you. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/100-phishing-vishing-whaling-smishing.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/100-phishing-vishing-whaling-smishing.md index 34a85123b..c33259abd 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/100-phishing-vishing-whaling-smishing.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/100-phishing-vishing-whaling-smishing.md @@ -46,4 +46,4 @@ Smishing, or SMS phishing, is the act of using text messages to deceive victims - Never click on suspicious links included in text messages - Install mobile security software to protect your device from potential threats -By staying informed about these various attack types, you can better protect yourself and your organization from falling victim to cyber threats. Remain vigilant and ensure you have proper security measures in place to minimize the risk of these attacks. \ No newline at end of file +By staying informed about these various attack types, you can better protect yourself and your organization from falling victim to cyber threats. Remain vigilant and ensure you have proper security measures in place to minimize the risk of these attacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/101-spam-vs-spim.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/101-spam-vs-spim.md index 83a759412..0d5893926 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/101-spam-vs-spim.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/101-spam-vs-spim.md @@ -8,18 +8,18 @@ Spam refers to any unwanted, unsolicited, or irrelevant messaging sent over the Spammers often use automated systems to send these messages to a large number of recipients. Some common characteristics of spam emails include: -* Suspicious sender addresses -* Generic greeting -* Unusual or unexpected attachments or links -* Urgent or threatening language -* Requests for personal information +- Suspicious sender addresses +- Generic greeting +- Unusual or unexpected attachments or links +- Urgent or threatening language +- Requests for personal information To protect yourself from spam, you should: -* Set up effective email filters -* Never share your email address publicly -* Avoid clicking on suspicious links or attachments -* Report spam to your email provider +- Set up effective email filters +- Never share your email address publicly +- Avoid clicking on suspicious links or attachments +- Report spam to your email provider ## Spim @@ -27,17 +27,17 @@ Spim, or "spam over instant messaging," is similar to spam but occurs over insta Some common characteristics of spim messages include: -* Unknown or suspicious sender accounts -* Messages containing links or attachments -* Unsolicited promotions or offers -* Requests for personal information -* Unexpected urgency or threats +- Unknown or suspicious sender accounts +- Messages containing links or attachments +- Unsolicited promotions or offers +- Requests for personal information +- Unexpected urgency or threats To protect yourself from spim, you should: -* Set your IM service's privacy settings to limit who can message you -* Be cautious when clicking on links or attachments from unknown or suspicious accounts -* Block or report spim accounts -* Keep your IM client software updated +- Set your IM service's privacy settings to limit who can message you +- Be cautious when clicking on links or attachments from unknown or suspicious accounts +- Block or report spim accounts +- Keep your IM client software updated -In conclusion, **spam** and **spim** are two distinct types of unwanted messages, with the primary difference being the medium through which they are delivered. Both can pose significant risks to your digital security, so it's crucial to be vigilant, maintain proper security measures, and educate yourself about the various attack types you may encounter. \ No newline at end of file +In conclusion, **spam** and **spim** are two distinct types of unwanted messages, with the primary difference being the medium through which they are delivered. Both can pose significant risks to your digital security, so it's crucial to be vigilant, maintain proper security measures, and educate yourself about the various attack types you may encounter. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/102-shoulder-surfing.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/102-shoulder-surfing.md index de2c32db2..10945f3af 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/102-shoulder-surfing.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/102-shoulder-surfing.md @@ -19,4 +19,4 @@ To protect yourself from shoulder surfing, follow these guidelines: - Change passwords regularly and avoid using easy-to-guess or common passwords. - Educate employees about the risks of shoulder surfing and the importance of maintaining confidentiality in the workplace. -By staying cautious and adopting these security measures, you can greatly reduce the risk of shoulder surfing and protect your sensitive data from unauthorized access. \ No newline at end of file +By staying cautious and adopting these security measures, you can greatly reduce the risk of shoulder surfing and protect your sensitive data from unauthorized access. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/103-dumpster-diving.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/103-dumpster-diving.md index edf555475..f7655a1f7 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/103-dumpster-diving.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/103-dumpster-diving.md @@ -13,4 +13,4 @@ Attackers search public and private trash receptacles to find information that m - **Secure disposal**: Use lockable bins and trash bags or dispose of sensitive documents in a designated, secured place where they will be safely destroyed. - **Periodic audits**: Conduct regular audits of your physical security measures, including trash receptacles and disposal methods. -By implementing these countermeasures, your organization can significantly reduce its risk of exposing sensitive information through dumpster diving. \ No newline at end of file +By implementing these countermeasures, your organization can significantly reduce its risk of exposing sensitive information through dumpster diving. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/104-tailgating.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/104-tailgating.md index b83d98751..c68d37004 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/104-tailgating.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/104-tailgating.md @@ -17,4 +17,4 @@ Tailgating, also known as "piggybacking", is a social engineering technique used - **Strict policies:** Enforce strict policies regarding holding doors open for others or allowing individuals into secure areas without proper credentials. - **Security culture:** Build a strong security culture where employees feel responsible for the organization's security and report any suspicious behavior. -It is essential to keep in mind that tailgating relies heavily on human behavior and trust. While physical and technical security measures are crucial, fostering a culture of vigilance and employee awareness can be just as effective in preventing such attacks. \ No newline at end of file +It is essential to keep in mind that tailgating relies heavily on human behavior and trust. While physical and technical security measures are crucial, fostering a culture of vigilance and employee awareness can be just as effective in preventing such attacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/105-zero-day.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/105-zero-day.md index 7cb486e5d..5f6e41ce6 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/105-zero-day.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/105-zero-day.md @@ -29,4 +29,4 @@ Organizations should invest in proactive security measures to protect against su - **Encrypt sensitive data**: By encrypting sensitive data, it becomes harder for hackers to steal and misuse it. - **Segment networks**: Segment your networks to limit access to sensitive information and systems, minimizing the damage in case of a breach. - **Educate employees**: Provide training for employees about the threat landscape, good security practices, and how to avoid falling victim to phishing or social engineering attacks. -- **Regular backups and disaster recovery planning**: Routinely and securely back up data and develop a disaster recovery plan to mitigate damages from security breaches or attacks. \ No newline at end of file +- **Regular backups and disaster recovery planning**: Routinely and securely back up data and develop a disaster recovery plan to mitigate damages from security breaches or attacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/106-social-engineering.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/106-social-engineering.md index 21e5e80a0..17d13f914 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/106-social-engineering.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/106-social-engineering.md @@ -30,4 +30,4 @@ To protect yourself and your organization against social engineering attacks, ke - Regularly back up data and have an incident response plan in place to mitigate the impact of successful attacks. -Remember, social engineering preys on human psychology and behavior. Therefore, awareness, vigilance, and adherence to best practices are crucial to defend against such threats. \ No newline at end of file +Remember, social engineering preys on human psychology and behavior. Therefore, awareness, vigilance, and adherence to best practices are crucial to defend against such threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/107-reconnaissance.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/107-reconnaissance.md index 2b64de5ce..d6b3e2b42 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/107-reconnaissance.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/107-reconnaissance.md @@ -7,16 +7,18 @@ Reconnaissance is a crucial stage in any cyber attack and refers to the process In active reconnaissance, attackers directly engage with their target to gather information. This may include scanning networks for open ports or services, attempting to query servers or probing for vulnerabilities. Since the attacker is actively interacting with target systems, it has higher chances of being detected by intrusion detection systems, firewalls or security teams. Common active reconnaissance tools include: - - Nmap: A network scanner that can discover hosts, services, and open ports. - - Nessus: A vulnerability assessment tool that allows attackers to scan for known vulnerabilities in target systems. + +- Nmap: A network scanner that can discover hosts, services, and open ports. +- Nessus: A vulnerability assessment tool that allows attackers to scan for known vulnerabilities in target systems. ## Passive Reconnaissance In passive reconnaissance, the attacker seeks to gather information about the target without making any contact or directly engaging with target systems. Passive reconnaissance is often harder to detect and involves activities such as social engineering, open-source intelligence (OSINT) gathering, or analyzing leaked data. Common passive reconnaissance techniques include: - - Searching public forums, social media profiles, or websites for information about an organization or its employees. - - Using search engines to find exposed or inadvertently leaked data. - - Sifting through DNS records and WHOIS information to discover sub-domains and email addresses that might be used in further attacks. -Defensive measures against reconnaissance include monitoring network traffic for unusual patterns or repeated probing attempts, regularly updating and patching systems, providing employee training on social engineering awareness, and implementing network segmentation to limit access to sensitive information. \ No newline at end of file +- Searching public forums, social media profiles, or websites for information about an organization or its employees. +- Using search engines to find exposed or inadvertently leaked data. +- Sifting through DNS records and WHOIS information to discover sub-domains and email addresses that might be used in further attacks. + +Defensive measures against reconnaissance include monitoring network traffic for unusual patterns or repeated probing attempts, regularly updating and patching systems, providing employee training on social engineering awareness, and implementing network segmentation to limit access to sensitive information. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/108-impersonation.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/108-impersonation.md index 2e1c8c35a..bff0629f2 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/108-impersonation.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/108-impersonation.md @@ -4,17 +4,17 @@ Impersonation is a type of cyber attack where an attacker pretends to be a legit ## Types of Impersonation Attacks -* **Phishing:** Attackers send emails appearing to be from legitimate sources, tricking the target into revealing sensitive information or downloading malware. +- **Phishing:** Attackers send emails appearing to be from legitimate sources, tricking the target into revealing sensitive information or downloading malware. -* **Spear phishing:** A more targeted form of phishing, where the attacker possesses specific information about their target and creates a personalized email. +- **Spear phishing:** A more targeted form of phishing, where the attacker possesses specific information about their target and creates a personalized email. -* **Whaling:** This attack targets high-ranking individuals like CEOs or CFOs, using a combination of personalized spear-phishing and social engineering to extract valuable information or conduct fraudulent transactions. +- **Whaling:** This attack targets high-ranking individuals like CEOs or CFOs, using a combination of personalized spear-phishing and social engineering to extract valuable information or conduct fraudulent transactions. -* **Caller ID spoofing:** Attackers manipulate phone numbers to appear as if they're coming from a legitimate source, often impersonating customer support agents or bank representatives to deceive targets into providing sensitive information. +- **Caller ID spoofing:** Attackers manipulate phone numbers to appear as if they're coming from a legitimate source, often impersonating customer support agents or bank representatives to deceive targets into providing sensitive information. -* **Man-in-the-middle (MITM) attacks:** Attackers insert themselves between the target user and a website or service, impersonating both ends of the communication to intercept sensitive data. +- **Man-in-the-middle (MITM) attacks:** Attackers insert themselves between the target user and a website or service, impersonating both ends of the communication to intercept sensitive data. -* **Social media impersonation:** Attackers create fake profiles that resemble trusted individuals or organizations in order to deceive their targets, gain information, or spread misinformation. +- **Social media impersonation:** Attackers create fake profiles that resemble trusted individuals or organizations in order to deceive their targets, gain information, or spread misinformation. ## Ways to Prevent Impersonation Attacks @@ -25,4 +25,4 @@ Impersonation is a type of cyber attack where an attacker pretends to be a legit - **Use encryption:** Protect sensitive data by using encryption both in transit and at rest. - **Monitor and analyze network traffic:** Regularly review network logs and use tools to detect and analyze anomalies or signs of potential impersonation attacks. -By understanding the various types of impersonation attacks and implementing these security best practices, you can better defend your organization against these ever-evolving cyber threats. \ No newline at end of file +By understanding the various types of impersonation attacks and implementing these security best practices, you can better defend your organization against these ever-evolving cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/109-watering-hole-attack.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/109-watering-hole-attack.md index bcd1972d7..9c5b7e0ff 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/109-watering-hole-attack.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/109-watering-hole-attack.md @@ -19,4 +19,4 @@ To protect against watering hole attacks, it is important to adopt best practice - Conducting cybersecurity awareness training to educate your employees. - Implementing network and endpoint security solutions to detect and prevent intrusions. -In conclusion, a watering hole attack is a subtle yet dangerous vector for cybercriminals to infiltrate their targets' systems. Organizations should prioritize cybersecurity hygiene and user education to minimize the risks posed by these attacks. \ No newline at end of file +In conclusion, a watering hole attack is a subtle yet dangerous vector for cybercriminals to infiltrate their targets' systems. Organizations should prioritize cybersecurity hygiene and user education to minimize the risks posed by these attacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/110-drive-by-attack.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/110-drive-by-attack.md index 14b29144d..5d872ed14 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/110-drive-by-attack.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/110-drive-by-attack.md @@ -26,4 +26,4 @@ To safeguard against drive-by attacks, consider the following measures: - **Implement web filtering**: Utilize content filtering or secure web gateways to block access to malicious websites. -By understanding the methods and tactics used in drive-by attacks and following these preventative measures, you can better protect yourself and maintain a secure online presence. \ No newline at end of file +By understanding the methods and tactics used in drive-by attacks and following these preventative measures, you can better protect yourself and maintain a secure online presence. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/111-typo-squatting.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/111-typo-squatting.md index b80169c28..6b8ba2df7 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/111-typo-squatting.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/111-typo-squatting.md @@ -1,6 +1,6 @@ # Typo Squatting -**Typo Squatting**, also known as **URL hijacking** or **domain squatting**, is a malicious cyber-attack technique that targets internet users who mistakenly enter an incorrect website address into their web browsers. When this occurs, the users are directed to a fake website that closely resembles a legitimate one. The attackers create these fake websites by registering domain names similar to the target website, but with common typographical errors. The goal of typo squatting is often to spread malware, steal personal information or financial details, sell counterfeit products, or promote phishing scams. +**Typo Squatting**, also known as **URL hijacking** or **domain squatting**, is a malicious cyber-attack technique that targets internet users who mistakenly enter an incorrect website address into their web browsers. When this occurs, the users are directed to a fake website that closely resembles a legitimate one. The attackers create these fake websites by registering domain names similar to the target website, but with common typographical errors. The goal of typo squatting is often to spread malware, steal personal information or financial details, sell counterfeit products, or promote phishing scams. ## How Typo Squatting Works @@ -24,4 +24,4 @@ - **Enable Browser Protection**: Many web browsers offer built-in security features that help identify and block malicious websites. Ensure these features are enabled and configured correctly. -In conclusion, while typo squatting presents a significant risk to internet users, awareness and vigilance can significantly reduce the chances of becoming a victim. Always verify that you're visiting the correct website before entering any personal or sensitive information. \ No newline at end of file +In conclusion, while typo squatting presents a significant risk to internet users, awareness and vigilance can significantly reduce the chances of becoming a victim. Always verify that you're visiting the correct website before entering any personal or sensitive information. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/112-brute-force-vs-password-spray.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/112-brute-force-vs-password-spray.md index e20a618d1..b7b910f4f 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/112-brute-force-vs-password-spray.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/112-brute-force-vs-password-spray.md @@ -4,7 +4,7 @@ In this section, we will discuss two common techniques employed by cybercriminal ## Brute Force Attacks -**Brute Force attacks** are a trial-and-error method used by attackers to discover the correct credential combinations (username and password) to gain unauthorized access to an account or system. This is done by systematically trying as many possibilities as possible until the correct combination is found. +**Brute Force attacks** are a trial-and-error method used by attackers to discover the correct credential combinations (username and password) to gain unauthorized access to an account or system. This is done by systematically trying as many possibilities as possible until the correct combination is found. In a Brute Force attack, the attacker usually utilizes automated tools to generate and test numerous password combinations. This strategy can be time-consuming, resource-intensive, and potentially detectable due to the massive number of login attempts made in a short period. @@ -30,4 +30,4 @@ To defend against Password Spray attacks, follow these best practices: - **Monitor for unusual login patterns:** Use monitoring tools to detect unusual login patterns, such as numerous successful logins with specific (common) passwords. - **Implement multi-factor authentication (MFA):** Require users to provide an additional layer of authentication when logging in. -In conclusion, understanding the differences between Brute Force and Password Spray attacks, as well as adopting strong security measures, can help protect your systems and accounts from unauthorized access. Encourage the use of strong, unique passwords and implement multi-factor authentication to improve overall cybersecurity. \ No newline at end of file +In conclusion, understanding the differences between Brute Force and Password Spray attacks, as well as adopting strong security measures, can help protect your systems and accounts from unauthorized access. Encourage the use of strong, unique passwords and implement multi-factor authentication to improve overall cybersecurity. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/index.md index 54a02f891..0fbb9aabc 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/attack-types/index.md @@ -1 +1 @@ -# Attack types \ No newline at end of file +# Attack types diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/100-parrot-os.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/100-parrot-os.md index 1945b9108..dcdb4e4d9 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/100-parrot-os.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/100-parrot-os.md @@ -3,6 +3,7 @@ Parrot OS, also known as Parrot Security OS, is a powerful Linux-based distribution designed for penetration testing, digital forensics, and ethical hacking. Developed by Frozenbox, this Debian-based operating system comes with a wide range of tools for cyber security enthusiasts, making it one of the most popular choices among hackers and security professionals. ## Key Features + - **MATE Desktop Environment**: Parrot OS uses the customizable, lightweight MATE desktop environment, providing a seamless and user-friendly interface. - **Wide Range of Hacking Tools**: Parrot OS comes preloaded with a variety of hacking tools, such as Metasploit, Wireshark, Aircrack-ng, Armitage, and more. This ensures users have access to the necessary tools for pentesting and security assessments without needing to install them separately. - **Regular Updates**: The distribution receives frequent updates, ensuring its tools and features stay current with the latest developments in the cyber security field. @@ -10,8 +11,9 @@ Parrot OS, also known as Parrot Security OS, is a powerful Linux-based distribut - **Resource Efficient**: Parrot OS is designed to be lightweight, consuming fewer system resources compared to other hacking-oriented distros, making it suitable for low-spec devices or hardware. ## Use Cases + - **Penetration Testing**: Parrot OS is equipped with numerous tools for network scanning, vulnerability assessment, and exploitation that facilitate comprehensive security testing in various environments. - **Digital Forensics**: With a range of digital forensics tools, Parrot OS enables performing detailed analysis of computers and networks for potential evidence of cybercrime. - **Reverse Engineering**: The OS also includes tools for reverse engineering, assisting security professionals in examining and analyzing software or malware designs. -Overall, Parrot OS is a reliable, versatile, and user-friendly cyber security distribution, ideal for both beginners and advanced users engaged in ethical hacking, penetration testing, and digital forensics. \ No newline at end of file +Overall, Parrot OS is a reliable, versatile, and user-friendly cyber security distribution, ideal for both beginners and advanced users engaged in ethical hacking, penetration testing, and digital forensics. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/101-kali-linux.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/101-kali-linux.md index a53f95f59..7e65d4cd7 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/101-kali-linux.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/101-kali-linux.md @@ -37,4 +37,4 @@ While Kali Linux is widely used and respected in the cybersecurity community, it ## Conclusion -Kali Linux is a powerful and widely used distribution tailored for cybersecurity experts and penetration testers. Its extensive collection of tools, combined with regular updates and customization options, make it an attractive choice for those seeking a reliable and feature-rich operating system geared towards cybersecurity tasks. However, it is essential for users to remain mindful of the responsibility and legality associated with using these tools. \ No newline at end of file +Kali Linux is a powerful and widely used distribution tailored for cybersecurity experts and penetration testers. Its extensive collection of tools, combined with regular updates and customization options, make it an attractive choice for those seeking a reliable and feature-rich operating system geared towards cybersecurity tasks. However, it is essential for users to remain mindful of the responsibility and legality associated with using these tools. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/index.md index db19442bc..030946b7e 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-distros-for-hacking/index.md @@ -1 +1 @@ -# Common distros for hacking \ No newline at end of file +# Common distros for hacking diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/100-dos-vs-ddos.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/100-dos-vs-ddos.md index d8d878efa..0ef931e67 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/100-dos-vs-ddos.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/100-dos-vs-ddos.md @@ -25,4 +25,4 @@ Some common methods employed in DDoS attacks include: - **Scale**: While DoS attacks are limited by the resources of a single attacker, DDoS attacks involve multiple attacking devices, making them more effective at overwhelming and disrupting the target system. - **Mitigation**: DoS attacks can usually be mitigated with simpler countermeasures, but DDoS attacks often require more sophisticated defense strategies due to their distributed and coordinated nature. -In conclusion, both DoS and DDoS attacks aim to disrupt the availability of a target system by overwhelming its resources. However, their key differences lie in the scale and complexity of the attack, with DDoS attacks being more powerful and more challenging to defend against. It is crucial for organizations to implement robust security measures to detect and mitigate these attacks to maintain the availability and integrity of their systems. \ No newline at end of file +In conclusion, both DoS and DDoS attacks aim to disrupt the availability of a target system by overwhelming its resources. However, their key differences lie in the scale and complexity of the attack, with DDoS attacks being more powerful and more challenging to defend against. It is crucial for organizations to implement robust security measures to detect and mitigate these attacks to maintain the availability and integrity of their systems. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/101-mitm.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/101-mitm.md index ddd728f43..1293f5c92 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/101-mitm.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/101-mitm.md @@ -23,4 +23,4 @@ To reduce the risk of MITM attacks, developers, administrators, and users should - **Regularly update software and firmware:** Keep all systems, applications, and devices up-to-date to minimize known vulnerabilities. - **Educate users:** Provide awareness training and support resources to help users recognize and avoid potential MITM attacks. -By understanding MITM attacks and implementing the appropriate preventive measures, you can significantly reduce the risk of falling victim to these types of cyber threats. \ No newline at end of file +By understanding MITM attacks and implementing the appropriate preventive measures, you can significantly reduce the risk of falling victim to these types of cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/102-arp-poisoning.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/102-arp-poisoning.md index 7b8ce2f2a..0ec98afb6 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/102-arp-poisoning.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/102-arp-poisoning.md @@ -23,4 +23,4 @@ Several strategies can help protect networks against ARP poisoning: - Static ARP entries: Assign static IP-to-MAC address mappings to prevent attackers from forging ARP responses. - ARP inspection tools: Use switches, firewalls, or Intrusion Detection/Prevention Systems (IDS/IPS) that support Dynamic ARP Inspection (DAI) or similar features to validate or filter suspicious ARP traffic. - IPsec or SSL/TLS: Encrypt traffic between network devices with secure protocols like IPsec or SSL/TLS to mitigate eavesdropping or tampering risks. -- Regular monitoring: Continuously monitor network traffic and device ARP tables for anomalies or inconsistencies, possibly using Network Intrusion Detection Systems (NIDS) or other security tools. \ No newline at end of file +- Regular monitoring: Continuously monitor network traffic and device ARP tables for anomalies or inconsistencies, possibly using Network Intrusion Detection Systems (NIDS) or other security tools. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/103-evil-twin.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/103-evil-twin.md index 3bca961f4..0d41bc831 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/103-evil-twin.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/103-evil-twin.md @@ -20,4 +20,4 @@ An **Evil Twin Attack** is a malicious tactic used by cybercriminals to deceive - **Verify the SSID**: Make sure you are connecting to the correct SSID. Be cautious of networks with similar names or those that don't require a password. - **Enable two-factor authentication**: Enable two-factor authentication (2FA) for critical accounts and services. This provides an additional layer of security, making it more difficult for attackers to gain unauthorized access. - **Keep software up-to-date**: Regularly update your devices, software, and operating system to protect against known vulnerabilities and security threats. -- **Educate yourself and others**: Be aware of the risks associated with Evil Twin Attacks, and inform others to increase overall security awareness. \ No newline at end of file +- **Educate yourself and others**: Be aware of the risks associated with Evil Twin Attacks, and inform others to increase overall security awareness. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/104-dns-poisoning.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/104-dns-poisoning.md index a71789648..0e0dc49d6 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/104-dns-poisoning.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/104-dns-poisoning.md @@ -4,9 +4,9 @@ ## How DNS Poisoning Works -The DNS is like the internet's phonebook; it translates human-readable domain names (e.g., www.example.com) into their corresponding IP addresses for computers to understand. This process involves a DNS resolver, which refers to a cached DNS database to find the correct IP address. In a DNS poisoning attack, an attacker exploits vulnerabilities in the DNS to inject false or malicious data into a DNS resolver's cache. +The DNS is like the internet's phonebook; it translates human-readable domain names (e.g., www.example.com) into their corresponding IP addresses for computers to understand. This process involves a DNS resolver, which refers to a cached DNS database to find the correct IP address. In a DNS poisoning attack, an attacker exploits vulnerabilities in the DNS to inject false or malicious data into a DNS resolver's cache. -Here's a quick outline of the process: +Here's a quick outline of the process: - User requests the IP address for a legitimate website (e.g., www.example.com). - The DNS resolver sends a request to a DNS server to resolve the domain name into the IP address. @@ -31,4 +31,4 @@ Here are some steps you can take to prevent and mitigate the risk of DNS poisoni - **Use Secure DNS Resolvers**: Choose a secure DNS resolver that has built-in mechanisms to prevent DNS poisoning, such as validating DNSSEC signatures. - **Monitor Your DNS Traffic**: Regularly monitoring DNS query logs can help you identify suspicious patterns or unusual activities, which may indicate DNS poisoning attempts. -In summary, DNS poisoning is a potent cyber threat that manipulates DNS data to redirect users to malicious websites. By implementing security measures such as DNSSEC, keeping software updated, and closely monitoring DNS traffic, you can significantly reduce the risk of falling victim to DNS poisoning attacks. \ No newline at end of file +In summary, DNS poisoning is a potent cyber threat that manipulates DNS data to redirect users to malicious websites. By implementing security measures such as DNSSEC, keeping software updated, and closely monitoring DNS traffic, you can significantly reduce the risk of falling victim to DNS poisoning attacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/105-spoofing.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/105-spoofing.md index a7c45a2f1..326ef5cab 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/105-spoofing.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/105-spoofing.md @@ -26,4 +26,4 @@ ARP Spoofing, also known as ARP poisoning, involves an attacker forging ARP mess To defend against ARP spoofing, organizations can employ dynamic ARP inspection, static ARP entries, and intrusion detection systems that monitor for unusual ARP activity. -In summary, spoofing attacks can impact various aspects of digital communication, whether it be IP-based, email, phone, or network traffic. To protect against spoofing, be vigilant and employ defensive measures, such as network authentication protocols, monitoring suspicious activities, and educating users about potential risks. \ No newline at end of file +In summary, spoofing attacks can impact various aspects of digital communication, whether it be IP-based, email, phone, or network traffic. To protect against spoofing, be vigilant and employ defensive measures, such as network authentication protocols, monitoring suspicious activities, and educating users about potential risks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/106-deauth-attack.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/106-deauth-attack.md index 2ad257f07..05feb4f92 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/106-deauth-attack.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/106-deauth-attack.md @@ -30,4 +30,4 @@ There isn't a foolproof solution to protect against deauth attacks, particularly - **Secure your access points:** Regularly update your router’s firmware and configure its settings to disable remote management access, applying strong access credentials to minimize unauthorized access. -As an author of this guide, I advise you to stay diligent and follow the best practices in order to safeguard your network from deauth attacks and other security threats. \ No newline at end of file +As an author of this guide, I advise you to stay diligent and follow the best practices in order to safeguard your network from deauth attacks and other security threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/107-vlan-hopping.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/107-vlan-hopping.md index 1602d6b68..1e63c9320 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/107-vlan-hopping.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/107-vlan-hopping.md @@ -4,7 +4,7 @@ VLAN hopping is a common network-based attack that exploits the vulnerabilities ## How VLAN Hopping Works -There are two primary methods of VLAN hopping: +There are two primary methods of VLAN hopping: - **Switch Spoofing:** In this approach, an attacker configures their device to act as a switch and establish a trunk link with the actual network switch. Since trunk links are designed to carry traffic from multiple VLANs, the attacker can then access traffic from all the VLANs that are allowed on the trunk. @@ -22,4 +22,4 @@ To secure your network from VLAN hopping attacks, consider implementing the foll - **Enable 802.1Q Native VLAN Tagging:** By enabling native VLAN tagging and assigning a unique, unused VLAN ID as the native VLAN, you can prevent double tagging attacks. -Remember that implementing these security practices is crucial in protecting your network from VLAN hopping and other types of network-based attacks. Always stay vigilant and keep your network's security protocols up-to-date to minimize the chances of a successful cyber attack. \ No newline at end of file +Remember that implementing these security practices is crucial in protecting your network from VLAN hopping and other types of network-based attacks. Always stay vigilant and keep your network's security protocols up-to-date to minimize the chances of a successful cyber attack. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/108-rogue-access-point.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/108-rogue-access-point.md index b97170c51..8cb82b3a1 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/108-rogue-access-point.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/108-rogue-access-point.md @@ -26,4 +26,4 @@ Here are some measures to help detect and prevent rogue access points: - **User Awareness**: Educate employees about the risks associated with rogue access points and how to avoid unintentionally installing them. -By staying vigilant and implementing robust security measures, organizations can reduce the risks associated with rogue access points and protect their networks from potential cyberattacks. \ No newline at end of file +By staying vigilant and implementing robust security measures, organizations can reduce the risks associated with rogue access points and protect their networks from potential cyberattacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/109-war-driving-dialing.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/109-war-driving-dialing.md index 6f0e99a65..ea6e7091b 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/109-war-driving-dialing.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/109-war-driving-dialing.md @@ -32,4 +32,4 @@ To protect your network against war driving or war dialing, it's important to: - Use strong authentication methods for remote access systems. - Regularly update your network devices with the latest security patches. - Periodically conduct vulnerability assessments to stay ahead of potential weaknesses. -- Educate employees and users about the risks of unsecured networks and the importance of following security guidelines. \ No newline at end of file +- Educate employees and users about the risks of unsecured networks and the importance of following security guidelines. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/index.md index 3354ea743..01c323047 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-network-based-attacks/index.md @@ -1 +1 @@ -# Common network based attacks \ No newline at end of file +# Common network based attacks diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/100-iso.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/100-iso.md index 3adf8df86..1c7d2d4b7 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/100-iso.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/100-iso.md @@ -26,4 +26,4 @@ ISO/IEC 27035 is a standard for **Information Security Incident Management**. It ISO/IEC 27701 is an extension to ISO/IEC 27001 and ISO/IEC 27002 that provides a framework for managing the **privacy of personal information**. This standard helps organizations to comply with data protection laws and regulations, such as the General Data Protection Regulation (GDPR). Key elements include data minimization, data subject access, data breach notification, and third-party management. -In conclusion, the ISO has established several robust cyber security standards that organizations can adopt to protect their sensitive data and ensure business continuity. By implementing these standards, you can mitigate risks associated with cyber attacks and ensure the overall security and compliance in your organization. \ No newline at end of file +In conclusion, the ISO has established several robust cyber security standards that organizations can adopt to protect their sensitive data and ensure business continuity. By implementing these standards, you can mitigate risks associated with cyber attacks and ensure the overall security and compliance in your organization. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/101-nist.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/101-nist.md index fac96a7e6..5f96e5b97 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/101-nist.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/101-nist.md @@ -33,4 +33,4 @@ The [NIST Risk Management Framework](https://csrc.nist.gov/projects/risk-managem - Authorize Information Systems - Monitor Security Controls -By following NIST cyber security standards, organizations can reduce their vulnerability to cyber-attacks and enhance their overall security posture. \ No newline at end of file +By following NIST cyber security standards, organizations can reduce their vulnerability to cyber-attacks and enhance their overall security posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/102-rmf.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/102-rmf.md index 165077d05..32dc87704 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/102-rmf.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/102-rmf.md @@ -21,4 +21,4 @@ The RMF consists of six steps, which are continuously repeated to ensure the con - **Accountability**: It promotes transparency and clear assignment of responsibilities for managing risks. - **Continuous improvement**: By monitoring and revisiting the risks and security controls, organizations can ensure that their cybersecurity posture remains effective and up-to-date. -In summary, the Risk Management Framework (RMF) is a vital component of an organization's cybersecurity strategy. By following the structured and continuous process outlined in the RMF, organizations can effectively manage the cybersecurity risks they face and maintain a robust and resilient cybersecurity posture. \ No newline at end of file +In summary, the Risk Management Framework (RMF) is a vital component of an organization's cybersecurity strategy. By following the structured and continuous process outlined in the RMF, organizations can effectively manage the cybersecurity risks they face and maintain a robust and resilient cybersecurity posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/103-cis.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/103-cis.md index 9b9628b2c..5b6434402 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/103-cis.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/103-cis.md @@ -30,4 +30,4 @@ CIS Benchmarks provide the following benefits: - Enable organizations to adopt best practices in configuration management. - Facilitate audit preparation and maintaining system documentation. -In summary, the Center for Internet Security (CIS) offers valuable resources that can help organizations bolster their security posture. The CIS Critical Security Controls and CIS Benchmarks are practical tools that provide guidance on implementing security measures to mitigate cyber threats effectively. By following these guidelines, organizations can improve their resilience and better protect themselves in the rapidly evolving digital landscape. \ No newline at end of file +In summary, the Center for Internet Security (CIS) offers valuable resources that can help organizations bolster their security posture. The CIS Critical Security Controls and CIS Benchmarks are practical tools that provide guidance on implementing security measures to mitigate cyber threats effectively. By following these guidelines, organizations can improve their resilience and better protect themselves in the rapidly evolving digital landscape. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/104-csf.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/104-csf.md index 4f9dce7a3..1019f2226 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/104-csf.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/104-csf.md @@ -9,24 +9,27 @@ The Cybersecurity Framework (CSF) is a set of guidelines aimed at helping organi CSF comprises three key components: - **Core** - Consists of five functions, each representing a high-level cybersecurity activity: - * Identify: Understand the organization's cybersecurity risks. - * Protect: Implement safeguards to protect the critical infrastructure. - * Detect: Identify the occurrence of a potential cybersecurity event. - * Respond: Develop and implement appropriate actions to address detected cybersecurity events. - * Recover: Implement plans to restore systems and services after a cybersecurity incident. + + - Identify: Understand the organization's cybersecurity risks. + - Protect: Implement safeguards to protect the critical infrastructure. + - Detect: Identify the occurrence of a potential cybersecurity event. + - Respond: Develop and implement appropriate actions to address detected cybersecurity events. + - Recover: Implement plans to restore systems and services after a cybersecurity incident. - **Tiers** - Provide context for organizations to consider the robustness of their cybersecurity program: - * Tier 1: Partial – Minimal cybersecurity risk management practices. - * Tier 2: Risk Informed – Risk management practices in place, but not consistently applied. - * Tier 3: Repeatable – Risk management practices are consistent across the organization. - * Tier 4: Adaptive – Proactive approach to managing cybersecurity risks. + + - Tier 1: Partial – Minimal cybersecurity risk management practices. + - Tier 2: Risk Informed – Risk management practices in place, but not consistently applied. + - Tier 3: Repeatable – Risk management practices are consistent across the organization. + - Tier 4: Adaptive – Proactive approach to managing cybersecurity risks. - **Profiles** - Organizations create profiles to align their cybersecurity activities with their organizational goals, risk tolerance, and resources. A target profile represents desired outcomes, whereas a current profile reflects the current state of cybersecurity programs. ## Benefits of Implementing CSF + - Enhanced understanding of cybersecurity risks and corresponding management strategies within an organization. - Improved ability to prioritize cybersecurity investments based on risk assessments. - Strengthened communication between different departments and stakeholders regarding cybersecurity expectations and progress. - Compliance with industry standards and guidelines, including support for organizations subject to regulatory requirements. -CSF offers organizations a structured approach to improving their cybersecurity posture. By following this framework, organizations can manage their cybersecurity risks more effectively, create a stronger defense against cyberattacks, and maintain the resilience of their critical infrastructure. \ No newline at end of file +CSF offers organizations a structured approach to improving their cybersecurity posture. By following this framework, organizations can manage their cybersecurity risks more effectively, create a stronger defense against cyberattacks, and maintain the resilience of their critical infrastructure. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/index.md index 8e570b3b7..5dac1a052 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/common-standards/index.md @@ -1 +1 @@ -# Common standards \ No newline at end of file +# Common standards diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/100-event-logs.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/100-event-logs.md index b4b4bc342..8b2d5ad82 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/100-event-logs.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/100-event-logs.md @@ -40,4 +40,4 @@ To ensure optimal use of event logs in your cybersecurity efforts, consider impl - **Configure log rotation**: Limit the size and age of log files to prevent the system from running out of storage space and ensure that older events are archived for easy retrieval. - **Implement centralized logging**: For more complex environments, use a centralized log management system that aggregates logs from multiple sources, facilitating easier analysis and correlation of events across the entire network. - **Protect sensitive log information**: Ensure access to log files is restricted to authorized personnel and that log data is encrypted as necessary to prevent unauthorized access and tampering. -- **Stay informed about common log entries**: Understand the common log entries for your operating system, applications, and security software to quickly identify unusual or suspicious activities in your logs. \ No newline at end of file +- **Stay informed about common log entries**: Understand the common log entries for your operating system, applications, and security software to quickly identify unusual or suspicious activities in your logs. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/101-syslogs.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/101-syslogs.md index 8e9fb496f..0c615f98a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/101-syslogs.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/101-syslogs.md @@ -4,10 +4,10 @@ Syslogs, short for System Logs, are essential components in the world of cyberse ## Benefits of Syslogs -* Centralized Logging: Syslogs are centralized repositories for log data, making it easier to monitor multiple devices and applications from a single location. -* Troubleshooting & Analysis: The data from syslogs can be used to troubleshoot issues or discover potential security breaches, allowing for a faster resolution and improved overall network security. -* Regulatory Compliance: Syslogs can help organizations meet industry-specific standards and guidelines by keeping a record of system events and data. -* Efficient Storage: Centralized storage allows for efficient data management, reducing the need for manual log management across different devices. +- Centralized Logging: Syslogs are centralized repositories for log data, making it easier to monitor multiple devices and applications from a single location. +- Troubleshooting & Analysis: The data from syslogs can be used to troubleshoot issues or discover potential security breaches, allowing for a faster resolution and improved overall network security. +- Regulatory Compliance: Syslogs can help organizations meet industry-specific standards and guidelines by keeping a record of system events and data. +- Efficient Storage: Centralized storage allows for efficient data management, reducing the need for manual log management across different devices. ## Types of Syslog Messages @@ -25,4 +25,4 @@ Setting up a syslog server usually involves installing a syslog daemon, configur Syslog data analysis can be complicated due to the volume and variety of log messages. However, various log analysis tools, such as Graylog, Logstash, and Splunk, simplify this process by providing features like data visualization, filtering, and alerting. These syslog analysis tools extract valuable information from raw log data and help identify patterns, trends, and potential threats. -In conclusion, syslogs are a powerful resource for monitoring, troubleshooting, and securing your organization's network. By utilizing syslog servers and analysis tools, security teams can gather and analyze valuable data to maintain compliance and ensure the overall health of their network. \ No newline at end of file +In conclusion, syslogs are a powerful resource for monitoring, troubleshooting, and securing your organization's network. By utilizing syslog servers and analysis tools, security teams can gather and analyze valuable data to maintain compliance and ensure the overall health of their network. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/102-netflow.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/102-netflow.md index 4f5698ba4..5b0eeb684 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/102-netflow.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/102-netflow.md @@ -23,4 +23,4 @@ To implement NetFlow in your organization, you need to follow these steps: - **Analyze and Monitor**: Use a NetFlow analysis tool or platform to filter, visualize, and explore your network traffic data. This can be the same tool as your NetFlow collector, or a separate solution that integrates with it. - **Integrate with Other Security Tools**: Enhance your security posture by correlating NetFlow data with other security tools such as intrusion detection systems, security information, and event management (SIEM), threat intelligence, and more. -By incorporating NetFlow into your cyber security strategy, you can greatly improve your network visibility, threat detection capabilities, and overall security posture. \ No newline at end of file +By incorporating NetFlow into your cyber security strategy, you can greatly improve your network visibility, threat detection capabilities, and overall security posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/103-packet-captures.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/103-packet-captures.md index ab2b454b2..f16fd3457 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/103-packet-captures.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/103-packet-captures.md @@ -1,6 +1,6 @@ # Packet Captures -Packet captures, also known as *pcaps*, refer to the interception and logging of network traffic. In a cybersecurity context, analyzing packet captures can provide valuable insight into network activity, potential threats, and vulnerabilities. This section will introduce you to the essentials of packet captures and introduce some popular tools used for capturing and analyzing network traffic. +Packet captures, also known as _pcaps_, refer to the interception and logging of network traffic. In a cybersecurity context, analyzing packet captures can provide valuable insight into network activity, potential threats, and vulnerabilities. This section will introduce you to the essentials of packet captures and introduce some popular tools used for capturing and analyzing network traffic. ## Why are Packet Captures Important? @@ -39,4 +39,4 @@ When working with packet captures, consider the following best practices: ## Conclusion -Packet captures are a vital component of cybersecurity, allowing professionals to monitor, detect, and respond to potential threats in a timely and effective manner. By understanding the various tools and techniques related to packet captures, you'll be well-equipped to take on this crucial aspect of your cybersecurity responsibilities. \ No newline at end of file +Packet captures are a vital component of cybersecurity, allowing professionals to monitor, detect, and respond to potential threats in a timely and effective manner. By understanding the various tools and techniques related to packet captures, you'll be well-equipped to take on this crucial aspect of your cybersecurity responsibilities. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/104-firewall-logs.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/104-firewall-logs.md index c24071c64..54792edec 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/104-firewall-logs.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/104-firewall-logs.md @@ -40,4 +40,4 @@ To effectively use firewall logs, it's crucial to establish a consistent and eff - **Retain logs per compliance requirements:** Ensure you store and retain your firewall logs as per your organization's data retention policies and legal regulations. -By effectively implementing firewall log management, you can greatly enhance your organization's cybersecurity posture and be better prepared to respond to potential threats. \ No newline at end of file +By effectively implementing firewall log management, you can greatly enhance your organization's cybersecurity posture and be better prepared to respond to potential threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/index.md index c6636b556..6cc5adbb7 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/find-and-use-logs/index.md @@ -1 +1 @@ -# Find and use logs \ No newline at end of file +# Find and use logs diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/100-nmap.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/100-nmap.md index 46d7f01ab..e5ab00392 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/100-nmap.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/100-nmap.md @@ -1,6 +1,5 @@ # nmap - ## Nmap Nmap, short for "Network Mapper," is a powerful and widely used open-source tool for network discovery, scanning, and security auditing. Nmap was originally designed to rapidly scan large networks, but it also works well for scanning single hosts. Security professionals, network administrators, and cyber security enthusiasts alike use Nmap to identify available hosts and services on a network, reveal their version information, and explore network infrastructure. @@ -14,7 +13,7 @@ Nmap offers a multitude of features that can help you gather information about y - **Version Detection** - Determining the software and version running on network devices. - **Operating System Detection** - Identifying the operating systems of scanned devices. - **Scriptable Interaction with the Target** - Using Nmap Scripting Engine (NSE) to automate tasks and extend functionality. - + ## How It Works Nmap sends specially crafted packets to the target hosts and analyzes the received responses. Based on this information, it detects active hosts, their operating systems, and the services they are running. It can be used to scan for open ports, check for vulnerabilities, and gather valuable information about target devices. @@ -35,4 +34,4 @@ Nmap is available for download on Windows, Linux, and macOS. You can download th ## Conclusion -Understanding and using Nmap is an essential skill for any cyber security professional or network administrator. With its wide range of features and capabilities, it provides invaluable information about your network infrastructure, enabling you to detect vulnerabilities and improve overall security. Regularly monitoring your network with Nmap and other incident response and discovery tools is a critical aspect of maintaining a strong cyber security posture. \ No newline at end of file +Understanding and using Nmap is an essential skill for any cyber security professional or network administrator. With its wide range of features and capabilities, it provides invaluable information about your network infrastructure, enabling you to detect vulnerabilities and improve overall security. Regularly monitoring your network with Nmap and other incident response and discovery tools is a critical aspect of maintaining a strong cyber security posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/101-tracert.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/101-tracert.md index 11df46f21..1731c2e67 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/101-tracert.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/101-tracert.md @@ -13,9 +13,11 @@ To use `tracert`, follow these simple steps: - Open the command prompt (Windows) or terminal (Linux/macOS). - Type `tracert` followed by the target's domain name or IP address, and press Enter. For example: + ``` tracert example.com ``` + - The trace will run, showing the details of each hop, latency, and hop's IP address or hostname in the output. ## Interpreting Tracert Results @@ -37,4 +39,4 @@ Some limitations and considerations to keep in mind when using `tracert`: - `tracert` might not be able to discover every hop in certain network configurations. - On Linux/macOS systems, the equivalent command is called `traceroute`. -Using `tracert` in incident response and discovery helps security teams analyze network path issues, locate potential bottlenecks or problematic hops, and understand network infrastructure performance. \ No newline at end of file +Using `tracert` in incident response and discovery helps security teams analyze network path issues, locate potential bottlenecks or problematic hops, and understand network infrastructure performance. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/102-nslookup.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/102-nslookup.md index 3ade829d2..73f4a928b 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/102-nslookup.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/102-nslookup.md @@ -41,4 +41,4 @@ Some alternatives to NSLookup include: ## Conclusion -In summary, NSLookup is a handy DNS query tool for network administrators and users alike. It offers the basic functionality for finding associated domain names, IP addresses, and other DNS data while being simple to use. However, for more advanced needs, you should consider using alternatives like dig or host. \ No newline at end of file +In summary, NSLookup is a handy DNS query tool for network administrators and users alike. It offers the basic functionality for finding associated domain names, IP addresses, and other DNS data while being simple to use. However, for more advanced needs, you should consider using alternatives like dig or host. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/103-dig.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/103-dig.md index 13b2f2e8e..0289d574d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/103-dig.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/103-dig.md @@ -104,4 +104,4 @@ For a comprehensive list of options, consult the [dig man page](https://manpages ## Conclusion -Dig is a powerful and flexible tool for querying DNS information, making it an essential part of any cyber security professional's toolkit. Whether you're investigating a breach, monitoring domain health, or troubleshooting DNS issues, dig can help you discover critical information about domain names and their associated records. \ No newline at end of file +Dig is a powerful and flexible tool for querying DNS information, making it an essential part of any cyber security professional's toolkit. Whether you're investigating a breach, monitoring domain health, or troubleshooting DNS issues, dig can help you discover critical information about domain names and their associated records. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/104-curl.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/104-curl.md index eeb8c603e..0e8513d53 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/104-curl.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/104-curl.md @@ -4,54 +4,60 @@ Curl is a versatile command-line tool primarily used for transferring data using **Features of Curl:** -* Provides support for numerous protocols. -* Offers SSL/TLS certificates handling and authentication. -* Customizable HTTP request headers and methods. -* Proxies and redirections support. -* IPv6 support. +- Provides support for numerous protocols. +- Offers SSL/TLS certificates handling and authentication. +- Customizable HTTP request headers and methods. +- Proxies and redirections support. +- IPv6 support. ## Common Curl Use Cases in Cybersecurity: - **HTTP Requests:** - Curl can be used to test and troubleshoot web services by making GET or POST requests, specifying headers, or sending data. You can also use it to automate certain tasks. + Curl can be used to test and troubleshoot web services by making GET or POST requests, specifying headers, or sending data. You can also use it to automate certain tasks. - GET Request Example: - ``` - curl https://example.com - ``` + GET Request Example: - POST Request Example: - ``` - curl -X POST -d "data=sample" https://example.com - ``` + ``` + curl https://example.com + ``` + + POST Request Example: + + ``` + curl -X POST -d "data=sample" https://example.com + ``` - **HTTPS with SSL/TLS:** - Curl can be utilized to verify and test SSL/TLS configurations and certificates for web services. + Curl can be utilized to verify and test SSL/TLS configurations and certificates for web services. + + Test a site's SSL/TLS configuration: - Test a site's SSL/TLS configuration: - ``` - curl -Iv https://example.com - ``` + ``` + curl -Iv https://example.com + ``` - **File Transfers:** - Curl can be used for transferring files using protocols like FTP, SCP, and SFTP. + Curl can be used for transferring files using protocols like FTP, SCP, and SFTP. + + FTP Example: + + ``` + curl -u username:password ftp://example.com/path/to/file + ``` - FTP Example: - ``` - curl -u username:password ftp://example.com/path/to/file - ``` - - **Web Application Testing:** - Curl can help you find vulnerabilities in web applications by sending customized HTTP requests, injecting payloads or exploiting their features. - - Send Cookie Example: - ``` - curl -H "Cookie: session=12345" https://example.com - ``` - - Detect Server Software Example: - ``` - curl -I https://example.com - ``` - -Curl is a powerful tool in the arsenal of anyone working in cybersecurity. Understanding and mastering its usage can greatly enhance your capabilities when dealing with various network protocols, web services, and web applications. \ No newline at end of file + Curl can help you find vulnerabilities in web applications by sending customized HTTP requests, injecting payloads or exploiting their features. + + Send Cookie Example: + + ``` + curl -H "Cookie: session=12345" https://example.com + ``` + + Detect Server Software Example: + + ``` + curl -I https://example.com + ``` + +Curl is a powerful tool in the arsenal of anyone working in cybersecurity. Understanding and mastering its usage can greatly enhance your capabilities when dealing with various network protocols, web services, and web applications. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/105-ipconfig.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/105-ipconfig.md index a5256fcb4..fd36c3e78 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/105-ipconfig.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/105-ipconfig.md @@ -28,4 +28,4 @@ To utilize `ipconfig`, open the Command Prompt (CMD) by pressing Windows Key + R - **DNS Cache Investigation:** Examine DNS cache entries as evidence of possible communication to malicious domains, or clear the DNS cache to alleviate malware behavior. - **Troubleshooting Connection Problems:** Validate network connectivity directly, from the local host or with remote hosts through tools like `ping` or `tracert`, utilizing IP addresses from `ipconfig`. -`Ipconfig` is an essential and user-friendly utility for gathering network configuration details, allowing IT professionals to respond efficiently, ensure security, and maintain the health of their computer systems during investigations or discovery tasks. \ No newline at end of file +`Ipconfig` is an essential and user-friendly utility for gathering network configuration details, allowing IT professionals to respond efficiently, ensure security, and maintain the health of their computer systems during investigations or discovery tasks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/106-hping.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/106-hping.md index a884729d4..cc0853bc4 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/106-hping.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/106-hping.md @@ -17,25 +17,28 @@ hping is a versatile and powerful command-line based packet crafting tool that a Here are some example commands using hping: - Perform a traditional ping: - ``` - hping3 -1 - ``` + + ``` + hping3 -1 + ``` - Perform a SYN flood attack: - ``` - hping3 --flood -S -p - ``` + + ``` + hping3 --flood -S -p + ``` - Perform a traceroute using ICMP packets: - ``` - hping3 --traceroute -V -1 - ``` + + ``` + hping3 --traceroute -V -1 + ``` - Perform a UDP scan of the first 100 ports: - ``` - hping3 --udp -p 1-100 - ``` + ``` + hping3 --udp -p 1-100 + ``` ## Summary -In summary, hping is an invaluable tool for anyone involved in network security, administration, or auditing. Its flexibility and power make it an essential part of any cybersecurity toolkit. By understanding how to use hping effectively, you can gain valuable insights into the behavior of networks, devices, and security mechanisms, leading to a more secure and resilient infrastructure. \ No newline at end of file +In summary, hping is an invaluable tool for anyone involved in network security, administration, or auditing. Its flexibility and power make it an essential part of any cybersecurity toolkit. By understanding how to use hping effectively, you can gain valuable insights into the behavior of networks, devices, and security mechanisms, leading to a more secure and resilient infrastructure. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/107-ping.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/107-ping.md index b379a0bd0..ae140c8fd 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/107-ping.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/107-ping.md @@ -18,4 +18,4 @@ When you issue a Ping command, your device sends out ICMP Echo Request packets t - **Blocking ICMP Traffic**: Some devices or firewalls may be configured to block ICMP traffic, making them unresponsive to Ping requests. - **False-Negative Results**: A poor network connection or heavy packet loss may result in a false-negative Ping result, incorrectly displaying the target device as unavailable. -Despite these limitations, Ping remains a useful tool in the cyber security world for network diagnostics and incident response. However, it is essential to use Ping in conjunction with other discovery tools and network analysis techniques for comprehensive network assessments. \ No newline at end of file +Despite these limitations, Ping remains a useful tool in the cyber security world for network diagnostics and incident response. However, it is essential to use Ping in conjunction with other discovery tools and network analysis techniques for comprehensive network assessments. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/108-arp.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/108-arp.md index a2e7c9afd..725d3fc69 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/108-arp.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/108-arp.md @@ -5,6 +5,7 @@ ARP (Address Resolution Protocol) is a crucial part of network communication whi ## How ARP Works In a typical network, devices communicate using their IP addresses. However, the actual communication between devices is facilitated by their MAC (Media Access Control) addresses. ARP is responsible for resolving IP addresses to MAC addresses. Here's a simple example to help illustrate this process: + - Device A wants to communicate with Device B. - Device A knows Device B's IP address but not its MAC address. - Device A broadcasts an ARP request on the network, asking "Who has this IP address? Please tell me your MAC address." @@ -32,4 +33,4 @@ To counter ARP-based attacks and ensure secure communication within a network, v - **Network traffic analyzers**: Network traffic analysis tools, like Wireshark, can help spot suspicious ARP activity and reveal inconsistencies in ARP messages. - **Intrusion Detection Systems (IDSs)**: These systems monitor network traffic for spotting potential security threats, including ARP-based attacks. -In conclusion, understanding the ARP protocol and its potential security risks is crucial for maintaining a secure network environment. By utilizing incident response and discovery tools, it is possible to detect, prevent, and mitigate ARP-based attacks, ensuring a safer network for all connected devices. \ No newline at end of file +In conclusion, understanding the ARP protocol and its potential security risks is crucial for maintaining a secure network environment. By utilizing incident response and discovery tools, it is possible to detect, prevent, and mitigate ARP-based attacks, ensuring a safer network for all connected devices. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/109-cat.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/109-cat.md index 8e10768a2..88e0ca9fd 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/109-cat.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/109-cat.md @@ -18,34 +18,34 @@ Here are some of the useful features of `cat` in incident response and discovery - **Display file contents**: Quickly view file content, which is useful for examining logs and configuration files. - ```sh - cat file.txt - ``` - + ```sh + cat file.txt + ``` + - **Combine multiple files**: Combine contents of multiple files that can be useful while investigating related logs. - ```sh - cat file1.txt file2.txt > combined.txt - ``` - + ```sh + cat file1.txt file2.txt > combined.txt + ``` + - **Number lines while displaying**: Use the `-n` flag to show line numbers in the output, assisting in pinpointing specific entries in large files. - ```sh - cat -n file.txt - ``` - + ```sh + cat -n file.txt + ``` + - **Display non-printable characters**: The `-v` flag allows viewing non-printable characters that might be hidden in a file. - ```sh - cat -v file.txt - ``` - + ```sh + cat -v file.txt + ``` + - **Piping and Archiving**: The `cat` command can interface seamlessly with other command-line utilities, allowing complex operations to be performed with ease. - ```sh - cat logs.txt | grep 'ERROR' > error_logs.txt - ``` - + ```sh + cat logs.txt | grep 'ERROR' > error_logs.txt + ``` + ## Wrapping Up -In summary, `cat` is a versatile and indispensable tool in cybersecurity for simplifying the process of navigating through files, logs, and data during an incident response. Its compatibility with various other Unix utilities and commands makes it a powerful tool in the hands of cyber professionals. \ No newline at end of file +In summary, `cat` is a versatile and indispensable tool in cybersecurity for simplifying the process of navigating through files, logs, and data during an incident response. Its compatibility with various other Unix utilities and commands makes it a powerful tool in the hands of cyber professionals. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/110-dd.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/110-dd.md index 4566a0d66..4cc858057 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/110-dd.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/110-dd.md @@ -40,4 +40,4 @@ In this example, `dd` creates an exact image of the USB drive (`/dev/sdb1`) and Be cautious while using `dd` as it can overwrite and destroy data if used incorrectly. Always verify the input and output files and make sure to have backups of important data. -By mastering the `dd` utility, you'll have a powerful forensic imaging tool at your disposal which will undoubtedly enhance your cybersecurity incident response and discovery capabilities. \ No newline at end of file +By mastering the `dd` utility, you'll have a powerful forensic imaging tool at your disposal which will undoubtedly enhance your cybersecurity incident response and discovery capabilities. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/111-head.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/111-head.md index 736be2b64..845676adb 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/111-head.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/111-head.md @@ -58,4 +58,4 @@ head -n 5 /var/log/syslog head -n 100 /var/log/large-log-file.log ``` -In summary, the `head` command is a handy tool for preliminary analysis of log files that can save crucial time during an incident response. However, for more in-depth analysis, other tools and techniques should be employed. \ No newline at end of file +In summary, the `head` command is a handy tool for preliminary analysis of log files that can save crucial time during an incident response. However, for more in-depth analysis, other tools and techniques should be employed. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/112-tail.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/112-tail.md index 4135ef81b..724578a55 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/112-tail.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/112-tail.md @@ -71,4 +71,4 @@ tail -n 50 /var/log/apache2/access.log tail -f /var/log/syslog ``` -In summary, `tail` is a powerful and versatile command-line utility that proves to be an invaluable resource for system administrators and cybersecurity professionals, providing real-time monitoring and analysis of log files and system activities. \ No newline at end of file +In summary, `tail` is a powerful and versatile command-line utility that proves to be an invaluable resource for system administrators and cybersecurity professionals, providing real-time monitoring and analysis of log files and system activities. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/113-grep.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/113-grep.md index 27e678871..e9ac5ec41 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/113-grep.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/113-grep.md @@ -11,6 +11,7 @@ The basic syntax of grep is as follows: ``` grep [options] pattern [files/directories] ``` + - `options`: Modify the behavior of grep (e.g., case-insensitive search, display line numbers) - `pattern`: The search pattern, which can be a fixed string, a regular expression, or a combination of both - `files/directories`: The target files or directories to search @@ -47,4 +48,4 @@ grep -E -o "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/apache2/access.log ## Conclusion -Grep is an indispensable tool for incident response and discovery tasks in cyber security. It allows you to quickly pinpoint specific patterns in large volumes of data, making it easier to identify potential threats and respond accordingly. As you become more proficient with grep and its wide array of options, you'll gain a valuable resource in your cyber security toolkit. \ No newline at end of file +Grep is an indispensable tool for incident response and discovery tasks in cyber security. It allows you to quickly pinpoint specific patterns in large volumes of data, making it easier to identify potential threats and respond accordingly. As you become more proficient with grep and its wide array of options, you'll gain a valuable resource in your cyber security toolkit. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/114-wireshark.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/114-wireshark.md index 7f39d0624..daff1aaed 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/114-wireshark.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/114-wireshark.md @@ -24,4 +24,4 @@ Wireshark is an open-source network protocol analyzer that allows you to monitor - **Stop and Save Capture:** When you're done analyzing network traffic, click the "Stop" button to cease capturing packets. You may save the captured data for future analysis by selecting "File" > "Save As" and choosing a suitable file format. -Wireshark's capabilities make it an invaluable tool in incident response and discovery for cyber security professionals. Familiarize yourself with this tool to gain a deeper understanding of your network's security and prevent potential cyber threats. \ No newline at end of file +Wireshark's capabilities make it an invaluable tool in incident response and discovery for cyber security professionals. Familiarize yourself with this tool to gain a deeper understanding of your network's security and prevent potential cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/115-winhex.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/115-winhex.md index a7cc03de1..ad876fce9 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/115-winhex.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/115-winhex.md @@ -30,4 +30,4 @@ Armed with the knowledge of its essential features, you can utilize WinHex in se - Examining memory for traces of malware or remnants of an attacker's activities. - Crafting custom scripts to automate repetitive tasks, ensuring a more efficient and systematic investigation. -In conclusion, WinHex is an indispensable and powerful utility for incident responders. Its diverse set of features makes it suitable for various tasks, from initial triage to in-depth forensic investigations. By incorporating WinHex into your incident response toolkit, you can enhance your ability to analyze, understand, and respond to security incidents effectively. \ No newline at end of file +In conclusion, WinHex is an indispensable and powerful utility for incident responders. Its diverse set of features makes it suitable for various tasks, from initial triage to in-depth forensic investigations. By incorporating WinHex into your incident response toolkit, you can enhance your ability to analyze, understand, and respond to security incidents effectively. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/116-memdump.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/116-memdump.md index 490c670a2..9bfd34db5 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/116-memdump.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/116-memdump.md @@ -23,4 +23,4 @@ Remember that Memdump should always be executed with administrator privileges so ## Conclusion -Memdump is a powerful forensic tool that can greatly assist you in conducting an incident response or discovery process. By capturing and analyzing a system's memory, you can identify threats, gather evidence, and ultimately enhance your overall cyber security posture. \ No newline at end of file +Memdump is a powerful forensic tool that can greatly assist you in conducting an incident response or discovery process. By capturing and analyzing a system's memory, you can identify threats, gather evidence, and ultimately enhance your overall cyber security posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/117-ftk-imager.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/117-ftk-imager.md index d91abf577..a9da1d107 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/117-ftk-imager.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/117-ftk-imager.md @@ -4,7 +4,7 @@ FTK Imager provides users with a variety of essential features, such as: -- **Creating forensic images**: FTK Imager can create a forensically sound image of a computer's disk or other storage device in various formats, including raw (dd), E01, and AFF formats. +- **Creating forensic images**: FTK Imager can create a forensically sound image of a computer's disk or other storage device in various formats, including raw (dd), E01, and AFF formats. - **Previewing data**: It allows analysts to preview data stored on any imaging source, such as a hard drive, even before creating a forensic image so that they can determine if the source's data is relevant to the investigation. @@ -23,4 +23,4 @@ To use FTK Imager effectively in incident response: - Preview, examine, and export data as needed for further investigation and analysis. - Use FTK Imager along with other forensic tools and techniques to perform comprehensive digital investigations during incident response and discovery scenarios. -In summary, FTK Imager is a versatile tool that plays a critical role in incident response and discovery efforts by providing secure and forensically sound digital imaging capabilities, enabling investigators to preserve, analyze, and present digital evidence for successful cyber security investigations. \ No newline at end of file +In summary, FTK Imager is a versatile tool that plays a critical role in incident response and discovery efforts by providing secure and forensically sound digital imaging capabilities, enabling investigators to preserve, analyze, and present digital evidence for successful cyber security investigations. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/118-autopsy.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/118-autopsy.md index d6db79ba2..880d0bdfa 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/118-autopsy.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/118-autopsy.md @@ -18,7 +18,7 @@ Autopsy is a versatile and powerful open-source digital forensics platform that ## Installation and Usage -Autopsy is available for download from its official website, [www.autopsy.com/download/](https://www.autopsy.com/download/), and can be installed on Windows, Linux, and macOS platforms. +Autopsy is available for download from its official website, [www.autopsy.com/download/](https://www.autopsy.com/download/), and can be installed on Windows, Linux, and macOS platforms. Once installed, creating a new case is easy. Follow these basic steps: @@ -29,8 +29,8 @@ Once installed, creating a new case is easy. Follow these basic steps: - Configure data ingestion options and select specific modules of interest. - Click on "Finish" to begin the data analysis. -As Autopsy completes its analysis, it will generate a comprehensive report that can be utilized for internal reporting, maintaining case records, or presenting evidence in legal proceedings. +As Autopsy completes its analysis, it will generate a comprehensive report that can be utilized for internal reporting, maintaining case records, or presenting evidence in legal proceedings. ## Conclusion -In conclusion, Autopsy is a valuable tool for incident response and digital forensics professionals. By mastering its functions and capabilities, you can enhance your capabilities in incident investigations, data recovery, and threat attribution. \ No newline at end of file +In conclusion, Autopsy is a valuable tool for incident response and digital forensics professionals. By mastering its functions and capabilities, you can enhance your capabilities in incident investigations, data recovery, and threat attribution. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/index.md index eaeff29be..b8baa643a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/incident-response-and-discovery-tools/index.md @@ -1 +1 @@ -# Incident response and discovery tools \ No newline at end of file +# Incident response and discovery tools diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/index.md index 801f001a2..9c1383817 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/index.md @@ -69,4 +69,4 @@ In addition to technical skills, soft skills play an important role in effective - Adaptability and continuous learning - Teamwork and collaboration -By continually refining and updating your security skills and knowledge, you become an invaluable asset in the rapidly evolving field of cyber security, helping to protect critical systems and data from ever-increasing threats. \ No newline at end of file +By continually refining and updating your security skills and knowledge, you become an invaluable asset in the rapidly evolving field of cyber security, helping to protect critical systems and data from ever-increasing threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/100-buffer-overflow.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/100-buffer-overflow.md index 87573b93e..24ed4c95e 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/100-buffer-overflow.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/100-buffer-overflow.md @@ -28,4 +28,4 @@ To prevent and mitigate buffer overflow vulnerabilities, the following strategie - Enable compiler protections such as stack canaries and address space layout randomization (ASLR). - Regularly scan code for vulnerabilities and conduct security audits. -By being aware of buffer overflow vulnerabilities and implementing these preventive strategies, you can protect your software from potential attacks and keep your systems secure. \ No newline at end of file +By being aware of buffer overflow vulnerabilities and implementing these preventive strategies, you can protect your software from potential attacks and keep your systems secure. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/101-memory-leak.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/101-memory-leak.md index 13ca1f433..863545909 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/101-memory-leak.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/101-memory-leak.md @@ -34,4 +34,4 @@ To mitigate the risk of memory leaks: - **Code Reviews**: Regularly reviewing the code for potential memory management issues can help identify and fix memory leaks early in the development process. - **Utilize Garbage Collection**: Choosing programming languages or frameworks that support automatic garbage collection can help manage memory resources more effectively and prevent memory leaks. -Always remember, addressing memory leaks promptly is crucial in maintaining a secure and efficient computing environment. \ No newline at end of file +Always remember, addressing memory leaks promptly is crucial in maintaining a secure and efficient computing environment. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/102-xss.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/102-xss.md index c86df4f03..9370f5621 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/102-xss.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/102-xss.md @@ -24,4 +24,4 @@ To protect your web applications from XSS attacks, consider implementing the fol - **Regular Security Testing**: Perform regular security audits and penetration tests to identify and fix any vulnerabilities in your web applications. -Remember, XSS vulnerabilities pose a significant risk to user privacy and web application security. By following these best practices, you can build a robust defense against cross-site scripting attacks and keep your users' sensitive data protected. \ No newline at end of file +Remember, XSS vulnerabilities pose a significant risk to user privacy and web application security. By following these best practices, you can build a robust defense against cross-site scripting attacks and keep your users' sensitive data protected. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/103-sql-injection.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/103-sql-injection.md index 380789d21..1cf2182c5 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/103-sql-injection.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/103-sql-injection.md @@ -15,7 +15,7 @@ SELECT * FROM users WHERE username = '$username' AND password = '$password' In this case, `$username` and `$password` are replaced with the values provided by the user. If an attacker enters the following input for the username field, they can manipulate the query to bypass the password check: ``` -' OR 1=1 -- +' OR 1=1 -- ``` The resulting query would look like: @@ -38,4 +38,4 @@ To protect your web applications from SQL Injection attacks, you should: - **Keep Software Up-to-Date**: Regularly update your web application software and database management systems to ensure that you are protected against known vulnerabilities. -By understanding SQL Injection attacks and employing the best practices to prevent them, you can safeguard your web applications and secure your sensitive data from malicious actors. \ No newline at end of file +By understanding SQL Injection attacks and employing the best practices to prevent them, you can safeguard your web applications and secure your sensitive data from malicious actors. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/104-csrf.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/104-csrf.md index 5b41cf0bd..643540abe 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/104-csrf.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/104-csrf.md @@ -29,4 +29,4 @@ Here are some techniques to help prevent CSRF attacks: - **Content Security Policy (CSP):** Implement a CSP header to mitigate cross-site scripting, which can be a vector for CSRF attacks. - **Restrict CORS:** Limit Cross-Origin Resource Sharing (CORS) to trusted domains to prevent unauthorized communication between different origins. -By understanding and applying these preventive measures, the risk of CSRF attacks can be significantly reduced, enhancing the overall safety and security of web applications. \ No newline at end of file +By understanding and applying these preventive measures, the risk of CSRF attacks can be significantly reduced, enhancing the overall safety and security of web applications. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/105-replay-attack.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/105-replay-attack.md index 3aa7e9b41..1c997f7e2 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/105-replay-attack.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/105-replay-attack.md @@ -28,4 +28,4 @@ To prevent replay attacks, consider the following measures: - **Encryption**: Use strong, end-to-end encryption for data being transmitted between parties. This prevents an attacker from intercepting and reading the data. - **Message authentication**: Implement message authentication mechanisms, such as digital signatures or Message Authentication Codes (MAC), to ensure the integrity of the transmitted data. -Understanding and implementing these prevention techniques will help alleviate the risks associated with replay attacks and enhance the overall security of your system. \ No newline at end of file +Understanding and implementing these prevention techniques will help alleviate the risks associated with replay attacks and enhance the overall security of your system. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/106-pass-the-hash.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/106-pass-the-hash.md index 6b3d9cac0..50a688735 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/106-pass-the-hash.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/106-pass-the-hash.md @@ -1,6 +1,6 @@ # Pass the Hash -Pass the hash (PtH) is a type of cyber attack that enables an attacker to authenticate to remote systems by using the underlying NTLM or LanMan hash of a user's password, rather than requiring the plaintext password itself. This type of attack exploits the fact that a password hash can be used for authentication instead of the actual password, giving an attacker access to a user's account without the need to crack the password itself. +Pass the hash (PtH) is a type of cyber attack that enables an attacker to authenticate to remote systems by using the underlying NTLM or LanMan hash of a user's password, rather than requiring the plaintext password itself. This type of attack exploits the fact that a password hash can be used for authentication instead of the actual password, giving an attacker access to a user's account without the need to crack the password itself. ## How does Pass the Hash work? @@ -21,4 +21,4 @@ To defend against pass the hash attacks, organizations should implement a combin - **Strong password policies**: Enforce strong, unique passwords to make it harder for attackers to crack hashes or gain unauthorized access. - **Least privilege principle**: Limit user account privileges and ensure that users only have the permissions necessary for their job roles. - **Credential Guard**: Use Windows Credential Guard or similar security features on supported operating systems to protect stored credentials and limit the risk of hash extraction. -- **Regular monitoring and auditing**: Continuously monitor and audit user activities, access logs, and system security to detect and prevent unauthorized access or suspicious activity. \ No newline at end of file +- **Regular monitoring and auditing**: Continuously monitor and audit user activities, access logs, and system security to detect and prevent unauthorized access or suspicious activity. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/107-directory-traversal.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/107-directory-traversal.md index d25999072..60acb7420 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/107-directory-traversal.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/107-directory-traversal.md @@ -32,4 +32,4 @@ There are several methods to prevent directory traversal attacks: - **Use Chroot Jails:** Deploy applications inside chroot jails to restrict access to a certain directory, thwarting attempts to traverse outside that directory. -By implementing these countermeasures, you can minimize the risk of directory traversal attacks and help protect your system's critical files and directories. \ No newline at end of file +By implementing these countermeasures, you can minimize the risk of directory traversal attacks and help protect your system's critical files and directories. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/index.md index 98e6c0b06..18a729777 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/other-attacks/index.md @@ -1 +1 @@ -# Other attacks \ No newline at end of file +# Other attacks diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/100-ftp-vs-sftp.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/100-ftp-vs-sftp.md index 22017ffce..acddcb582 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/100-ftp-vs-sftp.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/100-ftp-vs-sftp.md @@ -5,10 +5,12 @@ FTP is a standard network protocol used to transfer files from one host to another over a TCP-based network, such as the Internet. It is an unsecure protocol that relies on clear-text data transmission, meaning data is sent in plain text and can be easily intercepted by malicious actors. **Pros of FTP:** + - Simple and widely supported by many systems - Easy to set up and use **Cons of FTP:** + - Insecure, as it transmits data in plain-text - Passwords and file contents can be intercepted by malicious actors - Vulnerable to attacks like packet sniffing and man-in-the-middle @@ -18,11 +20,13 @@ FTP is a standard network protocol used to transfer files from one host to anoth SFTP, also known as Secure File Transfer Protocol, is an extension of SSH (Secure Shell) protocol that allows for the encrypted transfer of files over a secure channel. Unlike FTP, SFTP encrypts both data and commands, providing privacy and integrity to the data transmission. **Pros of SFTP:** + - Secure, as it uses encryption to protect data in transit - Provides authentication, ensuring that the sender and receiver are who they claim to be - Mitigates the risk of attacks like packet sniffing and man-in-the-middle **Cons of SFTP:** + - May be slightly slower than FTP due to the encryption and decryption process - Can be more difficult to set up and configure @@ -30,4 +34,4 @@ SFTP, also known as Secure File Transfer Protocol, is an extension of SSH (Secur In summary, although FTP is easier to set up and has been widely used for file transfers historically, SFTP is the more secure and recommended option. SFTP provides encryption, data integrity, and authentication, ensuring that your data is protected while in transit. -It's essential to prioritize cybersecurity when transferring files between systems. Therefore, it is encouraged to adopt SFTP over FTP to significantly reduce the risk of data breaches and potential attacks. \ No newline at end of file +It's essential to prioritize cybersecurity when transferring files between systems. Therefore, it is encouraged to adopt SFTP over FTP to significantly reduce the risk of data breaches and potential attacks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/101-ssl-vs-tls.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/101-ssl-vs-tls.md index 3fa09acf5..b2e8a5e19 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/101-ssl-vs-tls.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/101-ssl-vs-tls.md @@ -29,4 +29,4 @@ TLS was introduced by the Internet Engineering Task Force (IETF) in 1999 as a re Given the security concerns with SSL and the outdated encryption methods it uses, it is essential to use TLS for secure communication. It is recommended to use the latest version of TLS (currently, 1.3) for maximum security and performance. -In conclusion, make sure to configure your systems and applications to use TLS and disable SSL to ensure secure communication and protection against known vulnerabilities. \ No newline at end of file +In conclusion, make sure to configure your systems and applications to use TLS and disable SSL to ensure secure communication and protection against known vulnerabilities. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/102-ipsec.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/102-ipsec.md index b5ae3682a..e4476351c 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/102-ipsec.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/102-ipsec.md @@ -13,18 +13,18 @@ IPsec operates at the network layer, making it suitable for protecting various a IPsec primarily consists of two main components: -* **AH (Authentication Header):** AH provides data integrity and authentication by adding an authentication header to each IP packet. It verifies that the packet has not been altered during transit by checking the integrity of the data and the identity of the sender. +- **AH (Authentication Header):** AH provides data integrity and authentication by adding an authentication header to each IP packet. It verifies that the packet has not been altered during transit by checking the integrity of the data and the identity of the sender. -* **ESP (Encapsulating Security Payload):** ESP provides confidentiality by encrypting the data in IP packets. This ensures that the packet's contents are safe from unauthorized access and tampering during transmission. +- **ESP (Encapsulating Security Payload):** ESP provides confidentiality by encrypting the data in IP packets. This ensures that the packet's contents are safe from unauthorized access and tampering during transmission. IPsec also uses two primary modes of operation: -* **Transport Mode:** In transport mode, IPsec is applied only to the payload of an IP packet. This mode is typically used for securing end-to-end communication between hosts. +- **Transport Mode:** In transport mode, IPsec is applied only to the payload of an IP packet. This mode is typically used for securing end-to-end communication between hosts. -* **Tunnel Mode:** In tunnel mode, IPsec is applied to the entire IP packet, including the header. This mode is commonly used in VPNs, where the entire packet is encapsulated, providing security between two networks. +- **Tunnel Mode:** In tunnel mode, IPsec is applied to the entire IP packet, including the header. This mode is commonly used in VPNs, where the entire packet is encapsulated, providing security between two networks. ## IPsec in Practice To use IPsec, an organization must first establish a security association (SA) between the communicating parties. The SA contains the necessary information, such as encryption keys and chosen encryption algorithms, for secured communication. The Internet Key Exchange (IKE) protocol is widely used to create and manage SAs. -Overall, IPsec is a flexible and powerful tool for enhancing cybersecurity at the network layer. By incorporating IPsec into your network configurations, you can prevent various threats and provide secure communication to your users. \ No newline at end of file +Overall, IPsec is a flexible and powerful tool for enhancing cybersecurity at the network layer. By incorporating IPsec into your network configurations, you can prevent various threats and provide secure communication to your users. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/103-dnssec.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/103-dnssec.md index afe479b62..187e32bf9 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/103-dnssec.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/103-dnssec.md @@ -32,4 +32,4 @@ While DNSSEC significantly improves DNS security, it does have some challenges a - **Larger DNS Responses**: DNSSEC adds additional data to DNS responses, which can lead to larger response sizes and possible performance impacts. -Despite these challenges, DNSSEC is a critical security measure to protect against DNS-based attacks, and its adoption is highly recommended. \ No newline at end of file +Despite these challenges, DNSSEC is a critical security measure to protect against DNS-based attacks, and its adoption is highly recommended. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/104-ldaps.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/104-ldaps.md index dcd9f4278..d94f356c8 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/104-ldaps.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/104-ldaps.md @@ -30,4 +30,4 @@ To ensure a secure and reliable LDAPS setup, you should consider the following b - **Monitor and manage the LDAPS infrastructure:** Regularly review logs, analyze performance, and keep software up-to-date to maintain a secure and efficient setup. - **Enforce a gradual transition from LDAP to LDAPS:** Before fully migrating to LDAPS, run both protocols during the transition period to ensure a smooth migration and to avoid potential downtime. -By understanding LDAPS and implementing it correctly, you can ensure secure communication while accessing and managing your directory services, thereby enhancing your organization's overall cybersecurity. \ No newline at end of file +By understanding LDAPS and implementing it correctly, you can ensure secure communication while accessing and managing your directory services, thereby enhancing your organization's overall cybersecurity. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/105-srtp.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/105-srtp.md index 4629eab53..87fbb8538 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/105-srtp.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/105-srtp.md @@ -18,4 +18,4 @@ Replay protection is implemented in SRTP to prevent attackers from re-sending pr ## Conclusion -As a result, SRTP provides an added layer of security while maintaining the real-time capabilities of RTP. Combining these security features, SRTP has become the preferred protocol in audio and video communication for various applications that require a higher level of security and privacy. Implementing secure protocols such as SRTP is an essential step in enhancing your overall cybersecurity. \ No newline at end of file +As a result, SRTP provides an added layer of security while maintaining the real-time capabilities of RTP. Combining these security features, SRTP has become the preferred protocol in audio and video communication for various applications that require a higher level of security and privacy. Implementing secure protocols such as SRTP is an essential step in enhancing your overall cybersecurity. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/106-s-mime.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/106-s-mime.md index ce52d58fe..7552938a0 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/106-s-mime.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/106-s-mime.md @@ -32,4 +32,4 @@ Although S/MIME provides a strong layer of security to email communications, it - **Certificate management**: Managing digital certificates can be challenging, especially for organizations or users with a large number of certificates. Regularly updating and renewing certificates is crucial to maintaining security. -Despite these limitations, S/MIME remains an essential security measure for protecting sensitive email communications. It's highly recommended for organizations dealing with confidential data and for individuals who prioritize privacy and security. \ No newline at end of file +Despite these limitations, S/MIME remains an essential security measure for protecting sensitive email communications. It's highly recommended for organizations dealing with confidential data and for individuals who prioritize privacy and security. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/index.md index 220d8c68a..8efcbf84a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/secure-vs-unsecure-protocols/index.md @@ -1 +1 @@ -# Secure vs unsecure protocols \ No newline at end of file +# Secure vs unsecure protocols diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/tools-for-unintended-purposes/100-lolbas.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/tools-for-unintended-purposes/100-lolbas.md index cb7172f5d..229aadcde 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/tools-for-unintended-purposes/100-lolbas.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/tools-for-unintended-purposes/100-lolbas.md @@ -43,4 +43,4 @@ To protect against LoLBAS-based attacks, organizations should consider taking th LoLBAS present a significant challenge to cyber security, as they blend in with legitimate system activities. However, overcoming this challenge is possible through a combination of proactive monitoring, system hardening, and user education. -Ensure you are well prepared to identify and mitigate LoLBAS attacks by following the recommendations provided in this guide. Stay vigilant and stay secure! \ No newline at end of file +Ensure you are well prepared to identify and mitigate LoLBAS attacks by following the recommendations provided in this guide. Stay vigilant and stay secure! diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/tools-for-unintended-purposes/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/tools-for-unintended-purposes/index.md index a0c2de352..6f926bad5 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/tools-for-unintended-purposes/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/tools-for-unintended-purposes/index.md @@ -1 +1 @@ -# Tools for unintended purposes \ No newline at end of file +# Tools for unintended purposes diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/100-attck.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/100-attck.md index d7231f1de..e4182ad68 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/100-attck.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/100-attck.md @@ -24,4 +24,4 @@ By understanding the possible threats detailed in the ATT&CK framework and incor - Evaluate the effectiveness of current detection and prevention tools - Train your team in identifying and responding to typical attack patterns -In summary, the ATT&CK framework is an invaluable resource for understanding the techniques and methods used by adversaries in real-world cyber attacks. As an author of a cyber security guide, ensuring that you are familiar with ATT&CK can help you build a more effective, comprehensive, and robust security strategy to keep your organization safe. \ No newline at end of file +In summary, the ATT&CK framework is an invaluable resource for understanding the techniques and methods used by adversaries in real-world cyber attacks. As an author of a cyber security guide, ensuring that you are familiar with ATT&CK can help you build a more effective, comprehensive, and robust security strategy to keep your organization safe. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/101-kill-chain.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/101-kill-chain.md index d6af42da4..fb5c419f9 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/101-kill-chain.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/101-kill-chain.md @@ -18,4 +18,4 @@ In the context of cyber security, the kill chain approach has been adapted by va - **Actions on Objectives:** With full access, the attacker now achieves their intended goal, which may be data exfiltration, system disruption or other malicious outcomes. -To protect against cyber threats, it is essential to understand these steps, identify the weak spots in your organization's security posture, and apply the necessary measures to prevent, detect or respond to potential threats in a timely manner. By utilizing the kill chain approach, you can effectively improve your organization's cyber security defenses and mitigate the risks posed by cybercriminals. \ No newline at end of file +To protect against cyber threats, it is essential to understand these steps, identify the weak spots in your organization's security posture, and apply the necessary measures to prevent, detect or respond to potential threats in a timely manner. By utilizing the kill chain approach, you can effectively improve your organization's cyber security defenses and mitigate the risks posed by cybercriminals. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/102-diamond-model.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/102-diamond-model.md index 14cab22c8..225dabfed 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/102-diamond-model.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/102-diamond-model.md @@ -11,4 +11,4 @@ By examining these four elements and their relationships, analysts can gain a co In addition to the core elements, the Diamond Model also considers external factors, such as social, political, and economic contexts, which could influence the adversary's behavior or choice of targets. This broader context can further refine the analysis and help develop more robust defensive strategies. -In conclusion, the Diamond Model of Intrusion Analysis is an effective framework for better understanding and addressing the ever-evolving cybersecurity landscape. By focusing on the interactions between adversaries, their capabilities, infrastructure, and victims, organizations can effectively mitigate risks, improve their defenses, and enhance their overall cybersecurity posture. \ No newline at end of file +In conclusion, the Diamond Model of Intrusion Analysis is an effective framework for better understanding and addressing the ever-evolving cybersecurity landscape. By focusing on the interactions between adversaries, their capabilities, infrastructure, and victims, organizations can effectively mitigate risks, improve their defenses, and enhance their overall cybersecurity posture. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/index.md index e82fe2e8f..8d9a0481e 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/uderstand-frameworks/index.md @@ -1 +1 @@ -# Uderstand frameworks \ No newline at end of file +# Uderstand frameworks diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/100-virus-total.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/100-virus-total.md index 95a6a1a50..16d6bd960 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/100-virus-total.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/100-virus-total.md @@ -1,15 +1,12 @@ # VirusTotal -[VirusTotal](https://www.virustotal.com/) is a free online service that analyzes files and URLs to detect viruses, worms, trojans, and other kinds of malicious content. It uses multiple antivirus engines and website scanners to provide a comprehensive report on the security status of a file or website. +[VirusTotal](https://www.virustotal.com/) is a free online service that analyzes files and URLs to detect viruses, worms, trojans, and other kinds of malicious content. It uses multiple antivirus engines and website scanners to provide a comprehensive report on the security status of a file or website. VirusTotal is not a substitute for traditional antivirus software, but it can be used as a complementary tool to assess the security of specific files and websites. Key features of VirusTotal include: -* **File analysis:** Users can upload a file (up to 650MB) to the VirusTotal platform, where it will be analyzed by a variety of antivirus engines. The platform then provides a report that shows if any of the antivirus engines flagged the file as suspicious or malicious. - -* **URL analysis:** Users can submit a URL to VirusTotal for scanning, and the platform will analyze the website using multiple website scanners, such as blacklisting services and domain reputation tools, to determine if the site is a potential security risk. - -* **APIs and integrations:** VirusTotal offers a public API that allows developers to access its resources programmatically. This means you can integrate VirusTotal's features into your own tools or applications, enhancing your security capabilities with the power of multiple antivirus engines. - -* **Community and collaboration:** VirusTotal enables users to create a free account, which grants them access to a range of additional features, such as sharing comments and opinions about files and URLs with other users. This allows the community to work together to better understand and detect potential security threats. +- **File analysis:** Users can upload a file (up to 650MB) to the VirusTotal platform, where it will be analyzed by a variety of antivirus engines. The platform then provides a report that shows if any of the antivirus engines flagged the file as suspicious or malicious. +- **URL analysis:** Users can submit a URL to VirusTotal for scanning, and the platform will analyze the website using multiple website scanners, such as blacklisting services and domain reputation tools, to determine if the site is a potential security risk. +- **APIs and integrations:** VirusTotal offers a public API that allows developers to access its resources programmatically. This means you can integrate VirusTotal's features into your own tools or applications, enhancing your security capabilities with the power of multiple antivirus engines. +- **Community and collaboration:** VirusTotal enables users to create a free account, which grants them access to a range of additional features, such as sharing comments and opinions about files and URLs with other users. This allows the community to work together to better understand and detect potential security threats. -When encountering a suspicious file or website, consider using VirusTotal as an additional resource to better understand the potential risks associated with it. However, keep in mind that no security tool is infallible, and maintaining a layered approach to cybersecurity should always be a top priority. \ No newline at end of file +When encountering a suspicious file or website, consider using VirusTotal as an additional resource to better understand the potential risks associated with it. However, keep in mind that no security tool is infallible, and maintaining a layered approach to cybersecurity should always be a top priority. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/101-joe-sandbox.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/101-joe-sandbox.md index 4907bcce3..82f7f3650 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/101-joe-sandbox.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/101-joe-sandbox.md @@ -22,4 +22,4 @@ Joe Sandbox proves to be an instrumental tool by helping organizations in perfor - Improving incident response processes by understanding attack vectors and indicators of compromise - Educating staff and creating awareness about the latest malware trends and attack techniques -In summary, Joe Sandbox plays a critical role in strengthening an organization's cyber-security posture by delivering in-depth malware analysis and detection capabilities. Utilizing this tool effectively can result in a proactive and robust defense mechanism against increasingly complex and targeted cyber-threats. \ No newline at end of file +In summary, Joe Sandbox plays a critical role in strengthening an organization's cyber-security posture by delivering in-depth malware analysis and detection capabilities. Utilizing this tool effectively can result in a proactive and robust defense mechanism against increasingly complex and targeted cyber-threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/102-any-run.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/102-any-run.md index 4495942e4..99f03152b 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/102-any-run.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/102-any-run.md @@ -22,4 +22,4 @@ - Choose the operating system and other virtual environment settings. - Start the analysis task, and monitor file behavior through the live visualization and output reports provided by Any.Run. -By utilizing Any.Run as part of your cybersecurity toolkit, you can gain in-depth insights into the behavior and impact of potentially malicious files, leading to more effective and informed decisions about your cyber threat landscape. \ No newline at end of file +By utilizing Any.Run as part of your cybersecurity toolkit, you can gain in-depth insights into the behavior and impact of potentially malicious files, leading to more effective and informed decisions about your cyber threat landscape. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/103-urlvoid.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/103-urlvoid.md index 014d16250..b8392211c 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/103-urlvoid.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/103-urlvoid.md @@ -14,4 +14,4 @@ URLVoid offers the following features: To use URLVoid, visit their website at [www.urlvoid.com](https://www.urlvoid.com/), input the URL or domain, and the service will generate a comprehensive report within seconds. -Keep in mind, URLVoid serves as a starting point for investigating potentially harmful websites. A clean report does not guarantee the absolute safety of a domain; conversely, false positives occasionally occur. We recommend using URLVoid in combination with other security tools and practices to ensure your online safety. \ No newline at end of file +Keep in mind, URLVoid serves as a starting point for investigating potentially harmful websites. A clean report does not guarantee the absolute safety of a domain; conversely, false positives occasionally occur. We recommend using URLVoid in combination with other security tools and practices to ensure your online safety. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/104-urlscan.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/104-urlscan.md index 029569ecc..210c0c51d 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/104-urlscan.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/104-urlscan.md @@ -4,20 +4,20 @@ URLScan is a popular security tool that helps protect your web server from poten ## Key Features -* **Analyzing Requests**: URLScan examines incoming HTTP requests to identify potentially malicious patterns or signs of an attack. -* **Blocking URLs**: By filtering URLs with specific patterns or known bad signatures, URLScan helps protect your web server from harmful requests. -* **Customizable Rules**: You can create custom rules tailored to your specific environment to provide a comprehensive security solution. -* **Logging**: URLScan logs security-related events, allowing you to monitor and act on potential security threats. +- **Analyzing Requests**: URLScan examines incoming HTTP requests to identify potentially malicious patterns or signs of an attack. +- **Blocking URLs**: By filtering URLs with specific patterns or known bad signatures, URLScan helps protect your web server from harmful requests. +- **Customizable Rules**: You can create custom rules tailored to your specific environment to provide a comprehensive security solution. +- **Logging**: URLScan logs security-related events, allowing you to monitor and act on potential security threats. ## Usage in Cyber Security Some common use-cases for URLScan in the cyber security realm are: -* **Prevent SQL Injection**: URLScan is capable of detecting requests that contain SQL-like patterns, helping to secure your web applications from SQL injection attacks. -* **Mitigate XSS Attacks**: URLScan can be configured to deny requests with common cross-site scripting patterns or specific user-agent strings associated with known exploits. -* **Control Access to Sensitive Directories**: By configuring URLScan to block access to specific directories or file types, you can reduce the risk of unauthorized access to sensitive files on your web server. -* **Monitor Suspicious Activity**: Since URLScan provides detailed logs of security events, you can use this information to quickly identify and respond to potential security threats. +- **Prevent SQL Injection**: URLScan is capable of detecting requests that contain SQL-like patterns, helping to secure your web applications from SQL injection attacks. +- **Mitigate XSS Attacks**: URLScan can be configured to deny requests with common cross-site scripting patterns or specific user-agent strings associated with known exploits. +- **Control Access to Sensitive Directories**: By configuring URLScan to block access to specific directories or file types, you can reduce the risk of unauthorized access to sensitive files on your web server. +- **Monitor Suspicious Activity**: Since URLScan provides detailed logs of security events, you can use this information to quickly identify and respond to potential security threats. ## Conclusion -URLScan is an essential tool for maintaining web server security in today's complex online environment. By implementing this tool, you can mitigate common web-based attacks and reduce the number of potential threats to your web server. Don’t forget to monitor the logs generated by URLScan regularly to stay on top of potential threats and ensure the ongoing security of your web application. \ No newline at end of file +URLScan is an essential tool for maintaining web server security in today's complex online environment. By implementing this tool, you can mitigate common web-based attacks and reduce the number of potential threats to your web server. Don’t forget to monitor the logs generated by URLScan regularly to stay on top of potential threats and ensure the ongoing security of your web application. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/105-whois.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/105-whois.md index 30e715711..2757576fc 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/105-whois.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/105-whois.md @@ -30,4 +30,4 @@ When performing a Whois query, you may typically find the following information: It is important to note that Whois information may not always be accurate, as domain owners can provide false information or use privacy protection services to mask their identity. Additionally, some registrars may limit the number of Whois queries from a single IP address, which can limit the usefulness of Whois in some scenarios. -In conclusion, Whois is a valuable tool for understanding domain registration and ownership information. It can be used by cyber security professionals, among others, to investigate potentially malicious websites or domains, identify patterns or relationships among sites, and gain insights into a domain's history and ownership. Remember to consider the limitations of the information obtained through Whois and always verify the gathered information through various sources. \ No newline at end of file +In conclusion, Whois is a valuable tool for understanding domain registration and ownership information. It can be used by cyber security professionals, among others, to investigate potentially malicious websites or domains, identify patterns or relationships among sites, and gain insights into a domain's history and ownership. Remember to consider the limitations of the information obtained through Whois and always verify the gathered information through various sources. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/index.md index be81d9de0..2fc6f3ef3 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-common-tools/index.md @@ -1 +1 @@ -# Understand common tools \ No newline at end of file +# Understand common tools diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/100-antivirus.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/100-antivirus.md index 75c5fa5f0..09d2dedd3 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/100-antivirus.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/100-antivirus.md @@ -4,18 +4,18 @@ Antivirus (or anti-virus) software is a program designed to protect your compute ## Key Features of Antivirus Software -* **Real-time scanning**: Antivirus programs continuously monitor your computer for potential threats, enabling them to identify and neutralize malware before it can cause harm. +- **Real-time scanning**: Antivirus programs continuously monitor your computer for potential threats, enabling them to identify and neutralize malware before it can cause harm. -* **Malware detection**: Antivirus software uses a combination of signature-based detection and behavioral analysis to identify known and unknown malware. Signature-based detection relies on a database of known virus signatures while behavioral analysis examines how the software behaves on your system. +- **Malware detection**: Antivirus software uses a combination of signature-based detection and behavioral analysis to identify known and unknown malware. Signature-based detection relies on a database of known virus signatures while behavioral analysis examines how the software behaves on your system. -* **Automatic updates**: Since new malware is created daily, antivirus software must be frequently updated to stay effective. Most antivirus software can automatically update their virus definitions (database of known malware signatures) and software modules to maintain maximum protection. +- **Automatic updates**: Since new malware is created daily, antivirus software must be frequently updated to stay effective. Most antivirus software can automatically update their virus definitions (database of known malware signatures) and software modules to maintain maximum protection. -* **Quarantine and removal**: Upon detecting malware, antivirus software will attempt to either remove the threat entirely or quarantine it to prevent it from causing further damage to your system. +- **Quarantine and removal**: Upon detecting malware, antivirus software will attempt to either remove the threat entirely or quarantine it to prevent it from causing further damage to your system. -* **System scans**: It is essential to perform regular system scans to identify and remove any malware that may have bypassed real-time scanning. Most antivirus programs offer quick, full, and custom scanning options. +- **System scans**: It is essential to perform regular system scans to identify and remove any malware that may have bypassed real-time scanning. Most antivirus programs offer quick, full, and custom scanning options. -* **External device scanning**: Antivirus software can also scan external devices, such as USB drives and CDs, for potential threats before they can infect your computer. +- **External device scanning**: Antivirus software can also scan external devices, such as USB drives and CDs, for potential threats before they can infect your computer. -* **Email protection**: Email is a common vector for malware distribution. Antivirus programs often include email scanning as a feature to detect and prevent email-borne threats. +- **Email protection**: Email is a common vector for malware distribution. Antivirus programs often include email scanning as a feature to detect and prevent email-borne threats. -By installing and maintaining an up-to-date antivirus program, you can significantly reduce the risk of falling victim to cyber attacks and maintain a secure environment for your computer and personal data. \ No newline at end of file +By installing and maintaining an up-to-date antivirus program, you can significantly reduce the risk of falling victim to cyber attacks and maintain a secure environment for your computer and personal data. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/101-antimalware.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/101-antimalware.md index 4c3ed11cd..fd1b950ef 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/101-antimalware.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/101-antimalware.md @@ -30,4 +30,4 @@ When selecting an antimalware solution, consider the following factors: - **Reputation**: Choose an antimalware product from a reputable vendor with a proven track record of successful malware detection and removal. -In conclusion, antimalware is a crucial component of a well-rounded cybersecurity strategy. Investing in a comprehensive antimalware solution can help protect your computer systems, data, and personal information from a wide range of threats. Regularly update your antimalware software and maintain good cyber hygiene practices to minimize your risk of malware infections. \ No newline at end of file +In conclusion, antimalware is a crucial component of a well-rounded cybersecurity strategy. Investing in a comprehensive antimalware solution can help protect your computer systems, data, and personal information from a wide range of threats. Regularly update your antimalware software and maintain good cyber hygiene practices to minimize your risk of malware infections. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/102-edr.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/102-edr.md index ce4b7f741..077104538 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/102-edr.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/102-edr.md @@ -1,6 +1,6 @@ # EDR -**Endpoint Detection and Response (EDR)** is a cybersecurity technology that helps organizations to continuously monitor, detect, investigate, and remediate potential threats on endpoint devices. These devices include computers, laptops, smartphones, and other IoT devices that are connected to a network. +**Endpoint Detection and Response (EDR)** is a cybersecurity technology that helps organizations to continuously monitor, detect, investigate, and remediate potential threats on endpoint devices. These devices include computers, laptops, smartphones, and other IoT devices that are connected to a network. EDR is particularly important in modern security strategies, as it allows security teams to gain visibility and control over a wide range of endpoints and their activities. Traditional antivirus software and firewalls may not provide sufficient protection against advanced cyber threats, making EDR a necessary addition for organizations to proactively combat cyber attacks. @@ -14,4 +14,4 @@ Here are the main components of EDR: - **Remediation**: After identifying a security incident, EDR solutions allow security teams to take prompt remedial actions, such as isolating affected devices, rolling back malicious changes, or blocking related network connections. -In summary, EDR is a crucial cybersecurity technology that helps organizations protect their network and devices from advanced cyber threats by providing continuous monitoring, prompt detection, thorough investigation, and effective remediation capabilities. \ No newline at end of file +In summary, EDR is a crucial cybersecurity technology that helps organizations protect their network and devices from advanced cyber threats by providing continuous monitoring, prompt detection, thorough investigation, and effective remediation capabilities. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/103-dlp.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/103-dlp.md index f852acc8e..a55ecae5f 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/103-dlp.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/103-dlp.md @@ -32,4 +32,4 @@ Effective Data Loss Prevention requires a combination of technology, policies, a - **Monitor and adapt**: Regularly analyze the effectiveness of your DLP solution and make adjustments as needed to address new threats, regulatory changes, or shifting business requirements. -By implementing a comprehensive Data Loss Prevention strategy, organizations can proactively protect their sensitive data and reduce the risk of data breaches, regulatory fines, and damage to their reputation. \ No newline at end of file +By implementing a comprehensive Data Loss Prevention strategy, organizations can proactively protect their sensitive data and reduce the risk of data breaches, regulatory fines, and damage to their reputation. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/104-firewall-nextgen-firewall.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/104-firewall-nextgen-firewall.md index 4c3ebeba0..a676c85c0 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/104-firewall-nextgen-firewall.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/104-firewall-nextgen-firewall.md @@ -16,4 +16,4 @@ A **Next-Generation Firewall (NGFW)** is an advanced type of firewall that goes - **Centralized management and reporting:** These firewalls offer a centralized management console to easily manage security policies and monitor network activities. -By combining these advanced protection features, Next-Generation Firewalls provide enhanced visibility and control, enabling organizations to effectively secure their networks in today's complex and ever-evolving cyber-threat landscape. \ No newline at end of file +By combining these advanced protection features, Next-Generation Firewalls provide enhanced visibility and control, enabling organizations to effectively secure their networks in today's complex and ever-evolving cyber-threat landscape. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/105-hips.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/105-hips.md index ccc51da4a..2e4540bef 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/105-hips.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/105-hips.md @@ -14,4 +14,4 @@ Key features of HIPS include: - **Zero-day Protection**: HIPS can identify and block previously unknown threats, providing protection against new malware and vulnerabilities that traditional signature-based solutions might miss. -In summary, a Host-based Intrusion Prevention System (HIPS) effectively safeguards individual devices by detecting and preventing suspicious activities and known threats. By implementing HIPS alongside other cybersecurity measures, organizations can enhance their overall security posture and keep their systems protected from various cyber threats. \ No newline at end of file +In summary, a Host-based Intrusion Prevention System (HIPS) effectively safeguards individual devices by detecting and preventing suspicious activities and known threats. By implementing HIPS alongside other cybersecurity measures, organizations can enhance their overall security posture and keep their systems protected from various cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/106-nids.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/106-nids.md index 8382ec855..9b1d6f4df 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/106-nids.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/106-nids.md @@ -20,4 +20,4 @@ NIDS identifies possible attacks or intrusions by comparing network activity aga In the event of a detected threat or policy violation, NIDS produces alerts and reports to provide administrators with crucial information about the event. Depending on the configuration, the system may also respond by blocking the suspicious traffic, isolating the affected device, or taking other pre-defined actions. - Implementing NIDS as a part of your cyber security strategy is an essential step for ensuring the ongoing integrity and confidentiality of your network environment. \ No newline at end of file +Implementing NIDS as a part of your cyber security strategy is an essential step for ensuring the ongoing integrity and confidentiality of your network environment. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/108-host-based-firewall.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/108-host-based-firewall.md index 275a31f14..8ac4e6d6c 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/108-host-based-firewall.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/108-host-based-firewall.md @@ -14,4 +14,4 @@ A _host-based firewall_ is a software application or suite of applications that - **Ease of Deployment and Management:** Host-based firewalls can be easily installed and managed on individual devices, making them well-suited for scenarios where installing a network-based firewall might not be feasible or cost-effective. -Using a host-based firewall can help strengthen a device's security posture by providing an additional layer of protection against network threats. However, it is important to remember that a host-based firewall should be just one element of a comprehensive cybersecurity strategy, which also includes updating software and operating systems, strong passwords, and regular backing up of data. \ No newline at end of file +Using a host-based firewall can help strengthen a device's security posture by providing an additional layer of protection against network threats. However, it is important to remember that a host-based firewall should be just one element of a comprehensive cybersecurity strategy, which also includes updating software and operating systems, strong passwords, and regular backing up of data. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/109-sandboxing.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/109-sandboxing.md index 39feabec7..4df0e0072 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/109-sandboxing.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/109-sandboxing.md @@ -11,4 +11,4 @@ Some benefits of sandboxing include: - **Testing and analysis:** Sandboxed environments can be used to safely test new applications or analyze potentially malicious software without risking the integrity of the overall system. - **Resource management:** Sandboxing can help manage the resources that an application can consume, preventing it from monopolizing system resources and negatively affecting the performance of other applications. -It's important to note that while sandboxing is an essential tool in strengthening cybersecurity, it is not foolproof. Skilled attackers may still find ways to escape a sandboxed environment and cause harm to the system. However, using sandboxing techniques as part of a comprehensive security strategy provides a valuable layer of protection for your system. \ No newline at end of file +It's important to note that while sandboxing is an essential tool in strengthening cybersecurity, it is not foolproof. Skilled attackers may still find ways to escape a sandboxed environment and cause harm to the system. However, using sandboxing techniques as part of a comprehensive security strategy provides a valuable layer of protection for your system. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/110-acl.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/110-acl.md index 106dbb442..cbcc4c390 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/110-acl.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/110-acl.md @@ -20,4 +20,4 @@ ACLs consist of entries that specify the permissions each user or group of users - **Reduced risk of unauthorized access:** Implementing ACLs minimizes the risk of unauthorized users accessing an organization's confidential information, as well as prevents unauthorized changes that can lead to data breaches or loss. -In summary, Access Control Lists play a vital role in maintaining an organization's cyber security posture by controlling access to resources and ensuring that only authorized users can perform specific actions on those resources. \ No newline at end of file +In summary, Access Control Lists play a vital role in maintaining an organization's cyber security posture by controlling access to resources and ensuring that only authorized users can perform specific actions on those resources. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/111-eap-vs-peap.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/111-eap-vs-peap.md index d60fe406e..a877bd63e 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/111-eap-vs-peap.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/111-eap-vs-peap.md @@ -4,11 +4,13 @@ EAP is an authentication framework that provides different authentication methods for various networks. It supports multiple authentication types, allowing organizations to choose the most suitable one to secure their network. EAP operates in the link layer of the OSI model and is commonly used in wireless networks and remote access connections. -*Pros:* +_Pros:_ + - Highly flexible, supports multiple authentication methods - Can be easily updated to use new authentication methods -*Cons:* +_Cons:_ + - Not an authentication mechanism itself, but a framework - Requires the use of an additional authentication server @@ -16,16 +18,19 @@ EAP is an authentication framework that provides different authentication method PEAP is a popular EAP method designed to provide secure communication within an organization's network. It creates a secure tunnel between the client and the authentication server using Transport Layer Security (TLS), which encapsulates other EAP methods within that tunnel. This process adds an extra layer of security by protecting the authentication process from eavesdropping or man-in-the-middle attacks. -*Pros:* +_Pros:_ + - Encrypts authentication data, preventing unauthorized access - Works alongside other EAP methods - Simplifies the deployment of client certificates -*Cons:* +_Cons:_ + - Requires the use of a Public Key Infrastructure (PKI) - May not be supported by all devices and network configurations In summary: + - EAP is a flexible authentication framework that supports various authentication methods, while PEAP is an EAP method that adds a layer of security by utilizing TLS. - EAP provides an adaptable solution for organizations looking for diverse authentication options, whereas PEAP focuses on enhancing security by encrypting the authentication process. -- Choosing between EAP and PEAP will depend on your organization's security requirements, network infrastructure, and compatibility with devices or systems. \ No newline at end of file +- Choosing between EAP and PEAP will depend on your organization's security requirements, network infrastructure, and compatibility with devices or systems. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/112-wpa-vs-wpa2-vs-wpa3-vs-wep.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/112-wpa-vs-wpa2-vs-wpa3-vs-wep.md index 5e2b869ef..9cd44ed89 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/112-wpa-vs-wpa2-vs-wpa3-vs-wep.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/112-wpa-vs-wpa2-vs-wpa3-vs-wep.md @@ -23,4 +23,4 @@ WPA3 is the latest and most secure wireless security protocol, launched in 2018. - Enhanced Open: Improved security for open Wi-Fi networks by encrypting data transmission without requiring a shared password. - Easy Connect: Streamlined configuration for IoT devices with limited or no display interface. -In summary, WPA3 addresses many of the security vulnerabilities found in WPA2 and provides a higher level of security for wireless networks. However, as it is relatively new, not all devices currently support WPA3. \ No newline at end of file +In summary, WPA3 addresses many of the security vulnerabilities found in WPA2 and provides a higher level of security for wireless networks. However, as it is relatively new, not all devices currently support WPA3. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/113-wps.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/113-wps.md index a3013c2f7..93c69fb6a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/113-wps.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/113-wps.md @@ -10,4 +10,4 @@ There are multiple methods for using WPS, some of which include: Though WPS can provide ease of use and quick connectivity, it has some security concerns. The main concern arises from the PIN method, as the 8-digit PINs are susceptible to brute force attacks. This vulnerability can allow an attacker to gain unauthorized access to a network. As a result, many cyber security experts recommend disabling WPS or using the push-button method only. -In conclusion, while WPS can make connecting devices to a wireless network more convenient, its associated security risks make it essential for users to be aware of best practices to protect their networks. \ No newline at end of file +In conclusion, while WPS can make connecting devices to a wireless network more convenient, its associated security risks make it essential for users to be aware of best practices to protect their networks. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/index.md index dd0e768d9..506d15aa8 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand-the-following-terms/index.md @@ -1 +1 @@ -# Understand the following terms \ No newline at end of file +# Understand the following terms diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/100-siem.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/100-siem.md index 0dedccba4..945ac086c 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/100-siem.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/100-siem.md @@ -17,4 +17,4 @@ Security Information and Event Management (SIEM) is a system that consolidates, - **Meet Compliance Requirements:** Many industries require organizations to meet specific security compliance standards, such as GDPR, HIPAA, or PCI DSS. SIEM allows companies to demonstrate that they're taking necessary precautions by monitoring and logging security events. - **Increase Efficiency:** SIEM systems centralize security data from numerous sources, providing a single pane of glass for accurate and actionable insight. Consequently, security teams can work more efficiently and respond faster to potential issues. -Overall, SIEM is a crucial component of an organization's cyber security strategy, helping to detect, mitigate, and prevent security breaches more effectively. Implementing SIEM solutions can ensure a more robust security posture and contribute to meeting regulatory compliance requirements. \ No newline at end of file +Overall, SIEM is a crucial component of an organization's cyber security strategy, helping to detect, mitigate, and prevent security breaches more effectively. Implementing SIEM solutions can ensure a more robust security posture and contribute to meeting regulatory compliance requirements. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/102-soar.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/102-soar.md index 427976334..69776ec8a 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/102-soar.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/102-soar.md @@ -24,4 +24,4 @@ Implementing a SOAR solution in your cybersecurity strategy offers numerous bene - Streamlined communication: A SOAR platform fosters collaboration between various teams, improving coordination and reducing response time during a security incident. - Customizable playbooks: SOAR solutions allow organizations to develop customized playbooks tailored to their specific needs and environment, enabling more effective threat mitigation. -In conclusion, understanding and implementing SOAR solutions in your organization can greatly improve your cybersecurity posture by streamlining security operations, automating tasks, and providing a structured approach to incident response. \ No newline at end of file +In conclusion, understanding and implementing SOAR solutions in your organization can greatly improve your cybersecurity posture by streamlining security operations, automating tasks, and providing a structured approach to incident response. diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/index.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/index.md index 368144ae3..e46851f83 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/index.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/understand/index.md @@ -1 +1 @@ -# Understand \ No newline at end of file +# Understand diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/100-security-concept-in-the-cloud.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/100-security-concept-in-the-cloud.md index 1793b65fd..4c7a19df0 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/100-security-concept-in-the-cloud.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/100-security-concept-in-the-cloud.md @@ -6,36 +6,36 @@ In this section, we will explore some key security concepts in the cloud to help One of the fundamental concepts to grasp when dealing with cloud security is the _Shared Responsibility Model_. This means that securing the cloud environment is a joint effort between the cloud service provider (CSP) and the customer. -* **CSP Responsibilities**: The cloud service provider is responsible for securing the underlying infrastructure that supports the cloud services, including data centers, networks, hardware, and software. -* **Customer Responsibilities**: Customers are responsible for securing their data, applications, and user access within the cloud environment. This includes data encryption, patch management, and access control. +- **CSP Responsibilities**: The cloud service provider is responsible for securing the underlying infrastructure that supports the cloud services, including data centers, networks, hardware, and software. +- **Customer Responsibilities**: Customers are responsible for securing their data, applications, and user access within the cloud environment. This includes data encryption, patch management, and access control. ## Identity and Access Management (IAM) IAM is an essential security concept in the cloud, as it helps enforce the principle of least privilege by only granting the necessary permissions to users, applications, and services. -* **User Management**: Creation and management of user accounts, roles, and groups to ensure that only authorized personnel can access and manage the cloud environment. -* **Access Control**: Implementing policies and rules to control access to cloud resources, such as virtual machines, storage accounts, and databases. +- **User Management**: Creation and management of user accounts, roles, and groups to ensure that only authorized personnel can access and manage the cloud environment. +- **Access Control**: Implementing policies and rules to control access to cloud resources, such as virtual machines, storage accounts, and databases. ## Data Protection Keeping your data secure in the cloud is crucial, and multiple methods can be employed to achieve this goal. -* **Encryption**: Encrypting data at rest (stored in the cloud) and in transit (transmitted over the internet) to protect it from unauthorized access. -* **Backup and Recovery**: Regularly creating backups of your data to ensure its availability in case of data loss or corruption, and implementing a disaster recovery plan to quickly restore lost or compromised data. +- **Encryption**: Encrypting data at rest (stored in the cloud) and in transit (transmitted over the internet) to protect it from unauthorized access. +- **Backup and Recovery**: Regularly creating backups of your data to ensure its availability in case of data loss or corruption, and implementing a disaster recovery plan to quickly restore lost or compromised data. ## Network Security Network security in the cloud encompasses various strategies aimed at protecting the integrity and availability of the network. -* **Firewalls**: Deploying firewalls to protect against unauthorized access to your cloud environment, using both standard and next-generation firewall features. -* **Intrusion Detection and Prevention Systems (IDPS)**: Implementing IDPS solutions to monitor network traffic for malicious activity and automatically block suspected threats. -* **VPC and Network Segmentation**: Creating virtual private clouds (VPCs) and segmenting networks to isolate resources, limiting the potential blast radius in case of a security incident. +- **Firewalls**: Deploying firewalls to protect against unauthorized access to your cloud environment, using both standard and next-generation firewall features. +- **Intrusion Detection and Prevention Systems (IDPS)**: Implementing IDPS solutions to monitor network traffic for malicious activity and automatically block suspected threats. +- **VPC and Network Segmentation**: Creating virtual private clouds (VPCs) and segmenting networks to isolate resources, limiting the potential blast radius in case of a security incident. ## Security Monitoring and Incident Response Continuously monitoring your cloud environment helps identify and respond to security incidents in a timely manner. -* **Security Information and Event Management (SIEM)**: Deploying SIEM solutions to collect, analyze, and correlate security events and logs in real-time, enabling the detection of suspicious activities. -* **Incident Response Plan**: Developing and maintaining a well-documented incident response plan to guide your organization through the process of identifying, containing, and remediating security incidents. +- **Security Information and Event Management (SIEM)**: Deploying SIEM solutions to collect, analyze, and correlate security events and logs in real-time, enabling the detection of suspicious activities. +- **Incident Response Plan**: Developing and maintaining a well-documented incident response plan to guide your organization through the process of identifying, containing, and remediating security incidents. -By understanding and implementing these cloud security concepts, you will be better equipped to protect your cloud environment and ensure the safety of your data and applications. \ No newline at end of file +By understanding and implementing these cloud security concepts, you will be better equipped to protect your cloud environment and ensure the safety of your data and applications. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/101-cloud-deployment-flow.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/101-cloud-deployment-flow.md index cd4ee902c..7df4518e4 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/101-cloud-deployment-flow.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/101-cloud-deployment-flow.md @@ -25,4 +25,4 @@ There are four main types of cloud deployment models, which are: - **Monitor, Manage, and Maintain**: Regularly monitor your cloud environment to check for performance issues, security risks, and other potential concerns. Perform regular maintenance tasks, such as updating software and patching security vulnerabilities, to ensure the continuous, reliable operation of your cloud deployment. -By understanding the cloud deployment flow and following the steps mentioned above, you can seamlessly deploy your applications, data, and services on the cloud infrastructure, improving the overall efficiency and performance of your organization's IT systems. \ No newline at end of file +By understanding the cloud deployment flow and following the steps mentioned above, you can seamlessly deploy your applications, data, and services on the cloud infrastructure, improving the overall efficiency and performance of your organization's IT systems. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/102-cloud-vs-onpremises.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/102-cloud-vs-onpremises.md index 2eca0b6d5..6be87e238 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/102-cloud-vs-onpremises.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/102-cloud-vs-onpremises.md @@ -32,4 +32,4 @@ However, on-premises solutions are not without their own set of challenges: ## Conclusion -In conclusion, both cloud and on-premises solutions have their own set of advantages and challenges. The choice between the two depends on factors such as cost, security, control, and performance requirements. As an organization's cyber security expert, you must thoroughly evaluate these factors to make an informed decision that best suits your organization's needs. \ No newline at end of file +In conclusion, both cloud and on-premises solutions have their own set of advantages and challenges. The choice between the two depends on factors such as cost, security, control, and performance requirements. As an organization's cyber security expert, you must thoroughly evaluate these factors to make an informed decision that best suits your organization's needs. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/103-infra-as-code.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/103-infra-as-code.md index 36f036972..5efe53133 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/103-infra-as-code.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/103-infra-as-code.md @@ -32,4 +32,4 @@ There are several popular IaC tools available today, each with their strengths a - **Validate and Test**: Use tools and practices such as unit tests and static analysis to verify the correctness and security of your infrastructure code before deploying it. -- **Continuously Monitor and Update**: Keep your IaC code up-to-date with the latest security patches and best practices, and constantly monitor the state of your infrastructure to detect and remediate potential issues. \ No newline at end of file +- **Continuously Monitor and Update**: Keep your IaC code up-to-date with the latest security patches and best practices, and constantly monitor the state of your infrastructure to detect and remediate potential issues. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/104-concept-of-serverless.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/104-concept-of-serverless.md index e0a18ba1c..d8ed421cd 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/104-concept-of-serverless.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/104-concept-of-serverless.md @@ -8,10 +8,10 @@ Serverless computing works by executing your application code in short-lived sta Some common characteristics of serverless computing include: -- *No server management:* Developers don't need to manage any servers, taking the burden of infrastructure management off their shoulders. -- *Auto-scaling:* The cloud provider automatically scales the compute resources as per the incoming requests or events. -- *Cost optimization:* Pay-as-you-go pricing model ensures that you only pay for the compute resources consumed by your application. -- *Event-driven:* Serverless applications are often designed to be triggered by events, such as API calls or data updates, ensuring efficient use of resources. +- _No server management:_ Developers don't need to manage any servers, taking the burden of infrastructure management off their shoulders. +- _Auto-scaling:_ The cloud provider automatically scales the compute resources as per the incoming requests or events. +- _Cost optimization:_ Pay-as-you-go pricing model ensures that you only pay for the compute resources consumed by your application. +- _Event-driven:_ Serverless applications are often designed to be triggered by events, such as API calls or data updates, ensuring efficient use of resources. ## Popular Serverless platforms @@ -30,4 +30,4 @@ Adopting serverless computing can benefit organizations in several ways, such as - **Scalability:** The automatic scaling provided by the serverless platform ensures high availability and performance of your application. - **Focus on business logic:** Developers can concentrate exclusively on writing application code without worrying about infrastructure management. -It's important to note that serverless computing isn't a one-size-fits-all solution. There are times when traditional server-based architectures might be more suitable, depending on the use case and requirements. However, understanding the concept of serverless computing and leveraging its benefits can go a long way in enhancing cloud skills and knowledge in the ever-evolving cyber security domain. \ No newline at end of file +It's important to note that serverless computing isn't a one-size-fits-all solution. There are times when traditional server-based architectures might be more suitable, depending on the use case and requirements. However, understanding the concept of serverless computing and leveraging its benefits can go a long way in enhancing cloud skills and knowledge in the ever-evolving cyber security domain. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/105-concept-of-cdn.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/105-concept-of-cdn.md index 780ad4c19..4bc1628c7 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/105-concept-of-cdn.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/105-concept-of-cdn.md @@ -20,4 +20,4 @@ A **Content Delivery Network (CDN)** is a distributed network of servers strateg - **Security Enhancements:** CDNs often include features such as DDoS protection, web application firewalls (WAF), and SSL/TLS certificate management, helping to improve the overall security of your online assets. -In conclusion, the concept of CDN is crucial to understanding modern cybersecurity practices as it advances the speed, reliability, and security of the content delivery process, ensuring a better user experience and minimizing the risk of cyber threats. \ No newline at end of file +In conclusion, the concept of CDN is crucial to understanding modern cybersecurity practices as it advances the speed, reliability, and security of the content delivery process, ensuring a better user experience and minimizing the risk of cyber threats. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/100-saas.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/100-saas.md index 0a63c166c..e09934f65 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/100-saas.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/100-saas.md @@ -6,28 +6,28 @@ SaaS offers various benefits and features that make it an attractive option for individuals and businesses alike. Some key features include: -* **Accessibility**: SaaS applications can be accessed from anywhere with an internet connection. -* **Lower Costs**: As a user, you only pay for what you use, reducing upfront costs such as licences and infrastructure investments. -* **Automatic Updates**: The SaaS provider is responsible for software updates, bug fixes, and patches. This means the latest version of the software is available to users without any manual intervention. -* **Scalability**: SaaS applications can easily scale to accommodate a growing user base, making it an ideal choice for businesses of all sizes. -* **Customization**: SaaS applications often come with various modules or add-ons that offer additional functionality and professional services for customization. +- **Accessibility**: SaaS applications can be accessed from anywhere with an internet connection. +- **Lower Costs**: As a user, you only pay for what you use, reducing upfront costs such as licences and infrastructure investments. +- **Automatic Updates**: The SaaS provider is responsible for software updates, bug fixes, and patches. This means the latest version of the software is available to users without any manual intervention. +- **Scalability**: SaaS applications can easily scale to accommodate a growing user base, making it an ideal choice for businesses of all sizes. +- **Customization**: SaaS applications often come with various modules or add-ons that offer additional functionality and professional services for customization. ## Security Considerations While SaaS offers numerous benefits, there are some potential concerns related to data security and privacy. Here are some key security considerations: -* **Data Storage**: In a SaaS environment, your data is stored in the cloud, which means you need to trust the provider to properly secure it. Make sure the provider complies with relevant industry standards and regulations. -* **Data Transmission**: It is crucial to verify that your data is encrypted when transmitted between your systems and the SaaS application. This can help protect your information from unauthorized access during transmission. -* **Access Control**: Establish strong access control policies and procedures to ensure that only authorized users can access sensitive data within the SaaS application. -* **Service Availability**: In case of a SaaS provider experiencing downtime or going out of business, make sure to have contingency plans in place, such as regular data backups and alternative software options. +- **Data Storage**: In a SaaS environment, your data is stored in the cloud, which means you need to trust the provider to properly secure it. Make sure the provider complies with relevant industry standards and regulations. +- **Data Transmission**: It is crucial to verify that your data is encrypted when transmitted between your systems and the SaaS application. This can help protect your information from unauthorized access during transmission. +- **Access Control**: Establish strong access control policies and procedures to ensure that only authorized users can access sensitive data within the SaaS application. +- **Service Availability**: In case of a SaaS provider experiencing downtime or going out of business, make sure to have contingency plans in place, such as regular data backups and alternative software options. ## Choosing a SaaS Provider Before committing to a SaaS provider, it is essential to undertake a thorough evaluation to ensure that it can meet your security and business requirements. Some aspects to consider include: -* **Compliance**: Check if the provider adheres to legal and regulatory requirements in your industry. -* **Service Level Agreements (SLAs)**: Review the provider's SLAs to understand their uptime guarantees, performance standards and penalties in case of SLA breaches. -* **Data Management**: Make sure the provider offers tools and features to manage your data, such as importing, exporting, and data backup/restoration capabilities. -* **Support**: Verify if the provider offers adequate support resources, like a 24/7 help desk and comprehensive documentation. +- **Compliance**: Check if the provider adheres to legal and regulatory requirements in your industry. +- **Service Level Agreements (SLAs)**: Review the provider's SLAs to understand their uptime guarantees, performance standards and penalties in case of SLA breaches. +- **Data Management**: Make sure the provider offers tools and features to manage your data, such as importing, exporting, and data backup/restoration capabilities. +- **Support**: Verify if the provider offers adequate support resources, like a 24/7 help desk and comprehensive documentation. -By keeping these aspects in mind, you can make an informed decision about whether SaaS is the right solution for your business, and select the best SaaS provider to meet your unique needs. \ No newline at end of file +By keeping these aspects in mind, you can make an informed decision about whether SaaS is the right solution for your business, and select the best SaaS provider to meet your unique needs. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/101-paas.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/101-paas.md index 039476a20..f614b6cf0 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/101-paas.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/101-paas.md @@ -16,4 +16,4 @@ Platform as a Service, or **PaaS**, is a type of cloud computing service that pr - **Data Analytics:** PaaS platforms typically offer data processing and analytics tools, making it easy for organizations to analyze and gain insights from their data. - **IoT Development:** PaaS platforms may include IoT (Internet of Things) services, simplifying the development and management of IoT applications and devices. -In conclusion, PaaS simplifies the application development and deployment process by providing a platform and its associated tools, saving developers time and resources. By leveraging PaaS, organizations can focus on their core competencies and build innovative applications without worrying about infrastructure management. \ No newline at end of file +In conclusion, PaaS simplifies the application development and deployment process by providing a platform and its associated tools, saving developers time and resources. By leveraging PaaS, organizations can focus on their core competencies and build innovative applications without worrying about infrastructure management. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/102-iaas.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/102-iaas.md index ccc74f92d..7c494b496 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/102-iaas.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/102-iaas.md @@ -6,41 +6,41 @@ Infrastructure as a Service (IaaS) is a type of cloud computing service that off IaaS provides a wide range of services and resources, including: -* **Scalable Virtual Machines**: Quickly provision and scale virtual machines based on your requirements, with various configurations for CPU cores, RAM, and storage. +- **Scalable Virtual Machines**: Quickly provision and scale virtual machines based on your requirements, with various configurations for CPU cores, RAM, and storage. -* **Managed Storage**: Access various storage options such as block storage, object storage, and file storage to suit your application and data needs. +- **Managed Storage**: Access various storage options such as block storage, object storage, and file storage to suit your application and data needs. -* **Flexible Networking**: Create virtual networks, configure subnets, manage IPs, and set up VPNs to connect your cloud environments. +- **Flexible Networking**: Create virtual networks, configure subnets, manage IPs, and set up VPNs to connect your cloud environments. -* **Security**: Implement security measures like firewalls, access control policies, and encryption to protect your infrastructure and data. +- **Security**: Implement security measures like firewalls, access control policies, and encryption to protect your infrastructure and data. -* **Automation & Integration**: Utilize APIs and other tools to automate tasks and integrate with third-party services. +- **Automation & Integration**: Utilize APIs and other tools to automate tasks and integrate with third-party services. ## Benefits Using IaaS offers several advantages, such as: -* **Cost Efficiency**: Eliminate the need to invest in and maintain physical hardware, while only paying for the resources you actually use. +- **Cost Efficiency**: Eliminate the need to invest in and maintain physical hardware, while only paying for the resources you actually use. -* **Scalability & Flexibility**: Rapidly adjust and scale your resources to meet changing demand, without the constraints of limited physical hardware capacity. +- **Scalability & Flexibility**: Rapidly adjust and scale your resources to meet changing demand, without the constraints of limited physical hardware capacity. -* **Faster Deployment**: Deploy and configure your infrastructure much faster compared to setting up traditional hardware. +- **Faster Deployment**: Deploy and configure your infrastructure much faster compared to setting up traditional hardware. -* **Reliability**: Leverage the redundancy and reliability of the cloud provider's infrastructure to ensure high availability and minimize downtime. +- **Reliability**: Leverage the redundancy and reliability of the cloud provider's infrastructure to ensure high availability and minimize downtime. -* **Focus on Core Business**: Free up time and resources that would have been spent on managing and maintaining infrastructure, allowing you to focus on your core business operations. +- **Focus on Core Business**: Free up time and resources that would have been spent on managing and maintaining infrastructure, allowing you to focus on your core business operations. ## Use Cases IaaS is a popular solution for various scenarios, including: -* **Web Apps**: Host and scale web applications, ensuring they can handle sudden traffic spikes or expanding user bases. +- **Web Apps**: Host and scale web applications, ensuring they can handle sudden traffic spikes or expanding user bases. -* **Development & Testing**: Quickly set up testing and development environments to iterate and validate new features. +- **Development & Testing**: Quickly set up testing and development environments to iterate and validate new features. -* **Data Storage & Backup**: Store large volumes of data, from business-critical databases to offsite backups. +- **Data Storage & Backup**: Store large volumes of data, from business-critical databases to offsite backups. -* **Big Data & Analytics**: Process and analyze large data sets with high-performance computing clusters, without the need to invest in specialized hardware. +- **Big Data & Analytics**: Process and analyze large data sets with high-performance computing clusters, without the need to invest in specialized hardware. ## Popular IaaS Providers @@ -50,4 +50,4 @@ There are several IaaS providers in the market, some of the most popular include - Microsoft Azure - Google Cloud Platform (GCP) -Each provider offers a range of services and tools that cater to different needs and requirements. It's essential to evaluate the features, cost structure, and support offered by each platform to make the most suitable choice for your organization. \ No newline at end of file +Each provider offers a range of services and tools that cater to different needs and requirements. It's essential to evaluate the features, cost structure, and support offered by each platform to make the most suitable choice for your organization. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/index.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/index.md index c196d3399..929f32792 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/index.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/106-cloud-services/index.md @@ -34,4 +34,4 @@ Some key areas to consider when evaluating the security of cloud services: - **Monitoring and alerts:** Continuously monitor for security incidents and set up alerts to identify potential issues. -- **Compliance:** Ensure the cloud provider meets the necessary regulatory and industry compliance standards for your organization. \ No newline at end of file +- **Compliance:** Ensure the cloud provider meets the necessary regulatory and industry compliance standards for your organization. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/100-private.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/100-private.md index f64bdb8a1..b3a979590 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/100-private.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/100-private.md @@ -20,4 +20,4 @@ A **Private Cloud** is a cloud computing model that is solely dedicated to a sin - **Responsibility for Management and Maintenance:** Unlike public clouds, where the cloud provider handles management and maintenance, the organization is responsible for these tasks in a private cloud, which can be time-consuming and resource-intensive. -In summary, a private cloud model is ideal for organizations that require a high level of security, control, and customization. It is especially suitable for organizations with strict compliance requirements or sensitive data to protect. However, this model comes with higher costs and management responsibilities, which should be considered when choosing a cloud model for your organization. \ No newline at end of file +In summary, a private cloud model is ideal for organizations that require a high level of security, control, and customization. It is especially suitable for organizations with strict compliance requirements or sensitive data to protect. However, this model comes with higher costs and management responsibilities, which should be considered when choosing a cloud model for your organization. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/101-public.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/101-public.md index 6303a9404..ce77c760e 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/101-public.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/101-public.md @@ -4,9 +4,9 @@ A **public cloud** is a cloud service that is available for use by the general p ## Key Features -* **Shared Infrastructure**: The public cloud is built on a shared infrastructure, where multiple users or organizations leverage the same hardware and resources to store their data or run their applications. -* **Scalability**: Public clouds offer greater scalability than private clouds, as they can quickly allocate additional resources to users who need them. -* **Cost-effective**: Since public clouds operate on a pay-as-you-go model, users only pay for the resources they consume, making it more cost-effective for organizations with fluctuating resource requirements. +- **Shared Infrastructure**: The public cloud is built on a shared infrastructure, where multiple users or organizations leverage the same hardware and resources to store their data or run their applications. +- **Scalability**: Public clouds offer greater scalability than private clouds, as they can quickly allocate additional resources to users who need them. +- **Cost-effective**: Since public clouds operate on a pay-as-you-go model, users only pay for the resources they consume, making it more cost-effective for organizations with fluctuating resource requirements. ## Benefits of Public Cloud @@ -17,10 +17,10 @@ A **public cloud** is a cloud service that is available for use by the general p ## Drawback and Concerns -* **Security**: Since public clouds are shared by multiple users, there is an increased risk of threats and vulnerabilities, especially if the cloud provider does not have stringent security measures in place. -* **Privacy and Compliance**: Organizations with strict data privacy and regulatory compliance requirements may find it difficult to use public cloud services, as data may be shared or stored in locations based on the provider's data center locations. -* **Control**: Users have less direct control over the management and configuration of the cloud infrastructure compared to a private cloud. +- **Security**: Since public clouds are shared by multiple users, there is an increased risk of threats and vulnerabilities, especially if the cloud provider does not have stringent security measures in place. +- **Privacy and Compliance**: Organizations with strict data privacy and regulatory compliance requirements may find it difficult to use public cloud services, as data may be shared or stored in locations based on the provider's data center locations. +- **Control**: Users have less direct control over the management and configuration of the cloud infrastructure compared to a private cloud. Despite these concerns, many businesses and organizations successfully use public clouds to host non-sensitive data or run applications that do not require stringent compliance requirements. -Examples of popular public cloud service providers include Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP). \ No newline at end of file +Examples of popular public cloud service providers include Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP). diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/102-hybrid.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/102-hybrid.md index c0398cb54..246023379 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/102-hybrid.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/102-hybrid.md @@ -24,4 +24,4 @@ The hybrid cloud model is a type of cloud computing deployment that combines the - **Security Concerns**: While hybrid clouds offer improved security compared to a purely public cloud solution, organizations must still implement proper security measures and governance policies, such as encryption and access controls, to protect sensitive data. -Overall, the hybrid cloud model is an effective solution for organizations looking to leverage the best features of both private and public cloud environments to achieve a balance between cost-efficiency, security, and flexibility. \ No newline at end of file +Overall, the hybrid cloud model is an effective solution for organizations looking to leverage the best features of both private and public cloud environments to achieve a balance between cost-efficiency, security, and flexibility. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/index.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/index.md index 45c920596..63cb5716b 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/index.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/107-cloud-models/index.md @@ -46,4 +46,4 @@ SaaS delivers fully functional applications over the internet. In this model, us Examples of SaaS providers include Salesforce, Microsoft Office 365, and Google Workspace. -By understanding the different cloud models and their characteristics, you can make informed decisions about which deployment and service models best fit your organization's specific needs, ultimately enhancing your cybersecurity posture. \ No newline at end of file +By understanding the different cloud models and their characteristics, you can make informed decisions about which deployment and service models best fit your organization's specific needs, ultimately enhancing your cybersecurity posture. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/100-aws.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/100-aws.md index 5aefca6fa..fca4f0a69 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/100-aws.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/100-aws.md @@ -54,4 +54,4 @@ There are several reasons why AWS is widely used and trusted: As a part of your cybersecurity strategy, it’s crucial to understand and securely configure your AWS environment. Secure your cloud infrastructure by adhering to AWS best practices, implementing access controls, and regularly monitoring for vulnerabilities. -For more information on securing your AWS environment, refer to the [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) and the [AWS Security Best Practices](https://d1.awsstatic.com/whitepapers/Security/AWS_Security_Best_Practices.pdf) whitepapers. \ No newline at end of file +For more information on securing your AWS environment, refer to the [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) and the [AWS Security Best Practices](https://d1.awsstatic.com/whitepapers/Security/AWS_Security_Best_Practices.pdf) whitepapers. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/101-gcp.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/101-gcp.md index b031d4aaf..eeba02890 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/101-gcp.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/101-gcp.md @@ -25,4 +25,4 @@ Google Cloud Platform (GCP) is a collection of cloud computing services offered - **Cloud Spanner**: A fully managed, globally distributed relational database service that combines strong consistency, horizontal scaling, and transaction support. - **Cloud Pub/Sub**: A messaging service that allows you to send and receive messages between independent applications. -These are just a few of the many services offered by GCP. Leveraging these services can help businesses build and deploy applications in the cloud with ease, while also ensuring that their data and applications are secure and scalable. \ No newline at end of file +These are just a few of the many services offered by GCP. Leveraging these services can help businesses build and deploy applications in the cloud with ease, while also ensuring that their data and applications are secure and scalable. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/102-azure.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/102-azure.md index d53788286..9f16a8261 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/102-azure.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/102-azure.md @@ -34,4 +34,4 @@ Microsoft Azure, often referred to simply as "Azure", is a cloud computing platf - Can be complex to navigate and manage - Potentially costly depending on usage and services -Azure is an excellent choice for those looking to leverage a vast array of cloud services, particularly if you're already invested in the Microsoft ecosystem. It's important to keep in mind, though, that the platform's complexity can lead to a steeper learning curve, and managing costs can be challenging as usage scales. \ No newline at end of file +Azure is an excellent choice for those looking to leverage a vast array of cloud services, particularly if you're already invested in the Microsoft ecosystem. It's important to keep in mind, though, that the platform's complexity can lead to a steeper learning curve, and managing costs can be challenging as usage scales. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/index.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/index.md index 2611e5e3c..f0771bbc0 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/index.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/108-common-cloud-environments/index.md @@ -7,11 +7,13 @@ In this section, we will discuss common cloud environments, along with the benef Public cloud providers offer services and resources in a shared environment that is accessible via the internet. Some well-known public cloud providers include Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure. **Benefits:** + - Cost-effective: Pay-as-you-go model, reducing upfront investments and improving resource utilization. - Scalability: Quickly add or remove resources as needed. - Flexibility: Access to a wide range of services and technologies. **Challenges:** + - Security: Shared environment may have some inherent security risks. - Compliance: Data privacy and regulatory compliance may be more difficult. - Dependency: Vendor lock-in and potential downtime reliance on a single provider. @@ -21,11 +23,13 @@ Public cloud providers offer services and resources in a shared environment that A private cloud environment is exclusively used by a single organization and is typically hosted on-premises or by a managed service provider. These environments can be customized to meet an organization's specific requirements. **Benefits:** + - Security: Greater control over the security and privacy of data and resources. - Customization: Tailoring the environment to the unique needs of the organization. - Compliance: Easier to maintain compliance with data privacy and industry regulations. **Challenges:** + - Cost: Higher initial investment and ongoing management costs. - Scalability: Limited compared to public cloud environments. - Resource management: Requires internal IT resources and expertise to manage, maintain, and update the environment. @@ -35,13 +39,15 @@ A private cloud environment is exclusively used by a single organization and is A hybrid cloud environment combines the use of both public and private cloud environments. This model allows organizations to take advantage of the benefits of both worlds while using each environment for specific workloads. **Benefits:** + - Flexibility: Use the best environment for each workload (e.g., public cloud for non-sensitive data, private cloud for sensitive data). - Scalability: Leverage public cloud resources when needed. - Cost optimization: Selectively utilize on-premises assets and minimize costs. **Challenges:** + - Complexity: Managing multiple environments and ensuring seamless integration. - Security: Ensuring proper security controls are implemented and maintained across all environments. - Compliance: Ensuring data privacy and regulatory compliance in a hybrid environment. -In conclusion, understanding the different types of cloud environments, their benefits, and challenges will help you navigate the cloud landscape more effectively. While security risks and challenges may differ depending on the environment, having a solid grasp of these concepts will better equip you to make informed decisions to protect your organization's data and assets in the cloud. \ No newline at end of file +In conclusion, understanding the different types of cloud environments, their benefits, and challenges will help you navigate the cloud landscape more effectively. While security risks and challenges may differ depending on the environment, having a solid grasp of these concepts will better equip you to make informed decisions to protect your organization's data and assets in the cloud. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/100-s3.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/100-s3.md index 00e316f6b..878cf8728 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/100-s3.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/100-s3.md @@ -1,6 +1,6 @@ # S3 -Amazon Simple Storage Service (S3) is a scalable, high-speed, low-latency object storage service designed and managed by Amazon Web Services (AWS). It offers a simple web service interface that allows developers and businesses to store and retrieve almost any amount or type of data, from anywhere on the internet. +Amazon Simple Storage Service (S3) is a scalable, high-speed, low-latency object storage service designed and managed by Amazon Web Services (AWS). It offers a simple web service interface that allows developers and businesses to store and retrieve almost any amount or type of data, from anywhere on the internet. ## Key Features @@ -14,16 +14,16 @@ Amazon Simple Storage Service (S3) is a scalable, high-speed, low-latency object - **Object Versioning**: S3 supports versioning of objects, allowing you to preserve, retrieve, and restore every version of an object in a bucket. -- **Security**: S3 provides secure access to your data by integrating with AWS Identity and Access Management (IAM) and supporting encryption in transit and at rest. +- **Security**: S3 provides secure access to your data by integrating with AWS Identity and Access Management (IAM) and supporting encryption in transit and at rest. ## Use cases -- *Backup and Archiving*: Amazon S3 is an ideal solution for backing up and archiving your critical data, ensuring it's durably stored and immediately available when needed. +- _Backup and Archiving_: Amazon S3 is an ideal solution for backing up and archiving your critical data, ensuring it's durably stored and immediately available when needed. -- *Big Data Analytics*: With its scalable and data-agnostic design, S3 can support big data applications by consistently delivering low latency and high throughput access to vast amounts of data. +- _Big Data Analytics_: With its scalable and data-agnostic design, S3 can support big data applications by consistently delivering low latency and high throughput access to vast amounts of data. -- *Content Distribution*: S3 can be easily integrated with Amazon CloudFront, a content delivery network (CDN), to distribute large files, like videos or software packages, quickly and efficiently. +- _Content Distribution_: S3 can be easily integrated with Amazon CloudFront, a content delivery network (CDN), to distribute large files, like videos or software packages, quickly and efficiently. -- *Static Website Hosting*: You can host an entire static website on Amazon S3 by simply enabling the website hosting feature on your bucket and uploading the static files. +- _Static Website Hosting_: You can host an entire static website on Amazon S3 by simply enabling the website hosting feature on your bucket and uploading the static files. -In summary, Amazon S3 is an essential component of the AWS ecosystem that offers a reliable, scalable, and secure storage solution for businesses and applications of all sizes. By leveraging its powerful features and integrations, you can implement a robust cybersecurity strategy for your cloud storage needs. \ No newline at end of file +In summary, Amazon S3 is an essential component of the AWS ecosystem that offers a reliable, scalable, and secure storage solution for businesses and applications of all sizes. By leveraging its powerful features and integrations, you can implement a robust cybersecurity strategy for your cloud storage needs. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/101-dropbox.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/101-dropbox.md index 5e8553fd2..c3c26d20c 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/101-dropbox.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/101-dropbox.md @@ -37,4 +37,4 @@ There are a few downsides to using Dropbox as your cloud storage solution: ## Conclusion -Dropbox is a simple and user-friendly cloud storage service that offers seamless integration with various platforms and efficient file sharing options. While its free plan may be limited compared to other alternatives, the ease of use and robust feature set make it a popular choice for both personal and professional use. \ No newline at end of file +Dropbox is a simple and user-friendly cloud storage service that offers seamless integration with various platforms and efficient file sharing options. While its free plan may be limited compared to other alternatives, the ease of use and robust feature set make it a popular choice for both personal and professional use. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/102-box.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/102-box.md index ae34dfab8..edf8f6851 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/102-box.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/102-box.md @@ -3,6 +3,7 @@ [Box](https://www.box.com/) is a popular cloud storage service that provides individuals and businesses with a platform to securely store, share, and access files and documents from any device. Box is known for its emphasis on security and collaboration features, making it an ideal choice for businesses who want a secure way to share and collaborate on files with their teams. ## Features + - **Security:** Box ensures the data stored within their platform is secure by implementing various security measures, such as encryption (in-transit and at-rest), multi-factor authentication, and granular access controls. - **Collaboration:** Users can easily invite collaborators, assign permissions, and share files via secure links within Box. It also features real-time document editing and file version history. - **Integrations:** Box integrates with several other applications and services, such as Microsoft Office 365, Google Workspace, Salesforce, Slack, and more. @@ -11,6 +12,7 @@ ## Pricing Box offers a [variety of pricing plans](https://www.box.com/pricing), catering to different user requirements. These include: + - **Individual Plan:** Free, with limited storage and features. - **Personal Pro Plan:** $10/month, includes 100GB storage, larger file size support, and additional features. - **Business Plans:** Starting at $5/user/month, tailored to meet the needs of small to enterprise-level businesses, with increased storage, advanced security, and much more. @@ -19,4 +21,4 @@ Box offers a [variety of pricing plans](https://www.box.com/pricing), catering t Box is compliant with various international privacy laws and regulations, such as GDPR, HIPAA, and FedRAMP. It also undergoes third-party audits and assessments to verify the efficacy of their security measures. -In conclusion, Box is a highly secure and feature-rich cloud storage service that is specifically designed for businesses and individuals who require advanced security and collaboration functionality. \ No newline at end of file +In conclusion, Box is a highly secure and feature-rich cloud storage service that is specifically designed for businesses and individuals who require advanced security and collaboration functionality. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/103-one-drive.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/103-one-drive.md index 9ede8c2be..5b06db5cc 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/103-one-drive.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/103-one-drive.md @@ -20,4 +20,4 @@ OneDrive is a popular cloud storage service provided by Microsoft. Part of the M ## Importance -OneDrive is an excellent cloud storage solution, fitting the needs of individuals and businesses alike. It offers various features, such as syncing across devices, real-time collaboration, and robust security measures. Whether you need a personal or professional cloud storage solution, OneDrive is worth considering for its versatility and integration with Microsoft's suite of productivity tools. \ No newline at end of file +OneDrive is an excellent cloud storage solution, fitting the needs of individuals and businesses alike. It offers various features, such as syncing across devices, real-time collaboration, and robust security measures. Whether you need a personal or professional cloud storage solution, OneDrive is worth considering for its versatility and integration with Microsoft's suite of productivity tools. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/104-google-drive.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/104-google-drive.md index a36f3cf7e..47d6a6800 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/104-google-drive.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/104-google-drive.md @@ -4,12 +4,12 @@ Google Drive is a cloud-based storage solution provided by Google, which offers ## Key Features -* **Storage Capacity:** Google Drive offers 15 GB of free storage for individual users, with the option to upgrade to additional storage plans with a subscription. -* **File Sharing and Collaboration:** You can share files, folders, or your entire drive with others, allowing them to view, edit, or comment on your documents. Collaboration features include real-time editing and support for multiple users. -* **Data Security:** Google Drive encrypts data in transit and at rest, ensuring that your files are protected from unauthorized access. Additionally, you can manage user permissions and expiration dates for shared files. -* **Version History:** Drive keeps track of changes made to your documents, allowing you to view or revert to previous versions any time. -* **Multi-platform Support:** Drive can be accessed through the web, as well as through desktop and mobile apps for Windows, macOS, Android, and iOS devices. -* **Integration with Google Workspace:** Google Drive is seamlessly integrated with other Google Workspace applications like Google Docs, Sheets, Slides, and Forms for a fully integrated, cloud-based productivity suite. +- **Storage Capacity:** Google Drive offers 15 GB of free storage for individual users, with the option to upgrade to additional storage plans with a subscription. +- **File Sharing and Collaboration:** You can share files, folders, or your entire drive with others, allowing them to view, edit, or comment on your documents. Collaboration features include real-time editing and support for multiple users. +- **Data Security:** Google Drive encrypts data in transit and at rest, ensuring that your files are protected from unauthorized access. Additionally, you can manage user permissions and expiration dates for shared files. +- **Version History:** Drive keeps track of changes made to your documents, allowing you to view or revert to previous versions any time. +- **Multi-platform Support:** Drive can be accessed through the web, as well as through desktop and mobile apps for Windows, macOS, Android, and iOS devices. +- **Integration with Google Workspace:** Google Drive is seamlessly integrated with other Google Workspace applications like Google Docs, Sheets, Slides, and Forms for a fully integrated, cloud-based productivity suite. ## Tips for Using Google Drive Securely @@ -17,4 +17,4 @@ Google Drive is a cloud-based storage solution provided by Google, which offers - **Regularly Review Permissions:** Periodically review file and folder sharing permissions to ensure that access is granted only to necessary parties. - **Be Cautious with External Sharing:** Avoid sharing sensitive information with external users, and consider using expiring links or password protection for sensitive files. - **Employ Strong Passwords:** Utilize unique and complex passwords for your Google account to mitigate the risk of unauthorized access. -- **Monitor Activity:** Leverage built-in Google Drive tools to audit user activity and identify potential security threats. \ No newline at end of file +- **Monitor Activity:** Leverage built-in Google Drive tools to audit user activity and identify potential security threats. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/105-icloud.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/105-icloud.md index 68012ebb7..28a8631e2 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/105-icloud.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/105-icloud.md @@ -4,23 +4,23 @@ ## Key Features -* **iCloud Drive**: A secure space in the cloud where you can store your files and access them from any compatible device. You can also share files or entire folders with others. -* **Photos**: Automatically stores and organizes all your photos and videos in iCloud. You can access them from any of your devices and even create shared photo albums for specific moments or events. -* **Backup**: iCloud automatically backs up your iOS and iPadOS devices daily, ensuring that your data is safe and up-to-date. If you ever need to restore a device, iCloud Backup can help you get your data back quickly and easily. -* **Find My**: This feature helps you locate your lost or stolen Apple devices by displaying their location on a map. Additionally, it allows you to remotely lock, erase, or play a sound on your lost device to protect your data. -* **iCloud Keychain**: Securely stores and syncs your passwords and credit card information across all your Apple devices. It helps you generate strong passwords and autofill them when needed, making your online experience simple and more secure. -* **Family Sharing**: Allows you to share various Apple services, like iCloud storage, Apple Music, and App Store purchases, with up to five family members. It also includes a shared family calendar and photo album. +- **iCloud Drive**: A secure space in the cloud where you can store your files and access them from any compatible device. You can also share files or entire folders with others. +- **Photos**: Automatically stores and organizes all your photos and videos in iCloud. You can access them from any of your devices and even create shared photo albums for specific moments or events. +- **Backup**: iCloud automatically backs up your iOS and iPadOS devices daily, ensuring that your data is safe and up-to-date. If you ever need to restore a device, iCloud Backup can help you get your data back quickly and easily. +- **Find My**: This feature helps you locate your lost or stolen Apple devices by displaying their location on a map. Additionally, it allows you to remotely lock, erase, or play a sound on your lost device to protect your data. +- **iCloud Keychain**: Securely stores and syncs your passwords and credit card information across all your Apple devices. It helps you generate strong passwords and autofill them when needed, making your online experience simple and more secure. +- **Family Sharing**: Allows you to share various Apple services, like iCloud storage, Apple Music, and App Store purchases, with up to five family members. It also includes a shared family calendar and photo album. ## Pricing and Storage Plans iCloud offers 5 GB of free storage. However, if you need more space, you can choose from the following paid storage plans: -* 50 GB for $0.99 per month -* 200 GB for $2.99 per month -* 2 TB for $9.99 per month +- 50 GB for $0.99 per month +- 200 GB for $2.99 per month +- 2 TB for $9.99 per month Pricing may vary based on your location. To manage and upgrade your storage plan, go to the Settings app on your iOS or iPadOS device, then tap on your name, and then select iCloud. On a Mac, open System Preferences, click on Apple ID, and then select iCloud. -In summary, iCloud is a convenient and secure cloud storage solution that allows you to effortlessly store and access your data across all of your Apple devices. With its wide range of features, like iCloud Drive, Photos, Backup, and Find My, iCloud helps you stay connected and protect your valuable information. \ No newline at end of file +In summary, iCloud is a convenient and secure cloud storage solution that allows you to effortlessly store and access your data across all of your Apple devices. With its wide range of features, like iCloud Drive, Photos, Backup, and Find My, iCloud helps you stay connected and protect your valuable information. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/index.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/index.md index 45bbd42a0..151acacc0 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/index.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/109-common-cloud-storage/index.md @@ -38,4 +38,4 @@ Apart from enterprise-level offerings, cloud storage services are available for - **Microsoft OneDrive**: OneDrive offers a simple and secure way to store, access, and share files, along with seamless integration into Microsoft Office applications. -Understanding and choosing the right cloud storage solution can significantly impact the security, availability, and accessibility of your data in the cloud. To ensure a robust and reliable cybersecurity strategy, it's vital to familiarize yourself with common cloud storage options and identify the best fit for your needs. \ No newline at end of file +Understanding and choosing the right cloud storage solution can significantly impact the security, availability, and accessibility of your data in the cloud. To ensure a robust and reliable cybersecurity strategy, it's vital to familiarize yourself with common cloud storage options and identify the best fit for your needs. diff --git a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/index.md b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/index.md index de8916918..f050ea317 100644 --- a/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/index.md +++ b/src/data/roadmaps/cyber-security/content/104-cloud-skills-and-knowledge/index.md @@ -45,4 +45,4 @@ Professionals should know the fundamentals of securing cloud networks, including - Implementing network security features such as firewalls, virtual private networks (VPNs), and intrusion detection systems - Segmenting cloud networks for better security -Overall, possessing cloud skills and knowledge prepares cyber security professionals to effectively protect and manage cloud infrastructure and applications in today's fast-paced digital landscape. \ No newline at end of file +Overall, possessing cloud skills and knowledge prepares cyber security professionals to effectively protect and manage cloud infrastructure and applications in today's fast-paced digital landscape. diff --git a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/100-python.md b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/100-python.md index 46b713a26..4eb4a3724 100644 --- a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/100-python.md +++ b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/100-python.md @@ -4,18 +4,18 @@ Python is a versatile, high-level programming language that is widely used in va ## Key Features: -* **Easy to learn and read**: Python features a clean and simple syntax, which makes it easy for beginners to start coding quickly and minimizes the chance of errors. -* **Platform independent**: Python can run on any platform, including Windows, Linux, and macOS, making it suitable for cross-platform development. -* **Large ecosystem**: Python has a vast ecosystem of libraries and frameworks, including popular ones like Django, Flask, and Scikit-learn, which can help speed up the development process. -* **Strong community support**: Python has a large and active community, which provides a wealth of resources, such as tutorials, sample code, and expert assistance when needed. +- **Easy to learn and read**: Python features a clean and simple syntax, which makes it easy for beginners to start coding quickly and minimizes the chance of errors. +- **Platform independent**: Python can run on any platform, including Windows, Linux, and macOS, making it suitable for cross-platform development. +- **Large ecosystem**: Python has a vast ecosystem of libraries and frameworks, including popular ones like Django, Flask, and Scikit-learn, which can help speed up the development process. +- **Strong community support**: Python has a large and active community, which provides a wealth of resources, such as tutorials, sample code, and expert assistance when needed. ## Python in Cyber Security: Python is particularly valuable in the field of cyber security for several reasons: -* **Scripting and Automation**: Python is excellent for creating scripts and automating tasks, which is useful for managing security tasks such as log analysis, scanning networks, and penetration testing. -* **Exploit Development**: Python's readability and simplicity make it suitable for developing exploits and writing proof-of-concept code, essential tasks in cyber security. -* **Analysis and Visualization**: With powerful libraries like Pandas, NumPy, and Matplotlib, Python can help security analysts process, analyze, and visualize large data sets, making it easier to identify patterns and detect security threats. +- **Scripting and Automation**: Python is excellent for creating scripts and automating tasks, which is useful for managing security tasks such as log analysis, scanning networks, and penetration testing. +- **Exploit Development**: Python's readability and simplicity make it suitable for developing exploits and writing proof-of-concept code, essential tasks in cyber security. +- **Analysis and Visualization**: With powerful libraries like Pandas, NumPy, and Matplotlib, Python can help security analysts process, analyze, and visualize large data sets, making it easier to identify patterns and detect security threats. ## Learning Python: @@ -26,4 +26,4 @@ To start learning Python, here are some useful resources: - [Real Python](https://realpython.com/) - Offers a variety of Python tutorials, articles, and courses that cater to different experience levels. - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) - A beginner-friendly book that teaches Python by guiding you through practical tasks and automation examples. -Remember, practice is key, and the more you work with Python, the more you'll appreciate its utility in the world of cyber security. \ No newline at end of file +Remember, practice is key, and the more you work with Python, the more you'll appreciate its utility in the world of cyber security. diff --git a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/101-go.md b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/101-go.md index 5c5be6c3b..508d5aaaa 100644 --- a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/101-go.md +++ b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/101-go.md @@ -30,4 +30,4 @@ To get started with Go, consider leveraging the following resources: - [The Go Programming Language book](http://www.gopl.io/) - [Golang Courses on Udemy, Coursera, and Pluralsight](https://www.udemy.com/topic/go/) -As you learn and incorporate Go into your cyber security toolkit, you will find it to be a versatile and valuable language in building secure, efficient, and reliable tools and applications. \ No newline at end of file +As you learn and incorporate Go into your cyber security toolkit, you will find it to be a versatile and valuable language in building secure, efficient, and reliable tools and applications. diff --git a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/102-javascript.md b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/102-javascript.md index 58234c901..57fb6b010 100644 --- a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/102-javascript.md +++ b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/102-javascript.md @@ -4,10 +4,10 @@ JavaScript (often abbreviated as JS) is a widely-used, high-level programming la ## Features of JavaScript: -* **Interpreted Language:** JavaScript does not need to be compiled before it is run which makes it easier to find errors in the code. -* **Object-Oriented Programming:** JavaScript supports object-oriented programming (OOP) concepts, making it easier for developers to work with complex data structures and code. -* **Event-driven:** JavaScript supports event-driven programming, allowing developers to create interactive elements and respond to user actions like clicks and keypress events on the web page. -* **Cross-platform Compatibility:** JavaScript can be run on any browser, platform, or operating system, making it a highly versatile language. +- **Interpreted Language:** JavaScript does not need to be compiled before it is run which makes it easier to find errors in the code. +- **Object-Oriented Programming:** JavaScript supports object-oriented programming (OOP) concepts, making it easier for developers to work with complex data structures and code. +- **Event-driven:** JavaScript supports event-driven programming, allowing developers to create interactive elements and respond to user actions like clicks and keypress events on the web page. +- **Cross-platform Compatibility:** JavaScript can be run on any browser, platform, or operating system, making it a highly versatile language. ## JavaScript in Web Development @@ -15,32 +15,32 @@ JavaScript is an essential part of web development primarily due to its ability Some common uses for JavaScript in web development: -* **Form Validation:** Validating user inputs in contact forms, registrations forms, and other user input scenarios. -* **Image Sliders and Galleries:** Creating dynamic image sliders and galleries on websites to enhance user experience. -* **Interactive Maps:** Integrating interactive maps into websites for display or directions. -* **Animation:** Adding animations to elements on a webpage for a more engaging experience. +- **Form Validation:** Validating user inputs in contact forms, registrations forms, and other user input scenarios. +- **Image Sliders and Galleries:** Creating dynamic image sliders and galleries on websites to enhance user experience. +- **Interactive Maps:** Integrating interactive maps into websites for display or directions. +- **Animation:** Adding animations to elements on a webpage for a more engaging experience. ## JavaScript Libraries and Frameworks JavaScript has many libraries and frameworks to help developers work more efficiently and to attain better results. Some popular libraries and frameworks include: -*jQuery:* A highly popular JavaScript library that simplifies DOM manipulation, event handling, and animations. +_jQuery:_ A highly popular JavaScript library that simplifies DOM manipulation, event handling, and animations. -*React:* Developed by Facebook, it is a JavaScript library for building interactive user interfaces (UI). +_React:_ Developed by Facebook, it is a JavaScript library for building interactive user interfaces (UI). -*Angular:* A powerful, Google-developed JavaScript framework used for developing dynamic web applications. +_Angular:_ A powerful, Google-developed JavaScript framework used for developing dynamic web applications. -*Vue.js:* A lightweight, easy-to-learn JavaScript framework for building interactive user interfaces. +_Vue.js:_ A lightweight, easy-to-learn JavaScript framework for building interactive user interfaces. -*Node.js:* A JavaScript runtime environment built on Chrome's V8 JavaScript engine, allowing developers to run JavaScript on the server-side. +_Node.js:_ A JavaScript runtime environment built on Chrome's V8 JavaScript engine, allowing developers to run JavaScript on the server-side. ## Learning JavaScript Here are some resources to sharpen your JavaScript programming skills: -* [Mozilla Developer Network (MDN) JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) -* [W3Schools JavaScript Tutorial](https://www.w3schools.com/js/) -* [freeCodeCamp's JavaScript Curriculum](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/) -* [Eloquent JavaScript: A Modern Introduction to Programming](https://eloquentjavascript.net/) (book) +- [Mozilla Developer Network (MDN) JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) +- [W3Schools JavaScript Tutorial](https://www.w3schools.com/js/) +- [freeCodeCamp's JavaScript Curriculum](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/) +- [Eloquent JavaScript: A Modern Introduction to Programming](https://eloquentjavascript.net/) (book) -By mastering JavaScript, you'll be better equipped to build more interactive and dynamic web applications, thus enhancing your overall cyber security skills. \ No newline at end of file +By mastering JavaScript, you'll be better equipped to build more interactive and dynamic web applications, thus enhancing your overall cyber security skills. diff --git a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/103-cpp.md b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/103-cpp.md index 98bcf5818..6b5589f0b 100644 --- a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/103-cpp.md +++ b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/103-cpp.md @@ -41,4 +41,4 @@ To advance your programming skills in C++ and leverage its power for cybersecuri - [Coursera: C++ For C Programmers](https://www.coursera.org/specializations/c-plus-plus-programming) - [A Tour of C++](https://www.amazon.com/Tour-C-Depth/dp/0134997832) (book) by Bjarne Stroustrup. -By mastering C++, you'll be well-equipped to develop and secure applications, analyze cybersecurity threats, and effectively contribute to the broader cybersecurity community. \ No newline at end of file +By mastering C++, you'll be well-equipped to develop and secure applications, analyze cybersecurity threats, and effectively contribute to the broader cybersecurity community. diff --git a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/104-bash.md b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/104-bash.md index 13be81701..a5c420e09 100644 --- a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/104-bash.md +++ b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/104-bash.md @@ -37,4 +37,4 @@ Some resources to begin your journey with Bash are: - [Bash Academy](https://www.bash.academy/): An interactive platform to start learning Bash from scratch. - [Learn Shell](https://www.learnshell.org/): An online resource with tutorials and exercises to help you practice your Bash skills. -Bash scripting is a versatile tool in the cybersecurity toolkit, and mastering it will provide you with greater control over the systems you protect. \ No newline at end of file +Bash scripting is a versatile tool in the cybersecurity toolkit, and mastering it will provide you with greater control over the systems you protect. diff --git a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/105-power-shell.md b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/105-power-shell.md index cd640c4d7..a1238425a 100644 --- a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/105-power-shell.md +++ b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/105-power-shell.md @@ -37,4 +37,4 @@ To get started with PowerShell, begin by learning about the available cmdlets, s - [PowerShell.org](https://powershell.org/) - Online forums and communities such as [Stack Overflow](https://stackoverflow.com/questions/tagged/powershell) and [Reddit's r/PowerShell](https://www.reddit.com/r/PowerShell/) -In conclusion, PowerShell is an essential tool for anyone working with Windows systems and can greatly benefit those in the cybersecurity field. The ability to automate tasks and manage configurations using PowerShell will provide a significant advantage, allowing for more efficient and accurate work. \ No newline at end of file +In conclusion, PowerShell is an essential tool for anyone working with Windows systems and can greatly benefit those in the cybersecurity field. The ability to automate tasks and manage configurations using PowerShell will provide a significant advantage, allowing for more efficient and accurate work. diff --git a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/index.md b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/index.md index da7103a5c..8d35b7b2a 100644 --- a/src/data/roadmaps/cyber-security/content/105-programming-knowledge/index.md +++ b/src/data/roadmaps/cyber-security/content/105-programming-knowledge/index.md @@ -22,4 +22,4 @@ To apply programming knowledge effectively in cybersecurity, you should ground y - **Scripting and automation**: Develop skills in writing scripts and automating tasks, as it can save time and enhance efficiency in cybersecurity workflows. - **Data analysis**: Learn to analyze and visualize data relevant to cybersecurity, such as network traffic logs, patterns, and trends, to make informed decisions and implement appropriate defense strategies. -Acquiring programming knowledge in cybersecurity can help you stay on top of the latest threats, develop secure software, and implement effective countermeasures. As you progress in your cybersecurity career, you'll find that your programming skills will continually evolve and your understanding of various languages, concepts, and techniques will expand. \ No newline at end of file +Acquiring programming knowledge in cybersecurity can help you stay on top of the latest threats, develop secure software, and implement effective countermeasures. As you progress in your cybersecurity career, you'll find that your programming skills will continually evolve and your understanding of various languages, concepts, and techniques will expand. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/200-cissp.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/200-cissp.md index b7919d04e..6a6dbb59d 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/200-cissp.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/200-cissp.md @@ -1,19 +1,19 @@ # CISSP -The Certified Information Systems Security Professional (CISSP) is a globally recognized certification offered by the International Information System Security Certification Consortium (ISC)². It is designed for experienced security professionals to validate their knowledge and expertise in the field of information security. +The Certified Information Systems Security Professional (CISSP) is a globally recognized certification offered by the International Information System Security Certification Consortium (ISC)². It is designed for experienced security professionals to validate their knowledge and expertise in the field of information security. ## Who Should Obtain the CISSP Certification? The CISSP certification is ideal for security consultants, managers, IT directors, security auditors, security analysts, and other professionals who are responsible for designing, implementing, and managing security for their organization. This certification is aimed at professionals with at least five years of full-time experience in two or more of the eight CISSP domains: -* Security and Risk Management -* Asset Security -* Security Architecture and Engineering -* Communication and Network Security -* Identity and Access Management (IAM) -* Security Assessment and Testing -* Security Operations -* Software Development Security +- Security and Risk Management +- Asset Security +- Security Architecture and Engineering +- Communication and Network Security +- Identity and Access Management (IAM) +- Security Assessment and Testing +- Security Operations +- Software Development Security ## Certification Process @@ -31,8 +31,8 @@ To obtain the CISSP certification, candidates must meet the following requiremen Obtaining the CISSP certification comes with numerous benefits, such as: -* Enhanced credibility, as the CISSP is often considered the gold standard in information security certifications. -* Increased job opportunities, as many organizations and government agencies require or prefer CISSP-certified professionals. -* Improved knowledge and skills, as the certification covers a broad range of security topics and best practices. -* Higher salary potential, as CISSP-certified professionals often command higher salaries compared to their non-certified counterparts. -* Access to a network of other CISSP-certified professionals and resources, enabling continuous learning and professional development. \ No newline at end of file +- Enhanced credibility, as the CISSP is often considered the gold standard in information security certifications. +- Increased job opportunities, as many organizations and government agencies require or prefer CISSP-certified professionals. +- Improved knowledge and skills, as the certification covers a broad range of security topics and best practices. +- Higher salary potential, as CISSP-certified professionals often command higher salaries compared to their non-certified counterparts. +- Access to a network of other CISSP-certified professionals and resources, enabling continuous learning and professional development. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/201-cisa.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/201-cisa.md index 7714cacf2..ceebf2844 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/201-cisa.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/201-cisa.md @@ -42,4 +42,4 @@ Upon obtaining the CISA certification, some of the benefits include: - The potential for salary increase and promotions - Access to a global community of certified professionals and resources -Overall, the CISA certification can be a valuable asset for those looking to advance their careers in cybersecurity, particularly in the area of auditing and controlling information systems. \ No newline at end of file +Overall, the CISA certification can be a valuable asset for those looking to advance their careers in cybersecurity, particularly in the area of auditing and controlling information systems. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/202-cism.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/202-cism.md index 2f71f1ea4..24f41a609 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/202-cism.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/202-cism.md @@ -21,11 +21,11 @@ To obtain the CISM certification, candidates must: - **Study for the Exam**: Thorough exam preparation is essential for success. ISACA provides a range of study materials, including the [CISM Review Manual](https://www.isaca.org/bookstore), online question banks, and instructor-led courses. - **Take the Exam**: The CISM exam consists of 150 multiple-choice questions, and you have four hours to complete it. It covers four main domains: - - Information Security Governance - - Information Risk Management - - Information Security Program Development and Management - - Information Security Incident Management + - Information Security Governance + - Information Risk Management + - Information Security Program Development and Management + - Information Security Incident Management - **Maintain Your Certification**: Once you pass the exam and meet the experience requirements, you need to [apply for certification](https://www.isaca.org/credentialing/certified-information-security-manager/get-cism-certified). To maintain your CISM credential, you must earn Continuing Professional Education (CPE) hours and renew your certification every three years. -The CISM certification is globally recognized for its emphasis on the strategic and managerial aspects of information security. Professionals with this certification are in high demand, as they possess the knowledge and skills to develop and manage comprehensive information security programs in various organizations. \ No newline at end of file +The CISM certification is globally recognized for its emphasis on the strategic and managerial aspects of information security. Professionals with this certification are in high demand, as they possess the knowledge and skills to develop and manage comprehensive information security programs in various organizations. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/203-gsec.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/203-gsec.md index 4f293192a..262a21413 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/203-gsec.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/203-gsec.md @@ -29,4 +29,4 @@ To prepare for the GSEC exam, you can use the following resources: - **Online forums and study groups**: Participate in online forums and study groups related to GSEC and cybersecurity in general. These platforms can provide valuable insights, tips, and experiences from other security professionals and candidates preparing for the exam. - **GSEC Practice Exams**: GIAC offers two practice exams for the GSEC certification, which are an excellent way to assess your knowledge and identify areas that may require further attention. -By obtaining the GSEC certification, you will demonstrate your advanced knowledge and skills in cybersecurity, showcasing your ability to protect information systems and networks effectively. This certification can be a significant asset to your career and help you stand out in the competitive cybersecurity job market. \ No newline at end of file +By obtaining the GSEC certification, you will demonstrate your advanced knowledge and skills in cybersecurity, showcasing your ability to protect information systems and networks effectively. This certification can be a significant asset to your career and help you stand out in the competitive cybersecurity job market. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/204-gpen.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/204-gpen.md index 38d01af9e..5fd468fee 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/204-gpen.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/204-gpen.md @@ -4,13 +4,13 @@ The **GIAC Penetration Tester (GPEN)** certification is an advanced-level creden ## Key Topics -* **Reconnaissance:** Utilize various methods to gather information on a target's infrastructure, services, and vulnerabilities. -* **Scanning:** Employ tools and techniques to actively probe and evaluate target systems, including Nmap, Nessus, and Metasploit. -* **Exploitation:** Understand how to exploit vulnerabilities effectively, including buffer overflow attacks, SQL injection, and browser-based attacks. -* **Password Attacks:** Employ password cracking tools and techniques to bypass authentication mechanisms. -* **Wireless and Monitoring**: Identify and exploit wireless networks, as well as monitor network traffic to uncover useful information. -* **Post Exploitation**: Perform post-exploitation activities like privilege escalation, lateral movement, and data exfiltration. -* **Legal and Compliance**: Understand the legal considerations involved in penetration testing, and follow industry best practices and standards. +- **Reconnaissance:** Utilize various methods to gather information on a target's infrastructure, services, and vulnerabilities. +- **Scanning:** Employ tools and techniques to actively probe and evaluate target systems, including Nmap, Nessus, and Metasploit. +- **Exploitation:** Understand how to exploit vulnerabilities effectively, including buffer overflow attacks, SQL injection, and browser-based attacks. +- **Password Attacks:** Employ password cracking tools and techniques to bypass authentication mechanisms. +- **Wireless and Monitoring**: Identify and exploit wireless networks, as well as monitor network traffic to uncover useful information. +- **Post Exploitation**: Perform post-exploitation activities like privilege escalation, lateral movement, and data exfiltration. +- **Legal and Compliance**: Understand the legal considerations involved in penetration testing, and follow industry best practices and standards. ## Target Audience @@ -22,11 +22,11 @@ To prepare for the GPEN exam, candidates are recommended to have a strong founda ## Exam Details -* **Number of Questions:** 115 -* **Type of Questions:** Multiple-choice -* **Duration:** 3 hours -* **Passing Score:** 74% -* **Exam Delivery:** Proctored, Online or at a testing center -* **Cost:** $1,999 USD (Includes one retake) +- **Number of Questions:** 115 +- **Type of Questions:** Multiple-choice +- **Duration:** 3 hours +- **Passing Score:** 74% +- **Exam Delivery:** Proctored, Online or at a testing center +- **Cost:** $1,999 USD (Includes one retake) -Upon successfully passing the exam, candidates will receive the GIAC Penetration Tester certification, which is valid for four years. To maintain the certification, professionals must earn plus 36 Continuing Professional Education (CPE) credits every two years and pay a maintenance fee to keep their credentials active. \ No newline at end of file +Upon successfully passing the exam, candidates will receive the GIAC Penetration Tester certification, which is valid for four years. To maintain the certification, professionals must earn plus 36 Continuing Professional Education (CPE) credits every two years and pay a maintenance fee to keep their credentials active. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/205-gwapt.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/205-gwapt.md index 2cdbe6065..b07abd2f4 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/205-gwapt.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/205-gwapt.md @@ -31,4 +31,4 @@ The GWAPT certification is aimed at professionals who are involved in web applic - Enhances your professional credibility and marketability in the cybersecurity industry. - Provides a competitive edge over non-certified individuals. - Demonstrates a commitment to staying current with industry advancements and best practices. -- Assists in advancing your career by meeting employer or client requirements for certified professionals. \ No newline at end of file +- Assists in advancing your career by meeting employer or client requirements for certified professionals. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/206-giac.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/206-giac.md index 7792bbc48..b319735b3 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/206-giac.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/206-giac.md @@ -1,6 +1,6 @@ # GIAC -GIAC is a globally recognized organization that provides certifications for information security professionals. Established in 1999, its primary aim is to validate the knowledge and skills of professionals in various cybersecurity domains. GIAC certifications focus on practical and hands-on abilities to ensure that certified individuals possess the necessary expertise to tackle real-world cybersecurity challenges. +GIAC is a globally recognized organization that provides certifications for information security professionals. Established in 1999, its primary aim is to validate the knowledge and skills of professionals in various cybersecurity domains. GIAC certifications focus on practical and hands-on abilities to ensure that certified individuals possess the necessary expertise to tackle real-world cybersecurity challenges. ## GIAC Certification Categories @@ -28,4 +28,4 @@ GIAC-certified professionals are highly sought after due to the rigorous assessm - Peer recognition - Demonstrated commitment to professional development -In summary, GIAC certifications are valuable and respected credentials that pave the way for a successful cybersecurity career. By completing a GIAC certification, you validate your expertise and increase your employability in the competitive field of cybersecurity. \ No newline at end of file +In summary, GIAC certifications are valuable and respected credentials that pave the way for a successful cybersecurity career. By completing a GIAC certification, you validate your expertise and increase your employability in the competitive field of cybersecurity. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/207-oscp.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/207-oscp.md index 125b3360b..f835b4864 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/207-oscp.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/207-oscp.md @@ -5,6 +5,7 @@ The **Offensive Security Certified Professional (OSCP)** is a highly respected and sought-after certification in the field of cybersecurity. This certification is designed to test your practical knowledge and skills in the identification and exploitation of vulnerabilities in a target environment, as well as your ability to effectively implement offensive security techniques to assess the security posture of networks and systems. ## Key Topics Covered: + - Penetration testing methodologies - Advanced information gathering techniques - Buffer overflow attacks @@ -26,9 +27,10 @@ To obtain the OSCP certification, you must successfully complete the 24-hour han Before attempting the exam, candidates must complete the accompanying training course, **Penetration Testing with Kali Linux (PWK)**, which provides the necessary knowledge and practical experience required for the OSCP exam. ## Why Pursue the OSCP Certification? + - **Hands-on Approach:** OSCP emphasizes a practical, hands-on approach, ensuring that certified professionals possess both the theoretical knowledge and practical skills required to succeed in the cybersecurity field. - **Industry Recognition:** OSCP is widely recognized and respected within the cybersecurity community as a rigorous and demanding certification that validates a candidate's ability to perform under pressure. - **Career Advancement:** With the OSCP certification, you can demonstrate your advanced skills in offensive security techniques, making you a valuable asset to any security team and potentially opening up opportunities for career growth, higher salaries, and challenging roles in the industry. - **Continuous Learning:** Pursuing the OSCP certification will help you develop a deeper understanding of underlying vulnerabilities and attack vectors. This knowledge, combined with constantly evolving offensive security techniques, ensures that you stay ahead in the ever-changing cybersecurity landscape. -Obtaining the OSCP certification can be a challenging and rewarding journey that provides you with practical skills and industry recognition, enabling you to stand out as a cybersecurity professional and advance your career in the field. \ No newline at end of file +Obtaining the OSCP certification can be a challenging and rewarding journey that provides you with practical skills and industry recognition, enabling you to stand out as a cybersecurity professional and advance your career in the field. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/208-crest.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/208-crest.md index ec6aa44a0..e7320dca5 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/208-crest.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/208-crest.md @@ -23,4 +23,4 @@ Obtaining CREST certifications provides several benefits, such as: - Access to resources and support through the CREST community - Assurance for employers and clients that you're skilled and trustworthy -In the rapidly evolving field of cyber security, CREST certifications demonstrate a commitment to continuous learning, growth, and professionalism. \ No newline at end of file +In the rapidly evolving field of cyber security, CREST certifications demonstrate a commitment to continuous learning, growth, and professionalism. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/209-ceh.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/209-ceh.md index 1c6833954..dc5aa9250 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/209-ceh.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/209-ceh.md @@ -7,8 +7,8 @@ The CEH certification aims to provide professionals with the following skills: - Understand the ethics and legal requirements of ethical hacking -- Identify and analyze common cyber threats, including malware, social engineering, and various network attacks -- Utilize the latest penetration testing tools and methodologies to uncover vulnerabilities in systems, networks, and applications +- Identify and analyze common cyber threats, including malware, social engineering, and various network attacks +- Utilize the latest penetration testing tools and methodologies to uncover vulnerabilities in systems, networks, and applications - Implement defensive countermeasures to protect against cyber attacks ## Target Audience @@ -33,10 +33,10 @@ To become a Certified Ethical Hacker, you must pass the CEH exam, which consists To prepare for the CEH exam, candidates can follow the EC-Council's official training course or opt for self-study. The recommended resources include: -- EC-Council's [*CEH v11: Certified Ethical Hacker*](https://www.eccouncil.org/programs/certified-ethical-hacker-ceh/) training course +- EC-Council's [_CEH v11: Certified Ethical Hacker_](https://www.eccouncil.org/programs/certified-ethical-hacker-ceh/) training course - Official CEH study guide and practice exams - CEH-related books, articles, and online resources ## Recertification -CEH holders need to earn 120 ECE (Education Credits) within three years of obtaining their certification to retain their credentials. These credits can be obtained through training, workshops, conferences, and other continuous learning opportunities in the field of information security. \ No newline at end of file +CEH holders need to earn 120 ECE (Education Credits) within three years of obtaining their certification to retain their credentials. These credits can be obtained through training, workshops, conferences, and other continuous learning opportunities in the field of information security. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/index.md b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/index.md index ac79c26ac..4e4a922c0 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/index.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/advanced-certifications/index.md @@ -1 +1 @@ -# Advanced certifications \ No newline at end of file +# Advanced certifications diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/200-comptia-aplus.md b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/200-comptia-aplus.md index 45f80942a..8d972dd45 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/200-comptia-aplus.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/200-comptia-aplus.md @@ -14,7 +14,7 @@ The CompTIA A+ certification aims to test and validate foundational IT knowledge ## Exams -To earn the CompTIA A+ certification, you'll need to pass two exams: +To earn the CompTIA A+ certification, you'll need to pass two exams: - **CompTIA A+ 220-1001 (Core 1)**: This exam covers topics like mobile devices, networking technology, hardware, virtualization, and cloud computing. - **CompTIA A+ 220-1002 (Core 2)**: This exam focuses on topics such as operating systems, security, software troubleshooting, and operational procedures. @@ -34,4 +34,4 @@ Achieving a CompTIA A+ certification can offer several benefits, such as: - Improving your employability and widening your job prospects, especially for entry-level IT roles - Serving as a prerequisite for more advanced certifications, such as CompTIA Network+ and CompTIA Security+ -Overall, if you're an aspiring IT professional, the CompTIA A+ certification is a great starting point to kick off your IT career and begin acquiring the skills and knowledge needed to thrive in this ever-evolving industry. \ No newline at end of file +Overall, if you're an aspiring IT professional, the CompTIA A+ certification is a great starting point to kick off your IT career and begin acquiring the skills and knowledge needed to thrive in this ever-evolving industry. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/201-comptia-linuxplus.md b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/201-comptia-linuxplus.md index 0ed46c1aa..7680d5809 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/201-comptia-linuxplus.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/201-comptia-linuxplus.md @@ -3,6 +3,7 @@ The CompTIA Linux+ certification is an entry-level certification aimed at individuals who are seeking to learn and demonstrate their skills and knowledge of the Linux operating system. This certification is widely recognized in the IT industry as an essential qualification for entry-level Linux administrators and helps them gain a strong foundation in Linux system administration tasks. ## Overview + - **Difficulty Level:** Beginner - **Certification Type:** Professional - **Exam Format:** Multiple-choice and performance-based @@ -48,4 +49,4 @@ CompTIA provides a range of study materials and resources, including: ## Conclusion -The CompTIA Linux+ certification is an excellent starting point for aspiring Linux professionals, as it validates essential skills required for entry-level Linux administration roles. By obtaining this certification, you can enhance your career prospects and demonstrate your competence to potential employers. So, buckle up and start your Linux journey with the CompTIA Linux+ certification! \ No newline at end of file +The CompTIA Linux+ certification is an excellent starting point for aspiring Linux professionals, as it validates essential skills required for entry-level Linux administration roles. By obtaining this certification, you can enhance your career prospects and demonstrate your competence to potential employers. So, buckle up and start your Linux journey with the CompTIA Linux+ certification! diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/202-comptia-networkplus.md b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/202-comptia-networkplus.md index 4f6859d49..58ebe1e78 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/202-comptia-networkplus.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/202-comptia-networkplus.md @@ -30,4 +30,4 @@ By earning the CompTIA Network+ certification, you can demonstrate your competen - **Professional growth**: Gaining the Network+ certification helps you stay up-to-date with networking technologies and sets the stage for more advanced certifications, such as [CompTIA Security+](#) or [Cisco CCNA](#). - **Vendor-neutral**: Since the Network+ certification covers a broad range of networking topics, it is applicable to many different network environments and technologies. -To get started with your CompTIA Network+ certification journey, [visit the official CompTIA website](https://www.comptia.org/certifications/network) for more information on the certification, exam preparation, and testing centers. \ No newline at end of file +To get started with your CompTIA Network+ certification journey, [visit the official CompTIA website](https://www.comptia.org/certifications/network) for more information on the certification, exam preparation, and testing centers. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/203-ccna.md b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/203-ccna.md index 34d22d748..7cf67667b 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/203-ccna.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/203-ccna.md @@ -6,13 +6,13 @@ The Cisco Certified Network Associate (CCNA) certification is an entry-level cer As a CCNA candidate, you will learn the following concepts: -* Network fundamentals: understanding the basics of networking technologies, such as how devices communicate and how data is transmitted -* LAN switching technologies: understanding how switches work and how to configure them for optimal performance -* IPv4 and IPv6 routing technologies: learning how routers process packets and route data between networks -* WAN technologies: understanding Wide Area Networks (WANs) and how they are used to connect geographically dispersed networks -* Infrastructure services: learning about DHCP, DNS, and other essential network services -* Infrastructure security: understanding how to secure network devices and implement basic security measures -* Infrastructure management: learning about SNMP, Syslog, and other tools for network monitoring and management +- Network fundamentals: understanding the basics of networking technologies, such as how devices communicate and how data is transmitted +- LAN switching technologies: understanding how switches work and how to configure them for optimal performance +- IPv4 and IPv6 routing technologies: learning how routers process packets and route data between networks +- WAN technologies: understanding Wide Area Networks (WANs) and how they are used to connect geographically dispersed networks +- Infrastructure services: learning about DHCP, DNS, and other essential network services +- Infrastructure security: understanding how to secure network devices and implement basic security measures +- Infrastructure management: learning about SNMP, Syslog, and other tools for network monitoring and management ## CCNA Exam @@ -20,4 +20,4 @@ To obtain the CCNA certification, you will need to pass a single exam, currently ## Why CCNA? -A CCNA certification can provide you with a solid foundation in networking and open doors to various career opportunities, such as network administrator, network engineer, or security specialist roles. Many employers value CCNA-certified professionals for their validated skills in working with Cisco networking products and their understanding of networking fundamentals. Additionally, attaining a CCNA certification can serve as a stepping stone towards more advanced Cisco certifications, such as the Cisco Certified Network Professional (CCNP) and the Cisco Certified Internetwork Expert (CCIE). \ No newline at end of file +A CCNA certification can provide you with a solid foundation in networking and open doors to various career opportunities, such as network administrator, network engineer, or security specialist roles. Many employers value CCNA-certified professionals for their validated skills in working with Cisco networking products and their understanding of networking fundamentals. Additionally, attaining a CCNA certification can serve as a stepping stone towards more advanced Cisco certifications, such as the Cisco Certified Network Professional (CCNP) and the Cisco Certified Internetwork Expert (CCIE). diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/204-comptia-securityplus.md b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/204-comptia-securityplus.md index cf11d446b..b7c5e69a9 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/204-comptia-securityplus.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/204-comptia-securityplus.md @@ -1,6 +1,6 @@ # CompTIA Security+ -CompTIA Security+ is a highly recognized and respected certification for individuals seeking to start their careers in the field of cybersecurity. This certification is vendor-neutral, meaning it doesn't focus on any specific technology or platform, and provides a solid foundation in cybersecurity principles, concepts, and best practices. +CompTIA Security+ is a highly recognized and respected certification for individuals seeking to start their careers in the field of cybersecurity. This certification is vendor-neutral, meaning it doesn't focus on any specific technology or platform, and provides a solid foundation in cybersecurity principles, concepts, and best practices. ## Overview @@ -30,4 +30,4 @@ Preparation for the CompTIA Security+ exam involves a combination of self-study, While there are no formal prerequisites to take the Security+ exam, CompTIA recommends candidates have two years of experience in IT administration, focusing on security, and a CompTIA Network+ certification. -Overall, the CompTIA Security+ certification is an excellent choice for those looking to begin their journey in cybersecurity. It provides candidates with a strong foundational knowledge, while also serving as a stepping stone for more advanced certifications in the field. \ No newline at end of file +Overall, the CompTIA Security+ certification is an excellent choice for those looking to begin their journey in cybersecurity. It provides candidates with a strong foundational knowledge, while also serving as a stepping stone for more advanced certifications in the field. diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/index.md b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/index.md index 56a62ab44..1437f8d84 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/index.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/beginner-certifications/index.md @@ -1 +1 @@ -# Beginner certifications \ No newline at end of file +# Beginner certifications diff --git a/src/data/roadmaps/cyber-security/content/extras/certifications/index.md b/src/data/roadmaps/cyber-security/content/extras/certifications/index.md index 208afdd72..843cd64b3 100644 --- a/src/data/roadmaps/cyber-security/content/extras/certifications/index.md +++ b/src/data/roadmaps/cyber-security/content/extras/certifications/index.md @@ -1 +1 @@ -# Certifications \ No newline at end of file +# Certifications diff --git a/src/data/roadmaps/cyber-security/content/extras/ctfs/200-hack-the-box.md b/src/data/roadmaps/cyber-security/content/extras/ctfs/200-hack-the-box.md index 61af11397..3055d97a8 100644 --- a/src/data/roadmaps/cyber-security/content/extras/ctfs/200-hack-the-box.md +++ b/src/data/roadmaps/cyber-security/content/extras/ctfs/200-hack-the-box.md @@ -24,4 +24,4 @@ Hack The Box (HTB) is a popular online platform designed for security enthusiast - **Submit Flags and Write-ups:** Upon solving a challenge, submit the flags you found to gain points and secure your spot on the leaderboard. Additionally, once a box is retired from the platform, you can create and share write-ups of your solution technique with the community. -Hack The Box is an excellent resource for anyone looking to enhance their cybersecurity skills or explore the ethical hacking domain. Whether you're a beginner or a seasoned expert, HTB offers an engaging and collaborative environment to learn and grow as a cybersecurity professional. \ No newline at end of file +Hack The Box is an excellent resource for anyone looking to enhance their cybersecurity skills or explore the ethical hacking domain. Whether you're a beginner or a seasoned expert, HTB offers an engaging and collaborative environment to learn and grow as a cybersecurity professional. diff --git a/src/data/roadmaps/cyber-security/content/extras/ctfs/201-try-hack-me.md b/src/data/roadmaps/cyber-security/content/extras/ctfs/201-try-hack-me.md index 60a95bf65..76f5a99a1 100644 --- a/src/data/roadmaps/cyber-security/content/extras/ctfs/201-try-hack-me.md +++ b/src/data/roadmaps/cyber-security/content/extras/ctfs/201-try-hack-me.md @@ -23,4 +23,4 @@ To get started with TryHackMe, follow these steps: - Follow the instructions and resources provided in the room to learn new concepts and complete the challenges. - Progress through various rooms and pathways to enhance your cybersecurity skills and knowledge. -By using TryHackMe, you'll have access to a constantly growing repository of cybersecurity challenges, tools, and resources, ensuring that you stay up-to-date with the latest developments in the field. \ No newline at end of file +By using TryHackMe, you'll have access to a constantly growing repository of cybersecurity challenges, tools, and resources, ensuring that you stay up-to-date with the latest developments in the field. diff --git a/src/data/roadmaps/cyber-security/content/extras/ctfs/202-vuln-hub.md b/src/data/roadmaps/cyber-security/content/extras/ctfs/202-vuln-hub.md index 98cd0c883..d9a610ccd 100644 --- a/src/data/roadmaps/cyber-security/content/extras/ctfs/202-vuln-hub.md +++ b/src/data/roadmaps/cyber-security/content/extras/ctfs/202-vuln-hub.md @@ -16,4 +16,4 @@ VulnHub also provides learning resources like walkthroughs and hints from its co VulnHub can also be a great resource to practice for Capture The Flag (CTF) challenges. Many of the virtual machines and challenges available on VulnHub mirror the type of challenges you might encounter in a CTF competition. By practicing with these VMs, you will gain valuable experience that can be applied in a competitive CTF environment. -In summary, VulnHub is an excellent platform for anyone looking to improve their cybersecurity skills and gain hands-on experience by exploiting vulnerabilities in a safe and legal environment. The range of challenge difficulty ensures that both beginners and experienced security professionals can benefit from the platform while preparing for real-world scenarios and CTF competitions. \ No newline at end of file +In summary, VulnHub is an excellent platform for anyone looking to improve their cybersecurity skills and gain hands-on experience by exploiting vulnerabilities in a safe and legal environment. The range of challenge difficulty ensures that both beginners and experienced security professionals can benefit from the platform while preparing for real-world scenarios and CTF competitions. diff --git a/src/data/roadmaps/cyber-security/content/extras/ctfs/203-pico-ctf.md b/src/data/roadmaps/cyber-security/content/extras/ctfs/203-pico-ctf.md index 5fa487db9..2b20313c5 100644 --- a/src/data/roadmaps/cyber-security/content/extras/ctfs/203-pico-ctf.md +++ b/src/data/roadmaps/cyber-security/content/extras/ctfs/203-pico-ctf.md @@ -14,4 +14,4 @@ - **Open for All Ages**: The competition is open to individuals of all ages, with a focus on students in middle and high school in order to cultivate the next generation of cybersecurity professionals. -In conclusion, PicoCTF is an excellent platform for beginners to start learning about cybersecurity, as well as for experienced individuals looking to improve their skills and compete. By participating in PicoCTF, you can enhance your knowledge, engage with the cyber security community, and hone your skills in this ever-growing field. \ No newline at end of file +In conclusion, PicoCTF is an excellent platform for beginners to start learning about cybersecurity, as well as for experienced individuals looking to improve their skills and compete. By participating in PicoCTF, you can enhance your knowledge, engage with the cyber security community, and hone your skills in this ever-growing field. diff --git a/src/data/roadmaps/cyber-security/content/extras/ctfs/204-sans-holiday-hack-challenge.md b/src/data/roadmaps/cyber-security/content/extras/ctfs/204-sans-holiday-hack-challenge.md index 97b96fceb..76afdf602 100644 --- a/src/data/roadmaps/cyber-security/content/extras/ctfs/204-sans-holiday-hack-challenge.md +++ b/src/data/roadmaps/cyber-security/content/extras/ctfs/204-sans-holiday-hack-challenge.md @@ -32,4 +32,4 @@ The SANs Holiday Hack Challenge is a valuable experience for people with an inte - **Recognition**: Achieve recognition for your skills and contribution to tackling real-world cybersecurity issues. - **Fun**: Experience the thrill of solving complex security problems while enjoying the festive theme and engaging storyline. -In conclusion, the SANs Holiday Hack Challenge offers a unique opportunity to develop your cybersecurity skills in a fun and challenging environment. Whether you are new to the field or an industry veteran, participating in this event will help you grow professionally and make valuable connections in the cybersecurity community. Don't miss the next SANs Holiday Hack Challenge! \ No newline at end of file +In conclusion, the SANs Holiday Hack Challenge offers a unique opportunity to develop your cybersecurity skills in a fun and challenging environment. Whether you are new to the field or an industry veteran, participating in this event will help you grow professionally and make valuable connections in the cybersecurity community. Don't miss the next SANs Holiday Hack Challenge! diff --git a/src/data/roadmaps/cyber-security/content/extras/ctfs/index.md b/src/data/roadmaps/cyber-security/content/extras/ctfs/index.md index 6c244c40a..cf3a72029 100644 --- a/src/data/roadmaps/cyber-security/content/extras/ctfs/index.md +++ b/src/data/roadmaps/cyber-security/content/extras/ctfs/index.md @@ -1 +1 @@ -# Ctfs \ No newline at end of file +# Ctfs diff --git a/src/data/roadmaps/cyber-security/content/extras/index.md b/src/data/roadmaps/cyber-security/content/extras/index.md index a8afa783d..f419a91af 100644 --- a/src/data/roadmaps/cyber-security/content/extras/index.md +++ b/src/data/roadmaps/cyber-security/content/extras/index.md @@ -1 +1 @@ -# Extras \ No newline at end of file +# Extras diff --git a/src/data/roadmaps/cyber-security/content/index.md b/src/data/roadmaps/cyber-security/content/index.md index 4e768b56d..792d60054 100644 --- a/src/data/roadmaps/cyber-security/content/index.md +++ b/src/data/roadmaps/cyber-security/content/index.md @@ -1 +1 @@ -# \ No newline at end of file +# diff --git a/src/data/roadmaps/cyber-security/cyber-security.md b/src/data/roadmaps/cyber-security/cyber-security.md index e259b485b..9d43ec78e 100644 --- a/src/data/roadmaps/cyber-security/cyber-security.md +++ b/src/data/roadmaps/cyber-security/cyber-security.md @@ -1,53 +1,53 @@ --- -jsonUrl: "/jsons/roadmaps/cyber-security.json" -pdfUrl: "/pdfs/roadmaps/cyber-security.pdf" +jsonUrl: '/jsons/roadmaps/cyber-security.json' +pdfUrl: '/pdfs/roadmaps/cyber-security.pdf' order: 11 -briefTitle: "Cyber Security" -briefDescription: "Step by step guide to becoming a Cyber Security Expert in 2023" -title: "Cyber Security Expert" -description: "Step by step guide to becoming a Cyber Security Expert in 2023" +briefTitle: 'Cyber Security' +briefDescription: 'Step by step guide to becoming a Cyber Security Expert in 2023' +title: 'Cyber Security Expert' +description: 'Step by step guide to becoming a Cyber Security Expert in 2023' isNew: true hasTopics: true dimensions: width: 968 height: 3316.15 schema: - headline: "Cyber Security Roadmap: Learn to become a Cyber Security Expert" - description: "Learn how to become a Cyber Security expert with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/cyber-security.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Cyber Security Roadmap: Learn to become a Cyber Security Expert' + description: 'Learn how to become a Cyber Security expert with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/cyber-security.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Cyber Security Roadmap: Learn to become a Cyber Security Expert" - description: "Community driven, articles, resources, guides, interview questions, quizzes for cyber security. Learn to become a modern Cyber Security Expert by following the steps, skills, resources and guides listed in this roadmap." + title: 'Cyber Security Roadmap: Learn to become a Cyber Security Expert' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for cyber security. Learn to become a modern Cyber Security Expert by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a cyber security expert" - - "guide to becoming a cyber security expert" - - "cyber security expert" - - "cyber security skills" - - "guide to cyber security" - - "cyber security roadmap" - - "cyber security skills" - - "cyber security skills test" - - "skills for cyber security" - - "what is cyber security" - - "cyber security quiz" - - "cyber security interview questions" - - "cyber security engineer roadmap" - - "cyber security expert roadmap" - - "become a cyber security expert" - - "cyber security expert career path" - - "cyber security expert" - - "modern cyber security expert" + - 'guide to becoming a cyber security expert' + - 'guide to becoming a cyber security expert' + - 'cyber security expert' + - 'cyber security skills' + - 'guide to cyber security' + - 'cyber security roadmap' + - 'cyber security skills' + - 'cyber security skills test' + - 'skills for cyber security' + - 'what is cyber security' + - 'cyber security quiz' + - 'cyber security interview questions' + - 'cyber security engineer roadmap' + - 'cyber security expert roadmap' + - 'become a cyber security expert' + - 'cyber security expert career path' + - 'cyber security expert' + - 'modern cyber security expert' relatedRoadmaps: - - "backend" - - "devops" - - "python" + - 'backend' + - 'devops' + - 'python' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" ---- \ No newline at end of file + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' +--- diff --git a/src/data/roadmaps/design-system/content/100-design-system-basics/100-what-is-design-system.md b/src/data/roadmaps/design-system/content/100-design-system-basics/100-what-is-design-system.md index 1cef86c2e..c21ede999 100644 --- a/src/data/roadmaps/design-system/content/100-design-system-basics/100-what-is-design-system.md +++ b/src/data/roadmaps/design-system/content/100-design-system-basics/100-what-is-design-system.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Everything you need to know about Design Systems](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969) - [Design Systems 101](https://www.nngroup.com/articles/design-systems-101/) - [A comprehensive guide to design systems](https://www.invisionapp.com/inside-design/guide-to-design-systems/) - diff --git a/src/data/roadmaps/design-system/content/100-design-system-basics/101-need-of-design-system.md b/src/data/roadmaps/design-system/content/100-design-system-basics/101-need-of-design-system.md index b83f451e3..080370f52 100644 --- a/src/data/roadmaps/design-system/content/100-design-system-basics/101-need-of-design-system.md +++ b/src/data/roadmaps/design-system/content/100-design-system-basics/101-need-of-design-system.md @@ -1,11 +1,9 @@ # Need of design system -Having a solid design system speeds up your work by making the product team more efficient, and it creates consistency and harmony within the product and brand ecosystem. A strong design system takes the burden off individual designers to think through commonly recurring design problems. With a full library of pre-approved elements, designers can focus on bigger problems like creating seamless, intuitive flows that delight users. That kind of efficiency pays huge dividends over time. +Having a solid design system speeds up your work by making the product team more efficient, and it creates consistency and harmony within the product and brand ecosystem. A strong design system takes the burden off individual designers to think through commonly recurring design problems. With a full library of pre-approved elements, designers can focus on bigger problems like creating seamless, intuitive flows that delight users. That kind of efficiency pays huge dividends over time. Visit the following resources to learn more: - [Design Systems, when and how much?](https://www.youtube.com/watch?v=Hx02SaL_IH0) - [Why You Need a Strong Design System (and How to Build One)](https://www.drawbackwards.com/blog/why-you-need-a-strong-design-system-and-how-to-build-one) - [On Design Systems: Sell The Output, Not The Workflow](https://www.smashingmagazine.com/2016/05/design-systems-responsive-design-sell-output-not-workflow/) - - diff --git a/src/data/roadmaps/design-system/content/100-design-system-basics/102-design-system-vs-component-library.md b/src/data/roadmaps/design-system/content/100-design-system-basics/102-design-system-vs-component-library.md index b57c7dcb0..ca99dc98d 100644 --- a/src/data/roadmaps/design-system/content/100-design-system-basics/102-design-system-vs-component-library.md +++ b/src/data/roadmaps/design-system/content/100-design-system-basics/102-design-system-vs-component-library.md @@ -7,5 +7,3 @@ Visit the following resources to learn more: - [A Design System: So Much More Than A Component Library](https://www.architech.ca/a-design-system-so-much-more-than-a-component-library) - [Design System vs UI Component Library vs Brand Style Guide](https://prototype.net/blog/design-system-component-library-style-guide) - [Design Systems vs Pattern Libraries vs Style Guides vs Component Libraries](https://www.uxpin.com/studio/blog/design-systems-vs-pattern-libraries-vs-style-guides-whats-difference/) - - diff --git a/src/data/roadmaps/design-system/content/100-design-system-basics/103-atomic-design.md b/src/data/roadmaps/design-system/content/100-design-system-basics/103-atomic-design.md index 0eb093bce..4b5253da3 100644 --- a/src/data/roadmaps/design-system/content/100-design-system-basics/103-atomic-design.md +++ b/src/data/roadmaps/design-system/content/100-design-system-basics/103-atomic-design.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Atomic Design Principles & Methodology 101](https://xd.adobe.com/ideas/process/ui-design/atomic-design-principles-methodology-101/) - [Atomic Design Methodology](https://atomicdesign.bradfrost.com/chapter-2/) - [Atomic Design and UI Components: Theory to Practice](https://blog.bitsrc.io/atomic-design-and-ui-components-theory-to-practice-f200db337c24) - diff --git a/src/data/roadmaps/design-system/content/100-design-system-basics/105-stakeholders-involved.md b/src/data/roadmaps/design-system/content/100-design-system-basics/105-stakeholders-involved.md index 8c5d33c62..f56868d5b 100644 --- a/src/data/roadmaps/design-system/content/100-design-system-basics/105-stakeholders-involved.md +++ b/src/data/roadmaps/design-system/content/100-design-system-basics/105-stakeholders-involved.md @@ -8,10 +8,9 @@ Building an effective design system is not an individual responsibility, you nee - **Performance Experts:** who can ensure your system loads quickly on all devices - **Content Strategists:** who can help the team nail the voice and tone of the system - **Researchers:** who can help you understand customer needs -- **Product Managers:** to ensure the system is aligning to customer needs +- **Product Managers:** to ensure the system is aligning to customer needs - **Leaders:** (VPs and directors) to champion and align the vision throughout the company including up to executive leadership - Visit the following resources to learn more: - [Designing the Design System](https://www.designbetter.co/design-systems-handbook/designing-design-system) diff --git a/src/data/roadmaps/design-system/content/100-design-system-basics/106-design-system-examples.md b/src/data/roadmaps/design-system/content/100-design-system-basics/106-design-system-examples.md index 53283eacf..110e39cfb 100644 --- a/src/data/roadmaps/design-system/content/100-design-system-basics/106-design-system-examples.md +++ b/src/data/roadmaps/design-system/content/100-design-system-basics/106-design-system-examples.md @@ -1,6 +1,5 @@ # Design System Examples - Visit the following resources to learn more: - [Material Design (Google)](https://material.io/) diff --git a/src/data/roadmaps/design-system/content/100-design-system-basics/index.md b/src/data/roadmaps/design-system/content/100-design-system-basics/index.md index e96fcdbc0..07d08ce29 100644 --- a/src/data/roadmaps/design-system/content/100-design-system-basics/index.md +++ b/src/data/roadmaps/design-system/content/100-design-system-basics/index.md @@ -8,6 +8,3 @@ Visit the following resources to learn more: - [What is a Design System? Design Systems 101 for Designers](https://www.youtube.com/watch?v=wc5krC28ynQ) - [A comprehensive guide to design systems](https://www.invisionapp.com/inside-design/guide-to-design-systems/) - [Everything you need to know about Design Systems](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969) - - - diff --git a/src/data/roadmaps/design-system/content/101-design-system-terminology/100-component.md b/src/data/roadmaps/design-system/content/101-design-system-terminology/100-component.md index 7a6d94140..15a6a4256 100644 --- a/src/data/roadmaps/design-system/content/101-design-system-terminology/100-component.md +++ b/src/data/roadmaps/design-system/content/101-design-system-terminology/100-component.md @@ -1,5 +1,3 @@ # Component Components are the reusable building blocks of a design system. Each component meets a specific interaction or UI needs, and is specifically created to work together to create patterns and intuitive user experiences. - - diff --git a/src/data/roadmaps/design-system/content/101-design-system-terminology/102-design-language.md b/src/data/roadmaps/design-system/content/101-design-system-terminology/102-design-language.md index ff0ffffb0..675623af0 100644 --- a/src/data/roadmaps/design-system/content/101-design-system-terminology/102-design-language.md +++ b/src/data/roadmaps/design-system/content/101-design-system-terminology/102-design-language.md @@ -8,7 +8,3 @@ Visit the following resources to learn more: - [How to Develop a Design Language](https://xd.adobe.com/ideas/principles/web-design/how-to-develop-design-language/) - [What Actually Constitutes Design Language?](https://www.uxpin.com/studio/blog/design-language/) - [Visual Design Language: The Building Blocks Of Design](https://www.smashingmagazine.com/2020/03/visual-design-language-building-blocks/) - - - - diff --git a/src/data/roadmaps/design-system/content/101-design-system-terminology/103-governance.md b/src/data/roadmaps/design-system/content/101-design-system-terminology/103-governance.md index 8bd27cffa..3438fa0da 100644 --- a/src/data/roadmaps/design-system/content/101-design-system-terminology/103-governance.md +++ b/src/data/roadmaps/design-system/content/101-design-system-terminology/103-governance.md @@ -8,7 +8,3 @@ Visit the following resources to learn more: - [Design System Governance – Scale Your Design](https://www.uxpin.com/studio/blog/design-system-governance/) - [Governance by design: Building successful design systems](https://rangle.io/blog/governance-by-design-building-successful-design-systems/) - [Team Models for Scaling a Design System](https://medium.com/eightshapes-llc/team-models-for-scaling-a-design-system-2cf9d03be6a0) - - - - diff --git a/src/data/roadmaps/design-system/content/101-design-system-terminology/107-token.md b/src/data/roadmaps/design-system/content/101-design-system-terminology/107-token.md index 0ea70ad40..ebd08736e 100644 --- a/src/data/roadmaps/design-system/content/101-design-system-terminology/107-token.md +++ b/src/data/roadmaps/design-system/content/101-design-system-terminology/107-token.md @@ -5,4 +5,3 @@ Design system tokens are the style values of UI elements such as color, typograp Visit the following resources to learn more: - [What Are Design Tokens?](https://xd.adobe.com/ideas/principles/design-systems/what-are-design-tokens/) - diff --git a/src/data/roadmaps/design-system/content/101-design-system-terminology/108-ui-kit.md b/src/data/roadmaps/design-system/content/101-design-system-terminology/108-ui-kit.md index 7b1e4e72a..cf8a6956c 100644 --- a/src/data/roadmaps/design-system/content/101-design-system-terminology/108-ui-kit.md +++ b/src/data/roadmaps/design-system/content/101-design-system-terminology/108-ui-kit.md @@ -2,7 +2,6 @@ As it relates to a design system, a UI Kit is a representation of coded components created in a way that designers who don’t know code can create interface mockups. Examples of UI kits are Sketch libraries and [Figma design systems](https://www.figma.com/blog/how-to-build-your-design-system-in-figma/). - Visit the following resources to learn more: - [Design System vs UI Kit](https://uigstudio.com/insights/design-system-vs-ui-kit) diff --git a/src/data/roadmaps/design-system/content/101-design-system-terminology/index.md b/src/data/roadmaps/design-system/content/101-design-system-terminology/index.md index 92e141780..b846c54d1 100644 --- a/src/data/roadmaps/design-system/content/101-design-system-terminology/index.md +++ b/src/data/roadmaps/design-system/content/101-design-system-terminology/index.md @@ -5,4 +5,3 @@ Design systems can be tricky if you don’t know what certain words mean. Have a Visit the following resources to learn more: - [Design Systems Glossary](https://web.archive.org/web/20220620075140/https://superfriendly.com/design-systems/glossary/) - diff --git a/src/data/roadmaps/design-system/content/102-making-a-design-system/100-from-scratch.md b/src/data/roadmaps/design-system/content/102-making-a-design-system/100-from-scratch.md index bd5ccd17a..d14c40ce1 100644 --- a/src/data/roadmaps/design-system/content/102-making-a-design-system/100-from-scratch.md +++ b/src/data/roadmaps/design-system/content/102-making-a-design-system/100-from-scratch.md @@ -5,4 +5,3 @@ If you are building a Design System from Scratch, you may skip the "Existing Des Visit the following resources to learn more: - [Create a Design System with Figma - Full Course](https://www.youtube.com/watch?v=RYDiDpW2VkM) - diff --git a/src/data/roadmaps/design-system/content/103-existing-design-analysis/100-existing-design-process.md b/src/data/roadmaps/design-system/content/103-existing-design-analysis/100-existing-design-process.md index da2e0b500..11f830e43 100644 --- a/src/data/roadmaps/design-system/content/103-existing-design-analysis/100-existing-design-process.md +++ b/src/data/roadmaps/design-system/content/103-existing-design-analysis/100-existing-design-process.md @@ -2,7 +2,7 @@ To better understand the kind of design system you would like to implement, you need to start by reviewing and analyzing the current approach for design at your company. Find the answers to the following questions: -* What is the design process that your company follows? -* What are the existing tools that your company uses? +- What is the design process that your company follows? +- What are the existing tools that your company uses? It’s also recommended to evaluate the level of design maturity of the product teams. This knowledge will help you estimate the time required to introduce the system to your organization. diff --git a/src/data/roadmaps/design-system/content/103-existing-design-analysis/101-visual-audit.md b/src/data/roadmaps/design-system/content/103-existing-design-analysis/101-visual-audit.md index 1e9d8c986..d1eca016a 100644 --- a/src/data/roadmaps/design-system/content/103-existing-design-analysis/101-visual-audit.md +++ b/src/data/roadmaps/design-system/content/103-existing-design-analysis/101-visual-audit.md @@ -2,4 +2,4 @@ Take screenshots of your current product with the help of your team. You can use any presentation software like Google Slides or print and pin them on foam-core boards. Group the screenshots into categories like buttons, navigation, forms, tables, charts, lists etc. -Now, review each category to find inconsistencies and note areas for improvement with your team. Use a tool like [CSS Stats](https://cssstats.com/) to see how many unique colors, typefaces you have in your style sheets. +Now, review each category to find inconsistencies and note areas for improvement with your team. Use a tool like [CSS Stats](https://cssstats.com/) to see how many unique colors, typefaces you have in your style sheets. diff --git a/src/data/roadmaps/design-system/content/103-existing-design-analysis/106-documentation.md b/src/data/roadmaps/design-system/content/103-existing-design-analysis/106-documentation.md index de82918b0..9c1a4c2d6 100644 --- a/src/data/roadmaps/design-system/content/103-existing-design-analysis/106-documentation.md +++ b/src/data/roadmaps/design-system/content/103-existing-design-analysis/106-documentation.md @@ -1,3 +1,3 @@ # Documentation -Organize and document the results of visual audit, design elements, components with variations, states, patterns found, any existing documentation, current design process, and considerations. This documentation will be shared across the team and act as a guide when building the new design system. +Organize and document the results of visual audit, design elements, components with variations, states, patterns found, any existing documentation, current design process, and considerations. This documentation will be shared across the team and act as a guide when building the new design system. diff --git a/src/data/roadmaps/design-system/content/103-existing-design-analysis/index.md b/src/data/roadmaps/design-system/content/103-existing-design-analysis/index.md index 58231da14..4d9ec4d60 100644 --- a/src/data/roadmaps/design-system/content/103-existing-design-analysis/index.md +++ b/src/data/roadmaps/design-system/content/103-existing-design-analysis/index.md @@ -2,10 +2,10 @@ First step in creating a design system from an existing design is performing a design analysis and understanding what you will be working with to identify the requirements and prepare a plan. Performing the analysis may consist of: -* Understanding the Existing Design Process -* Performing Visual Audit -* Identifying Design Elements -* Identify Common Components -* Understanding the A/B Testing and Experimentation Needs -* Understanding any Locale or regional requirements (such as LTR/RTL). -* Documenting your findings +- Understanding the Existing Design Process +- Performing Visual Audit +- Identifying Design Elements +- Identify Common Components +- Understanding the A/B Testing and Experimentation Needs +- Understanding any Locale or regional requirements (such as LTR/RTL). +- Documenting your findings diff --git a/src/data/roadmaps/design-system/content/107-tooling/101-design/index.md b/src/data/roadmaps/design-system/content/107-tooling/101-design/index.md index 9bcdf2b0a..3ea4cab2a 100644 --- a/src/data/roadmaps/design-system/content/107-tooling/101-design/index.md +++ b/src/data/roadmaps/design-system/content/107-tooling/101-design/index.md @@ -1,4 +1,3 @@ # Design The UI and UX in a design system need to be tied to development as much as possible. The tools in this checklist should help designers and developers work better together. - diff --git a/src/data/roadmaps/design-system/content/107-tooling/index.md b/src/data/roadmaps/design-system/content/107-tooling/index.md index 9a7ec64db..0e93d9324 100644 --- a/src/data/roadmaps/design-system/content/107-tooling/index.md +++ b/src/data/roadmaps/design-system/content/107-tooling/index.md @@ -1,4 +1,3 @@ # Tooling To make things efficient for anyone using your design system, make tooling essential. Find the workflows where you can integrate things with the tools people use. This helps organically spread your design system and make it crucial to people’s daily work. - diff --git a/src/data/roadmaps/design-system/design-system.md b/src/data/roadmaps/design-system/design-system.md index c3c8780af..1cad9604e 100644 --- a/src/data/roadmaps/design-system/design-system.md +++ b/src/data/roadmaps/design-system/design-system.md @@ -1,58 +1,58 @@ --- -jsonUrl: "/jsons/roadmaps/design-system.json" -pdfUrl: "/pdfs/roadmaps/design-system.pdf" +jsonUrl: '/jsons/roadmaps/design-system.json' +pdfUrl: '/pdfs/roadmaps/design-system.pdf' order: 13 -briefTitle: "Design System" -briefDescription: "Step by step guide to building a modern Design System" -title: "Design System" -description: "Learn how to create a design system with this step by step guide" +briefTitle: 'Design System' +briefDescription: 'Step by step guide to building a modern Design System' +title: 'Design System' +description: 'Learn how to create a design system with this step by step guide' isNew: false hasTopics: true -note: "**Note:** System Design is a different topic, visit [System Design roadmap](/system-design) for that." +note: '**Note:** System Design is a different topic, visit [System Design roadmap](/system-design) for that.' dimensions: width: 968 height: 2309.7 schema: - headline: "Design System Roadmap" - description: "Learn how to create a Design System with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/design-system.png" - datePublished: "2023-01-05" - dateModified: "2023-01-19" + headline: 'Design System Roadmap' + description: 'Learn how to create a Design System with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/design-system.png' + datePublished: '2023-01-05' + dateModified: '2023-01-19' seo: - title: "How to Create a Design System" - description: "Learn how to create a design system or become a design system engineer with this step by step guide with resources." + title: 'How to Create a Design System' + description: 'Learn how to create a design system or become a design system engineer with this step by step guide with resources.' keywords: - - "guide to create a design system" - - "guide to becoming a design system engineer" - - "design system engineer" - - "design system engineer" - - "design system skills" - - "guide to design system" - - "design system roadmap" - - "design system skills" - - "design system skills test" - - "skills for design system" - - "what is design system" - - "design system quiz" - - "design system interview questions" - - "design system engineer roadmap" - - "design system engineer roadmap" - - "become a design system engineer" - - "design system engineer career path" - - "design system engineer" - - "modern design system engineer" + - 'guide to create a design system' + - 'guide to becoming a design system engineer' + - 'design system engineer' + - 'design system engineer' + - 'design system skills' + - 'guide to design system' + - 'design system roadmap' + - 'design system skills' + - 'design system skills test' + - 'skills for design system' + - 'what is design system' + - 'design system quiz' + - 'design system interview questions' + - 'design system engineer roadmap' + - 'design system engineer roadmap' + - 'become a design system engineer' + - 'design system engineer career path' + - 'design system engineer' + - 'modern design system engineer' relatedRoadmaps: - - "frontend" - - "javascript" - - "react" - - "vue" - - "angular" - - "nodejs" + - 'frontend' + - 'javascript' + - 'react' + - 'vue' + - 'angular' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" ---- \ No newline at end of file + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' +--- diff --git a/src/data/roadmaps/devops/content/100-language/100-python.md b/src/data/roadmaps/devops/content/100-language/100-python.md index abb61f99c..64af3f12b 100644 --- a/src/data/roadmaps/devops/content/100-language/100-python.md +++ b/src/data/roadmaps/devops/content/100-language/100-python.md @@ -1,6 +1,6 @@ # Python -Python is a multi-paradigm language. Being an interpreted language, code is executed as soon as it is written and the Python syntax allows for writing code in functional, procedural or object-oriented programmatic ways. Python is frequently recommended as the first language new coders should learn, because of its focus on readability, consistency, and ease of use. This comes with some downsides, as the language is not especially performant in most production tasks. +Python is a multi-paradigm language. Being an interpreted language, code is executed as soon as it is written and the Python syntax allows for writing code in functional, procedural or object-oriented programmatic ways. Python is frequently recommended as the first language new coders should learn, because of its focus on readability, consistency, and ease of use. This comes with some downsides, as the language is not especially performant in most production tasks. Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/100-language/102-javascript.md b/src/data/roadmaps/devops/content/100-language/102-javascript.md index c9aea44d5..59464bd44 100644 --- a/src/data/roadmaps/devops/content/100-language/102-javascript.md +++ b/src/data/roadmaps/devops/content/100-language/102-javascript.md @@ -13,4 +13,4 @@ Visit the following resources to learn more: - [Node.js Tutorial for Beginners](https://www.youtube.com/watch?v=TlB_eWDSMt4) - [W3Schools – Node.js Tutorial](https://www.w3schools.com/nodejs/) - [What is NPM?](https://www.w3schools.com/nodejs/nodejs_npm.asp) -- [Official Documentation](https://nodejs.dev/en/learn/) \ No newline at end of file +- [Official Documentation](https://nodejs.dev/en/learn/) diff --git a/src/data/roadmaps/devops/content/100-language/104-rust.md b/src/data/roadmaps/devops/content/100-language/104-rust.md index 2887dd961..9979726d5 100644 --- a/src/data/roadmaps/devops/content/100-language/104-rust.md +++ b/src/data/roadmaps/devops/content/100-language/104-rust.md @@ -9,4 +9,4 @@ Visit the following resources to learn more: - [The Rust Programming Book - Video Version](https://youtube.com/playlist?list=PLai5B987bZ9CoVR-QEIN9foz4QCJ0H2Y8) - [Comprehensive Rust by Google - Learn Rust in 4 Days](https://google.github.io/comprehensive-rust/) - [Microsoft Learn Course](https://learn.microsoft.com/en-us/training/paths/rust-first-steps/) -- [Quick Rust Guide](https://sivanaikk.github.io/rust/) \ No newline at end of file +- [Quick Rust Guide](https://sivanaikk.github.io/rust/) diff --git a/src/data/roadmaps/devops/content/100-language/index.md b/src/data/roadmaps/devops/content/100-language/index.md index bfaf4a39f..1eeaa6751 100644 --- a/src/data/roadmaps/devops/content/100-language/index.md +++ b/src/data/roadmaps/devops/content/100-language/index.md @@ -1,5 +1,5 @@ # 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 to 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. - [Guide to Picking a Language for DevOps](https://cs.fyi/guide/programming-language-for-devops) diff --git a/src/data/roadmaps/devops/content/101-os-concepts/100-networking.md b/src/data/roadmaps/devops/content/101-os-concepts/100-networking.md index 5a37735ac..6ffeb9103 100644 --- a/src/data/roadmaps/devops/content/101-os-concepts/100-networking.md +++ b/src/data/roadmaps/devops/content/101-os-concepts/100-networking.md @@ -2,7 +2,7 @@ Computer networking refers to interconnected computing devices that can exchange data and share resources with each other. These networked devices use a system of rules, called communications protocols, to transmit information over physical or wireless technologies. -Begin by studying the [OSI Model](https://en.wikipedia.org/wiki/OSI_model). This model will assist in constructing an understanding of the linked topics, and help you contextualize the items linked to the Networking, Security, and Protocols node. Higher level networking concepts may be implemented and named differently across cloud providers. Don't let this confuse you - the basics of TCP/IP are useful and used in the same ways across all implementations. +Begin by studying the [OSI Model](https://en.wikipedia.org/wiki/OSI_model). This model will assist in constructing an understanding of the linked topics, and help you contextualize the items linked to the Networking, Security, and Protocols node. Higher level networking concepts may be implemented and named differently across cloud providers. Don't let this confuse you - the basics of TCP/IP are useful and used in the same ways across all implementations. Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/101-os-concepts/102-virtualization.md b/src/data/roadmaps/devops/content/101-os-concepts/102-virtualization.md index 86b0acf0c..8998150d7 100644 --- a/src/data/roadmaps/devops/content/101-os-concepts/102-virtualization.md +++ b/src/data/roadmaps/devops/content/101-os-concepts/102-virtualization.md @@ -2,9 +2,8 @@ Virtualization is the creation of a virtual -- rather than actual -- version of something, such as an operating system (OS), a server, a storage device or network resources. It uses software that simulates hardware functionality to create a virtual system. This practice allows IT organizations to operate multiple operating systems, more than one virtual system and various applications on a single server. - Visit the following resources to learn more: - [What is Virtualization? and its types?](https://www.techtarget.com/searchitoperations/definition/virtualization) - [What is Hypervisor and VM?](https://opensource.com/resources/virtualization) -- [Containers vs VM](https://www.atlassian.com/microservices/cloud-computing/containers-vs-vms) \ No newline at end of file +- [Containers vs VM](https://www.atlassian.com/microservices/cloud-computing/containers-vs-vms) diff --git a/src/data/roadmaps/devops/content/101-os-concepts/105-sockets.md b/src/data/roadmaps/devops/content/101-os-concepts/105-sockets.md index c1c74ebb1..049ac30d7 100644 --- a/src/data/roadmaps/devops/content/101-os-concepts/105-sockets.md +++ b/src/data/roadmaps/devops/content/101-os-concepts/105-sockets.md @@ -9,4 +9,4 @@ Visit the following resources to learn more: - [What are Sockets?](https://www.geeksforgeeks.org/socket-in-computer-network/) - [Types of Sockets](https://www.tutorialspoint.com/unix_sockets/what_is_socket.htm) - [Port vs Socket](https://www.baeldung.com/cs/port-vs-socket) -- [Socket.io Library Bidirectional and low-latency communication for every platform](https://socket.io/) \ No newline at end of file +- [Socket.io Library Bidirectional and low-latency communication for every platform](https://socket.io/) diff --git a/src/data/roadmaps/devops/content/101-os-concepts/106-posix.md b/src/data/roadmaps/devops/content/101-os-concepts/106-posix.md index 55805e37a..dc61acd18 100644 --- a/src/data/roadmaps/devops/content/101-os-concepts/106-posix.md +++ b/src/data/roadmaps/devops/content/101-os-concepts/106-posix.md @@ -2,7 +2,7 @@ POSIX (Portable Operating System Interface) is a family of standards for maintaining compatibility between operating systems. It describes utilities, APIs, and services that a compliant OS should provide to software, thus making it easier to port programs from one system to another. -A practical example: in a Unix-like operating system, there are three *standard streams*, `stdin`, `stdout` and `stderr` - they are I/O connections that you will probably come across when using a terminal, as they manage the flow from the **standard input** (stdin), **standard output** (stdout) and **standard error** (stderr). +A practical example: in a Unix-like operating system, there are three _standard streams_, `stdin`, `stdout` and `stderr` - they are I/O connections that you will probably come across when using a terminal, as they manage the flow from the **standard input** (stdin), **standard output** (stdout) and **standard error** (stderr). So, in this case, when we want to interact with any of these streams (through a process, for example), the POSIX operating system API makes it easier - for example, in the `` C header where the stdin, stderr, and stdout are defined as `STDIN_FILENO`, `STDERR_FILENO` and `STDOUT_FILENO`. diff --git a/src/data/roadmaps/devops/content/101-os-concepts/107-processes.md b/src/data/roadmaps/devops/content/101-os-concepts/107-processes.md index 9ab301542..97d050022 100644 --- a/src/data/roadmaps/devops/content/101-os-concepts/107-processes.md +++ b/src/data/roadmaps/devops/content/101-os-concepts/107-processes.md @@ -3,8 +3,9 @@ A process means program in execution. It generally takes an input, processes it and gives us the appropriate output. `ps` command can be used in linux to get the list of processes running in foreground. Each process will have a unique identifier called **PID**, which can be used to track it or `kill` it through shell. **Types of processes:** -* Foreground processes -* Background processes + +- Foreground processes +- Background processes Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/101-os-concepts/108-startup-management.md b/src/data/roadmaps/devops/content/101-os-concepts/108-startup-management.md index ff764091c..340413dc0 100644 --- a/src/data/roadmaps/devops/content/101-os-concepts/108-startup-management.md +++ b/src/data/roadmaps/devops/content/101-os-concepts/108-startup-management.md @@ -1,6 +1,6 @@ # Startup Management (init.d) -`init.d` is a daemon which is the **first process** (PID = 1) of the Linux system. Then other processes, services, daemons, and threads are started by init. One can write their own scripts in *'/etc/init.d'* location to start services automatically on system boot. Services can be started and stopped manually by using `service` command. +`init.d` is a daemon which is the **first process** (PID = 1) of the Linux system. Then other processes, services, daemons, and threads are started by init. One can write their own scripts in _'/etc/init.d'_ location to start services automatically on system boot. Services can be started and stopped manually by using `service` command. It has following syntax: `$ service [service_name] [action]` e.g. `$ service ssh start` @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [Linux Booting Process](https://www.freecodecamp.org/news/the-linux-booting-process-6-steps-described-in-detail/) - [What is init.d?](https://www.geeksforgeeks.org/what-is-init-d-in-linux-service-management/) -- [What are Daemons in Linux?](https://itsfoss.com/linux-daemons/) \ No newline at end of file +- [What are Daemons in Linux?](https://itsfoss.com/linux-daemons/) diff --git a/src/data/roadmaps/devops/content/101-os-concepts/109-service-management.md b/src/data/roadmaps/devops/content/101-os-concepts/109-service-management.md index 677691282..cb493f35d 100644 --- a/src/data/roadmaps/devops/content/101-os-concepts/109-service-management.md +++ b/src/data/roadmaps/devops/content/101-os-concepts/109-service-management.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [What is systemd? and its commands](https://www.geeksforgeeks.org/linux-systemd-and-its-components/) - [init.d vs systemd](https://uace.github.io/learning/init-vs-systemd-what-is-an-init-daemon) -- [Why Systemd as a replacement of init.d?](https://www.tecmint.com/systemd-replaces-init-in-linux/) \ No newline at end of file +- [Why Systemd as a replacement of init.d?](https://www.tecmint.com/systemd-replaces-init-in-linux/) diff --git a/src/data/roadmaps/devops/content/101-os-concepts/110-threads-concurrency.md b/src/data/roadmaps/devops/content/101-os-concepts/110-threads-concurrency.md index 6f2273a8d..432052881 100644 --- a/src/data/roadmaps/devops/content/101-os-concepts/110-threads-concurrency.md +++ b/src/data/roadmaps/devops/content/101-os-concepts/110-threads-concurrency.md @@ -4,9 +4,10 @@ Each thread has its own program counter, stack, and set of registers. But the threads of a single process might share the same code and data/file. **Key Terminologies:** -* `proc` -* `fork` -* `join` + +- `proc` +- `fork` +- `join` Visit the following resources to learn more: @@ -15,4 +16,4 @@ Visit the following resources to learn more: - [Process vs Thread & Multi-Threading](https://www.scaler.com/topics/operating-system/threads-in-operating-system/) - [What Concurrency in OS?](https://www.geeksforgeeks.org/concurrency-in-operating-system/) - [Threads vs Concurrency](https://medium.com/@azizomarck/how-is-concurrency-different-from-parallelism-334b6d5c869a) -- [How Concurrency is achieved in Threads](https://medium.com/@akhandmishra/operating-system-threads-and-concurrency-aec2036b90f8) \ No newline at end of file +- [How Concurrency is achieved in Threads](https://medium.com/@akhandmishra/operating-system-threads-and-concurrency-aec2036b90f8) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/100-operating-system/index.md b/src/data/roadmaps/devops/content/102-managing-servers/100-operating-system/index.md index e862f852d..daa29ad2c 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/100-operating-system/index.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/100-operating-system/index.md @@ -1,4 +1,5 @@ # Operating system + **An Operating system serves as a bridge between a computer's user and its hardware. An operating system's function is to offer a setting in which a user can conveniently and effectively run programmes.** In simple terms we can say that and Operating System (OS) is an interface between a computer user and computer hardware. An OS permits software programmes to communicate with a computer's hardware, The **kernel** is the name of Piece of software that houses the fundamental elements of **Operating System.** diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/100-screen-multiplexer.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/100-screen-multiplexer.md index 9a72b3a9c..a05f20f29 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/100-screen-multiplexer.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/100-screen-multiplexer.md @@ -1,6 +1,6 @@ # Screen -Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells). Each virtual terminal provides the functions of a DEC VT100 terminal and, in addition, several control functions from the ISO 6429 (ECMA 48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows moving text regions between windows. +Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells). Each virtual terminal provides the functions of a DEC VT100 terminal and, in addition, several control functions from the ISO 6429 (ECMA 48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows moving text regions between windows. See `man screen` or `screen -h` for further information diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-ps.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-ps.md index fb6654514..1ff624f75 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-ps.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-ps.md @@ -9,4 +9,3 @@ Visit the following resources to learn more: - [ps Documentation](https://man7.org/linux/man-pages/man1/ps.1.html) - [ps Cheat Sheet](https://www.sysadmin.md/ps-cheatsheet.html) - [Linux Crash Course - The ps Command](https://www.youtube.com/watch?v=wYwGNgsfN3I) - diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-top.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-top.md index 0e298a603..1803e8e4a 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-top.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-top.md @@ -1,6 +1,6 @@ # top -The top program periodically displays a sorted list of system processes. The default sorting key is pid, but other keys can be used instead. Various output options are available. +The top program periodically displays a sorted list of system processes. The default sorting key is pid, but other keys can be used instead. Various output options are available. See `man top` further information. diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/106-compiling-apps.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/106-compiling-apps.md index 17dda482e..19fb27044 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/106-compiling-apps.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/106-compiling-apps.md @@ -19,5 +19,3 @@ Visit the following resources to learn more: - [Gradle Tutorial](https://www.tutorialspoint.com/gradle/index.htm) - [Gradle for absolute beginners](https://tomgregory.com/gradle-tutorial-for-complete-beginners/) - [Gradle Guides](https://gradle.org/guides/) - - diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md index 3fcc74d57..553644ae1 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [Javatpoint: Linux mtr Command](https://www.javatpoint.com/linux-mtr) - [mtr Linux command](https://www.tutorialspoint.com/unix_commands/mtr.htm) -- [How to traceroute use mtr command in Linux](https://www.devopsroles.com/how-to-traceroute-use-mtr-command-in-linux/) \ No newline at end of file +- [How to traceroute use mtr command in Linux](https://www.devopsroles.com/how-to-traceroute-use-mtr-command-in-linux/) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/112-ping.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/112-ping.md index 0752118b4..a7d76f177 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/112-ping.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/112-ping.md @@ -7,4 +7,4 @@ It has the following syntax: `$ ping [OPTIONS] DESTINATION` e.g. `$ ping roadmap Visit the following resources to learn more: - [What is ping command?](https://linuxize.com/post/linux-ping-command/) -- [ping command with examples](https://www.geeksforgeeks.org/ping-command-in-linux-with-examples/) \ No newline at end of file +- [ping command with examples](https://www.geeksforgeeks.org/ping-command-in-linux-with-examples/) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md index 00d858df0..8a66ae147 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md @@ -5,4 +5,4 @@ NMAP stands for Network Mapper and is an open-source tool used to explore and au Visit the following resources to learn more: - [NMAP Official Manual Book](https://nmap.org/book/man.html) -- [What is Nmap and How to Use it](https://www.freecodecamp.org/news/what-is-nmap-and-how-to-use-it-a-tutorial-for-the-greatest-scanning-tool-of-all-time/) \ No newline at end of file +- [What is Nmap and How to Use it](https://www.freecodecamp.org/news/what-is-nmap-and-how-to-use-it-a-tutorial-for-the-greatest-scanning-tool-of-all-time/) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/114-netstat.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/114-netstat.md index e875161e0..07833f673 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/114-netstat.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/114-netstat.md @@ -1,6 +1,6 @@ # netstat -Netstat is a command line utility to display all the network connections on a system. It displays all the tcp, udp and unix socket connections. Apart from connected sockets it also displays listening sockets that are waiting for incoming connections. +Netstat is a command line utility to display all the network connections on a system. It displays all the tcp, udp and unix socket connections. Apart from connected sockets it also displays listening sockets that are waiting for incoming connections. Visit the following resources to learn more: @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [Netstat Tutorial](http://www.c-jump.com/CIS24/Slides/Networking/html_utils/netstat.html) - [Netstat Commands - Network Administration Tutorial](https://www.youtube.com/watch?v=bxFwpm4IobU) - [Linux Command Line Tutorial For Beginners - netstat command](https://www.youtube.com/watch?v=zGNcvBaN5wE) - diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/116-tcpdump.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/116-tcpdump.md index b8f4713c5..7c2c0e023 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/116-tcpdump.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/116-tcpdump.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [tcpdump Documentation](https://www.tcpdump.org/manpages/tcpdump.1.html) - [Basic Introduction to Tcpdump](https://opensource.com/article/18/10/introduction-tcpdump) - [50 ways to isolate traffic with Tcpdump](https://danielmiessler.com/study/tcpdump/) -- [Interpreting Tcpdump output and data](https://www.youtube.com/watch?v=7bsQP9sKHrs) \ No newline at end of file +- [Interpreting Tcpdump output and data](https://www.youtube.com/watch?v=7bsQP9sKHrs) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/119-dig.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/119-dig.md index 77a19b059..77f786b68 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/119-dig.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/119-dig.md @@ -10,4 +10,4 @@ Visit the following resources to learn more: - [More on dig](https://linuxize.com/post/how-to-use-dig-command-to-query-dns-in-linux/) - [What is host command?](https://www.geeksforgeeks.org/host-command-in-linux-with-examples/) - [What is nslookup command?](https://www.geeksforgeeks.org/nslookup-command-in-linux-with-examples/) -- [What is DNS?](https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/) \ No newline at end of file +- [What is DNS?](https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/120-awk.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/120-awk.md index 22a58a721..fec57172e 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/120-awk.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/120-awk.md @@ -1,8 +1,8 @@ # awk -`awk` is a general-purpose scripting language used for manipulating data or text and generating reports in the Linux world. It is mostly used for pattern scanning and processing. It searches one or more files to see if they contain lines that match the specified patterns and then performs the associated actions. +`awk` is a general-purpose scripting language used for manipulating data or text and generating reports in the Linux world. It is mostly used for pattern scanning and processing. It searches one or more files to see if they contain lines that match the specified patterns and then performs the associated actions. -It has the below syntax: +It has the below syntax: `awk options 'selection_criteria {action}' input-file > output-file` e.g. `$ awk '{print}' file.txt` diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/121-sed.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/121-sed.md index 59d15cb33..bde7edf33 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/121-sed.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/121-sed.md @@ -11,4 +11,3 @@ Visit the following resources to learn more: - [What is SED? with examples](https://www.geeksforgeeks.org/sed-command-in-linux-unix-with-examples/) - [Detailed Manual](https://www.gnu.org/software/sed/manual/sed.html) - [Linux Crash Course - The sed Command](https://www.youtube.com/watch?v=nXLnx8ncZyE&t=218s) - diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/123-sort.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/123-sort.md index c68b569aa..cec49507f 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/123-sort.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/123-sort.md @@ -9,6 +9,5 @@ It has the following syntax Visit the following resources to learn more: - [Sort command with examples](https://www.geeksforgeeks.org/sort-command-linuxunix-examples/) -- [Options](https://en.wikipedia.org/wiki/Sort_(Unix)) +- [Options]() - [Linux Tutorials|sort command GeeksforGeeks](https://www.youtube.com/watch?v=fEx5rnbDKO4) - diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/126-cat.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/126-cat.md index ec555d2b0..36d928d77 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/126-cat.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/126-cat.md @@ -2,17 +2,16 @@ `cat` (concatenate) command is very frequently used in Linux. It reads data from the file and gives its content as output. It helps us to create, view, and concatenate files. - It has the following syntax: -* View : `$ cat [option] [input-file]` -* Create : `$ cat [content] > [new-file]` -* Append : `$ cat [append_content] >> [existing-file]` +- View : `$ cat [option] [input-file]` +- Create : `$ cat [content] > [new-file]` +- Append : `$ cat [append_content] >> [existing-file]` e.g. `$ cat file.txt` Visit the following resources to learn more: - [Cat Command with examples](https://www.tecmint.com/13-basic-cat-command-examples-in-linux/) -- [Options](https://en.wikipedia.org/wiki/Cat_(Unix)) +- [Options]() - [Linux Tutorials|cat command|GeeksforGeeks](https://www.youtube.com/watch?v=exj5WMUJ11g) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/127-echo.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/127-echo.md index f25e9a770..f2ab2ec2f 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/127-echo.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/127-echo.md @@ -1,6 +1,6 @@ # echo -`echo` is a built-in command in Linux used to display lines of text/string that are passed as an argument. It is mostly used in shell scripts and batch files to output status text or `ENV` variables to the screen or a file. +`echo` is a built-in command in Linux used to display lines of text/string that are passed as an argument. It is mostly used in shell scripts and batch files to output status text or `ENV` variables to the screen or a file. It has the following syntax: `$ echo [options] [string]` e.g. `$ echo "Hello World!"` diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/128-fmt.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/128-fmt.md index da2128110..4b7acbae6 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/128-fmt.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/128-fmt.md @@ -6,4 +6,4 @@ It has the following syntax: `$ fmt [-width] [option] [file]` e.g. `$ fmt file.t Visit the following resources to learn more: -- [Fmt command with Examples](https://www.devopsroles.com/fmt-command-in-linux-with-example/) \ No newline at end of file +- [Fmt command with Examples](https://www.devopsroles.com/fmt-command-in-linux-with-example/) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/136-systemtap.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/136-systemtap.md index 33fdef223..301808f08 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/136-systemtap.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/136-systemtap.md @@ -1 +1 @@ -# Systemtap \ No newline at end of file +# Systemtap diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/139-history.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/139-history.md index 93f3b4339..9a5eb2f97 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/139-history.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/139-history.md @@ -6,4 +6,4 @@ It has the below syntax: `$ history` Visit the following resources to learn more: -- [What is history command? How to recall previous commands?](https://www.geeksforgeeks.org/history-command-in-linux-with-examples/) \ No newline at end of file +- [What is history command? How to recall previous commands?](https://www.geeksforgeeks.org/history-command-in-linux-with-examples/) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/141-scp.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/141-scp.md index ef13740f9..e7d6b1d4e 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/141-scp.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/141-scp.md @@ -2,7 +2,6 @@ `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. - Visit the following resources to learn more: - [SCP Linux Command](https://www.freecodecamp.org/news/scp-linux-command-example-how-to-ssh-file-transfer-from-remote-to-local/) diff --git a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/142-ufw.md b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/142-ufw.md index 798da0643..096b8d91e 100644 --- a/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/142-ufw.md +++ b/src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/142-ufw.md @@ -1,9 +1,9 @@ # UFW -UFW, or *uncomplicated firewall*, is command-line based utility for managing firewall rules in Arch Linux, Debian and Ubuntu. It's aim is to make firewall configuration as simple as possible. It is a frontend for the `iptables` firewalling tool. +UFW, or _uncomplicated firewall_, is command-line based utility for managing firewall rules in Arch Linux, Debian and Ubuntu. It's aim is to make firewall configuration as simple as possible. It is a frontend for the `iptables` firewalling tool. Visit the following resources to learn more: - [ufw Documentation](https://manpages.ubuntu.com/manpages/trusty/man8/ufw.8.html) - [Basic Introduction to UFW](https://www.linux.com/training-tutorials/introduction-uncomplicated-firewall-ufw/) -- [UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands) \ No newline at end of file +- [UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands) diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/100-osi-model.md b/src/data/roadmaps/devops/content/103-networking-protocols/100-osi-model.md index 959b6338c..a8dc1deff 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/100-osi-model.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/100-osi-model.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [What is OSI Model?](https://www.cloudflare.com/en-gb/learning/ddos/glossary/open-systems-interconnection-model-osi/) - [OSI Model](https://www.youtube.com/watch?v=dV8mjZd1OtU) - [What is TCP/IP Model?](https://www.geeksforgeeks.org/tcp-ip-model/) -- [OSI vs TCP/IP Model](https://www.youtube.com/watch?v=F5rni9fr1yE) \ No newline at end of file +- [OSI vs TCP/IP Model](https://www.youtube.com/watch?v=F5rni9fr1yE) diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md index 65e23a86d..b2f7580e4 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md @@ -7,4 +7,4 @@ White listing is a process of adding an email to an approved sender list, so ema Visit the following resources to learn more: - [Basic Introduction to whitelisting](https://www.cblohm.com/blog/education-marketing-trends/what-is-email-whitelisting/) -- [Detailed Introduction to greylisting](https://en.wikipedia.org/wiki/Greylisting_(email)) +- [Detailed Introduction to greylisting]() diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/102-imaps.md b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/102-imaps.md index 223183137..d0457e72e 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/102-imaps.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/102-imaps.md @@ -1,4 +1,5 @@ # Imaps + IMAP (port 143) or IMAPS (port 993) allows you to access your email wherever you are, from any device. When you read an email message using IMAP, you aren't actually downloading or storing it on your computer; instead, you're reading it from the email service. As a result, you can check your email from different devices, anywhere in the world: your phone, a computer, a friend's computer. IMAP only downloads a message when you click on it, and attachments aren't automatically downloaded. This way you're able to check your messages a lot more quickly than POP. @@ -6,4 +7,4 @@ IMAP only downloads a message when you click on it, and attachments aren't autom Visit the following resources to learn more: - [Wikipedia: Internet Message Access Protocol](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) -- [What is IMAP and How To Use It | Email Tutorial](https://www.youtube.com/watch?v=cfXabGOA2s8) \ No newline at end of file +- [What is IMAP and How To Use It | Email Tutorial](https://www.youtube.com/watch?v=cfXabGOA2s8) diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/103-pop3s.md b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/103-pop3s.md index 49263b391..bbc547ff2 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/103-pop3s.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/103-pop3s.md @@ -1,4 +1,5 @@ # Pop3s + POP3 (port 110) or POP3s (port 995) stands for The Post Office Protocol. It's an Internet standard protocol used by local email software clients to retrieve emails from a remote mail server over a TCP/IP connection. Email servers hosted by Internet service providers also use POP3 to receive and hold emails intended for their subscribers. Periodically, these subscribers will use email client software to check their mailbox on the remote server and download any emails addressed to them. @@ -7,4 +8,4 @@ Once the email client has downloaded the emails, they are usually deleted from t Visit the following resources to learn more: -- [What is POP3?](https://www.techtarget.com/whatis/definition/POP3-Post-Office-Protocol-3) \ No newline at end of file +- [What is POP3?](https://www.techtarget.com/whatis/definition/POP3-Post-Office-Protocol-3) diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/104-dmarc.md b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/104-dmarc.md index fdc7368fc..88638899f 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/104-dmarc.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/104-dmarc.md @@ -4,4 +4,4 @@ DMARC stands for Domain-based Message Authentication, Reporting, and Conformance Visit the following resources to learn more: -- [DMARC Official Website](https://dmarc.org/) \ No newline at end of file +- [DMARC Official Website](https://dmarc.org/) diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/104-ftp.md b/src/data/roadmaps/devops/content/103-networking-protocols/104-ftp.md index 5468f41c5..a6d148ad2 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/104-ftp.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/104-ftp.md @@ -5,4 +5,4 @@ File Transfer Protocol(FTP) is `TCP/IP` based application layer communication pr Visit the following resources to learn more: - [What is FTP?](https://www.geeksforgeeks.org/file-transfer-protocol-ftp-in-application-layer/) -- [FTP vs SFTP vs FTPS](https://www.fortinet.com/resources/cyberglossary/file-transfer-protocol-ftp-meaning) \ No newline at end of file +- [FTP vs SFTP vs FTPS](https://www.fortinet.com/resources/cyberglossary/file-transfer-protocol-ftp-meaning) diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/105-ssl-tls.md b/src/data/roadmaps/devops/content/103-networking-protocols/105-ssl-tls.md index 00feb0c7d..6a36891f8 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/105-ssl-tls.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/105-ssl-tls.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Cloudflare - What is SSL?](https://www.cloudflare.com/learning/ssl/what-is-ssl/) - [Cloudflare - What is TLS?](https://www.cloudflare.com/en-gb/learning/ssl/transport-layer-security-tls/) - [Wikipedia - SSL/TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) -- [SSH vs SSL vs TLS](https://www.youtube.com/watch?v=k3rFFLmQCuY) \ No newline at end of file +- [SSH vs SSL vs TLS](https://www.youtube.com/watch?v=k3rFFLmQCuY) diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/106-ssh.md b/src/data/roadmaps/devops/content/103-networking-protocols/106-ssh.md index 17508b9b2..dad621413 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/106-ssh.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/106-ssh.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [SSH Intro](https://www.baeldung.com/cs/ssh-intro) - [What is SSH?](https://www.ssh.com/academy/ssh/protocol) -- [SFTP using SSH](https://www.goanywhere.com/blog/how-sftp-works) \ No newline at end of file +- [SFTP using SSH](https://www.goanywhere.com/blog/how-sftp-works) diff --git a/src/data/roadmaps/devops/content/104-setting-up-x/100-reverse-proxy.md b/src/data/roadmaps/devops/content/104-setting-up-x/100-reverse-proxy.md index 0adbbcb05..7a7fbb218 100644 --- a/src/data/roadmaps/devops/content/104-setting-up-x/100-reverse-proxy.md +++ b/src/data/roadmaps/devops/content/104-setting-up-x/100-reverse-proxy.md @@ -4,11 +4,11 @@ A Reverse Proxy server is a type of proxy server that typically sits behind the **Common Uses:** -* Load balancing -* Web acceleration -* Security and anonymity +- Load balancing +- Web acceleration +- Security and anonymity Visit the following resources to learn more: - [What is Reverse Proxy?](https://www.cloudflare.com/en-gb/learning/cdn/glossary/reverse-proxy/) -- [NGINX documentation](https://www.nginx.com/resources/glossary/reverse-proxy-server/) \ No newline at end of file +- [NGINX documentation](https://www.nginx.com/resources/glossary/reverse-proxy-server/) diff --git a/src/data/roadmaps/devops/content/104-setting-up-x/101-caching-server.md b/src/data/roadmaps/devops/content/104-setting-up-x/101-caching-server.md index c290589ba..279b5201c 100644 --- a/src/data/roadmaps/devops/content/104-setting-up-x/101-caching-server.md +++ b/src/data/roadmaps/devops/content/104-setting-up-x/101-caching-server.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [What is Caching?](https://www.cloudflare.com/en-gb/learning/cdn/what-is-caching/) - [What is Cache Server?](https://networkencyclopedia.com/cache-server/) -- [Site Cache vs Browser Cache vs Server Cache](https://wp-rocket.me/blog/different-types-of-caching/) \ No newline at end of file +- [Site Cache vs Browser Cache vs Server Cache](https://wp-rocket.me/blog/different-types-of-caching/) diff --git a/src/data/roadmaps/devops/content/104-setting-up-x/102-forward-proxy.md b/src/data/roadmaps/devops/content/104-setting-up-x/102-forward-proxy.md index 0fe1c3ca0..6fd896cbd 100644 --- a/src/data/roadmaps/devops/content/104-setting-up-x/102-forward-proxy.md +++ b/src/data/roadmaps/devops/content/104-setting-up-x/102-forward-proxy.md @@ -4,11 +4,11 @@ Forward Proxy, often called proxy server is a server that sits in front of a gro **Common Uses:** -* To block access to certain content -* To protect client identity online -* To provide restricted internet to organizations +- To block access to certain content +- To protect client identity online +- To provide restricted internet to organizations Visit the following resources to learn more: - [What is Forward Proxy?](https://www.fortinet.com/resources/cyberglossary/proxy-server) -- [Forward vs Reverse Proxy](https://oxylabs.io/blog/reverse-proxy-vs-forward-proxy) \ No newline at end of file +- [Forward vs Reverse Proxy](https://oxylabs.io/blog/reverse-proxy-vs-forward-proxy) diff --git a/src/data/roadmaps/devops/content/104-setting-up-x/index.md b/src/data/roadmaps/devops/content/104-setting-up-x/index.md index bcb8db3b2..f97657456 100644 --- a/src/data/roadmaps/devops/content/104-setting-up-x/index.md +++ b/src/data/roadmaps/devops/content/104-setting-up-x/index.md @@ -1 +1 @@ -# Setting up x \ No newline at end of file +# Setting up x diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/101-containers.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/101-containers.md index 3f303f725..32199d176 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/101-containers.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/101-containers.md @@ -1,6 +1,6 @@ # Containers -Containers are a construct in which [cgroups](https://en.wikipedia.org/wiki/Cgroups), [namespaces](https://en.wikipedia.org/wiki/Linux_namespaces), and [chroot](https://en.wikipedia.org/wiki/Chroot) are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines. +Containers are a construct in which [cgroups](https://en.wikipedia.org/wiki/Cgroups), [namespaces](https://en.wikipedia.org/wiki/Linux_namespaces), and [chroot](https://en.wikipedia.org/wiki/Chroot) are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines. These images are designed for portability, allowing for full local testing of a static image, and easy deployment to a container management platform. diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/100-ansible.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/100-ansible.md index 2c6ae378c..57224c2a3 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/100-ansible.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/100-ansible.md @@ -2,7 +2,6 @@ Ansible is an open-source configuration management, application deployment and provisioning tool that uses its own declarative language in YAML. Ansible is agentless, meaning you only need remote connections via SSH or Windows Remote Management via Powershell in order to function - Visit the following resources to learn more: - [Ansible Website](https://www.ansible.com/) diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/101-chef.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/101-chef.md index f3eeab272..dc61d9d9e 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/101-chef.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/101-chef.md @@ -2,7 +2,7 @@ Emerging in 2009, [Chef](https://en.wikipedia.org/wiki/Progress_Chef) (now known as Progress Chef) is one of the earliest configuration management tools to gain popularity. Chef "Recipes" are written in Ruby, in a primarily [declarative](https://en.wikipedia.org/wiki/Declarative_programming) style. -Chef requires that a client is installed on a server being managed. This client polls a Chef-Server regularly, to determine what its configuration should be. Chef-Solo is also available, a version of Chef that allows provisioning of a single node by running chef locally. +Chef requires that a client is installed on a server being managed. This client polls a Chef-Server regularly, to determine what its configuration should be. Chef-Solo is also available, a version of Chef that allows provisioning of a single node by running chef locally. A key tenet of Chef recipe design is the concept of [idempotence](https://en.wikipedia.org/wiki/Idempotence). All Chef recipes should be runnable multiple times and produce the same result - this is especially necessary in cases where the client/server model listed above is in use. This pattern of configuration management is highly influential for future declarative tools like Terraform and Cloud Formation. diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/103-infrastructure-provisioning/index.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/103-infrastructure-provisioning/index.md index 60da3a7cf..ef1f7de39 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/103-infrastructure-provisioning/index.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/103-infrastructure-provisioning/index.md @@ -1,3 +1,3 @@ # Infrastructure Provisioning -Tools in this category are used to provision infrastructure in cloud providers. This includes DNS, networking, security policies, servers, containers, and a whole host of vendor-specific constructs. In this category, the use of cloud provider-agnostic tooling is strongly encouraged. These skills can be applied across most cloud providers, and the more specific domain-specific languages tend to have less reach. +Tools in this category are used to provision infrastructure in cloud providers. This includes DNS, networking, security policies, servers, containers, and a whole host of vendor-specific constructs. In this category, the use of cloud provider-agnostic tooling is strongly encouraged. These skills can be applied across most cloud providers, and the more specific domain-specific languages tend to have less reach. diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/104-kubernetes.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/104-kubernetes.md index e963aa790..d13d0efb3 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/104-kubernetes.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/104-kubernetes.md @@ -1,8 +1,8 @@ # Kubernetes -Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources. (similar to the Autopilot and Aquaman systems of Microsoft Azure) +Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources. (similar to the Autopilot and Aquaman systems of Microsoft Azure) -The popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues. +The popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues. Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/100-vault.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/100-vault.md index 9ead32e2a..dc87e9106 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/100-vault.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/100-vault.md @@ -2,21 +2,15 @@ Vault is a tool for securely storing and managing secrets, such as passwords, API keys, and other sensitive information. It is developed and maintained by Hashicorp and is available as open-source software. - Vault is designed to be highly scalable and flexible, with a wide range of features for managing secrets, including: -* Encryption: Vault uses encryption algorithms and protocols, such as AES and RSA, to securely store secrets. -* Access controls: Vault supports role-based access controls and multi-factor authentication to ensure that only authorized users or systems can access secrets. -* Secret rotation: Vault supports automatic secret rotation, allowing secrets to be regularly rotated to reduce the risk of unauthorized access. -* Auditing: Vault provides auditing capabilities, allowing administrators to track and monitor access to secrets. +- Encryption: Vault uses encryption algorithms and protocols, such as AES and RSA, to securely store secrets. +- Access controls: Vault supports role-based access controls and multi-factor authentication to ensure that only authorized users or systems can access secrets. +- Secret rotation: Vault supports automatic secret rotation, allowing secrets to be regularly rotated to reduce the risk of unauthorized access. +- Auditing: Vault provides auditing capabilities, allowing administrators to track and monitor access to secrets. Vault is commonly used in DevOps environments to securely store and manage secrets, and it is often used in conjunction with other tools, such as Kubernetes and Helm, to automate the deployment and management of cloud-native applications. - Visit the following resources to learn more: - [Vault - Official Website](https://www.vaultproject.io/) - - - - diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/101-sops.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/101-sops.md index 65d677337..9d095b5a5 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/101-sops.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/101-sops.md @@ -4,10 +4,10 @@ SOPS (Secrets OPerationS) is an open-source tool for securely storing and managi SOPS is designed to be easy to use and highly secure, with a range of features for managing secrets, including: -* Encryption: SOPS uses encryption algorithms and protocols, such as AES and RSA, to securely store secrets. -* Access controls: SOPS supports role-based access controls and multi-factor authentication to ensure that only authorized users or systems can access secrets. -* Secret rotation: SOPS supports automatic secret rotation, allowing secrets to be regularly rotated to reduce the risk of unauthorized access. -* Auditing: SOPS provides auditing capabilities, allowing administrators to track and monitor access to secrets. +- Encryption: SOPS uses encryption algorithms and protocols, such as AES and RSA, to securely store secrets. +- Access controls: SOPS supports role-based access controls and multi-factor authentication to ensure that only authorized users or systems can access secrets. +- Secret rotation: SOPS supports automatic secret rotation, allowing secrets to be regularly rotated to reduce the risk of unauthorized access. +- Auditing: SOPS provides auditing capabilities, allowing administrators to track and monitor access to secrets. SOPS is commonly used in DevOps environments to securely store and manage secrets, and it is often used in conjunction with other tools, such as Kubernetes and Helm, to automate the deployment and management of cloud-native applications. diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/102-sealed-secrets.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/102-sealed-secrets.md index 7906ef024..e320a39ca 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/102-sealed-secrets.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/102-sealed-secrets.md @@ -6,10 +6,10 @@ In a Sealed Secrets workflow, secrets are encrypted using a public key and store Sealed Secrets is designed to be highly secure and easy to use, with a range of features for managing secrets, including: -* Encryption: Sealed Secrets uses encryption algorithms and protocols, such as RSA, to securely store secrets. -* Access controls: Sealed Secrets supports role-based access controls and multi-factor authentication to ensure that only authorized users or systems can access secrets. -* Secret rotation: Sealed Secrets supports automatic secret rotation, allowing secrets to be regularly rotated to reduce the risk of unauthorized access. -* Auditing: Sealed Secrets provides auditing capabilities, allowing administrators to track and monitor access to secrets. +- Encryption: Sealed Secrets uses encryption algorithms and protocols, such as RSA, to securely store secrets. +- Access controls: Sealed Secrets supports role-based access controls and multi-factor authentication to ensure that only authorized users or systems can access secrets. +- Secret rotation: Sealed Secrets supports automatic secret rotation, allowing secrets to be regularly rotated to reduce the risk of unauthorized access. +- Auditing: Sealed Secrets provides auditing capabilities, allowing administrators to track and monitor access to secrets. Sealed Secrets is commonly used in Kubernetes environments to securely store and manage secrets, and it is often used in conjunction with other tools, such as Helm, to automate the deployment and management of cloud-native applications. diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/103-cloud-specific-tools.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/103-cloud-specific-tools.md index 62c148702..15151f507 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/103-cloud-specific-tools.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/103-cloud-specific-tools.md @@ -2,9 +2,9 @@ There are several cloud-specific tools for securely storing and managing secrets, such as: -* AWS Secrets Manager: AWS Secrets Manager is a service provided by Amazon Web Services (AWS) for securely storing and managing secrets. It provides features such as automatic secret rotation and integration with other AWS services. -* Google Cloud Secret Manager: Google Cloud Secret Manager is a service provided by Google Cloud for securely storing and managing secrets. It provides features such as automatic secret rotation and integration with other Google Cloud services. -* Azure Key Vault: Azure Key Vault is a service provided by Microsoft Azure for securely storing and managing secrets. It provides features such as automatic secret rotation and integration with other Azure services. +- AWS Secrets Manager: AWS Secrets Manager is a service provided by Amazon Web Services (AWS) for securely storing and managing secrets. It provides features such as automatic secret rotation and integration with other AWS services. +- Google Cloud Secret Manager: Google Cloud Secret Manager is a service provided by Google Cloud for securely storing and managing secrets. It provides features such as automatic secret rotation and integration with other Google Cloud services. +- Azure Key Vault: Azure Key Vault is a service provided by Microsoft Azure for securely storing and managing secrets. It provides features such as automatic secret rotation and integration with other Azure services. These cloud-specific tools are designed to be used in conjunction with cloud-based applications and infrastructure and are typically integrated with other cloud services, such as container orchestration platforms and continuous delivery pipelines. diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/index.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/index.md index a66c8d6af..494d546dc 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/index.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/105-secret-management/index.md @@ -4,9 +4,9 @@ Secret management is an important aspect of DevOps, as it involves securely stor There are several ways to manage secrets in a cloud environment: -* Secret stores: A secret store is a specialized database or service that is designed to securely store and manage secrets. Examples of secret stores include Hashicorp Vault, AWS Secrets Manager, and Google Cloud Secret Manager. -* Encryption: Secrets can be encrypted using a variety of encryption algorithms and protocols, such as AES, RSA, and PGP. Encrypted secrets can be stored in a variety of locations, such as a file system, a database, or a cloud storage service. -* Access controls: Access to secrets should be restricted to only those users or systems that need them, using techniques such as role-based access controls, multi-factor authentication, and least privilege principles. +- Secret stores: A secret store is a specialized database or service that is designed to securely store and manage secrets. Examples of secret stores include Hashicorp Vault, AWS Secrets Manager, and Google Cloud Secret Manager. +- Encryption: Secrets can be encrypted using a variety of encryption algorithms and protocols, such as AES, RSA, and PGP. Encrypted secrets can be stored in a variety of locations, such as a file system, a database, or a cloud storage service. +- Access controls: Access to secrets should be restricted to only those users or systems that need them, using techniques such as role-based access controls, multi-factor authentication, and least privilege principles. Effective secret management is essential for maintaining the security and integrity of a DevOps environment. It is important to regularly review and update secret management practices to ensure that secrets are being stored and managed securely. @@ -15,6 +15,3 @@ Visit the following resources to learn more: - [How to Manage Secrets in Web Applications?](https://cs.fyi/guide/secret-management-best-practices) - [Secrets management guide — approaches, open source tools, commercial products, challenges and questions](https://medium.com/@burshteyn/secrets-management-guide-approaches-open-source-tools-commercial-products-challenges-db560fd0584d) - [Secret Management Architectures: Finding the balance between security and complexity](https://medium.com/slalom-technology/secret-management-architectures-finding-the-balance-between-security-and-complexity-9e56f2078e54) - - - diff --git a/src/data/roadmaps/devops/content/105-infrastructure-as-code/index.md b/src/data/roadmaps/devops/content/105-infrastructure-as-code/index.md index 3d07a96c2..138409cfa 100644 --- a/src/data/roadmaps/devops/content/105-infrastructure-as-code/index.md +++ b/src/data/roadmaps/devops/content/105-infrastructure-as-code/index.md @@ -2,7 +2,7 @@ Sometimes referred to as IaC, this section refers to the techniques and tools used to define infrastructure, typically in a markup language like YAML or JSON. Infrastructure as code allows DevOps Engineers to use the same workflows used by software developers to version, roll back, and otherwise manage changes. -The term Infrastructure as Code encompasses everything from bootstrapping to configuration to orchestration, and it is considered a best practice in the industry to manage all infrastructure as code. This technique precipitated the explosion in system complexity seen in modern DevOps organizations. +The term Infrastructure as Code encompasses everything from bootstrapping to configuration to orchestration, and it is considered a best practice in the industry to manage all infrastructure as code. This technique precipitated the explosion in system complexity seen in modern DevOps organizations. Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/106-ci-cd/100-gitlab-ci.md b/src/data/roadmaps/devops/content/106-ci-cd/100-gitlab-ci.md index 03ab37712..6e5f5b405 100644 --- a/src/data/roadmaps/devops/content/106-ci-cd/100-gitlab-ci.md +++ b/src/data/roadmaps/devops/content/106-ci-cd/100-gitlab-ci.md @@ -2,7 +2,6 @@ GitLab offers a CI/CD service that can be used as a SaaS offering or self-managed using your own resources. You can use GitLab CI with any GitLab hosted repository, or any BitBucket Cloud or GitHub repository in the GitLab Premium self-managed, GitLab Premium SaaS and higher tiers. - Visit the following resources to learn more: - [GitLab Website](https://gitlab.com/) diff --git a/src/data/roadmaps/devops/content/107-monitoring/100-infrastructure-monitoring/102-datadog.md b/src/data/roadmaps/devops/content/107-monitoring/100-infrastructure-monitoring/102-datadog.md index 549d2dba0..0ab8b6275 100644 --- a/src/data/roadmaps/devops/content/107-monitoring/100-infrastructure-monitoring/102-datadog.md +++ b/src/data/roadmaps/devops/content/107-monitoring/100-infrastructure-monitoring/102-datadog.md @@ -1,6 +1,6 @@ # Datadog -Datadog is a monitoring and analytics platform for large-scale applications. It encompasses infrastructure monitoring, application performance monitoring, log management, and user-experience monitoring. Datadog aggregates data across your entire stack with 400+ integrations for troubleshooting, alerting, and graphing. +Datadog is a monitoring and analytics platform for large-scale applications. It encompasses infrastructure monitoring, application performance monitoring, log management, and user-experience monitoring. Datadog aggregates data across your entire stack with 400+ integrations for troubleshooting, alerting, and graphing. Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/107-monitoring/100-infrastructure-monitoring/index.md b/src/data/roadmaps/devops/content/107-monitoring/100-infrastructure-monitoring/index.md index 228c79f49..4e5d90b81 100644 --- a/src/data/roadmaps/devops/content/107-monitoring/100-infrastructure-monitoring/index.md +++ b/src/data/roadmaps/devops/content/107-monitoring/100-infrastructure-monitoring/index.md @@ -1,6 +1,6 @@ # Infrastructure Monitoring -Monitoring refers to the practice of making the performance and status of infrastructure visible. This section contains common tools used for monitoring. +Monitoring refers to the practice of making the performance and status of infrastructure visible. This section contains common tools used for monitoring. This is a very vendor-heavy space - use caution when studying materials exclusively from a given product or project, as there are many conflicting opinions and strategies in use. There is no single solution for the most substantially complex internet-facing applications, so understanding the pros and cons of these tools will be useful in helping you plan how to monitor a system for a given goal. diff --git a/src/data/roadmaps/devops/content/107-monitoring/101-application-monitoring/101-new-relic.md b/src/data/roadmaps/devops/content/107-monitoring/101-application-monitoring/101-new-relic.md index af3784d97..0accabc0c 100644 --- a/src/data/roadmaps/devops/content/107-monitoring/101-application-monitoring/101-new-relic.md +++ b/src/data/roadmaps/devops/content/107-monitoring/101-application-monitoring/101-new-relic.md @@ -1,6 +1,6 @@ # New Relic -New Relic is where dev, ops, security and business teams solve software–performance problems with data. +New Relic is where dev, ops, security and business teams solve software–performance problems with data. Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/107-monitoring/101-application-monitoring/index.md b/src/data/roadmaps/devops/content/107-monitoring/101-application-monitoring/index.md index ca8523164..2347036bb 100644 --- a/src/data/roadmaps/devops/content/107-monitoring/101-application-monitoring/index.md +++ b/src/data/roadmaps/devops/content/107-monitoring/101-application-monitoring/index.md @@ -1,6 +1,6 @@ # Application Monitoring -Application monitoring refers to the practice of making the status and performance of a given *application* visible. This may include details such as stacktraces, error logs, and the line of code implicated in a given failure. When combined with Infrastructure monitoring, this can provide a complete picture of what is happening in your system, and why. +Application monitoring refers to the practice of making the status and performance of a given _application_ visible. This may include details such as stacktraces, error logs, and the line of code implicated in a given failure. When combined with Infrastructure monitoring, this can provide a complete picture of what is happening in your system, and why. Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/107-monitoring/102-logs-management/100-elastic-stack.md b/src/data/roadmaps/devops/content/107-monitoring/102-logs-management/100-elastic-stack.md index 0537c8ca1..c92f06a34 100644 --- a/src/data/roadmaps/devops/content/107-monitoring/102-logs-management/100-elastic-stack.md +++ b/src/data/roadmaps/devops/content/107-monitoring/102-logs-management/100-elastic-stack.md @@ -2,9 +2,9 @@ Elastic Stack is a group of open source products comprised of Elasticsearch, Kibana, Beats, and Logstash and more that help store, search, analyze, and visualize data from various source, in different format, in real-time. -* `Elastic Search` - Search and analytics engine -* `Logstash/fluentd` - Data processing pipeline -* `Kibana` - Dashboard to visualize data +- `Elastic Search` - Search and analytics engine +- `Logstash/fluentd` - Data processing pipeline +- `Kibana` - Dashboard to visualize data Visit the following resources to learn more: diff --git a/src/data/roadmaps/devops/content/111-design-and-implementation.md b/src/data/roadmaps/devops/content/111-design-and-implementation.md index ab8915e98..056d2f33c 100644 --- a/src/data/roadmaps/devops/content/111-design-and-implementation.md +++ b/src/data/roadmaps/devops/content/111-design-and-implementation.md @@ -2,7 +2,6 @@ Good design encompasses factors such as consistency and coherence in component design and deployment, maintainability to simplify administration and development, and reusability to allow components and subsystems to be used in other applications and in other scenarios. Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services. - Visit the following resources to learn more: - [Design and implementation patterns](https://docs.microsoft.com/en-us/azure/architecture/patterns/category/design-implementation) diff --git a/src/data/roadmaps/devops/content/112-management-and-monitoring.md b/src/data/roadmaps/devops/content/112-management-and-monitoring.md index 427b6cae5..9570fc49a 100644 --- a/src/data/roadmaps/devops/content/112-management-and-monitoring.md +++ b/src/data/roadmaps/devops/content/112-management-and-monitoring.md @@ -4,4 +4,4 @@ DevOps management and monitoring entails overseeing the entire development proce Visit the following resources to learn more: -- [Management and Monitoring Get Started Guide](https://www.atlassian.com/devops/devops-tools/devops-monitoring) \ No newline at end of file +- [Management and Monitoring Get Started Guide](https://www.atlassian.com/devops/devops-tools/devops-monitoring) diff --git a/src/data/roadmaps/devops/devops.md b/src/data/roadmaps/devops/devops.md index 6c27a4ff4..c5aca02f4 100644 --- a/src/data/roadmaps/devops/devops.md +++ b/src/data/roadmaps/devops/devops.md @@ -1,66 +1,65 @@ --- -jsonUrl: "/jsons/roadmaps/devops.json" -pdfUrl: "/pdfs/roadmaps/devops.pdf" +jsonUrl: '/jsons/roadmaps/devops.json' +pdfUrl: '/pdfs/roadmaps/devops.pdf' order: 3 -briefTitle: "DevOps" -briefDescription: "Step by step guide for DevOps or operations role in 2023" -title: "DevOps Roadmap" -description: "Step by step guide for DevOps, SRE or any other Operations Role in 2023" +briefTitle: 'DevOps' +briefDescription: 'Step by step guide for DevOps or operations role in 2023' +title: 'DevOps Roadmap' +description: 'Step by step guide for DevOps, SRE or any other Operations Role in 2023' hasTopics: true -tnsBannerLink: "https://thenewstack.io?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert" +tnsBannerLink: 'https://thenewstack.io?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert' dimensions: width: 968 height: 2527.46 sponsor: - url: "https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account" - title: "Featured Product" - imageUrl: "https://i.imgur.com/e5fdI0q.png" - description: "Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!" + url: 'https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account' + title: 'Featured Product' + imageUrl: 'https://i.imgur.com/e5fdI0q.png' + description: 'Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!' event: - category: "SponsorClick" - action: "Ambassador Redirect" - label: "DevOps / Ambassador Link" + category: 'SponsorClick' + action: 'Ambassador Redirect' + label: 'DevOps / Ambassador Link' schema: - headline: "DevOps Roadmap" - description: "Learn to become a DevOps, SRE or get any other operations role with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/devops.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'DevOps Roadmap' + description: 'Learn to become a DevOps, SRE or get any other operations role with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/devops.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "DevOps Roadmap: Learn to become a DevOps Engineer or SRE" - description: "Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap." + title: 'DevOps Roadmap: Learn to become a DevOps Engineer or SRE' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "devops roadmap 2023" - - "sre roadmap 2023" - - "operations roadmap 2023" - - "guide to becoming a devops engineer" - - "devops roadmap" - - "sre roadmap" - - "site reliability engineer roadmap" - - "operations roles" - - "become devops" - - "devops skills" - - "modern devops skills" - - "devops skills test" - - "skills for devops" - - "learn devops" - - "what is devops" - - "what is sre" - - "devops quiz" - - "devops interview questions" + - 'devops roadmap 2023' + - 'sre roadmap 2023' + - 'operations roadmap 2023' + - 'guide to becoming a devops engineer' + - 'devops roadmap' + - 'sre roadmap' + - 'site reliability engineer roadmap' + - 'operations roles' + - 'become devops' + - 'devops skills' + - 'modern devops skills' + - 'devops skills test' + - 'skills for devops' + - 'learn devops' + - 'what is devops' + - 'what is sre' + - 'devops quiz' + - 'devops interview questions' relatedRoadmaps: - - "backend" - - "python" - - "java" - - "golang" - - "javascript" - - "nodejs" + - 'backend' + - 'python' + - 'java' + - 'golang' + - 'javascript' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- - diff --git a/src/data/roadmaps/flutter/content/100-dart-basics/100-dart-pad.md b/src/data/roadmaps/flutter/content/100-dart-basics/100-dart-pad.md index 736f7c6dd..011117bc0 100644 --- a/src/data/roadmaps/flutter/content/100-dart-basics/100-dart-pad.md +++ b/src/data/roadmaps/flutter/content/100-dart-basics/100-dart-pad.md @@ -5,4 +5,4 @@ DartPad is an online tool that allows developers to write and run Dart code snip Visit the following resources to learn more: - [DartPad](https://dart.dev/tools/dartpad) -- [DartPad in Tutorials](https://dart.dev/resources/dartpad-best-practices) \ No newline at end of file +- [DartPad in Tutorials](https://dart.dev/resources/dartpad-best-practices) diff --git a/src/data/roadmaps/flutter/content/100-dart-basics/101-variables.md b/src/data/roadmaps/flutter/content/100-dart-basics/101-variables.md index 6588ad490..73bcd0014 100644 --- a/src/data/roadmaps/flutter/content/100-dart-basics/101-variables.md +++ b/src/data/roadmaps/flutter/content/100-dart-basics/101-variables.md @@ -1,13 +1,13 @@ # Variables -In Flutter, variables are used to store values. There are two types of variables in Flutter: +In Flutter, variables are used to store values. There are two types of variables in Flutter: - local variables: These are declared within a function and are only accessible within that function -- Instance variables: They are declared within a class and are accessible throughout the entire class. +- Instance variables: They are declared within a class and are accessible throughout the entire class. Variables in Flutter can store values of different data types, such as numbers, strings, booleans, and more. Visit the following resources to learn more: - [Variables](https://dart.dev/guides/language/language-tour#variables) -- [Dart - Variables](https://howtoflutter.dev/dart/variables/) \ No newline at end of file +- [Dart - Variables](https://howtoflutter.dev/dart/variables/) diff --git a/src/data/roadmaps/flutter/content/100-dart-basics/102-built-in-types.md b/src/data/roadmaps/flutter/content/100-dart-basics/102-built-in-types.md index 4e7cf6e1e..04a96062f 100644 --- a/src/data/roadmaps/flutter/content/100-dart-basics/102-built-in-types.md +++ b/src/data/roadmaps/flutter/content/100-dart-basics/102-built-in-types.md @@ -14,4 +14,4 @@ Additionally, there are other complex data types like dynamic, var, and Object i Visit the following resources to learn more: - [Built-in types](https://dart.dev/guides/language/language-tour#built-in-types) -- [Overview of Built-in Types](https://dart.dev/guides/language/coming-from/js-to-dart#built-in-types) \ No newline at end of file +- [Overview of Built-in Types](https://dart.dev/guides/language/coming-from/js-to-dart#built-in-types) diff --git a/src/data/roadmaps/flutter/content/100-dart-basics/103-functions.md b/src/data/roadmaps/flutter/content/100-dart-basics/103-functions.md index 9221abd8e..3365e4acb 100644 --- a/src/data/roadmaps/flutter/content/100-dart-basics/103-functions.md +++ b/src/data/roadmaps/flutter/content/100-dart-basics/103-functions.md @@ -1,8 +1,8 @@ # Functions -Dart is a true object-oriented language, so even functions are objects and have a type, Function. This means that functions can be assigned to variables or passed as arguments to other functions. You can also call an instance of a Dart class as if it were a function. +Dart is a true object-oriented language, so even functions are objects and have a type, Function. This means that functions can be assigned to variables or passed as arguments to other functions. You can also call an instance of a Dart class as if it were a function. Visit the following resources to learn more: - [Functions](https://dart.dev/guides/language/language-tour#functions) -- [Dart Function](https://www.javatpoint.com/dart-function) \ No newline at end of file +- [Dart Function](https://www.javatpoint.com/dart-function) diff --git a/src/data/roadmaps/flutter/content/100-dart-basics/104-operators.md b/src/data/roadmaps/flutter/content/100-dart-basics/104-operators.md index c0979e0b2..322cfc08f 100644 --- a/src/data/roadmaps/flutter/content/100-dart-basics/104-operators.md +++ b/src/data/roadmaps/flutter/content/100-dart-basics/104-operators.md @@ -2,14 +2,14 @@ Operators are symbols or keywords used to perform operations on values. There are several types of operators available in Flutter: -- Arithmetic operators: used to perform mathematical operations like addition (+), subtraction (-), multiplication (*), division (/), and more. +- Arithmetic operators: used to perform mathematical operations like addition (+), subtraction (-), multiplication (\*), division (/), and more. - Relational operators: used to compare values and return a boolean result (==, !=, >, <, >=, <=). - Logical operators: used to perform logical operations like AND (&&), OR (||), and NOT (!). -- Assignment operators: used to assign values to variables (=, +=, -=, *=, /=, %=). +- Assignment operators: used to assign values to variables (=, +=, -=, \*=, /=, %=). - Ternary operator: a shorthand way of writing simple if-else statements (condition ? if_true : if_false). These operators can be used to perform operations on values, variables, and expressions in Flutter. Visit the following resources to learn more: -- [Operators](https://dart.dev/guides/language/language-tour#operators) \ No newline at end of file +- [Operators](https://dart.dev/guides/language/language-tour#operators) diff --git a/src/data/roadmaps/flutter/content/100-dart-basics/105-control-flow-statements.md b/src/data/roadmaps/flutter/content/100-dart-basics/105-control-flow-statements.md index 0a92b58f6..cac343337 100644 --- a/src/data/roadmaps/flutter/content/100-dart-basics/105-control-flow-statements.md +++ b/src/data/roadmaps/flutter/content/100-dart-basics/105-control-flow-statements.md @@ -15,4 +15,4 @@ These control flow statements can be used to create complex logic and control th Visit the following resources to learn more: - [Control flow statements](https://dart.dev/guides/language/language-tour#control-flow-statements) -- [Dart Control Flow Statements](https://www.w3adda.com/dart-tutorial/dart-control-flow-statements) \ No newline at end of file +- [Dart Control Flow Statements](https://www.w3adda.com/dart-tutorial/dart-control-flow-statements) diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/100-flutter-cli.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/100-flutter-cli.md index 78e7e95d2..8d601eb26 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/100-flutter-cli.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/100-flutter-cli.md @@ -13,4 +13,4 @@ Visit the following resources to learn more: - [The Flutter command-line tool](https://docs.flutter.dev/reference/flutter-cli) - [CLI Packages in Flutter](https://dart.dev/server/libraries#command-line-packages) -- [Get started with Flutter CLI](https://dart.dev/tutorials/server/get-started) \ No newline at end of file +- [Get started with Flutter CLI](https://dart.dev/tutorials/server/get-started) diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/100-vs-code.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/100-vs-code.md index 9e72a04ac..37dfe0636 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/100-vs-code.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/100-vs-code.md @@ -4,13 +4,13 @@ To use VS Code for Flutter development, you must install the Flutter and Dart pl Here are the steps to set up VS Code for Flutter development: -* Install VS Code from the official website: https://code.visualstudio.com/ -* Open VS Code and click the Extensions icon on the left-hand side of the window. -* In the search box, type "Flutter" and press Enter. This will display a list of Flutter-related plugins. -* Install the "Flutter" and "Dart" plugins by clicking the Install button next to each one. -* Once the plugins are installed, you will need to restart VS Code for the changes to take effect. -* To create a new Flutter project, click the File menu, then select New > New Project. This will open the New Project dialog box. -* Select the Flutter application template, enter the project's name and location and click Create. This will create a new Flutter project in the specified location. -* To run the project, open the command palette (Ctrl + Shift + P on Windows or Cmd + Shift + P on Mac) and type "flutter run". This will run the project on the default emulator or device. +- Install VS Code from the official website: https://code.visualstudio.com/ +- Open VS Code and click the Extensions icon on the left-hand side of the window. +- In the search box, type "Flutter" and press Enter. This will display a list of Flutter-related plugins. +- Install the "Flutter" and "Dart" plugins by clicking the Install button next to each one. +- Once the plugins are installed, you will need to restart VS Code for the changes to take effect. +- To create a new Flutter project, click the File menu, then select New > New Project. This will open the New Project dialog box. +- Select the Flutter application template, enter the project's name and location and click Create. This will create a new Flutter project in the specified location. +- To run the project, open the command palette (Ctrl + Shift + P on Windows or Cmd + Shift + P on Mac) and type "flutter run". This will run the project on the default emulator or device. That's it! You should now be able to use VS Code for Flutter development. diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/101-android-studio.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/101-android-studio.md index acced712c..c9fd671ec 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/101-android-studio.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/101-android-studio.md @@ -14,4 +14,4 @@ Learn more from the following links: - [Android Studio Setup for Flutter Development](https://www.geeksforgeeks.org/android-studio-setup-for-flutter-development/) - [Android Studio for Flutter](https://docs.flutter.dev/development/tools/android-studio) -- [Get started with Android Studio](https://dart.dev/tools/jetbrains-plugin) \ No newline at end of file +- [Get started with Android Studio](https://dart.dev/tools/jetbrains-plugin) diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/102-intellij-idea.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/102-intellij-idea.md index cfb0ecf16..12977e424 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/102-intellij-idea.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/102-intellij-idea.md @@ -1,9 +1,7 @@ # IntelliJ IDEA - - Learn more from the following: - [IntelliJ IDEA for Flutter](https://docs.flutter.dev/development/tools/android-studio) - [Get started with IntelliJ](https://dart.dev/tools/jetbrains-plugin) -- [IntelliJ IDEA](https://www.jetbrains.com/idea/) \ No newline at end of file +- [IntelliJ IDEA](https://www.jetbrains.com/idea/) diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/index.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/index.md index 90d765bb6..60d9bb263 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/index.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/index.md @@ -13,4 +13,4 @@ Learn more from the following links: - [Setting up and Editor](https://docs.flutter.dev/get-started/editor) - [Android Studio and IntelliJ](https://docs.flutter.dev/development/tools/android-studio) -- [IDEs and editors for Flutter](https://dart.dev/tools#ides-and-editors) \ No newline at end of file +- [IDEs and editors for Flutter](https://dart.dev/tools#ides-and-editors) diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md index c56f8591a..a5251b1e3 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md @@ -1,2 +1 @@ # FVM (Flutter Version Manager) - diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/index.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/index.md index 98d3d711b..58ff6ed20 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/index.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/index.md @@ -13,4 +13,4 @@ Once you have installed all the required software, you can create a new Flutter Learn more from the following links: - [Get started with Flutter](https://docs.flutter.dev/get-started/install) -- [Installing Dart SDK](https://dart.dev/get-dart) \ No newline at end of file +- [Installing Dart SDK](https://dart.dev/get-dart) diff --git a/src/data/roadmaps/flutter/content/102-widgets/100-stateless-widgets.md b/src/data/roadmaps/flutter/content/102-widgets/100-stateless-widgets.md index 6223f9a45..3bffa1d84 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/100-stateless-widgets.md +++ b/src/data/roadmaps/flutter/content/102-widgets/100-stateless-widgets.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [StatelessWidget class](https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html) - [Flutter – Stateful vs Stateless Widgets](https://www.geeksforgeeks.org/flutter-stateful-vs-stateless-widgets/) -- [How to Create Stateless Widgets](https://medium.com/flutter/how-to-create-stateless-widgets-6f33931d859) \ No newline at end of file +- [How to Create Stateless Widgets](https://medium.com/flutter/how-to-create-stateless-widgets-6f33931d859) diff --git a/src/data/roadmaps/flutter/content/102-widgets/101-stateful-widgets.md b/src/data/roadmaps/flutter/content/102-widgets/101-stateful-widgets.md index 5e46ac496..27867bd3c 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/101-stateful-widgets.md +++ b/src/data/roadmaps/flutter/content/102-widgets/101-stateful-widgets.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [StatefulWidget class](https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html) - [Flutter – Stateful vs Stateless Widgets](https://www.geeksforgeeks.org/flutter-stateful-vs-stateless-widgets/) -- [Flutter Tutorial - Stateful Widgets](https://www.youtube.com/watch?v=p5dkB3Mrxdo) \ No newline at end of file +- [Flutter Tutorial - Stateful Widgets](https://www.youtube.com/watch?v=p5dkB3Mrxdo) diff --git a/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/100-material-widgets.md b/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/100-material-widgets.md index 6c66e0bc8..efb729911 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/100-material-widgets.md +++ b/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/100-material-widgets.md @@ -18,4 +18,4 @@ Visit the following resources to learn more: - [Material Components widgets](https://docs.flutter.dev/development/ui/widgets/material) - [Flutter – Material Design](https://www.geeksforgeeks.org/flutter-material-design/) - [Widget catalog in Flutter](https://docs.flutter.dev/development/ui/widgets) -- [Material Designs Guidlines](https://m2.material.io/design/guidelines-overview) \ No newline at end of file +- [Material Designs Guidlines](https://m2.material.io/design/guidelines-overview) diff --git a/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/101-cupertino-widgets.md b/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/101-cupertino-widgets.md index c1df00cc2..2db8321ec 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/101-cupertino-widgets.md +++ b/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/101-cupertino-widgets.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Cupertino (iOS-style) widgets](https://docs.flutter.dev/development/ui/widgets/cupertino) - [Flutter Cupertino Tutorial](https://blog.logrocket.com/flutter-cupertino-tutorial-build-ios-apps-native/) -- [Flutter Cupertino Widgets](https://www.youtube.com/watch?v=L-TY_5NZ7z4) \ No newline at end of file +- [Flutter Cupertino Widgets](https://www.youtube.com/watch?v=L-TY_5NZ7z4) diff --git a/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/index.md b/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/index.md index 347bd7d18..664ca4ad5 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/index.md +++ b/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/index.md @@ -10,4 +10,4 @@ Styled Widgets are Flutter widgets that are decorated with custom styles, such a Learn more from the following links: - [Styling widgets in Flutter](https://docs.flutter.dev/development/ui/widgets/styling) -- [Style Your Flutter Widgets](https://www.youtube.com/watch?v=kcq8AbVyMbk) \ No newline at end of file +- [Style Your Flutter Widgets](https://www.youtube.com/watch?v=kcq8AbVyMbk) diff --git a/src/data/roadmaps/flutter/content/102-widgets/103-inherited-widgets.md b/src/data/roadmaps/flutter/content/102-widgets/103-inherited-widgets.md index 6f03652ab..719f5f88e 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/103-inherited-widgets.md +++ b/src/data/roadmaps/flutter/content/102-widgets/103-inherited-widgets.md @@ -1 +1 @@ -# Inherited Widgets \ No newline at end of file +# Inherited Widgets diff --git a/src/data/roadmaps/flutter/content/102-widgets/104-responsive-widgets.md b/src/data/roadmaps/flutter/content/102-widgets/104-responsive-widgets.md index ecd58bca3..d5f2e69f5 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/104-responsive-widgets.md +++ b/src/data/roadmaps/flutter/content/102-widgets/104-responsive-widgets.md @@ -1 +1 @@ -# Responsive Widgets \ No newline at end of file +# Responsive Widgets diff --git a/src/data/roadmaps/flutter/content/102-widgets/index.md b/src/data/roadmaps/flutter/content/102-widgets/index.md index e9eb1d85c..595e1107e 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/index.md +++ b/src/data/roadmaps/flutter/content/102-widgets/index.md @@ -18,4 +18,4 @@ Visit the following resources to learn more: - [Introduction to widgets](https://docs.flutter.dev/development/ui/widgets-intro) - [Widget catalog](https://docs.flutter.dev/development/ui/widgets) -- [Flutter Widgets Explained](https://www.youtube.com/watch?v=FU2Eeizo95o) \ No newline at end of file +- [Flutter Widgets Explained](https://www.youtube.com/watch?v=FU2Eeizo95o) diff --git a/src/data/roadmaps/flutter/content/103-working-with-assets/100-fonts.md b/src/data/roadmaps/flutter/content/103-working-with-assets/100-fonts.md index 51729791a..6ec465b29 100644 --- a/src/data/roadmaps/flutter/content/103-working-with-assets/100-fonts.md +++ b/src/data/roadmaps/flutter/content/103-working-with-assets/100-fonts.md @@ -10,4 +10,4 @@ You can use custom fonts in your app by including the font file in your app's as Visit the following resources to learn more: - [Font - Flutter](https://docs.flutter.dev/cookbook/design/fonts) -- [How to use custom fonts in Flutter](https://blog.logrocket.com/use-custom-fonts-flutter/) \ No newline at end of file +- [How to use custom fonts in Flutter](https://blog.logrocket.com/use-custom-fonts-flutter/) diff --git a/src/data/roadmaps/flutter/content/103-working-with-assets/101-images.md b/src/data/roadmaps/flutter/content/103-working-with-assets/101-images.md index d9446124b..ab31a2122 100644 --- a/src/data/roadmaps/flutter/content/103-working-with-assets/101-images.md +++ b/src/data/roadmaps/flutter/content/103-working-with-assets/101-images.md @@ -11,4 +11,4 @@ The `Image` widget also accepts additional parameters such as `fit`, `width`, an Visit the following resources to learn more: - [Adding assets and images](https://docs.flutter.dev/development/ui/assets-and-images) -- [Images in Flutter](https://docs.flutter.dev/cookbook/images) \ No newline at end of file +- [Images in Flutter](https://docs.flutter.dev/cookbook/images) diff --git a/src/data/roadmaps/flutter/content/103-working-with-assets/102-other-file-types.md b/src/data/roadmaps/flutter/content/103-working-with-assets/102-other-file-types.md index 71aff4eb7..47c44d917 100644 --- a/src/data/roadmaps/flutter/content/103-working-with-assets/102-other-file-types.md +++ b/src/data/roadmaps/flutter/content/103-working-with-assets/102-other-file-types.md @@ -4,10 +4,10 @@ In Flutter, you can work with different file types besides images. Some common f 1. Text files: You can read or write text files using the dart:io library. 2. JSON files: You can parse JSON data using the dart:convert library. -javascript + javascript 3. Audio and Video files: You can play audio and video files using the video_player and audioplayers packages. 4. PDF files: You can display PDF files using the pdf package. Learn more from the following links: -- [File class](https://docs.flutter.dev/cookbook/lists/mixed-list) \ No newline at end of file +- [File class](https://docs.flutter.dev/cookbook/lists/mixed-list) diff --git a/src/data/roadmaps/flutter/content/103-working-with-assets/index.md b/src/data/roadmaps/flutter/content/103-working-with-assets/index.md index bb9747b76..c0c5d06ee 100644 --- a/src/data/roadmaps/flutter/content/103-working-with-assets/index.md +++ b/src/data/roadmaps/flutter/content/103-working-with-assets/index.md @@ -12,4 +12,4 @@ The `pubspec.yaml` file is used to manage dependencies, assets, and other settin Learn more from the following links: - [Flutter Tutorial - Assets](https://www.youtube.com/watch?v=Hxh6nNHSUjo) -- [Adding Assets in Flutter](https://docs.flutter.dev/development/ui/assets-and-images) \ No newline at end of file +- [Adding Assets in Flutter](https://docs.flutter.dev/development/ui/assets-and-images) diff --git a/src/data/roadmaps/flutter/content/105-repo-hosting-services/100-github.md b/src/data/roadmaps/flutter/content/105-repo-hosting-services/100-github.md index 4ef9bd37b..2cf4d7e36 100644 --- a/src/data/roadmaps/flutter/content/105-repo-hosting-services/100-github.md +++ b/src/data/roadmaps/flutter/content/105-repo-hosting-services/100-github.md @@ -16,4 +16,4 @@ Learn more from the following resources: - [Git and GitHub for Beginners - Crash Course](https://www.youtube.com/watch?v=RGOj5yH7evk) - [Get Started with Github](https://docs.github.com/en) -- [GitHub Tutorial – for Beginners](https://www.freecodecamp.org/news/git-and-github-for-beginners/) \ No newline at end of file +- [GitHub Tutorial – for Beginners](https://www.freecodecamp.org/news/git-and-github-for-beginners/) diff --git a/src/data/roadmaps/flutter/content/105-repo-hosting-services/index.md b/src/data/roadmaps/flutter/content/105-repo-hosting-services/index.md index 0928ef765..817547440 100644 --- a/src/data/roadmaps/flutter/content/105-repo-hosting-services/index.md +++ b/src/data/roadmaps/flutter/content/105-repo-hosting-services/index.md @@ -14,4 +14,4 @@ Learn more from the following links: - [Host Flutter Website On GitHub Pages](https://www.youtube.com/watch?v=z-yOqoQ2q6s) - [How to Deploy a Flutter Web App?](https://medium.com/solute-labs/flutter-for-web-how-to-deploy-a-flutter-web-app-c7d9db7ced2e) -- [Deploying - Flutter](https://docs.flutter.dev/deployment/web#deploying-to-the-web) \ No newline at end of file +- [Deploying - Flutter](https://docs.flutter.dev/deployment/web#deploying-to-the-web) diff --git a/src/data/roadmaps/flutter/content/106-design-principles/100-dependency-injection.md b/src/data/roadmaps/flutter/content/106-design-principles/100-dependency-injection.md index 149acdae5..7bb4ee7db 100644 --- a/src/data/roadmaps/flutter/content/106-design-principles/100-dependency-injection.md +++ b/src/data/roadmaps/flutter/content/106-design-principles/100-dependency-injection.md @@ -9,8 +9,7 @@ Here's how to use dependency injection in Flutter: - Use the provider in your widget tree - Access the dependency in a widget - Learn more from the following links: - [Dependency Injection In Flutter](https://medium.com/flutter-community/dependency-injection-in-flutter-f19fb66a0740) -- [Flutter Dependency Injection For Beginners](https://www.youtube.com/watch?v=vBT-FhgMaWM) \ No newline at end of file +- [Flutter Dependency Injection For Beginners](https://www.youtube.com/watch?v=vBT-FhgMaWM) diff --git a/src/data/roadmaps/flutter/content/106-design-principles/101-design-patterns.md b/src/data/roadmaps/flutter/content/106-design-principles/101-design-patterns.md index e2ebd6da8..fb1d2d282 100644 --- a/src/data/roadmaps/flutter/content/106-design-principles/101-design-patterns.md +++ b/src/data/roadmaps/flutter/content/106-design-principles/101-design-patterns.md @@ -17,4 +17,4 @@ Learn more from the following links: - [Flutter - Design](https://dart.dev/guides/language/effective-dart/design) - [Design Patterns Explained in 10 Minutes](https://www.youtube.com/watch?v=tv-_1er1mWI) -- [Cookbook Designs in Flutter](https://docs.flutter.dev/cookbook/design) \ No newline at end of file +- [Cookbook Designs in Flutter](https://docs.flutter.dev/cookbook/design) diff --git a/src/data/roadmaps/flutter/content/106-design-principles/102-solid-principles.md b/src/data/roadmaps/flutter/content/106-design-principles/102-solid-principles.md index b20e71b69..d943a1369 100644 --- a/src/data/roadmaps/flutter/content/106-design-principles/102-solid-principles.md +++ b/src/data/roadmaps/flutter/content/106-design-principles/102-solid-principles.md @@ -1,8 +1,6 @@ # SOLID Principles - - Learn more from the following links: - [S.O.L.I.D Principles](https://www.youtube.com/watch?v=fvNTJang7l4) -- [Overview of S.O.L.I.D Principles In Dart](https://medium.flutterdevs.com/s-o-l-i-d-principles-in-dart-e6c0c8d1f8f1) \ No newline at end of file +- [Overview of S.O.L.I.D Principles In Dart](https://medium.flutterdevs.com/s-o-l-i-d-principles-in-dart-e6c0c8d1f8f1) diff --git a/src/data/roadmaps/flutter/content/106-design-principles/103-oop.md b/src/data/roadmaps/flutter/content/106-design-principles/103-oop.md index bfae6a6ef..29fa638dd 100644 --- a/src/data/roadmaps/flutter/content/106-design-principles/103-oop.md +++ b/src/data/roadmaps/flutter/content/106-design-principles/103-oop.md @@ -5,4 +5,4 @@ Object-oriented programming (OOP) is a programming paradigm that is based on the Learn more from the following links: - [Discover Object Oriented Programming](https://blog.hubspot.com/website/object-oriented-programming) -- [Software Development Tutorial - What is object-oriented language?s](https://www.youtube.com/watch?app=desktop&v=SS-9y0H3Si8) \ No newline at end of file +- [Software Development Tutorial - What is object-oriented language?s](https://www.youtube.com/watch?app=desktop&v=SS-9y0H3Si8) diff --git a/src/data/roadmaps/flutter/content/106-design-principles/index.md b/src/data/roadmaps/flutter/content/106-design-principles/index.md index 215e4bf3a..cfda230f9 100644 --- a/src/data/roadmaps/flutter/content/106-design-principles/index.md +++ b/src/data/roadmaps/flutter/content/106-design-principles/index.md @@ -14,4 +14,4 @@ By following these design principles, you can create a user-friendly and visuall Learn more from the following: -- [Design - Principles](https://docs.flutter.dev/cookbook/design) \ No newline at end of file +- [Design - Principles](https://docs.flutter.dev/cookbook/design) diff --git a/src/data/roadmaps/flutter/content/107-package-manager/101-flutter-pub-dart-pub.md b/src/data/roadmaps/flutter/content/107-package-manager/101-flutter-pub-dart-pub.md index c80b66261..ae879595a 100644 --- a/src/data/roadmaps/flutter/content/107-package-manager/101-flutter-pub-dart-pub.md +++ b/src/data/roadmaps/flutter/content/107-package-manager/101-flutter-pub-dart-pub.md @@ -16,4 +16,4 @@ In Flutter projects, `pub` is used to manage both Dart packages and Flutter plug Learn more from the following links: -- [Overview of Dart pub](https://dart.dev/tools/pub/cmd) \ No newline at end of file +- [Overview of Dart pub](https://dart.dev/tools/pub/cmd) diff --git a/src/data/roadmaps/flutter/content/107-package-manager/index.md b/src/data/roadmaps/flutter/content/107-package-manager/index.md index 3e99399b6..45b79ed8a 100644 --- a/src/data/roadmaps/flutter/content/107-package-manager/index.md +++ b/src/data/roadmaps/flutter/content/107-package-manager/index.md @@ -5,4 +5,4 @@ The package manager for Flutter is called pub. It is used to manage Flutter proj Visit the following resources to learn more: - [Packages and Plugins](https://docs.flutter.dev/development/packages-and-plugins) -- [Dart Package Manager (pub.dev) in Flutter](https://www.youtube.com/watch?v=F1VRO0_MKLs) \ No newline at end of file +- [Dart Package Manager (pub.dev) in Flutter](https://www.youtube.com/watch?v=F1VRO0_MKLs) diff --git a/src/data/roadmaps/flutter/content/108-working-with-apis/100-json.md b/src/data/roadmaps/flutter/content/108-working-with-apis/100-json.md index a9a037ce4..fca7753fe 100644 --- a/src/data/roadmaps/flutter/content/108-working-with-apis/100-json.md +++ b/src/data/roadmaps/flutter/content/108-working-with-apis/100-json.md @@ -9,4 +9,4 @@ To encode a Dart object to a JSON string, you can use the `jsonEncode` function Visit the following resources to learn more: - [JSON and serialization](https://docs.flutter.dev/development/data-and-backend/json) -- [Using JSON](https://dart.dev/guides/json) \ No newline at end of file +- [Using JSON](https://dart.dev/guides/json) diff --git a/src/data/roadmaps/flutter/content/108-working-with-apis/101-web-sockets.md b/src/data/roadmaps/flutter/content/108-working-with-apis/101-web-sockets.md index 1b3a2484b..a05ffb4ec 100644 --- a/src/data/roadmaps/flutter/content/108-working-with-apis/101-web-sockets.md +++ b/src/data/roadmaps/flutter/content/108-working-with-apis/101-web-sockets.md @@ -5,4 +5,4 @@ In addition to normal HTTP requests, you can connect to servers using WebSockets Visit the following resources to learn more: - [Work with WebSockets](https://docs.flutter.dev/cookbook/networking/web-sockets) -- [What is WebSocket and How It Works?](https://www.wallarm.com/what/a-simple-explanation-of-what-a-websocket-is) \ No newline at end of file +- [What is WebSocket and How It Works?](https://www.wallarm.com/what/a-simple-explanation-of-what-a-websocket-is) diff --git a/src/data/roadmaps/flutter/content/108-working-with-apis/102-graphql.md b/src/data/roadmaps/flutter/content/108-working-with-apis/102-graphql.md index daa7c3a64..7b7170020 100644 --- a/src/data/roadmaps/flutter/content/108-working-with-apis/102-graphql.md +++ b/src/data/roadmaps/flutter/content/108-working-with-apis/102-graphql.md @@ -6,6 +6,6 @@ One of the main benefits of GraphQL is that it allows the client to request spec If you want to learn more about GraphQL, here are a few links to get you started: -[GraphQL official website](https://graphql.org/) - This is the official website for GraphQL, which provides an overview of the language, as well as documentation and resources for learning more. +[GraphQL official website](https://graphql.org/) - This is the official website for GraphQL, which provides an overview of the language, as well as documentation and resources for learning more. -[How to GraphQL](https://www.howtographql.com/) - This is a comprehensive tutorial that covers everything you need to know about GraphQL, including the basics of the language, how to set up a GraphQL server, and how to use GraphQL in a client application. +[How to GraphQL](https://www.howtographql.com/) - This is a comprehensive tutorial that covers everything you need to know about GraphQL, including the basics of the language, how to set up a GraphQL server, and how to use GraphQL in a client application. diff --git a/src/data/roadmaps/flutter/content/108-working-with-apis/index.md b/src/data/roadmaps/flutter/content/108-working-with-apis/index.md index 059b7a2cc..0b34ed653 100644 --- a/src/data/roadmaps/flutter/content/108-working-with-apis/index.md +++ b/src/data/roadmaps/flutter/content/108-working-with-apis/index.md @@ -7,4 +7,4 @@ The `http` library is a popular choice for making HTTP requests in Flutter, as i Learn more from the following resources: - [Using Google APIs](https://dart.dev/guides/google-apis) -- [How to work with APIs in Flutter?](https://www.youtube.com/watch?v=uVo7HDWDUEQ) \ No newline at end of file +- [How to work with APIs in Flutter?](https://www.youtube.com/watch?v=uVo7HDWDUEQ) diff --git a/src/data/roadmaps/flutter/content/109-storage/101-shared-preferences.md b/src/data/roadmaps/flutter/content/109-storage/101-shared-preferences.md index 05bcd5699..c1b10b9af 100644 --- a/src/data/roadmaps/flutter/content/109-storage/101-shared-preferences.md +++ b/src/data/roadmaps/flutter/content/109-storage/101-shared-preferences.md @@ -5,4 +5,4 @@ In Flutter, SharedPreferences is a plugin allowing you to store data in key-valu Visit the following resources to learn more: - [shared_preferences - pub.dev package](https://pub.dev/packages/shared_preferences) -- [How do I access Shared Preferences?](https://docs.flutter.dev/get-started/flutter-for/android-devs#how-do-i-access-shared-preferences) \ No newline at end of file +- [How do I access Shared Preferences?](https://docs.flutter.dev/get-started/flutter-for/android-devs#how-do-i-access-shared-preferences) diff --git a/src/data/roadmaps/flutter/content/109-storage/102-firebase/100-authentication.md b/src/data/roadmaps/flutter/content/109-storage/102-firebase/100-authentication.md index 44c721271..c5b6f0532 100644 --- a/src/data/roadmaps/flutter/content/109-storage/102-firebase/100-authentication.md +++ b/src/data/roadmaps/flutter/content/109-storage/102-firebase/100-authentication.md @@ -6,4 +6,4 @@ To integrate Firebase Authentication into your Flutter app, you need to first cr Learn more from the following links: -- [Make Authenticated requests](https://docs.flutter.dev/cookbook/networking/authenticated-requests) \ No newline at end of file +- [Make Authenticated requests](https://docs.flutter.dev/cookbook/networking/authenticated-requests) diff --git a/src/data/roadmaps/flutter/content/109-storage/102-firebase/101-storage.md b/src/data/roadmaps/flutter/content/109-storage/102-firebase/101-storage.md index da825d2ca..6b8a49c6a 100644 --- a/src/data/roadmaps/flutter/content/109-storage/102-firebase/101-storage.md +++ b/src/data/roadmaps/flutter/content/109-storage/102-firebase/101-storage.md @@ -6,4 +6,4 @@ To use Firebase Storage in your Flutter app, you need to first create a Firebase Learn more from the following: -- [How to Upload and Retrieve Images from Firebase Storage](https://www.youtube.com/watch?v=sM-WMcX66FI) \ No newline at end of file +- [How to Upload and Retrieve Images from Firebase Storage](https://www.youtube.com/watch?v=sM-WMcX66FI) diff --git a/src/data/roadmaps/flutter/content/109-storage/102-firebase/102-firestore.md b/src/data/roadmaps/flutter/content/109-storage/102-firebase/102-firestore.md index d61c7b90b..13d6a5577 100644 --- a/src/data/roadmaps/flutter/content/109-storage/102-firebase/102-firestore.md +++ b/src/data/roadmaps/flutter/content/109-storage/102-firebase/102-firestore.md @@ -4,4 +4,4 @@ Firebase Firestore is a cloud-based NoSQL document database service provided by Learn more from the following links: -- [Using Firestore - Flutter](https://www.youtube.com/watch?v=DqJ_KjFzL9I) \ No newline at end of file +- [Using Firestore - Flutter](https://www.youtube.com/watch?v=DqJ_KjFzL9I) diff --git a/src/data/roadmaps/flutter/content/109-storage/102-firebase/103-push-notifications.md b/src/data/roadmaps/flutter/content/109-storage/102-firebase/103-push-notifications.md index b56c3d295..5203b8fc5 100644 --- a/src/data/roadmaps/flutter/content/109-storage/102-firebase/103-push-notifications.md +++ b/src/data/roadmaps/flutter/content/109-storage/102-firebase/103-push-notifications.md @@ -10,4 +10,4 @@ To implement push notifications in Flutter using Firebase, follow these steps: Learn more from the following links: -- [How do I set up push notifications?](https://docs.flutter.dev/get-started/flutter-for/android-devs#how-do-i-set-up-push-notifications) \ No newline at end of file +- [How do I set up push notifications?](https://docs.flutter.dev/get-started/flutter-for/android-devs#how-do-i-set-up-push-notifications) diff --git a/src/data/roadmaps/flutter/content/109-storage/102-firebase/104-remote-config.md b/src/data/roadmaps/flutter/content/109-storage/102-firebase/104-remote-config.md index 5d7f5e2a2..d430504ae 100644 --- a/src/data/roadmaps/flutter/content/109-storage/102-firebase/104-remote-config.md +++ b/src/data/roadmaps/flutter/content/109-storage/102-firebase/104-remote-config.md @@ -15,4 +15,4 @@ You can use Remote Config to control the appearance of your app, change the beha Learn more from the following: -- [Firebase Remote Config](https://www.youtube.com/watch?v=34ExOdNEMXI) \ No newline at end of file +- [Firebase Remote Config](https://www.youtube.com/watch?v=34ExOdNEMXI) diff --git a/src/data/roadmaps/flutter/content/109-storage/102-firebase/105-cloud-functions.md b/src/data/roadmaps/flutter/content/109-storage/102-firebase/105-cloud-functions.md index 200717ecb..6a896ac3d 100644 --- a/src/data/roadmaps/flutter/content/109-storage/102-firebase/105-cloud-functions.md +++ b/src/data/roadmaps/flutter/content/109-storage/102-firebase/105-cloud-functions.md @@ -1 +1 @@ -# Firebase Cloud Functions \ No newline at end of file +# Firebase Cloud Functions diff --git a/src/data/roadmaps/flutter/content/109-storage/102-firebase/index.md b/src/data/roadmaps/flutter/content/109-storage/102-firebase/index.md index 0ef0ebd9a..072af7bf0 100644 --- a/src/data/roadmaps/flutter/content/109-storage/102-firebase/index.md +++ b/src/data/roadmaps/flutter/content/109-storage/102-firebase/index.md @@ -5,4 +5,4 @@ Firebase is a Backend-as-a-Service (BaaS) app development platform that provides Visit the following resources to learn more: - [Firebase](https://docs.flutter.dev/development/data-and-backend/firebase) -- [Flutter Firebase Tutorials](https://www.youtube.com/watch?v=agxDK0qmH88&list=PLFyjjoCMAPtxS6Cx1XSjCfxOxHQ4_e0sL) \ No newline at end of file +- [Flutter Firebase Tutorials](https://www.youtube.com/watch?v=agxDK0qmH88&list=PLFyjjoCMAPtxS6Cx1XSjCfxOxHQ4_e0sL) diff --git a/src/data/roadmaps/flutter/content/109-storage/index.md b/src/data/roadmaps/flutter/content/109-storage/index.md index b1ff6afd0..b8ec6dc36 100644 --- a/src/data/roadmaps/flutter/content/109-storage/index.md +++ b/src/data/roadmaps/flutter/content/109-storage/index.md @@ -12,4 +12,4 @@ All of these storage options are supported through third-party packages, which a Visit the following links to learn more: - [Storage - Flutter Tutorial](https://www.youtube.com/watch?v=UpKrhZ0Hppks) -- [Cloud Storage in Flutter](https://firebase.flutter.dev/docs/storage/overview/) \ No newline at end of file +- [Cloud Storage in Flutter](https://firebase.flutter.dev/docs/storage/overview/) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/100-core-libraries.md b/src/data/roadmaps/flutter/content/110-advanced-dart/100-core-libraries.md index e9f00faea..bcf367218 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/100-core-libraries.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/100-core-libraries.md @@ -5,4 +5,4 @@ Dart has a rich set of core libraries that provide essentials for many everyday Visit the following resources to learn more: - [Core libraries](https://dart.dev/guides/libraries) -- [Libraries](https://api.flutter.dev/) \ No newline at end of file +- [Libraries](https://api.flutter.dev/) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/101-lists.md b/src/data/roadmaps/flutter/content/110-advanced-dart/101-lists.md index cccfc3a33..d0b84ccaf 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/101-lists.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/101-lists.md @@ -13,4 +13,4 @@ These widgets allow you to display items in a scrolling list, a grid, or a combi Learn more from the following: - [List Class](https://api.flutter.dev/flutter/dart-core/List-class.html) -- [Dart Programming – List](https://www.geeksforgeeks.org/dart-programming-list/) \ No newline at end of file +- [Dart Programming – List](https://www.geeksforgeeks.org/dart-programming-list/) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/102-collections.md b/src/data/roadmaps/flutter/content/110-advanced-dart/102-collections.md index 7564042a5..0fd287be0 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/102-collections.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/102-collections.md @@ -13,4 +13,4 @@ These collections are built-in data structures that can be used to store and man Learn more from the following: - [Generic collections in Flutter](https://dart.dev/guides/language/language-tour#generic-collections-and-the-types-they-contain) -- [Iterable collections](https://dart.dev/codelabs/iterables) \ No newline at end of file +- [Iterable collections](https://dart.dev/codelabs/iterables) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/103-lambdas.md b/src/data/roadmaps/flutter/content/110-advanced-dart/103-lambdas.md index af20368be..5cccd854a 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/103-lambdas.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/103-lambdas.md @@ -14,4 +14,4 @@ Lambdas are defined using the `=>` operator and can take zero or more arguments. Learn more from the following links: - [Lambda functions in Dart](https://medium.com/jay-tillu/lambda-functions-in-dart-7db8b759f07a) -- [Anonymous Function in Dart | Lambda Function](https://www.youtube.com/watch?v=XTKKQdTAR0U) \ No newline at end of file +- [Anonymous Function in Dart | Lambda Function](https://www.youtube.com/watch?v=XTKKQdTAR0U) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/104-functional-programming.md b/src/data/roadmaps/flutter/content/110-advanced-dart/104-functional-programming.md index ec0511f18..db6cbe5e4 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/104-functional-programming.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/104-functional-programming.md @@ -11,4 +11,4 @@ Learn more from the following links: - [Brief Overview of Functional Programming](https://buildflutter.com/functional-programming-with-flutter/) - [Functional Programming in Dart & Flutter](https://yogi-6.medium.com/list/functional-programming-in-dart-flutter-2f3ac9d7fa39) -- [Functional programming - Flutter](https://docs.flutter.dev/resources/faq) \ No newline at end of file +- [Functional programming - Flutter](https://docs.flutter.dev/resources/faq) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/105-isolates.md b/src/data/roadmaps/flutter/content/110-advanced-dart/105-isolates.md index 79959f18b..25d93ece2 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/105-isolates.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/105-isolates.md @@ -12,4 +12,4 @@ Isolates are created using the `Isolate` class and can be used for a variety of Learn more from the following links: - [How isolates work](https://dart.dev/guides/language/concurrency#how-isolates-work) -- [Dart - Isolates and event loops](https://medium.com/dartlang/dart-asynchronous-programming-isolates-and-event-loops-bffc3e296a6a) \ No newline at end of file +- [Dart - Isolates and event loops](https://medium.com/dartlang/dart-asynchronous-programming-isolates-and-event-loops-bffc3e296a6a) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/106-async-await.md b/src/data/roadmaps/flutter/content/110-advanced-dart/106-async-await.md index a571f764f..010b1c315 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/106-async-await.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/106-async-await.md @@ -5,9 +5,9 @@ It is a programming pattern in Flutter that makes it easier to write asynchronou - **async**: The async keyword is used to mark a function as asynchronous, which means that the function can run asynchronously and not block the main thread. - **await**: The await keyword is used inside an async function to wait for the result of an asynchronous operation before continuing the execution of the function. -With `async`/`await`, you can write asynchronous code that is easy to read, write, and maintain. +With `async`/`await`, you can write asynchronous code that is easy to read, write, and maintain. Learn more from the following resources: - [Asynchronous programming: async, await](https://dart.dev/codelabs/async-await) -- [Async widgets](https://docs.flutter.dev/development/ui/widgets/async) \ No newline at end of file +- [Async widgets](https://docs.flutter.dev/development/ui/widgets/async) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/107-streams.md b/src/data/roadmaps/flutter/content/110-advanced-dart/107-streams.md index c776d9356..550d63226 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/107-streams.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/107-streams.md @@ -4,4 +4,4 @@ Streams in Flutter are a way to receive data over time as it becomes available. Learn more from the following resources: -- [Creating streams in Dart](https://dart.dev/articles/libraries/creating-streams) \ No newline at end of file +- [Creating streams in Dart](https://dart.dev/articles/libraries/creating-streams) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/108-futures.md b/src/data/roadmaps/flutter/content/110-advanced-dart/108-futures.md index a98adb411..1ca5e2d15 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/108-futures.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/108-futures.md @@ -10,4 +10,4 @@ Futures in Flutter are a way of representing a potential value that will be avai Learn more from the following resources: -- [Futures and Error handling](https://dart.dev/guides/libraries/futures-error-handling) \ No newline at end of file +- [Futures and Error handling](https://dart.dev/guides/libraries/futures-error-handling) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/index.md b/src/data/roadmaps/flutter/content/110-advanced-dart/index.md index 5fb8ac59a..bf379a8ad 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/index.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/index.md @@ -17,4 +17,4 @@ By mastering these concepts, you will be able to write more efficient and mainta Learn more from the following resources: -- [Tutorials - Dart](https://dart.dev/tutorials) \ No newline at end of file +- [Tutorials - Dart](https://dart.dev/tutorials) diff --git a/src/data/roadmaps/flutter/content/111-state-management/101-bloc.md b/src/data/roadmaps/flutter/content/111-state-management/101-bloc.md index 9ca64a553..e6072003a 100644 --- a/src/data/roadmaps/flutter/content/111-state-management/101-bloc.md +++ b/src/data/roadmaps/flutter/content/111-state-management/101-bloc.md @@ -7,4 +7,4 @@ Learn more from the following links: - [Get started with flutter_bloc](https://pub.dev/packages/flutter_bloc) - [BLoC in Flutter](https://docs.flutter.dev/development/data-and-backend/state-mgmt/options#bloc--rx) - [Flutter bloc for beginners](https://medium.com/flutter-community/flutter-bloc-for-beginners-839e22adb9f5) -- [Flutter Bloc - Tutorial](https://www.youtube.com/watch?v=Ep6R7U9wa0U) \ No newline at end of file +- [Flutter Bloc - Tutorial](https://www.youtube.com/watch?v=Ep6R7U9wa0U) diff --git a/src/data/roadmaps/flutter/content/111-state-management/103-velocity-x.md b/src/data/roadmaps/flutter/content/111-state-management/103-velocity-x.md index de5773141..50ff479d7 100644 --- a/src/data/roadmaps/flutter/content/111-state-management/103-velocity-x.md +++ b/src/data/roadmaps/flutter/content/111-state-management/103-velocity-x.md @@ -5,4 +5,4 @@ VelocityX is a Flutter UI toolkit for building high-performance, visually stunni Learn more from the following links: - [Get started with VelocityX](https://velocityx.dev/) -- [Intro to velocity_x](https://pub.dev/packages/velocity_x) \ No newline at end of file +- [Intro to velocity_x](https://pub.dev/packages/velocity_x) diff --git a/src/data/roadmaps/flutter/content/111-state-management/104-get-x.md b/src/data/roadmaps/flutter/content/111-state-management/104-get-x.md index 37570ba93..e820cc595 100644 --- a/src/data/roadmaps/flutter/content/111-state-management/104-get-x.md +++ b/src/data/roadmaps/flutter/content/111-state-management/104-get-x.md @@ -5,4 +5,4 @@ GetX is a lightweight and powerful solution for state management and navigation Learn more from the following links: - [GetX in Flutter](https://docs.flutter.dev/development/data-and-backend/state-mgmt/options#getx) -- [Complete GetX State Management | Flutter](https://www.youtube.com/watch?v=CNpXbeI_slw) \ No newline at end of file +- [Complete GetX State Management | Flutter](https://www.youtube.com/watch?v=CNpXbeI_slw) diff --git a/src/data/roadmaps/flutter/content/111-state-management/105-redux.md b/src/data/roadmaps/flutter/content/111-state-management/105-redux.md index d446b8a68..8c6c22f03 100644 --- a/src/data/roadmaps/flutter/content/111-state-management/105-redux.md +++ b/src/data/roadmaps/flutter/content/111-state-management/105-redux.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [flutter_redux](https://pub.dev/packages/flutter_redux) - [Redux - Tutorial](https://docs.flutter.dev/development/data-and-backend/state-mgmt/options#redux) -- [Building a Flutter app with Redux](https://hillel.dev/2018/06/01/building-a-large-flutter-app-with-redux/) \ No newline at end of file +- [Building a Flutter app with Redux](https://hillel.dev/2018/06/01/building-a-large-flutter-app-with-redux/) diff --git a/src/data/roadmaps/flutter/content/111-state-management/106-value-notifier.md b/src/data/roadmaps/flutter/content/111-state-management/106-value-notifier.md index f49108bd2..7ac9dce8a 100644 --- a/src/data/roadmaps/flutter/content/111-state-management/106-value-notifier.md +++ b/src/data/roadmaps/flutter/content/111-state-management/106-value-notifier.md @@ -1 +1 @@ -# Value Notifier \ No newline at end of file +# Value Notifier diff --git a/src/data/roadmaps/flutter/content/111-state-management/107-change-notifier.md b/src/data/roadmaps/flutter/content/111-state-management/107-change-notifier.md index 194ef2b51..149ea743d 100644 --- a/src/data/roadmaps/flutter/content/111-state-management/107-change-notifier.md +++ b/src/data/roadmaps/flutter/content/111-state-management/107-change-notifier.md @@ -1 +1 @@ -# Change Notifier \ No newline at end of file +# Change Notifier diff --git a/src/data/roadmaps/flutter/content/111-state-management/index.md b/src/data/roadmaps/flutter/content/111-state-management/index.md index 0cd722e26..7d86e108a 100644 --- a/src/data/roadmaps/flutter/content/111-state-management/index.md +++ b/src/data/roadmaps/flutter/content/111-state-management/index.md @@ -13,4 +13,4 @@ The choice of state management technique depends on the complexity and size of t Learn more from the following resources: - [State management in Flutter](https://docs.flutter.dev/development/data-and-backend/state-mgmt) -- [Intro to State Management](https://docs.flutter.dev/development/data-and-backend/state-mgmt/intro) \ No newline at end of file +- [Intro to State Management](https://docs.flutter.dev/development/data-and-backend/state-mgmt/intro) diff --git a/src/data/roadmaps/flutter/content/112-animations/100-curved-animations.md b/src/data/roadmaps/flutter/content/112-animations/100-curved-animations.md index 1480492d9..a9c2ff9a0 100644 --- a/src/data/roadmaps/flutter/content/112-animations/100-curved-animations.md +++ b/src/data/roadmaps/flutter/content/112-animations/100-curved-animations.md @@ -9,4 +9,4 @@ Curved animations in Flutter can be achieved using the "CurvedAnimation" class. Learn more from the following links: - [Curved­Animation](https://docs.flutter.dev/development/ui/animations/tutorial) -- [CurvedAnimation Class](https://api.flutter.dev/flutter/animation/CurvedAnimation-class.html) \ No newline at end of file +- [CurvedAnimation Class](https://api.flutter.dev/flutter/animation/CurvedAnimation-class.html) diff --git a/src/data/roadmaps/flutter/content/112-animations/101-animation-controller.md b/src/data/roadmaps/flutter/content/112-animations/101-animation-controller.md index 3740893df..bba8f8c24 100644 --- a/src/data/roadmaps/flutter/content/112-animations/101-animation-controller.md +++ b/src/data/roadmaps/flutter/content/112-animations/101-animation-controller.md @@ -7,9 +7,9 @@ This class lets you perform tasks such as: - Define the upperBound and lowerBound values of an animation. - Create a fling animation effect using a physics simulation. -By default, an AnimationController linearly produces values that range from 0.0 to 1.0, during a given duration. +By default, an AnimationController linearly produces values that range from 0.0 to 1.0, during a given duration. Learn more from the following links: - [AnimationController - Flutter](https://docs.flutter.dev/development/ui/animations/tutorial#animationcontroller) -- [AnimationController class](https://api.flutter.dev/flutter/animation/AnimationController-class.html) \ No newline at end of file +- [AnimationController class](https://api.flutter.dev/flutter/animation/AnimationController-class.html) diff --git a/src/data/roadmaps/flutter/content/112-animations/102-animated-builder.md b/src/data/roadmaps/flutter/content/112-animations/102-animated-builder.md index b300daf21..d6077d169 100644 --- a/src/data/roadmaps/flutter/content/112-animations/102-animated-builder.md +++ b/src/data/roadmaps/flutter/content/112-animations/102-animated-builder.md @@ -5,4 +5,4 @@ AnimatedBuilder is a widget in Flutter that allows you to build animations. It t Learn more from the following links: - [AnimatedBuilder Class](https://api.flutter.dev/flutter/widgets/AnimatedBuilder-class.html) -- [Refactoring with AnimatedBuilders](https://docs.flutter.dev/development/ui/animations/tutorial#refactoring-with-animatedbuilder) \ No newline at end of file +- [Refactoring with AnimatedBuilders](https://docs.flutter.dev/development/ui/animations/tutorial#refactoring-with-animatedbuilder) diff --git a/src/data/roadmaps/flutter/content/112-animations/103-animated-widget.md b/src/data/roadmaps/flutter/content/112-animations/103-animated-widget.md index 340cd9561..8ea6c997e 100644 --- a/src/data/roadmaps/flutter/content/112-animations/103-animated-widget.md +++ b/src/data/roadmaps/flutter/content/112-animations/103-animated-widget.md @@ -5,4 +5,4 @@ AnimatedWidget is a Flutter widget that takes an `Animation` object as an argume Learn more from the following links: - [Simplifying with Animated­Widget](https://docs.flutter.dev/development/ui/animations/tutorial#simplifying-with-animatedwidgets) -- [AnimatedWidget Class](https://api.flutter.dev/flutter/widgets/AnimatedWidget-class.html) \ No newline at end of file +- [AnimatedWidget Class](https://api.flutter.dev/flutter/widgets/AnimatedWidget-class.html) diff --git a/src/data/roadmaps/flutter/content/112-animations/104-hero.md b/src/data/roadmaps/flutter/content/112-animations/104-hero.md index c361d4071..678b2e73d 100644 --- a/src/data/roadmaps/flutter/content/112-animations/104-hero.md +++ b/src/data/roadmaps/flutter/content/112-animations/104-hero.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Hero animations](https://docs.flutter.dev/development/ui/animations/hero-animations) - [HeroAnimation class](https://docs.flutter.dev/development/ui/animations/hero-animations#heroanimation-class) -- [Hero class](https://api.flutter.dev/flutter/widgets/Hero-class.html) \ No newline at end of file +- [Hero class](https://api.flutter.dev/flutter/widgets/Hero-class.html) diff --git a/src/data/roadmaps/flutter/content/112-animations/105-opacity.md b/src/data/roadmaps/flutter/content/112-animations/105-opacity.md index ad02d0d9c..8384890e2 100644 --- a/src/data/roadmaps/flutter/content/112-animations/105-opacity.md +++ b/src/data/roadmaps/flutter/content/112-animations/105-opacity.md @@ -5,4 +5,4 @@ Opacity is a Flutter widget that allows you to control the transparency of its c Visit the following resources to learn more: - [Fade a widget in and out](https://docs.flutter.dev/cookbook/animation/opacity-animation) -- [AnimatedOpacity widget](https://docs.flutter.dev/codelabs/implicit-animations#animate-opacity-with-animatedopacity-widgets) \ No newline at end of file +- [AnimatedOpacity widget](https://docs.flutter.dev/codelabs/implicit-animations#animate-opacity-with-animatedopacity-widgets) diff --git a/src/data/roadmaps/flutter/content/112-animations/index.md b/src/data/roadmaps/flutter/content/112-animations/index.md index 6380ee7fc..f3aa551b7 100644 --- a/src/data/roadmaps/flutter/content/112-animations/index.md +++ b/src/data/roadmaps/flutter/content/112-animations/index.md @@ -5,4 +5,4 @@ Flutter’s animation support makes it easy to implement a variety of animation Visit the following resources to learn more: - [Introduction to animations](https://docs.flutter.dev/development/ui/animations) -- [Animation library](https://api.flutter.dev/flutter/animation/animation-library.html) \ No newline at end of file +- [Animation library](https://api.flutter.dev/flutter/animation/animation-library.html) diff --git a/src/data/roadmaps/flutter/content/113-testing/100-unit-testing.md b/src/data/roadmaps/flutter/content/113-testing/100-unit-testing.md index 1bac768e4..a839c4c8f 100644 --- a/src/data/roadmaps/flutter/content/113-testing/100-unit-testing.md +++ b/src/data/roadmaps/flutter/content/113-testing/100-unit-testing.md @@ -4,8 +4,7 @@ Unit testing in Flutter is the process of testing individual units of code, such In Flutter, you can write unit tests using the test package, which provides a testing framework and various test utilities. You can write tests that run on the Dart VM or on a physical device or emulator. The tests are written using a combination of Dart code and special test functions provided by the test package. You can use assert statements to verify the behavior of your code, and the testing framework will report whether the tests pass or fail. - Visit the following resources to learn more: - [An introduction to unit testing](https://docs.flutter.dev/cookbook/testing/unit/introduction) -- [Unit tests - Flutter](https://docs.flutter.dev/testing#unit-tests) \ No newline at end of file +- [Unit tests - Flutter](https://docs.flutter.dev/testing#unit-tests) diff --git a/src/data/roadmaps/flutter/content/113-testing/101-widget-testing.md b/src/data/roadmaps/flutter/content/113-testing/101-widget-testing.md index d720f5b49..db95c9b00 100644 --- a/src/data/roadmaps/flutter/content/113-testing/101-widget-testing.md +++ b/src/data/roadmaps/flutter/content/113-testing/101-widget-testing.md @@ -9,4 +9,4 @@ The framework provides several utility functions to help you build and test widg Visit the following resources to learn more: - [An introduction to widget testing](https://docs.flutter.dev/cookbook/testing/widget/introduction) -- [Widget Tests - Flutter](https://docs.flutter.dev/testing#widget-tests) \ No newline at end of file +- [Widget Tests - Flutter](https://docs.flutter.dev/testing#widget-tests) diff --git a/src/data/roadmaps/flutter/content/113-testing/103-tdd.md b/src/data/roadmaps/flutter/content/113-testing/103-tdd.md index 2547657ba..8b75d8443 100644 --- a/src/data/roadmaps/flutter/content/113-testing/103-tdd.md +++ b/src/data/roadmaps/flutter/content/113-testing/103-tdd.md @@ -7,4 +7,4 @@ In Flutter, TDD can be applied using the `test` and `flutter_test` packages, whi Learn more from the following links: - [Test-Driven Development in Flutter](https://techblog.geekyants.com/test-driven-development-in-flutter) -- [Flutter TDD Clean Architecture Course](https://www.youtube.com/watch?v=KjE2IDphA_U) \ No newline at end of file +- [Flutter TDD Clean Architecture Course](https://www.youtube.com/watch?v=KjE2IDphA_U) diff --git a/src/data/roadmaps/flutter/content/113-testing/104-bdd.md b/src/data/roadmaps/flutter/content/113-testing/104-bdd.md index 634ec8de7..4ed78257f 100644 --- a/src/data/roadmaps/flutter/content/113-testing/104-bdd.md +++ b/src/data/roadmaps/flutter/content/113-testing/104-bdd.md @@ -7,4 +7,4 @@ In Flutter, BDD can be applied using the `flutter_driver` package, which provide Learn morer from the following links: - [Build Flutter with BDD](https://medium.com/tide-engineering-team/build-flutter-with-bdd-b4507170a2fe) -- [Tutorial - BDD in Flutter](https://www.youtube.com/watch?v=Kwvsc31FE_8) \ No newline at end of file +- [Tutorial - BDD in Flutter](https://www.youtube.com/watch?v=Kwvsc31FE_8) diff --git a/src/data/roadmaps/flutter/content/113-testing/index.md b/src/data/roadmaps/flutter/content/113-testing/index.md index a5e62f43b..4eef15c95 100644 --- a/src/data/roadmaps/flutter/content/113-testing/index.md +++ b/src/data/roadmaps/flutter/content/113-testing/index.md @@ -14,4 +14,4 @@ In Flutter, you can write tests using the test and flutter_test packages, which Learn more from the following links: - [Dart Testing](https://dart.dev/guides/testing) -- [Testing Flutter apps](https://docs.flutter.dev/testing) \ No newline at end of file +- [Testing Flutter apps](https://docs.flutter.dev/testing) diff --git a/src/data/roadmaps/flutter/content/114-reactive-programming/100-rxdart.md b/src/data/roadmaps/flutter/content/114-reactive-programming/100-rxdart.md index 4edb663ea..25a714fae 100644 --- a/src/data/roadmaps/flutter/content/114-reactive-programming/100-rxdart.md +++ b/src/data/roadmaps/flutter/content/114-reactive-programming/100-rxdart.md @@ -3,4 +3,4 @@ RxDart is a library for Dart that provides additional functionality for working with reactive programming, specifically with the Streams and Observables classes. It extends the standard Dart Streams API and provides additional features such as the ability to transform and combine streams, and to compose and chain streams together. In Flutter, RxDart is commonly used to handle asynchronous data streams and user interactions in a more efficient and elegant way. - [RxDart Official Docs](https://pub.dev/documentation/rxdart/latest) -- [Overview of RxDart in Flutter](https://docs.flutter.dev/development/data-and-backend/state-mgmt/options#bloc--rx) \ No newline at end of file +- [Overview of RxDart in Flutter](https://docs.flutter.dev/development/data-and-backend/state-mgmt/options#bloc--rx) diff --git a/src/data/roadmaps/flutter/content/114-reactive-programming/index.md b/src/data/roadmaps/flutter/content/114-reactive-programming/index.md index 0c377d707..2f369ac01 100644 --- a/src/data/roadmaps/flutter/content/114-reactive-programming/index.md +++ b/src/data/roadmaps/flutter/content/114-reactive-programming/index.md @@ -11,4 +11,4 @@ Reactive programming in Flutter helps create dynamic and responsive apps that ca Learn more from the following links: - [Get Started with Reactive Programming](https://www.didierboelens.com/2018/12/reactive-programming-streams-bloc-practical-use-cases/) -- [Reactive Programming in Flutter](https://www.youtube.com/watch?v=x4FKXw4Uvls) \ No newline at end of file +- [Reactive Programming in Flutter](https://www.youtube.com/watch?v=x4FKXw4Uvls) diff --git a/src/data/roadmaps/flutter/content/115-dev-tools/100-flutter-inspector.md b/src/data/roadmaps/flutter/content/115-dev-tools/100-flutter-inspector.md index 210fb68f3..f7151affc 100644 --- a/src/data/roadmaps/flutter/content/115-dev-tools/100-flutter-inspector.md +++ b/src/data/roadmaps/flutter/content/115-dev-tools/100-flutter-inspector.md @@ -12,4 +12,4 @@ With the Flutter Inspector, developers can: Visit the following resources to learn more: - [Using the Flutter inspector](https://docs.flutter.dev/development/tools/devtools/inspector) -- [How to Use the Flutter Inspector](https://www.youtube.com/watch?v=CcLfGJZS8ns) \ No newline at end of file +- [How to Use the Flutter Inspector](https://www.youtube.com/watch?v=CcLfGJZS8ns) diff --git a/src/data/roadmaps/flutter/content/115-dev-tools/101-flutter-outline.md b/src/data/roadmaps/flutter/content/115-dev-tools/101-flutter-outline.md index 12678882f..4edae8ee9 100644 --- a/src/data/roadmaps/flutter/content/115-dev-tools/101-flutter-outline.md +++ b/src/data/roadmaps/flutter/content/115-dev-tools/101-flutter-outline.md @@ -9,4 +9,4 @@ The Flutter Outline can be used to: - Debug your code - Refactor your code -The Flutter Outline is a useful tool for Flutter developers, as it provides a high-level overview of your app and makes it easier to navigate and understand the code. It can help you to write better code and debug your app more efficiently. \ No newline at end of file +The Flutter Outline is a useful tool for Flutter developers, as it provides a high-level overview of your app and makes it easier to navigate and understand the code. It can help you to write better code and debug your app more efficiently. diff --git a/src/data/roadmaps/flutter/content/115-dev-tools/102-memory-allocation.md b/src/data/roadmaps/flutter/content/115-dev-tools/102-memory-allocation.md index 7d2db8033..c5578eebd 100644 --- a/src/data/roadmaps/flutter/content/115-dev-tools/102-memory-allocation.md +++ b/src/data/roadmaps/flutter/content/115-dev-tools/102-memory-allocation.md @@ -6,4 +6,4 @@ In Flutter, the widgets in the app's widget tree represent the state of the app. Visit the following links: -- [Using the Memory view](https://docs.flutter.dev/development/tools/devtools/memory) \ No newline at end of file +- [Using the Memory view](https://docs.flutter.dev/development/tools/devtools/memory) diff --git a/src/data/roadmaps/flutter/content/115-dev-tools/index.md b/src/data/roadmaps/flutter/content/115-dev-tools/index.md index 7cdd97a8f..789ae70f7 100644 --- a/src/data/roadmaps/flutter/content/115-dev-tools/index.md +++ b/src/data/roadmaps/flutter/content/115-dev-tools/index.md @@ -13,4 +13,4 @@ Flutter DevTools is a suite of development tools provided by Flutter to help dev Learn more from the following links: - [Flutter - DevTools](https://docs.flutter.dev/development/tools/devtools/overview) -- [Dart DevTools](https://dart.dev/tools/dart-devtools) \ No newline at end of file +- [Dart DevTools](https://dart.dev/tools/dart-devtools) diff --git a/src/data/roadmaps/flutter/content/116-flutter-internals/100-render-objects.md b/src/data/roadmaps/flutter/content/116-flutter-internals/100-render-objects.md index 38efdcd4d..ef5249690 100644 --- a/src/data/roadmaps/flutter/content/116-flutter-internals/100-render-objects.md +++ b/src/data/roadmaps/flutter/content/116-flutter-internals/100-render-objects.md @@ -5,4 +5,4 @@ RenderObject's can be defined as "Objects" that render and manipulate layouts, s Visit the following resources to learn more: - [RenderObject documentation](https://api.flutter.dev/flutter/rendering/RenderObject-class.html) -- [Get started with RenderObjects - Flutter](https://jasper-dev.hashnode.dev/getting-started-with-renderobjects-in-flutter) \ No newline at end of file +- [Get started with RenderObjects - Flutter](https://jasper-dev.hashnode.dev/getting-started-with-renderobjects-in-flutter) diff --git a/src/data/roadmaps/flutter/content/116-flutter-internals/102-immutability.md b/src/data/roadmaps/flutter/content/116-flutter-internals/102-immutability.md index ecadb26e4..f56c42648 100644 --- a/src/data/roadmaps/flutter/content/116-flutter-internals/102-immutability.md +++ b/src/data/roadmaps/flutter/content/116-flutter-internals/102-immutability.md @@ -6,4 +6,4 @@ In Flutter, objects that represent the state of the app, such as widgets and the Learn more from the following links: -- [Immutable data in Flutter](https://dart.academy/immutable-data-patterns-in-dart-and-flutter/) \ No newline at end of file +- [Immutable data in Flutter](https://dart.academy/immutable-data-patterns-in-dart-and-flutter/) diff --git a/src/data/roadmaps/flutter/content/116-flutter-internals/3-trees.md b/src/data/roadmaps/flutter/content/116-flutter-internals/3-trees.md index 28de493d9..c42a80970 100644 --- a/src/data/roadmaps/flutter/content/116-flutter-internals/3-trees.md +++ b/src/data/roadmaps/flutter/content/116-flutter-internals/3-trees.md @@ -7,4 +7,4 @@ A Flutter app's widget tree is created by composing smaller widgets into larger Learn more from the following links: - [Beginning Flutter — Understanding Tree](https://medium.com/@JediPixels/beginning-flutter-understanding-the-widget-tree-3513c94dc356) -- [Tree in Flutter](https://docs.flutter.dev/resources/inside-flutter#tree-surgery) \ No newline at end of file +- [Tree in Flutter](https://docs.flutter.dev/resources/inside-flutter#tree-surgery) diff --git a/src/data/roadmaps/flutter/content/116-flutter-internals/index.md b/src/data/roadmaps/flutter/content/116-flutter-internals/index.md index b55bbd4e5..2ae881457 100644 --- a/src/data/roadmaps/flutter/content/116-flutter-internals/index.md +++ b/src/data/roadmaps/flutter/content/116-flutter-internals/index.md @@ -10,4 +10,4 @@ Visit the following links: - [Flutter - Internals](https://www.didierboelens.com/2019/09/flutter-internals/) - [Overview of Flutter Internals](https://flutter.megathink.com/) -- [Flutter and Dart | Widget & Flutter Internals](https://www.youtube.com/watch?v=FBXMvOmiOLE) \ No newline at end of file +- [Flutter and Dart | Widget & Flutter Internals](https://www.youtube.com/watch?v=FBXMvOmiOLE) diff --git a/src/data/roadmaps/flutter/content/117-ci-cd/100-fast-lane.md b/src/data/roadmaps/flutter/content/117-ci-cd/100-fast-lane.md index 28a2a02d8..3e878ea34 100644 --- a/src/data/roadmaps/flutter/content/117-ci-cd/100-fast-lane.md +++ b/src/data/roadmaps/flutter/content/117-ci-cd/100-fast-lane.md @@ -6,4 +6,4 @@ Fastlane provides a suite of tools for automating tasks such as building, testin Learn more from the following links: -- [Fast Lane - CI/CD in Flutter](https://docs.flutter.dev/deployment/cd) \ No newline at end of file +- [Fast Lane - CI/CD in Flutter](https://docs.flutter.dev/deployment/cd) diff --git a/src/data/roadmaps/flutter/content/117-ci-cd/101-codemagic.md b/src/data/roadmaps/flutter/content/117-ci-cd/101-codemagic.md index e30632042..df0f9f406 100644 --- a/src/data/roadmaps/flutter/content/117-ci-cd/101-codemagic.md +++ b/src/data/roadmaps/flutter/content/117-ci-cd/101-codemagic.md @@ -7,4 +7,4 @@ Codemagic provides a simple and efficient way for Flutter developers to automate Learn more from the following links: - [Codemagic - Flutter](https://codemagic.io/start/) -- [Create a build archive with Codemagic](https://docs.flutter.dev/deployment/ios#create-a-build-archive-with-codemagic-cli-tools) \ No newline at end of file +- [Create a build archive with Codemagic](https://docs.flutter.dev/deployment/ios#create-a-build-archive-with-codemagic-cli-tools) diff --git a/src/data/roadmaps/flutter/content/117-ci-cd/102-bitrise.md b/src/data/roadmaps/flutter/content/117-ci-cd/102-bitrise.md index 81e605287..151290961 100644 --- a/src/data/roadmaps/flutter/content/117-ci-cd/102-bitrise.md +++ b/src/data/roadmaps/flutter/content/117-ci-cd/102-bitrise.md @@ -6,4 +6,4 @@ Bitrise provides a comprehensive suite of tools for automating the build, test, Learn more from the following links: -- [Adding a Flutter app to Bitrise](https://devcenter.bitrise.io/en/getting-started/getting-started-with-flutter-apps) \ No newline at end of file +- [Adding a Flutter app to Bitrise](https://devcenter.bitrise.io/en/getting-started/getting-started-with-flutter-apps) diff --git a/src/data/roadmaps/flutter/content/117-ci-cd/103-github-actions.md b/src/data/roadmaps/flutter/content/117-ci-cd/103-github-actions.md index 5ed052c45..7cbb0c756 100644 --- a/src/data/roadmaps/flutter/content/117-ci-cd/103-github-actions.md +++ b/src/data/roadmaps/flutter/content/117-ci-cd/103-github-actions.md @@ -14,4 +14,4 @@ In a Flutter project, GitHub Actions can be used to: Learn more from the following links: - [Github Actions](https://github.com/features/actions) -- [Flutter - Github Actions](https://github.com/nabilnalakath/flutter-githubaction) \ No newline at end of file +- [Flutter - Github Actions](https://github.com/nabilnalakath/flutter-githubaction) diff --git a/src/data/roadmaps/flutter/content/117-ci-cd/104-firebase-app-distribution.md b/src/data/roadmaps/flutter/content/117-ci-cd/104-firebase-app-distribution.md index 04c80d8b3..3ecd50cef 100644 --- a/src/data/roadmaps/flutter/content/117-ci-cd/104-firebase-app-distribution.md +++ b/src/data/roadmaps/flutter/content/117-ci-cd/104-firebase-app-distribution.md @@ -6,4 +6,4 @@ With Firebase App Distribution, developers can upload a pre-release version of t To learn more visit the following links: -- [Firebase Hosting](https://firebase.google.com/docs/hosting) \ No newline at end of file +- [Firebase Hosting](https://firebase.google.com/docs/hosting) diff --git a/src/data/roadmaps/flutter/content/117-ci-cd/index.md b/src/data/roadmaps/flutter/content/117-ci-cd/index.md index a012ab647..4e83ccbe8 100644 --- a/src/data/roadmaps/flutter/content/117-ci-cd/index.md +++ b/src/data/roadmaps/flutter/content/117-ci-cd/index.md @@ -13,4 +13,4 @@ The key components of a CI/CD pipeline for a Flutter app are: Learn more from the following links: -- [CI/CD - Flutter](https://docs.flutter.dev/deployment/cd) \ No newline at end of file +- [CI/CD - Flutter](https://docs.flutter.dev/deployment/cd) diff --git a/src/data/roadmaps/flutter/content/118-analytics/100-segment.md b/src/data/roadmaps/flutter/content/118-analytics/100-segment.md index 740c521bd..9b1c25d0a 100644 --- a/src/data/roadmaps/flutter/content/118-analytics/100-segment.md +++ b/src/data/roadmaps/flutter/content/118-analytics/100-segment.md @@ -13,4 +13,4 @@ Some key features of Segment for Flutter apps include: Learn more from the following links: -- [Doc of flutter_segment](https://pub.dev/packages/flutter_segment) \ No newline at end of file +- [Doc of flutter_segment](https://pub.dev/packages/flutter_segment) diff --git a/src/data/roadmaps/flutter/content/118-analytics/101-mix-panel.md b/src/data/roadmaps/flutter/content/118-analytics/101-mix-panel.md index b7832abef..724e69e0d 100644 --- a/src/data/roadmaps/flutter/content/118-analytics/101-mix-panel.md +++ b/src/data/roadmaps/flutter/content/118-analytics/101-mix-panel.md @@ -14,4 +14,4 @@ Some key features of Mixpanel for Flutter apps include: Learn more from the following links: - [Overview of Flutter Mixpanel](https://levelup.gitconnected.com/flutter-web-mixpanel-6046ffb664fb) -- [Flutter Mixpanel Analytics Integration](https://medium.com/flutter-clan/flutter-mixpanel-analytics-integration-b5840b155f7b) \ No newline at end of file +- [Flutter Mixpanel Analytics Integration](https://medium.com/flutter-clan/flutter-mixpanel-analytics-integration-b5840b155f7b) diff --git a/src/data/roadmaps/flutter/content/118-analytics/102-firebase-analytics.md b/src/data/roadmaps/flutter/content/118-analytics/102-firebase-analytics.md index 44ad81c95..ae18e5309 100644 --- a/src/data/roadmaps/flutter/content/118-analytics/102-firebase-analytics.md +++ b/src/data/roadmaps/flutter/content/118-analytics/102-firebase-analytics.md @@ -7,4 +7,4 @@ With Firebase Analytics, Flutter developers can track user interactions with the Learn more from the following links: - [Flutter - Firebase](https://docs.flutter.dev/development/data-and-backend/firebase) -- [How To Add Firebase Analytics in Flutter](https://medium.datadriveninvestor.com/how-to-add-firebase-analytics-to-your-flutter-app-641fbda1d224?gi=ad489389a531) \ No newline at end of file +- [How To Add Firebase Analytics in Flutter](https://medium.datadriveninvestor.com/how-to-add-firebase-analytics-to-your-flutter-app-641fbda1d224?gi=ad489389a531) diff --git a/src/data/roadmaps/flutter/content/118-analytics/103-google-analytics.md b/src/data/roadmaps/flutter/content/118-analytics/103-google-analytics.md index 4b91856d5..3b378d644 100644 --- a/src/data/roadmaps/flutter/content/118-analytics/103-google-analytics.md +++ b/src/data/roadmaps/flutter/content/118-analytics/103-google-analytics.md @@ -6,4 +6,4 @@ With Google Analytics, Flutter developers can track user interactions with their Learn more from the following links: -- [Google Analytics for Firebase](https://firebase.flutter.dev/docs/analytics/overview/) \ No newline at end of file +- [Google Analytics for Firebase](https://firebase.flutter.dev/docs/analytics/overview/) diff --git a/src/data/roadmaps/flutter/content/118-analytics/index.md b/src/data/roadmaps/flutter/content/118-analytics/index.md index 64d821a83..bc036a2c6 100644 --- a/src/data/roadmaps/flutter/content/118-analytics/index.md +++ b/src/data/roadmaps/flutter/content/118-analytics/index.md @@ -10,4 +10,4 @@ Analytics is a key aspect of understanding user behavior and measuring app perfo Learn more from the following links: - [Flutter Analytics using Firebase](https://www.youtube.com/watch?v=31KpJXqCayo) -- [Top Flutter Analytics](https://fluttergems.dev/analytics-consumer-insights/) \ No newline at end of file +- [Top Flutter Analytics](https://fluttergems.dev/analytics-consumer-insights/) diff --git a/src/data/roadmaps/flutter/content/119-deployment/100-appstore.md b/src/data/roadmaps/flutter/content/119-deployment/100-appstore.md index 34ea56f14..7eb9bde47 100644 --- a/src/data/roadmaps/flutter/content/119-deployment/100-appstore.md +++ b/src/data/roadmaps/flutter/content/119-deployment/100-appstore.md @@ -6,4 +6,4 @@ To publish a Flutter app on the App Store, developers need to ensure that their Learn more from the following links: -- [Build and release an iOS app](https://docs.flutter.dev/deployment/ios) \ No newline at end of file +- [Build and release an iOS app](https://docs.flutter.dev/deployment/ios) diff --git a/src/data/roadmaps/flutter/content/119-deployment/101-guidelines-and-protocols.md b/src/data/roadmaps/flutter/content/119-deployment/101-guidelines-and-protocols.md index 0b0d1e7ad..e634767be 100644 --- a/src/data/roadmaps/flutter/content/119-deployment/101-guidelines-and-protocols.md +++ b/src/data/roadmaps/flutter/content/119-deployment/101-guidelines-and-protocols.md @@ -7,10 +7,10 @@ Guidelines and protocols are important considerations for Flutter developers as - Material Design - Apple Human Interface - Google Play Developer Policy Center -- App Store Review +- App Store Review By following these guidelines and protocols, Flutter developers can ensure that their apps are well-designed, user-friendly, and secure, making it easier to attract and retain users. Learn more from the following links: -- [Flutter - Protocols](https://api.flutter.dev/objcdoc/Protocols.html) \ No newline at end of file +- [Flutter - Protocols](https://api.flutter.dev/objcdoc/Protocols.html) diff --git a/src/data/roadmaps/flutter/content/119-deployment/101-playstore.md b/src/data/roadmaps/flutter/content/119-deployment/101-playstore.md index b854ce246..93383afc9 100644 --- a/src/data/roadmaps/flutter/content/119-deployment/101-playstore.md +++ b/src/data/roadmaps/flutter/content/119-deployment/101-playstore.md @@ -7,5 +7,3 @@ Visit the following resources to learn more: - [Publish your app](https://developer.android.com/studio/publish) - [Build and release an Android app](https://docs.flutter.dev/deployment/android) - [Publishing Flutter App To PlayStore](https://medium.flutterdevs.com/publishing-flutter-app-to-playstore-fa7543b61a7b) - - diff --git a/src/data/roadmaps/flutter/content/119-deployment/index.md b/src/data/roadmaps/flutter/content/119-deployment/index.md index 479e28be5..7c6047196 100644 --- a/src/data/roadmaps/flutter/content/119-deployment/index.md +++ b/src/data/roadmaps/flutter/content/119-deployment/index.md @@ -8,8 +8,8 @@ Deployment in Flutter refers to the process of releasing a Flutter app to end-us - Releasing to app stores - Updating the app -In general, deploying a Flutter app involves a combination of technical skills and experience, as well as knowledge of the relevant app stores and their policies and requirements. +In general, deploying a Flutter app involves a combination of technical skills and experience, as well as knowledge of the relevant app stores and their policies and requirements. Learn more from the following links: -- [Flutter - Web deployment](https://dart.dev/web/deployment) \ No newline at end of file +- [Flutter - Web deployment](https://dart.dev/web/deployment) diff --git a/src/data/roadmaps/flutter/flutter.md b/src/data/roadmaps/flutter/flutter.md index 77f8d102a..53b7c8a09 100644 --- a/src/data/roadmaps/flutter/flutter.md +++ b/src/data/roadmaps/flutter/flutter.md @@ -1,58 +1,57 @@ --- -jsonUrl: "/jsons/roadmaps/flutter.json" -pdfUrl: "/pdfs/roadmaps/flutter.pdf" +jsonUrl: '/jsons/roadmaps/flutter.json' +pdfUrl: '/pdfs/roadmaps/flutter.pdf' order: 10 -briefTitle: "Flutter" -briefDescription: "Step by step guide to becoming a Flutter Developer in 2023" -title: "Flutter Developer" -description: "Step by step guide to becoming a Flutter developer in 2023" +briefTitle: 'Flutter' +briefDescription: 'Step by step guide to becoming a Flutter Developer in 2023' +title: 'Flutter Developer' +description: 'Step by step guide to becoming a Flutter developer in 2023' isNew: true hasTopics: true dimensions: width: 968 height: 2042.2 schema: - headline: "Flutter Developer Roadmap" - description: "Learn how to become a Flutter Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/flutter.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Flutter Developer Roadmap' + description: 'Learn how to become a Flutter Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/flutter.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Learn to become a modern Flutter developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for flutter development. Learn to become a modern Flutter developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Learn to become a modern Flutter developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for flutter development. Learn to become a modern Flutter developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a flutter developer" - - "guide to becoming a flutter developer" - - "flutter developer" - - "flutter engineer" - - "flutter skills" - - "guide to flutter" - - "flutter roadmap" - - "flutter skills" - - "flutter skills test" - - "skills for flutter" - - "what is flutter" - - "flutter quiz" - - "flutter interview questions" - - "flutter engineer roadmap" - - "flutter developer roadmap" - - "become a flutter developer" - - "flutter developer career path" - - "flutter developer" - - "modern flutter developer" + - 'guide to becoming a flutter developer' + - 'guide to becoming a flutter developer' + - 'flutter developer' + - 'flutter engineer' + - 'flutter skills' + - 'guide to flutter' + - 'flutter roadmap' + - 'flutter skills' + - 'flutter skills test' + - 'skills for flutter' + - 'what is flutter' + - 'flutter quiz' + - 'flutter interview questions' + - 'flutter engineer roadmap' + - 'flutter developer roadmap' + - 'become a flutter developer' + - 'flutter developer career path' + - 'flutter developer' + - 'modern flutter developer' relatedRoadmaps: - - "backend" - - "devops" - - "python" - - "golang" - - "java" - - "nodejs" + - 'backend' + - 'devops' + - 'python' + - 'golang' + - 'java' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- - diff --git a/src/data/roadmaps/frontend/content/100-internet/102-browsers-and-how-they-work.md b/src/data/roadmaps/frontend/content/100-internet/102-browsers-and-how-they-work.md index 9349ce75a..f4d401136 100644 --- a/src/data/roadmaps/frontend/content/100-internet/102-browsers-and-how-they-work.md +++ b/src/data/roadmaps/frontend/content/100-internet/102-browsers-and-how-they-work.md @@ -1,6 +1,6 @@ # Browsers -A web browser is a software application that enables a user to access and display web pages or other online content through its graphical user interface. +A web browser is a software application that enables a user to access and display web pages or other online content through its graphical user interface. Visit the following resources to learn more: diff --git a/src/data/roadmaps/frontend/content/100-internet/index.md b/src/data/roadmaps/frontend/content/100-internet/index.md index a3c5c5740..cf63ffffc 100644 --- a/src/data/roadmaps/frontend/content/100-internet/index.md +++ b/src/data/roadmaps/frontend/content/100-internet/index.md @@ -11,4 +11,3 @@ Visit the following resources to learn more: - [Learn How the Web Works](https://internetfundamentals.com) - [How does the Internet work?](https://www.youtube.com/watch?v=x3c1ih2NJEg) - [How the Internet Works in 5 Minutes](https://www.youtube.com/watch?v=7_LPdttKXPc) - diff --git a/src/data/roadmaps/frontend/content/101-html/102-forms-and-validations.md b/src/data/roadmaps/frontend/content/101-html/102-forms-and-validations.md index ad101eb6b..b81c360d1 100644 --- a/src/data/roadmaps/frontend/content/101-html/102-forms-and-validations.md +++ b/src/data/roadmaps/frontend/content/101-html/102-forms-and-validations.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [MDN Web Docs: Client-side form validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation) - [Learn Forms by web.dev](https://web.dev/learn/forms/) - [W3Schools: JavaScript Form Validation](https://www.w3schools.com/js/js_validation.asp) - diff --git a/src/data/roadmaps/frontend/content/101-html/103-conventions-and-best-practices.md b/src/data/roadmaps/frontend/content/101-html/103-conventions-and-best-practices.md index 6fa5c5e56..a1f4c74ed 100644 --- a/src/data/roadmaps/frontend/content/101-html/103-conventions-and-best-practices.md +++ b/src/data/roadmaps/frontend/content/101-html/103-conventions-and-best-practices.md @@ -5,4 +5,3 @@ Learn to follow the best practices for writing maintainable and scalable HTML do Visit the following resources to learn more: - [HTML Best Practices](https://github.com/hail2u/html-best-practices) - diff --git a/src/data/roadmaps/frontend/content/101-html/105-seo-basics.md b/src/data/roadmaps/frontend/content/101-html/105-seo-basics.md index eebe88d97..b640bf234 100644 --- a/src/data/roadmaps/frontend/content/101-html/105-seo-basics.md +++ b/src/data/roadmaps/frontend/content/101-html/105-seo-basics.md @@ -2,7 +2,6 @@ SEO or Search Engine Optimization is the technique used to optimize your website for better rankings on search engines such as Google, Bing etc. - Visit the following resources to learn more: - [Google Search Central — SEO Docs](https://developers.google.com/search/docs) diff --git a/src/data/roadmaps/frontend/content/103-javascript/101-learn-dom-manipulation.md b/src/data/roadmaps/frontend/content/103-javascript/101-learn-dom-manipulation.md index 497a12568..eb26bddba 100644 --- a/src/data/roadmaps/frontend/content/103-javascript/101-learn-dom-manipulation.md +++ b/src/data/roadmaps/frontend/content/103-javascript/101-learn-dom-manipulation.md @@ -1,6 +1,6 @@ # DOM Manipulation -The Document Object Model (DOM) is a programming interface built for HTML and XML documents. It represents the page that allows programs and scripts to dynamically update the document structure, content, and style. With DOM, we can easily access and manipulate tags, IDs, classes, attributes, etc. +The Document Object Model (DOM) is a programming interface built for HTML and XML documents. It represents the page that allows programs and scripts to dynamically update the document structure, content, and style. With DOM, we can easily access and manipulate tags, IDs, classes, attributes, etc. Visit the following resources to learn more: @@ -13,4 +13,3 @@ Visit the following resources to learn more: - [Learn the HTML DOM with Exercises - CodeGuage](https://www.codeguage.com/courses/js/html-dom-introduction) - [What is DOM, Shadow DOM and Virtual DOM?](https://www.youtube.com/watch?v=7Tok22qxPzQ) - [JavaScript DOM Crash Course](https://www.youtube.com/watch?v=0ik6X4DJKCc) - diff --git a/src/data/roadmaps/frontend/content/103-javascript/104-concepts.md b/src/data/roadmaps/frontend/content/103-javascript/104-concepts.md index 4631cec75..0d9a7a1c7 100644 --- a/src/data/roadmaps/frontend/content/103-javascript/104-concepts.md +++ b/src/data/roadmaps/frontend/content/103-javascript/104-concepts.md @@ -12,4 +12,4 @@ Visit the following resources to learn more: - [JavaScript Strict Mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode) - [JavaScript Visualized (7 Part Series)](https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif) - [DOM vs Shadow DOM vs Virtual DOM](https://www.youtube.com/watch?v=7Tok22qxPzQ) -- [Demystifying JavaScript Promises](https://blog.greenroots.info/series/javascript-promises) \ No newline at end of file +- [Demystifying JavaScript Promises](https://blog.greenroots.info/series/javascript-promises) diff --git a/src/data/roadmaps/frontend/content/106-web-security-knowledge/101-content-security-policy.md b/src/data/roadmaps/frontend/content/106-web-security-knowledge/101-content-security-policy.md index 6a46e124d..4682993ce 100644 --- a/src/data/roadmaps/frontend/content/106-web-security-knowledge/101-content-security-policy.md +++ b/src/data/roadmaps/frontend/content/106-web-security-knowledge/101-content-security-policy.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [MDN — Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) - [Google Devs — Content Security Policy (CSP)](https://developers.google.com/web/fundamentals/security/csp) - diff --git a/src/data/roadmaps/frontend/content/107-package-managers/index.md b/src/data/roadmaps/frontend/content/107-package-managers/index.md index b89c11d23..4c6f70d3b 100644 --- a/src/data/roadmaps/frontend/content/107-package-managers/index.md +++ b/src/data/roadmaps/frontend/content/107-package-managers/index.md @@ -10,5 +10,3 @@ Visit the following resources to learn more: - [NPM tutorial for Beginners](https://www.youtube.com/watch?v=2V1UUhBJ62Y) - [NPM Crash Course](https://www.youtube.com/watch?v=jHDhaSSKmB0) - [Yarn Crash Course](https://www.youtube.com/watch?v=g9_6KmiBISk) - - diff --git a/src/data/roadmaps/frontend/content/108-css-architecture/index.md b/src/data/roadmaps/frontend/content/108-css-architecture/index.md index c7365c458..9ffd84b96 100644 --- a/src/data/roadmaps/frontend/content/108-css-architecture/index.md +++ b/src/data/roadmaps/frontend/content/108-css-architecture/index.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [BEM Official Website](https://en.bem.info) - [OOCSS Official Website](http://oocss.org/) - [SMACSS Official Website](http://smacss.com/) - diff --git a/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/100-npm-scripts.md b/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/100-npm-scripts.md index cd9a53110..d93308062 100644 --- a/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/100-npm-scripts.md +++ b/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/100-npm-scripts.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Introduction to npm scripts](https://www.geeksforgeeks.org/introduction-to-npm-scripts/) - [Codevolution: npm scripts](https://www.youtube.com/watch?v=hHt3oVk3XVk) - diff --git a/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/index.md b/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/index.md index 3ac1e80b6..e41373700 100644 --- a/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/index.md +++ b/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/index.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [Let’s learn how module bundlers work](https://www.freecodecamp.org/news/lets-learn-how-module-bundlers-work-and-then-write-one-ourselves-b2e3fe6c88ae/) - [Module Bundlers Explained](https://www.youtube.com/watch?v=5IG4UmULyoA) - diff --git a/src/data/roadmaps/frontend/content/112-modern-css/101-css-modules.md b/src/data/roadmaps/frontend/content/112-modern-css/101-css-modules.md index 8577d43ba..efb52b5c3 100644 --- a/src/data/roadmaps/frontend/content/112-modern-css/101-css-modules.md +++ b/src/data/roadmaps/frontend/content/112-modern-css/101-css-modules.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Project GitHub Repository](https://github.com/css-modules/css-modules) - [Using CSS Modules In React App](https://medium.com/@ralph1786/using-css-modules-in-react-app-c2079eadbb87) - [CSS Modules: Why are they great?](https://www.youtube.com/watch?v=pKMWU9OrA2s) - diff --git a/src/data/roadmaps/frontend/content/112-modern-css/index.md b/src/data/roadmaps/frontend/content/112-modern-css/index.md index 57846abe4..795234e77 100644 --- a/src/data/roadmaps/frontend/content/112-modern-css/index.md +++ b/src/data/roadmaps/frontend/content/112-modern-css/index.md @@ -1,3 +1,3 @@ # Modern CSS -The way we write CSS in our modern front-end applications is completely different from how we used to write CSS before. There are methods such as Styled Components, CSS Modules, Styled JSX, Emotion, etc \ No newline at end of file +The way we write CSS in our modern front-end applications is completely different from how we used to write CSS before. There are methods such as Styled Components, CSS Modules, Styled JSX, Emotion, etc diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/index.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/index.md index 45842652e..bf02a6321 100644 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/index.md +++ b/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/index.md @@ -1 +1 @@ -# Css first \ No newline at end of file +# Css first diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/104-mantine.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/104-mantine.md index 66ca6e892..3d89d88bf 100644 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/104-mantine.md +++ b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/104-mantine.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Mantine Website](https://mantine.dev/) - [Usage with Create React App](https://mantine.dev/guides/cra/) -- [5 Mantine Hooks for UI management](https://blog.logrocket.com/5-mantine-hooks-simplifying-ui-management-react/) \ No newline at end of file +- [5 Mantine Hooks for UI management](https://blog.logrocket.com/5-mantine-hooks-simplifying-ui-management-react/) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/105-daisy-ui.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/105-daisy-ui.md index 541b1ea25..fc7a069d4 100644 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/105-daisy-ui.md +++ b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/105-daisy-ui.md @@ -5,4 +5,4 @@ Component library around Tailwind CSS that comes with several built-in component Visit the following resources to learn more: - [DaisyUI Website](https://daisyui.com/) -- [DaisyUI Documentation](https://daisyui.com/docs/install/) \ No newline at end of file +- [DaisyUI Documentation](https://daisyui.com/docs/install/) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/index.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/index.md index c567e1651..3317066bb 100644 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/index.md +++ b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/index.md @@ -1 +1 @@ -# Js first \ No newline at end of file +# Js first diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/104-other-options.md b/src/data/roadmaps/frontend/content/115-testing-your-apps/104-other-options.md index db2d32e19..0423c3ec2 100644 --- a/src/data/roadmaps/frontend/content/115-testing-your-apps/104-other-options.md +++ b/src/data/roadmaps/frontend/content/115-testing-your-apps/104-other-options.md @@ -1 +1 @@ -# Other options \ No newline at end of file +# Other options diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/index.md b/src/data/roadmaps/frontend/content/115-testing-your-apps/index.md index 9d267f314..cc8cc8437 100644 --- a/src/data/roadmaps/frontend/content/115-testing-your-apps/index.md +++ b/src/data/roadmaps/frontend/content/115-testing-your-apps/index.md @@ -1,4 +1,5 @@ # Testing your apps + Before delivering your application to users, you need to be sure that your app meets the requirements it was designed for, and that it doesn't do any weird, unintended things (called 'bugs'). To accomplish this, we 'test' our applications in different ways. Visit the following resources to learn more: diff --git a/src/data/roadmaps/frontend/content/116-auth-strategies/index.md b/src/data/roadmaps/frontend/content/116-auth-strategies/index.md index b3d4af1c3..e566f44d3 100644 --- a/src/data/roadmaps/frontend/content/116-auth-strategies/index.md +++ b/src/data/roadmaps/frontend/content/116-auth-strategies/index.md @@ -19,5 +19,3 @@ Visit the following resources to learn more: - [JWT Authentication](https://roadmap.sh/guides/jwt-authentication) - [OAuth](https://roadmap.sh/guides/oauth) - [SSO - Single Sign On](https://roadmap.sh/guides/sso) - - diff --git a/src/data/roadmaps/frontend/content/116-type-checkers/index.md b/src/data/roadmaps/frontend/content/116-type-checkers/index.md index dd728f31c..7f73438a0 100644 --- a/src/data/roadmaps/frontend/content/116-type-checkers/index.md +++ b/src/data/roadmaps/frontend/content/116-type-checkers/index.md @@ -1,3 +1,3 @@ # Type Checkers -Type checker helps developers write code with fewer bugs by adding types to their code, trying to catch type errors within your code, and then removing them during compile time. Flow and TypeScript are two popular static type checkers for JavaScript. \ No newline at end of file +Type checker helps developers write code with fewer bugs by adding types to their code, trying to catch type errors within your code, and then removing them during compile time. Flow and TypeScript are two popular static type checkers for JavaScript. diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/107-payments.md b/src/data/roadmaps/frontend/content/117-progressive-web-apps/107-payments.md index aac1ed68f..f33c5ea4b 100644 --- a/src/data/roadmaps/frontend/content/117-progressive-web-apps/107-payments.md +++ b/src/data/roadmaps/frontend/content/117-progressive-web-apps/107-payments.md @@ -9,6 +9,3 @@ The Payment Request API is supported by most modern web browsers and is designed Visit the following resources to learn more: - [Payment Request API - MDN](https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API) - - - diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/109-prpl-pattern.md b/src/data/roadmaps/frontend/content/117-progressive-web-apps/109-prpl-pattern.md index 147965be2..9d1f5d75d 100644 --- a/src/data/roadmaps/frontend/content/117-progressive-web-apps/109-prpl-pattern.md +++ b/src/data/roadmaps/frontend/content/117-progressive-web-apps/109-prpl-pattern.md @@ -2,10 +2,10 @@ The PRPL pattern is a performance optimization pattern for web applications that focuses on minimizing the time it takes for the initial rendering of a web page. It stands for Push, Render, Pre-cache, and Lazy-load, and it involves the following steps: -* Push: Prioritize the delivery of critical resources, such as HTML, CSS, and JavaScript, to the client as early as possible. -* Render: Start rendering the web page as soon as the critical resources are received, even if some non-critical resources are still being downloaded. -* Pre-cache: Pre-cache non-critical resources in the background so that they are available when needed. -* Lazy-load: Defer the loading of non-critical resources until they are needed, such as when the user scrolls to them or interacts with them. +- Push: Prioritize the delivery of critical resources, such as HTML, CSS, and JavaScript, to the client as early as possible. +- Render: Start rendering the web page as soon as the critical resources are received, even if some non-critical resources are still being downloaded. +- Pre-cache: Pre-cache non-critical resources in the background so that they are available when needed. +- Lazy-load: Defer the loading of non-critical resources until they are needed, such as when the user scrolls to them or interacts with them. The PRPL pattern is designed to improve the perceived performance of a web page by reducing the time it takes for the page to become interactive. It is particularly useful for applications that are served over slow or unreliable networks, as it allows the page to render as quickly as possible and then gradually load the remaining resources. diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/110-rail-model.md b/src/data/roadmaps/frontend/content/117-progressive-web-apps/110-rail-model.md index 91f94ae2d..0ab2f1e28 100644 --- a/src/data/roadmaps/frontend/content/117-progressive-web-apps/110-rail-model.md +++ b/src/data/roadmaps/frontend/content/117-progressive-web-apps/110-rail-model.md @@ -2,10 +2,10 @@ The RAIL model is a performance optimization model for web applications that focuses on improving the perceived performance of a web page. It stands for Response, Animation, Idle, and Load, and it involves the following four performance goals: -* Response: The time it takes for the web page to respond to user input should be under 100 milliseconds. -* Animation: The time it takes for an animation to run should be under 10 milliseconds. -* Idle: The web page should take advantage of idle time to perform non-critical tasks. -* Load: The time it takes for the web page to fully load should be under 1 second. +- Response: The time it takes for the web page to respond to user input should be under 100 milliseconds. +- Animation: The time it takes for an animation to run should be under 10 milliseconds. +- Idle: The web page should take advantage of idle time to perform non-critical tasks. +- Load: The time it takes for the web page to fully load should be under 1 second. The RAIL model is designed to provide a framework for optimizing the performance of a web page by focusing on the four key areas that impact the user's perception of performance. It is particularly useful for applications that require high levels of interactivity, such as games and social media applications. diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/111-performance-metrics.md b/src/data/roadmaps/frontend/content/117-progressive-web-apps/111-performance-metrics.md index 9cfa0122a..63f64631c 100644 --- a/src/data/roadmaps/frontend/content/117-progressive-web-apps/111-performance-metrics.md +++ b/src/data/roadmaps/frontend/content/117-progressive-web-apps/111-performance-metrics.md @@ -2,11 +2,11 @@ Web performance metrics are quantitative measures of the performance of a web page or application. They are used to assess the speed and efficiency of a web page, and they can help identify areas for improvement. Some common web performance metrics include: -* Load time: The time it takes for a web page to fully load and become interactive. -* First contentful paint (FCP): The time it takes for the first content to appear on the page. -* Time to interactive (TTI): The time it takes for the page to become fully interactive. -* First input delay (FID): The time it takes for the page to respond to the first user input. -* Total blocking time (TBT): The time it takes for the page to become fully interactive, taking into account the time spent blocking the main thread. +- Load time: The time it takes for a web page to fully load and become interactive. +- First contentful paint (FCP): The time it takes for the first content to appear on the page. +- Time to interactive (TTI): The time it takes for the page to become fully interactive. +- First input delay (FID): The time it takes for the page to respond to the first user input. +- Total blocking time (TBT): The time it takes for the page to become fully interactive, taking into account the time spent blocking the main thread. There are many tools and techniques available for measuring web performance metrics, including browser dev tools, performance monitoring tools, and web performance APIs. By tracking these metrics and analyzing the results, web developers can identify areas for improvement and optimize the performance of their web pages. diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/113-browser-devtools.md b/src/data/roadmaps/frontend/content/117-progressive-web-apps/113-browser-devtools.md index 80b0d91d5..b7ca2cc29 100644 --- a/src/data/roadmaps/frontend/content/117-progressive-web-apps/113-browser-devtools.md +++ b/src/data/roadmaps/frontend/content/117-progressive-web-apps/113-browser-devtools.md @@ -1,16 +1,16 @@ # Browser DevTools -Most of the browsers have built-in developer tools that help you perform web development specific tasks on a webpage. My personal recommendation would be to use Chrome DevTools as it is the most advanced and has the most features. However, if you are using a different browser, you can still use the DevTools to debug your web application. +Most of the browsers have built-in developer tools that help you perform web development specific tasks on a webpage. My personal recommendation would be to use Chrome DevTools as it is the most advanced and has the most features. However, if you are using a different browser, you can still use the DevTools to debug your web application. Chrome DevTools is a set of web development tools built into the Google Chrome browser. It allows web developers to debug and optimize web pages by providing a range of features for inspecting and manipulating the page's HTML, CSS, and JavaScript. Some of the features provided by Chrome DevTools include: -* **Elements panel**: Inspect and modify the page's HTML and CSS. -* **Console panel**: View and debug JavaScript errors and log messages. -* **Network panel**: Monitor network requests and responses, and analyze performance issues. -* **Performance panel**: Analyze the performance of the page and identify bottlenecks. -* **Application panel**: Inspect the page's resources, such as cookies and local storage. +- **Elements panel**: Inspect and modify the page's HTML and CSS. +- **Console panel**: View and debug JavaScript errors and log messages. +- **Network panel**: Monitor network requests and responses, and analyze performance issues. +- **Performance panel**: Analyze the performance of the page and identify bottlenecks. +- **Application panel**: Inspect the page's resources, such as cookies and local storage. Chrome DevTools is a powerful and essential tool for web developers, and it is widely used to debug and optimize web pages. It is constantly updated with new features and improvements, and it is available on all modern web browsers. diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/index.md b/src/data/roadmaps/frontend/content/118-server-side-rendering/index.md index acbb182a0..ebc724d06 100644 --- a/src/data/roadmaps/frontend/content/118-server-side-rendering/index.md +++ b/src/data/roadmaps/frontend/content/118-server-side-rendering/index.md @@ -1,4 +1,4 @@ -# Server-side rendering +# Server-side rendering Server-side rendering refers to the process that the service side completes the HTML structure splicing of the page, sends it to the browser, and then binds the status and events for it to become a fully interactive page. diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/107-eleventy.md b/src/data/roadmaps/frontend/content/120-static-site-generators/107-eleventy.md index 696a8f4be..b361150f1 100644 --- a/src/data/roadmaps/frontend/content/120-static-site-generators/107-eleventy.md +++ b/src/data/roadmaps/frontend/content/120-static-site-generators/107-eleventy.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Official Website](https://www.11ty.dev/) - [A collection of 11ty starters, projects, plugins, and resources](https://11ty.rocks/) - [Introduction to Eleventy](https://www.youtube.com/watch?v=-dM6AmNmMFA) - diff --git a/src/data/roadmaps/frontend/content/121-mobile-applications/100-react-native.md b/src/data/roadmaps/frontend/content/121-mobile-applications/100-react-native.md index 4ef49e073..6aa8a02c8 100644 --- a/src/data/roadmaps/frontend/content/121-mobile-applications/100-react-native.md +++ b/src/data/roadmaps/frontend/content/121-mobile-applications/100-react-native.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [Official Getting Started to React Native](https://reactnative.dev/docs/getting-started) - [Build a React Native App by Mosh](https://www.youtube.com/watch?v=0-S5a0eXPoc) - [Learn React Native by CodeAcademy](https://www.codecademy.com/learn/learn-react-native) - \ No newline at end of file diff --git a/src/data/roadmaps/frontend/content/121-mobile-applications/102-flutter.md b/src/data/roadmaps/frontend/content/121-mobile-applications/102-flutter.md index 0e41ba9be..f7457650d 100644 --- a/src/data/roadmaps/frontend/content/121-mobile-applications/102-flutter.md +++ b/src/data/roadmaps/frontend/content/121-mobile-applications/102-flutter.md @@ -6,7 +6,7 @@ Flutter consists of two important parts: - An SDK (Software Development Kit): A collection of tools that are going to help you develop your applications. This includes tools to compile your code into native machine code (code for iOS and Android). - A Framework (UI Library based on widgets): A collection of reusable UI elements (buttons, text inputs, sliders, and so on) that you can personalize for your own needs. -To develop with Flutter, you will use a programming language called Dart. The language was created by Google in October 2011, but it has improved a lot over these past years. + To develop with Flutter, you will use a programming language called Dart. The language was created by Google in October 2011, but it has improved a lot over these past years. Dart focuses on front-end development, and you can use it to create mobile and web applications. diff --git a/src/data/roadmaps/frontend/content/121-mobile-applications/index.md b/src/data/roadmaps/frontend/content/121-mobile-applications/index.md index d940b6e39..6f84c976c 100644 --- a/src/data/roadmaps/frontend/content/121-mobile-applications/index.md +++ b/src/data/roadmaps/frontend/content/121-mobile-applications/index.md @@ -2,7 +2,7 @@ A while back, developing a mobile app using JavaScript was impossible. But now JavaScript developers can create mobile applications using their knowledge for web development. Here is the list of options to create mobile applications in JavaScript. -* [React Native](https://reactnative.dev/) -* [Flutter](https://flutter.dev) -* [Ionic](https://ionicframework.com) -* [NativeScript](https://nativescript.org/) \ No newline at end of file +- [React Native](https://reactnative.dev/) +- [Flutter](https://flutter.dev) +- [Ionic](https://ionicframework.com) +- [NativeScript](https://nativescript.org/) diff --git a/src/data/roadmaps/frontend/content/122-desktop-applications/index.md b/src/data/roadmaps/frontend/content/122-desktop-applications/index.md index bee545339..cdf0d746b 100644 --- a/src/data/roadmaps/frontend/content/122-desktop-applications/index.md +++ b/src/data/roadmaps/frontend/content/122-desktop-applications/index.md @@ -2,7 +2,7 @@ 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/) +- [Electron](https://www.electronjs.org/) +- [NodeGUI](https://docs.nodegui.org/) +- [NW.js](https://nwjs.io/) +- [Meteor](https://www.meteor.com/) diff --git a/src/data/roadmaps/frontend/frontend.md b/src/data/roadmaps/frontend/frontend.md index 32b7ab0e3..4ac8194d9 100644 --- a/src/data/roadmaps/frontend/frontend.md +++ b/src/data/roadmaps/frontend/frontend.md @@ -1,73 +1,72 @@ --- -jsonUrl: "/jsons/roadmaps/frontend.json" -pdfUrl: "/pdfs/roadmaps/frontend.pdf" +jsonUrl: '/jsons/roadmaps/frontend.json' +pdfUrl: '/pdfs/roadmaps/frontend.pdf' order: 1 -briefTitle: "Frontend" -briefDescription: "Step by step guide to becoming a frontend developer in 2023" -title: "Frontend Developer" -description: "Step by step guide to becoming a modern frontend developer in 2023" +briefTitle: 'Frontend' +briefDescription: 'Step by step guide to becoming a frontend developer in 2023' +title: 'Frontend Developer' +description: 'Step by step guide to becoming a modern frontend developer in 2023' hasTopics: true -tnsBannerLink: "https://thenewstack.io?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert" +tnsBannerLink: 'https://thenewstack.io?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert' dimensions: width: 968 height: 2822.1 sponsor: - url: "https://bit.ly/3YYcqdt" - title: "Free eBook" - imageUrl: "https://i.imgur.com/RCbFXOY.png" - description: "Learn how to find a GraphQL architecture that scales with this free eBook from Apollo" + url: 'https://bit.ly/3YYcqdt' + title: 'Free eBook' + imageUrl: 'https://i.imgur.com/RCbFXOY.png' + description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' event: - category: "SponsorClick" - action: "Apollo Redirect" - label: "Frontend / Apollo Link" + category: 'SponsorClick' + action: 'Apollo Redirect' + label: 'Frontend / Apollo Link' schema: - headline: "Frontend Developer Roadmap" - description: "Learn how to become a Frontend Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/frontend.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Frontend Developer Roadmap' + description: 'Learn how to become a Frontend Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/frontend.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Frontend Developer Roadmap" - description: "Learn to become a modern frontend developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern frontend development." + title: 'Frontend Developer Roadmap' + description: 'Learn to become a modern frontend developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern frontend development.' keywords: - - "javascript roadmap 2023" - - "frontend roadmap 2023" - - "frontend developer roadmap 2023" - - "guide to becoming a developer" - - "guide to becoming a frontend developer" - - "frontend developer" - - "frontend engineer" - - "frontend skills" - - "frontend development" - - "javascript developer" - - "frontend development skills" - - "frontend development skills test" - - "frontend roadmap" - - "frontend engineer roadmap" - - "frontend developer roadmap" - - "become a frontend developer" - - "frontend developer career path" - - "javascript developer" - - "modern javascript developer" - - "node developer" - - "skills for frontend development" - - "learn frontend development" - - "what is frontend development" - - "frontend developer quiz" - - "frontend developer interview questions" + - 'javascript roadmap 2023' + - 'frontend roadmap 2023' + - 'frontend developer roadmap 2023' + - 'guide to becoming a developer' + - 'guide to becoming a frontend developer' + - 'frontend developer' + - 'frontend engineer' + - 'frontend skills' + - 'frontend development' + - 'javascript developer' + - 'frontend development skills' + - 'frontend development skills test' + - 'frontend roadmap' + - 'frontend engineer roadmap' + - 'frontend developer roadmap' + - 'become a frontend developer' + - 'frontend developer career path' + - 'javascript developer' + - 'modern javascript developer' + - 'node developer' + - 'skills for frontend development' + - 'learn frontend development' + - 'what is frontend development' + - 'frontend developer quiz' + - 'frontend developer interview questions' relatedRoadmaps: - - "javascript" - - "nodejs" - - "react" - - "angular" - - "vue" - - "design-system" + - 'javascript' + - 'nodejs' + - 'react' + - 'angular' + - 'vue' + - 'design-system' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- - diff --git a/src/data/roadmaps/golang/content/100-go-basics/107-conditionals.md b/src/data/roadmaps/golang/content/100-go-basics/107-conditionals.md index 257d38cc8..fb1abf9e2 100644 --- a/src/data/roadmaps/golang/content/100-go-basics/107-conditionals.md +++ b/src/data/roadmaps/golang/content/100-go-basics/107-conditionals.md @@ -2,9 +2,9 @@ Conditional statements are used to run code only if a certain condition is true; go supports : - - `if` statements - - `if / else` statements - - `switch` `case` statements +- `if` statements +- `if / else` statements +- `switch` `case` statements Visit the following resources to learn more: diff --git a/src/data/roadmaps/golang/content/100-go-basics/108-functions.md b/src/data/roadmaps/golang/content/100-go-basics/108-functions.md index e1d618a5e..dda555b41 100644 --- a/src/data/roadmaps/golang/content/100-go-basics/108-functions.md +++ b/src/data/roadmaps/golang/content/100-go-basics/108-functions.md @@ -2,11 +2,11 @@ Discover how functions work in Go, the list of resources below will cover : - - How to define and call functions in Go? - - Named returns in Go? - - Handle multiple return types. - - Different types of functions in Go. - +- How to define and call functions in Go? +- Named returns in Go? +- Handle multiple return types. +- Different types of functions in Go. + Visit the following resources to learn more: - [Go by Example: Functions](https://gobyexample.com/functions) diff --git a/src/data/roadmaps/golang/content/100-go-basics/111-type-inference.md b/src/data/roadmaps/golang/content/100-go-basics/111-type-inference.md index 69c38d719..607000b82 100644 --- a/src/data/roadmaps/golang/content/100-go-basics/111-type-inference.md +++ b/src/data/roadmaps/golang/content/100-go-basics/111-type-inference.md @@ -1,6 +1,6 @@ # Type Inference -Type inference gives go the capability to detect the type of a value without being explicitly indicated , hence the possibility to declare variables without providing its type at first +Type inference gives go the capability to detect the type of a value without being explicitly indicated , hence the possibility to declare variables without providing its type at first Visit the following resources to learn more: diff --git a/src/data/roadmaps/golang/content/100-go-basics/114-maps.md b/src/data/roadmaps/golang/content/100-go-basics/114-maps.md index e37baebaa..8e53b1e91 100644 --- a/src/data/roadmaps/golang/content/100-go-basics/114-maps.md +++ b/src/data/roadmaps/golang/content/100-go-basics/114-maps.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Go Maps](https://go.dev/tour/moretypes/19) - [Effective Go: Maps](https://go.dev/doc/effective_go#maps) - [Maps in Go](https://www.w3schools.com/go/go_maps.php) -- [Golang Tutorial #15 - Maps (by Tech With Tim on YouTube)](https://www.youtube.com/watch?v=yJE2RC37BF4) \ No newline at end of file +- [Golang Tutorial #15 - Maps (by Tech With Tim on YouTube)](https://www.youtube.com/watch?v=yJE2RC37BF4) diff --git a/src/data/roadmaps/golang/content/100-go-basics/115-make.md b/src/data/roadmaps/golang/content/100-go-basics/115-make.md index e2447e5dd..aa5ed64ed 100644 --- a/src/data/roadmaps/golang/content/100-go-basics/115-make.md +++ b/src/data/roadmaps/golang/content/100-go-basics/115-make.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Effective Go: Allocation with make](https://go.dev/doc/effective_go#allocation_make) - [Create a slice with make](https://www.golangprograms.com/how-to-create-slice-using-make-function-in-golang.html) - [Create a map with make](https://www.golangprograms.com/golang-package-examples/how-to-create-map-using-the-make-function-in-go.html) -- [Create a channel with make](https://www.programiz.com/golang/channel#channel) \ No newline at end of file +- [Create a channel with make](https://www.programiz.com/golang/channel#channel) diff --git a/src/data/roadmaps/golang/content/100-go-basics/116-structs.md b/src/data/roadmaps/golang/content/100-go-basics/116-structs.md index c4cc1055a..88a3fcef1 100644 --- a/src/data/roadmaps/golang/content/100-go-basics/116-structs.md +++ b/src/data/roadmaps/golang/content/100-go-basics/116-structs.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Go Structs](https://go.dev/tour/moretypes/2) - [Go by Example: Structs](https://gobyexample.com/structs) -- [Structs in Go](https://www.youtube.com/watch?v=NMTN543WVQY) \ No newline at end of file +- [Structs in Go](https://www.youtube.com/watch?v=NMTN543WVQY) diff --git a/src/data/roadmaps/golang/content/101-go-advanced/100-go-modules.md b/src/data/roadmaps/golang/content/101-go-advanced/100-go-modules.md index 927274656..69fecc225 100644 --- a/src/data/roadmaps/golang/content/101-go-advanced/100-go-modules.md +++ b/src/data/roadmaps/golang/content/101-go-advanced/100-go-modules.md @@ -1,8 +1,8 @@ # Modules -Go modules are a group of related packages that are versioned and distributed together. They specify the requirements of our project, list all the required dependencies, and help us keep track of the specific versions of installed dependencies. +Go modules are a group of related packages that are versioned and distributed together. They specify the requirements of our project, list all the required dependencies, and help us keep track of the specific versions of installed dependencies. -Modules are identified by a module path that is declared in the first line of the go.mod file in our project. +Modules are identified by a module path that is declared in the first line of the go.mod file in our project. Visit the following resources to learn more: @@ -12,4 +12,4 @@ Visit the following resources to learn more: - [Go Modules Explained in 5 Minutes (by Golang Dojo on YouTube)](https://youtu.be/7xSxIwWJ9R4) - [How to create a module in Go](https://go.dev/doc/tutorial/create-module) - [How to use modules in Go](https://go.dev/blog/using-go-modules) -- [How to modify existing projects to use Go modules](https://jfrog.com/blog/converting-projects-for-go-modules/) \ No newline at end of file +- [How to modify existing projects to use Go modules](https://jfrog.com/blog/converting-projects-for-go-modules/) diff --git a/src/data/roadmaps/golang/content/101-go-advanced/101-working-with-json.md b/src/data/roadmaps/golang/content/101-go-advanced/101-working-with-json.md index 4e2ef30b2..fb0a3c3e7 100644 --- a/src/data/roadmaps/golang/content/101-go-advanced/101-working-with-json.md +++ b/src/data/roadmaps/golang/content/101-go-advanced/101-working-with-json.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [JSON](https://go.dev/blog/json) - [Guide to JSON in Golang](https://www.sohamkamani.com/golang/json/) -- [JSON to GO](https://mholt.github.io/json-to-go/) \ No newline at end of file +- [JSON to GO](https://mholt.github.io/json-to-go/) diff --git a/src/data/roadmaps/golang/content/101-go-advanced/102-types-and-type-assertions.md b/src/data/roadmaps/golang/content/101-go-advanced/102-types-and-type-assertions.md index cbe3fa4fb..1ac4ae4ea 100644 --- a/src/data/roadmaps/golang/content/101-go-advanced/102-types-and-type-assertions.md +++ b/src/data/roadmaps/golang/content/101-go-advanced/102-types-and-type-assertions.md @@ -2,7 +2,7 @@ Type assertions in Golang provide access to the exact type of variable of an interface. - Visit the following resources to learn more: +Visit the following resources to learn more: - [Types Assertions ](https://go.dev/tour/methods/15) - [Type Assertion](https://www.geeksforgeeks.org/type-assertions-in-golang/) diff --git a/src/data/roadmaps/golang/content/101-go-advanced/105-goroutines.md b/src/data/roadmaps/golang/content/101-go-advanced/105-goroutines.md index 638a03c1c..b58f14cf5 100644 --- a/src/data/roadmaps/golang/content/101-go-advanced/105-goroutines.md +++ b/src/data/roadmaps/golang/content/101-go-advanced/105-goroutines.md @@ -1,8 +1,8 @@ -# Goroutines +# Goroutines -Goroutines allow us to write concurrent programs in Go. Things like web servers handling thousands of requests or a website rendering new pages while also concurrently making network requests are a few example of concurrency. +Goroutines allow us to write concurrent programs in Go. Things like web servers handling thousands of requests or a website rendering new pages while also concurrently making network requests are a few example of concurrency. -In Go, each of these concurrent tasks are called `Goroutines`. +In Go, each of these concurrent tasks are called `Goroutines`. Visit the following resources to learn more: @@ -12,4 +12,4 @@ Visit the following resources to learn more: - [GoRoutines](https://www.youtube.com/watch?v=LvgVSSpwND8) - [Understanding Concurrency](https://www.youtube.com/watch?v=V-0ifUKCkBI) - [Go by Example: Goroutines](https://gobyexample.com/goroutines) -- [Golang Goroutine Basics You MUST Learn! (by Golang Dojo on YouTube)](https://youtu.be/oHIbeTmmTaA) \ No newline at end of file +- [Golang Goroutine Basics You MUST Learn! (by Golang Dojo on YouTube)](https://youtu.be/oHIbeTmmTaA) diff --git a/src/data/roadmaps/golang/content/101-go-advanced/107-buffer.md b/src/data/roadmaps/golang/content/101-go-advanced/107-buffer.md index a4d055005..1591fa690 100644 --- a/src/data/roadmaps/golang/content/101-go-advanced/107-buffer.md +++ b/src/data/roadmaps/golang/content/101-go-advanced/107-buffer.md @@ -1,9 +1,9 @@ # Buffer - The `buffer` belongs to the byte package of the Go language, and we can use these package to manipulate the byte of the string. +The `buffer` belongs to the byte package of the Go language, and we can use these package to manipulate the byte of the string. - Visit the following resources to learn more: +Visit the following resources to learn more: - [Buffer Examples](https://pkg.go.dev/bytes#example-Buffer) - [Buffer](https://www.educba.com/golang-buffer/) -- [Buffers in Golang](https://www.youtube.com/watch?v=NoDRq6Twkts) \ No newline at end of file +- [Buffers in Golang](https://www.youtube.com/watch?v=NoDRq6Twkts) diff --git a/src/data/roadmaps/golang/content/101-go-advanced/index.md b/src/data/roadmaps/golang/content/101-go-advanced/index.md index 4300b2fc0..08e1e1c15 100644 --- a/src/data/roadmaps/golang/content/101-go-advanced/index.md +++ b/src/data/roadmaps/golang/content/101-go-advanced/index.md @@ -1 +1 @@ -# Go advanced \ No newline at end of file +# Go advanced diff --git a/src/data/roadmaps/golang/content/102-go-building-clis/index.md b/src/data/roadmaps/golang/content/102-go-building-clis/index.md index 880c96118..666023907 100644 --- a/src/data/roadmaps/golang/content/102-go-building-clis/index.md +++ b/src/data/roadmaps/golang/content/102-go-building-clis/index.md @@ -6,4 +6,4 @@ Go applications are built into a single self contained binary making installing Visit the following resources to learn more: -- [Command-line Interfaces (CLIs)](https://go.dev/solutions/clis) \ No newline at end of file +- [Command-line Interfaces (CLIs)](https://go.dev/solutions/clis) diff --git a/src/data/roadmaps/golang/content/103-go-orms/index.md b/src/data/roadmaps/golang/content/103-go-orms/index.md index d0c90b88e..9bb3e3c05 100644 --- a/src/data/roadmaps/golang/content/103-go-orms/index.md +++ b/src/data/roadmaps/golang/content/103-go-orms/index.md @@ -2,4 +2,4 @@ Object–relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between type systems using object-oriented programming languages. This creates, in effect, a "virtual object database", hence a layer of abstraction, that can be used from within the programming language. -Most common ORM library in Go is [GORM](https://gorm.io/). \ No newline at end of file +Most common ORM library in Go is [GORM](https://gorm.io/). diff --git a/src/data/roadmaps/golang/content/104-go-web-frameworks/index.md b/src/data/roadmaps/golang/content/104-go-web-frameworks/index.md index 8d4a87a04..d627fe773 100644 --- a/src/data/roadmaps/golang/content/104-go-web-frameworks/index.md +++ b/src/data/roadmaps/golang/content/104-go-web-frameworks/index.md @@ -2,10 +2,10 @@ There are several famous web frameworks for Go. Most common ones being: -* Beego -* Gin -* Revel -* Echo +- Beego +- Gin +- Revel +- Echo Visit the following resources to learn more: diff --git a/src/data/roadmaps/golang/content/105-go-logging/index.md b/src/data/roadmaps/golang/content/105-go-logging/index.md index 21ddc849d..12342a13f 100644 --- a/src/data/roadmaps/golang/content/105-go-logging/index.md +++ b/src/data/roadmaps/golang/content/105-go-logging/index.md @@ -5,4 +5,4 @@ Go has built-in features to make it easier for programmers to implement logging. Visit the following resources to learn more: - [Logging in Go: Choosing a System and Using it](https://www.honeybadger.io/blog/golang-logging/) -- [Logging in Golang – How to Start](https://www.loggly.com/use-cases/logging-in-golang-how-to-start/) \ No newline at end of file +- [Logging in Golang – How to Start](https://www.loggly.com/use-cases/logging-in-golang-how-to-start/) diff --git a/src/data/roadmaps/golang/content/106-go-realtime-communication/100-melody.md b/src/data/roadmaps/golang/content/106-go-realtime-communication/100-melody.md index 0653fd7d7..513f3986c 100644 --- a/src/data/roadmaps/golang/content/106-go-realtime-communication/100-melody.md +++ b/src/data/roadmaps/golang/content/106-go-realtime-communication/100-melody.md @@ -4,4 +4,4 @@ Melody is websocket framework based on [github.com/gorilla/websocket](https://gi Visit the following resources to learn more: -- [GitHub Repository](https://github.com/olahol/melody) \ No newline at end of file +- [GitHub Repository](https://github.com/olahol/melody) diff --git a/src/data/roadmaps/golang/content/106-go-realtime-communication/index.md b/src/data/roadmaps/golang/content/106-go-realtime-communication/index.md index e32d1e64c..c4a90cf5e 100644 --- a/src/data/roadmaps/golang/content/106-go-realtime-communication/index.md +++ b/src/data/roadmaps/golang/content/106-go-realtime-communication/index.md @@ -1 +1 @@ -# Go realtime communication \ No newline at end of file +# Go realtime communication diff --git a/src/data/roadmaps/golang/content/107-go-api-clients/100-rest/100-heimdall.md b/src/data/roadmaps/golang/content/107-go-api-clients/100-rest/100-heimdall.md index a9e7d099f..068c50016 100644 --- a/src/data/roadmaps/golang/content/107-go-api-clients/100-rest/100-heimdall.md +++ b/src/data/roadmaps/golang/content/107-go-api-clients/100-rest/100-heimdall.md @@ -1,6 +1,5 @@ # Heimdall - Heimdall is an HTTP client that helps your application make a large number of requests, at scale. With Heimdall, you can: - Use a hystrix-like circuit breaker to control failing requests diff --git a/src/data/roadmaps/golang/content/107-go-api-clients/100-rest/101-grequests.md b/src/data/roadmaps/golang/content/107-go-api-clients/100-rest/101-grequests.md index cb3e242e0..03f24a6ac 100644 --- a/src/data/roadmaps/golang/content/107-go-api-clients/100-rest/101-grequests.md +++ b/src/data/roadmaps/golang/content/107-go-api-clients/100-rest/101-grequests.md @@ -1,9 +1,9 @@ # Grequests - -Golang implementation of Python Grequests library(one of well known HTTP Library in Python). +Golang implementation of Python Grequests library(one of well known HTTP Library in Python). Features: + - Responses can be serialized into JSON and XML - Easy file uploads - Easy file downloads @@ -11,4 +11,4 @@ Features: Visit the following resources to learn more: -- [GitHub Repository](https://github.com/levigross/grequests) \ No newline at end of file +- [GitHub Repository](https://github.com/levigross/grequests) diff --git a/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/100-graphql-go.md b/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/100-graphql-go.md index 4b07adb85..0ad813f1b 100644 --- a/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/100-graphql-go.md +++ b/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/100-graphql-go.md @@ -5,6 +5,6 @@ A `GraphQL` package for `Go`. Visit the following resources to learn more: - [Graphql-go homepage](https://graphql-go.github.io/graphql-go.org/) -- [Graphql-go documentation](https://pkg.go.dev/github.com/graphql-go/graphql ) +- [Graphql-go documentation](https://pkg.go.dev/github.com/graphql-go/graphql) - [Github Repository](https://github.com/graphql-go/graphql) - [GraphQL-Go - Golang Tutorial (by TechPractice on YouTube)](https://www.youtube.com/watch?v=YK7BQfQ84ws) diff --git a/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md b/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md index e6bdb6076..79232bdd6 100644 --- a/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md +++ b/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md @@ -13,4 +13,4 @@ Visit the following resources to learn more: - [Digital Ocean: An Introduction to GraphQL](https://www.digitalocean.com/community/tutorials/an-introduction-to-graphql) - [How to GraphQL: The Fullstack Tutorial for GraphQL](https://www.howtographql.com/) - [GraphQL Full Course - Novice to Expert (by freeCodeCamp.org on YouTube)](https://www.youtube.com/watch?v=ed8SzALpx1Q) -- [Beginner GraphQL Series (by Ben Awad on YouTube)](https://www.youtube.com/playlist?list=PLN3n1USn4xln0j_NN9k4j5hS1thsGibKi) \ No newline at end of file +- [Beginner GraphQL Series (by Ben Awad on YouTube)](https://www.youtube.com/playlist?list=PLN3n1USn4xln0j_NN9k4j5hS1thsGibKi) diff --git a/src/data/roadmaps/golang/content/109-go-microservices/101-rpcx.md b/src/data/roadmaps/golang/content/109-go-microservices/101-rpcx.md index 282f8c380..644032245 100644 --- a/src/data/roadmaps/golang/content/109-go-microservices/101-rpcx.md +++ b/src/data/roadmaps/golang/content/109-go-microservices/101-rpcx.md @@ -1,6 +1,7 @@ # Rpcx Rpcx is a RPC (Remote Procedure Call) framework like Alibaba Dubbo and Weibo Motan. Some of the advantages on using Rpcx: + - Simple: easy to learn, easy to develop, easy to intergate and easy to deploy - Performance: high performance (>= grpc-go) - Cross-platform: support raw slice of bytes, JSON, Protobuf and MessagePack. Theoretically it can be used with java, php, python, c/c++, node.js, c# and other platforms diff --git a/src/data/roadmaps/golang/content/109-go-microservices/104-go-zero.md b/src/data/roadmaps/golang/content/109-go-microservices/104-go-zero.md index d329865c7..6ea1799de 100644 --- a/src/data/roadmaps/golang/content/109-go-microservices/104-go-zero.md +++ b/src/data/roadmaps/golang/content/109-go-microservices/104-go-zero.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Go-zero](https://go-zero.dev/) - [Go-zero Docs](https://go-zero.dev/docs/introduction) -- [GitHub Repository](https://github.com/zeromicro/go-zero) \ No newline at end of file +- [GitHub Repository](https://github.com/zeromicro/go-zero) diff --git a/src/data/roadmaps/golang/content/109-go-microservices/105-protocol-buffers.md b/src/data/roadmaps/golang/content/109-go-microservices/105-protocol-buffers.md index 48b0515b6..9fcb1706b 100644 --- a/src/data/roadmaps/golang/content/109-go-microservices/105-protocol-buffers.md +++ b/src/data/roadmaps/golang/content/109-go-microservices/105-protocol-buffers.md @@ -3,6 +3,7 @@ Protocol Buffers(Protobuf) is a free, open-source, language-neutral, platform-neutral, extensible data format used to serialize structured data. It’s like JSON, except it's smaller and faster, and it generates native language bindings. Some of the advantages of using protocol buffers include: + - Compact data storage - Fast parsing - Availability in many programming languages diff --git a/src/data/roadmaps/golang/golang.md b/src/data/roadmaps/golang/golang.md index 0ec856003..5048248b4 100644 --- a/src/data/roadmaps/golang/golang.md +++ b/src/data/roadmaps/golang/golang.md @@ -1,59 +1,58 @@ --- -jsonUrl: "/jsons/roadmaps/golang.json" -pdfUrl: "/pdfs/roadmaps/golang.pdf" +jsonUrl: '/jsons/roadmaps/golang.json' +pdfUrl: '/pdfs/roadmaps/golang.pdf' order: 11 -briefTitle: "Go" -briefDescription: "Step by step guide to becoming a Go developer in 2023" -title: "Go Developer" -description: "Step by step guide to becoming a Go developer in 2023" +briefTitle: 'Go' +briefDescription: 'Step by step guide to becoming a Go developer in 2023' +title: 'Go Developer' +description: 'Step by step guide to becoming a Go developer in 2023' hasTopics: true dimensions: width: 968 height: 1495.21 schema: - headline: "Go Developer Roadmap" - description: "Learn how to become a Go Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/golang.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Go Developer Roadmap' + description: 'Learn how to become a Go Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/golang.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Learn to become a Go developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for Go development. Learn to become a modern Go developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Learn to become a Go developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for Go development. Learn to become a modern Go developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a golang developer" - - "guide to becoming a go developer" - - "golang developer" - - "go developer" - - "guide to golang" - - "guide to go" - - "golang roadmap" - - "go roadmap" - - "golang skills" - - "go skills" - - "golang skills test" - - "go skills test" - - "skills for golang" - - "skills for go" - - "cloud development" - - "what is golang" - - "what is go" - - "golang quiz" - - "go quiz" - - "golang interview questions" - - "go interview questions" + - 'guide to becoming a golang developer' + - 'guide to becoming a go developer' + - 'golang developer' + - 'go developer' + - 'guide to golang' + - 'guide to go' + - 'golang roadmap' + - 'go roadmap' + - 'golang skills' + - 'go skills' + - 'golang skills test' + - 'go skills test' + - 'skills for golang' + - 'skills for go' + - 'cloud development' + - 'what is golang' + - 'what is go' + - 'golang quiz' + - 'go quiz' + - 'golang interview questions' + - 'go interview questions' relatedRoadmaps: - - "backend" - - "devops" - - "python" - - "java" - - "javascript" - - "nodejs" + - 'backend' + - 'devops' + - 'python' + - 'java' + - 'javascript' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/graphql/content/100-graphql-introduction/100-what-is-graphql.md b/src/data/roadmaps/graphql/content/100-graphql-introduction/100-what-is-graphql.md index 95a32b054..28a341090 100644 --- a/src/data/roadmaps/graphql/content/100-graphql-introduction/100-what-is-graphql.md +++ b/src/data/roadmaps/graphql/content/100-graphql-introduction/100-what-is-graphql.md @@ -7,4 +7,4 @@ A GraphQL service is created by defining types and fields on those types, then p To learn more, visit the following links: - [Introduction to graphQL](https://graphql.org/learn/) -- [Tutorial - What is graphQL?](https://www.howtographql.com/basics/0-introduction/) \ No newline at end of file +- [Tutorial - What is graphQL?](https://www.howtographql.com/basics/0-introduction/) diff --git a/src/data/roadmaps/graphql/content/100-graphql-introduction/101-problems-graphql-solves.md b/src/data/roadmaps/graphql/content/100-graphql-introduction/101-problems-graphql-solves.md index e3884586a..d1c615a75 100644 --- a/src/data/roadmaps/graphql/content/100-graphql-introduction/101-problems-graphql-solves.md +++ b/src/data/roadmaps/graphql/content/100-graphql-introduction/101-problems-graphql-solves.md @@ -8,4 +8,4 @@ GraphQL solves several problems commonly faced when building APIs, including: - **Inefficient versioning:** With REST, creating a new endpoint for each version of an API can quickly become cumbersome and hard to maintain. GraphQL allows for seamless versioning by adding new fields and types, rather than creating new endpoints. -- **Lack of flexibility:** REST APIs are typically fixed, meaning that the client has to work with the data structure provided by the API. GraphQL allows the client to request exactly the data it needs and receive it in a predictable format, increasing flexibility. \ No newline at end of file +- **Lack of flexibility:** REST APIs are typically fixed, meaning that the client has to work with the data structure provided by the API. GraphQL allows the client to request exactly the data it needs and receive it in a predictable format, increasing flexibility. diff --git a/src/data/roadmaps/graphql/content/100-graphql-introduction/102-thinking-in-graphs.md b/src/data/roadmaps/graphql/content/100-graphql-introduction/102-thinking-in-graphs.md index 6cd1cdfbe..b86578635 100644 --- a/src/data/roadmaps/graphql/content/100-graphql-introduction/102-thinking-in-graphs.md +++ b/src/data/roadmaps/graphql/content/100-graphql-introduction/102-thinking-in-graphs.md @@ -6,4 +6,4 @@ In GraphQL, data is represented as a graph, where nodes represent objects and ed Learn more from the following links: -- [GraphQL - Thinking in Graphs](https://graphql.org/learn/thinking-in-graphs/) \ No newline at end of file +- [GraphQL - Thinking in Graphs](https://graphql.org/learn/thinking-in-graphs/) diff --git a/src/data/roadmaps/graphql/content/100-graphql-introduction/103-graphql-on-the-frontend.md b/src/data/roadmaps/graphql/content/100-graphql-introduction/103-graphql-on-the-frontend.md index 305c10a63..ae4300c63 100644 --- a/src/data/roadmaps/graphql/content/100-graphql-introduction/103-graphql-on-the-frontend.md +++ b/src/data/roadmaps/graphql/content/100-graphql-introduction/103-graphql-on-the-frontend.md @@ -8,4 +8,4 @@ By using GraphQL on the frontend, developers can benefit from the flexibility an Learn more from following links: -- [Get started with GraphQL on the frontend](https://www.howtographql.com/react-apollo/0-introduction/) \ No newline at end of file +- [Get started with GraphQL on the frontend](https://www.howtographql.com/react-apollo/0-introduction/) diff --git a/src/data/roadmaps/graphql/content/100-graphql-introduction/104-graphql-on-the-backend.md b/src/data/roadmaps/graphql/content/100-graphql-introduction/104-graphql-on-the-backend.md index 0faf3c1bb..f45359015 100644 --- a/src/data/roadmaps/graphql/content/100-graphql-introduction/104-graphql-on-the-backend.md +++ b/src/data/roadmaps/graphql/content/100-graphql-introduction/104-graphql-on-the-backend.md @@ -8,4 +8,4 @@ The GraphQL server is responsible for handling the incoming queries and mutation Learn more from the following links: -- [How to use GraphQL in Backend?](https://www.howtographql.com/) \ No newline at end of file +- [How to use GraphQL in Backend?](https://www.howtographql.com/) diff --git a/src/data/roadmaps/graphql/content/100-graphql-introduction/index.md b/src/data/roadmaps/graphql/content/100-graphql-introduction/index.md index daad4625e..544f10e33 100644 --- a/src/data/roadmaps/graphql/content/100-graphql-introduction/index.md +++ b/src/data/roadmaps/graphql/content/100-graphql-introduction/index.md @@ -9,4 +9,4 @@ With GraphQL, the client defines the structure of the data it needs, by sending To learn more, visit the following links: - [Introduction to GraphQL](https://graphql.org/learn/) -- [Getting started with GraphQL](https://graphql.org/) \ No newline at end of file +- [Getting started with GraphQL](https://graphql.org/) diff --git a/src/data/roadmaps/graphql/content/101-graphql-queries/100-what-are-queries.md b/src/data/roadmaps/graphql/content/101-graphql-queries/100-what-are-queries.md index 30f3db71a..7b4b3b8e4 100644 --- a/src/data/roadmaps/graphql/content/101-graphql-queries/100-what-are-queries.md +++ b/src/data/roadmaps/graphql/content/101-graphql-queries/100-what-are-queries.md @@ -4,4 +4,4 @@ In GraphQL, a query is a request made by the client to the server to retrieve da Learn more from following links: -- [Introduction of GraphQL - Query](https://graphql.org/learn/queries/) \ No newline at end of file +- [Introduction of GraphQL - Query](https://graphql.org/learn/queries/) diff --git a/src/data/roadmaps/graphql/content/101-graphql-queries/101-fields.md b/src/data/roadmaps/graphql/content/101-graphql-queries/101-fields.md index c2c3a5eaf..173486e53 100644 --- a/src/data/roadmaps/graphql/content/101-graphql-queries/101-fields.md +++ b/src/data/roadmaps/graphql/content/101-graphql-queries/101-fields.md @@ -6,4 +6,4 @@ Fields are defined in the GraphQL schema, which is a blueprint of the data that Learn more from the following links: -- [GraphQL: Types and Fields](https://graphql.org/learn/queries/#fields) \ No newline at end of file +- [GraphQL: Types and Fields](https://graphql.org/learn/queries/#fields) diff --git a/src/data/roadmaps/graphql/content/101-graphql-queries/102-aliases.md b/src/data/roadmaps/graphql/content/101-graphql-queries/102-aliases.md index 21fe89d08..fc342013b 100644 --- a/src/data/roadmaps/graphql/content/101-graphql-queries/102-aliases.md +++ b/src/data/roadmaps/graphql/content/101-graphql-queries/102-aliases.md @@ -4,4 +4,4 @@ Aliases in GraphQL are a way to rename fields when they are requested in a query To learn more, visit the following links: -- [What are GraphQL Aliases?](https://graphql.org/learn/queries/#aliases) \ No newline at end of file +- [What are GraphQL Aliases?](https://graphql.org/learn/queries/#aliases) diff --git a/src/data/roadmaps/graphql/content/101-graphql-queries/103-arguments.md b/src/data/roadmaps/graphql/content/101-graphql-queries/103-arguments.md index 04e75550b..93a2dad9e 100644 --- a/src/data/roadmaps/graphql/content/101-graphql-queries/103-arguments.md +++ b/src/data/roadmaps/graphql/content/101-graphql-queries/103-arguments.md @@ -4,4 +4,4 @@ Arguments in GraphQL are pieces of information that are passed to a field or a d Learn more from the following links: -- [GraphQL - Arguments](https://graphql.org/learn/queries/#arguments) \ No newline at end of file +- [GraphQL - Arguments](https://graphql.org/learn/queries/#arguments) diff --git a/src/data/roadmaps/graphql/content/101-graphql-queries/104-directives.md b/src/data/roadmaps/graphql/content/101-graphql-queries/104-directives.md index 9122c844a..4318c7f63 100644 --- a/src/data/roadmaps/graphql/content/101-graphql-queries/104-directives.md +++ b/src/data/roadmaps/graphql/content/101-graphql-queries/104-directives.md @@ -4,4 +4,4 @@ Directives in GraphQL are a way to modify the execution of a query or a field. T To learn more, visit the following links: -- [Directives in GraphQL](https://graphql.org/learn/queries/#directives) \ No newline at end of file +- [Directives in GraphQL](https://graphql.org/learn/queries/#directives) diff --git a/src/data/roadmaps/graphql/content/101-graphql-queries/105-variables.md b/src/data/roadmaps/graphql/content/101-graphql-queries/105-variables.md index 29edd83c7..acb03c4b5 100644 --- a/src/data/roadmaps/graphql/content/101-graphql-queries/105-variables.md +++ b/src/data/roadmaps/graphql/content/101-graphql-queries/105-variables.md @@ -5,4 +5,4 @@ Variables in GraphQL are a way to pass dynamic values to a query or a mutation. To learn more, visit the following links: - [GraphQL Variables](https://dgraph.io/docs/graphql/api/variables/) -- [Intro to Variables in GraphQL](https://graphql.org/learn/queries/#variables) \ No newline at end of file +- [Intro to Variables in GraphQL](https://graphql.org/learn/queries/#variables) diff --git a/src/data/roadmaps/graphql/content/101-graphql-queries/106-fragments.md b/src/data/roadmaps/graphql/content/101-graphql-queries/106-fragments.md index 13b171b53..8d5d62df1 100644 --- a/src/data/roadmaps/graphql/content/101-graphql-queries/106-fragments.md +++ b/src/data/roadmaps/graphql/content/101-graphql-queries/106-fragments.md @@ -4,4 +4,4 @@ In GraphQL, a fragment is a reusable piece of a GraphQL query that can be used t To learn more, visit the following links: -- [Intro to Fragments in GraphQL](https://graphql.org/learn/queries/#fragments) \ No newline at end of file +- [Intro to Fragments in GraphQL](https://graphql.org/learn/queries/#fragments) diff --git a/src/data/roadmaps/graphql/content/101-graphql-queries/index.md b/src/data/roadmaps/graphql/content/101-graphql-queries/index.md index 5e5b30719..6e77945c8 100644 --- a/src/data/roadmaps/graphql/content/101-graphql-queries/index.md +++ b/src/data/roadmaps/graphql/content/101-graphql-queries/index.md @@ -6,4 +6,4 @@ A GraphQL query is structured as a single object, with a "query" or "mutation" f To learn more, visit the following links: -- [What are GraphQL Queries?](https://graphql.org/learn/queries/) \ No newline at end of file +- [What are GraphQL Queries?](https://graphql.org/learn/queries/) diff --git a/src/data/roadmaps/graphql/content/102-mutations/100-what-are-mutations.md b/src/data/roadmaps/graphql/content/102-mutations/100-what-are-mutations.md index 86b04c7c3..0de84bca8 100644 --- a/src/data/roadmaps/graphql/content/102-mutations/100-what-are-mutations.md +++ b/src/data/roadmaps/graphql/content/102-mutations/100-what-are-mutations.md @@ -6,4 +6,4 @@ A mutation typically includes fields that specify the data to be changed and the Learn more from the following resources: -- [Get started with Mutations](https://graphql.org/learn/queries/#mutations) \ No newline at end of file +- [Get started with Mutations](https://graphql.org/learn/queries/#mutations) diff --git a/src/data/roadmaps/graphql/content/102-mutations/101-multiple-mutation-fields.md b/src/data/roadmaps/graphql/content/102-mutations/101-multiple-mutation-fields.md index 4e3388a9c..f73d1bdb8 100644 --- a/src/data/roadmaps/graphql/content/102-mutations/101-multiple-mutation-fields.md +++ b/src/data/roadmaps/graphql/content/102-mutations/101-multiple-mutation-fields.md @@ -4,4 +4,4 @@ In GraphQL, it is possible to perform multiple mutations in a single query by in Learn more from the following links: -- [Guide to Multiple fields in mutations](https://graphql.org/learn/queries/#multiple-fields-in-mutations) \ No newline at end of file +- [Guide to Multiple fields in mutations](https://graphql.org/learn/queries/#multiple-fields-in-mutations) diff --git a/src/data/roadmaps/graphql/content/102-mutations/102-operation-name.md b/src/data/roadmaps/graphql/content/102-mutations/102-operation-name.md index f5eba5e10..ced70c602 100644 --- a/src/data/roadmaps/graphql/content/102-mutations/102-operation-name.md +++ b/src/data/roadmaps/graphql/content/102-mutations/102-operation-name.md @@ -4,4 +4,4 @@ In GraphQL, an operation name is an optional identifier that can be used to uniq Learn more from the following resources: -- [Intro to Operation Name](https://graphql.org/learn/queries/#operation-name) \ No newline at end of file +- [Intro to Operation Name](https://graphql.org/learn/queries/#operation-name) diff --git a/src/data/roadmaps/graphql/content/102-mutations/index.md b/src/data/roadmaps/graphql/content/102-mutations/index.md index 7339efa5d..34433258c 100644 --- a/src/data/roadmaps/graphql/content/102-mutations/index.md +++ b/src/data/roadmaps/graphql/content/102-mutations/index.md @@ -6,4 +6,4 @@ The mutation includes fields that specify the data to be changed, the operation To learn more, visit the following links: -- [Getting started with Mutations](https://graphql.org/learn/queries/#mutations) \ No newline at end of file +- [Getting started with Mutations](https://graphql.org/learn/queries/#mutations) diff --git a/src/data/roadmaps/graphql/content/103-subscriptions/100-what-are-subscriptions.md b/src/data/roadmaps/graphql/content/103-subscriptions/100-what-are-subscriptions.md index e0dd3330e..6a9a411c8 100644 --- a/src/data/roadmaps/graphql/content/103-subscriptions/100-what-are-subscriptions.md +++ b/src/data/roadmaps/graphql/content/103-subscriptions/100-what-are-subscriptions.md @@ -6,4 +6,4 @@ Subscriptions are defined on the server and are structured similar to queries an To learn more, visit the following links: -- [How GraphQL Subscriptions Work?](https://the-guild.dev/blog/subscriptions-and-live-queries-real-time-with-graphql) \ No newline at end of file +- [How GraphQL Subscriptions Work?](https://the-guild.dev/blog/subscriptions-and-live-queries-real-time-with-graphql) diff --git a/src/data/roadmaps/graphql/content/103-subscriptions/101-event-based-subscriptions.md b/src/data/roadmaps/graphql/content/103-subscriptions/101-event-based-subscriptions.md index ce38e5d6e..125905b12 100644 --- a/src/data/roadmaps/graphql/content/103-subscriptions/101-event-based-subscriptions.md +++ b/src/data/roadmaps/graphql/content/103-subscriptions/101-event-based-subscriptions.md @@ -2,4 +2,4 @@ Event-based subscriptions in GraphQL are a way to push real-time updates to the client based on specific events that occur on the server. These events can be triggered by external sources such as user actions, sensor data, or other systems, or by internal actions such as database updates. -With event-based subscriptions, the client can subscribe to a specific event or set of events and receive updates in real-time as soon as the event occurs. This allows the client to receive notifications about important changes in the system without the need to constantly poll the server for updates. \ No newline at end of file +With event-based subscriptions, the client can subscribe to a specific event or set of events and receive updates in real-time as soon as the event occurs. This allows the client to receive notifications about important changes in the system without the need to constantly poll the server for updates. diff --git a/src/data/roadmaps/graphql/content/103-subscriptions/102-live-queries.md b/src/data/roadmaps/graphql/content/103-subscriptions/102-live-queries.md index c8e5d7475..c1e9f19fe 100644 --- a/src/data/roadmaps/graphql/content/103-subscriptions/102-live-queries.md +++ b/src/data/roadmaps/graphql/content/103-subscriptions/102-live-queries.md @@ -6,4 +6,4 @@ With live queries, the client can subscribe to a specific query and receive upda Learn more from the following links: -- [GraphQL Live Queries](https://the-guild.dev/blog/collecting-graphql-live-query-resource-identifier-with-graphql-tools) \ No newline at end of file +- [GraphQL Live Queries](https://the-guild.dev/blog/collecting-graphql-live-query-resource-identifier-with-graphql-tools) diff --git a/src/data/roadmaps/graphql/content/103-subscriptions/103-defer-stream-directives.md b/src/data/roadmaps/graphql/content/103-subscriptions/103-defer-stream-directives.md index 4cd306b6a..cfe926072 100644 --- a/src/data/roadmaps/graphql/content/103-subscriptions/103-defer-stream-directives.md +++ b/src/data/roadmaps/graphql/content/103-subscriptions/103-defer-stream-directives.md @@ -6,4 +6,4 @@ The "defer" directive is used to delay the fetching of a field's data until the Learn more from the following links: -- [Defer and Stream in GraphQL](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) \ No newline at end of file +- [Defer and Stream in GraphQL](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) diff --git a/src/data/roadmaps/graphql/content/103-subscriptions/index.md b/src/data/roadmaps/graphql/content/103-subscriptions/index.md index d3ca0b918..c66d3d5fc 100644 --- a/src/data/roadmaps/graphql/content/103-subscriptions/index.md +++ b/src/data/roadmaps/graphql/content/103-subscriptions/index.md @@ -6,4 +6,4 @@ A subscription includes a "subscription" field at the top level, followed by the Learn more from following links: -- [Subscriptions and Live Queries - Real Time with GraphQL](https://the-guild.dev/blog/subscriptions-and-live-queries-real-time-with-graphql) \ No newline at end of file +- [Subscriptions and Live Queries - Real Time with GraphQL](https://the-guild.dev/blog/subscriptions-and-live-queries-real-time-with-graphql) diff --git a/src/data/roadmaps/graphql/content/104-schema/100-type-system.md b/src/data/roadmaps/graphql/content/104-schema/100-type-system.md index e27deee8c..67b402b5b 100644 --- a/src/data/roadmaps/graphql/content/104-schema/100-type-system.md +++ b/src/data/roadmaps/graphql/content/104-schema/100-type-system.md @@ -10,4 +10,4 @@ GraphQL is a strongly typed language. Type System defines various data types tha Learn more from the following links: -- [Get started with Type system](https://graphql.org/learn/schema/#type-system) \ No newline at end of file +- [Get started with Type system](https://graphql.org/learn/schema/#type-system) diff --git a/src/data/roadmaps/graphql/content/104-schema/101-fields.md b/src/data/roadmaps/graphql/content/104-schema/101-fields.md index 710aff427..778829689 100644 --- a/src/data/roadmaps/graphql/content/104-schema/101-fields.md +++ b/src/data/roadmaps/graphql/content/104-schema/101-fields.md @@ -6,4 +6,4 @@ Each field in a GraphQL schema can return a scalar value (such as a string or an Learn more from the following links: -- [GraphQL: Types and Fields](https://graphql.org/learn/queries/#fields) \ No newline at end of file +- [GraphQL: Types and Fields](https://graphql.org/learn/queries/#fields) diff --git a/src/data/roadmaps/graphql/content/104-schema/102-scalars.md b/src/data/roadmaps/graphql/content/104-schema/102-scalars.md index 1bc3d9bcf..4d299509e 100644 --- a/src/data/roadmaps/graphql/content/104-schema/102-scalars.md +++ b/src/data/roadmaps/graphql/content/104-schema/102-scalars.md @@ -14,4 +14,4 @@ Scalars are “leaf” values in GraphQL. There are several built-in scalars, an Learn more from the following links: -- [Get started with Scalars in GraphQL](https://graphql.org/learn/schema/#scalar-types) \ No newline at end of file +- [Get started with Scalars in GraphQL](https://graphql.org/learn/schema/#scalar-types) diff --git a/src/data/roadmaps/graphql/content/104-schema/103-enums.md b/src/data/roadmaps/graphql/content/104-schema/103-enums.md index fbf71f5dc..0b70b7eb4 100644 --- a/src/data/roadmaps/graphql/content/104-schema/103-enums.md +++ b/src/data/roadmaps/graphql/content/104-schema/103-enums.md @@ -7,4 +7,4 @@ Enums also called as enumeration types are a special kind of scalar that is rest Learn more from the following links: -- [What are Enums?](https://graphql.org/learn/schema/#enumeration-types) \ No newline at end of file +- [What are Enums?](https://graphql.org/learn/schema/#enumeration-types) diff --git a/src/data/roadmaps/graphql/content/104-schema/104-objects.md b/src/data/roadmaps/graphql/content/104-schema/104-objects.md index 0d03e96d4..0e8885bf8 100644 --- a/src/data/roadmaps/graphql/content/104-schema/104-objects.md +++ b/src/data/roadmaps/graphql/content/104-schema/104-objects.md @@ -5,4 +5,4 @@ In GraphQL, an object is a type that represents a group of fields. Objects can b To learn more, visit the following: - [Object Types and Fields](https://graphql.org/learn/schema/#object-types-and-fields) -- [Object Types](https://graphql.org/graphql-js/object-types/) \ No newline at end of file +- [Object Types](https://graphql.org/graphql-js/object-types/) diff --git a/src/data/roadmaps/graphql/content/104-schema/105-lists.md b/src/data/roadmaps/graphql/content/104-schema/105-lists.md index d317e204d..3524bef61 100644 --- a/src/data/roadmaps/graphql/content/104-schema/105-lists.md +++ b/src/data/roadmaps/graphql/content/104-schema/105-lists.md @@ -6,4 +6,4 @@ Lists are used to represent an array of items in a GraphQL schema, and can be us Learn more from the following links: -- [Get started with Lists](https://graphql.org/learn/schema/#lists-and-non-null) \ No newline at end of file +- [Get started with Lists](https://graphql.org/learn/schema/#lists-and-non-null) diff --git a/src/data/roadmaps/graphql/content/104-schema/106-interfaces.md b/src/data/roadmaps/graphql/content/104-schema/106-interfaces.md index e2060c02f..f57a3c4a9 100644 --- a/src/data/roadmaps/graphql/content/104-schema/106-interfaces.md +++ b/src/data/roadmaps/graphql/content/104-schema/106-interfaces.md @@ -6,4 +6,4 @@ In GraphQL, lists can also be used within interfaces to define the return type f Learn more from the following links: -- [Get started with Interfaces](https://graphql.org/learn/schema/#interfaces) \ No newline at end of file +- [Get started with Interfaces](https://graphql.org/learn/schema/#interfaces) diff --git a/src/data/roadmaps/graphql/content/104-schema/107-unions.md b/src/data/roadmaps/graphql/content/104-schema/107-unions.md index 6e35131b7..74fee8156 100644 --- a/src/data/roadmaps/graphql/content/104-schema/107-unions.md +++ b/src/data/roadmaps/graphql/content/104-schema/107-unions.md @@ -6,4 +6,4 @@ Unions don't allow to specify a common set of fields to be queried across multip Learn more from the following links: -- [Get started with Union in GraphQL](https://graphql.org/learn/schema/#union-types) \ No newline at end of file +- [Get started with Union in GraphQL](https://graphql.org/learn/schema/#union-types) diff --git a/src/data/roadmaps/graphql/content/104-schema/108-arguments.md b/src/data/roadmaps/graphql/content/104-schema/108-arguments.md index 25b064c3d..7c0d378c2 100644 --- a/src/data/roadmaps/graphql/content/104-schema/108-arguments.md +++ b/src/data/roadmaps/graphql/content/104-schema/108-arguments.md @@ -4,4 +4,4 @@ In GraphQL, an argument is a value that is passed to a field in a query or mutat To learn more, visit the following links: -- [Get started with Arguments in GraphQL](https://graphql.org/learn/schema/#arguments) \ No newline at end of file +- [Get started with Arguments in GraphQL](https://graphql.org/learn/schema/#arguments) diff --git a/src/data/roadmaps/graphql/content/104-schema/index.md b/src/data/roadmaps/graphql/content/104-schema/index.md index d839363ff..6848632e5 100644 --- a/src/data/roadmaps/graphql/content/104-schema/index.md +++ b/src/data/roadmaps/graphql/content/104-schema/index.md @@ -6,4 +6,4 @@ A GraphQL schema is defined using the GraphQL Schema Definition Language (SDL), Learn more from the following links: -- [Get started with Schema](https://graphql.org/learn/schema/) \ No newline at end of file +- [Get started with Schema](https://graphql.org/learn/schema/) diff --git a/src/data/roadmaps/graphql/content/104-validation.md b/src/data/roadmaps/graphql/content/104-validation.md index 2f006dfcc..082d0f90a 100644 --- a/src/data/roadmaps/graphql/content/104-validation.md +++ b/src/data/roadmaps/graphql/content/104-validation.md @@ -4,4 +4,4 @@ Validation in GraphQL refers to the process of checking whether a GraphQL query Learn more from the following links: -- [Get Started with Validation in GraphQL](https://graphql.org/learn/validation/) \ No newline at end of file +- [Get Started with Validation in GraphQL](https://graphql.org/learn/validation/) diff --git a/src/data/roadmaps/graphql/content/105-execution/100-root-fields.md b/src/data/roadmaps/graphql/content/105-execution/100-root-fields.md index 40097bc15..794aaafea 100644 --- a/src/data/roadmaps/graphql/content/105-execution/100-root-fields.md +++ b/src/data/roadmaps/graphql/content/105-execution/100-root-fields.md @@ -9,4 +9,4 @@ There are two types of root fields in GraphQL: Learn more from the following links: -- [Get Started with Root Feilds](https://graphql.org/learn/execution/#root-fields-resolvers) \ No newline at end of file +- [Get Started with Root Feilds](https://graphql.org/learn/execution/#root-fields-resolvers) diff --git a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/100-synchronous.md b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/100-synchronous.md index a040af36a..4ee007e9f 100644 --- a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/100-synchronous.md +++ b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/100-synchronous.md @@ -2,4 +2,4 @@ In GraphQL, a resolver is a function that is responsible for fetching the data for a field in a query or mutation. Resolvers are defined in the schema and are executed by the GraphQL server when a query or mutation is received. -A synchronous resolver is a type of resolver that runs and completes its execution before returning any value. It directly returns the result of the computation, without waiting for any external event such as a database query or a third-party API call. \ No newline at end of file +A synchronous resolver is a type of resolver that runs and completes its execution before returning any value. It directly returns the result of the computation, without waiting for any external event such as a database query or a third-party API call. diff --git a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/101-asynchronous.md b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/101-asynchronous.md index 932c93696..09fe3fa51 100644 --- a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/101-asynchronous.md +++ b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/101-asynchronous.md @@ -6,4 +6,4 @@ An asynchronous resolver is a type of resolver that runs, but instead of returni Learn more from the following links: -- [Get Started with Asynchronous](https://graphql.org/learn/execution/#asynchronous-resolvers) \ No newline at end of file +- [Get Started with Asynchronous](https://graphql.org/learn/execution/#asynchronous-resolvers) diff --git a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/102-scalar-coercion.md b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/102-scalar-coercion.md index 08970d70d..c3ff4952b 100644 --- a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/102-scalar-coercion.md +++ b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/102-scalar-coercion.md @@ -6,4 +6,4 @@ Scalar coercion can be implemented in the resolvers by using the **GraphQLScalar Learn more from the following links: -- [Get started with Scalar coercion](https://graphql.org/learn/execution/#scalar-coercion) \ No newline at end of file +- [Get started with Scalar coercion](https://graphql.org/learn/execution/#scalar-coercion) diff --git a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/103-lists.md b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/103-lists.md index 6fc435d7e..d87bf11e1 100644 --- a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/103-lists.md +++ b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/103-lists.md @@ -2,8 +2,8 @@ In GraphQL, a list is a type that represents an ordered collection of items. Lists can be used as the return type for a field in a query or mutation, and can contain any type of items, including scalars and objects. -The resolver function for a list field can retrieve the data from a database or a third-party API and return it as an array. +The resolver function for a list field can retrieve the data from a database or a third-party API and return it as an array. Learn more from the following links: -- [Get started with Lists and Non-Null](https://graphql.org/learn/schema/#lists-and-non-null) \ No newline at end of file +- [Get started with Lists and Non-Null](https://graphql.org/learn/schema/#lists-and-non-null) diff --git a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/index.md b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/index.md index 07b8a9ca8..a2422e51b 100644 --- a/src/data/roadmaps/graphql/content/105-execution/101-resolvers/index.md +++ b/src/data/roadmaps/graphql/content/105-execution/101-resolvers/index.md @@ -6,4 +6,4 @@ Each field in a GraphQL schema has a corresponding resolver function that is res Learn more from the following links: -- [Guide to Resolver](https://the-guild.dev/blog/better-type-safety-for-resolvers-with-graphql-codegen) \ No newline at end of file +- [Guide to Resolver](https://the-guild.dev/blog/better-type-safety-for-resolvers-with-graphql-codegen) diff --git a/src/data/roadmaps/graphql/content/105-execution/102-validation.md b/src/data/roadmaps/graphql/content/105-execution/102-validation.md index 0e3ae420a..32704d52c 100644 --- a/src/data/roadmaps/graphql/content/105-execution/102-validation.md +++ b/src/data/roadmaps/graphql/content/105-execution/102-validation.md @@ -6,4 +6,4 @@ GraphQL servers perform validation on all incoming queries and mutations to ensu Learn more from the following links: -- [Get Started with Validation in GraphQL](https://graphql.org/learn/validation/) \ No newline at end of file +- [Get Started with Validation in GraphQL](https://graphql.org/learn/validation/) diff --git a/src/data/roadmaps/graphql/content/105-execution/103-producing-the-result.md b/src/data/roadmaps/graphql/content/105-execution/103-producing-the-result.md index 467087ef3..bfec8666f 100644 --- a/src/data/roadmaps/graphql/content/105-execution/103-producing-the-result.md +++ b/src/data/roadmaps/graphql/content/105-execution/103-producing-the-result.md @@ -11,4 +11,4 @@ When a client sends a query or mutation to a GraphQL server, the server performs Learn more from the following links: -- [Get Started with GraphQL](https://graphql.org/learn/) \ No newline at end of file +- [Get Started with GraphQL](https://graphql.org/learn/) diff --git a/src/data/roadmaps/graphql/content/105-execution/index.md b/src/data/roadmaps/graphql/content/105-execution/index.md index 2b09129af..a0be0d4a2 100644 --- a/src/data/roadmaps/graphql/content/105-execution/index.md +++ b/src/data/roadmaps/graphql/content/105-execution/index.md @@ -5,4 +5,4 @@ In GraphQL, execution refers to the process of executing a query or mutation and Learn more from the following links: - [Get Started with Execution in GraphQL](https://graphql.org/learn/execution/) -- [Intro to Execution](https://graphql.org/graphql-js/execution/) \ No newline at end of file +- [Intro to Execution](https://graphql.org/graphql-js/execution/) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/100-caching.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/100-caching.md index 0f4df148d..9967b9304 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/100-caching.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/100-caching.md @@ -10,4 +10,4 @@ There are several types of caching that can be used in GraphQL: Learn more from the following links: -- [Get started with Caching](https://graphql.org/learn/caching/) \ No newline at end of file +- [Get started with Caching](https://graphql.org/learn/caching/) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/101-batching.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/101-batching.md index 4e5528fcb..242450378 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/101-batching.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/101-batching.md @@ -6,4 +6,4 @@ There are several ways to implement batching in GraphQL: - Using a batching library: This approach involves using a library such as apollo-link-batch-http, which provides a way to batch multiple queries or mutations into a single request. - Using a middleware: This approach involves using a middleware such as graphql-batch, which allows you to batch multiple queries or mutations into a single request. -- Using a serverless function: This approach involves using a serverless function such as AWS Lambda, which allows you to batch multiple queries or mutations into a single request. \ No newline at end of file +- Using a serverless function: This approach involves using a serverless function such as AWS Lambda, which allows you to batch multiple queries or mutations into a single request. diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/102-authorization.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/102-authorization.md index 720bbaaa1..c5dbc7ced 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/102-authorization.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/102-authorization.md @@ -10,4 +10,4 @@ There are several ways to implement authorization in GraphQL: To learn more, visit the following links: -- [Get Started with Authorization](https://graphql.org/learn/authorization/) \ No newline at end of file +- [Get Started with Authorization](https://graphql.org/learn/authorization/) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/index.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/index.md index 40a5b2c8b..481634f73 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/index.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/100-graphql-over-http/index.md @@ -6,4 +6,4 @@ The most common way to send GraphQL queries and mutations over HTTP is by using To learn more, visit the following links: -- [Serving over HTTP](https://graphql.org/learn/serving-over-http/) \ No newline at end of file +- [Serving over HTTP](https://graphql.org/learn/serving-over-http/) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/100-real-time.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/100-real-time.md index a526d4285..8dafd0cd0 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/100-real-time.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/100-real-time.md @@ -4,4 +4,4 @@ Real-time in GraphQL refers to the ability to receive real-time updates from a G Learn more from the following links: -- [Get Started with Real Time with GraphQL](https://the-guild.dev/blog/subscriptions-and-live-queries-real-time-with-graphql) \ No newline at end of file +- [Get Started with Real Time with GraphQL](https://the-guild.dev/blog/subscriptions-and-live-queries-real-time-with-graphql) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/101-authorization.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/101-authorization.md index 720bbaaa1..c5dbc7ced 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/101-authorization.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/101-authorization.md @@ -10,4 +10,4 @@ There are several ways to implement authorization in GraphQL: To learn more, visit the following links: -- [Get Started with Authorization](https://graphql.org/learn/authorization/) \ No newline at end of file +- [Get Started with Authorization](https://graphql.org/learn/authorization/) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/index.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/index.md index c95f97bf4..38c32f21b 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/index.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/101-graphql-over-websockets/index.md @@ -4,4 +4,4 @@ The WebSocket API is an advanced technology that makes it possible to open a two Learn more from the following links: -- [GraphQL over WebSockets](https://the-guild.dev/blog/graphql-over-websockets) \ No newline at end of file +- [GraphQL over WebSockets](https://the-guild.dev/blog/graphql-over-websockets) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/102-graphql-over-sse/100-authorization.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/102-graphql-over-sse/100-authorization.md index 720bbaaa1..c5dbc7ced 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/102-graphql-over-sse/100-authorization.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/102-graphql-over-sse/100-authorization.md @@ -10,4 +10,4 @@ There are several ways to implement authorization in GraphQL: To learn more, visit the following links: -- [Get Started with Authorization](https://graphql.org/learn/authorization/) \ No newline at end of file +- [Get Started with Authorization](https://graphql.org/learn/authorization/) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/102-graphql-over-sse/index.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/102-graphql-over-sse/index.md index 23a6cbd3e..15b6524b1 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/102-graphql-over-sse/index.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/102-graphql-over-sse/index.md @@ -8,4 +8,4 @@ To implement GraphQL over SSE, you can use a library such as graphql-sse which p To learn more, visit the following links: -- [Overview of GraphQL over SSE (Server-Sent Events)](https://the-guild.dev/blog/graphql-over-sse) \ No newline at end of file +- [Overview of GraphQL over SSE (Server-Sent Events)](https://the-guild.dev/blog/graphql-over-sse) diff --git a/src/data/roadmaps/graphql/content/106-serving-over-internet/index.md b/src/data/roadmaps/graphql/content/106-serving-over-internet/index.md index 90cce731f..f023184ca 100644 --- a/src/data/roadmaps/graphql/content/106-serving-over-internet/index.md +++ b/src/data/roadmaps/graphql/content/106-serving-over-internet/index.md @@ -10,4 +10,4 @@ There are several ways to serve a GraphQL server over the internet: To learn more, visit the following links: -- [Introduction to Serving over HTTPs](https://graphql.org/learn/serving-over-http/) \ No newline at end of file +- [Introduction to Serving over HTTPs](https://graphql.org/learn/serving-over-http/) diff --git a/src/data/roadmaps/graphql/content/107-pagination.md b/src/data/roadmaps/graphql/content/107-pagination.md index c309c61bf..dfebec5df 100644 --- a/src/data/roadmaps/graphql/content/107-pagination.md +++ b/src/data/roadmaps/graphql/content/107-pagination.md @@ -10,4 +10,4 @@ There are several ways to implement pagination in GraphQL: To learn more, visit the following links: -- [Get Started with Pagination](https://graphql.org/learn/pagination/) \ No newline at end of file +- [Get Started with Pagination](https://graphql.org/learn/pagination/) diff --git a/src/data/roadmaps/graphql/content/108-frontend-implementations/100-relay.md b/src/data/roadmaps/graphql/content/108-frontend-implementations/100-relay.md index fa6200ff5..0f27526a7 100644 --- a/src/data/roadmaps/graphql/content/108-frontend-implementations/100-relay.md +++ b/src/data/roadmaps/graphql/content/108-frontend-implementations/100-relay.md @@ -6,4 +6,4 @@ Relay is designed to work with GraphQL on the server and provides a set of clien Learn more from the following links: -- [GraphQL Code Generator & Relay Compiler](https://the-guild.dev/blog/graphql-codegen-relay-compiler) \ No newline at end of file +- [GraphQL Code Generator & Relay Compiler](https://the-guild.dev/blog/graphql-codegen-relay-compiler) diff --git a/src/data/roadmaps/graphql/content/108-frontend-implementations/101-apollo-client.md b/src/data/roadmaps/graphql/content/108-frontend-implementations/101-apollo-client.md index d82822f4c..385191c72 100644 --- a/src/data/roadmaps/graphql/content/108-frontend-implementations/101-apollo-client.md +++ b/src/data/roadmaps/graphql/content/108-frontend-implementations/101-apollo-client.md @@ -6,4 +6,4 @@ Apollo Client provides a set of features that make it easy to interact with a Gr Learn more from the following links: -- [Why Apollo Client - Frontend?](https://www.howtographql.com/react-apollo/0-introduction/) \ No newline at end of file +- [Why Apollo Client - Frontend?](https://www.howtographql.com/react-apollo/0-introduction/) diff --git a/src/data/roadmaps/graphql/content/108-frontend-implementations/index.md b/src/data/roadmaps/graphql/content/108-frontend-implementations/index.md index fe5338430..4b9076f46 100644 --- a/src/data/roadmaps/graphql/content/108-frontend-implementations/index.md +++ b/src/data/roadmaps/graphql/content/108-frontend-implementations/index.md @@ -4,7 +4,6 @@ In GraphQL, the frontend refers to the client-side of the application, typically When using GraphQL on the frontend, developers can use a GraphQL client library, such as Apollo Client or Relay, to interact with the GraphQL server. These libraries provide a way to easily send GraphQL queries and mutations to the server and handle the response. - Learn more from the following links: -- [Guide to GraphQL for Front-End Developers](https://www.howtographql.com/react-apollo/0-introduction/) \ No newline at end of file +- [Guide to GraphQL for Front-End Developers](https://www.howtographql.com/react-apollo/0-introduction/) diff --git a/src/data/roadmaps/graphql/content/109-backend-implementations/100-graphql-http.md b/src/data/roadmaps/graphql/content/109-backend-implementations/100-graphql-http.md index 366a905b5..da5ed4e6a 100644 --- a/src/data/roadmaps/graphql/content/109-backend-implementations/100-graphql-http.md +++ b/src/data/roadmaps/graphql/content/109-backend-implementations/100-graphql-http.md @@ -10,4 +10,4 @@ The GraphQL HTTP specification defines two main HTTP methods: Learn more from the following links: - [Overview of GraphQL HTTP](https://graphql.org/graphql-js/express-graphql/#graphqlhttp) -- [Get Started with GraphQL HTTP](https://graphql.org/learn/serving-over-http/) \ No newline at end of file +- [Get Started with GraphQL HTTP](https://graphql.org/learn/serving-over-http/) diff --git a/src/data/roadmaps/graphql/content/109-backend-implementations/101-graphql-yoga.md b/src/data/roadmaps/graphql/content/109-backend-implementations/101-graphql-yoga.md index a742c84d8..083b7c140 100644 --- a/src/data/roadmaps/graphql/content/109-backend-implementations/101-graphql-yoga.md +++ b/src/data/roadmaps/graphql/content/109-backend-implementations/101-graphql-yoga.md @@ -6,4 +6,4 @@ One of the key features of GraphQL Yoga is that it provides a set of built-in fu Learn more from the following links: -- [GraphQL Armor - for Yoga Server 2](https://the-guild.dev/blog/improved-security-with-graphql-armor-support-for-yoga-server-2) \ No newline at end of file +- [GraphQL Armor - for Yoga Server 2](https://the-guild.dev/blog/improved-security-with-graphql-armor-support-for-yoga-server-2) diff --git a/src/data/roadmaps/graphql/content/109-backend-implementations/102-apollo-server.md b/src/data/roadmaps/graphql/content/109-backend-implementations/102-apollo-server.md index e47ddef94..b6facd932 100644 --- a/src/data/roadmaps/graphql/content/109-backend-implementations/102-apollo-server.md +++ b/src/data/roadmaps/graphql/content/109-backend-implementations/102-apollo-server.md @@ -6,4 +6,4 @@ One of the key features of Apollo Server is that it provides a set of built-in f Learn more from the following links: -- [Apollo Tutorial - Introduction](https://www.howtographql.com/react-apollo/0-introduction/) \ No newline at end of file +- [Apollo Tutorial - Introduction](https://www.howtographql.com/react-apollo/0-introduction/) diff --git a/src/data/roadmaps/graphql/content/109-backend-implementations/103-mercurius.md b/src/data/roadmaps/graphql/content/109-backend-implementations/103-mercurius.md index b4b84e08b..cf49b4ec7 100644 --- a/src/data/roadmaps/graphql/content/109-backend-implementations/103-mercurius.md +++ b/src/data/roadmaps/graphql/content/109-backend-implementations/103-mercurius.md @@ -2,4 +2,4 @@ Mercurius is an open-source library for building real-time GraphQL servers in Node.js. It provides a simple and flexible way to build GraphQL servers by providing a set of tools and features for handling real-time subscriptions. -One of the key features of Mercurius is that it is built on top of the popular WebSockets protocol and it allows the client to subscribe to real-time updates from the server. It also supports batching and caching of queries and mutations, which allows for efficient and fast data transfer between the client and server. \ No newline at end of file +One of the key features of Mercurius is that it is built on top of the popular WebSockets protocol and it allows the client to subscribe to real-time updates from the server. It also supports batching and caching of queries and mutations, which allows for efficient and fast data transfer between the client and server. diff --git a/src/data/roadmaps/graphql/content/109-backend-implementations/index.md b/src/data/roadmaps/graphql/content/109-backend-implementations/index.md index 2e89c23b7..4608da2e7 100644 --- a/src/data/roadmaps/graphql/content/109-backend-implementations/index.md +++ b/src/data/roadmaps/graphql/content/109-backend-implementations/index.md @@ -9,4 +9,4 @@ There are several ways to implement a GraphQL backend, depending on the use case Learn more from the following links: -- [How to use GraphQL to build Backend?](https://www.howtographql.com/typescript-apollo/0-introduction/) \ No newline at end of file +- [How to use GraphQL to build Backend?](https://www.howtographql.com/typescript-apollo/0-introduction/) diff --git a/src/data/roadmaps/graphql/graphql.md b/src/data/roadmaps/graphql/graphql.md index c7be38997..09bf168e2 100644 --- a/src/data/roadmaps/graphql/graphql.md +++ b/src/data/roadmaps/graphql/graphql.md @@ -1,58 +1,57 @@ --- -jsonUrl: "/jsons/roadmaps/graphql.json" -pdfUrl: "/pdfs/roadmaps/graphql.pdf" +jsonUrl: '/jsons/roadmaps/graphql.json' +pdfUrl: '/pdfs/roadmaps/graphql.pdf' order: 12 -briefTitle: "GraphQL" -briefDescription: "Step by Step guide to learn GraphQL in 2023" -title: "GraphQL" -description: "Step by step guide to learn GraphQL in 2023" +briefTitle: 'GraphQL' +briefDescription: 'Step by Step guide to learn GraphQL in 2023' +title: 'GraphQL' +description: 'Step by step guide to learn GraphQL in 2023' isNew: true hasTopics: true dimensions: width: 968 height: 1669.8 sponsor: - url: "https://bit.ly/3YYcqdt" - title: "Free eBook" - imageUrl: "https://i.imgur.com/RCbFXOY.png" - description: "Learn how to find a GraphQL architecture that scales with this free eBook from Apollo" + url: 'https://bit.ly/3YYcqdt' + title: 'Free eBook' + imageUrl: 'https://i.imgur.com/RCbFXOY.png' + description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' event: - category: "SponsorClick" - action: "Apollo Redirect" - label: "GraphQL / Apollo Link" + category: 'SponsorClick' + action: 'Apollo Redirect' + label: 'GraphQL / Apollo Link' schema: - headline: "GraphQL Roadmap" - description: "Learn how to use GraphQL with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/graphql.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'GraphQL Roadmap' + description: 'Learn how to use GraphQL with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/graphql.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "GraphQL Roadmap" - description: "Learn GraphQL with this step by step guide and resources." + title: 'GraphQL Roadmap' + description: 'Learn GraphQL with this step by step guide and resources.' keywords: - - "guide to learn graphql" - - "graphql roadmap" - - "graphql roadmap" - - "modern graphql roadmap" - - "fullstack graphql roadmap" - - "design and architecture roadmap" - - "scalable design roadmap" - - "design architecture patterns roadmap" - - "application architectures" + - 'guide to learn graphql' + - 'graphql roadmap' + - 'graphql roadmap' + - 'modern graphql roadmap' + - 'fullstack graphql roadmap' + - 'design and architecture roadmap' + - 'scalable design roadmap' + - 'design architecture patterns roadmap' + - 'application architectures' relatedRoadmaps: - - "frontend" - - "backend" - - "nodejs" - - "javascript" - - "react" - - "vue" - - "angular" + - 'frontend' + - 'backend' + - 'nodejs' + - 'javascript' + - 'react' + - 'vue' + - 'angular' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/100-basic-syntax.md b/src/data/roadmaps/java/content/100-java-fundamentals/100-basic-syntax.md index 1799e3be1..7035c74bd 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/100-basic-syntax.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/100-basic-syntax.md @@ -2,8 +2,8 @@ Understanding the basics is the key to a solid foundation. In this section, learn the basic terminologies, naming conventions, reserved words, conditions, functions, data structures, OOP, packages, etc. -* To print output use --> System.out.println(); -* To take input from user --> Scanner or BufferedReader class can be used +- To print output use --> System.out.println(); +- To take input from user --> Scanner or BufferedReader class can be used Visit the following resources to learn more: diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/101-data-types-variables.md b/src/data/roadmaps/java/content/100-java-fundamentals/101-data-types-variables.md index 0bef7cde0..43dcce854 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/101-data-types-variables.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/101-data-types-variables.md @@ -3,8 +3,9 @@ Variable in Java is a data container that stores the data values during Java program execution. Every variable is assigned a data type, which designates the type and quantity of values it can hold. Variable is a memory location name of the data. The Java variables have mainly three types: Local, Instance and Static. Data Types are divided into two group - -* Primitive - byte,short,int,long,float,double,boolean and char -* Non-Primitive - String, Arrays and Classes + +- Primitive - byte,short,int,long,float,double,boolean and char +- Non-Primitive - String, Arrays and Classes Visit the following resources to learn more: diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/102-conditionals.md b/src/data/roadmaps/java/content/100-java-fundamentals/102-conditionals.md index 0bfc94989..45d0753ad 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/102-conditionals.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/102-conditionals.md @@ -2,11 +2,11 @@ Java has the following conditional statements: -* Use `if` to specify a block of code to be executed, if a specified condition is true -* Use `else` to specify a block of code to be executed if the same condition is false -* Use `else if` to specify a new condition to test; if the first condition is false -* Use `switch` to specify many alternative blocks of code to be executed -* Use `?,:` operator to specify one line condition +- Use `if` to specify a block of code to be executed, if a specified condition is true +- Use `else` to specify a block of code to be executed if the same condition is false +- Use `else if` to specify a new condition to test; if the first condition is false +- Use `switch` to specify many alternative blocks of code to be executed +- Use `?,:` operator to specify one line condition Visit the following resources to learn more: diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/103-functions.md b/src/data/roadmaps/java/content/100-java-fundamentals/103-functions.md index 55006ec64..bd23a24aa 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/103-functions.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/103-functions.md @@ -3,6 +3,7 @@ A method/function is a way to perform some task. Similarly, in programming like Java, a function method is a block of code written to perform a specific task repeatedly. It provides reusability of code. We write the function once and use it many times. It works on the 'DRY' principle i.e., "Do not repeat yourself". Steps - + 1. Define function - datatype function_name(parameters){body} 2. Call function - function_name(values) diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/104-datastructures.md b/src/data/roadmaps/java/content/100-java-fundamentals/104-datastructures.md index a173aeea8..7b0c4b72b 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/104-datastructures.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/104-datastructures.md @@ -2,10 +2,10 @@ As the name indicates itself, a **Data Structure** is a way of organizing the data in the **memory** so that it can be used efficiently. Some common data structures are array, linked list, stack, hashtable, queue, tree, heap, and graph. -* Array allocates continuous memory for homogeneous data -* Linked List stores data in nodes with references -* Stack follows Last In First Out principle -* Queue follows First In First Out principle +- Array allocates continuous memory for homogeneous data +- Linked List stores data in nodes with references +- Stack follows Last In First Out principle +- Queue follows First In First Out principle Visit the following resources to learn more: diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/105-oop.md b/src/data/roadmaps/java/content/100-java-fundamentals/105-oop.md index 8591725e3..06fedc172 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/105-oop.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/105-oop.md @@ -2,13 +2,13 @@ Object-oriented programming is a core of Java Programming, which is used for designing a program using classes and objects. This can also be characterized as data controlling for accessing the code. -* [Class](https://www.javatpoint.com/object-and-class-in-java) -* [Interfaces](https://www.geeksforgeeks.org/interfaces-in-java/) -* [Object](https://www.geeksforgeeks.org/classes-objects-java/) -* [Inheritance](https://www.geeksforgeeks.org/inheritance-in-java) -* [Polymorphism](https://www.javatpoint.com/runtime-polymorphism-in-java) -* [Abstraction](https://www.softwaretestinghelp.com/what-is-abstraction-in-java/) -* [Encapsulation](https://www.programiz.com/java-programming/encapsulation) +- [Class](https://www.javatpoint.com/object-and-class-in-java) +- [Interfaces](https://www.geeksforgeeks.org/interfaces-in-java/) +- [Object](https://www.geeksforgeeks.org/classes-objects-java/) +- [Inheritance](https://www.geeksforgeeks.org/inheritance-in-java) +- [Polymorphism](https://www.javatpoint.com/runtime-polymorphism-in-java) +- [Abstraction](https://www.softwaretestinghelp.com/what-is-abstraction-in-java/) +- [Encapsulation](https://www.programiz.com/java-programming/encapsulation) Visit the following resources to learn more: diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/106-files-and-apis.md b/src/data/roadmaps/java/content/100-java-fundamentals/106-files-and-apis.md index f418ee5a2..67c213b72 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/106-files-and-apis.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/106-files-and-apis.md @@ -2,8 +2,8 @@ Learn how to work with files i.e., reading, writing and deleting, files and folders, etc. Also, learn how to make API calls, parse the incoming response, and so on. -* FileWriter - this class is useful to create a file by writing characters into it -* FileReader - this class is useful to read data in form of characters from file +- FileWriter - this class is useful to create a file by writing characters into it +- FileReader - this class is useful to read data in form of characters from file Visit the following resources to learn more: @@ -11,4 +11,4 @@ Visit the following resources to learn more: - [Java File Class](https://www.javatpoint.com/java-file-class) - [Java.io.File Class in Java](https://www.geeksforgeeks.org/file-class-in-java/) - [Java HttpURLConnection Example - Java HTTP Request GET, POST](https://www.digitalocean.com/community/tutorials/java-httpurlconnection-example-java-http-request-get-post) -- [5 ways to make HTTP requests in Java](https://www.twilio.com/blog/5-ways-to-make-http-requests-in-java) \ No newline at end of file +- [5 ways to make HTTP requests in Java](https://www.twilio.com/blog/5-ways-to-make-http-requests-in-java) diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/107-loops.md b/src/data/roadmaps/java/content/100-java-fundamentals/107-loops.md index c7eb56426..33b1afab3 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/107-loops.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/107-loops.md @@ -2,9 +2,8 @@ In Java and other programming languages, loops are used to iterate a part of the program several times. There are four types of loops in Java, `for`, `forEach`, `while`, and `do...while`. -* Synatx of `for` loop is `for(initialization;condition;increment/decrement){}` -* Syntax of `forEach` loop is `for(data_type variable:array_name){}` - +- Synatx of `for` loop is `for(initialization;condition;increment/decrement){}` +- Syntax of `forEach` loop is `for(data_type variable:array_name){}` Visit the following resources to learn more: diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/108-exception-handling.md b/src/data/roadmaps/java/content/100-java-fundamentals/108-exception-handling.md index 32059c287..54aba5a02 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/108-exception-handling.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/108-exception-handling.md @@ -3,6 +3,7 @@ Exception Handling in Java is one of the effective means to handle the runtime errors so that the regular flow of the application can be preserved. Java Exception Handling is a mechanism to handle runtime errors such as ClassNotFoundException, IOException, SQLException, RemoteException, etc. There are three types of exceptions - + 1. Checked Exception - exceptions checked at compile time. Example - IOException 2. Unchecked Exception - exceptions checked at run time. Example - NullPointerException 3. Error - It is irrecoverable. Example - OutOfMemoryError diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/index.md b/src/data/roadmaps/java/content/100-java-fundamentals/index.md index 680413d76..2469df50b 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/index.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/index.md @@ -2,7 +2,7 @@ Java is a programming language and computing platform first released by Sun Microsystems in 1995. Java is a general-purpose, class-based, object-oriented programming language designed for having lesser implementation dependencies. It is a computing platform for application development. Java is fast, secure, and reliable, therefore. It is widely used for developing Java applications in laptops, data centers, game consoles, scientific supercomputers, cell phones, etc. -Learn about the fundamentals of Java such as basic syntax, data types, variables, conditionals, functions, data structures, packages, etc. +Learn about the fundamentals of Java such as basic syntax, data types, variables, conditionals, functions, data structures, packages, etc. Visit the following resources to learn more: diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/100-generics.md b/src/data/roadmaps/java/content/101-java-advanced-topics/100-generics.md index ab87d5d31..8e6310cc4 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/100-generics.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/100-generics.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Generics in Java](https://www.geeksforgeeks.org/generics-in-java/) - [Java - Generics](https://www.tutorialspoint.com/java/java_generics.htm) - [Generics in Java](https://www.javatpoint.com/generics-in-java) -- [Generics in Java](https://www.youtube.com/watch?v=XMvznsY02Mk) \ No newline at end of file +- [Generics in Java](https://www.youtube.com/watch?v=XMvznsY02Mk) diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/101-memory-management.md b/src/data/roadmaps/java/content/101-java-advanced-topics/101-memory-management.md index aacf915d1..bfe577c7c 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/101-memory-management.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/101-memory-management.md @@ -5,4 +5,4 @@ In Java, memory management is the process of allocation and de-allocation of obj Visit the following resources to learn more: - [Java Memory Management](https://www.geeksforgeeks.org/java-memory-management/) -- [Memory Management in Java](https://www.javatpoint.com/memory-management-in-java) \ No newline at end of file +- [Memory Management in Java](https://www.javatpoint.com/memory-management-in-java) diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/103-serialization.md b/src/data/roadmaps/java/content/101-java-advanced-topics/103-serialization.md index dde9db674..6b76cf974 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/103-serialization.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/103-serialization.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Serialization and Deserialization in Java](https://www.geeksforgeeks.org/serialization-in-java/) - [Serialization and Deserialization in Java](https://www.javatpoint.com/serialization-in-java) -- [Introduction to Java Serialization](https://www.baeldung.com/java-serialization) \ No newline at end of file +- [Introduction to Java Serialization](https://www.baeldung.com/java-serialization) diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/105-streams.md b/src/data/roadmaps/java/content/101-java-advanced-topics/105-streams.md index ec45490f7..5d411b3ae 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/105-streams.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/105-streams.md @@ -2,10 +2,9 @@ Java provides a new additional package in Java 8 called java.util.stream. This package consists of classes, interfaces and enum to allows functional-style operations on the elements. You can use stream by importing java.util.stream package. - Visit the following resources to learn more: - [Streams in Java](https://www.geeksforgeeks.org/stream-in-java/) - [Java 8 Stream](https://www.javatpoint.com/java-8-stream) - [Streams API Tutorial in Java 8+](https://www.youtube.com/watch?v=VNovNwHr9jY) -- [Java 8 Streams Tutorial](https://www.youtube.com/watch?v=t1-YZ6bF-g0) \ No newline at end of file +- [Java 8 Streams Tutorial](https://www.youtube.com/watch?v=t1-YZ6bF-g0) diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/106-how-jvm-works.md b/src/data/roadmaps/java/content/101-java-advanced-topics/106-how-jvm-works.md index cf2ef3e37..6d5ec8714 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/106-how-jvm-works.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/106-how-jvm-works.md @@ -1,6 +1,6 @@ # How JVM Works -The Java Virtual Machine is a program whose purpose is to execute other programs. JVMs are available for many hardware and software platforms (i.e. JVM is platform dependent). JVM is the one that actually calls the main method present in a java code. JVM is a part of JRE(Java Runtime Environment) +The Java Virtual Machine is a program whose purpose is to execute other programs. JVMs are available for many hardware and software platforms (i.e. JVM is platform dependent). JVM is the one that actually calls the main method present in a java code. JVM is a part of JRE(Java Runtime Environment) Visit the following resources to learn more: diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/107-garbage-collection.md b/src/data/roadmaps/java/content/101-java-advanced-topics/107-garbage-collection.md index 1264035e2..0cecab79f 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/107-garbage-collection.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/107-garbage-collection.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Java Garbage Collection](https://stackify.com/what-is-java-garbage-collection/) - [Garbage Collection in Java](https://www.geeksforgeeks.org/garbage-collection-java/) -- [Java Garbage Collection](https://www.javatpoint.com/Garbage-Collection) \ No newline at end of file +- [Java Garbage Collection](https://www.javatpoint.com/Garbage-Collection) diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/index.md b/src/data/roadmaps/java/content/101-java-advanced-topics/index.md index 4aea76cae..0befe2d54 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/index.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/index.md @@ -1 +1 @@ -# Java advanced topics \ No newline at end of file +# Java advanced topics diff --git a/src/data/roadmaps/java/content/102-java-build-tools/100-gradle.md b/src/data/roadmaps/java/content/102-java-build-tools/100-gradle.md index a214f0c97..d650e5e72 100644 --- a/src/data/roadmaps/java/content/102-java-build-tools/100-gradle.md +++ b/src/data/roadmaps/java/content/102-java-build-tools/100-gradle.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [Gradle Tutorial](https://youtu.be/kONQCIAcWeI) - [Working with Gradle](https://youtu.be/6V6G3RyxEMk) - [Gradle](https://www.javatpoint.com/gradle) -- [Building Java Projects with Gradle](https://spring.io/guides/gs/gradle/) \ No newline at end of file +- [Building Java Projects with Gradle](https://spring.io/guides/gs/gradle/) diff --git a/src/data/roadmaps/java/content/102-java-build-tools/index.md b/src/data/roadmaps/java/content/102-java-build-tools/index.md index 5422a13a1..066efdeef 100644 --- a/src/data/roadmaps/java/content/102-java-build-tools/index.md +++ b/src/data/roadmaps/java/content/102-java-build-tools/index.md @@ -2,4 +2,4 @@ A build tool is a program or command-line utility that automates the process of compiling, assembling, and deploying software. -Build tools are not only limited to compiling code; they can also help with package management, dependency handling, and continuous integration systems. \ No newline at end of file +Build tools are not only limited to compiling code; they can also help with package management, dependency handling, and continuous integration systems. diff --git a/src/data/roadmaps/java/content/103-java-web-frameworks/102-play-framework.md b/src/data/roadmaps/java/content/103-java-web-frameworks/102-play-framework.md index 119a3dc8f..4df5a87fb 100644 --- a/src/data/roadmaps/java/content/103-java-web-frameworks/102-play-framework.md +++ b/src/data/roadmaps/java/content/103-java-web-frameworks/102-play-framework.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Play Framework Website](https://www.playframework.com/) - [Introduction to Play Framework](https://youtu.be/bLrmnjPQsZc) - [What is Play Framework?](https://en.wikipedia.org/wiki/Play_Framework) -- [Intro to Play Framework](https://www.baeldung.com/java-intro-to-the-play-framework) \ No newline at end of file +- [Intro to Play Framework](https://www.baeldung.com/java-intro-to-the-play-framework) diff --git a/src/data/roadmaps/java/content/104-java-orm/101-spring-data-jpa.md b/src/data/roadmaps/java/content/104-java-orm/101-spring-data-jpa.md index ad593d132..c8d3f3a50 100644 --- a/src/data/roadmaps/java/content/104-java-orm/101-spring-data-jpa.md +++ b/src/data/roadmaps/java/content/104-java-orm/101-spring-data-jpa.md @@ -9,4 +9,4 @@ Visit the following resources to learn more: - [Spring Data JPA Tutorial](https://www.javatpoint.com/spring-and-jpa-integration) - [Spring Boot – Spring Data JPA](https://www.geeksforgeeks.org/spring-boot-spring-data-jpa/) - [Spring Data JPA Tutorial](https://youtu.be/XszpXoII9Sg) -- [Spring Boot Tutorial - Spring Data JPA](https://youtu.be/8SGI_XS5OPw) \ No newline at end of file +- [Spring Boot Tutorial - Spring Data JPA](https://youtu.be/8SGI_XS5OPw) diff --git a/src/data/roadmaps/java/content/104-java-orm/103-ebean.md b/src/data/roadmaps/java/content/104-java-orm/103-ebean.md index 4e486ca93..b6dc7b835 100644 --- a/src/data/roadmaps/java/content/104-java-orm/103-ebean.md +++ b/src/data/roadmaps/java/content/104-java-orm/103-ebean.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Ebean](https://ebean.io/) - [Ebean Documentation](https://ebean.io/docs/) -- [Guide to Ebean](https://www.baeldung.com/ebean-orm) \ No newline at end of file +- [Guide to Ebean](https://www.baeldung.com/ebean-orm) diff --git a/src/data/roadmaps/java/content/104-java-orm/index.md b/src/data/roadmaps/java/content/104-java-orm/index.md index eb4047503..b3d2e02b3 100644 --- a/src/data/roadmaps/java/content/104-java-orm/index.md +++ b/src/data/roadmaps/java/content/104-java-orm/index.md @@ -2,7 +2,7 @@ A programming method to map objects in Java to relational entities in a database. In other words, converting data between relational databases and object-oriented programming languages. Some popular ORM tools/frameworks in Java are: -- Spring Data JPA +- Spring Data JPA - Hibernate - Ebean diff --git a/src/data/roadmaps/java/content/106-java-jdbc/100-jdbi3.md b/src/data/roadmaps/java/content/106-java-jdbc/100-jdbi3.md index fcaa90950..895897c1f 100644 --- a/src/data/roadmaps/java/content/106-java-jdbc/100-jdbi3.md +++ b/src/data/roadmaps/java/content/106-java-jdbc/100-jdbi3.md @@ -5,4 +5,4 @@ Jdbi is an open source Java library (Apache license) that uses lambda expression Visit the following resources to learn more: - [Jdbi](https://jdbi.org/) -- [Jdbi Tutorial](https://www.baeldung.com/jdbi) \ No newline at end of file +- [Jdbi Tutorial](https://www.baeldung.com/jdbi) diff --git a/src/data/roadmaps/java/content/107-testing-java-apps/103-jbehave.md b/src/data/roadmaps/java/content/107-testing-java-apps/103-jbehave.md index 56f18b712..132c2d026 100644 --- a/src/data/roadmaps/java/content/107-testing-java-apps/103-jbehave.md +++ b/src/data/roadmaps/java/content/107-testing-java-apps/103-jbehave.md @@ -5,4 +5,4 @@ JBehave is a framework for Behaviour-Driven Development (BDD). BDD is an evoluti Visit the following resources to learn more: - [Jbehave](https://jbehave.org/) -- [Jbehave Tutorial](https://jbehave.org/tutorials.html) \ No newline at end of file +- [Jbehave Tutorial](https://jbehave.org/tutorials.html) diff --git a/src/data/roadmaps/java/content/107-testing-java-apps/105-testng.md b/src/data/roadmaps/java/content/107-testing-java-apps/105-testng.md index ab3c2e052..906c7a692 100644 --- a/src/data/roadmaps/java/content/107-testing-java-apps/105-testng.md +++ b/src/data/roadmaps/java/content/107-testing-java-apps/105-testng.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Testng](https://testng.org) - [Testng Documentation](https://testng.org/doc/documentation-main.html) -- [Testng tutorial](https://www.guru99.com/all-about-testng-and-selenium.html) \ No newline at end of file +- [Testng tutorial](https://www.guru99.com/all-about-testng-and-selenium.html) diff --git a/src/data/roadmaps/java/content/107-testing-java-apps/106-rest-assured.md b/src/data/roadmaps/java/content/107-testing-java-apps/106-rest-assured.md index e1b2f0b7f..7f5f1fb53 100644 --- a/src/data/roadmaps/java/content/107-testing-java-apps/106-rest-assured.md +++ b/src/data/roadmaps/java/content/107-testing-java-apps/106-rest-assured.md @@ -5,4 +5,4 @@ Testing and validating REST services in Java is harder than in dynamic languages Visit the following resources to learn more: - [Rest-assured](https://rest-assured.io/) -- [Rest-assured Documentation](https://github.com/rest-assured/rest-assured/wiki) \ No newline at end of file +- [Rest-assured Documentation](https://github.com/rest-assured/rest-assured/wiki) diff --git a/src/data/roadmaps/java/java.md b/src/data/roadmaps/java/java.md index 5492a714c..cfa55afd5 100644 --- a/src/data/roadmaps/java/java.md +++ b/src/data/roadmaps/java/java.md @@ -1,59 +1,58 @@ --- -jsonUrl: "/jsons/roadmaps/java.json" -pdfUrl: "/pdfs/roadmaps/java.pdf" +jsonUrl: '/jsons/roadmaps/java.json' +pdfUrl: '/pdfs/roadmaps/java.pdf' order: 9 -briefTitle: "Java" -briefDescription: "Step by step guide to becoming a Java Developer in 2023" -title: "Java Developer" -description: "Step by step guide to becoming a Java developer in 2023" +briefTitle: 'Java' +briefDescription: 'Step by step guide to becoming a Java Developer in 2023' +title: 'Java Developer' +description: 'Step by step guide to becoming a Java developer in 2023' hasTopics: true dimensions: width: 968 height: 1167.29 schema: - headline: "Java Developer Roadmap" - description: "Learn how to become a Java Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/java.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Java Developer Roadmap' + description: 'Learn how to become a Java Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/java.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Learn to become a modern Java developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for java development. Learn to become a modern Java developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Learn to become a modern Java developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for java development. Learn to become a modern Java developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a developer" - - "guide to becoming a java developer" - - "java developer" - - "java engineer" - - "java skills" - - "guide to java" - - "java roadmap" - - "java skills" - - "java skills test" - - "skills for java" - - "cloud development" - - "what is java" - - "java quiz" - - "java interview questions" - - "java engineer roadmap" - - "java developer roadmap" - - "become a java developer" - - "java developer career path" - - "java developer" - - "modern java developer" + - 'guide to becoming a developer' + - 'guide to becoming a java developer' + - 'java developer' + - 'java engineer' + - 'java skills' + - 'guide to java' + - 'java roadmap' + - 'java skills' + - 'java skills test' + - 'skills for java' + - 'cloud development' + - 'what is java' + - 'java quiz' + - 'java interview questions' + - 'java engineer roadmap' + - 'java developer roadmap' + - 'become a java developer' + - 'java developer career path' + - 'java developer' + - 'modern java developer' relatedRoadmaps: - - "backend" - - "spring-boot" - - "devops" - - "python" - - "golang" - - "javascript" - - "nodejs" + - 'backend' + - 'spring-boot' + - 'devops' + - 'python' + - 'golang' + - 'javascript' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/javascript/content/100-javascript-introduction/101-history-of-javascript.md b/src/data/roadmaps/javascript/content/100-javascript-introduction/101-history-of-javascript.md index 870b7c7f4..301104f0b 100644 --- a/src/data/roadmaps/javascript/content/100-javascript-introduction/101-history-of-javascript.md +++ b/src/data/roadmaps/javascript/content/100-javascript-introduction/101-history-of-javascript.md @@ -5,4 +5,4 @@ JavaScript was initially created by Brendan Eich of NetScape and was first annou Visit the following resources to learn more: - [Brief History of JavaScript](https://roadmap.sh/guides/history-of-javascript) -- [The History of JavaScript](https://dev.to/iarchitsharma/the-history-of-javascript-5e98) \ No newline at end of file +- [The History of JavaScript](https://dev.to/iarchitsharma/the-history-of-javascript-5e98) diff --git a/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md b/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md index 440131ff3..0faddf423 100644 --- a/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md +++ b/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md @@ -5,4 +5,4 @@ JavaScript was invented by Brendan Eich, and in 1997 and became an ECMA standard Visit the following resources to learn more: - [JavaScript Versions: How JavaScript has changed over the years](https://www.educative.io/blog/javascript-versions-history) -- [Brief History of JavaScript](https://roadmap.sh/guides/history-of-javascript) \ No newline at end of file +- [Brief History of JavaScript](https://roadmap.sh/guides/history-of-javascript) diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/101-hoisting.md b/src/data/roadmaps/javascript/content/101-javascript-variables/101-hoisting.md index b7b724182..6377a9a1e 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/101-hoisting.md +++ b/src/data/roadmaps/javascript/content/101-javascript-variables/101-hoisting.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [What is Hoisting - MDN Docs](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting) - [JavaScript Hoisting](https://www.geeksforgeeks.org/javascript-hoisting/) - diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/102-naming-rules.md b/src/data/roadmaps/javascript/content/101-javascript-variables/102-naming-rules.md index 59153ecb3..4a5645dd5 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/102-naming-rules.md +++ b/src/data/roadmaps/javascript/content/101-javascript-variables/102-naming-rules.md @@ -1,6 +1,6 @@ # Naming Rules -A variable name should accurately identify your variable. When you create good variable names, your JavaScript code becomes easier to understand and easier to work with. Properly naming variables is really important. JavaScript also has some rules when it comes to naming variables; read about these rules through the links below. +A variable name should accurately identify your variable. When you create good variable names, your JavaScript code becomes easier to understand and easier to work with. Properly naming variables is really important. JavaScript also has some rules when it comes to naming variables; read about these rules through the links below. Visit the following resources to learn more: diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/102-global.md b/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/102-global.md index 9ffa2f589..e5296c8cc 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/102-global.md +++ b/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/102-global.md @@ -5,5 +5,3 @@ Variables declared Globally (outside any function) have Global Scope. Global var Visit the following resources to learn more: - [JavaScript Scope](https://www.w3schools.com/js/js_scope.asp) - - diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/index.md b/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/index.md index fe29156ef..7f0aad32d 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/index.md +++ b/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/index.md @@ -10,7 +10,6 @@ Function Scope: Variables declared within a function can only be used within tha Block Scope: A block is any part of JavaScript code bounded by '{}'. Variables declared within a block can not be accessed outside that block. This Scope is only provided by the `let` and `const` keywords. If you declare a variable within a block using the `var` keyword, it will NOT have Block Scope. - Visit the following resources to learn more: - [JavaScript Scope](https://www.w3schools.com/js/js_scope.asp) diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/102-builtin-objects.md b/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/102-builtin-objects.md index 39a0f8e4b..cfe0fed35 100644 --- a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/102-builtin-objects.md +++ b/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/102-builtin-objects.md @@ -1,6 +1,7 @@ # Built-in objects Built-in objects, or "global objects", are those built into the language specification itself. There are numerous built-in objects with the JavaScript language, all of which are accessible at the global scope. Some examples are: + - `Number` - `Math` - `Date` diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/102-typeof-operator.md b/src/data/roadmaps/javascript/content/102-javascript-datatypes/102-typeof-operator.md index d0efac116..a273c2ca3 100644 --- a/src/data/roadmaps/javascript/content/102-javascript-datatypes/102-typeof-operator.md +++ b/src/data/roadmaps/javascript/content/102-javascript-datatypes/102-typeof-operator.md @@ -5,4 +5,4 @@ You can use the typeOf operator to find the data type of a JavaScript variable. Visit the following resources to learn more: - [Typeof Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) -- [Typeof Live Examples](https://www.w3schools.com/js/tryit.asp?filename=tryjs_typeof_all) \ No newline at end of file +- [Typeof Live Examples](https://www.w3schools.com/js/tryit.asp?filename=tryjs_typeof_all) diff --git a/src/data/roadmaps/javascript/content/103-javascript-type-casting/index.md b/src/data/roadmaps/javascript/content/103-javascript-type-casting/index.md index 702a9819e..8dc28269f 100644 --- a/src/data/roadmaps/javascript/content/103-javascript-type-casting/index.md +++ b/src/data/roadmaps/javascript/content/103-javascript-type-casting/index.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [JavaScript Type Conversion](https://www.w3schools.com/js/js_type_conversion.asp) - [Type Casting in JavaScript](https://www.tutorialspoint.com/type-casting-in-javascript) - [JavaScript Type Cast](https://www.geeksforgeeks.org/javascript-type-conversion) - diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md b/src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md index 6bdf84d88..a345bdce4 100644 --- a/src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md +++ b/src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Working with Arrays in JavaScript](https://javascript.info/array) - [JavaScript Arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -- [JavaScript Arrays](https://www.youtube.com/watch?v=oigfaZ5ApsM) \ No newline at end of file +- [JavaScript Arrays](https://www.youtube.com/watch?v=oigfaZ5ApsM) diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/index.md b/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/index.md index 5f782a473..f49561b4f 100644 --- a/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/index.md +++ b/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/index.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Keyed collections](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Keyed_collections) - [ES6 keyed collections- Maps and sets](https://blog.logrocket.com/es6-keyed-collections-maps-and-sets/) - [How to use Keyed collections](https://www.freecodecamp.org/news/how-to-use-javascript-collections-map-and-set/) -- [Creating keyed collection](https://youtu.be/4UqSqF4foy4) \ No newline at end of file +- [Creating keyed collection](https://youtu.be/4UqSqF4foy4) diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/index.md b/src/data/roadmaps/javascript/content/104-javascript-data-structures/index.md index 16cb57714..36c7ef65a 100644 --- a/src/data/roadmaps/javascript/content/104-javascript-data-structures/index.md +++ b/src/data/roadmaps/javascript/content/104-javascript-data-structures/index.md @@ -9,5 +9,5 @@ Visit the following resources to learn more: - [Introduction to the Queue Data Structure](https://youtu.be/GRA_3Ppl2ZI) - [Intro to Recursion: Anatomy of a Recursive Solution](https://youtu.be/yBWlPte6FhA) - [Binary Tree Algorithms for Technical Interviews - Full Course](https://youtu.be/fAAZixBzIAI) -- [Graph Algorithms for Technical Interviews - Full Course](https://youtu.be/tWVWeAqZ0WU) +- [Graph Algorithms for Technical Interviews - Full Course](https://youtu.be/tWVWeAqZ0WU) - [Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges](https://youtu.be/oBt53YbR9Kk) diff --git a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/index.md b/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/index.md index f0e056b7a..0736b8f6e 100644 --- a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/index.md +++ b/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/index.md @@ -5,4 +5,4 @@ Comparison operators are used in logical statements to determine equality or dif Visit the following resources to learn more: - [JavaScript Comparisons](https://www.w3schools.com/js/js_comparisons.asp) -- [JavaScript Equality Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators#equality_operators) \ No newline at end of file +- [JavaScript Equality Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators#equality_operators) diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/100-for-in-statement.md b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/100-for-in-statement.md index 4c41e9748..76d6fa828 100644 --- a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/100-for-in-statement.md +++ b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/100-for-in-statement.md @@ -5,4 +5,4 @@ The for...in statement iterates over all enumerable properties of an object that Visit the following resources to learn more: - [for...in statement - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in) -- [The for..in loop with examples](https://javascript.info/object#forin) \ No newline at end of file +- [The for..in loop with examples](https://javascript.info/object#forin) diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/100-labeled-statements.md b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/100-labeled-statements.md index c5d759184..8c0e1e244 100644 --- a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/100-labeled-statements.md +++ b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/100-labeled-statements.md @@ -7,4 +7,4 @@ A label is simply an identifier followed by a colon`(:)` that is applied to a bl Visit the following resources to learn more: - [JavaScript MDN Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label) -- [Tutorialspoint – JavaScript Tutorial](https://www.tutorialspoint.com/What-are-label-statements-in-JavaScript) \ No newline at end of file +- [Tutorialspoint – JavaScript Tutorial](https://www.tutorialspoint.com/What-are-label-statements-in-JavaScript) diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/104-do-while-statement.md b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/104-do-while-statement.md index ed884adec..f4ea7c847 100644 --- a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/104-do-while-statement.md +++ b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/104-do-while-statement.md @@ -1,6 +1,6 @@ # do...while statement -The `do...while` statement creates a loop that executes a specified statement until the test condition evaluates to `false`. The condition is evaluated after executing the statement, resulting in the specified statement executing at least once. +The `do...while` statement creates a loop that executes a specified statement until the test condition evaluates to `false`. The condition is evaluated after executing the statement, resulting in the specified statement executing at least once. Visit the following resources to learn more: diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/105-while-statement.md b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/105-while-statement.md index 39b1b1c22..09cf8408e 100644 --- a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/105-while-statement.md +++ b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/105-while-statement.md @@ -1,6 +1,6 @@ # while statement -The `while` statement creates a loop that executes a specified statement as long as the test condition evaluates to `true`. The condition is evaluated before executing the statement. +The `while` statement creates a loop that executes a specified statement as long as the test condition evaluates to `true`. The condition is evaluated before executing the statement. Visit the following resources to learn more: diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/101-try-catch-finally.md b/src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/101-try-catch-finally.md index 777c9608f..d4c0747f5 100644 --- a/src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/101-try-catch-finally.md +++ b/src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/101-try-catch-finally.md @@ -5,4 +5,3 @@ These are ways of handling errors in your JavaScript code. Inside the try code b Visit the following resources to learn more: - [JavaScript Errors](https://www.w3schools.com/js/js_errors.asp) - diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/100-if-else.md b/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/100-if-else.md index 2b09bc543..051c421da 100644 --- a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/100-if-else.md +++ b/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/100-if-else.md @@ -3,11 +3,12 @@ The `if` statement executes a statement if a specified condition is `truthy`. If the condition is `falsy`, another statement in the optional `else` clause will be executed. ## Example + ```js if (condition) { - statement1 + statement1; } else { - statement2 + statement2; } ``` diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/101-switch.md b/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/101-switch.md index b0ddd4d80..344c34a2b 100644 --- a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/101-switch.md +++ b/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/101-switch.md @@ -3,22 +3,23 @@ The `switch` statement evaluates an expression, matching the expression's value against a series of `case` clauses, and executes statements after the first `case` clause with a matching value, until a `break` statement is encountered. The `default` clause of a `switch` statement will be jumped to if no `case` matches the expression's value. ## Example + ```js switch (expression) { case value1: //Statements executed when the result of expression matches value1 - break; + break; case value2: //Statements executed when the result of expression matches value2 - break; + break; ... case valueN: //Statements executed when the result of expression matches valueN - break; + break; default: //Statements executed when none of the values match the value of the expression - break; -} + break; +} ``` Visit the following resources to learn more: diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/index.md b/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/index.md index 4d104fb48..073e3aed3 100644 --- a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/index.md +++ b/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/index.md @@ -1,4 +1,4 @@ -# Conditional statements +# Conditional statements When you write code, you often want to perform different actions for different decisions. You can use conditional statements in your code to do this. In JavaScript, we have three conditional statements: `if`, `if...else`, and `switch`. diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/index.md b/src/data/roadmaps/javascript/content/107-javascript-control-flow/index.md index 3d401ad8f..3c4c935cf 100644 --- a/src/data/roadmaps/javascript/content/107-javascript-control-flow/index.md +++ b/src/data/roadmaps/javascript/content/107-javascript-control-flow/index.md @@ -3,11 +3,12 @@ In JavaScript, the `Control flow` is a way of how your computer runs code from top to bottom. It starts from the first line and ends at the last line unless it hits any statement that changes the control flow of the program such as loops, conditionals, etc. We can control the flow of the program through any of these control structures: + - Sequential (default mode) - Conditional Statements -- Exception Handling +- Exception Handling - Loops and Iterations - + Visit the following resources to learn more: -- [Control Flow - MDN](https://developer.mozilla.org/en-US/docs/Glossary/Control_flow) \ No newline at end of file +- [Control Flow - MDN](https://developer.mozilla.org/en-US/docs/Glossary/Control_flow) diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md b/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md index f5fd624bc..9ab29aabe 100644 --- a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md +++ b/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md @@ -3,6 +3,7 @@ The Arithmetic operators perform addition, subtraction, multiplication, division, exponentiation, and remainder operations. Arithmetic operators in JavaScript are as follows: + - `+` (Addition) - `-` (Subtraction) - `*` (Multiplication) diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md b/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md index 42aae1241..f78760206 100644 --- a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md +++ b/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md @@ -16,4 +16,4 @@ Bitwise operators in JavaScript are as follows: Visit the following resources to learn more: - [Bitwise Operators - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#bitwise_operators) -- [Bitwise Operators - JavaScript.info](https://javascript.info/operators#bitwise-operators) \ No newline at end of file +- [Bitwise Operators - JavaScript.info](https://javascript.info/operators#bitwise-operators) diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/105-bigint-operators.md b/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/105-bigint-operators.md index 51ea8d3fa..72e681b88 100644 --- a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/105-bigint-operators.md +++ b/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/105-bigint-operators.md @@ -1,6 +1,6 @@ # BigInt Operators -Most operators that can be used with the `Number` data type will also work with `BigInt` values (e.g. arithmetic, comparison, etc.). However, the unsigned right shift `>>>` operator is an exception and is not supported. Similarly, some operators may have slight differences in behaviour (for example, division with `BigInt` will round towards zero). +Most operators that can be used with the `Number` data type will also work with `BigInt` values (e.g. arithmetic, comparison, etc.). However, the unsigned right shift `>>>` operator is an exception and is not supported. Similarly, some operators may have slight differences in behaviour (for example, division with `BigInt` will round towards zero). Visit the following resources to learn more: diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/106-string-operators.md b/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/106-string-operators.md index 7244ce613..687532f23 100644 --- a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/106-string-operators.md +++ b/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/106-string-operators.md @@ -7,4 +7,4 @@ The shorthand assignment operator `+=` can also be used to concatenate strings. Visit the following resources to learn more: - [JavaScript MDN Tutorials](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#string_operators) -- [String Concatenation - JavaScript.info](https://javascript.info/operators#string-concatenation-with-binary) \ No newline at end of file +- [String Concatenation - JavaScript.info](https://javascript.info/operators#string-concatenation-with-binary) diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/100-defining-calling-functions.md b/src/data/roadmaps/javascript/content/109-javascript-functions/100-defining-calling-functions.md index 0d5b77a98..d22582197 100644 --- a/src/data/roadmaps/javascript/content/109-javascript-functions/100-defining-calling-functions.md +++ b/src/data/roadmaps/javascript/content/109-javascript-functions/100-defining-calling-functions.md @@ -1,18 +1,17 @@ # Defining and Calling Functions -**Defining:** -- JavaScript function *declarations* are made by using the `function` keyword. -- Functions can also be defined by saving function *expressions* to a variable. "Arrow" functions are commonly used in this way. +**Defining:** -**Calling:** -- When a function is defined, it is not yet executed. -- To call and invoke a function's code, use the function's name followed by parentheses: `functionName()`. +- JavaScript function _declarations_ are made by using the `function` keyword. +- Functions can also be defined by saving function _expressions_ to a variable. "Arrow" functions are commonly used in this way. + +**Calling:** +- When a function is defined, it is not yet executed. +- To call and invoke a function's code, use the function's name followed by parentheses: `functionName()`. Visit the following resources to learn more: - [Defining Functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#defining_functions) - [Calling Functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#calling_functions) - [Function Definitions](https://www.w3schools.com/js/js_function_definition.asp) - - diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/index.md b/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/index.md index 63d0873e5..21640ac7a 100644 --- a/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/index.md +++ b/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/index.md @@ -1,16 +1,19 @@ # Scope and function stack ## Scope + A space or environment in which a particular variable or function can be accessed or used. Accessibility of this variable or function depends on where it is defined. JavaScript has the following kinds of scopes: + - **Global scope**: The default scope for all code running in script mode. - **Module scope**: The scope for code running in module mode. - **Function scope**: The scope created with a function. - **Block scope**: The scope created with a pair of curly braces (a block). ## Function Stack (Call stack) -The function stack is how the interpreter keeps track of its place in a script that calls multiple functions, like which function is currently executing and which functions within that function are being called. + +The function stack is how the interpreter keeps track of its place in a script that calls multiple functions, like which function is currently executing and which functions within that function are being called. Visit the following resources to learn more: diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md index 9a577717d..9e9179013 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md @@ -4,4 +4,4 @@ Function borrowing allows us to use the methods of one object on a different obj Visit the following resources to learn more: -- [Function borrowing](https://medium.com/@ensallee/function-borrowing-in-javascript-4bd671e9d7b4) \ No newline at end of file +- [Function borrowing](https://medium.com/@ensallee/function-borrowing-in-javascript-4bd671e9d7b4) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/102-this-in-a-function.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/102-this-in-a-function.md index c73834c48..e58c514e9 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/102-this-in-a-function.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/102-this-in-a-function.md @@ -2,8 +2,8 @@ The keyword `this` when used in a function refers to the global object. -*Note: in a browser window the global object is the `window` object.* +_Note: in a browser window the global object is the `window` object._ Visit the following resources to learn more: -- [this in a function](https://www.w3schools.com/js/js_this.asp) \ No newline at end of file +- [this in a function](https://www.w3schools.com/js/js_this.asp) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/103-using-this-alone.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/103-using-this-alone.md index 9f84d950e..2f250ae92 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/103-using-this-alone.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/103-using-this-alone.md @@ -2,8 +2,8 @@ The keyword `this` when used alone refers to the global object. -*Note: in a browser window the global object is the `window` object.* +_Note: in a browser window the global object is the `window` object._ Visit the following resources to learn more: -- [this Alone](https://www.w3schools.com/js/js_this.asp) \ No newline at end of file +- [this Alone](https://www.w3schools.com/js/js_this.asp) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/104-this-in-event-handlers.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/104-this-in-event-handlers.md index e26f01703..8b4654f89 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/104-this-in-event-handlers.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/104-this-in-event-handlers.md @@ -4,4 +4,4 @@ The keyword `this` when used in an event handler refers to the element that rece Visit the following resources to learn more: -- [this in Event handlers](https://www.w3schools.com/js/js_this.asp) \ No newline at end of file +- [this in Event handlers](https://www.w3schools.com/js/js_this.asp) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/105-this-in-arrow-functions.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/105-this-in-arrow-functions.md index fc195042f..20f0ba552 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/105-this-in-arrow-functions.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/105-this-in-arrow-functions.md @@ -4,4 +4,4 @@ The keyword `this` when used in an arrow function refers to the parent object. Visit the following resources to learn more: -- [this keyword and arrow function](https://stackoverflow.com/questions/66518020/javascript-this-keyword-and-arrow-function) \ No newline at end of file +- [this keyword and arrow function](https://stackoverflow.com/questions/66518020/javascript-this-keyword-and-arrow-function) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/107-call-method.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/107-call-method.md index c7ee0560d..041f85654 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/107-call-method.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/107-call-method.md @@ -4,4 +4,4 @@ The `call()` method calls the function with a reference to the aspire object to Visit the following resources to learn more: -- [call() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call) \ No newline at end of file +- [call() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/108-apply-method.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/108-apply-method.md index f8f80acbd..caebc4346 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/108-apply-method.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/108-apply-method.md @@ -4,4 +4,4 @@ Visit the following resources to learn more: -- [apply() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply) \ No newline at end of file +- [apply() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/109-bind-method.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/109-bind-method.md index 4d5f5a4a9..27a3e729f 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/109-bind-method.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/109-bind-method.md @@ -4,4 +4,4 @@ The `bind()` method return a new method that has its `this` keyword refers to th Visit the following resources to learn more: -- [bind() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) \ No newline at end of file +- [bind() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/index.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/index.md index bc454921f..73001a5df 100644 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/index.md +++ b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/index.md @@ -12,4 +12,4 @@ In JavaScript, the `this` keyword is a little different compared to other langua Visit the following resources to learn more: - [The JavaScript `this` Keyword](https://www.w3schools.com/js/js_this.asp) -- [This Keyword](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) \ No newline at end of file +- [This Keyword](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/102-set-interval.md b/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/102-set-interval.md index 277465a0c..243af9494 100644 --- a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/102-set-interval.md +++ b/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/102-set-interval.md @@ -1,6 +1,6 @@ # setInterval -The `setInterval()` method helps us to repeatedly execute a function after a fixed delay. It returns a unique interval ID which can later be used by the `clearInterval()` method, which stops further repeated execution of the function. +The `setInterval()` method helps us to repeatedly execute a function after a fixed delay. It returns a unique interval ID which can later be used by the `clearInterval()` method, which stops further repeated execution of the function. `setInterval()` is similar to setTimeout, with a difference. Instead of running the callback function once, it will run it forever, at the specific time interval you specify (in milliseconds): diff --git a/src/data/roadmaps/javascript/content/116-javascript-memory-management/100-memory-lifecycle.md b/src/data/roadmaps/javascript/content/116-javascript-memory-management/100-memory-lifecycle.md index 8e3fe67d2..ab6691c75 100644 --- a/src/data/roadmaps/javascript/content/116-javascript-memory-management/100-memory-lifecycle.md +++ b/src/data/roadmaps/javascript/content/116-javascript-memory-management/100-memory-lifecycle.md @@ -2,9 +2,9 @@ Regardless of the programming language, the memory life cycle is pretty much always the same: - - Allocate the memory you need - - Use the allocated memory (read, write) - - Release the allocated memory when it is not needed anymore +- Allocate the memory you need +- Use the allocated memory (read, write) +- Release the allocated memory when it is not needed anymore The second part is explicit in all languages. The first and last parts are explicit in low-level languages but are mostly implicit in high-level languages like JavaScript. diff --git a/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/101-debugging-memory-leaks.md b/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/101-debugging-memory-leaks.md index fd28d1457..3cc101bb0 100644 --- a/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/101-debugging-memory-leaks.md +++ b/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/101-debugging-memory-leaks.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Catching memory leaks with Chrome DevTools](https://medium.com/coding-blocks/catching-memory-leaks-with-chrome-devtools-57b03acb6bb9) - [Effective Javascript Debugging ](https://medium.com/swlh/effective-javascript-debugging-memory-leaks-75059b2436f6) - [Debugging JavaScript memory leaks](https://www.debugbear.com/blog/debugging-javascript-memory-leaks) -- [Debugging Memory Leaks In Production JavaScript Applications](https://www.jackhoy.com/web-applications/2020/10/21/debugging-memory-leaks-in-nodejs.html) \ No newline at end of file +- [Debugging Memory Leaks In Production JavaScript Applications](https://www.jackhoy.com/web-applications/2020/10/21/debugging-memory-leaks-in-nodejs.html) diff --git a/src/data/roadmaps/javascript/content/118-working-with-apis/100-xml-http-request.md b/src/data/roadmaps/javascript/content/118-working-with-apis/100-xml-http-request.md index 9b677292a..c9e3ff349 100644 --- a/src/data/roadmaps/javascript/content/118-working-with-apis/100-xml-http-request.md +++ b/src/data/roadmaps/javascript/content/118-working-with-apis/100-xml-http-request.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Using XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest) - [Network request - XMLHttpRequest](https://javascript.info/xmlhttprequest) -- [W3Schools](https://www.w3schools.com/xml/xml_http.asp) \ No newline at end of file +- [W3Schools](https://www.w3schools.com/xml/xml_http.asp) diff --git a/src/data/roadmaps/javascript/content/118-working-with-apis/101-fetch.md b/src/data/roadmaps/javascript/content/118-working-with-apis/101-fetch.md index a81aaca7f..e87189e09 100644 --- a/src/data/roadmaps/javascript/content/118-working-with-apis/101-fetch.md +++ b/src/data/roadmaps/javascript/content/118-working-with-apis/101-fetch.md @@ -1,10 +1,9 @@ # Fetch - 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. Visit the following resources to learn more: - [Fetch MDN Docs](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) - [Fetch W3school Docs](https://www.w3schools.com/jsref/api_fetch.asp) -- [Network request - Fetch](https://javascript.info/fetch) \ No newline at end of file +- [Network request - Fetch](https://javascript.info/fetch) diff --git a/src/data/roadmaps/javascript/content/118-working-with-apis/index.md b/src/data/roadmaps/javascript/content/118-working-with-apis/index.md index 9470bc9a3..d059dd2af 100644 --- a/src/data/roadmaps/javascript/content/118-working-with-apis/index.md +++ b/src/data/roadmaps/javascript/content/118-working-with-apis/index.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) - [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) - [Is fetch API better than XMLHTTPRequest](https://medium.com/beginners-guide-to-mobile-web-development/the-fetch-api-2c962591f5c) -- [Ajax Battle: XMLHttpRequest vs the Fetch API](https://blog.openreplay.com/ajax-battle-xmlhttprequest-vs-the-fetch-api) \ No newline at end of file +- [Ajax Battle: XMLHttpRequest vs the Fetch API](https://blog.openreplay.com/ajax-battle-xmlhttprequest-vs-the-fetch-api) diff --git a/src/data/roadmaps/javascript/javascript.md b/src/data/roadmaps/javascript/javascript.md index c1f7aff29..e40eb65fd 100644 --- a/src/data/roadmaps/javascript/javascript.md +++ b/src/data/roadmaps/javascript/javascript.md @@ -1,65 +1,64 @@ --- -jsonUrl: "/jsons/roadmaps/javascript.json" -pdfUrl: "/pdfs/roadmaps/javascript.pdf" +jsonUrl: '/jsons/roadmaps/javascript.json' +pdfUrl: '/pdfs/roadmaps/javascript.pdf' order: 5 -briefTitle: "JavaScript" -briefDescription: "Step by step guide to learn JavaScript in 2023" -title: "JavaScript Roadmap" -description: "Step by step guide to learn JavaScript in 2023" +briefTitle: 'JavaScript' +briefDescription: 'Step by step guide to learn JavaScript in 2023' +title: 'JavaScript Roadmap' +description: 'Step by step guide to learn JavaScript in 2023' isNew: true hasTopics: true dimensions: width: 968 height: 2438.9 sponsor: - url: "https://developer.fermyon.com/spin/javascript-components?utm_source=javascript&utm_medium=banner&utm_campaign=roadmap-sh" - title: "Serverless JavaScript Apps" - imageUrl: "https://i.imgur.com/2ONZopb.jpg" - description: "Go from blinking cursor to deployed serverless JavaScript apps in 66 seconds with Fermyon Cloud" + url: 'https://developer.fermyon.com/spin/javascript-components?utm_source=javascript&utm_medium=banner&utm_campaign=roadmap-sh' + title: 'Serverless JavaScript Apps' + imageUrl: 'https://i.imgur.com/2ONZopb.jpg' + description: 'Go from blinking cursor to deployed serverless JavaScript apps in 66 seconds with Fermyon Cloud' event: - category: "SponsorClick" - action: "Fermyon Redirect" - label: "JavaScript / Fermyon Link" + category: 'SponsorClick' + action: 'Fermyon Redirect' + label: 'JavaScript / Fermyon Link' schema: - headline: "JavaScript Roadmap" - description: "Learn JavaScript with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/javascript.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'JavaScript Roadmap' + description: 'Learn JavaScript with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/javascript.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "JavaScript Developer Roadmap: Step by step guide to learn JavaScript" - description: "Community driven, articles, resources, guides, interview questions, quizzes for javascript development. Learn to become a modern JavaScript developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'JavaScript Developer Roadmap: Step by step guide to learn JavaScript' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for javascript development. Learn to become a modern JavaScript developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "javascript guide 2023" - - "learn javascript" - - "step by step javascript guide" - - "javascript roadmap 2023" - - "javascript developer roadmap 2023" - - "guide to becoming a javascript developer" - - "javascript developer roadmap" - - "javascript roadmap" - - "become javascript developer" - - "javascript developer skills" - - "javascript skills test" - - "skills for javascript development" - - "learn javascript development" - - "what is javascript" - - "javascript quiz" - - "javascript interview questions" + - 'javascript guide 2023' + - 'learn javascript' + - 'step by step javascript guide' + - 'javascript roadmap 2023' + - 'javascript developer roadmap 2023' + - 'guide to becoming a javascript developer' + - 'javascript developer roadmap' + - 'javascript roadmap' + - 'become javascript developer' + - 'javascript developer skills' + - 'javascript skills test' + - 'skills for javascript development' + - 'learn javascript development' + - 'what is javascript' + - 'javascript quiz' + - 'javascript interview questions' relatedRoadmaps: - - "nodejs" - - "typescript" - - "frontend" - - "backend" - - "react" - - "angular" - - "vue" + - 'nodejs' + - 'typescript' + - 'frontend' + - 'backend' + - 'react' + - 'angular' + - 'vue' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/kubernetes/content/101-containers.md b/src/data/roadmaps/kubernetes/content/101-containers.md index 195179919..4b84a2c97 100644 --- a/src/data/roadmaps/kubernetes/content/101-containers.md +++ b/src/data/roadmaps/kubernetes/content/101-containers.md @@ -4,7 +4,7 @@ Kubernetes is built on containers, so before learning Kubernetes you should be c Visit the following resources to learn more: -* [Docker in 100 Seconds (video)](https://www.youtube.com/watch?v=Gjnup-PuquQ) -* [Official Docker Tutorial](https://www.docker.com/101-tutorial/) -* [Docker Curriculum](https://docker-curriculum.com/) -* [Free 3 Hour Video Course on Docker for Beginners](https://www.youtube.com/watch?v=3c-iBn73dDE) +- [Docker in 100 Seconds (video)](https://www.youtube.com/watch?v=Gjnup-PuquQ) +- [Official Docker Tutorial](https://www.docker.com/101-tutorial/) +- [Docker Curriculum](https://docker-curriculum.com/) +- [Free 3 Hour Video Course on Docker for Beginners](https://www.youtube.com/watch?v=3c-iBn73dDE) diff --git a/src/data/roadmaps/kubernetes/content/103-running-applications/102-deployments.md b/src/data/roadmaps/kubernetes/content/103-running-applications/102-deployments.md index 89252d9ac..0c8ab3a0c 100644 --- a/src/data/roadmaps/kubernetes/content/103-running-applications/102-deployments.md +++ b/src/data/roadmaps/kubernetes/content/103-running-applications/102-deployments.md @@ -1 +1 @@ -# Deployments \ No newline at end of file +# Deployments diff --git a/src/data/roadmaps/kubernetes/content/113-kubernetes-advanced-topics/107-multi-cluster-management.md b/src/data/roadmaps/kubernetes/content/113-kubernetes-advanced-topics/107-multi-cluster-management.md index ad98ba3d6..bc375ddd3 100644 --- a/src/data/roadmaps/kubernetes/content/113-kubernetes-advanced-topics/107-multi-cluster-management.md +++ b/src/data/roadmaps/kubernetes/content/113-kubernetes-advanced-topics/107-multi-cluster-management.md @@ -4,5 +4,5 @@ Multi-Cluster Management in Kubernetes (k8s) refers to the ability to manage mul Learn more from the following resources: -- [Configure Access to Multiple Clusters - Documentation](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) +- [Configure Access to Multiple Clusters - Documentation](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) - [Kubernetes Cluster Management Strategies](https://www.youtube.com/watch?v=966TJ6mlOYY) diff --git a/src/data/roadmaps/kubernetes/kubernetes.md b/src/data/roadmaps/kubernetes/kubernetes.md index 4a039181b..4a36f42fe 100644 --- a/src/data/roadmaps/kubernetes/kubernetes.md +++ b/src/data/roadmaps/kubernetes/kubernetes.md @@ -1,65 +1,64 @@ --- -jsonUrl: "/jsons/roadmaps/kubernetes.json" -pdfUrl: "/pdfs/roadmaps/kubernetes.pdf" +jsonUrl: '/jsons/roadmaps/kubernetes.json' +pdfUrl: '/pdfs/roadmaps/kubernetes.pdf' order: 14 -briefTitle: "Kubernetes" -briefDescription: "Step by step guide to learning Kubernetes in 2023" -title: "Kubernetes Roadmap" -description: "Step by step guide to learning Kubernetes in 2023" +briefTitle: 'Kubernetes' +briefDescription: 'Step by step guide to learning Kubernetes in 2023' +title: 'Kubernetes Roadmap' +description: 'Step by step guide to learning Kubernetes in 2023' isNew: true hasTopics: true -tnsBannerLink: "https://thenewstack.io/kubernetes?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert" +tnsBannerLink: 'https://thenewstack.io/kubernetes?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert' sponsor: - url: "https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account" - title: "Featured Product" - imageUrl: "https://i.imgur.com/e5fdI0q.png" - description: "Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!" + url: 'https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account' + title: 'Featured Product' + imageUrl: 'https://i.imgur.com/e5fdI0q.png' + description: 'Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!' event: - category: "SponsorClick" - action: "Ambassador Redirect" - label: "Kubernetes / Ambassador Link" + category: 'SponsorClick' + action: 'Ambassador Redirect' + label: 'Kubernetes / Ambassador Link' dimensions: width: 968 height: 1785.73 schema: - headline: "Kubernetes Roadmap" - description: "Learn how to use Kubernetes with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/kubernetes.png" - datePublished: "2023-02-07" - dateModified: "2023-02-07" + headline: 'Kubernetes Roadmap' + description: 'Learn how to use Kubernetes with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/kubernetes.png' + datePublished: '2023-02-07' + dateModified: '2023-02-07' seo: - title: "Kubernetes Roadmap - roadmap.sh" - description: "Step by step guide to learn Kubernetes in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." + title: 'Kubernetes Roadmap - roadmap.sh' + description: 'Step by step guide to learn Kubernetes in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' keywords: - - "kubernetes tutorial" - - "step by step kubernetes" - - "kubernetes roadmap 2023" - - "guide to learning kubernetes" - - "kubernetes roadmap" - - "kubernetes" - - "kubernetes engineer" - - "kubernetes skills" - - "kubernetes development" - - "kubernetes development skills" - - "kubernetes development skills test" - - "kubernetes engineer roadmap" - - "kubernetes roadmap" - - "become a kubernetes" - - "kubernetes career path" - - "learn kubernetes development" - - "what is kubernetes" - - "kubernetes quiz" - - "kubernetes interview questions" + - 'kubernetes tutorial' + - 'step by step kubernetes' + - 'kubernetes roadmap 2023' + - 'guide to learning kubernetes' + - 'kubernetes roadmap' + - 'kubernetes' + - 'kubernetes engineer' + - 'kubernetes skills' + - 'kubernetes development' + - 'kubernetes development skills' + - 'kubernetes development skills test' + - 'kubernetes engineer roadmap' + - 'kubernetes roadmap' + - 'become a kubernetes' + - 'kubernetes career path' + - 'learn kubernetes development' + - 'what is kubernetes' + - 'kubernetes quiz' + - 'kubernetes interview questions' relatedRoadmaps: - - "devops" - - "system-design" - - "backend" + - 'devops' + - 'system-design' + - 'backend' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/mongodb/content/100-mongodb-basics/100-sql-vs-nosql.md b/src/data/roadmaps/mongodb/content/100-mongodb-basics/100-sql-vs-nosql.md index 1a9669f16..af070c9a4 100644 --- a/src/data/roadmaps/mongodb/content/100-mongodb-basics/100-sql-vs-nosql.md +++ b/src/data/roadmaps/mongodb/content/100-mongodb-basics/100-sql-vs-nosql.md @@ -38,4 +38,4 @@ NoSQL (Not only SQL) databases refer to non-relational databases, which don't fo ## MongoDB: A NoSQL Database -This guide focuses on MongoDB, a popular NoSQL database that uses a document-based data model. MongoDB has been designed with flexibility, performance, and scalability in mind. With its JSON-like data format (BSON) and powerful querying capabilities, MongoDB is an excellent choice for modern applications dealing with diverse and large-scale data. \ No newline at end of file +This guide focuses on MongoDB, a popular NoSQL database that uses a document-based data model. MongoDB has been designed with flexibility, performance, and scalability in mind. With its JSON-like data format (BSON) and powerful querying capabilities, MongoDB is an excellent choice for modern applications dealing with diverse and large-scale data. diff --git a/src/data/roadmaps/mongodb/content/100-mongodb-basics/101-what-is-mongodb.md b/src/data/roadmaps/mongodb/content/100-mongodb-basics/101-what-is-mongodb.md index 341663116..2b419aec4 100644 --- a/src/data/roadmaps/mongodb/content/100-mongodb-basics/101-what-is-mongodb.md +++ b/src/data/roadmaps/mongodb/content/100-mongodb-basics/101-what-is-mongodb.md @@ -30,4 +30,4 @@ MongoDB is a suitable choice for various applications, including: - **Mobile applications**: MongoDB provides a flexible data model, which is an essential requirement for the dynamic nature and varying data types of mobile applications. -In conclusion, MongoDB is a powerful and versatile NoSQL database that can efficiently handle unstructured and semi-structured data, making it an excellent choice for various applications and industries. \ No newline at end of file +In conclusion, MongoDB is a powerful and versatile NoSQL database that can efficiently handle unstructured and semi-structured data, making it an excellent choice for various applications and industries. diff --git a/src/data/roadmaps/mongodb/content/100-mongodb-basics/102-when-to-use-mongodb.md b/src/data/roadmaps/mongodb/content/100-mongodb-basics/102-when-to-use-mongodb.md index d02d52be9..91f6ee33a 100644 --- a/src/data/roadmaps/mongodb/content/100-mongodb-basics/102-when-to-use-mongodb.md +++ b/src/data/roadmaps/mongodb/content/100-mongodb-basics/102-when-to-use-mongodb.md @@ -2,30 +2,30 @@ MongoDB is an ideal database solution in various scenarios. Let's discuss some of the key situations when you should consider using MongoDB. -## Handling Large Volumes of Data +## Handling Large Volumes of Data When dealing with large amounts of data that may require extensive read and write operations, MongoDB is an excellent choice due to its high performance and horizontal scaling. By leveraging replication and sharding, you can distribute data across multiple servers, reducing the workload on a single machine. -## Flexible Schema +## Flexible Schema If your application requires a flexible data model that allows for changes in the data structure over time, MongoDB is a suitable choice. This flexibility comes from its document-based structure, which allows developers to store any JSON-like data without the need to define the schema beforehand. -## High Availability +## High Availability MongoDB's built-in replication feature allows you to create multiple copies of your data, ensuring high availability and fault tolerance. This means your application will remain accessible in the event of hardware failure or data center outages. -## Real-Time Analytics & Reporting +## Real-Time Analytics & Reporting MongoDB offers excellent support for real-time analytics and reporting. With its aggregation pipeline and map-reduce functionality, you can extract valuable insights from your data and perform complex data manipulations easily. -## Geo-spatial Queries +## Geo-spatial Queries If your application deals with location-based data, MongoDB provides built-in support for geospatial indexing and querying. This makes it easier to work with location-based services and applications, such as GPS tracking or location-based search features. -## Rapid Application Development +## Rapid Application Development Due to its flexibility and ease of use, MongoDB is a good choice for startups and agile development teams that require quick iterations and frequent schema changes. It allows developers to focus on implementing features without the burden of managing rigid database structures. ## Summary -In conclusion, you should consider using MongoDB when dealing with large volumes of data, requiring a flexible schema, needing high availability, handling location-based data, or aiming for rapid application development. However, always evaluate its suitability based on your specific project requirements and performance goals. \ No newline at end of file +In conclusion, you should consider using MongoDB when dealing with large volumes of data, requiring a flexible schema, needing high availability, handling location-based data, or aiming for rapid application development. However, always evaluate its suitability based on your specific project requirements and performance goals. diff --git a/src/data/roadmaps/mongodb/content/100-mongodb-basics/103-what-is-mongodb-atlas.md b/src/data/roadmaps/mongodb/content/100-mongodb-basics/103-what-is-mongodb-atlas.md index 17ac61ea0..d5d172e44 100644 --- a/src/data/roadmaps/mongodb/content/100-mongodb-basics/103-what-is-mongodb-atlas.md +++ b/src/data/roadmaps/mongodb/content/100-mongodb-basics/103-what-is-mongodb-atlas.md @@ -1,6 +1,6 @@ # What is MongoDB Atlas? -MongoDB Atlas is a fully managed cloud-based database service built and maintained by MongoDB. The Atlas platform is available on major cloud providers like AWS, Azure, and Google Cloud Platform, allowing developers to deploy, manage, and scale their MongoDB clusters in a seamless and efficient manner. +MongoDB Atlas is a fully managed cloud-based database service built and maintained by MongoDB. The Atlas platform is available on major cloud providers like AWS, Azure, and Google Cloud Platform, allowing developers to deploy, manage, and scale their MongoDB clusters in a seamless and efficient manner. Some of the standout features and benefits of MongoDB Atlas include: @@ -16,4 +16,4 @@ Some of the standout features and benefits of MongoDB Atlas include: - **Data Automation and Integration**: Atlas allows seamless integration with other services, like BI tools and serverless functions. The platform also supports easy data migration from on-premises or cloud-based deployments. -To summarize, MongoDB Atlas is a powerful and versatile database service that simplifies and enhances the process of deploying, managing, and scaling MongoDB instances in the cloud. With its robust set of features and security capabilities, Atlas is an ideal choice for developers who want to build and maintain scalable and efficient applications using MongoDB. \ No newline at end of file +To summarize, MongoDB Atlas is a powerful and versatile database service that simplifies and enhances the process of deploying, managing, and scaling MongoDB instances in the cloud. With its robust set of features and security capabilities, Atlas is an ideal choice for developers who want to build and maintain scalable and efficient applications using MongoDB. diff --git a/src/data/roadmaps/mongodb/content/100-mongodb-basics/104-mongodb-terminology.md b/src/data/roadmaps/mongodb/content/100-mongodb-basics/104-mongodb-terminology.md index 2b3cac6ff..998025377 100644 --- a/src/data/roadmaps/mongodb/content/100-mongodb-basics/104-mongodb-terminology.md +++ b/src/data/roadmaps/mongodb/content/100-mongodb-basics/104-mongodb-terminology.md @@ -22,4 +22,4 @@ This section of the guide will introduce you to the basic terminology used while - **Replica Set:** A replica set in MongoDB is a group of mongodb instances that maintain the same data set. It provides redundancy, high availability, and automatic failover in case the primary node becomes unreachable. -- **Sharding:** Sharding is a method of distributing data across multiple machines. It is used in MongoDB to horizontally scale the database by partitioning the dataset into smaller, more manageable chunks called shards. \ No newline at end of file +- **Sharding:** Sharding is a method of distributing data across multiple machines. It is used in MongoDB to horizontally scale the database by partitioning the dataset into smaller, more manageable chunks called shards. diff --git a/src/data/roadmaps/mongodb/content/100-mongodb-basics/index.md b/src/data/roadmaps/mongodb/content/100-mongodb-basics/index.md index 351a730fd..3a332f6c9 100644 --- a/src/data/roadmaps/mongodb/content/100-mongodb-basics/index.md +++ b/src/data/roadmaps/mongodb/content/100-mongodb-basics/index.md @@ -6,15 +6,15 @@ MongoDB is a popular NoSQL database system that stores data in Flexible JSON-lik - **Collection**: A group of related documents, similar to a table in a relational database. - **Document**: A single record within a collection, which is stored as BSON (Binary JSON) format. - **Field**: A key-value pair within a document. -- **_id**: A unique identifier automatically generated for each document within a collection. +- **\_id**: A unique identifier automatically generated for each document within a collection. ## Basic Operations -* **Insert**: To insert a single document, use `db.collection.insertOne()`. For inserting multiple documents, use `db.collection.insertMany()`. -* **Find**: Fetch documents from a collection using `db.collection.find()`, and filter the results with query criteria like `{field: value}`. To fetch only one document, use `db.collection.findOne()`. -* **Update**: Update fields or entire documents by using update operators like `$set` and `$unset` with `db.collection.updateOne()` or `db.collection.updateMany()`. -* **Delete**: Remove documents from a collection using `db.collection.deleteOne()` or `db.collection.deleteMany()` with query criteria. -* **Drop**: Permanently delete a collection or a database using `db.collection.drop()` and `db.dropDatabase()`. +- **Insert**: To insert a single document, use `db.collection.insertOne()`. For inserting multiple documents, use `db.collection.insertMany()`. +- **Find**: Fetch documents from a collection using `db.collection.find()`, and filter the results with query criteria like `{field: value}`. To fetch only one document, use `db.collection.findOne()`. +- **Update**: Update fields or entire documents by using update operators like `$set` and `$unset` with `db.collection.updateOne()` or `db.collection.updateMany()`. +- **Delete**: Remove documents from a collection using `db.collection.deleteOne()` or `db.collection.deleteMany()` with query criteria. +- **Drop**: Permanently delete a collection or a database using `db.collection.drop()` and `db.dropDatabase()`. ## Indexes and Aggregations @@ -29,4 +29,4 @@ MongoDB's flexible schema allows for various data modeling techniques, including - **Normalization**: Store related data in separate documents with references between them, suitable for one-to-many or many-to-many relationships. - **Hybrid Approach**: Combine embedded documents and normalization to balance performance and storage needs. -In conclusion, MongoDB's flexible and feature-rich design makes it a powerful choice for modern applications dealing with large scale and unstructured data. Understanding the basics of MongoDB can help you effectively use it as your data storage solution. \ No newline at end of file +In conclusion, MongoDB's flexible and feature-rich design makes it a powerful choice for modern applications dealing with large scale and unstructured data. Understanding the basics of MongoDB can help you effectively use it as your data storage solution. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/100-bson-vs-json.md b/src/data/roadmaps/mongodb/content/101-datatypes/100-bson-vs-json.md index 5e6dd0c85..2f8b3a0f7 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/100-bson-vs-json.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/100-bson-vs-json.md @@ -25,4 +25,4 @@ While BSON and JSON are related, they serve different purposes in the context of - BSON is the binary format used by MongoDB to store and retrieve data efficiently with support for additional native data types. - JSON, being a more human-readable and widely used format, is typically used for data interchange between MongoDB and applications. -By using BSON internally, MongoDB can take advantage of its benefits in storage, traversability, and a richer data type representation while still providing the interoperability and readability of JSON through query interfaces and drivers. \ No newline at end of file +By using BSON internally, MongoDB can take advantage of its benefits in storage, traversability, and a richer data type representation while still providing the interoperability and readability of JSON through query interfaces and drivers. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/101-embedded-documents-arrays.md b/src/data/roadmaps/mongodb/content/101-datatypes/101-embedded-documents-arrays.md index 3eb0104cf..0b2afb68b 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/101-embedded-documents-arrays.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/101-embedded-documents-arrays.md @@ -55,7 +55,7 @@ Querying documents with embedded arrays is easy thanks to MongoDB's built-in arr For example, to find all users with a specific street address, you would use the following query: ```javascript -db.users.find({'addresses.street': '123 Main St'}) +db.users.find({ 'addresses.street': '123 Main St' }); ``` -Overall, Embedded Documents Arrays are a powerful feature in MongoDB, allowing you to store complex data relationships in a performant and efficient manner. Use them wisely to take full advantage of MongoDB's flexibility and scalability. \ No newline at end of file +Overall, Embedded Documents Arrays are a powerful feature in MongoDB, allowing you to store complex data relationships in a performant and efficient manner. Use them wisely to take full advantage of MongoDB's flexibility and scalability. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/102-double.md b/src/data/roadmaps/mongodb/content/101-datatypes/102-double.md index b54945e81..6e0ac1708 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/102-double.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/102-double.md @@ -27,11 +27,11 @@ In MongoDB, Double data type is represented as BSON.Double - BSON being the bina When querying the stored data, you can explicitly cast the value as a Double: ```javascript -db.my_collection.find({"value": {$type: "double"}}) +db.my_collection.find({ value: { $type: 'double' } }); ``` It's important to always remember that although MongoDB provides flexibility in terms of storage, it is crucial to understand the impact of using various data types on performance and storage efficiency. That's all you need to know about the Double data type in MongoDB. Now, you can store numerical values with high precision. -In the next section, we will cover another data type in MongoDB. \ No newline at end of file +In the next section, we will cover another data type in MongoDB. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/103-string.md b/src/data/roadmaps/mongodb/content/101-datatypes/103-string.md index 54ad62241..c1d4a1137 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/103-string.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/103-string.md @@ -21,7 +21,7 @@ When creating a document in a MongoDB collection, you can simply store the data } ``` -In this example, `name`, `city`, and `description` are keys with string values: `"John Doe"`, `"New York"`, and `"A software developer working at XYZ company."`. +In this example, `name`, `city`, and `description` are keys with string values: `"John Doe"`, `"New York"`, and `"A software developer working at XYZ company."`. **Queries with strings:** @@ -33,9 +33,9 @@ You can also perform various queries using strings in MongoDB. Some common query An example of a query with `$regex`: ```javascript -db.collection.find({ "name": { "$regex": "J.*" } }) +db.collection.find({ name: { $regex: 'J.*' } }); ``` This query searches for all documents in the collection with a `name` field starting with the letter `"J"`. -In summary, strings are an essential data type in MongoDB that can store a wide range of texts and support multiple languages with UTF-8 encoding. They can be used to create flexible documents and perform various queries. \ No newline at end of file +In summary, strings are an essential data type in MongoDB that can store a wide range of texts and support multiple languages with UTF-8 encoding. They can be used to create flexible documents and perform various queries. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/104-array.md b/src/data/roadmaps/mongodb/content/101-datatypes/104-array.md index cd31decdc..6a3677333 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/104-array.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/104-array.md @@ -27,19 +27,19 @@ MongoDB provides various operators such as `$in`, `$all`, and `$size`, for query - Finding documents with a specific item in an array: ```javascript -db.collection.find({ hobbies: "swimming" }); +db.collection.find({ hobbies: 'swimming' }); ``` - Finding documents with any of the specified items in an array: ```javascript -db.collection.find({ hobbies: { $in: ["swimming", "coding"] } }); +db.collection.find({ hobbies: { $in: ['swimming', 'coding'] } }); ``` - Finding documents with all specified items in an array: ```javascript -db.collection.find({ hobbies: { $all: ["reading", "coding"] } }); +db.collection.find({ hobbies: { $all: ['reading', 'coding'] } }); ``` - Finding documents with a specific array size: @@ -55,29 +55,38 @@ You can update documents containing arrays by using operators like `$push`, `$ad - Adding a new item to an array: ```javascript -db.collection.updateOne({ _id: ObjectId("123xyz") }, { $push: { hobbies: "painting" } }); +db.collection.updateOne( + { _id: ObjectId('123xyz') }, + { $push: { hobbies: 'painting' } } +); ``` - Adding unique items to an array: ```javascript -db.collection.updateOne({ _id: ObjectId("123xyz") }, { $addToSet: { hobbies: "painting" } }); +db.collection.updateOne( + { _id: ObjectId('123xyz') }, + { $addToSet: { hobbies: 'painting' } } +); ``` - Removing an item from an array: ```javascript -db.collection.updateOne({ _id: ObjectId("123xyz") }, { $pull: { hobbies: "reading" } }); +db.collection.updateOne( + { _id: ObjectId('123xyz') }, + { $pull: { hobbies: 'reading' } } +); ``` - Removing the first or last item from an array: ```javascript // Remove the first item (use $pop with -1) -db.collection.updateOne({ _id: ObjectId("123xyz") }, { $pop: { hobbies: -1 } }); +db.collection.updateOne({ _id: ObjectId('123xyz') }, { $pop: { hobbies: -1 } }); // Remove the last item (use $pop with 1) -db.collection.updateOne({ _id: ObjectId("123xyz") }, { $pop: { hobbies: 1 } }); +db.collection.updateOne({ _id: ObjectId('123xyz') }, { $pop: { hobbies: 1 } }); ``` -In this section, we've covered the essentials of using the `Array` datatype in MongoDB. With this knowledge, you can efficiently model and query data that requires multiple related items within a single document. \ No newline at end of file +In this section, we've covered the essentials of using the `Array` datatype in MongoDB. With this knowledge, you can efficiently model and query data that requires multiple related items within a single document. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/105-object.md b/src/data/roadmaps/mongodb/content/101-datatypes/105-object.md index 0596c066f..ce8d5bc53 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/105-object.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/105-object.md @@ -29,7 +29,7 @@ To query objects in MongoDB, you can use dot notation to access nested fields. F ```javascript db.collection.find({ - "address.city": "New York" + 'address.city': 'New York', }); ``` @@ -39,8 +39,8 @@ When updating documents with objects, it's important to use appropriate update o ```javascript db.collection.updateOne( - { "name": "Alice" }, - { "$set": { "address.city": "Los Angeles" } } + { name: 'Alice' }, + { $set: { 'address.city': 'Los Angeles' } } ); ``` @@ -52,4 +52,4 @@ The MongoDB aggregation framework also supports handling objects for various dat Keep in mind that MongoDB encourages denormalized data storage for the sake of query performance, so you should first consider your application requirements and choose a suitable level of normalization or denormalization for your schema design. -To sum up, the object data type is a versatile aspect of MongoDB's data model, allowing for nesting and structured data storage. Understanding how to work with objects and leverage their functionality is crucial for mastering MongoDB. \ No newline at end of file +To sum up, the object data type is a versatile aspect of MongoDB's data model, allowing for nesting and structured data storage. Understanding how to work with objects and leverage their functionality is crucial for mastering MongoDB. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/106-binary-data.md b/src/data/roadmaps/mongodb/content/101-datatypes/106-binary-data.md index 0ed5566ff..6d28ae1fc 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/106-binary-data.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/106-binary-data.md @@ -1,6 +1,6 @@ # Binary data -Binary Data is a datatype in MongoDB that is used to store binary content like images, audio files, or any other data that can be represented in binary format. This datatype is particularly useful when you need to store large files, manipulate raw binary data, or work with data that cannot be encoded as UTF-8 strings. +Binary Data is a datatype in MongoDB that is used to store binary content like images, audio files, or any other data that can be represented in binary format. This datatype is particularly useful when you need to store large files, manipulate raw binary data, or work with data that cannot be encoded as UTF-8 strings. In MongoDB, binary data is represented using the BSON Binary type, which uses a binary format for encoding and decoding data. The BSON Binary type has several subtypes to better categorize the kind of binary data being stored, such as `B_GENERAL`, `B_FUNCTION`, and `B_BINARY`. @@ -47,4 +47,4 @@ with open("retrieved_image.jpg", "wb") as f: f.write(retrieved_image_data) ``` -Keep in mind that storing large binary files in a MongoDB database might result in performance issues. In such cases, consider using a separate file storage system or MongoDB's [GridFS](https://docs.mongodb.com/manual/core/gridfs/) to store and manage binary data. \ No newline at end of file +Keep in mind that storing large binary files in a MongoDB database might result in performance issues. In such cases, consider using a separate file storage system or MongoDB's [GridFS](https://docs.mongodb.com/manual/core/gridfs/) to store and manage binary data. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/107-undefined.md b/src/data/roadmaps/mongodb/content/101-datatypes/107-undefined.md index dc6da5645..ad2934d49 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/107-undefined.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/107-undefined.md @@ -23,4 +23,4 @@ In this example, `field1` has a `null` value, while `field2` has an `undefined` ## Conclusion -In summary, while the 'undefined' datatype exists in MongoDB, it is now considered deprecated and should be avoided. Instead, it is suggested to use the `null` value to represent fields with missing or undefined values in your database. This will ensure better compatibility and readability of your code when using MongoDB. \ No newline at end of file +In summary, while the 'undefined' datatype exists in MongoDB, it is now considered deprecated and should be avoided. Instead, it is suggested to use the `null` value to represent fields with missing or undefined values in your database. This will ensure better compatibility and readability of your code when using MongoDB. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/108-object-id.md b/src/data/roadmaps/mongodb/content/101-datatypes/108-object-id.md index 8b07f4ebb..8410ab75a 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/108-object-id.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/108-object-id.md @@ -24,10 +24,11 @@ Here are a few examples of how to work with Object IDs in MongoDB: **1. Inserting a document without specifying an `_id`:** ```javascript -db.collection.insertOne({ "title": "Example" }); +db.collection.insertOne({ title: 'Example' }); ``` **Output:** + ```javascript { "_id": ObjectId("60c4237a89293ddc1ef23245"), @@ -38,7 +39,7 @@ db.collection.insertOne({ "title": "Example" }); **2. Creating Object ID manually:** ```javascript -const { ObjectId } = require("mongodb"); +const { ObjectId } = require('mongodb'); const objectId = new ObjectId(); ``` @@ -56,4 +57,4 @@ const objectIdFromStr = ObjectId(objectIdStr); ## Conclusion -The Object ID datatype in MongoDB is a very powerful and efficient way to uniquely identify documents in a collection. Its structure provides valuable information about the document's creation, and its design ensures high performance and scalability for large-scale MongoDB deployments. Understanding and effectively utilizing Object IDs is essential for successful MongoDB usage. \ No newline at end of file +The Object ID datatype in MongoDB is a very powerful and efficient way to uniquely identify documents in a collection. Its structure provides valuable information about the document's creation, and its design ensures high performance and scalability for large-scale MongoDB deployments. Understanding and effectively utilizing Object IDs is essential for successful MongoDB usage. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/109-boolean.md b/src/data/roadmaps/mongodb/content/101-datatypes/109-boolean.md index a924e8f2e..fc00be7dd 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/109-boolean.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/109-boolean.md @@ -1,6 +1,6 @@ # Boolean -The `Boolean` data type in MongoDB is used to store true or false values. Booleans are used when you want to represent a binary state, where a field can have one of two possible values. MongoDB supports the standard `true` and `false` literals for this data type. +The `Boolean` data type in MongoDB is used to store true or false values. Booleans are used when you want to represent a binary state, where a field can have one of two possible values. MongoDB supports the standard `true` and `false` literals for this data type. Examples of usage can include representing active/inactive statuses, toggling settings (e.g., sending email notifications), and denoting the presence/absence of a specific feature. @@ -21,13 +21,13 @@ To store a boolean data value in a MongoDB document, you may use the `true` or ` When you need to query documents based on a boolean value, you can use a query filter that specifies the desired boolean value. For example, if you want to find all active users in the `users` collection: ```javascript -db.users.find({ "isActive": true }) +db.users.find({ isActive: true }); ``` Similarly, you can retrieve all inactive users with the following query: ```javascript -db.users.find({ "isActive": false }) +db.users.find({ isActive: false }); ``` ## Updating Boolean Data @@ -35,11 +35,11 @@ db.users.find({ "isActive": false }) Updating or modifying boolean values is as simple as using the `$set` operator with the desired new value. Let's say we want to deactivate a user: ```javascript -db.users.updateOne({ "name": "John Doe" }, { $set: { "isActive": false } }) +db.users.updateOne({ name: 'John Doe' }, { $set: { isActive: false } }); ``` This would change the user's `isActive` field value to `false` in the document. ## Conclusion -Boolean data types in MongoDB provide a simple and efficient way to represent binary states. Utilize booleans to store true/false values and streamline queries, updates, and other operations to manage data with binary characteristics. \ No newline at end of file +Boolean data types in MongoDB provide a simple and efficient way to represent binary states. Utilize booleans to store true/false values and streamline queries, updates, and other operations to manage data with binary characteristics. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/110-date.md b/src/data/roadmaps/mongodb/content/101-datatypes/110-date.md index 3621fd5d1..1d61f544c 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/110-date.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/110-date.md @@ -1,6 +1,6 @@ # Date -In MongoDB, the *Date* datatype is used to store the date and time values in a specific format. This is essential when working with date-based data, such as recording timestamps, scheduling events, or organizing data based on time. +In MongoDB, the _Date_ datatype is used to store the date and time values in a specific format. This is essential when working with date-based data, such as recording timestamps, scheduling events, or organizing data based on time. ## Date Format @@ -17,13 +17,16 @@ const currentDate = new Date(); When inserting a document with a Date field, you can store the date value as follows: ```javascript -db.events.insertOne({ title: "Sample Event", eventDate: new Date() }); +db.events.insertOne({ title: 'Sample Event', eventDate: new Date() }); ``` You can also specifically store the current date and time using MongoDB's `$currentDate` operator: ```javascript -db.events.insertOne({ title: "Sample Event", eventDate: { $currentDate: { $type: "date" } } }); +db.events.insertOne({ + title: 'Sample Event', + eventDate: { $currentDate: { $type: 'date' } }, +}); ``` ## Querying Dates @@ -32,11 +35,11 @@ To query documents based on date values, you can perform comparisons using vario ```javascript // Find events that are happening before a certain date -const filterDate = new Date("2021-12-31"); +const filterDate = new Date('2021-12-31'); db.events.find({ eventDate: { $lt: filterDate } }); // Find events that are happening after a certain date -const filterDate = new Date("2022-01-01"); +const filterDate = new Date('2022-01-01'); db.events.find({ eventDate: { $gt: filterDate } }); ``` @@ -48,16 +51,16 @@ Example using the `$dayOfYear` and `$year` operators: ```javascript db.events.aggregate([ - { - $group: { - _id: { - year: { $year: "$eventDate" }, - day: { $dayOfYear: "$eventDate" }, - }, - count: { $sum: 1 }, - }, + { + $group: { + _id: { + year: { $year: '$eventDate' }, + day: { $dayOfYear: '$eventDate' }, + }, + count: { $sum: 1 }, }, + }, ]); ``` -This query groups events by the day and year, providing a count of events for each day. \ No newline at end of file +This query groups events by the day and year, providing a count of events for each day. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/111-null.md b/src/data/roadmaps/mongodb/content/101-datatypes/111-null.md index 802f591ff..7d60f17ec 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/111-null.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/111-null.md @@ -12,9 +12,9 @@ Here's an example to illustrate how to use the `null` data type in MongoDB: ```javascript db.users.insertOne({ - "name": "Alice", - "email": "alice@example.com", - "phone": null + name: 'Alice', + email: 'alice@example.com', + phone: null, }); ``` @@ -31,4 +31,4 @@ Keep in mind that there are cases when a field is missing from a document, it mi ## Conclusion -In MongoDB, the `null` data type helps you to represent missing values or fields that shouldn't have a defined value. By setting a field to `null`, you can preserve the structure of your documents and improve the readability of your database design. \ No newline at end of file +In MongoDB, the `null` data type helps you to represent missing values or fields that shouldn't have a defined value. By setting a field to `null`, you can preserve the structure of your documents and improve the readability of your database design. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/112-regex.md b/src/data/roadmaps/mongodb/content/101-datatypes/112-regex.md index 1e65331bb..43096279a 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/112-regex.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/112-regex.md @@ -27,10 +27,10 @@ db.collection.find({ field: { $regex: /example/i } }); // Using $regex operator MongoDB supports the following regex flags to provide flexibility in pattern matching: -* `i`: Case-insensitive match -* `m`: Multi-line match -* `x`: Ignore whitespace and comments in the pattern -* `s`: Allow `.` to match all characters, including newlines +- `i`: Case-insensitive match +- `m`: Multi-line match +- `x`: Ignore whitespace and comments in the pattern +- `s`: Allow `.` to match all characters, including newlines Example: @@ -46,4 +46,4 @@ In regex patterns, certain characters have special meanings, such as `.` (matche db.collection.find({ field: /example\.com/i }); // Search for 'example.com' ``` -Regular expressions in MongoDB allow you to search for complex patterns within text strings effectively. By understanding the basic syntax and flags, you can enhance your querying capabilities to find the exact data you need. \ No newline at end of file +Regular expressions in MongoDB allow you to search for complex patterns within text strings effectively. By understanding the basic syntax and flags, you can enhance your querying capabilities to find the exact data you need. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/113-javascript.md b/src/data/roadmaps/mongodb/content/101-datatypes/113-javascript.md index d17de4565..95e6aaecb 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/113-javascript.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/113-javascript.md @@ -10,8 +10,8 @@ Here's an example of storing JavaScript code in a MongoDB document: ```javascript db.scripts.insert({ - name: "helloWorld", - code: new Code("function() { return 'Hello World!'; }") + name: 'helloWorld', + code: new Code("function() { return 'Hello World!'; }"), }); ``` @@ -23,13 +23,13 @@ db.collection.aggregate([ $addFields: { volume: { $function: { - body: "function(l, w, h) { return l * w * h; }", - args: ["$length", "$width", "$height"], - lang: "js" - } - } - } - } + body: 'function(l, w, h) { return l * w * h; }', + args: ['$length', '$width', '$height'], + lang: 'js', + }, + }, + }, + }, ]); ``` @@ -40,15 +40,15 @@ You can utilize JavaScript functions with MongoDB's Map-Reduce framework. Map-Re An example of Map-Reduce using JavaScript functions: ```javascript -var map = function() { +var map = function () { emit(this.category, this.price); }; -var reduce = function(key, values) { +var reduce = function (key, values) { return Array.sum(values); }; -db.products.mapReduce(map, reduce, { out: "total_by_category" }); +db.products.mapReduce(map, reduce, { out: 'total_by_category' }); ``` ## Limitations @@ -61,4 +61,4 @@ While incredibly flexible, there are some limitations when using JavaScript in M - **Security**: Storing and executing JavaScript code may present security risks like code injection attacks. Ensure proper precautions, such as validation and role management, are in place to minimize such risks. -In conclusion, MongoDB's support for JavaScript as a data type brings flexibility and expressiveness to the database. However, be aware of the performance, concurrency, and security implications when working with JavaScript in your MongoDB applications. \ No newline at end of file +In conclusion, MongoDB's support for JavaScript as a data type brings flexibility and expressiveness to the database. However, be aware of the performance, concurrency, and security implications when working with JavaScript in your MongoDB applications. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/114-symbol.md b/src/data/roadmaps/mongodb/content/101-datatypes/114-symbol.md index a4f86409d..9e96dc98e 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/114-symbol.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/114-symbol.md @@ -18,4 +18,4 @@ Below is a simple example of how a `Symbol` was stored in MongoDB (note that thi } ``` -In conclusion, the `Symbol` datatype is a deprecated legacy datatype in MongoDB that served to store textual data with additional metadata. For new projects, it's highly recommended to use the `String` datatype instead. \ No newline at end of file +In conclusion, the `Symbol` datatype is a deprecated legacy datatype in MongoDB that served to store textual data with additional metadata. For new projects, it's highly recommended to use the `String` datatype instead. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/115-int.md b/src/data/roadmaps/mongodb/content/101-datatypes/115-int.md index 8dd2cccc9..19858af96 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/115-int.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/115-int.md @@ -28,10 +28,10 @@ Here, `age` and `upvotes` are both integer values representing the age and the n If you specifically need to store an integer as a 32-bit or 64-bit value, you can use a driver-specific method or construct BSON objects using the appropriate BSON data type for integers. For example, in the Node.js MongoDB driver, you can use the `Int32` and `Long` constructors from the `mongodb` package: ```javascript -const { Int32, Long } = require("mongodb"); +const { Int32, Long } = require('mongodb'); const myInt32 = new Int32(42); // Creates a 32-bit integer const myInt64 = new Long(9007199254740991); // Creates a 64-bit integer ``` -Remember that choosing the appropriate integer size can help optimize storage and performance within your MongoDB application. Use `Int32` for smaller value ranges and `Int64` for larger value ranges as needed. \ No newline at end of file +Remember that choosing the appropriate integer size can help optimize storage and performance within your MongoDB application. Use `Int32` for smaller value ranges and `Int64` for larger value ranges as needed. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/116-long.md b/src/data/roadmaps/mongodb/content/101-datatypes/116-long.md index 577b311e0..a1d0d9af1 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/116-long.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/116-long.md @@ -18,7 +18,7 @@ You can use the `Long` data type to store and query large integral values in you ```javascript db.collection.insert({ - "largeValue": NumberLong("1234567890123456789") + largeValue: NumberLong('1234567890123456789'), }); ``` @@ -26,7 +26,7 @@ To query documents that have a `Long` field with a specific value, you can use t ```javascript db.collection.find({ - "largeValue": NumberLong("1234567890123456789") + largeValue: NumberLong('1234567890123456789'), }); ``` @@ -38,4 +38,4 @@ When using the `Long` data type in MongoDB, keep the following considerations in - When using the `Long` data type, be aware of the performance trade-offs. Operations on 64-bit integers typically require more processing power and storage space compared to 32-bit integers. If you don't need the extra range provided by the `Long` data type, consider using the `int` data type instead. -- If you need to store extremely large numbers that exceed the range of the `Long` data type, you may want to consider using the [`Decimal128`](https://docs.mongodb.com/manual/reference/bson-types/#decimal128) data type, which provides 128-bit decimal-based floating-point numbers with 34 decimal digits of precision. \ No newline at end of file +- If you need to store extremely large numbers that exceed the range of the `Long` data type, you may want to consider using the [`Decimal128`](https://docs.mongodb.com/manual/reference/bson-types/#decimal128) data type, which provides 128-bit decimal-based floating-point numbers with 34 decimal digits of precision. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/117-timestamp.md b/src/data/roadmaps/mongodb/content/101-datatypes/117-timestamp.md index ab89cb6fe..300f6ce47 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/117-timestamp.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/117-timestamp.md @@ -11,7 +11,7 @@ Timestamps are mainly used for internal MongoDB operations, such as replication To create a Timestamp, you can use the BSON Timestamp type. The syntax is as follows: ```javascript -new Timestamp(t, i) +new Timestamp(t, i); ``` Where `t` is the seconds since the Unix epoch, and `i` is an incrementing ordinal for operations within a given second. @@ -19,16 +19,23 @@ Where `t` is the seconds since the Unix epoch, and `i` is an incrementing ordina For example, to create a Timestamp for the current time: ```javascript -var currentTimestamp = new Timestamp(Math.floor(new Date().getTime() / 1000), 1); +var currentTimestamp = new Timestamp( + Math.floor(new Date().getTime() / 1000), + 1 +); ``` To query documents based on their Timestamp, you can use the `$gt`, `$gte`, `$lt`, or `$lte` query operators: ```javascript // Find all documents with a Timestamp greater than a specified date -db.collection.find({ "timestampFieldName": { "$gt": new Timestamp(Math.floor(new Date('2021-01-01').getTime() / 1000), 1) }}); +db.collection.find({ + timestampFieldName: { + $gt: new Timestamp(Math.floor(new Date('2021-01-01').getTime() / 1000), 1), + }, +}); ``` Keep in mind that using Timestamps for application purposes is generally not recommended, as their main purpose is to serve internal MongoDB operations. Instead, consider using the `Date` datatype for general-purpose time tracking in your application. -Overall, Timestamps are a powerful tool in MongoDB for managing operations in distributed systems and maintaining data consistency. \ No newline at end of file +Overall, Timestamps are a powerful tool in MongoDB for managing operations in distributed systems and maintaining data consistency. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/118-decimal128.md b/src/data/roadmaps/mongodb/content/101-datatypes/118-decimal128.md index 3ec7195ce..9d4b671ef 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/118-decimal128.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/118-decimal128.md @@ -14,9 +14,9 @@ To specify a `Decimal128` value in MongoDB, use the `$numberDecimal` keyword fol ```javascript db.example.insertOne({ - "amount": { - "$numberDecimal": "1234.567890123456789012345678901234" - } + amount: { + $numberDecimal: '1234.567890123456789012345678901234', + }, }); ``` @@ -25,11 +25,13 @@ Alternatively, with the help of the JavaScript BSON library, you can use the `De ```javascript const { Decimal128 } = require('bson'); -const decimalValue = Decimal128.fromString('1234.567890123456789012345678901234'); +const decimalValue = Decimal128.fromString( + '1234.567890123456789012345678901234' +); db.example.insertOne({ amount: decimalValue }); ``` ## Considerations - When querying decimal values, note that MongoDB compares decimal numbers using their mathematical values, rather than their string representation. -- Due to the high precision of the `Decimal128` data type, you may encounter rounding differences between MongoDB and other systems or libraries when performing calculations involving mixed data types. To mitigate this, ensure that all operands are converted to the same data type (preferably, `Decimal128`) before performing calculations. \ No newline at end of file +- Due to the high precision of the `Decimal128` data type, you may encounter rounding differences between MongoDB and other systems or libraries when performing calculations involving mixed data types. To mitigate this, ensure that all operands are converted to the same data type (preferably, `Decimal128`) before performing calculations. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/119-min-key.md b/src/data/roadmaps/mongodb/content/101-datatypes/119-min-key.md index e51e4394b..2b77668e9 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/119-min-key.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/119-min-key.md @@ -12,13 +12,13 @@ To use Min Key in MongoDB, you can utilize the `MinKey()` function. Here's an ex ```javascript // Import the MinKey class from the BSON module -const { MinKey } = require("bson"); +const { MinKey } = require('bson'); // Create an instance of the MinKey class const minValue = new MinKey(); // Insert a document with a field `priority` having the MinKey value -db.myCollection.insertOne({ name: "example", priority: minValue }); +db.myCollection.insertOne({ name: 'example', priority: minValue }); ``` This will insert a document with a `priority` field set to the Min Key value. @@ -44,4 +44,4 @@ db.myCollection.find().sort({ priority: 1 }).limit(1); ## Conclusion -In this section, we've learned about the "Min Key" data type in MongoDB. We discussed how it is used to represent the smallest value in the BSON data types and its various use cases in sorting and querying the data. \ No newline at end of file +In this section, we've learned about the "Min Key" data type in MongoDB. We discussed how it is used to represent the smallest value in the BSON data types and its various use cases in sorting and querying the data. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/120-max-key.md b/src/data/roadmaps/mongodb/content/101-datatypes/120-max-key.md index 47322133c..e59c4ff26 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/120-max-key.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/120-max-key.md @@ -12,6 +12,7 @@ Here is a brief summary of Max Key: - Max Key is not to be confused with a regular value in a document and is primarily used for internal purposes. ## Usage + To use Max Key in your MongoDB implementation, you can insert it into your document using MongoDB syntax as follows: ```javascript @@ -29,9 +30,9 @@ When you want to sort or compare documents in a collection, Max Key will help en Here is an example of how Max Key can be used in a range query: ```javascript -db.my_collection.find({age: {$lte: MaxKey()}}); +db.my_collection.find({ age: { $lte: MaxKey() } }); ``` This query will return all the documents in `my_collection` where the `age` field is less than or equal to Max Key, essentially retrieving everything, as no value can be greater than Max Key. -In summary, Max Key plays an essential role in MongoDB by providing a constant value that is always greater than other BSON types, thus ensuring proper sorting and comparing behavior in your implementation. \ No newline at end of file +In summary, Max Key plays an essential role in MongoDB by providing a constant value that is always greater than other BSON types, thus ensuring proper sorting and comparing behavior in your implementation. diff --git a/src/data/roadmaps/mongodb/content/101-datatypes/index.md b/src/data/roadmaps/mongodb/content/101-datatypes/index.md index 065283be0..a424e67a7 100644 --- a/src/data/roadmaps/mongodb/content/101-datatypes/index.md +++ b/src/data/roadmaps/mongodb/content/101-datatypes/index.md @@ -2,11 +2,11 @@ In MongoDB, data is stored in BSON format, which supports various data types. Understanding these data types is essential as they play a crucial role in schema design and query performance. The following is a brief summary of the different data types supported in MongoDB. -## ObjectId +## ObjectId `ObjectId` is a 12-byte identifier used as a unique identifier for documents in a collection. It is the default value generated for the `_id` field, ensuring uniqueness within the collection. -## String +## String `String` is used to store text data. It must be a valid UTF-8 encoded string. @@ -16,7 +16,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Boolean +## Boolean `Boolean` is used to store true or false values. @@ -26,7 +26,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Integer +## Integer `Integer` is used to store an integer value. MongoDB supports two integer types: 32-bit (`int`) and 64-bit (`long`). @@ -36,7 +36,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Double +## Double `Double` is used to store floating-point numbers. @@ -46,7 +46,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Date +## Date `Date` is used to store the date and time in Unix time format (milliseconds timestamp since January 1, 1970, 00:00:00 UTC). @@ -56,7 +56,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Array +## Array `Array` is used to store a list of values in a single field. The values can be of different data types. @@ -66,7 +66,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Object +## Object `Object` is used to store embedded documents, meaning a document can contain another document. @@ -76,7 +76,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Null +## Null `Null` is used to store a null value, representing the absence of a value or the field. @@ -86,7 +86,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Binary Data +## Binary Data `Binary Data` is used to store binary data or byte arrays. @@ -96,7 +96,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Code +## Code `Code` is used to store JavaScript code. @@ -106,7 +106,7 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -## Regular Expression +## Regular Expression `Regular Expression` is used to store regular expressions. @@ -116,4 +116,4 @@ In MongoDB, data is stored in BSON format, which supports various data types. Un } ``` -Understanding and using the appropriate data types while designing your MongoDB schema can significantly improve the performance, storage, and retrieval of your data. Don't forget to consider the specific use cases of your application when choosing data types. \ No newline at end of file +Understanding and using the appropriate data types while designing your MongoDB schema can significantly improve the performance, storage, and retrieval of your data. Don't forget to consider the specific use cases of your application when choosing data types. diff --git a/src/data/roadmaps/mongodb/content/102-collections/100-counting-documents.md b/src/data/roadmaps/mongodb/content/102-collections/100-counting-documents.md index 24174c7c3..22463e1a7 100644 --- a/src/data/roadmaps/mongodb/content/102-collections/100-counting-documents.md +++ b/src/data/roadmaps/mongodb/content/102-collections/100-counting-documents.md @@ -5,40 +5,43 @@ When working with MongoDB, you might often need to know the number of documents - `countDocuments()` - `estimatedDocumentCount()` -## countDocuments() +## countDocuments() The `countDocuments()` method is used to count the number of documents in a collection based on a specified filter. It provides an accurate count that may involve reading all documents in the collection. **Syntax:** ```javascript -collection.countDocuments(filter, options) +collection.countDocuments(filter, options); ``` -* `filter`: (Optional) A query that will filter the documents before the count is applied. -* `options`: (Optional) Additional options for the count operation such as `skip`, `limit`, and `collation`. +- `filter`: (Optional) A query that will filter the documents before the count is applied. +- `options`: (Optional) Additional options for the count operation such as `skip`, `limit`, and `collation`. **Example:** ```javascript -db.collection('orders').countDocuments({ status: 'completed' }, (err, count) => { - console.log('Number of completed orders: ', count); -}); +db.collection('orders').countDocuments( + { status: 'completed' }, + (err, count) => { + console.log('Number of completed orders: ', count); + } +); ``` In the example above, we count the number of documents in the `orders` collection that have a`status` field equal to `'completed'`. -## estimatedDocumentCount() +## estimatedDocumentCount() The `estimatedDocumentCount()` method provides an approximate count of documents in the collection, without applying any filters. This method uses the collection's metadata to determine the count and is generally faster than `countDocuments()`. **Syntax:** ```javascript -collection.estimatedDocumentCount(options) +collection.estimatedDocumentCount(options); ``` -* `options`: (Optional) Additional options for the count operation such as `maxTimeMS`. +- `options`: (Optional) Additional options for the count operation such as `maxTimeMS`. **Example:** @@ -50,4 +53,4 @@ db.collection('orders').estimatedDocumentCount((err, count) => { In the example above, we get the estimated number of documents in the `orders` collection. -Keep in mind that you should use the `countDocuments()` method when you need to apply filters to count documents, while `estimatedDocumentCount()` should be used when an approximate count is sufficient and you don't need to apply any filters. \ No newline at end of file +Keep in mind that you should use the `countDocuments()` method when you need to apply filters to count documents, while `estimatedDocumentCount()` should be used when an approximate count is sufficient and you don't need to apply any filters. diff --git a/src/data/roadmaps/mongodb/content/102-collections/101-insert-methods.md b/src/data/roadmaps/mongodb/content/102-collections/101-insert-methods.md index 58b554a1d..f4a3280d3 100644 --- a/src/data/roadmaps/mongodb/content/102-collections/101-insert-methods.md +++ b/src/data/roadmaps/mongodb/content/102-collections/101-insert-methods.md @@ -2,7 +2,7 @@ In MongoDB, collections are used to store documents. To add data into these collections, MongoDB provides two primary insertion methods: `insertOne()` and `insertMany()`. In this section, we'll explore the usage and syntax of these methods, along with their options and some basic examples. -## insertOne() +## insertOne() The `insertOne()` method is used to insert a single document into a collection. This method returns an `InsertOneResult` object, that shows the outcome of the operation. @@ -31,12 +31,12 @@ db.collection.insertOne( ```javascript db.inventory.insertOne({ - item: "book", - qty: 1 -}) + item: 'book', + qty: 1, +}); ``` -## insertMany() +## insertMany() The `insertMany()` method is used to insert multiple documents into a collection at once. It returns an `InsertManyResult` object, displaying the status of the operation. @@ -65,10 +65,10 @@ db.collection.insertMany( ```javascript db.inventory.insertMany([ - { item: "pen", qty: 5 }, - { item: "pencil", qty: 10 }, - { item: "notebook", qty: 25 } -]) + { item: 'pen', qty: 5 }, + { item: 'pencil', qty: 10 }, + { item: 'notebook', qty: 25 }, +]); ``` -In conclusion, insert methods in MongoDB allow users to add documents to a collection with a few simple commands. By understanding the syntax and options available for `insertOne()` and `insertMany()`, we can efficiently store and manage data within MongoDB collections. \ No newline at end of file +In conclusion, insert methods in MongoDB allow users to add documents to a collection with a few simple commands. By understanding the syntax and options available for `insertOne()` and `insertMany()`, we can efficiently store and manage data within MongoDB collections. diff --git a/src/data/roadmaps/mongodb/content/102-collections/102-find-methods.md b/src/data/roadmaps/mongodb/content/102-collections/102-find-methods.md index 49a7fd7e4..bab99f683 100644 --- a/src/data/roadmaps/mongodb/content/102-collections/102-find-methods.md +++ b/src/data/roadmaps/mongodb/content/102-collections/102-find-methods.md @@ -7,13 +7,13 @@ In MongoDB, the `find()` method is an essential aspect of working with collectio The basic `find()` method is used to fetch all documents within a collection. To use it, you'll simply call the `find()` method on a collection. ```javascript -db.collection_name.find() +db.collection_name.find(); ``` For example, to fetch all documents from a collection named `users`: ```javascript -db.users.find() +db.users.find(); ``` ## Query Filters @@ -23,7 +23,7 @@ To search for specific documents, you would need to supply query parameters as a For example, to fetch documents from the `users` collection with the `age` field set to `25`: ```javascript -db.users.find({ "age": 25 }) +db.users.find({ age: 25 }); ``` ## Logical Operators @@ -33,7 +33,7 @@ MongoDB provides multiple logical operators for more advanced filtering, includi For example, to find users with an age of `25` and a first name of `John`: ```javascript -db.users.find({ "$and": [{"age": 25}, {"first_name": "John"}]}) +db.users.find({ $and: [{ age: 25 }, { first_name: 'John' }] }); ``` ## Projection @@ -43,7 +43,7 @@ Projection is used to control which fields are returned in the search results. B To only include the `first_name` and `age` fields of the matching documents: ```javascript -db.users.find({ "age": 25 }, { "first_name": 1, "age": 1 }) +db.users.find({ age: 25 }, { first_name: 1, age: 1 }); ``` ## Sorting @@ -53,7 +53,7 @@ You can also sort the results of the `find()` method using the `sort()` function For example, to sort users by their age in ascending order: ```javascript -db.users.find().sort({ "age": 1 }) +db.users.find().sort({ age: 1 }); ``` ## Limit and Skip @@ -61,13 +61,13 @@ db.users.find().sort({ "age": 1 }) To limit the results of the `find()` method, use the `limit()` function. For instance, to fetch only the first `5` users: ```javascript -db.users.find().limit(5) +db.users.find().limit(5); ``` Additionally, use the `skip()` function to start fetching records after a specific number of rows: ```javascript -db.users.find().skip(10) +db.users.find().skip(10); ``` -All these `find` methods combined provide powerful ways to query your MongoDB collections, allowing you to filter, sort, and retrieve the desired documents. \ No newline at end of file +All these `find` methods combined provide powerful ways to query your MongoDB collections, allowing you to filter, sort, and retrieve the desired documents. diff --git a/src/data/roadmaps/mongodb/content/102-collections/103-update-methods.md b/src/data/roadmaps/mongodb/content/102-collections/103-update-methods.md index 1ea45b95d..af21fde65 100644 --- a/src/data/roadmaps/mongodb/content/102-collections/103-update-methods.md +++ b/src/data/roadmaps/mongodb/content/102-collections/103-update-methods.md @@ -3,46 +3,52 @@ In MongoDB, update methods are used to modify the existing documents of a collection. They allow you to perform updates on specific fields or the entire document, depending on the query criteria provided. Here is a summary of the most commonly used update methods in MongoDB: - **updateOne()**: This method updates the first document that matches the query criteria provided. The syntax for updateOne is: - ```javascript - db.collection.updateOne(, , ) - ``` - - ``: Specifies the criteria for selecting the document to update. - - ``: Specifies the modifications to apply to the selected document. - - ``: (Optional) Additional options to configure the behavior of the update operation. + + ```javascript + db.collection.updateOne(, , ) + ``` + + - ``: Specifies the criteria for selecting the document to update. + - ``: Specifies the modifications to apply to the selected document. + - ``: (Optional) Additional options to configure the behavior of the update operation. - **updateMany()**: This method updates multiple documents that match the query criteria provided. The syntax for updateMany is: - ```javascript - db.collection.updateMany(, , ) - ``` - - ``: Specifies the criteria for selecting the documents to update. - - ``: Specifies the modifications to apply to the selected documents. - - ``: (Optional) Additional options to configure the behavior of the update operation. + + ```javascript + db.collection.updateMany(, , ) + ``` + + - ``: Specifies the criteria for selecting the documents to update. + - ``: Specifies the modifications to apply to the selected documents. + - ``: (Optional) Additional options to configure the behavior of the update operation. - **replaceOne()**: This method replaces a document that matches the query criteria with a new document. The syntax for replaceOne is: - ```javascript - db.collection.replaceOne(, , ) - ``` - - ``: Specifies the criteria for selecting the document to replace. - - ``: The new document that will replace the matched document. - - ``: (Optional) Additional options to configure the behavior of the replace operation. + ```javascript + db.collection.replaceOne(, , ) + ``` + - ``: Specifies the criteria for selecting the document to replace. + - ``: The new document that will replace the matched document. + - ``: (Optional) Additional options to configure the behavior of the replace operation. ## Update Operators MongoDB provides additional update operators to specify the modifications like `$set`, `$unset`, `$inc`, `$push`, `$pull`, and more. Here are a few examples: - Use `$set` operator to update the value of a field: + ```javascript - db.collection.updateOne({name: "John Doe"}, {$set: {age: 30}}) + db.collection.updateOne({ name: 'John Doe' }, { $set: { age: 30 } }); ``` - Use `$inc` operator to increment the value of a field: + ```javascript - db.collection.updateMany({status: "new"}, {$inc: {views: 1}}) + db.collection.updateMany({ status: 'new' }, { $inc: { views: 1 } }); ``` - Use `$push` operator to add an item to an array field: ```javascript - db.collection.updateOne({name: "Jane Doe"}, {$push: {tags: "mongodb"}}) + db.collection.updateOne({ name: 'Jane Doe' }, { $push: { tags: 'mongodb' } }); ``` -Remember to thoroughly test your update operations to ensure the modifications are done correctly, and always backup your data before making any substantial changes to your documents. \ No newline at end of file +Remember to thoroughly test your update operations to ensure the modifications are done correctly, and always backup your data before making any substantial changes to your documents. diff --git a/src/data/roadmaps/mongodb/content/102-collections/104-delete-methods.md b/src/data/roadmaps/mongodb/content/102-collections/104-delete-methods.md index 1406960e9..b39f5d197 100644 --- a/src/data/roadmaps/mongodb/content/102-collections/104-delete-methods.md +++ b/src/data/roadmaps/mongodb/content/102-collections/104-delete-methods.md @@ -9,9 +9,11 @@ The `deleteOne()` method is used to delete a single document from a collection. Syntax: `db.collection.deleteOne(FILTER)` Example: + ```javascript -db.users.deleteOne({"firstName": "John"}) +db.users.deleteOne({ firstName: 'John' }); ``` + This command will delete the first `users` document found with a `firstName` field equal to `"John"`. ## db.collection.deleteMany() @@ -21,9 +23,11 @@ The `deleteMany()` method is used to remove multiple documents from a collection Syntax: `db.collection.deleteMany(FILTER)` Example: + ```javascript -db.users.deleteMany({"country": "Australia"}) +db.users.deleteMany({ country: 'Australia' }); ``` + This command will delete all `users` documents with a `country` field equal to `"Australia"`. ## db.collection.remove() @@ -33,9 +37,11 @@ The `remove()` method can be used to delete documents in a more flexible way, as Syntax: `db.collection.remove(FILTER, JUST_ONE)` Example: + ```javascript -db.users.remove({"age": {"$lt": 18}}, true) +db.users.remove({ age: { $lt: 18 } }, true); ``` + This command would delete a single user document with an `age` field value less than 18. ## db.collection.drop() @@ -45,9 +51,11 @@ In cases where you want to remove an entire collection, including the documents Syntax: `db.collection.drop()` Example: + ```javascript -db.users.drop() +db.users.drop(); ``` + This command would delete the entire `users` collection and all related data. -It's important to note that these methods will remove the affected documents permanently from the database, so use caution when executing delete commands. Keep in mind to keep backups or use version control to maintain data integrity throughout the lifecycle of your MongoDB database. \ No newline at end of file +It's important to note that these methods will remove the affected documents permanently from the database, so use caution when executing delete commands. Keep in mind to keep backups or use version control to maintain data integrity throughout the lifecycle of your MongoDB database. diff --git a/src/data/roadmaps/mongodb/content/102-collections/105-bulk-write.md b/src/data/roadmaps/mongodb/content/102-collections/105-bulk-write.md index d48dcf087..d2c1c9474 100644 --- a/src/data/roadmaps/mongodb/content/102-collections/105-bulk-write.md +++ b/src/data/roadmaps/mongodb/content/102-collections/105-bulk-write.md @@ -40,4 +40,4 @@ unorderedBulk.execute((err, result) => { }); ``` -Remember that using bulk write operations can greatly improve the performance of your MongoDB queries, but make sure to choose the right type (ordered or unordered) based on your application requirements. \ No newline at end of file +Remember that using bulk write operations can greatly improve the performance of your MongoDB queries, but make sure to choose the right type (ordered or unordered) based on your application requirements. diff --git a/src/data/roadmaps/mongodb/content/102-collections/106-validate.md b/src/data/roadmaps/mongodb/content/102-collections/106-validate.md index c8610e0e0..d8c759596 100644 --- a/src/data/roadmaps/mongodb/content/102-collections/106-validate.md +++ b/src/data/roadmaps/mongodb/content/102-collections/106-validate.md @@ -5,6 +5,7 @@ The `validate` command is used to examine a MongoDB collection to verify and rep ## Usage The basic syntax of the `validate` command is as follows: + ```javascript db.runCommand({validate: "", options...}) ``` @@ -13,20 +14,22 @@ db.runCommand({validate: "", options...}) ## Options -* `full`: (default: false) When set to true, the `validate` command conducts a more thorough inspection of the collection, looking through all its extents, which are contiguous sections of the collection's data on disk. This option should be used with caution as it may impact read and write performance. +- `full`: (default: false) When set to true, the `validate` command conducts a more thorough inspection of the collection, looking through all its extents, which are contiguous sections of the collection's data on disk. This option should be used with caution as it may impact read and write performance. -* `background`: (default: false) When set to true, the `validate` command runs in the background, allowing other read and write operations on the collection to proceed concurrently. This option is beneficial for large collections, as it minimizes the impact on system performance. +- `background`: (default: false) When set to true, the `validate` command runs in the background, allowing other read and write operations on the collection to proceed concurrently. This option is beneficial for large collections, as it minimizes the impact on system performance. ## Example Validate a collection named "products": + ```javascript -db.runCommand({validate: "products"}) +db.runCommand({ validate: 'products' }); ``` Validate the collection and perform a background and full check: + ```javascript -db.runCommand({validate: "products", background: true, full: true}) +db.runCommand({ validate: 'products', background: true, full: true }); ``` ## Output @@ -49,4 +52,4 @@ The `validate` command returns an object that contains information about the val Keep in mind that the `validate` command should be used mainly for diagnostics and troubleshooting purposes, as it can impact system performance when validating large collections or when using the `full` flag. Use it when you suspect that there might be corruption or discrepancies within the collection's data or internal structures. -That's all about the `validate` command. Now you know how to check the correctness of your MongoDB collections and gather important statistics about their internal structures. \ No newline at end of file +That's all about the `validate` command. Now you know how to check the correctness of your MongoDB collections and gather important statistics about their internal structures. diff --git a/src/data/roadmaps/mongodb/content/102-collections/index.md b/src/data/roadmaps/mongodb/content/102-collections/index.md index 61284ef01..3c77dbb78 100644 --- a/src/data/roadmaps/mongodb/content/102-collections/index.md +++ b/src/data/roadmaps/mongodb/content/102-collections/index.md @@ -12,49 +12,54 @@ In MongoDB, **collections** are used to organize documents. A collection can be To create a collection in MongoDB, you can choose from two methods: - **Implicit Creation**: When you insert a document without specifying an existing collection, MongoDB automatically creates the collection for you. - ```javascript - db.createCollection("users") - ``` + + ```javascript + db.createCollection('users'); + ``` - **Explicit Creation**: Use the `db.createCollection(name, options)` method to create a collection with specific options: - ```javascript - db.createCollection("users", { capped: true, size: 100000, max: 5000 }) - ``` + ```javascript + db.createCollection('users', { capped: true, size: 100000, max: 5000 }); + ``` ## Managing Collections - **Insert Documents**: To insert a document into a collection, use the `insertOne()` or `insertMany()` methods. - ```javascript - db.users.insertOne({ name: "John Doe", age: 30, email: "john@example.com" }) - db.users.insertMany([ - { name: "Jane Doe", age: 28, email: "jane@example.com" }, - { name: "Mary Jane", age: 32, email: "mary@example.com" } - ]) - ``` + ```javascript + db.users.insertOne({ name: 'John Doe', age: 30, email: 'john@example.com' }); + + db.users.insertMany([ + { name: 'Jane Doe', age: 28, email: 'jane@example.com' }, + { name: 'Mary Jane', age: 32, email: 'mary@example.com' }, + ]); + ``` - **Find Documents**: Use the `find()` method to query documents in a collection. - ```javascript - db.users.find({ age: { $gt: 30 } }) - ``` + + ```javascript + db.users.find({ age: { $gt: 30 } }); + ``` - **Update Documents**: Use the `updateOne()`, `updateMany()`, or `replaceOne()` methods to modify documents in a collection. - ```javascript - db.users.updateOne({ name: "John Doe" }, { $set: { age: 31 } }) - db.users.updateMany({ age: { $gt: 30 } }, { $inc: { age: 1 } }) - ``` + ```javascript + db.users.updateOne({ name: 'John Doe' }, { $set: { age: 31 } }); + + db.users.updateMany({ age: { $gt: 30 } }, { $inc: { age: 1 } }); + ``` - **Delete Documents**: Use the `deleteOne()` or `deleteMany()` methods to remove documents from a collection. - ```javascript - db.users.deleteOne({ name: "John Doe" }) - db.users.deleteMany({ age: { $lt: 30 } }) - ``` + ```javascript + db.users.deleteOne({ name: 'John Doe' }); + + db.users.deleteMany({ age: { $lt: 30 } }); + ``` - **Drop Collection**: To delete the entire collection, use the `drop()` method. - ```javascript - db.users.drop() - ``` + ```javascript + db.users.drop(); + ``` -In summary, collections are an essential part of MongoDB that enable you to efficiently manage and store documents with varying structures. Their flexible schema and dynamic nature make them perfect for handling both unstructured and semi-structured data. \ No newline at end of file +In summary, collections are an essential part of MongoDB that enable you to efficiently manage and store documents with varying structures. Their flexible schema and dynamic nature make them perfect for handling both unstructured and semi-structured data. diff --git a/src/data/roadmaps/mongodb/content/102-useful-concepts/100-read-write-concerns.md b/src/data/roadmaps/mongodb/content/102-useful-concepts/100-read-write-concerns.md index 64fe86768..87e92dfdd 100644 --- a/src/data/roadmaps/mongodb/content/102-useful-concepts/100-read-write-concerns.md +++ b/src/data/roadmaps/mongodb/content/102-useful-concepts/100-read-write-concerns.md @@ -26,4 +26,4 @@ Additionally, the `j` and `wtimeout` options can be used to fine-tune the write - `j: true/false`: Specifies whether the write operation must be written to the journal before acknowledgment. Setting `j: true` ensures the data is committed to the journal and provides increased durability. - `wtimeout: `: Specifies a time limit in milliseconds for write operations to be acknowledged. If the acknowledgment is not received within the specified time, the operation returns a timeout error. However, this does not mean the write operation failed; it may still be successful at a later point in time. -By configuring read and write concerns appropriately, you can manage the consistency and durability of your MongoDB database according to your application requirements. \ No newline at end of file +By configuring read and write concerns appropriately, you can manage the consistency and durability of your MongoDB database according to your application requirements. diff --git a/src/data/roadmaps/mongodb/content/102-useful-concepts/101-cursors.md b/src/data/roadmaps/mongodb/content/102-useful-concepts/101-cursors.md index 9b5314262..d7271cfbe 100644 --- a/src/data/roadmaps/mongodb/content/102-useful-concepts/101-cursors.md +++ b/src/data/roadmaps/mongodb/content/102-useful-concepts/101-cursors.md @@ -15,7 +15,7 @@ const cursor = db.collection('myCollection').find(); You can then iterate over the documents in the result set using the cursor's `forEach` method or other methods like `toArray()` or `next()`: ```javascript -cursor.forEach(doc => { +cursor.forEach((doc) => { console.log(doc); }); ``` @@ -33,7 +33,8 @@ Cursors provide several methods that allow you to manipulate the result set and You can chain these methods together to build complex queries: ```javascript -const cursor = db.collection('myCollection') +const cursor = db + .collection('myCollection') .find({ age: { $gt: 25 } }) .sort('name', 1) .limit(10) @@ -53,4 +54,4 @@ cursor.close(); This method is particularly useful when working with large result sets or when you want to explicitly manage resources. -In summary, cursors are essential tools for working with MongoDB, as they provide an efficient way to handle large volumes of data by iterating through documents in batches. Leveraging cursor methods can help you optimize the performance and resource usage of your application. \ No newline at end of file +In summary, cursors are essential tools for working with MongoDB, as they provide an efficient way to handle large volumes of data by iterating through documents in batches. Leveraging cursor methods can help you optimize the performance and resource usage of your application. diff --git a/src/data/roadmaps/mongodb/content/102-useful-concepts/102-retryable-reads-writes.md b/src/data/roadmaps/mongodb/content/102-useful-concepts/102-retryable-reads-writes.md index 9b146d7ed..3ff2c7771 100644 --- a/src/data/roadmaps/mongodb/content/102-useful-concepts/102-retryable-reads-writes.md +++ b/src/data/roadmaps/mongodb/content/102-useful-concepts/102-retryable-reads-writes.md @@ -15,7 +15,9 @@ Examples of retryable read operations include: To enable retryable reads, use the following option in your client settings: ```javascript -{retryReads: true} +{ + retryReads: true; +} ``` By default, newer versions of MongoDB (since v3.6) have retryable reads enabled. @@ -34,11 +36,13 @@ Examples of retryable write operations include: To enable retryable writes, use the following option in your client settings: ```javascript -{retryWrites: true} +{ + retryWrites: true; +} ``` By default, MongoDB has retryable writes enabled for replica sets and sharded clusters (since v4.0). **Note**: It's important to ensure that you're using a compatible version of the MongoDB server and drivers to take full advantage of retryable reads and writes features. Additionally, these features are not supported in standalone configurations. -For more information, check the official [MongoDB documentation on retryable reads](https://docs.mongodb.com/manual/core/retryable-reads/) and [retryable writes](https://docs.mongodb.com/manual/core/retryable-writes/). \ No newline at end of file +For more information, check the official [MongoDB documentation on retryable reads](https://docs.mongodb.com/manual/core/retryable-reads/) and [retryable writes](https://docs.mongodb.com/manual/core/retryable-writes/). diff --git a/src/data/roadmaps/mongodb/content/102-useful-concepts/index.md b/src/data/roadmaps/mongodb/content/102-useful-concepts/index.md index acbd5132f..27c1ba26d 100644 --- a/src/data/roadmaps/mongodb/content/102-useful-concepts/index.md +++ b/src/data/roadmaps/mongodb/content/102-useful-concepts/index.md @@ -2,36 +2,36 @@ In this section, we will cover some of the most useful concepts you should be familiar with while working with MongoDB. As a flexible, document-based, and scalable database, MongoDB offers a wide range of possibilities for developers and administrators. Understanding these key concepts will help you leverage the benefits of MongoDB to their fullest extent. -## Documents and Collections +## Documents and Collections -* **Document:** +- **Document:** A single record in MongoDB is referred to as a document. Documents consist of key-value pairs and are stored in the JSON-like format BSON(Binary-JSON). This structure makes it flexible, extensible, and easy to work with. -* **Collection:** +- **Collection:** A group of MongoDB documents is referred to as a collection. Collections are analogous to tables in traditional relational databases, but unlike tables, they do not require a fixed schema. This allows for documents within a collection to have a variety of different fields and structures. -## MongoDB Query Language (MQL) +## MongoDB Query Language (MQL) MQL is the syntax used for querying MongoDB databases, performing CRUD operations (Create, Read, Update, and Delete), and managing database administration tasks. MQL is concise, powerful, and easy to use. -## Indexing +## Indexing Indexing is crucial for optimizing database performance. MongoDB supports various types of indexes, including single-field, compound, and text indexes. Proper indexing can significantly improve query performance by reducing the amount of work the database has to perform in order to find relevant data. -## Aggregation Framework +## Aggregation Framework MongoDB offers a robust aggregation framework that allows you to transform, manipulate, and analyze data in your collections. With the aggregation framework, you can perform complex data analysis tasks, such as filtering, grouping, and computing averages, efficiently and with ease. -## Replication and Sharding +## Replication and Sharding -* **Replication:** +- **Replication:** MongoDB offers high availability by allowing data replication across multiple servers. The replication feature ensures that if one server becomes unavailable, the others can continue to function without data loss. Replicated data is managed in replica sets, which consist of multiple MongoDB instances. -* **Sharding:** +- **Sharding:** One of MongoDB's strengths is its ability to scale horizontally through sharding, the process of splitting and distributing data across multiple servers or clusters. This helps to distribute load, ensure better performance, and maintain availability as the size of the dataset grows. -## MongoDB Atlas +## MongoDB Atlas MongoDB Atlas is a fully managed, global cloud database service provided by MongoDB. It offers features such as automatic backup and scaling, as well as advanced security for your MongoDB data. Atlas makes it easy to deploy, manage, and optimize your MongoDB databases in the cloud. -By familiarizing yourself with these useful concepts in MongoDB, you will be well-equipped to build and manage efficient, powerful, and scalable applications. Happy coding! \ No newline at end of file +By familiarizing yourself with these useful concepts in MongoDB, you will be well-equipped to build and manage efficient, powerful, and scalable applications. Happy coding! diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/100-indexes.md b/src/data/roadmaps/mongodb/content/105-query-operators/100-indexes.md index b11748a17..c0b1183ad 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/100-indexes.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/100-indexes.md @@ -65,4 +65,4 @@ While indexes are an amazing tool, they can have some caveats: - They can slow down write operations, as indexes should be updated whenever write operations occur on the indexed fields. - Indexes should be chosen wisely, considering the queries that will run on the collection. -In conclusion, MongoDB indexes are a vital aspect of optimizing query performance in your database. By understanding the different types of indexes and using them effectively, you can significantly improve the performance and efficiency of your MongoDB applications. \ No newline at end of file +In conclusion, MongoDB indexes are a vital aspect of optimizing query performance in your database. By understanding the different types of indexes and using them effectively, you can significantly improve the performance and efficiency of your MongoDB applications. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/100-project.md b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/100-project.md index d9ae2a478..f4d0e14cd 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/100-project.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/100-project.md @@ -18,12 +18,12 @@ Let's assume we have a "users" collection with documents that look like this: ```json { - "_id": 1, - "name": "John Doe", - "posts": [ - { "title": "Sample Post 1", "views": 43 }, - { "title": "Sample Post 2", "views": 89 } - ] + "_id": 1, + "name": "John Doe", + "posts": [ + { "title": "Sample Post 1", "views": 43 }, + { "title": "Sample Post 2", "views": 89 } + ] } ``` @@ -31,22 +31,22 @@ If you want to retrieve only the name and the total number of posts for each use ```javascript db.users.aggregate([ - { - $project: { - name: 1, - totalPosts: { $size: "$posts" } - } - } -]) + { + $project: { + name: 1, + totalPosts: { $size: '$posts' }, + }, + }, +]); ``` Here, we are including the `name` field and calculating the `totalPosts` value with the `$size` operator. The output will look like this: ```json { - "_id": 1, - "name": "John Doe", - "totalPosts": 2 + "_id": 1, + "name": "John Doe", + "totalPosts": 2 } ``` @@ -58,14 +58,14 @@ For example, if you only want to exclude the "posts" field, you can do that as f ```javascript db.users.aggregate([ - { - $project: { - posts: 0 - } - } -]) + { + $project: { + posts: 0, + }, + }, +]); ``` ## Conclusion -The `$project` operator is a powerful tool in MongoDB's aggregation framework that helps you manage the shape and size of the output documents. By understanding and leveraging its capabilities, you can effectively optimize your queries and reduce the amount of unnecessary data transfer in your application. \ No newline at end of file +The `$project` operator is a powerful tool in MongoDB's aggregation framework that helps you manage the shape and size of the output documents. By understanding and leveraging its capabilities, you can effectively optimize your queries and reduce the amount of unnecessary data transfer in your application. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/101-include.md b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/101-include.md index 0bb1eb40a..56584ebd0 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/101-include.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/101-include.md @@ -5,7 +5,9 @@ The `$include` projection operator is used in queries to specify the fields that The syntax for `$include` is as follows: ```javascript -{ field: 1 } +{ + field: 1; +} ``` Here, `field` is the name of the field to include, and `1` indicates that you want the field included in the result documents. You can include multiple fields by specifying them in a comma-separated list: @@ -21,30 +23,30 @@ Suppose we have a collection called `books` with the following documents: ```javascript [ { - "title": "The Catcher in the Rye", - "author": "J.D. Salinger", - "year": 1951, - "genre": "Literary fiction" + title: 'The Catcher in the Rye', + author: 'J.D. Salinger', + year: 1951, + genre: 'Literary fiction', }, { - "title": "To Kill a Mockingbird", - "author": "Harper Lee", - "year": 1960, - "genre": "Southern Gothic" + title: 'To Kill a Mockingbird', + author: 'Harper Lee', + year: 1960, + genre: 'Southern Gothic', }, { - "title": "Of Mice and Men", - "author": "John Steinbeck", - "year": 1937, - "genre": "Novella" - } -] + title: 'Of Mice and Men', + author: 'John Steinbeck', + year: 1937, + genre: 'Novella', + }, +]; ``` If you want to retrieve only the `title` and `author` fields from the documents in the `books` collection, you can use the `$include` projection operator as follows: ```javascript -db.books.find({}, { title: 1, author: 1, _id: 0 }) +db.books.find({}, { title: 1, author: 1, _id: 0 }); ``` The result will be: @@ -52,20 +54,20 @@ The result will be: ```javascript [ { - "title": "The Catcher in the Rye", - "author": "J.D. Salinger", + title: 'The Catcher in the Rye', + author: 'J.D. Salinger', }, { - "title": "To Kill a Mockingbird", - "author": "Harper Lee", + title: 'To Kill a Mockingbird', + author: 'Harper Lee', }, { - "title": "Of Mice and Men", - "author": "John Steinbeck", - } -] + title: 'Of Mice and Men', + author: 'John Steinbeck', + }, +]; ``` Note that we have also excluded the `_id` field (which is included by default) by setting it to `0`. -Keep in mind that you cannot combine `$include` and `$exclude` (or `1` and `0`) in the same query, except for the `_id` field, which can be excluded even when other fields are being included. \ No newline at end of file +Keep in mind that you cannot combine `$include` and `$exclude` (or `1` and `0`) in the same query, except for the `_id` field, which can be excluded even when other fields are being included. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/102-exclude.md b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/102-exclude.md index 7885fdec9..de9cf9aff 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/102-exclude.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/102-exclude.md @@ -47,12 +47,12 @@ Now, let's say we want to fetch all the students but exclude the `age` field fro ```javascript db.students.aggregate([ - { - $project: { - age: 0 - } - } -]) + { + $project: { + age: 0, + }, + }, +]); ``` This command will return the following result: @@ -77,4 +77,4 @@ This command will return the following result: As you can see, the `age` field is excluded from the result. -Note: You cannot use the `exclude` operator (0) for a field that is explicitly included with the `include` operator (1) in the same document, except for the `_id` field. The `_id` field is the only field that can have both exclude (0) and include (1) options in the same document. \ No newline at end of file +Note: You cannot use the `exclude` operator (0) for a field that is explicitly included with the `include` operator (1) in the same document, except for the `_id` field. The `_id` field is the only field that can have both exclude (0) and include (1) options in the same document. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/103-slice.md b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/103-slice.md index b124c407c..671f3b799 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/103-slice.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/103-slice.md @@ -30,7 +30,7 @@ For the advanced usage, supplying a specific starting position: To return only the first 3 elements of the `tags` field, use the following projection: ```javascript -db.collection.find({}, { tags: { $slice: 3 } }) +db.collection.find({}, { tags: { $slice: 3 } }); ``` - Define a specific starting position: @@ -38,11 +38,11 @@ db.collection.find({}, { tags: { $slice: 3 } }) To return 3 elements of the `tags` field starting from the 5th element, use the following projection: ```javascript -db.collection.find({}, { tags: { $slice: [4, 3] } }) +db.collection.find({}, { tags: { $slice: [4, 3] } }); ``` Keep in mind that the starting position uses a zero-based index, so the value '4' in the example above refers to the 5th element in the array. ## Conclusion -In this section, we learned how to use the `$slice` projection operator to limit the number of array elements returned in our MongoDB queries. This can be a powerful tool for optimizing query performance and managing memory usage when working with large arrays. \ No newline at end of file +In this section, we learned how to use the `$slice` projection operator to limit the number of array elements returned in our MongoDB queries. This can be a powerful tool for optimizing query performance and managing memory usage when working with large arrays. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/index.md b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/index.md index d13a8c6cb..80b3689b8 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/index.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/100-projection-operators/index.md @@ -15,7 +15,7 @@ Syntax: Usage example: ```javascript -db.collection.find({ "grades": { "$gte": 80 }}, { "name": 1, "grades.$": 1 }) +db.collection.find({ grades: { $gte: 80 } }, { name: 1, 'grades.$': 1 }); ``` This will return only the first `grades` element greater than or equal to 80 along with the `name` field. @@ -33,7 +33,9 @@ Syntax: Usage example: ```javascript -db.collection.find({ "subjects": { "$elemMatch": { "score": { "$gte": 80 }, "type": "exam" } } }) +db.collection.find({ + subjects: { $elemMatch: { score: { $gte: 80 }, type: 'exam' } }, +}); ``` This will return documents that have at least one `subjects` element with a `score` greater than or equal to 80 and a `type` of "exam". @@ -57,15 +59,15 @@ or Usage example: ```javascript -db.collection.find({}, { "name": 1, "grades": { "$slice": 3 } }) +db.collection.find({}, { name: 1, grades: { $slice: 3 } }); ``` This will return the `name` field and the first 3 `grades` elements for all documents in the collection. ```javascript -db.collection.find({}, { "name": 1, "grades": { "$slice": [ 1, 2 ] } }) +db.collection.find({}, { name: 1, grades: { $slice: [1, 2] } }); ``` This will return the `name` field and the 2 `grades` elements after skipping the first element for all documents in the collection. -In summary, projection operators play a crucial role in retrieving specific data from MongoDB collections as they allow you to get the desired output. Using the appropriate operator for your query can help optimize the performance and efficiency of your MongoDB queries. \ No newline at end of file +In summary, projection operators play a crucial role in retrieving specific data from MongoDB collections as they allow you to get the desired output. Using the appropriate operator for your query can help optimize the performance and efficiency of your MongoDB queries. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/101-atlas-search-indexes.md b/src/data/roadmaps/mongodb/content/105-query-operators/101-atlas-search-indexes.md index 14699e800..695d54711 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/101-atlas-search-indexes.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/101-atlas-search-indexes.md @@ -54,14 +54,14 @@ Here's an example of an Atlas Search Index query: ```javascript db.collection.find({ $search: { - "text": { - "query": "mongodb atlas search", - "path": "title" - } - } -}) + text: { + query: 'mongodb atlas search', + path: 'title', + }, + }, +}); ``` In this example, we perform a text search query on the "title" field in the given collection. -In summary, Atlas Search Indexes provide you with advanced search and filtering capabilities, rich text processing, and improved query performance. By working with Index Definitions, Search Operators, and Analyzers, you can run advanced text search queries within your MongoDB Atlas environment. \ No newline at end of file +In summary, Atlas Search Indexes provide you with advanced search and filtering capabilities, rich text processing, and improved query performance. By working with Index Definitions, Search Operators, and Analyzers, you can run advanced text search queries within your MongoDB Atlas environment. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/100-eq.md b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/100-eq.md index b4862f485..d2800e23d 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/100-eq.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/100-eq.md @@ -1,6 +1,6 @@ # $eq -The `$eq` (equal) operator in MongoDB is used for comparison operations. It compares two values, and if they are equal, the result is `true`. Otherwise, the result is `false`. +The `$eq` (equal) operator in MongoDB is used for comparison operations. It compares two values, and if they are equal, the result is `true`. Otherwise, the result is `false`. The `$eq` operator can be used in queries to filter documents based on a specific field's value. It can also be used in aggregations where you can determine whether two fields' values or expressions are equal. @@ -9,13 +9,13 @@ The `$eq` operator can be used in queries to filter documents based on a specifi In a query, the `$eq` operator can be used as follows: ```javascript -db.collection.find({ field: { $eq: value } }) +db.collection.find({ field: { $eq: value } }); ``` For example, if you have a collection named `products` and you want to find all documents where the `price` field is equal to `100`, you can use the `$eq` operator like this: ```javascript -db.products.find({ price: { $eq: 100 } }) +db.products.find({ price: { $eq: 100 } }); ``` ### Usage in Aggregations @@ -27,13 +27,13 @@ db.products.aggregate([ { $addFields: { discounted: { - $eq: ["$price", 50] - } - } - } -]) + $eq: ['$price', 50], + }, + }, + }, +]); ``` This will add a new field named "discounted" with a `true` or `false` value based on whether the `price` field is equal to `50`. -In conclusion, the `$eq` operator is a helpful tool in MongoDB for performing equality checks and filtering documents based on matching values in queries and aggregations. \ No newline at end of file +In conclusion, the `$eq` operator is a helpful tool in MongoDB for performing equality checks and filtering documents based on matching values in queries and aggregations. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/101-gt.md b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/101-gt.md index 66482aa1b..f4f4aebfc 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/101-gt.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/101-gt.md @@ -1,11 +1,15 @@ # $gt -The `$gt` operator in MongoDB is used to filter documents based on the values of a particular field being *greater than* the specified value. This operator is handy when you want to retrieve documents that fulfill a condition where a field's value is more than a given value. +The `$gt` operator in MongoDB is used to filter documents based on the values of a particular field being _greater than_ the specified value. This operator is handy when you want to retrieve documents that fulfill a condition where a field's value is more than a given value. The general syntax for querying using the `$gt` operator is: ```javascript -{ field: { $gt: value } } +{ + field: { + $gt: value; + } +} ``` Here, we need to replace the `field` with the actual field name in the document, and `value` with the desired value you want to compare against. @@ -22,4 +26,4 @@ db.students.find({ age: { $gt: 21 } }); This query will return all the documents in the `students` collection where the `age` field has a value greater than 21. -Keep in mind that the `$gt` operator can also be used with non-numeric data types, such as date values. The comparison will be made based on their natural order. \ No newline at end of file +Keep in mind that the `$gt` operator can also be used with non-numeric data types, such as date values. The comparison will be made based on their natural order. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/102-lt.md b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/102-lt.md index f83032f43..54d9624b3 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/102-lt.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/102-lt.md @@ -7,7 +7,11 @@ Here's a brief description of the syntax and usage of the `$lt` operator: ## Syntax ```javascript -{ field: { $lt: value } } +{ + field: { + $lt: value; + } +} ``` ## Usage @@ -16,26 +20,26 @@ For instance, let's assume you have a collection named `products` with the follo ```javascript [ - { _id: 1, name: "Laptop", price: 1000 }, - { _id: 2, name: "Smartphone", price: 600 }, - { _id: 3, name: "Tablet", price: 300 }, - { _id: 4, name: "Smartwatch", price: 200 } -] + { _id: 1, name: 'Laptop', price: 1000 }, + { _id: 2, name: 'Smartphone', price: 600 }, + { _id: 3, name: 'Tablet', price: 300 }, + { _id: 4, name: 'Smartwatch', price: 200 }, +]; ``` To find all products with a price less than 500, you can use the following query: ```javascript -db.products.find({ price: { $lt: 500 } }) +db.products.find({ price: { $lt: 500 } }); ``` This query will return the following documents: ```javascript [ - { "_id" : 3, "name" : "Tablet", "price" : 300 }, - { "_id" : 4, "name" : "Smartwatch", "price" : 200 } -] + { _id: 3, name: 'Tablet', price: 300 }, + { _id: 4, name: 'Smartwatch', price: 200 }, +]; ``` -In this example, the query checks for documents where the `price` field has a value less than 500 and returns the matching documents from the `products` collection. \ No newline at end of file +In this example, the query checks for documents where the `price` field has a value less than 500 and returns the matching documents from the `products` collection. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/103-lte.md b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/103-lte.md index 43cab676f..06868ee4b 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/103-lte.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/103-lte.md @@ -7,7 +7,11 @@ The `$lte` comparison operator matches values that are less than or equal to the To use the `$lte` operator, specify it in the query filter using the following syntax: ```javascript -{ field: { $lte: value } } +{ + field: { + $lte: value; + } +} ``` ### Example @@ -26,7 +30,7 @@ Consider a collection `products` with the following documents: To query for products with a price of **15 or less**, use the `$lte` operator as shown below: ```javascript -db.products.find( { price: { $lte: 15 } } ) +db.products.find({ price: { $lte: 15 } }); ``` This query will return the following documents: @@ -40,4 +44,4 @@ This query will return the following documents: Using the `$lte` operator, you can easily filter documents based on numeric, date, or string values. Remember that string comparisons are done based on Unicode code points. -Keep in mind that when comparing different data types, MongoDB uses a type hierarchy for comparisons. You can find more about it in the official documentation: [MongoDB Type Comparison Order](https://docs.mongodb.com/manual/reference/bson-type-comparison-order/). \ No newline at end of file +Keep in mind that when comparing different data types, MongoDB uses a type hierarchy for comparisons. You can find more about it in the official documentation: [MongoDB Type Comparison Order](https://docs.mongodb.com/manual/reference/bson-type-comparison-order/). diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/104-gte.md b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/104-gte.md index 11dcae4b9..5a16def8b 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/104-gte.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/104-gte.md @@ -8,7 +8,9 @@ The syntax for using the `$gte` operator is: ```javascript { - field: { $gte: value } + field: { + $gte: value; + } } ``` @@ -20,29 +22,29 @@ Let's explore an example using the `$gte` operator. Assume we have a collection ```javascript [ - { _id: 1, product: "A", price: 10 }, - { _id: 2, product: "B", price: 20 }, - { _id: 3, product: "C", price: 30 }, - { _id: 4, product: "D", price: 40 }, - { _id: 5, product: "E", price: 50 } -] + { _id: 1, product: 'A', price: 10 }, + { _id: 2, product: 'B', price: 20 }, + { _id: 3, product: 'C', price: 30 }, + { _id: 4, product: 'D', price: 40 }, + { _id: 5, product: 'E', price: 50 }, +]; ``` To find all documents where `price` is greater than or equal to `20`, you can use the following query: ```javascript -db.products.find({ price: { $gte: 20 } }) +db.products.find({ price: { $gte: 20 } }); ``` The output will be: ```javascript [ - { "_id" : 2, "product" : "B", "price" : 20 }, - { "_id" : 3, "product" : "C", "price" : 30 }, - { "_id" : 4, "product" : "D", "price" : 40 }, - { "_id" : 5, "product" : "E", "price" : 50 } -] + { _id: 2, product: 'B', price: 20 }, + { _id: 3, product: 'C', price: 30 }, + { _id: 4, product: 'D', price: 40 }, + { _id: 5, product: 'E', price: 50 }, +]; ``` -As we can see, the `$gte` operator successfully filtered the documents based on the specified criteria. This operator is extremely helpful when you need to narrow down your search or filter documents depending on certain conditions, making it a valuable addition to the toolbox of any MongoDB developer. \ No newline at end of file +As we can see, the `$gte` operator successfully filtered the documents based on the specified criteria. This operator is extremely helpful when you need to narrow down your search or filter documents depending on certain conditions, making it a valuable addition to the toolbox of any MongoDB developer. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/105-ne.md b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/105-ne.md index 0c3056413..5bc7ede04 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/105-ne.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/105-ne.md @@ -7,7 +7,11 @@ In MongoDB, the `$ne` operator is used to filter documents where the value of a To use the `$ne` comparison operator, include it within the query document as: ```javascript -{ field: { $ne: value } } +{ + field: { + $ne: value; + } +} ``` - `field` : The field that you want to apply the `$ne` operator on. @@ -26,7 +30,7 @@ Let's say you have a collection called `products` with documents like: If you want to query all documents where the category is _not_ "Fruits", you would execute: ```javascript -db.products.find({ category: { $ne: "Fruits" } }) +db.products.find({ category: { $ne: 'Fruits' } }); ``` The result would be: @@ -40,4 +44,4 @@ The result would be: - The `$ne` operator also works with compound conditions. - You can compare values of different types (e.g., a string and a number), but remember that MongoDB uses BSON's comparison rules for different data types. -And that's a brief summary of the `$ne` operator. Use it when you want to filter documents where a specified field's value is not equal to another specified value. Happy querying! \ No newline at end of file +And that's a brief summary of the `$ne` operator. Use it when you want to filter documents where a specified field's value is not equal to another specified value. Happy querying! diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/index.md b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/index.md index 4b0ef6e2f..df3e97814 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/index.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/101-comparison-operators/index.md @@ -13,7 +13,7 @@ The `$eq` operator is used to match documents where the value of a field equals Example: ```javascript -db.collection.find({ age: { $eq: 25 } }) +db.collection.find({ age: { $eq: 25 } }); ``` This query will return all documents where the `age` field is equal to 25. @@ -29,7 +29,7 @@ The `$ne` operator is used to match documents where the value of a field is not Example: ```javascript -db.collection.find({ age: { $ne: 25 } }) +db.collection.find({ age: { $ne: 25 } }); ``` This query will return all documents where the `age` field is not equal to 25. @@ -45,7 +45,7 @@ The `$gt` operator is used to match documents where the value of a field is grea Example: ```javascript -db.collection.find({ age: { $gt: 25 } }) +db.collection.find({ age: { $gt: 25 } }); ``` This query will return all documents where the `age` field is greater than 25. @@ -61,7 +61,7 @@ The `$gte` operator is used to match documents where the value of a field is gre Example: ```javascript -db.collection.find({ age: { $gte: 25 } }) +db.collection.find({ age: { $gte: 25 } }); ``` This query will return all documents where the `age` field is greater than or equal to 25. @@ -77,7 +77,7 @@ The `$lt` operator is used to match documents where the value of a field is less Example: ```javascript -db.collection.find({ age: { $lt: 25 } }) +db.collection.find({ age: { $lt: 25 } }); ``` This query will return all documents where the `age` field is less than 25. @@ -93,9 +93,9 @@ The `$lte` operator is used to match documents where the value of a field is les Example: ```javascript -db.collection.find({ age: { $lte: 25 } }) +db.collection.find({ age: { $lte: 25 } }); ``` This query will return all documents where the `age` field is less than or equal to 25. -These comparison operators can help query your data more efficiently and effectively. You can combine them to create complex queries to meet your specific requirements. \ No newline at end of file +These comparison operators can help query your data more efficiently and effectively. You can combine them to create complex queries to meet your specific requirements. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/100-in.md b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/100-in.md index b4338bdbb..2a149c68e 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/100-in.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/100-in.md @@ -16,26 +16,26 @@ Consider a collection `articles` with the following documents: ```javascript [ - { "_id": 1, "title": "MongoDB", "tags": ["database", "NoSQL"] }, - { "_id": 2, "title": "Node.js", "tags": ["javascript", "runtime"] }, - { "_id": 3, "title": "React", "tags": ["library", "javascript"] } -] + { _id: 1, title: 'MongoDB', tags: ['database', 'NoSQL'] }, + { _id: 2, title: 'Node.js', tags: ['javascript', 'runtime'] }, + { _id: 3, title: 'React', tags: ['library', 'javascript'] }, +]; ``` Let's say you want to find all articles that have either the "NoSQL" or "javascript" tag. You can use the `$in` operator like so: ```javascript -db.articles.find({ "tags": { $in: ["NoSQL", "javascript"] } }) +db.articles.find({ tags: { $in: ['NoSQL', 'javascript'] } }); ``` This will return the following documents: ```javascript [ - { "_id": 1, "title": "MongoDB", "tags": ["database", "NoSQL"] }, - { "_id": 2, "title": "Node.js", "tags": ["javascript", "runtime"] }, - { "_id": 3, "title": "React", "tags": ["library", "javascript"] } -] + { _id: 1, title: 'MongoDB', tags: ['database', 'NoSQL'] }, + { _id: 2, title: 'Node.js', tags: ['javascript', 'runtime'] }, + { _id: 3, title: 'React', tags: ['library', 'javascript'] }, +]; ``` -In conclusion, the `$in` operator allows you to specify an array of values and filter documents based on whether their field value exists within that array. \ No newline at end of file +In conclusion, the `$in` operator allows you to specify an array of values and filter documents based on whether their field value exists within that array. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/101-nin.md b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/101-nin.md index f52ebaf2a..35067ac7a 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/101-nin.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/101-nin.md @@ -17,11 +17,11 @@ To use the `$nin` operator in a query, you can use the following syntax: Suppose you have a `books` collection with documents containing `title` and `genre` fields, and you want to find books that are **not** in the genres 'Mystery', 'Sci-Fi', or 'Thriller'. You can use the `$nin` operator like this: ```javascript -db.books.find({ genre: { $nin: ['Mystery', 'Sci-Fi', 'Thriller'] }}) +db.books.find({ genre: { $nin: ['Mystery', 'Sci-Fi', 'Thriller'] } }); ``` This query will return all documents where the `genre` field is not one of the specified values or the field does not exist. ## Conclusion -In summary, the `$nin` operator is a powerful tool that allows you to filter documents based on the absence of specific values in an array. By incorporating `$nin` into your MongoDB queries, you can effectively narrow down your search and retrieve the desired documents more efficiently. \ No newline at end of file +In summary, the `$nin` operator is a powerful tool that allows you to filter documents based on the absence of specific values in an array. By incorporating `$nin` into your MongoDB queries, you can effectively narrow down your search and retrieve the desired documents more efficiently. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/102-all.md b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/102-all.md index 7072339f4..40fa1ae64 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/102-all.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/102-all.md @@ -33,11 +33,11 @@ Here is an example document from the `movies` collection: If you want to find all movies with the tags "action" and "sci-fi", you can use the `$all` operator as shown below: ```javascript -db.movies.find({tags: {$all: ["action", "sci-fi"]}}); +db.movies.find({ tags: { $all: ['action', 'sci-fi'] } }); ``` This query would return all documents where the `tags` array contains **both** "action" and "sci-fi" values. ## Summary -The `$all` operator allows you to match documents based on the presence of multiple values in an array field. It provides a simple and powerful way to query for documents that meet specific criteria within arrays. \ No newline at end of file +The `$all` operator allows you to match documents based on the presence of multiple values in an array field. It provides a simple and powerful way to query for documents that meet specific criteria within arrays. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/103-elem-match.md b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/103-elem-match.md index 84b3dc58e..19edc0630 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/103-elem-match.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/103-elem-match.md @@ -6,8 +6,8 @@ To use `$elemMatch`, you need to include it in your query with the syntax `{ : { $elemMatch: { } } }`. -* ``: The name of the array field for which you want to apply the `$elemMatch` operator. -* ``: A document containing the query conditions to be matched against the elements in the array. +- ``: The name of the array field for which you want to apply the `$elemMatch` operator. +- ``: A document containing the query conditions to be matched against the elements in the array. ## Example @@ -36,20 +36,20 @@ Let's say you have a collection named `courseRecords` containing the following d If you want to find all the students who have scored 80 or above in Math and 70 or above in English, you can use `$elemMatch` as follows: ```javascript -db.courseRecords.find( { - "grades": { +db.courseRecords.find({ + grades: { $elemMatch: { - "subject": "Math", - "score": { $gte: 80 }, - "subject": "English", - "score": { $gte: 70 } - } - } -} ) + subject: 'Math', + score: { $gte: 80 }, + subject: 'English', + score: { $gte: 70 }, + }, + }, +}); ``` This would return the records for Mary and Tom. ## Further Reading -For more advanced uses of `$elemMatch` and additional examples, you can refer to the [official MongoDB documentation](https://docs.mongodb.com/manual/reference/operator/query/elemMatch/). \ No newline at end of file +For more advanced uses of `$elemMatch` and additional examples, you can refer to the [official MongoDB documentation](https://docs.mongodb.com/manual/reference/operator/query/elemMatch/). diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/104-size.md b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/104-size.md index d7bc293f0..756c7fa59 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/104-size.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/104-size.md @@ -15,7 +15,7 @@ Here's a brief summary of how to work with the `$size` operator: Assume we have a collection called `products` with documents containing an attribute `colors` which is an array type. ```javascript -db.products.find( { "colors": { "$size": 5 } } ) +db.products.find({ colors: { $size: 5 } }); ``` This query will return all documents in the `products` collection that have exactly 5 elements in the `colors` array field. @@ -26,4 +26,4 @@ This query will return all documents in the `products` collection that have exac - The `$size` operator does not require the creation of an additional index to work efficiently. It can leverage existing indexes on an array field. -For more information and examples, refer to the [MongoDB documentation on `$size`.](https://docs.mongodb.com/manual/reference/operator/query/size/) \ No newline at end of file +For more information and examples, refer to the [MongoDB documentation on `$size`.](https://docs.mongodb.com/manual/reference/operator/query/size/) diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/index.md b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/index.md index f0a65a850..5afba1b3a 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/index.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/102-array-operators/index.md @@ -2,64 +2,64 @@ In MongoDB, array operators allow you to perform various operations on arrays within documents. These operators help you query and manipulate the elements in the array fields of your collections. Let's go through some of the most commonly used array operators: -## `$elemMatch` +## `$elemMatch` The `$elemMatch` operator is used to match one or more array elements that satisfy the given query condition(s). It returns the documents where the array field has at least one matching element. **Example:** ```javascript -db.collection.find({ "scores": { "$elemMatch": { "$gte": 80, "$lt": 90 } } }) +db.collection.find({ scores: { $elemMatch: { $gte: 80, $lt: 90 } } }); ``` This query returns all documents where the `scores` array has at least one element between 80 and 90. -## `$all` +## `$all` The `$all` operator is used to match arrays that contain all the specified query elements. It returns documents where the array field has all the given elements, irrespective of their order. **Example:** ```javascript -db.collection.find({ "tags": { "$all": ["mongodb", "database"] } }) +db.collection.find({ tags: { $all: ['mongodb', 'database'] } }); ``` This query returns all documents where the `tags` array contains both "mongodb" and "database". -## `$size` +## `$size` The `$size` operator is used to match arrays that have the specified number of elements. It returns documents where the array field has the given size. **Example:** ```javascript -db.collection.find({ "comments": { "$size": 3 } }) +db.collection.find({ comments: { $size: 3 } }); ``` This query returns all documents where the `comments` array contains exactly 3 elements. -## `$addToSet` +## `$addToSet` The `$addToSet` operator is used to add unique values to an array field. If the value doesn't exist in the array, it will be added; otherwise, the array remains unchanged. **Example:** ```javascript -db.collection.updateOne({ "_id": 1 }, { "$addToSet": { "colors": "green" } }) +db.collection.updateOne({ _id: 1 }, { $addToSet: { colors: 'green' } }); ``` This query adds "green" to the `colors` array in the document with `_id` equal to 1, only if it's not already present. -## `$push` +## `$push` The `$push` operator is used to add values to an array field. It adds the value to the array, even if it exists already. **Example:** ```javascript -db.collection.updateOne({ "_id": 1 }, { "$push": { "comments": "Great article!" } }) +db.collection.updateOne({ _id: 1 }, { $push: { comments: 'Great article!' } }); ``` This query adds "Great article!" to the `comments` array in the document with `_id` equal to 1. -Remember that there are several other array operators available in MongoDB, but the ones mentioned above are the most commonly used. You can always refer to the [MongoDB documentation](https://docs.mongodb.com/manual/reference/operator/query-array/) for more information on array operators. \ No newline at end of file +Remember that there are several other array operators available in MongoDB, but the ones mentioned above are the most commonly used. You can always refer to the [MongoDB documentation](https://docs.mongodb.com/manual/reference/operator/query-array/) for more information on array operators. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/102-query-optimization.md b/src/data/roadmaps/mongodb/content/105-query-operators/102-query-optimization.md index 3707ebba6..b6681f7a1 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/102-query-optimization.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/102-query-optimization.md @@ -4,47 +4,47 @@ In MongoDB, query optimization is a crucial aspect to ensure efficient and fast In this section, we'll discuss some essential aspects of query optimization in MongoDB: -## Indexing +## Indexing One of the most important techniques for optimizing query performance in MongoDB is the use of indexes. In MongoDB, indexes are created on specific fields of a collection, enabling faster search results. They improve query performance by minimizing the number of documents to be scanned, thus reducing the overall execution time. To create an index, use the `createIndex()` method: ```javascript -db.collection.createIndex({ field1: 1, field2: -1 }) +db.collection.createIndex({ field1: 1, field2: -1 }); ``` -## Explain +## Explain MongoDB provides the `explain()` method, which is an essential tool for understanding the behavior and performance of your queries. By using `explain()`, you can identify the query plan used, evaluate the effectiveness of an index, and debug queries. Example usage: ```javascript -db.collection.find({ field: value }).explain("executionStats") +db.collection.find({ field: value }).explain('executionStats'); ``` -## Profiling +## Profiling The MongoDB database profiler helps you analyze and diagnose the performance issues of your queries. By monitoring the executed operations on the database, the profiler can provide valuable insights for query optimization. To enable the database profiler with system log level: ```javascript -db.setProfilingLevel(1) +db.setProfilingLevel(1); ``` To query the `system.profile` collection: ```javascript -db.system.profile.find().pretty() +db.system.profile.find().pretty(); ``` -## Schema Design +## Schema Design A well-designed data schema can have a significant impact on the query performance. Design your schema by considering the common query patterns and use cases of your application. Make use of embedded documents and store related data in the same documents to enable faster data retrieval. -## Query Limits and Projections +## Query Limits and Projections To optimize queries, you can apply limits and use projections in your queries. Limits allow you to restrict the number of documents returned during a query, which eventually reduces the amount of data transferred between the server and your application. @@ -53,7 +53,7 @@ Projections, on the other hand, allow you to specify the fields to return in the Example usage: ```javascript -db.collection.find({ field: value }, { projectionField: 1 }).limit(10) +db.collection.find({ field: value }, { projectionField: 1 }).limit(10); ``` -In conclusion, MongoDB offers several features and methodologies to optimize the performance of your queries. By making wise use of indexing, understanding query plans with `explain()`, leveraging the database profiler, designing efficient schema, and using limits and projections, you can ensure a performant and optimally functioning MongoDB database. \ No newline at end of file +In conclusion, MongoDB offers several features and methodologies to optimize the performance of your queries. By making wise use of indexing, understanding query plans with `explain()`, leveraging the database profiler, designing efficient schema, and using limits and projections, you can ensure a performant and optimally functioning MongoDB database. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/100-exists.md b/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/100-exists.md index f33eba367..8afde261b 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/100-exists.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/100-exists.md @@ -13,13 +13,15 @@ Here, `` can be either `true` or `false`. If `true`, then it filters th ## Examples - Find all documents where the field "author" exists: + ```javascript -db.books.find( { author: { $exists: true } } ) +db.books.find({ author: { $exists: true } }); ``` - Find all documents where the field "publisher" does not exist: + ```javascript -db.books.find( { publisher: { $exists: false } } ) +db.books.find({ publisher: { $exists: false } }); ``` ## Usage with Embedded Documents @@ -31,10 +33,11 @@ db.books.find( { publisher: { $exists: false } } ) Find all documents where the field "address.city" is present. ```javascript -db.users.find( { "address.city": { $exists: true } } ) +db.users.find({ 'address.city': { $exists: true } }); ``` ## Note + Keep in mind that `$exists` checks for both the presence of a field and `null` values since they represent the existence of a field with no value. If you want to search for fields with non-null values, you can use a combination of `$exists` and `$ne` (not equal to) operator. **Example:** @@ -42,7 +45,7 @@ Keep in mind that `$exists` checks for both the presence of a field and `null` v Find all documents where the field "edition" exists and has a non-null value. ```javascript -db.books.find( { edition: { $exists: true, $ne: null } } ) +db.books.find({ edition: { $exists: true, $ne: null } }); ``` -That's all you need to know about `$exists` in MongoDB! Happy querying! \ No newline at end of file +That's all you need to know about `$exists` in MongoDB! Happy querying! diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/101-type.md b/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/101-type.md index e80c24f7c..fb1559ab6 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/101-type.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/101-type.md @@ -1,13 +1,17 @@ # $type -The `$type` operator is an element query operator in MongoDB that allows you to select documents based on data types of their fields. This can be useful when you want to perform operations only on those documents that have specific data types for certain fields. +The `$type` operator is an element query operator in MongoDB that allows you to select documents based on data types of their fields. This can be useful when you want to perform operations only on those documents that have specific data types for certain fields. ## Syntax The basic syntax for using the `$type` operator is: ```javascript -{ fieldName: { $type: dataType } } +{ + fieldName: { + $type: dataType; + } +} ``` Here, `fieldName` is the name of the field whose data type you want to check, and `dataType` is the BSON data type or its corresponding alias. @@ -37,15 +41,15 @@ Refer to the [MongoDB documentation](https://docs.mongodb.com/manual/reference/b Suppose you have a collection named `products` with different fields like `name`, `price`, and `discount`. You want to find documents that have a `price` field of type `Double`. You can use the `$type` operator like this: ```javascript -db.products.find( { price: { $type: "double" } } ) +db.products.find({ price: { $type: 'double' } }); ``` Or use the BSON data type instead of alias: ```javascript -db.products.find( { price: { $type: 1 } } ) +db.products.find({ price: { $type: 1 } }); ``` Keep in mind that the `$type` operator will only match documents with the exact data type specified for the field. So, if the field has an integer value, using `$type` with `Double` will not match those documents. -In summary, the `$type` element operator is a useful query tool for selecting documents based on the data types of their fields in MongoDB. By understanding and utilizing the BSON data types and aliases, you can effectively filter documents in your queries based on specific fields' data types. \ No newline at end of file +In summary, the `$type` element operator is a useful query tool for selecting documents based on the data types of their fields in MongoDB. By understanding and utilizing the BSON data types and aliases, you can effectively filter documents in your queries based on specific fields' data types. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/102-regex.md b/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/102-regex.md index 3926ac1a3..d71aa0c48 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/102-regex.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/102-regex.md @@ -11,7 +11,7 @@ In this section, we'll explore the usage of the `$regex` operator and see how it The `$regex` operator can be used in the `find()` method, when searching through a collection of documents. It takes a pattern and searches for any documents that match the provided pattern. Here's a basic example: ```javascript -db.collection.find({ fieldName: { $regex: "your-pattern" } }); +db.collection.find({ fieldName: { $regex: 'your-pattern' } }); ``` Replace `fieldName` with the name of the field you want to search and `your-pattern` with the regular expression pattern you want to match. This query will return any documents that contain the matching pattern in the specified field. @@ -23,7 +23,7 @@ By default, the `$regex` operator is case-sensitive. If you want to perform a ca Here's an example: ```javascript -db.collection.find({ fieldName: { $regex: "your-pattern", $options: "i" } }); +db.collection.find({ fieldName: { $regex: 'your-pattern', $options: 'i' } }); ``` In this example, the query will return any documents that contain the matching pattern in the specified field, regardless of the text case. @@ -33,7 +33,7 @@ In this example, the query will return any documents that contain the matching p In Regular Expressions, some characters have special meanings, such as the period (`.`), asterisk (`*`), and plus sign (`+`). To search for these characters in your documents, you need to escape them with a backslash (`\`). For example, if you want to find documents that have a `+` sign in a field, you can use the following pattern: ```javascript -db.collection.find({ fieldName: { $regex: "\\+" } }); +db.collection.find({ fieldName: { $regex: '\\+' } }); ``` In this example, the backslash escapes the `+` sign, telling the `$regex` operator to search for the literal character `+` in the documents. @@ -42,4 +42,4 @@ In this example, the backslash escapes the `+` sign, telling the `$regex` operat The `$regex` operator allows you to flexibly search through text-based fields in your MongoDB documents by using powerful Regular Expressions. Remember to use the appropriate `$options` when necessary, and be mindful of special characters that require escaping. -Learning and mastering Regular Expressions can greatly improve the searching capabilities of your MongoDB queries, making use of the `$regex` operator a valuable skill. \ No newline at end of file +Learning and mastering Regular Expressions can greatly improve the searching capabilities of your MongoDB queries, making use of the `$regex` operator a valuable skill. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/index.md b/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/index.md index 682ac411c..7465c15ea 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/index.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/103-element-operators/index.md @@ -9,10 +9,11 @@ Here's a brief summary of different element operators available in MongoDB. The `$exists` operator checks if a field is present or not in a document. Use this operator when you want to filter documents based on the existence of a specific field, regardless of the field's value. ## Example + To query all documents where the field "age" exists: ```javascript -db.collection.find({ "age": { "$exists": true } }) +db.collection.find({ age: { $exists: true } }); ``` ## $type @@ -20,10 +21,11 @@ db.collection.find({ "age": { "$exists": true } }) The `$type` operator filters documents based on the data type of a field's value. This operator can be handy when you need to retrieve documents with value types such as String, Number, Date, Object, and Array. ## Example + To query all documents where the field "age" is of type "number": ```javascript -db.collection.find({ "age": { "$type": "number" } }) +db.collection.find({ age: { $type: 'number' } }); ``` ## Combining Element Operators @@ -31,10 +33,11 @@ db.collection.find({ "age": { "$type": "number" } }) You can combine multiple element operators to create more specific queries. ## Example + To query all documents where the field "age" exists and its value type is "number": ```javascript -db.collection.find({ "age": { "$exists": true, "$type": "number" } }) +db.collection.find({ age: { $exists: true, $type: 'number' } }); ``` -In summary, element operators in MongoDB provide a way to query documents based on their field properties. By using `$exists`, `$type`, and other similar operators, you can create complex and expressive queries to extract the exact data you need from your collections. \ No newline at end of file +In summary, element operators in MongoDB provide a way to query documents based on their field properties. By using `$exists`, `$type`, and other similar operators, you can create complex and expressive queries to extract the exact data you need from your collections. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/100-and.md b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/100-and.md index ce73f7561..0b90f2a9d 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/100-and.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/100-and.md @@ -24,7 +24,7 @@ Suppose we have a collection named `orders` with the following documents: If we want to find all the documents with a `price` greater than 1 and `quantity` less than 10, we use the `$and` operator as follows: ```javascript -db.orders.find({ $and: [{ "price": { $gt: 1 } }, { "quantity": { $lt: 10 } }]}) +db.orders.find({ $and: [{ price: { $gt: 1 } }, { quantity: { $lt: 10 } }] }); ``` This query returns the following result: @@ -36,7 +36,7 @@ This query returns the following result: Keep in mind that using `$and` is only necessary when you have multiple conditions on the same field or you want to enforce a specific order for applying the conditions. Otherwise, you can use the standard query syntax like the following: ```javascript -db.orders.find({ "price": { $gt: 1 }, "quantity": { $lt: 10 } }) +db.orders.find({ price: { $gt: 1 }, quantity: { $lt: 10 } }); ``` -This query will also return the same result as the `$and` example above. \ No newline at end of file +This query will also return the same result as the `$and` example above. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/101-or.md b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/101-or.md index f4fd55c2b..5f0726726 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/101-or.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/101-or.md @@ -12,8 +12,8 @@ The syntax for using the `$or` operator is as follows: { condition1 }, { condition2 }, // ..., - { conditionN } - ] + { conditionN }, + ]; } ``` @@ -25,33 +25,30 @@ Let's consider a collection named `products` with the following documents: ```javascript [ - { _id: 1, category: "Fruits", price: 20 }, - { _id: 2, category: "Fruits", price: 30 }, - { _id: 3, category: "Vegetables", price: 10 }, - { _id: 4, category: "Vegetables", price: 15 } -] + { _id: 1, category: 'Fruits', price: 20 }, + { _id: 2, category: 'Fruits', price: 30 }, + { _id: 3, category: 'Vegetables', price: 10 }, + { _id: 4, category: 'Vegetables', price: 15 }, +]; ``` If you want to find all the documents where the `category` is "Fruits" or the `price` is less than or equal to `15`, you can use the `$or` operator as shown below: ```javascript db.products.find({ - $or: [ - { category: "Fruits" }, - { price: { $lte: 15 } } - ] -}) + $or: [{ category: 'Fruits' }, { price: { $lte: 15 } }], +}); ``` The result will include the documents that match either of the conditions: ```javascript [ - { _id: 1, category: "Fruits", price: 20 }, - { _id: 2, category: "Fruits", price: 30 }, - { _id: 3, category: "Vegetables", price: 10 }, - { _id: 4, category: "Vegetables", price: 15 } -] + { _id: 1, category: 'Fruits', price: 20 }, + { _id: 2, category: 'Fruits', price: 30 }, + { _id: 3, category: 'Vegetables', price: 10 }, + { _id: 4, category: 'Vegetables', price: 15 }, +]; ``` ## Combination with Other Operators @@ -61,23 +58,18 @@ The `$or` operator can be combined with other MongoDB operators to build more co ```javascript db.products.find({ $and: [ - { category: "Fruits" }, + { category: 'Fruits' }, { - $or: [ - { price: { $lt: 20 } }, - { price: { $gt: 25 } } - ] - } - ] -}) + $or: [{ price: { $lt: 20 } }, { price: { $gt: 25 } }], + }, + ], +}); ``` The result will include the documents that match the specified conditions: ```javascript -[ - { _id: 2, category: "Fruits", price: 30 }, -] +[{ _id: 2, category: 'Fruits', price: 30 }]; ``` -And that's an overview of the `$or` logical operator in MongoDB! It enables you to create more flexible queries and fetch the desired documents based on multiple conditions. Use it wisely in conjunction with other operators to get the most out of your MongoDB queries. \ No newline at end of file +And that's an overview of the `$or` logical operator in MongoDB! It enables you to create more flexible queries and fetch the desired documents based on multiple conditions. Use it wisely in conjunction with other operators to get the most out of your MongoDB queries. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/102-not.md b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/102-not.md index b3dc3fd79..e2ac4aace 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/102-not.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/102-not.md @@ -21,7 +21,7 @@ Let's dive into some examples to better understand how to use the `$not` operato ## Example 1: Simple Usage ```javascript -db.products.find({ price: { $not: { $gt: 100 } } }) +db.products.find({ price: { $not: { $gt: 100 } } }); ``` In this example, we're looking for all products that are **not** greater (`$gt`) than 100 in price. In other words, we want products that have a price of 100 or less. @@ -34,7 +34,7 @@ db.products.find({ { category: 'Electronics' }, { price: { $not: { $lt: 50, $gt: 200 } } }, ], -}) +}); ``` This time, we want to find all electronics products (`category: 'Electronics'`) whose price is **not** less than 50 **and** greater than 200. Essentially, this query will return products with a price between 50 and 200. @@ -42,11 +42,11 @@ This time, we want to find all electronics products (`category: 'Electronics'`) ## Example 3: Using Regular Expressions ```javascript -db.products.find({ name: { $not: /^apple/i } }) +db.products.find({ name: { $not: /^apple/i } }); ``` In our final example, we want to find all products whose name does **not** start with "apple" (case-insensitive). To achieve this, we use `$not` in conjunction with a regular expression (`/^apple/i`). ## Conclusion -Using the `$not` operator in your MongoDB queries can help filter for documents that don't meet specific conditions. Mastery of this powerful operator will allow you to further refine and narrow down your searches, providing better results when working with collections. \ No newline at end of file +Using the `$not` operator in your MongoDB queries can help filter for documents that don't meet specific conditions. Mastery of this powerful operator will allow you to further refine and narrow down your searches, providing better results when working with collections. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/103-nor.md b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/103-nor.md index d5e7e8667..4ac1a6f2a 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/103-nor.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/103-nor.md @@ -1,6 +1,6 @@ # $nor -The `$nor` operator in MongoDB is a logical operator used as a filter in queries. It performs a logical NOR operation on an array of one or more filter expressions and returns the documents that fail to match any of the conditions specified in the array. In simple terms, `$nor` selects the documents that do not match the given conditions. +The `$nor` operator in MongoDB is a logical operator used as a filter in queries. It performs a logical NOR operation on an array of one or more filter expressions and returns the documents that fail to match any of the conditions specified in the array. In simple terms, `$nor` selects the documents that do not match the given conditions. ## Syntax @@ -20,35 +20,32 @@ Suppose you have a `students` collection with the following documents: ```javascript [ - { "_id": 1, "name": "Alice", "age": 30, "subjects": ["math", "science"] }, - { "_id": 2, "name": "Bob", "age": 25, "subjects": ["history"] }, - { "_id": 3, "name": "Cathy", "age": 35, "subjects": ["math", "history"] }, - { "_id": 4, "name": "David", "age": 28, "subjects": ["science"] } -] + { _id: 1, name: 'Alice', age: 30, subjects: ['math', 'science'] }, + { _id: 2, name: 'Bob', age: 25, subjects: ['history'] }, + { _id: 3, name: 'Cathy', age: 35, subjects: ['math', 'history'] }, + { _id: 4, name: 'David', age: 28, subjects: ['science'] }, +]; ``` Now, if you want to find the students that are not older than 30 and not studying math, you would use the following query with `$nor`: ```javascript db.students.find({ - $nor: [ - { age: { $gt: 30 } }, - { subjects: "math" } - ] -}) + $nor: [{ age: { $gt: 30 } }, { subjects: 'math' }], +}); ``` This will return the following documents: ```javascript [ - { "_id": 2, "name": "Bob", "age": 25, "subjects": ["history"] }, - { "_id": 4, "name": "David", "age": 28, "subjects": ["science"] } -] + { _id: 2, name: 'Bob', age: 25, subjects: ['history'] }, + { _id: 4, name: 'David', age: 28, subjects: ['science'] }, +]; ``` As you can see, the query returned only the documents that don't match any of the conditions specified in the `$nor` array. Keep in mind that only one expression needs to be true for a document to be excluded from the result set. Also, when using the `$nor` operator, it is important to ensure that the array contains at least one filter expression. -Now you know how to use the `$nor` operator in MongoDB to filter documents based on multiple negated conditions. Remember to use it wisely, as it can help you fetch refined data from your collections. \ No newline at end of file +Now you know how to use the `$nor` operator in MongoDB to filter documents based on multiple negated conditions. Remember to use it wisely, as it can help you fetch refined data from your collections. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/index.md b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/index.md index 6097a27cd..58d544e2b 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/index.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/104-logical-operators/index.md @@ -20,7 +20,7 @@ The `$and` operator is used to combine multiple conditions in a query, and will **Example:** ```javascript -db.collection_name.find({$and: [{key1: value1}, {key2: value2}]}) +db.collection_name.find({ $and: [{ key1: value1 }, { key2: value2 }] }); ``` In this example, only documents that have both `key1` as `value1` and `key2` as `value2` would be returned. @@ -36,7 +36,7 @@ The `$or` operator is used to return documents where at least one of the specifi **Example:** ```javascript -db.collection_name.find({$or: [{key1: value1}, {key2: value2}]}) +db.collection_name.find({ $or: [{ key1: value1 }, { key2: value2 }] }); ``` In this example, documents that have either `key1` as `value1` or `key2` as `value2` would be returned. @@ -46,13 +46,19 @@ In this example, documents that have either `key1` as `value1` or `key2` as `val The `$not` operator is used to negate a condition, so only documents where the specified condition is not true will be returned. The syntax is as follows: ```javascript -{ key: { $not: { operator_expression } } } +{ + key: { + $not: { + operator_expression; + } + } +} ``` **Example:** ```javascript -db.collection_name.find({key1: { $not: { $eq: value1 }}}) +db.collection_name.find({ key1: { $not: { $eq: value1 } } }); ``` In this example, only documents where `key1` is not equal to `value1` would be returned. @@ -68,7 +74,7 @@ The `$nor` operator is used to return documents where none of the specified cond **Example:** ```javascript -db.collection_name.find({$nor: [{key1: value1}, {key2: value2}]}) +db.collection_name.find({ $nor: [{ key1: value1 }, { key2: value2 }] }); ``` -In this example, only documents where `key1` is not equal to `value1` and `key2` is not equal to `value2` would be returned. \ No newline at end of file +In this example, only documents where `key1` is not equal to `value1` and `key2` is not equal to `value2` would be returned. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/100-expiring.md b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/100-expiring.md index 5d387e2b6..754bb118a 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/100-expiring.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/100-expiring.md @@ -7,7 +7,7 @@ To create an expiring index, you can use the `createIndex()` method along with t Here's an example of creating an expiring index on a `createdAt` field with a time-to-live (TTL) of 3600 seconds (1 hour): ```javascript -db.collection.createIndex({createdAt: 1}, {expireAfterSeconds: 3600}) +db.collection.createIndex({ createdAt: 1 }, { expireAfterSeconds: 3600 }); ``` When using expiring indexes, it's essential to note the following points: @@ -20,4 +20,4 @@ When using expiring indexes, it's essential to note the following points: - Expiring indexes can only be single-field indexes, i.e., they cannot be created as part of a compound index or a multi-key index. -In summary, expiring indexes provide an efficient way to manage time-sensitive data in MongoDB by automatically removing documents that have passed a specified time-to-live. This can help to keep your database clean and ensure that irrelevant or outdated data are not retained longer than necessary. \ No newline at end of file +In summary, expiring indexes provide an efficient way to manage time-sensitive data in MongoDB by automatically removing documents that have passed a specified time-to-live. This can help to keep your database clean and ensure that irrelevant or outdated data are not retained longer than necessary. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/101-geospatial.md b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/101-geospatial.md index b0ca9f560..fec78e7ab 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/101-geospatial.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/101-geospatial.md @@ -4,41 +4,41 @@ Geospatial indexes are used for querying geospatial coordinate data in MongoDB. MongoDB supports two types of geospatial indexes: **2dsphere** and **2d**. -## 2dsphere Index +## 2dsphere Index The `2dsphere` index supports queries on the surface of a sphere or a round object, like Earth. It uses the GeoJSON format for storing the geospatial data such as `Point`, `LineString`, and `Polygon`. To create a 2dsphere index, you can use the `createIndex` method: ```javascript -db.collection.createIndex({ location: "2dsphere" }) +db.collection.createIndex({ location: '2dsphere' }); ``` In this example, the `location` field contains the GeoJSON representation of the geospatial data. Some common queries using the 2dsphere index include: -* `$geoIntersects`: Find geometries that intersect with the specified GeoJSON geometry. -* `$geoWithin`: Find geometries contained within the specified GeoJSON geometry. -* `$nearSphere`: Find geometries that are near a given point. +- `$geoIntersects`: Find geometries that intersect with the specified GeoJSON geometry. +- `$geoWithin`: Find geometries contained within the specified GeoJSON geometry. +- `$nearSphere`: Find geometries that are near a given point. -## 2d Index +## 2d Index The `2d` index supports queries on a flat Cartesian plane, which can be useful for simpler cases when dealing with small scale data. It stores geospatial data as legacy coordinate pairs. To create a 2d index, you can use the `createIndex` method: ```javascript -db.collection.createIndex({ location: "2d" }) +db.collection.createIndex({ location: '2d' }); ``` In this example, the `location` field contains a coordinate pair [x, y]. Some common queries using the 2d index include: -* `$geoWithin`: Find geometries contained within the specified boundary. -* `$center`: Find geometries that are near a given point within a given radius. +- `$geoWithin`: Find geometries contained within the specified boundary. +- `$center`: Find geometries that are near a given point within a given radius. Keep in mind that the 2d index has some limitations. It doesn't support queries for data spanning the 180-degree meridian (e.g., data wrapping around the Earth), and it cannot handle queries involving measurements or distances in greater depths. -To sum up, geospatial indexes in MongoDB are essential for querying and analyzing geospatial coordinate data. By choosing the correct index type and querying methods, you can efficiently perform location-based queries in your application. \ No newline at end of file +To sum up, geospatial indexes in MongoDB are essential for querying and analyzing geospatial coordinate data. By choosing the correct index type and querying methods, you can efficiently perform location-based queries in your application. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/102-text.md b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/102-text.md index bef0c0a7c..207714eaa 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/102-text.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/102-text.md @@ -7,7 +7,7 @@ MongoDB provides a powerful feature called "Text Indexes" to enable searching fo To create a Text Index, use the `db.collection.createIndex()` method along with the special index type: `{ fieldName: "text" }`. For example, to create a Text Index on the `title` field in a books collection, execute the following command: ```javascript -db.books.createIndex({ title: "text" }); +db.books.createIndex({ title: 'text' }); ``` ## Perform Text Searches @@ -15,7 +15,7 @@ db.books.createIndex({ title: "text" }); After creating the Text Index, you can perform text searches on your documents using the `$text` operator in your queries inside `db.collection.find()`. For example, to find all books with a title matching the words "mongodb" or "guide", execute the following command: ```javascript -db.books.find({ $text: { $search: "mongodb guide" } }); +db.books.find({ $text: { $search: 'mongodb guide' } }); ``` ## Advanced search options @@ -33,7 +33,7 @@ MongoDB provides several advanced options to refine your text search: If you no longer need the Text Index, you can drop it using the `db.collection.dropIndex()` method. You'll need to provide the index name as the parameter: ```javascript -db.books.dropIndex("title_text"); +db.books.dropIndex('title_text'); ``` -Text Indexes provide an efficient way to search for content within your MongoDB documents, making it easier to analyze and locate specific information. However, it's important to keep in mind that Text Indexes can slow down your write performance, so use them judiciously! \ No newline at end of file +Text Indexes provide an efficient way to search for content within your MongoDB documents, making it easier to analyze and locate specific information. However, it's important to keep in mind that Text Indexes can slow down your write performance, so use them judiciously! diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/103-compound.md b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/103-compound.md index 60e01b443..9e8ccbdfe 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/103-compound.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/103-compound.md @@ -7,19 +7,19 @@ A compound index is a type of index in MongoDB that allows you to specify multip To create a compound index, you specify each field and its corresponding sort order (ascending/descending) as an object: ```javascript -{ - field1: , - field2: , - ... +{ + field1: , + field2: , + ... } ``` For example, to create a compound index on the `author` field in ascending order and the `title` field in descending order, you would use: ```javascript -{ +{ author: 1, - title: -1 + title: -1 } ``` @@ -46,19 +46,19 @@ Suppose you have a collection named `books` with the following documents: You can create a compound index on the `author` and `title` fields using the following command: ```javascript -db.books.createIndex({ author: 1, title: 1 }) +db.books.createIndex({ author: 1, title: 1 }); ``` With the compound index in place, MongoDB can efficiently execute queries involving both the `author` and `title` fields. For example, the following query would benefit from the compound index: ```javascript -db.books.find({ author: "John Smith", title: "Introduction to MongoDB" }) +db.books.find({ author: 'John Smith', title: 'Introduction to MongoDB' }); ``` In addition, the query could use the index for sorting results: ```javascript -db.books.find({ author: "John Smith" }).sort({ title: 1 }) +db.books.find({ author: 'John Smith' }).sort({ title: 1 }); ``` -In summary, compound indexes provide a powerful optimization tool for queries involving multiple fields, allowing MongoDB to execute searches more efficiently and improve overall performance. \ No newline at end of file +In summary, compound indexes provide a powerful optimization tool for queries involving multiple fields, allowing MongoDB to execute searches more efficiently and improve overall performance. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/104-single-field.md b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/104-single-field.md index 19efe22b1..9b2903e1c 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/104-single-field.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/104-single-field.md @@ -7,7 +7,7 @@ In MongoDB, a single field index is an index that sorts and organizes the data b To create a single field index, you can use the `db.collection.createIndex()` function, specifying the field name and the sorting order (1 for ascending or -1 for descending order). For example: ```javascript -db.users.createIndex({ "name": 1 }); +db.users.createIndex({ name: 1 }); ``` This command creates an ascending index on the `name` field of the `users` collection. @@ -17,7 +17,7 @@ This command creates an ascending index on the `name` field of the `users` colle You can create a unique single-field index to prevent the insertion of duplicate values for a specific field. To create a unique index, include the `unique` option and set its value to `true`: ```javascript -db.users.createIndex({ "email": 1 }, { unique: true }); +db.users.createIndex({ email: 1 }, { unique: true }); ``` This command ensures each document in the collection has a unique email value. @@ -27,11 +27,11 @@ This command ensures each document in the collection has a unique email value. A sparse single field index is an index that only considers the documents with the indexed field. This type of index might not index all the documents in a collection, resulting in reduced index size and better performance. To create a sparse index, include the `sparse` option and set its value to `true`: ```javascript -db.customers.createIndex({ "address.zipcode": 1 }, { sparse: true }); +db.customers.createIndex({ 'address.zipcode': 1 }, { sparse: true }); ``` This command creates a sparse index on the `zipcode` field of the `address` sub-document. ## Use cases -A single field index is well-suited in use cases where you commonly search, sort, or filter documents based on a specific field value. Examples include finding all documents with a particular age, sorting blog posts by title, or looking up users by their email addresses. By utilizing single-field indexes, you can significantly boost the performance of these common operations. \ No newline at end of file +A single field index is well-suited in use cases where you commonly search, sort, or filter documents based on a specific field value. Examples include finding all documents with a particular age, sorting blog posts by title, or looking up users by their email addresses. By utilizing single-field indexes, you can significantly boost the performance of these common operations. diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/index.md b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/index.md index 103e1cd53..f96c0ba74 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/index-types/index.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/index-types/index.md @@ -1 +1 @@ -# Index types \ No newline at end of file +# Index types diff --git a/src/data/roadmaps/mongodb/content/105-query-operators/index.md b/src/data/roadmaps/mongodb/content/105-query-operators/index.md index 408e622d6..fa7d076f0 100644 --- a/src/data/roadmaps/mongodb/content/105-query-operators/index.md +++ b/src/data/roadmaps/mongodb/content/105-query-operators/index.md @@ -11,7 +11,7 @@ In this section, we'll be exploring **query operators** in MongoDB. Query operat Let's explore each category in more detail. -## Comparison Operators +## Comparison Operators Comparison operators allow you to compare the value of a field with specified values. Some common comparison operators are: @@ -24,7 +24,7 @@ Comparison operators allow you to compare the value of a field with specified va - `$in`: Matches values that are in the specified array. - `$nin`: Matches values that are not in the specified array. -## Logical Operators +## Logical Operators Logical operators provide ways to combine multiple query conditions. Some common logical operators include: @@ -33,14 +33,14 @@ Logical operators provide ways to combine multiple query conditions. Some common - `$not`: Matches documents where the specified condition is not true. - `$nor`: Matches documents where none of the specified conditions are true. -## Element Operators +## Element Operators Element operators target specific elements within documents, including: - `$exists`: Matches documents that have the specified field. - `$type`: Matches documents where the specified field is of the specified BSON type. -## Evaluation Operators +## Evaluation Operators Evaluation operators perform operations on specific fields and values, such as regular expression searches or checking the size of arrays. Some examples include: @@ -51,7 +51,7 @@ Evaluation operators perform operations on specific fields and values, such as r - `$text`: Performs text search on the content of indexed fields in the documents. - `$where`: Matches documents that satisfy a JavaScript expression. -## Array Operators +## Array Operators Array operators are used to query or manipulate documents that contain arrays. Some common array operators include: @@ -59,7 +59,7 @@ Array operators are used to query or manipulate documents that contain arrays. S - `$elemMatch`: Matches documents where an array field contains at least one element that matches the specified conditions. - `$size`: Matches documents where an array field contains a specified number of elements. -## Bitwise Operators +## Bitwise Operators Bitwise operators allow you to perform bit manipulation on integer values. Some examples are: diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/100-group.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/100-group.md index 4533c7b09..460ca50f0 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/100-group.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/100-group.md @@ -27,12 +27,12 @@ Suppose we have a collection called `orders`, which contains documents represent ```javascript [ - { "_id": 1, "customer_id": "C1", "amount": 110 }, - { "_id": 2, "customer_id": "C2", "amount": 150 }, - { "_id": 3, "customer_id": "C1", "amount": 90 }, - { "_id": 4, "customer_id": "C3", "amount": 200 }, - { "_id": 5, "customer_id": "C2", "amount": 50 } -] + { _id: 1, customer_id: 'C1', amount: 110 }, + { _id: 2, customer_id: 'C2', amount: 150 }, + { _id: 3, customer_id: 'C1', amount: 90 }, + { _id: 4, customer_id: 'C3', amount: 200 }, + { _id: 5, customer_id: 'C2', amount: 50 }, +]; ``` Now, let's group the data by `customer_id` and calculate each customer's total spent amount. @@ -41,21 +41,21 @@ Now, let's group the data by `customer_id` and calculate each customer's total s db.orders.aggregate([ { $group: { - _id: "$customer_id", - total_spent: { $sum: "$amount" } - } - } -]) + _id: '$customer_id', + total_spent: { $sum: '$amount' }, + }, + }, +]); ``` This query would result in the following: ```javascript [ - { "_id": "C1", "total_spent": 200 }, - { "_id": "C2", "total_spent": 200 }, - { "_id": "C3", "total_spent": 200 } -] + { _id: 'C1', total_spent: 200 }, + { _id: 'C2', total_spent: 200 }, + { _id: 'C3', total_spent: 200 }, +]; ``` -Using the `$group` operator, documents in the `orders` collection were grouped by `customer_id`, and the total spent amount for each customer was calculated using the `$sum` accumulator. \ No newline at end of file +Using the `$group` operator, documents in the `orders` collection were grouped by `customer_id`, and the total spent amount for each customer was calculated using the `$sum` accumulator. diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/101-match.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/101-match.md index 7ace1690e..8d63a1665 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/101-match.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/101-match.md @@ -25,6 +25,7 @@ Suppose you have a collection named `employees` with the following document stru "department": "HR" } ``` + You are asked to find employees aged above 30. To do this, you can use the `$match` operator as follows: ```python @@ -53,4 +54,4 @@ This returns employees who are aged above 30 and working in the "HR" department. - `$match` operator works best earlier in the pipeline. Placing it earlier prevents unnecessary processing and filtering of documents in later stages, which can improve the overall performance of the aggregation pipeline. - The `$match` operator uses most of the standard query operators, like `$gt`, `$lte`, `$in`, and so on. -In conclusion, the `$match` operator is a powerful and essential tool when working with MongoDB's aggregation pipeline to filter and process datasets based on specific conditions, leading to better performance and more relevant results. \ No newline at end of file +In conclusion, the `$match` operator is a powerful and essential tool when working with MongoDB's aggregation pipeline to filter and process datasets based on specific conditions, leading to better performance and more relevant results. diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/102-sort.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/102-sort.md index b63b2e034..c51ad02a5 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/102-sort.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/102-sort.md @@ -13,22 +13,17 @@ The `` parameter can be either `1` or `-1`, which corresponds to asc For example, suppose we have a collection of documents containing information about books, and we want to sort the documents by the book's title in ascending order. We can use the following `$sort` operator: ```javascript -db.books.aggregate([ - { $sort : { title : 1 } } -]) +db.books.aggregate([{ $sort: { title: 1 } }]); ``` This will sort the documents by the `title` field in ascending order. We can also use the `$sort` operator to sort by multiple fields. For example, suppose we have a collection of documents containing information about students, and we want to sort the documents by the student's age in descending order and then by their name in ascending order. We can use the following `$sort` operator: - ```javascript -db.students.aggregate([ - { $sort : { age : -1, name : 1 } } -]) +db.students.aggregate([{ $sort: { age: -1, name: 1 } }]); ``` This will sort the documents by the `age` field in descending order and then by the `name` field in ascending order. -It's important to note that the `$sort` operator can be an expensive operation, especially if sorting large datasets. So it's recommended to use it towards the end of a pipeline to minimize the number of documents being sorted. \ No newline at end of file +It's important to note that the `$sort` operator can be an expensive operation, especially if sorting large datasets. So it's recommended to use it towards the end of a pipeline to minimize the number of documents being sorted. diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/103-project.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/103-project.md index 010fad605..139b6baff 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/103-project.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/103-project.md @@ -21,8 +21,13 @@ Let's assume we have the following documents in a `students` collection: ```json [ - { "_id" : 1, "name" : "John Doe", "age" : 20, "subjects" : [ "Math", "Physics" ] }, - { "_id" : 2, "name" : "Jane Smith", "age" : 23, "subjects" : [ "Chemistry", "Biology" ] } + { "_id": 1, "name": "John Doe", "age": 20, "subjects": ["Math", "Physics"] }, + { + "_id": 2, + "name": "Jane Smith", + "age": 23, + "subjects": ["Chemistry", "Biology"] + } ] ``` @@ -34,22 +39,22 @@ db.students.aggregate([ $project: { _id: 0, name: 1, - age: 1 - } - } -]) + age: 1, + }, + }, +]); ``` Returned documents: ```json [ - { "name" : "John Doe", "age" : 20 }, - { "name" : "Jane Smith", "age" : 23 } + { "name": "John Doe", "age": 20 }, + { "name": "Jane Smith", "age": 23 } ] ``` -Notice that the resulting documents do not include the "_id" and "subjects" fields. +Notice that the resulting documents do not include the "\_id" and "subjects" fields. In the example below, we'll exclude the "subjects" field: @@ -57,19 +62,19 @@ In the example below, we'll exclude the "subjects" field: db.students.aggregate([ { $project: { - subjects: 0 - } - } -]) + subjects: 0, + }, + }, +]); ``` Returned documents: ```json [ - { "_id" : 1, "name" : "John Doe", "age" : 20 }, - { "_id" : 2, "name" : "Jane Smith", "age" : 23 } + { "_id": 1, "name": "John Doe", "age": 20 }, + { "_id": 2, "name": "Jane Smith", "age": 23 } ] ``` -Now that you have a basic understanding of the `$project` operator, you can try it out with various scenarios to reshape your MongoDB documents according to your needs. This operator can also be used in conjunction with other operators to perform complex data manipulations within the aggregation pipeline. \ No newline at end of file +Now that you have a basic understanding of the `$project` operator, you can try it out with various scenarios to reshape your MongoDB documents according to your needs. This operator can also be used in conjunction with other operators to perform complex data manipulations within the aggregation pipeline. diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/104-skip.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/104-skip.md index 8eb7fae7d..c61cee328 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/104-skip.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/104-skip.md @@ -21,12 +21,12 @@ Let's say we have a collection named `employees` and we want to skip the first 5 ```javascript db.employees.aggregate([ { - $skip: 5 - } + $skip: 5, + }, ]); ``` ## Important Notes - The `$skip` operator does not guarantee the order of documents passed through, so it's recommended you use `$sort` before `$skip` when order matters. -- For better performance, consider combining `$skip` with additional filters, and placing it later in the pipeline. \ No newline at end of file +- For better performance, consider combining `$skip` with additional filters, and placing it later in the pipeline. diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/105-limit.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/105-limit.md index ee3425877..343a31646 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/105-limit.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/105-limit.md @@ -17,7 +17,7 @@ Let's say we have a collection named `employees` and we want to limit the number ```javascript db.employees.aggregate([ { - $limit: 5 - } + $limit: 5, + }, ]); -``` \ No newline at end of file +``` diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/106-unwind.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/106-unwind.md index f0b7e1b97..8715ebd39 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/106-unwind.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/106-unwind.md @@ -43,21 +43,19 @@ Consider a `sales` collection with the following sample document: If you want to calculate the total revenue for each individual order, you can use the `$unwind` operator to deconstruct the `orders` array: ```javascript -db.sales.aggregate([ - { $unwind: { path: "$orders" } } -]) +db.sales.aggregate([{ $unwind: { path: '$orders' } }]); ``` The output will be: ```javascript [ - { _id: 1, item: "itemA", orders: { quantity: 2, unitPrice: 10 } }, - { _id: 1, item: "itemA", orders: { quantity: 3, unitPrice: 20 } }, - { _id: 1, item: "itemA", orders: { quantity: 1, unitPrice: 15 } } -] + { _id: 1, item: 'itemA', orders: { quantity: 2, unitPrice: 10 } }, + { _id: 1, item: 'itemA', orders: { quantity: 3, unitPrice: 20 } }, + { _id: 1, item: 'itemA', orders: { quantity: 1, unitPrice: 15 } }, +]; ``` Now each document represents a single order, and you can easily perform further operations like calculating the revenue for each document. -Remember, the `$unwind` operator is a crucial tool for handling and analyzing array data in MongoDB, enabling you to efficiently work with complex data structures. \ No newline at end of file +Remember, the `$unwind` operator is a crucial tool for handling and analyzing array data in MongoDB, enabling you to efficiently work with complex data structures. diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/107-lookup.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/107-lookup.md index dd655d5f6..7b32a3f26 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/107-lookup.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/107-lookup.md @@ -10,21 +10,21 @@ The `$lookup` operator uses the following syntax: ```json { - "$lookup": { - "from": "", - "localField": "", - "foreignField": "", - "as": "" - } + "$lookup": { + "from": "", + "localField": "", + "foreignField": "", + "as": "" + } } ``` ## Parameters -* `from`: The target collection to perform the join operation with. -* `localField`: The field from the input collection (i.e., the collection on which the `$lookup` is applied). -* `foreignField`: The field from the target collection (i.e., the `from` collection). -* `as`: The name of the output array field that will store the joined documents. +- `from`: The target collection to perform the join operation with. +- `localField`: The field from the input collection (i.e., the collection on which the `$lookup` is applied). +- `foreignField`: The field from the target collection (i.e., the `from` collection). +- `as`: The name of the output array field that will store the joined documents. ## Example @@ -34,28 +34,28 @@ To calculate the total amount of each order, you can use the `$lookup` operator ```javascript db.orders.aggregate([ - { - "$lookup": { - "from": "products", - "localField": "productId", - "foreignField": "productId", - "as": "productDetails" - } + { + $lookup: { + from: 'products', + localField: 'productId', + foreignField: 'productId', + as: 'productDetails', }, - { - "$unwind": "$productDetails" + }, + { + $unwind: '$productDetails', + }, + { + $project: { + orderId: 1, + totalAmount: { + $multiply: ['$quantity', '$productDetails.price'], + }, }, - { - "$project": { - "orderId": 1, - "totalAmount": { - "$multiply": ["$quantity", "$productDetails.price"] - } - } - } -]) + }, +]); ``` In this example, `$lookup` will join the `orders` and `products` collections based on `productId`. The joined data will be stored in the new `productDetails` array field. Additional aggregation stages (`$unwind` and `$project`) are used to calculate and display the total amount of each order. -So, the `$lookup` operator becomes an essential tool when you need to work with data from multiple collections and perform complex data processing tasks in MongoDB. \ No newline at end of file +So, the `$lookup` operator becomes an essential tool when you need to work with data from multiple collections and perform complex data processing tasks in MongoDB. diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/107-sum.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/107-sum.md index 94f591cf1..39fd83eb8 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/107-sum.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/101-common-operators/107-sum.md @@ -23,10 +23,10 @@ db.orders.aggregate([ { $group: { _id: null, - totalRevenue: { $sum: "$price" } - } - } -]) + totalRevenue: { $sum: '$price' }, + }, + }, +]); ``` ## Calculate Sum with Expression @@ -38,9 +38,9 @@ db.orders.aggregate([ { $group: { _id: null, - totalQuantity: { $sum: { $multiply: ["$price", "$quantity"] } } - } - } + totalQuantity: { $sum: { $multiply: ['$price', '$quantity'] } }, + }, + }, ]); ``` @@ -52,4 +52,4 @@ It's important to note that the `$sum` operator only works with numeric values. ## Conclusion -The `$sum` operator is a versatile and essential tool in the aggregation pipeline. By allowing you to calculate the sum of field values or expressions, it helps you efficiently perform aggregate calculations for your MongoDB data. \ No newline at end of file +The `$sum` operator is a versatile and essential tool in the aggregation pipeline. By allowing you to calculate the sum of field values or expressions, it helps you efficiently perform aggregate calculations for your MongoDB data. diff --git a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/index.md b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/index.md index 7f44517ca..5271ff853 100644 --- a/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/index.md +++ b/src/data/roadmaps/mongodb/content/106-mongodb-aggregation/index.md @@ -12,10 +12,10 @@ Example of a simple aggregation pipeline: ```javascript db.collection.aggregate([ - { $match: { status: "A" } }, - { $group: { _id: "$cust_id", total: { $sum: "$amount" } } }, - { $sort: { total: -1 } } -]) + { $match: { status: 'A' } }, + { $group: { _id: '$cust_id', total: { $sum: '$amount' } } }, + { $sort: { total: -1 } }, +]); ``` ## Map-Reduce @@ -26,13 +26,17 @@ Example of a simple map-reduce function: ```javascript db.collection.mapReduce( - function() { emit(this.cust_id, this.amount); }, - function(key, values) { return Array.sum(values) }, - { - query: { status: "A" }, - out: "order_totals" - } -) + function () { + emit(this.cust_id, this.amount); + }, + function (key, values) { + return Array.sum(values); + }, + { + query: { status: 'A' }, + out: 'order_totals', + } +); ``` ## Single-Purpose Aggregation @@ -42,7 +46,7 @@ MongoDB also supports single-purpose aggregation methods, such as `db.collection Example of db.collection.count(): ```javascript -db.collection.count({ status: "A" }) +db.collection.count({ status: 'A' }); ``` -In conclusion, MongoDB Aggregation is a powerful feature that helps you extract, manipulate and aggregate data from your collections. By using aggregation pipelines, map-reduce functions or single-purpose aggregation methods, you can perform various data analysis tasks efficiently on your MongoDB dataset. \ No newline at end of file +In conclusion, MongoDB Aggregation is a powerful feature that helps you extract, manipulate and aggregate data from your collections. By using aggregation pipelines, map-reduce functions or single-purpose aggregation methods, you can perform various data analysis tasks efficiently on your MongoDB dataset. diff --git a/src/data/roadmaps/mongodb/content/107-transactions.md b/src/data/roadmaps/mongodb/content/107-transactions.md index 7edd9d1ad..8996fb6cd 100644 --- a/src/data/roadmaps/mongodb/content/107-transactions.md +++ b/src/data/roadmaps/mongodb/content/107-transactions.md @@ -14,6 +14,7 @@ MongoDB supports multi-document transactions, enabling you to perform multiple r The fundamental purpose of a transaction is to either execute **all** or **none** of its operations. This means that, in case any operation within the transaction fails, the entire transaction will be aborted, and the database will return to its initial state, thus ensuring data consistency. Transactions in MongoDB are essential to achieve the following **ACID** properties: + - **Atomicity**: Ensures that either all the operations in the transaction are executed, or none are. - **Consistency**: Guarantees that, upon completing a transaction, the database remains in a consistent state. - **Isolation**: Secures that the operations within the transaction are isolated from other transactions being executed simultaneously. @@ -34,9 +35,11 @@ session.startTransaction(); try { // Perform various operations within the transaction - const operation1 = await collection1.insertOne(doc1, {session}); - const operation2 = await collection2.updateOne(condition, update, {session}); - const operation3 = await collection3.deleteOne(doc3, {session}); + const operation1 = await collection1.insertOne(doc1, { session }); + const operation2 = await collection2.updateOne(condition, update, { + session, + }); + const operation3 = await collection3.deleteOne(doc3, { session }); // Commit the transaction await session.commitTransaction(); @@ -52,8 +55,9 @@ try { ## Limitations While transactions provide immense benefits regarding data consistency and integrity, it is vital to be aware of some of its limitations: + - They are available only in MongoDB versions 4.0 and above. - They can cause performance overhead, especially for write-heavy workloads. - In MongoDB clusters, transactions only support a maximum duration of 60 seconds. -In summary, transactions are a powerful feature of MongoDB, ensuring data integrity, and consistency in the database. By understanding their usage and implications, you can effectively utilize them in your application according to your specific requirements. \ No newline at end of file +In summary, transactions are a powerful feature of MongoDB, ensuring data integrity, and consistency in the database. By understanding their usage and implications, you can effectively utilize them in your application according to your specific requirements. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/100-language-drivers.md b/src/data/roadmaps/mongodb/content/108-developer-tools/100-language-drivers.md index 6be4a3383..568a3126c 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/100-language-drivers.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/100-language-drivers.md @@ -1,6 +1,6 @@ # Language Drivers -Language drivers are essential tools for developers to interface with MongoDB. They are libraries provided by MongoDB to help developers work with MongoDB in their choice of programming language. With language drivers, you can perform various CRUD operations, manage authentication, and handle connections with the database effectively without worrying about low-level details. +Language drivers are essential tools for developers to interface with MongoDB. They are libraries provided by MongoDB to help developers work with MongoDB in their choice of programming language. With language drivers, you can perform various CRUD operations, manage authentication, and handle connections with the database effectively without worrying about low-level details. MongoDB supports a wide range of languages, and some of the most popular drivers are: @@ -19,4 +19,4 @@ With a suitable driver installed, you can interact with MongoDB using the idioma To get started with the language driver of your choice, visit the respective documentation linked above. The documentation will help you set up the driver, establish a connection, and perform various database operations in your preferred programming language. -Remember to always use the latest version of language drivers to ensure compatibility with new MongoDB features and improve overall performance. \ No newline at end of file +Remember to always use the latest version of language drivers to ensure compatibility with new MongoDB features and improve overall performance. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/100-kafka.md b/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/100-kafka.md index 3fd1a6e96..eb268c05f 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/100-kafka.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/100-kafka.md @@ -32,4 +32,4 @@ To get started with MongoDB Kafka connectors, you can follow these steps: For a complete tutorial and detailed configuration options, refer to the [official documentation](https://docs.mongodb.com/kafka-connector/current/kafka-source/). -In conclusion, MongoDB Kafka Connectors allow you to integrate MongoDB and Kafka seamlessly, enabling real-time data streaming and processing. By using these connectors, you can effectively build scalable, fault-tolerant, and resilient data pipelines between the two technologies. \ No newline at end of file +In conclusion, MongoDB Kafka Connectors allow you to integrate MongoDB and Kafka seamlessly, enabling real-time data streaming and processing. By using these connectors, you can effectively build scalable, fault-tolerant, and resilient data pipelines between the two technologies. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/101-spark.md b/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/101-spark.md index 17d0260c7..0d1ac05f4 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/101-spark.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/101-spark.md @@ -44,16 +44,16 @@ object MongoDBwithSpark { .config("spark.mongodb.input.uri", "mongodb://username:password@host/database.collection") .config("spark.mongodb.output.uri", "mongodb://username:password@host/database.collection") .getOrCreate() - + // Load data from MongoDB into a DataFrame val df = MongoSpark.load(spark) - + // Perform operations on DataFrame // ... - + // Write the DataFrame back to MongoDB MongoSpark.save(df.write.mode("overwrite")) - + // Stop the Spark session spark.stop() } @@ -62,4 +62,4 @@ object MongoDBwithSpark { With the MongoDB Spark Connector, you can leverage the power of Apache Spark to analyze and process your data, making it easier to develop analytics solutions and handle complex data processing tasks. -For more details, check the [official documentation](https://docs.mongodb.com/spark-connector/current/). \ No newline at end of file +For more details, check the [official documentation](https://docs.mongodb.com/spark-connector/current/). diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/102-elastic-search.md b/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/102-elastic-search.md index 0efda20e2..8d5473545 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/102-elastic-search.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/102-elastic-search.md @@ -22,4 +22,4 @@ If you're using MongoDB and wish to integrate Elasticsearch for enhanced search - **Flexible configuration:** You can configure the connector to sync specific fields, collections, and databases, and to apply custom transformations to the data before indexing it in Elasticsearch. - **Resilient:** The connector maintains a checkpoint of the last synced MongoDB operation, so in case of a failure or restart, it can resume the synchronization from the last checkpoint. -To get started with the MongoDB Connector for Elasticsearch, you can refer to the [official documentation](https://docs.mongodb.com/kafka-connector/current/kafka-elasticsearch-sink/) for installation and configuration instructions. \ No newline at end of file +To get started with the MongoDB Connector for Elasticsearch, you can refer to the [official documentation](https://docs.mongodb.com/kafka-connector/current/kafka-elasticsearch-sink/) for installation and configuration instructions. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/index.md b/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/index.md index ee65c6f34..f59c369af 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/index.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/101-mongodb-connectors/index.md @@ -4,7 +4,7 @@ MongoDB Connectors provide the integration between your application and the Mong In this section, we'll discuss some commonly used MongoDB Connectors and their main features. -## MongoDB BI Connector +## MongoDB BI Connector The MongoDB BI (Business Intelligence) Connector allows you to connect MongoDB to third-party tools like Tableau or PowerBI, enabling users to create visualizations, reports, and dashboards using data stored in MongoDB. It translates incoming SQL queries into equivalent MongoDB queries, providing a seamless experience when working with your data. @@ -14,7 +14,7 @@ Key Features: - Provides integration with popular BI tools - Supports various SQL-compatible clients -## MongoDB Kafka Connector +## MongoDB Kafka Connector The MongoDB Kafka Connector lets you stream data between Apache Kafka and MongoDB, enabling you to build real-time, event-driven data pipelines that can process and analyze large volumes of data quickly. With this connector, you can use Kafka as the central event bus for your system and automatically persist the events in MongoDB as required. @@ -24,7 +24,7 @@ Key Features: - Flexible and customizable pipelines - Scalable and fault-tolerant design -## MongoDB Connector for Spark +## MongoDB Connector for Spark The MongoDB Connector for Spark enables you to use MongoDB as a data source or destination for Apache Spark, a powerful analytics engine designed for large-scale data processing. With this connector, you can leverage Spark's advanced capabilities like machine learning and graph processing on your MongoDB data. @@ -34,7 +34,7 @@ Key Features: - Support for various Spark libraries like MLlib and GraphX - Parallel data processing for faster analytics -## MongoDB Language Drivers +## MongoDB Language Drivers MongoDB provides a range of official and community-supported language drivers that allow developers to interact with MongoDB using their preferred programming language. Officially supported drivers include C, C++, C#, Go, Java, Node.js, PHP, Python, Ruby, Rust, Scala, and Swift. There are also many community-supported drivers for other languages and frameworks. @@ -44,4 +44,4 @@ Key Features: - Connection pooling and efficient use of system resources - Strong consistency and safety with MongoDB's features -That's an overview of MongoDB Connectors. Remember that each connector has specific setup and configuration steps, so be sure to check the official MongoDB documentation for detailed instructions. Now, you should have a better understanding of how to use MongoDB with your preferred tools and platforms to build powerful applications and perform insightful analysis on your data. \ No newline at end of file +That's an overview of MongoDB Connectors. Remember that each connector has specific setup and configuration steps, so be sure to check the official MongoDB documentation for detailed instructions. Now, you should have a better understanding of how to use MongoDB with your preferred tools and platforms to build powerful applications and perform insightful analysis on your data. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/100-vs-code-extension.md b/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/100-vs-code-extension.md index 497d78165..d7de1acc0 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/100-vs-code-extension.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/100-vs-code-extension.md @@ -4,17 +4,17 @@ Visual Studio Code (VS Code) offers an extension for MongoDB that provides a con ## Features -* __Explorer Integration__: This extension integrates directly with the VS Code Explorer – allowing you to efficiently browse your databases, collections, and documents sans the need to leave the comfort of your code editor. +- **Explorer Integration**: This extension integrates directly with the VS Code Explorer – allowing you to efficiently browse your databases, collections, and documents sans the need to leave the comfort of your code editor. -* __Query Execution__: Write and execute MongoDB queries in your editor using the built-in MongoDB Query Playground. Easily execute commands, one by one or in groups, making your data manipulation experience more efficient. +- **Query Execution**: Write and execute MongoDB queries in your editor using the built-in MongoDB Query Playground. Easily execute commands, one by one or in groups, making your data manipulation experience more efficient. -* __CRUD Operations__: Perform Create, Read, Update, Delete (CRUD) operations on your documents right from the VS Code, without needing to switch between applications, keeping you focused and productive. +- **CRUD Operations**: Perform Create, Read, Update, Delete (CRUD) operations on your documents right from the VS Code, without needing to switch between applications, keeping you focused and productive. -* __Schema Visualization__: Get insights into your data schema by simply hovering over a field or a document. This feature enables you to have a more profound understanding of your data, helping you make better decisions while developing your application. +- **Schema Visualization**: Get insights into your data schema by simply hovering over a field or a document. This feature enables you to have a more profound understanding of your data, helping you make better decisions while developing your application. -* __Snippet Support__: The extension provides template snippets for the most common MongoDB commands, such as find, update or aggregation, to help you write queries faster and adhere to best practices. +- **Snippet Support**: The extension provides template snippets for the most common MongoDB commands, such as find, update or aggregation, to help you write queries faster and adhere to best practices. -* __Error Monitoring__: Get real-time feedback on syntax or runtime errors while writing MongoDB queries or manipulating documents. This feature helps you identify any potential issues or inconsistencies in your MongoDB operations. +- **Error Monitoring**: Get real-time feedback on syntax or runtime errors while writing MongoDB queries or manipulating documents. This feature helps you identify any potential issues or inconsistencies in your MongoDB operations. ## Getting Started @@ -22,4 +22,4 @@ To get started, simply install the [MongoDB for VS Code extension](https://marke After installation, you can connect to your MongoDB instance by clicking on the MongoDB icon on the Activity Bar (the vertical bar on the side of the window). From there, you can add your connection string, choose which databases and collections to explore, and interact with your MongoDB data using the extension features described above. -In conclusion, the MongoDB VS Code extension enhances your productivity as a developer by enabling you to seamlessly work with MongoDB databases directly in your code editor. If you haven't tried it yet, we recommend installing it and exploring its rich set of features. \ No newline at end of file +In conclusion, the MongoDB VS Code extension enhances your productivity as a developer by enabling you to seamlessly work with MongoDB databases directly in your code editor. If you haven't tried it yet, we recommend installing it and exploring its rich set of features. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/101-vs-analyzer.md b/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/101-vs-analyzer.md index 12ebcc323..91d0b3cc8 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/101-vs-analyzer.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/101-vs-analyzer.md @@ -30,4 +30,4 @@ To start using the VS Analyzer for MongoDB, follow these steps: - Once the extension is installed, you can access the MongoDB features through the `Extensions` menu in Visual Studio. -With the VS Analyzer for MongoDB, you'll be able to write cleaner, faster, and more efficient code, making it an essential tool for any MongoDB developer. \ No newline at end of file +With the VS Analyzer for MongoDB, you'll be able to write cleaner, faster, and more efficient code, making it an essential tool for any MongoDB developer. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/index.md b/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/index.md index a56b0b470..3ba7cae55 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/index.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/102-developer-tools/index.md @@ -47,4 +47,4 @@ Key Features: - Connection pooling for efficient resource utilization. - Tuned for performance and optimized for MongoDB specific features. -With these developer tools, you can increase your productivity while working with MongoDB and create efficient and maintainable applications. Whether you prefer a visual interface, a command-line environment, or even your favorite coding editor, there is a tool available to make your MongoDB development experience smooth and efficient. \ No newline at end of file +With these developer tools, you can increase your productivity while working with MongoDB and create efficient and maintainable applications. Whether you prefer a visual interface, a command-line environment, or even your favorite coding editor, there is a tool available to make your MongoDB development experience smooth and efficient. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/100-mongodump.md b/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/100-mongodump.md index 38aec419a..d757d6e8f 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/100-mongodump.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/100-mongodump.md @@ -39,4 +39,4 @@ mongorestore --uri "mongodb://username:password@host:port/database" --drop /path This command will restore the specified database from the backup directory, and the `--drop` flag will remove any existing data in the target database before restoring the data. -In summary, `mongodump` is a powerful utility for creating backups of your MongoDB data. Used in conjunction with `mongorestore`, you can easily create, store, and restore data backups as needed. \ No newline at end of file +In summary, `mongodump` is a powerful utility for creating backups of your MongoDB data. Used in conjunction with `mongorestore`, you can easily create, store, and restore data backups as needed. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/101-mongorestore.md b/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/101-mongorestore.md index c1e65f758..1c1502b27 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/101-mongorestore.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/101-mongorestore.md @@ -59,4 +59,4 @@ Restore to a remote MongoDB instance: mongorestore --host=remoteHost --port=27017 /path/to/your/dump/folder ``` -**Important**: Ensure you have proper backups of your data, and test the restore process periodically to validate your backup strategy. \ No newline at end of file +**Important**: Ensure you have proper backups of your data, and test the restore process periodically to validate your backup strategy. diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/index.md b/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/index.md index 691f2217c..8550c11fa 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/index.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/backup-recovery/index.md @@ -1 +1 @@ -# Backup recovery \ No newline at end of file +# Backup recovery diff --git a/src/data/roadmaps/mongodb/content/108-developer-tools/index.md b/src/data/roadmaps/mongodb/content/108-developer-tools/index.md index a9f1a12cf..c344bb44c 100644 --- a/src/data/roadmaps/mongodb/content/108-developer-tools/index.md +++ b/src/data/roadmaps/mongodb/content/108-developer-tools/index.md @@ -16,7 +16,7 @@ mongo [options] [db address] ## MongoDB Atlas -[MongoDB Atlas](https://www.mongodb.com/cloud/atlas) is a fully-managed cloud-based database platform offering the best of MongoDB. Its intuitive interface provides an effortless deployment experience, automated backups, self-healing recovery, and many other features that make it an ideal choice for database management. +[MongoDB Atlas](https://www.mongodb.com/cloud/atlas) is a fully-managed cloud-based database platform offering the best of MongoDB. Its intuitive interface provides an effortless deployment experience, automated backups, self-healing recovery, and many other features that make it an ideal choice for database management. ## MongoDB APIs and Drivers @@ -35,4 +35,4 @@ These drivers provide a high-level API for connecting to MongoDB and performing [Studio 3T](https://studio3t.com/) is a powerful, feature-rich MongoDB management tool that provides a comprehensive set of tools and features for MongoDB management and development. Studio 3T offers advanced features such as IntelliShell, Query Code, and SQL Migration. -Choosing the right developer tool depends upon your specific requirements, but being familiar with these tools will offer you a range of options for a faster and more efficient development process. \ No newline at end of file +Choosing the right developer tool depends upon your specific requirements, but being familiar with these tools will offer you a range of options for a faster and more efficient development process. diff --git a/src/data/roadmaps/mongodb/content/109-scaling-mongodb.md b/src/data/roadmaps/mongodb/content/109-scaling-mongodb.md index 902fb9bba..f94638d31 100644 --- a/src/data/roadmaps/mongodb/content/109-scaling-mongodb.md +++ b/src/data/roadmaps/mongodb/content/109-scaling-mongodb.md @@ -1,6 +1,6 @@ # Scaling MongoDB -Scaling MongoDB is crucial for maintaining high performance and availability of your database, especially as your application and its data grow. There are two main methods for scaling MongoDB: *horizontal scaling* and *vertical scaling*. In this section, we'll discuss the differences between the two methods, the scenarios in which each method is suitable, and the tools and techniques used to scale a MongoDB deployment. +Scaling MongoDB is crucial for maintaining high performance and availability of your database, especially as your application and its data grow. There are two main methods for scaling MongoDB: _horizontal scaling_ and _vertical scaling_. In this section, we'll discuss the differences between the two methods, the scenarios in which each method is suitable, and the tools and techniques used to scale a MongoDB deployment. ## Horizontal Scaling @@ -12,9 +12,9 @@ Sharding is a method of spreading data across multiple servers, allowing MongoDB ## Components of Sharding -- *Shard*: A single server or a replica set that stores a portion of the sharded data. -- *Config Server*: A server or a replica set that stores metadata about the sharded clusters. The config server tracks which data is stored on which shard. -- *Query Router (mongos)*: A server that routes the application queries to the appropriate shard based on the metadata obtained from the config server. +- _Shard_: A single server or a replica set that stores a portion of the sharded data. +- _Config Server_: A server or a replica set that stores metadata about the sharded clusters. The config server tracks which data is stored on which shard. +- _Query Router (mongos)_: A server that routes the application queries to the appropriate shard based on the metadata obtained from the config server. ## Vertical Scaling @@ -26,8 +26,8 @@ Although not exclusively a vertical scaling method, using replica sets can also ## Components of Replica Sets -- *Primary Node*: The primary node processes all the write operations and can also process read operations. -- *Secondary Nodes*: Secondary nodes replicate the data stored in the primary node and can serve read operations. They can be promoted to the primary role if the primary node experiences a failure. -- *Arbiter Nodes* (optional): Arbiter nodes do not store any data but participate in the election process for primary node selection, preventing split-brain scenarios. +- _Primary Node_: The primary node processes all the write operations and can also process read operations. +- _Secondary Nodes_: Secondary nodes replicate the data stored in the primary node and can serve read operations. They can be promoted to the primary role if the primary node experiences a failure. +- _Arbiter Nodes_ (optional): Arbiter nodes do not store any data but participate in the election process for primary node selection, preventing split-brain scenarios. -In conclusion, scaling MongoDB can be achieved by using a combination of horizontal and vertical scaling methods. Additionally, managing replica sets improves the overall performance and availability of your system. Accurate planning and consideration of your application requirements will help you decide which scaling methods to apply for your MongoDB deployment. \ No newline at end of file +In conclusion, scaling MongoDB can be achieved by using a combination of horizontal and vertical scaling methods. Additionally, managing replica sets improves the overall performance and availability of your system. Accurate planning and consideration of your application requirements will help you decide which scaling methods to apply for your MongoDB deployment. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/100-role-based-access-control.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/100-role-based-access-control.md index 6947d50b7..73e820b56 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/100-role-based-access-control.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/100-role-based-access-control.md @@ -26,15 +26,15 @@ To create a custom role, you can use the `db.createRole()` method. Here's an exa ```javascript db.createRole({ - role: "customRole", + role: 'customRole', privileges: [ { - resource: {db: "exampleDB", collection: ""}, - actions: ["find", "insert", "update", "remove"] - } + resource: { db: 'exampleDB', collection: '' }, + actions: ['find', 'insert', 'update', 'remove'], + }, ], - roles: [] -}) + roles: [], +}); ``` In the example above, we created a custom role `customRole` with privileges that allow users with this role to perform `find`, `insert`, `update`, and `remove` operations on all collections within the `exampleDB` database. @@ -45,15 +45,15 @@ To ensure that users have the appropriate level of access and permissions, you a ```javascript db.createUser({ - user: "exampleUser", - pwd: "examplePassword", + user: 'exampleUser', + pwd: 'examplePassword', roles: [ - {role: "read", db: "exampleDB"}, - {role: "customRole", db: "exampleDB"} - ] -}) + { role: 'read', db: 'exampleDB' }, + { role: 'customRole', db: 'exampleDB' }, + ], +}); ``` In this example, we created a new user `exampleUser` and assigned the built-in `read` role and a custom `customRole` role. -By effectively using role-based access control, you can strengthen the security of your MongoDB database and protect sensitive data from unauthorized access. \ No newline at end of file +By effectively using role-based access control, you can strengthen the security of your MongoDB database and protect sensitive data from unauthorized access. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/101-x509-certificate-auth.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/101-x509-certificate-auth.md index b925a0328..e5c9314df 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/101-x509-certificate-auth.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/101-x509-certificate-auth.md @@ -10,35 +10,36 @@ To incorporate x.509 certificate authentication, follow these steps: - **Configure the MongoDB Server**: To enable X.509 authentication, you'll need to start MongoDB with the following options: - ```bash - mongod --tlsMode requireTLS --tlsCertificateKeyFile /path/to/server.pem --tlsCAFile /path/to/ca.pem --auth - ``` - Replace `/path/to/server.pem` with the path to the MongoDB server certificate file and `/path/to/ca.pem` with the CA certificate file. Add `--auth` to require authentication for all connections. + ```bash + mongod --tlsMode requireTLS --tlsCertificateKeyFile /path/to/server.pem --tlsCAFile /path/to/ca.pem --auth + ``` + + Replace `/path/to/server.pem` with the path to the MongoDB server certificate file and `/path/to/ca.pem` with the CA certificate file. Add `--auth` to require authentication for all connections. - **Create the User Administrator**: Use the following command on the `admin` database to create a user administrator with an X.509 certificate: - ```javascript - db.getSiblingDB("$external").runCommand( - { - createUser: "C=US,ST=New York,L=New York City,O=MongoDB,OU=kerneluser,CN=client@example.com", - roles: [ - { role: "userAdminAnyDatabase", db: "admin" }, - { role: "clusterAdmin", db: "admin" }, - { role: "readWriteAnyDatabase", db: "admin" }, - { role: "dbAdminAnyDatabase", db: "admin" }, - ], - writeConcern: { w: "majority" , wtimeout: 5000 } - } - ) - ``` - - Replace the `createUser` field with your X.509 certificate's subject. + ```javascript + db.getSiblingDB('$external').runCommand({ + createUser: + 'C=US,ST=New York,L=New York City,O=MongoDB,OU=kerneluser,CN=client@example.com', + roles: [ + { role: 'userAdminAnyDatabase', db: 'admin' }, + { role: 'clusterAdmin', db: 'admin' }, + { role: 'readWriteAnyDatabase', db: 'admin' }, + { role: 'dbAdminAnyDatabase', db: 'admin' }, + ], + writeConcern: { w: 'majority', wtimeout: 5000 }, + }); + ``` + + Replace the `createUser` field with your X.509 certificate's subject. - **Authenticate with the Client Certificate**: To authenticate the client, use a `mongo` shell command that includes the client certificate and CA certificate files: - ```bash - mongo --tls --tlsCertificateKeyFile /path/to/client.pem --tlsCAFile /path/to/ca.pem --authenticationDatabase '$external' --authenticationMechanism 'MONGODB-X509' --host hostname.example.com - ``` - Update `/path/to/client.pem` with the client certificate file path and `/path/to/ca.pem` with the CA certificate file. Replace `hostname.example.com` with your MongoDB server's hostname. + ```bash + mongo --tls --tlsCertificateKeyFile /path/to/client.pem --tlsCAFile /path/to/ca.pem --authenticationDatabase '$external' --authenticationMechanism 'MONGODB-X509' --host hostname.example.com + ``` + + Update `/path/to/client.pem` with the client certificate file path and `/path/to/ca.pem` with the CA certificate file. Replace `hostname.example.com` with your MongoDB server's hostname. -After successfully implementing these steps, you will have enabled X.509 certificate authentication for your MongoDB environment, providing an added layer of security for client-server communications. \ No newline at end of file +After successfully implementing these steps, you will have enabled X.509 certificate authentication for your MongoDB environment, providing an added layer of security for client-server communications. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/102-kerberos-authentication.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/102-kerberos-authentication.md index cf0bd43bd..acc942827 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/102-kerberos-authentication.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/102-kerberos-authentication.md @@ -31,4 +31,4 @@ MongoDB clients need to have valid tickets in their credentials cache to authent - Request a TGT from the KDC using the `kinit` command. - Configure the MongoDB client to use Kerberos authentication by passing a connection string that includes the GSSAPI mechanism. -In summary, Kerberos authentication provides an additional layer of security in MongoDB, ensuring the mutual identification of the server and clients. By properly configuring the MongoDB server and clients, you can take advantage of this powerful authentication mechanism to protect your data. \ No newline at end of file +In summary, Kerberos authentication provides an additional layer of security in MongoDB, ensuring the mutual identification of the server and clients. By properly configuring the MongoDB server and clients, you can take advantage of this powerful authentication mechanism to protect your data. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/103-ldap-proxy-auth.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/103-ldap-proxy-auth.md index 96e6a01e6..756c69956 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/103-ldap-proxy-auth.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/103-ldap-proxy-auth.md @@ -18,4 +18,4 @@ In this section, we'll take a closer look at LDAP Proxy Authentication and its b - **Enhanced security**: MongoDB doesn't store any user credentials, which helps protect against unauthorized access in case of a MongoDB server compromise. Additionally, the LDAP server can enforce strong authentication and password policies. - **Reduced administrative overhead**: Managing users directly in MongoDB can be cumbersome, especially in large-scale deployments with multiple servers. LDAP Proxy Authentication simplifies the process by keeping user information centralized in the LDAP server. -To implement LDAP Proxy Authentication in your MongoDB security setup, you can follow the [official MongoDB documentation](https://docs.mongodb.com/manual/security/authentication/) that provides comprehensive instructions on how to configure the feature depending on your LDAP server and MongoDB version. \ No newline at end of file +To implement LDAP Proxy Authentication in your MongoDB security setup, you can follow the [official MongoDB documentation](https://docs.mongodb.com/manual/security/authentication/) that provides comprehensive instructions on how to configure the feature depending on your LDAP server and MongoDB version. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/104-mongodb-audit.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/104-mongodb-audit.md index ecf627d6e..e495de0d6 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/104-mongodb-audit.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/104-mongodb-audit.md @@ -11,11 +11,12 @@ MongoDB auditing enables you to capture detailed information about database even To enable auditing in MongoDB, you must use MongoDB Enterprise Advanced or an equivalent Atlas tier. Once you have the required version, you can enable auditing by modifying your `mongod` or `mongos` configuration file to include the `auditLog` option, specifying the format, destination, and filter criteria for the audit events. Example: + ```yaml auditLog: destination: file format: JSON - path: "/path/to/audit/log/file.json" + path: '/path/to/audit/log/file.json' filter: "{ atype: { $in: ['authenticate', 'createUser', 'dropUser', 'revokeRolesFromUser'] }}" ``` @@ -31,6 +32,7 @@ MongoDB audit logs can be generated in two formats: To specify which events should be audited, you can provide a filter expression to the `auditLog.filter` configuration parameter. Example: + ```yaml auditLog: filter: "{ atype: { $in: ['authCheck', 'createUser', 'dropUser', 'revokeRolesFromUser'] }}" @@ -42,4 +44,4 @@ You can customize the filter criteria to suit your security requirements and avo You can analyze and monitor MongoDB audit logs using various tools, including log analysis software, SIEM systems, or built-in MongoDB utilities like `mongoaudit`. Regular audits can help identify unusual activities, data breaches, or unauthorized access, therefore ensuring the continued security and integrity of your database environment. -In conclusion, MongoDB's auditing feature is an essential component of a robust security strategy. By enabling audit logging and regularly analyzing the captured events, you can ensure the safety, performance, and compliance of your MongoDB deployment. \ No newline at end of file +In conclusion, MongoDB's auditing feature is an essential component of a robust security strategy. By enabling audit logging and regularly analyzing the captured events, you can ensure the safety, performance, and compliance of your MongoDB deployment. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/100-encryption-at-rest.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/100-encryption-at-rest.md index 134007983..b49b93d3c 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/100-encryption-at-rest.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/100-encryption-at-rest.md @@ -4,9 +4,9 @@ Encryption at Rest refers to the process of encrypting data when it is stored wi ## Benefits -* **Enhanced Security**: By encrypting the data, you make it more difficult for attackers to access sensitive information. -* **Compliance**: Encryption at rest can help you meet various regulatory compliance requirements that mandate data protection. -* **Reduced Risk**: If someone gains unauthorized access to the storage, they won't be able to read the encrypted data. +- **Enhanced Security**: By encrypting the data, you make it more difficult for attackers to access sensitive information. +- **Compliance**: Encryption at rest can help you meet various regulatory compliance requirements that mandate data protection. +- **Reduced Risk**: If someone gains unauthorized access to the storage, they won't be able to read the encrypted data. ## How it Works in MongoDB @@ -36,10 +36,10 @@ Example `mongod.conf` file: storage: wiredTiger: engineConfig: - encryptWith: "AES256-CBC" + encryptWith: 'AES256-CBC' encryptionKeyManager: - keyLocation: "/path/to/encryption/key" - keyManagement: "local" + keyLocation: '/path/to/encryption/key' + keyManagement: 'local' ``` Start MongoDB with: @@ -48,4 +48,4 @@ Start MongoDB with: mongod --config /etc/mongod.conf ``` -By configuring encryption at rest, you are now providing an added layer of security to your MongoDB database, making it more difficult for unauthorized users to access sensitive information while ensuring compliance with regulatory requirements. \ No newline at end of file +By configuring encryption at rest, you are now providing an added layer of security to your MongoDB database, making it more difficult for unauthorized users to access sensitive information while ensuring compliance with regulatory requirements. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/101-queryable-encryption.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/101-queryable-encryption.md index 118aa37da..4dba3d396 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/101-queryable-encryption.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/101-queryable-encryption.md @@ -4,11 +4,11 @@ Queryable encryption is a security feature offered by MongoDB, which allows the Here we discuss the following aspects of queryable encryption in MongoDB: -## Client-Side Field Level Encryption (FLE) +## Client-Side Field Level Encryption (FLE) Client-side FLE is a technique where data is encrypted on the client-side before it is sent to the MongoDB server. This ensures that only encrypted data is stored in the database, and sensitive fields remain confidential. With client-side FLE, the encryption keys are managed outside of the database server, granting even finer control over data access. -## Supported Algorithms +## Supported Algorithms MongoDB supports two types of encryption algorithms for queryable encryption: @@ -16,16 +16,16 @@ MongoDB supports two types of encryption algorithms for queryable encryption: - **Randomized Encryption**: This algorithm ensures that the same value will result in different encrypted values, providing a higher level of security. However, randomized encryption does not allow performing database operations like equality or sorting on the encrypted fields. -## Indexing Encrypted Fields +## Indexing Encrypted Fields One of the crucial benefits of queryable encryption in MongoDB is the support for indexing encrypted fields. You can create indexes on fields encrypted with deterministic encryption to improve query performance. However, indexing is not supported on fields encrypted with randomized encryption, as the encrypted values are not predictable. -## Supported Data Types +## Supported Data Types Queryable encryption in MongoDB supports encrypting fields with various data types, including strings, numbers (integers, doubles, and decimals), dates, and binary data (including UUIDs and ObjectIDs). However, it does not support encrypting fields containing arrays, embedded documents, or other special data types. -## Encryption Performance +## Encryption Performance Implementing queryable encryption may introduce some performance overhead while performing encryption and decryption operations on the client-side. It is essential to evaluate the impact of encryption on your application and consider optimizing the encryption settings or the database schema based on the use case. -In summary, queryable encryption in MongoDB offers a powerful way to secure sensitive data while enabling necessary database operations like querying and indexing. By using client-side field level encryption and choosing appropriate encryption algorithms, you can strike the right balance between data confidentiality and performance. \ No newline at end of file +In summary, queryable encryption in MongoDB offers a powerful way to secure sensitive data while enabling necessary database operations like querying and indexing. By using client-side field level encryption and choosing appropriate encryption algorithms, you can strike the right balance between data confidentiality and performance. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/103-client-side-field-level-encryption.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/103-client-side-field-level-encryption.md index 4c732ccee..4a0c54dd5 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/103-client-side-field-level-encryption.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/103-client-side-field-level-encryption.md @@ -4,9 +4,9 @@ Client-Side Field Level Encryption (CSFLE) in MongoDB provides enhanced security ## Key Features -* **Field-level granularity**: Encrypt only the required fields in a document, ensuring optimal performance while maintaining security. -* **Automatic encryption and decryption**: The MongoDB client library automatically encrypts and decrypts sensitive fields, without requiring any manual intervention. -* **Separation of duties**: Client-Side Field Level Encryption separates the management of encryption keys and the encrypted data, allowing for a more secure infrastructure. +- **Field-level granularity**: Encrypt only the required fields in a document, ensuring optimal performance while maintaining security. +- **Automatic encryption and decryption**: The MongoDB client library automatically encrypts and decrypts sensitive fields, without requiring any manual intervention. +- **Separation of duties**: Client-Side Field Level Encryption separates the management of encryption keys and the encrypted data, allowing for a more secure infrastructure. ## How It Works @@ -20,16 +20,16 @@ Client-Side Field Level Encryption (CSFLE) in MongoDB provides enhanced security MongoDB supports the following encryption algorithms for CSFLE: -* **Deterministic Encryption**: This encryption method allows for equality queries on encrypted fields. It uses the same encryption key and plaintext to generate the same encrypted data, ensuring that the same values will be encrypted the same way. -* **Random Encryption**: This encryption method provides a higher level of security by using different values for each encryption, even with identical plaintext. It is suitable for fields that don't require searching or querying based on individual values. +- **Deterministic Encryption**: This encryption method allows for equality queries on encrypted fields. It uses the same encryption key and plaintext to generate the same encrypted data, ensuring that the same values will be encrypted the same way. +- **Random Encryption**: This encryption method provides a higher level of security by using different values for each encryption, even with identical plaintext. It is suitable for fields that don't require searching or querying based on individual values. ## Key Management CSFLE requires the use of a separate Key Management System (KMS) to store and maintain encryption keys. MongoDB supports the following KMS providers: -* AWS Key Management Service (KMS) -* Azure Key Vault -* Google Cloud KMS -* Local Key Management (using a local master key) +- AWS Key Management Service (KMS) +- Azure Key Vault +- Google Cloud KMS +- Local Key Management (using a local master key) -By using CSFLE in MongoDB, you can significantly enhance the security of your sensitive data and comply with regulatory standards such as GDPR, HIPAA, and PCI-DSS. \ No newline at end of file +By using CSFLE in MongoDB, you can significantly enhance the security of your sensitive data and comply with regulatory standards such as GDPR, HIPAA, and PCI-DSS. diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/index.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/index.md index b88f85ab7..1ca319e13 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/index.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/encryption/index.md @@ -1 +1 @@ -# Encryption \ No newline at end of file +# Encryption diff --git a/src/data/roadmaps/mongodb/content/110-mongodb-security/index.md b/src/data/roadmaps/mongodb/content/110-mongodb-security/index.md index 53009807a..bf51a4187 100644 --- a/src/data/roadmaps/mongodb/content/110-mongodb-security/index.md +++ b/src/data/roadmaps/mongodb/content/110-mongodb-security/index.md @@ -49,4 +49,4 @@ Here are some additional best practices to ensure a secure MongoDB deployment: - Enable auditing and monitor logs - Regularly update and patch MongoDB -In conclusion, MongoDB provides a comprehensive security framework to protect your data and applications from unauthorized access and attacks. By understanding and implementing various MongoDB security features, you can ensure the safety and integrity of your database systems. \ No newline at end of file +In conclusion, MongoDB provides a comprehensive security framework to protect your data and applications from unauthorized access and attacks. By understanding and implementing various MongoDB security features, you can ensure the safety and integrity of your database systems. diff --git a/src/data/roadmaps/mongodb/content/index.md b/src/data/roadmaps/mongodb/content/index.md index 4e768b56d..792d60054 100644 --- a/src/data/roadmaps/mongodb/content/index.md +++ b/src/data/roadmaps/mongodb/content/index.md @@ -1 +1 @@ -# \ No newline at end of file +# diff --git a/src/data/roadmaps/mongodb/mongodb.md b/src/data/roadmaps/mongodb/mongodb.md index ea47f52c4..7d54b0019 100644 --- a/src/data/roadmaps/mongodb/mongodb.md +++ b/src/data/roadmaps/mongodb/mongodb.md @@ -1,55 +1,54 @@ --- -jsonUrl: "/jsons/roadmaps/mongodb.json" -pdfUrl: "/pdfs/roadmaps/mongodb.pdf" +jsonUrl: '/jsons/roadmaps/mongodb.json' +pdfUrl: '/pdfs/roadmaps/mongodb.pdf' order: 14 -briefTitle: "MongoDB" -briefDescription: "Step by step guide to learning MongoDB in 2023" -title: "MongoDB Roadmap" -description: "Step by step guide to learning MongoDB in 2023" +briefTitle: 'MongoDB' +briefDescription: 'Step by step guide to learning MongoDB in 2023' +title: 'MongoDB Roadmap' +description: 'Step by step guide to learning MongoDB in 2023' isNew: true hasTopics: true dimensions: width: 968 height: 2123.45 schema: - headline: "MongoDB Roadmap: Step by step guide to learning MongoDB in 2023" - description: "Learn how to use MongoDB with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/mongodb.png" - datePublished: "2023-03-16" - dateModified: "2023-03-16" + headline: 'MongoDB Roadmap: Step by step guide to learning MongoDB in 2023' + description: 'Learn how to use MongoDB with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/mongodb.png' + datePublished: '2023-03-16' + dateModified: '2023-03-16' seo: - title: "MongoDB Roadmap - roadmap.sh" - description: "Step by step guide to learn MongoDB in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." + title: 'MongoDB Roadmap - roadmap.sh' + description: 'Step by step guide to learn MongoDB in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' keywords: - - "mongodb tutorial" - - "step by step mongodb" - - "mongodb roadmap 2023" - - "guide to learning mongodb" - - "mongodb roadmap" - - "mongodb" - - "mongodb engineer" - - "mongodb skills" - - "mongodb development" - - "mongodb development skills" - - "mongodb development skills test" - - "mongodb engineer roadmap" - - "mongodb roadmap" - - "become a mongodb" - - "mongodb career path" - - "learn mongodb development" - - "what is mongodb" - - "mongodb quiz" - - "mongodb interview questions" + - 'mongodb tutorial' + - 'step by step mongodb' + - 'mongodb roadmap 2023' + - 'guide to learning mongodb' + - 'mongodb roadmap' + - 'mongodb' + - 'mongodb engineer' + - 'mongodb skills' + - 'mongodb development' + - 'mongodb development skills' + - 'mongodb development skills test' + - 'mongodb engineer roadmap' + - 'mongodb roadmap' + - 'become a mongodb' + - 'mongodb career path' + - 'learn mongodb development' + - 'what is mongodb' + - 'mongodb quiz' + - 'mongodb interview questions' relatedRoadmaps: - - "backend" - - "nodejs" - - "system-design" + - 'backend' + - 'nodejs' + - 'system-design' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/nodejs/content/100-nodejs-introduction/102-history-of-nodejs.md b/src/data/roadmaps/nodejs/content/100-nodejs-introduction/102-history-of-nodejs.md index 15318bc9d..525f46280 100644 --- a/src/data/roadmaps/nodejs/content/100-nodejs-introduction/102-history-of-nodejs.md +++ b/src/data/roadmaps/nodejs/content/100-nodejs-introduction/102-history-of-nodejs.md @@ -4,4 +4,4 @@ Node.js was written initially by Ryan Dahl in 2009, about thirteen years after t Visit the following resources to learn more: -- [Official Website](https://nodejs.dev/en/learn/a-brief-history-of-nodejs/) \ No newline at end of file +- [Official Website](https://nodejs.dev/en/learn/a-brief-history-of-nodejs/) diff --git a/src/data/roadmaps/nodejs/content/100-nodejs-introduction/104-running-nodejs-code.md b/src/data/roadmaps/nodejs/content/100-nodejs-introduction/104-running-nodejs-code.md index 25e980061..db19bfa2b 100644 --- a/src/data/roadmaps/nodejs/content/100-nodejs-introduction/104-running-nodejs-code.md +++ b/src/data/roadmaps/nodejs/content/100-nodejs-introduction/104-running-nodejs-code.md @@ -4,4 +4,4 @@ The usual way to run a Node.js program is to run the globally available `node` c Visit the following resources to learn more: -- [Run Node.js from Command Line](https://nodejs.dev/en/learn/run-nodejs-scripts-from-the-command-line/) \ No newline at end of file +- [Run Node.js from Command Line](https://nodejs.dev/en/learn/run-nodejs-scripts-from-the-command-line/) diff --git a/src/data/roadmaps/nodejs/content/101-nodejs-modules/102-global-keyword.md b/src/data/roadmaps/nodejs/content/101-nodejs-modules/102-global-keyword.md index c5c92e428..3af06f866 100644 --- a/src/data/roadmaps/nodejs/content/101-nodejs-modules/102-global-keyword.md +++ b/src/data/roadmaps/nodejs/content/101-nodejs-modules/102-global-keyword.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [global Keyword in Node.js](https://nodejs.org/api/globals.html#global) - [What is Global Object?](https://www.youtube.com/watch?v=jn8PZNBmKm0) -- [Global Object in Node](https://www.youtube.com/watch?v=PY-AycMkEAg) \ No newline at end of file +- [Global Object in Node](https://www.youtube.com/watch?v=PY-AycMkEAg) diff --git a/src/data/roadmaps/nodejs/content/102-nodejs-npm/100-npx.md b/src/data/roadmaps/nodejs/content/102-nodejs-npm/100-npx.md index 7c2980f72..0b86d7bd5 100644 --- a/src/data/roadmaps/nodejs/content/102-nodejs-npm/100-npx.md +++ b/src/data/roadmaps/nodejs/content/102-nodejs-npm/100-npx.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Introduction to the npx Node.js Package Runner](https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b) - [npm vs npx — What’s the Difference?](https://www.freecodecamp.org/news/npm-vs-npx-whats-the-difference/) - [Official Documentation:](https://docs.npmjs.com/cli/v7/commands/npx/) - diff --git a/src/data/roadmaps/nodejs/content/102-nodejs-npm/101-global-install-vs-local-install.md b/src/data/roadmaps/nodejs/content/102-nodejs-npm/101-global-install-vs-local-install.md index 526c00bb1..8235e132e 100644 --- a/src/data/roadmaps/nodejs/content/102-nodejs-npm/101-global-install-vs-local-install.md +++ b/src/data/roadmaps/nodejs/content/102-nodejs-npm/101-global-install-vs-local-install.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Downloading and installing packages locally](https://docs.npmjs.com/downloading-and-installing-packages-locally) - [Downloading and installing packages globally](https://docs.npmjs.com/downloading-and-installing-packages-globally) - [NPM Install Docs](https://docs.npmjs.com/cli/v8/commands/npm-install) -- [What is global installation of dependencies in Node.js ?](https://www.geeksforgeeks.org/what-is-global-installation-of-dependencies-in-node-js/) \ No newline at end of file +- [What is global installation of dependencies in Node.js ?](https://www.geeksforgeeks.org/what-is-global-installation-of-dependencies-in-node-js/) diff --git a/src/data/roadmaps/nodejs/content/102-nodejs-npm/106-creating-packages.md b/src/data/roadmaps/nodejs/content/102-nodejs-npm/106-creating-packages.md index 7a205c66c..f273e7558 100644 --- a/src/data/roadmaps/nodejs/content/102-nodejs-npm/106-creating-packages.md +++ b/src/data/roadmaps/nodejs/content/102-nodejs-npm/106-creating-packages.md @@ -5,4 +5,4 @@ npm packages allow you to bundle some specific functionality into a reusable pac Visit the following resources to learn more: - [How to make a tiny npm package and publish it](https://www.freecodecamp.org/news/how-to-make-a-beautiful-tiny-npm-package-and-publish-it-2881d4307f78/) -- [Best practices for creating a modern npm package](https://snyk.io/blog/best-practices-create-modern-npm-package/) \ No newline at end of file +- [Best practices for creating a modern npm package](https://snyk.io/blog/best-practices-create-modern-npm-package/) diff --git a/src/data/roadmaps/nodejs/content/102-nodejs-npm/index.md b/src/data/roadmaps/nodejs/content/102-nodejs-npm/index.md index 591d46821..445f9bba0 100644 --- a/src/data/roadmaps/nodejs/content/102-nodejs-npm/index.md +++ b/src/data/roadmaps/nodejs/content/102-nodejs-npm/index.md @@ -1,6 +1,6 @@ # npm -npm is the standard package manager for Node.js. +npm is the standard package manager for Node.js. It is two things: first and foremost, it is an online repository for the publishing of open-source Node.js projects; second, it is a command-line utility for interacting with said repository that aids in package installation, version management, and dependency management. A plethora of Node.js libraries and applications are published on npm, and many more are added every day diff --git a/src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/100-javascript-errors.md b/src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/100-javascript-errors.md index 94f00d850..005d70507 100644 --- a/src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/100-javascript-errors.md +++ b/src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/100-javascript-errors.md @@ -4,12 +4,12 @@ JavaScript Errors are used by JavaScript to inform developers about various issu JavaScript has six types of errors that may occur during the execution of the script: -* EvalError -* RangeError -* ReferenceError -* SyntaxError -* TypeError -* URIError +- EvalError +- RangeError +- ReferenceError +- SyntaxError +- TypeError +- URIError Visit the following resources to learn more: diff --git a/src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/101-system-errors.md b/src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/101-system-errors.md index d4f82c194..c17caf135 100644 --- a/src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/101-system-errors.md +++ b/src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/101-system-errors.md @@ -1,6 +1,6 @@ # System Errors -Node.js generates system errors when exceptions occur within its runtime environment. These usually occur when an application violates an operating system constraint. +Node.js generates system errors when exceptions occur within its runtime environment. These usually occur when an application violates an operating system constraint. For example, a system error will occur if an application attempts to read a file that does not exist. Below are the system errors commonly encountered when writing a Node.js program @@ -19,7 +19,6 @@ Below are the system errors commonly encountered when writing a Node.js program 12. EPIPE - Broken Pipe 13. ETIMEDOUT - Operation timed out - Visit the following resources to learn more: - [Node.js Errors - Official Docs](https://nodejs.org/api/errors.html#errors_class_systemerror) diff --git a/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/102-promises.md b/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/102-promises.md index 4432c3e67..a2677eea9 100644 --- a/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/102-promises.md +++ b/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/102-promises.md @@ -15,4 +15,3 @@ Visit the following resources to learn more: - [Official Website](https://www.promisejs.org/) - [Official Website](https://www.freecodecamp.org/news/javascript-promises-for-beginners/) - [Asynchronous JavaScript - Promises](https://www.youtube.com/watch?v=a_8nrslImo4/) - diff --git a/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/106-set-interval.md b/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/106-set-interval.md index 6c68c8922..ca1bbb410 100644 --- a/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/106-set-interval.md +++ b/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/106-set-interval.md @@ -1,6 +1,6 @@ # setInterval -The `setInterval()` method helps us to repeatedly execute a function after a fixed delay. It returns a unique interval ID which can later be used by the `clearInterval()` method, which stops further repeated execution of the function. +The `setInterval()` method helps us to repeatedly execute a function after a fixed delay. It returns a unique interval ID which can later be used by the `clearInterval()` method, which stops further repeated execution of the function. `setInterval()` is similar to setTimeout, with a difference. Instead of running the callback function once, it will run it forever, at the specific time interval you specify (in milliseconds): diff --git a/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/102-process-cwd.md b/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/102-process-cwd.md index 69c0ef71d..692502a35 100644 --- a/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/102-process-cwd.md +++ b/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/102-process-cwd.md @@ -5,4 +5,4 @@ The `process.cwd()` method returns the current working directory of the Node.js Visit the following resources to learn more: - [Official Website](https://nodejs.org/api/process.html#processcwd) -- [Whats the difference between process.cwd() vs __dirname?](https://stackoverflow.com/questions/9874382/whats-the-difference-between-process-cwd-vs-dirname) \ No newline at end of file +- [Whats the difference between process.cwd() vs \_\_dirname?](https://stackoverflow.com/questions/9874382/whats-the-difference-between-process-cwd-vs-dirname) diff --git a/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/103-glob.md b/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/103-glob.md index 59bb99262..c8329177f 100644 --- a/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/103-glob.md +++ b/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/103-glob.md @@ -1,6 +1,6 @@ # Glob -The glob pattern is most commonly used to specify filenames, called wildcard characters, and strings, called wildcard matching. +The glob pattern is most commonly used to specify filenames, called wildcard characters, and strings, called wildcard matching. Visit the following resources to learn more: diff --git a/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/107-dirname.md b/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/107-dirname.md index 8686e7d14..ff497124d 100644 --- a/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/107-dirname.md +++ b/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/107-dirname.md @@ -1,8 +1,8 @@ -# __dirname +# \_\_dirname The `__dirname` in a node script returns the path of the folder where the current JavaScript file resides. `__filename` and `__dirname` are used to get the filename and directory name of the currently executing file. Visit the following resources to learn more: - [Official Website](https://nodejs.org/docs/latest/api/modules.html#__dirname) -- [How to use __dirname](https://www.digitalocean.com/community/tutorials/nodejs-how-to-use__dirname) \ No newline at end of file +- [How to use \_\_dirname](https://www.digitalocean.com/community/tutorials/nodejs-how-to-use__dirname) diff --git a/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/108-filename.md b/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/108-filename.md index b3df6a1f1..104d874af 100644 --- a/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/108-filename.md +++ b/src/data/roadmaps/nodejs/content/105-nodejs-working-with-files/108-filename.md @@ -1,7 +1,7 @@ -# __filename +# \_\_filename The `__filename` in Node.js returns the filename of the executed code. It gives the absolute path of the code file. The following approach covers implementing `__filename` in the Node.js project. Visit the following resources to learn more: -- [Official Docs](https://nodejs.org/docs/latest/api/modules.html#__filename) \ No newline at end of file +- [Official Docs](https://nodejs.org/docs/latest/api/modules.html#__filename) diff --git a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/101-printing-output/100-process-stdout.md b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/101-printing-output/100-process-stdout.md index 44fa38cb9..6b66bb758 100644 --- a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/101-printing-output/100-process-stdout.md +++ b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/101-printing-output/100-process-stdout.md @@ -1,5 +1,6 @@ # Process stdout -The process.stdout property is an inbuilt application programming interface of the process module which is used to send data out of our program. A Writable Stream to stdout. It implements a write() method. + +The process.stdout property is an inbuilt application programming interface of the process module which is used to send data out of our program. A Writable Stream to stdout. It implements a write() method. Visit the following resources to learn more: diff --git a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/101-printing-output/index.md b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/101-printing-output/index.md index 4b6d5a0aa..4c34eafd1 100644 --- a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/101-printing-output/index.md +++ b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/101-printing-output/index.md @@ -1 +1 @@ -# Printing output \ No newline at end of file +# Printing output diff --git a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/103-command-line-args/index.md b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/103-command-line-args/index.md index ffa6a5b03..d64895285 100644 --- a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/103-command-line-args/index.md +++ b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/103-command-line-args/index.md @@ -1 +1 @@ -# Command line args \ No newline at end of file +# Command line args diff --git a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/104-environment-variables/index.md b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/104-environment-variables/index.md index 3cc69f463..41d0853b7 100644 --- a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/104-environment-variables/index.md +++ b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/104-environment-variables/index.md @@ -2,4 +2,4 @@ Visit the following resources to learn more: -- [Reading Environment Variables From Node.js](https://www.geeksforgeeks.org/reading-environment-variables-from-node-js/) \ No newline at end of file +- [Reading Environment Variables From Node.js](https://www.geeksforgeeks.org/reading-environment-variables-from-node-js/) diff --git a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/index.md b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/index.md index fda7c1fef..e0a98eab4 100644 --- a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/index.md +++ b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/index.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Intro To CLI Applications](https://learn.co/lessons/intro-to-cli-applications) - [Build a Command Line Application with Node.js](https://developer.okta.com/blog/2019/06/18/command-line-app-with-nodejs) -- [ 5-Minute Node.js CLI Project](https://www.youtube.com/watch?v=_oHByo8tiEY) \ No newline at end of file +- [ 5-Minute Node.js CLI Project](https://www.youtube.com/watch?v=_oHByo8tiEY) diff --git a/src/data/roadmaps/nodejs/content/107-nodejs-apis/107-api-calls-http.md b/src/data/roadmaps/nodejs/content/107-nodejs-apis/107-api-calls-http.md index c31f049a4..c7f311441 100644 --- a/src/data/roadmaps/nodejs/content/107-nodejs-apis/107-api-calls-http.md +++ b/src/data/roadmaps/nodejs/content/107-nodejs-apis/107-api-calls-http.md @@ -7,6 +7,6 @@ You can make API calls using the `http` module in Node.js as well. Here are the Visit the following resources to learn more: -* [Node.js `http.get()` documentaion](https://nodejs.org/docs/latest-v16.x/api/http.html#httpgeturl-options-callback) -* [Node `http.request()` documentaion](https://nodejs.org/docs/latest-v16.x/api/http.html#httprequesturl-options-callback) -* [How To Create an HTTP Client with Core HTTP in Node.js](https://www.digitalocean.com/community/tutorials/how-to-create-an-http-client-with-core-http-in-node-js) \ No newline at end of file +- [Node.js `http.get()` documentaion](https://nodejs.org/docs/latest-v16.x/api/http.html#httpgeturl-options-callback) +- [Node `http.request()` documentaion](https://nodejs.org/docs/latest-v16.x/api/http.html#httprequesturl-options-callback) +- [How To Create an HTTP Client with Core HTTP in Node.js](https://www.digitalocean.com/community/tutorials/how-to-create-an-http-client-with-core-http-in-node-js) diff --git a/src/data/roadmaps/nodejs/content/107-nodejs-apis/110-adonis-js.md b/src/data/roadmaps/nodejs/content/107-nodejs-apis/110-adonis-js.md index d68115d2f..2eb200c95 100644 --- a/src/data/roadmaps/nodejs/content/107-nodejs-apis/110-adonis-js.md +++ b/src/data/roadmaps/nodejs/content/107-nodejs-apis/110-adonis-js.md @@ -1,6 +1,6 @@ # AdonisJS -AdonisJS is a Node.js web framework focused on providing the best way to create a web app or an API server, inspired by Laravel. +AdonisJS is a Node.js web framework focused on providing the best way to create a web app or an API server, inspired by Laravel. Visit the following resources to learn more: diff --git a/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/102-sequelize.md b/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/102-sequelize.md index 150ddb4c3..9a4fc3c05 100644 --- a/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/102-sequelize.md +++ b/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/102-sequelize.md @@ -3,6 +3,7 @@ Sequelize is an easy-to-use and promise-based Node.js ORM tool for Postgres, MySQL, MariaDB, SQLite, DB2, Microsoft SQL Server, and Snowflake. It features solid transaction support, relations, eager and lazy loading, read replication and more. ## What is an ORM ? + An ORM is known as Object Relational Mapper. This is a tool or a level of abstraction which maps(converts) data in a relational database into programmatic objects that can be manipulated by a programmer using a programming language(usually an OOP language). ORMs solely exist to map the details between two data sources which due to a mismatch cannot coexist together. Visit the following resources to learn more: diff --git a/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/104-native-drivers.md b/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/104-native-drivers.md index 8684e3387..c51a65caa 100644 --- a/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/104-native-drivers.md +++ b/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/104-native-drivers.md @@ -1,16 +1,16 @@ -# Native drivers - -NativeDriver is an implementation of the WebDriver API which drives the UI of a native application rather than a web application. It extends the WebDriver API in a few key places, and re-interprets the existing API for native applications. - -- MySQL: - - [mysql](https://www.npmjs.com/package/mysql) - - [mysql2](https://www.npmjs.com/package/mysql2) -- MariaDB: - - [mariadb](https://www.npmjs.com/package/mariadb) -- PostgreSQL: - - [pg](https://www.npmjs.com/package/pg) -- Microsoft SQL Server: - - [tedious](https://www.npmjs.com/package/tedious) - - [mssql](https://www.npmjs.com/package/mssql) -- Oracle: - - [oracledb](https://www.npmjs.com/package/oracledb) +# Native drivers + +NativeDriver is an implementation of the WebDriver API which drives the UI of a native application rather than a web application. It extends the WebDriver API in a few key places, and re-interprets the existing API for native applications. + +- MySQL: + - [mysql](https://www.npmjs.com/package/mysql) + - [mysql2](https://www.npmjs.com/package/mysql2) +- MariaDB: + - [mariadb](https://www.npmjs.com/package/mariadb) +- PostgreSQL: + - [pg](https://www.npmjs.com/package/pg) +- Microsoft SQL Server: + - [tedious](https://www.npmjs.com/package/tedious) + - [mssql](https://www.npmjs.com/package/mssql) +- Oracle: + - [oracledb](https://www.npmjs.com/package/oracledb) diff --git a/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/index.md b/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/index.md index ce2eb39c2..ab8b6be5a 100644 --- a/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/index.md +++ b/src/data/roadmaps/nodejs/content/110-nodejs-databases/100-relational/index.md @@ -1,3 +1,3 @@ # Relational -A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relational database systems are equipped with the option of using the SQL (Structured Query Language) for querying and maintaining the database. \ No newline at end of file +A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relational database systems are equipped with the option of using the SQL (Structured Query Language) for querying and maintaining the database. diff --git a/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/101-prisma.md b/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/101-prisma.md index 82da0006f..47a8ca5f0 100644 --- a/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/101-prisma.md +++ b/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/101-prisma.md @@ -2,7 +2,6 @@ Prisma is an open source next-generation ORM in the TypeScript ecosystem. It offer a dedicated API for relation filters. It provide an abstraction layer that makes you more productive compared to writing SQL. Prisma currently supports `PostgreSQL`, `MySQL`, `SQL Server`, `SQLite`, `MongoDB` and `CockroachDB`. - Visit the following resources to learn more: - [Prisma Website](https://www.prisma.io/) diff --git a/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/102-native-drivers.md b/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/102-native-drivers.md index 9fc283e98..53d4bfccf 100644 --- a/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/102-native-drivers.md +++ b/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/102-native-drivers.md @@ -1,3 +1,3 @@ # Native Drivers -Another way to connect to different databases in Node.js is to use the official native drivers provided by the database. For example, here is the [list of drivers by MongoDB](https://www.mongodb.com/docs/drivers/) \ No newline at end of file +Another way to connect to different databases in Node.js is to use the official native drivers provided by the database. For example, here is the [list of drivers by MongoDB](https://www.mongodb.com/docs/drivers/) diff --git a/src/data/roadmaps/nodejs/content/111-nodejs-testing/100-jest.md b/src/data/roadmaps/nodejs/content/111-nodejs-testing/100-jest.md index fb6abe5d1..9a0564a44 100644 --- a/src/data/roadmaps/nodejs/content/111-nodejs-testing/100-jest.md +++ b/src/data/roadmaps/nodejs/content/111-nodejs-testing/100-jest.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Jest Website](https://jestjs.io) - [Jest Documentation](https://jestjs.io/docs/getting-started) - diff --git a/src/data/roadmaps/nodejs/content/111-nodejs-testing/101-mocha.md b/src/data/roadmaps/nodejs/content/111-nodejs-testing/101-mocha.md index 6c7352eee..18b7cbd77 100644 --- a/src/data/roadmaps/nodejs/content/111-nodejs-testing/101-mocha.md +++ b/src/data/roadmaps/nodejs/content/111-nodejs-testing/101-mocha.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Official Website](https://www.npmjs.com/package/mocha) - [Mocha Documentation](https://mochajs.org/) -- [Mocha Tutorial](https://youtube.com/playlist?list=PLgbtO1Bcz4C-vU0JLfDBsZGbSUdNX4mQ8) \ No newline at end of file +- [Mocha Tutorial](https://youtube.com/playlist?list=PLgbtO1Bcz4C-vU0JLfDBsZGbSUdNX4mQ8) diff --git a/src/data/roadmaps/nodejs/content/111-nodejs-testing/index.md b/src/data/roadmaps/nodejs/content/111-nodejs-testing/index.md index c706ef44a..f6bba36f1 100644 --- a/src/data/roadmaps/nodejs/content/111-nodejs-testing/index.md +++ b/src/data/roadmaps/nodejs/content/111-nodejs-testing/index.md @@ -6,4 +6,4 @@ The two most common testing approaches are unit testing and end-to-end testing. Visit the following resources to learn more: -- [Differences between end-to-end testing and unit testing](https://www.geeksforgeeks.org/difference-between-end-to-end-testing-and-unit-testing/) \ No newline at end of file +- [Differences between end-to-end testing and unit testing](https://www.geeksforgeeks.org/difference-between-end-to-end-testing-and-unit-testing/) diff --git a/src/data/roadmaps/nodejs/content/112-nodejs-logging/101-winston.md b/src/data/roadmaps/nodejs/content/112-nodejs-logging/101-winston.md index 92fed2aa0..da4a3c1ed 100644 --- a/src/data/roadmaps/nodejs/content/112-nodejs-logging/101-winston.md +++ b/src/data/roadmaps/nodejs/content/112-nodejs-logging/101-winston.md @@ -2,7 +2,6 @@ winston is designed to be a simple and universal logging library with support for multiple transports. A transport is essentially a storage device for your logs. Each winston logger can have multiple transports configured at different levels. For example, one may want error logs to be stored in a persistent remote location (like a database), but all logs output to the console or a local file. - Visit the following resources to learn more: - [winston Website](https://github.com/winstonjs/winston) diff --git a/src/data/roadmaps/nodejs/content/113-nodejs-keep-app-running-prod/101-forever.md b/src/data/roadmaps/nodejs/content/113-nodejs-keep-app-running-prod/101-forever.md index 040864c91..723688afb 100644 --- a/src/data/roadmaps/nodejs/content/113-nodejs-keep-app-running-prod/101-forever.md +++ b/src/data/roadmaps/nodejs/content/113-nodejs-keep-app-running-prod/101-forever.md @@ -2,7 +2,6 @@ Forever is a node.js package for ensuring that a given script runs continuously (i.e. forever) even when the server crash/stops. A CLI tool for the production environment to manage the Node applications and their processes. - Visit the following resources to learn more: - [Forever package documentation](https://www.npmjs.com/package/forever) diff --git a/src/data/roadmaps/nodejs/content/113-nodejs-keep-app-running-prod/102-nohup.md b/src/data/roadmaps/nodejs/content/113-nodejs-keep-app-running-prod/102-nohup.md index 5e0e64caf..62731b2aa 100644 --- a/src/data/roadmaps/nodejs/content/113-nodejs-keep-app-running-prod/102-nohup.md +++ b/src/data/roadmaps/nodejs/content/113-nodejs-keep-app-running-prod/102-nohup.md @@ -2,7 +2,6 @@ Nohup, short for no hang up is a command in Linux systems that keep processes running, will ignore the SIGHUP signal even after exiting the shell or terminal. - Visit the following resources to learn more: - [Nohup command](https://www.digitalocean.com/community/tutorials/nohup-command-in-linux) diff --git a/src/data/roadmaps/nodejs/content/114-nodejs-threads/101-cluster.md b/src/data/roadmaps/nodejs/content/114-nodejs-threads/101-cluster.md index 9c632c208..5f95052e9 100644 --- a/src/data/roadmaps/nodejs/content/114-nodejs-threads/101-cluster.md +++ b/src/data/roadmaps/nodejs/content/114-nodejs-threads/101-cluster.md @@ -1,7 +1,7 @@ # Cluster - The Cluster module allows you to easily create child processes that each runs simultaneously on their own single thread, to handle workloads among their application threads. +The Cluster module allows you to easily create child processes that each runs simultaneously on their own single thread, to handle workloads among their application threads. Visit the following resources to learn more: -- [Cluster Docs](https://nodejs.org/api/cluster.html#cluster) \ No newline at end of file +- [Cluster Docs](https://nodejs.org/api/cluster.html#cluster) diff --git a/src/data/roadmaps/nodejs/content/114-nodejs-threads/102-worker-threads.md b/src/data/roadmaps/nodejs/content/114-nodejs-threads/102-worker-threads.md index 54dec2682..a226fbb42 100644 --- a/src/data/roadmaps/nodejs/content/114-nodejs-threads/102-worker-threads.md +++ b/src/data/roadmaps/nodejs/content/114-nodejs-threads/102-worker-threads.md @@ -6,4 +6,3 @@ With worker threads, we can achieve a much efficient application without creatin Visit the following resources to learn more: - [Worker Threads Docs](https://nodejs.org/api/worker_threads.html#worker-threads) - diff --git a/src/data/roadmaps/nodejs/content/114-nodejs-threads/index.md b/src/data/roadmaps/nodejs/content/114-nodejs-threads/index.md index 7ecbf5fcb..8c1fcde80 100644 --- a/src/data/roadmaps/nodejs/content/114-nodejs-threads/index.md +++ b/src/data/roadmaps/nodejs/content/114-nodejs-threads/index.md @@ -5,4 +5,4 @@ Taking note of nowadays multicore system single threading is very memory efficie Visit the following resources to learn more: -- [Single Thread vs Child Process vs Worker Threads vs Clutster in Node.js](https://alvinlal.netlify.app/blog/single-thread-vs-child-process-vs-worker-threads-vs-cluster-in-nodejs) \ No newline at end of file +- [Single Thread vs Child Process vs Worker Threads vs Clutster in Node.js](https://alvinlal.netlify.app/blog/single-thread-vs-child-process-vs-worker-threads-vs-cluster-in-nodejs) diff --git a/src/data/roadmaps/nodejs/content/116-nodejs-more-debugging/index.md b/src/data/roadmaps/nodejs/content/116-nodejs-more-debugging/index.md index 11aed89ec..e6f650142 100644 --- a/src/data/roadmaps/nodejs/content/116-nodejs-more-debugging/index.md +++ b/src/data/roadmaps/nodejs/content/116-nodejs-more-debugging/index.md @@ -3,6 +3,7 @@ Debugging is a concept to identify and remove errors from software applications. Here, we will learn about the technique to debug a Node.js application. ## Why not to use console.log() for debugging? + Using `console.log` to debug the code generally dives into an infinite loop of “stopping the app and adding a console.log, and start the app again” operations. Besides slowing down the development of the app, it also makes the writing dirty and creates unnecessary code. Finally, trying to log out variables alongside with the noise of other potential logging operations, may make the process of debugging difficult when attempting to find the values you are debugging. Visit the following resources to learn more: diff --git a/src/data/roadmaps/nodejs/content/117-nodejs-common-modules/100-builtin-modules.md b/src/data/roadmaps/nodejs/content/117-nodejs-common-modules/100-builtin-modules.md index 777fba225..37ce1a1fe 100644 --- a/src/data/roadmaps/nodejs/content/117-nodejs-common-modules/100-builtin-modules.md +++ b/src/data/roadmaps/nodejs/content/117-nodejs-common-modules/100-builtin-modules.md @@ -21,7 +21,7 @@ Built-in modules are already installed with `Node.js`, so you don't need to inst - **child_processes**: provides the ability to spawn subprocesses. - **REPL**: provides a Read-Eval-Print-Loop (REPL) implementation that is available both as a standalone program or includible in other applications. - **readline**: provides an interface for reading data from a Readable stream one line at a time. -- **util**: supports the needs of Node.js internal APIs. +- **util**: supports the needs of Node.js internal APIs. - **querystring**: provides utilities for parsing and formatting URL query strings. - **string_decoder**: provides an API for decoding Buffer objects into strings. - **tls**: provides an implementation of the Transport Layer Security (TLS) and Secure Socket Layer (SSL) protocols. diff --git a/src/data/roadmaps/nodejs/nodejs.md b/src/data/roadmaps/nodejs/nodejs.md index 3b6c39b86..ed68ffc9a 100644 --- a/src/data/roadmaps/nodejs/nodejs.md +++ b/src/data/roadmaps/nodejs/nodejs.md @@ -1,94 +1,93 @@ --- -jsonUrl: "/jsons/roadmaps/nodejs.json" -pdfUrl: "/pdfs/roadmaps/nodejs.pdf" +jsonUrl: '/jsons/roadmaps/nodejs.json' +pdfUrl: '/pdfs/roadmaps/nodejs.pdf' order: 6 -briefTitle: "Node.js" -briefDescription: "Step by step guide to becoming a Node.js developer in 2023" -title: "Node.js Developer" -description: "Step by step guide to becoming a modern Node.js developer in 2023" +briefTitle: 'Node.js' +briefDescription: 'Step by step guide to becoming a Node.js developer in 2023' +title: 'Node.js Developer' +description: 'Step by step guide to becoming a modern Node.js developer in 2023' isNew: false hasTopics: true dimensions: width: 968 height: 2474.06 sponsor: - url: "https://bit.ly/3YYcqdt" - title: "Free eBook" - imageUrl: "https://i.imgur.com/RCbFXOY.png" - description: "Learn how to find a GraphQL architecture that scales with this free eBook from Apollo" + url: 'https://bit.ly/3YYcqdt' + title: 'Free eBook' + imageUrl: 'https://i.imgur.com/RCbFXOY.png' + description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' event: - category: "SponsorClick" - action: "Apollo Redirect" - label: "Node.js / Apollo Link" + category: 'SponsorClick' + action: 'Apollo Redirect' + label: 'Node.js / Apollo Link' schema: - headline: "Node.js Roadmap" - description: "Learn Node.js with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/nodejs.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Node.js Roadmap' + description: 'Learn Node.js with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/nodejs.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Node.js Developer Roadmap: Learn to become a modern node.js developer" - description: "Learn to become a modern node.js developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern node.js development." + title: 'Node.js Developer Roadmap: Learn to become a modern node.js developer' + description: 'Learn to become a modern node.js developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern node.js development.' keywords: - - "node.js roadmap 2023" - - "nodejs roadmap 2023" - - "node.js roadmap 2023" - - "nodejs roadmap 2023" - - "node.js developer roadmap 2023" - - "nodejs developer roadmap 2023" - - "guide to becoming a developer" - - "guide to becoming a node.js developer" - - "guid to becoming a node.js developer" - - "node.js developer" - - "nodejs developer" - - "node.js engineer" - - "nodejs engineer" - - "node.js skills" - - "nodejs skills" - - "node.js development" - - "nodejs development" - - "node.js developer" - - "nodejs developer" - - "node.js development skills" - - "nodejs development skills" - - "node.js development skills test" - - "nodejs development skills test" - - "node.js roadmap" - - "nodejs roadmap" - - "node.js engineer roadmap" - - "nodejs engineer roadmap" - - "node.js developer roadmap" - - "nodejs developer roadmap" - - "become a node.js developer" - - "become a node.js developer" - - "node.js developer career path" - - "nodejs developer career path" - - "node.js developer" - - "nodejs developer" - - "modern node.js developer" - - "modern node.js developer" - - "node developer" - - "skills for node.js development" - - "skills for nodejs development" - - "learn node.js development" - - "lear node.js development" - - "node.js developer quiz" - - "nodejs developer quiz" - - "node.js developer interview questions" - - "nodejs developer interview questions" + - 'node.js roadmap 2023' + - 'nodejs roadmap 2023' + - 'node.js roadmap 2023' + - 'nodejs roadmap 2023' + - 'node.js developer roadmap 2023' + - 'nodejs developer roadmap 2023' + - 'guide to becoming a developer' + - 'guide to becoming a node.js developer' + - 'guid to becoming a node.js developer' + - 'node.js developer' + - 'nodejs developer' + - 'node.js engineer' + - 'nodejs engineer' + - 'node.js skills' + - 'nodejs skills' + - 'node.js development' + - 'nodejs development' + - 'node.js developer' + - 'nodejs developer' + - 'node.js development skills' + - 'nodejs development skills' + - 'node.js development skills test' + - 'nodejs development skills test' + - 'node.js roadmap' + - 'nodejs roadmap' + - 'node.js engineer roadmap' + - 'nodejs engineer roadmap' + - 'node.js developer roadmap' + - 'nodejs developer roadmap' + - 'become a node.js developer' + - 'become a node.js developer' + - 'node.js developer career path' + - 'nodejs developer career path' + - 'node.js developer' + - 'nodejs developer' + - 'modern node.js developer' + - 'modern node.js developer' + - 'node developer' + - 'skills for node.js development' + - 'skills for nodejs development' + - 'learn node.js development' + - 'lear node.js development' + - 'node.js developer quiz' + - 'nodejs developer quiz' + - 'node.js developer interview questions' + - 'nodejs developer interview questions' relatedRoadmaps: - - "javascript" - - "backend" - - "typescript" - - "system-design" - - "graphql" - - "frontend" + - 'javascript' + - 'backend' + - 'typescript' + - 'system-design' + - 'graphql' + - 'frontend' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/postgresql-dba/postgresql-dba.md b/src/data/roadmaps/postgresql-dba/postgresql-dba.md index 44a574d62..157590b4f 100644 --- a/src/data/roadmaps/postgresql-dba/postgresql-dba.md +++ b/src/data/roadmaps/postgresql-dba/postgresql-dba.md @@ -1,59 +1,61 @@ --- -pdfUrl: "/pdfs/roadmaps/postgresql-dba.pdf" +pdfUrl: '/pdfs/roadmaps/postgresql-dba.pdf' order: 5 -briefTitle: "DBA" -briefDescription: "Step by step guide to become a PostgreSQL DBA in 2023" -title: "PostgreSQL DBA" -description: "Step by step guide to becoming a modern PostgreSQL DB Administrator in 2023" +briefTitle: 'DBA' +briefDescription: 'Step by step guide to become a PostgreSQL DBA in 2023' +title: 'PostgreSQL DBA' +description: 'Step by step guide to becoming a modern PostgreSQL DB Administrator in 2023' hasTopics: false seo: - title: "DBA Roadmap: Learn to become a database administrator with PostgreSQL" - description: "Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap." + title: 'DBA Roadmap: Learn to become a database administrator with PostgreSQL' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a database administrator" - - "guide to becoming a DBA" - - "dba roadmap" - - "db administrator roadmap" - - "database administrator roadmap" - - "postgresql roadmap" - - "dba skills" - - "db administrator skills" - - "become dba" - - "postgresql skills" - - "modern dba skills" - - "dba skills test" - - "skills for dba" - - "skills for database administrator" - - "learn dba" - - "what is dba" - - "database administrator quiz" - - "dba interview questions" + - 'guide to becoming a database administrator' + - 'guide to becoming a DBA' + - 'dba roadmap' + - 'db administrator roadmap' + - 'database administrator roadmap' + - 'postgresql roadmap' + - 'dba skills' + - 'db administrator skills' + - 'become dba' + - 'postgresql skills' + - 'modern dba skills' + - 'dba skills test' + - 'skills for dba' + - 'skills for database administrator' + - 'learn dba' + - 'what is dba' + - 'database administrator quiz' + - 'dba interview questions' relatedRoadmaps: - - "backend" - - "devops" + - 'backend' + - 'devops' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- The intent of this guide is to give you an idea about the DBA landscape and to help guide your learning if you are confused. The roadmap is highly opinionated — neither, knowing everything listed in the roadmap, nor the order of items given in the roadmap is required to be followed in order to be a DBA. ## Learn basic RDBMS terms and concepts + Get basic understanding of Postgres key terms and basic RDBMS concepts. - **Object model**: data types, columns, rows, tables, schemas, databases, queries. - **Relational model**: domains, attributes, tuples, relations, constraints, NULL. - **Databases high-level concepts**: ACID, MVCC, transactions, write-ahead log, query processing. - **Links**: - - [Postgres Glossary](https://www.postgresql.org/docs/13/glossary.html) + - [Postgres Glossary](https://www.postgresql.org/docs/13/glossary.html) - SQL and Relational Theory - Christopher J. Date, 2009 - Database Design and Relational Theory - Christopher J. Date, 2012 ## Learn how to install and run PostgreSQL + Get practical skills of how to set up and run Postgres to get a working environment for further learning. - Using package managers (APT, YUM, etc.) @@ -63,23 +65,26 @@ Get practical skills of how to set up and run Postgres to get a working environm - Connect to Postgres using `psql`. - Deploy database service in cloud environment (AWS, GCE, Azure, Heroku, DigitalOcean, etc...). - **Links**: - - [Official download and install instructions](https://www.postgresql.org/download/) - - [Official Docker images](https://hub.docker.com/_/postgres) + - [Official download and install instructions](https://www.postgresql.org/download/) + - [Official Docker images](https://hub.docker.com/_/postgres) ## Learn SQL concepts + Get practical skills of how to create and manipulate database objects and how to execute queries using `psql` client. + - Understand basic data types. - **DML queries**: querying data, modifying data, filtering data, joining tables. - **Advanced topics**: transactions, CTE, subqueries, lateral join, grouping, set operations. - **DDL queries**: managing tables and schemas (create, alter, drop). - Import and export data using `COPY`. - **Links**: - - [DB Fiddle](https://www.db-fiddle.com/) - - [PostgreSQL Tutorial](https://www.postgresqltutorial.com/) - - [PostgreSQL SQL Getting Started](https://www.postgresql.org/docs/current/tutorial-sql.html) + - [DB Fiddle](https://www.db-fiddle.com/) + - [PostgreSQL Tutorial](https://www.postgresqltutorial.com/) + - [PostgreSQL SQL Getting Started](https://www.postgresql.org/docs/current/tutorial-sql.html) - [The SQL Language](https://www.postgresql.org/docs/current/sql.html) ## Learn how to configure Postgres + Get understanding of the main aspects of how Postgres could be configured. Deep understanding of Postgres internals is not yet necessary here. - postgresql.conf: @@ -93,19 +98,23 @@ Get understanding of the main aspects of how Postgres could be configured. Deep - Adding extra extensions - ...keep exploring other configuration options - **Links**: - - [Postgresqlco.nf](http://postgresqlco.nf/) + - [Postgresqlco.nf](http://postgresqlco.nf/) ## Learn Postgres security concepts + Get understanding about basic security concepts and common ways of how to deploy secure configurations. + - Authentication models, roles, pg_hba.conf, SSL settings. - **Objects privileges**: grant/revoke, default privileges. - **Advanced topics** - row-level security, selinux. - **Links**: - - [Client authentication](https://www.postgresql.org/docs/current/client-authentication.html) + - [Client authentication](https://www.postgresql.org/docs/current/client-authentication.html) - [Roles and users managements](https://www.postgresql.org/docs/current/user-manag.html) ## Develop infrastructure DBA skills + Get practical skills of how to deploy, extend, maintain and support Postgres installations and 3rd-party Postgres ecosystem software. + - **Replication**: streaming replication, logical replication - **Backup/recovery tools**: - Built-in: `pg_dump`, `pg_dumpall`, `pg_restore`, `pg_basebackup` @@ -126,12 +135,16 @@ Get practical skills of how to deploy, extend, maintain and support Postgres ins - Resource usage and provisioning, capacity planning ## Learn how to automate routines + Get practical skills, learn automation tools and automate existing routine tasks. + - Automation using shell scripts or any other favourite language (`Bash`, `Python`, `Perl`, etc) - Configuration management: `Ansible`, `Salt`, `Chef`, `Puppet` ## Develop application DBA skills + Learn theory and get practical skills of how applications should work with Postgres + - **Migrations**: - practical patterns and antipatterns - tools: `liquibase`, `sqitch`, `Bytebase`, language-specific tools @@ -145,17 +158,19 @@ Learn theory and get practical skills of how applications should work with Postg - The Art of PostgreSQL - Dimitri Fontaine, 2020 ## Learn Postgres advanced topics + Here is important to continuously extend and develop existing knowledge about Postgres. + - **Low level internals**: - Processes and memory architecture - Vacuum processing - Buffer management - Lock management - - [Physical storage and file layout](https://www.postgresql.org/docs/current/storage.html) - - [System catalog](https://www.postgresql.org/docs/current/catalogs.html) + - [Physical storage and file layout](https://www.postgresql.org/docs/current/storage.html) + - [System catalog](https://www.postgresql.org/docs/current/catalogs.html) - **Fine-grained tuning**: - Per-user, per-database settings - - [Storage parameters](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS) + - [Storage parameters](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS) - Workload-dependant tuning: OLTP, OLAP, HTAP - **Advanced SQL topics**: - PL/pgSQL, procedures and functions, triggers @@ -166,7 +181,9 @@ Here is important to continuously extend and develop existing knowledge about Po - [PL/pgSQL Guide](https://www.postgresql.org/docs/current/plpgsql.html) ## Learn Postgres troubleshooting techniques + Get basic understanding about troubleshooting tools and get practical skills of how to detect and resolve problems. + - **Operating system tools** - `top` (`htop`, `atop`) - `sysstat` @@ -175,7 +192,7 @@ Get basic understanding about troubleshooting tools and get practical skills of - `pg_stat_activity` - `pg_stat_statements` - **Postgres tools** - - `pgcenter` - *personal recommendation* + - `pgcenter` - _personal recommendation_ - **Query analyzing**: - [EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html) - [Depesz](https://explain.depesz.com/) online EXPLAIN visualization tool @@ -191,23 +208,29 @@ Get basic understanding about troubleshooting tools and get practical skills of - [USE Method](http://www.brendangregg.com/usemethod.html) ## Learn SQL optimization techniques + Get understanding and practical skills of how to optimize SQL queries. + - **Indexes, and their use cases**: B-tree, Hash, GiST, SP-GiST, GIN, BRIN - SQL queries patterns and anti-patterns - SQL schema design patterns and anti-patterns - **Links**: - [Use the Index, Luke](https://use-the-index-luke.com/) - a Guide to Database Performance for Developers - **Books**: - - SQL Antipatterns: Avoiding the Pitfalls of Database Programming - Bill Karwin, 2010 + - SQL Antipatterns: Avoiding the Pitfalls of Database Programming - Bill Karwin, 2010 ## Develop architect skills + Get deeper understanding of Postgres use cases and where Postgres is suitable and where is not. + - **Postgres forks and extensions**: `Greenplum`, `Timescaledb`, `Citus`, `Postgres-XL`, `PostGIS` etc. - RDBMS in general, benefits and limitations - Differences between Postgres and other RDBMS and NoSQL databases -## Develop Postgres hacker skills +## Develop Postgres hacker skills + Get involved to Postgres community and contribute to Postgres; be a useful member of Postgres, and the open source community; use personal experience to help other people. + - Daily reading and answering in [mailing lists](https://www.postgresql.org/list/) - pgsql-general - pgsql-admin @@ -215,4 +238,4 @@ Get involved to Postgres community and contribute to Postgres; be a useful membe - pgsql-hackers - pgsql-bugs - Reviewing patches -- Writing patches, attending in [Commitfests](https://commitfest.postgresql.org/) \ No newline at end of file +- Writing patches, attending in [Commitfests](https://commitfest.postgresql.org/) diff --git a/src/data/roadmaps/python/content/100-python-basics/100-basic-syntax.md b/src/data/roadmaps/python/content/100-python-basics/100-basic-syntax.md index 8602147c7..27b90b7aa 100644 --- a/src/data/roadmaps/python/content/100-python-basics/100-basic-syntax.md +++ b/src/data/roadmaps/python/content/100-python-basics/100-basic-syntax.md @@ -8,5 +8,3 @@ Visit the following resources to learn more: - [Python for Beginners - Learn Python in 1 Hour](https://www.youtube.com/watch?v=kqtD5dpn9C8) - [Python Basics](https://www.tutorialspoint.com/python/python_basic_syntax.htm) - [Learn X in Y Minutes / Python](https://learnxinyminutes.com/docs/python/) - - diff --git a/src/data/roadmaps/python/content/100-python-basics/102-conditionals.md b/src/data/roadmaps/python/content/100-python-basics/102-conditionals.md index c974ef597..502f8dece 100644 --- a/src/data/roadmaps/python/content/100-python-basics/102-conditionals.md +++ b/src/data/roadmaps/python/content/100-python-basics/102-conditionals.md @@ -7,5 +7,3 @@ Visit the following resources to learn more: - [Python Conditional Statements: IF…Else, ELIF & Switch Case](https://www.guru99.com/if-loop-python-conditional-structures.html) - [Conditional Statements in Python](https://realpython.com/python-conditional-statements/) - [How to use a match statement in Python](https://learnpython.com/blog/python-match-case-statement/) - - diff --git a/src/data/roadmaps/python/content/100-python-basics/103-typecasting-exceptions.md b/src/data/roadmaps/python/content/100-python-basics/103-typecasting-exceptions.md index 0f48d16a4..95ca986e7 100644 --- a/src/data/roadmaps/python/content/100-python-basics/103-typecasting-exceptions.md +++ b/src/data/roadmaps/python/content/100-python-basics/103-typecasting-exceptions.md @@ -1,4 +1,4 @@ -## Typecasting +## Typecasting The process of converting the value of one data type (integer, string, float, etc.) to another data type is called type conversion. Python has two types of type conversion: Implicit and Explicit. @@ -10,5 +10,3 @@ Visit the following resources to learn more: - [Errors and Exceptions](https://docs.python.org/3/tutorial/errors.html) - [Python Exception Handling](https://www.programiz.com/python-programming/exception-handling) - [Python Try Except](https://www.w3schools.com/python/python_try_except.asp) - - diff --git a/src/data/roadmaps/python/content/100-python-basics/106-string-methods.md b/src/data/roadmaps/python/content/100-python-basics/106-string-methods.md index ef506891a..13c03a857 100644 --- a/src/data/roadmaps/python/content/100-python-basics/106-string-methods.md +++ b/src/data/roadmaps/python/content/100-python-basics/106-string-methods.md @@ -1,11 +1,11 @@ # String Methods Python does not have a character data type, a single character is simply a string with a length of 1. Square bracket can be used to access elements of the string. -There are methods which can be used on a string to best utilize it's wide range of functionalities. +There are methods which can be used on a string to best utilize it's wide range of functionalities. Below Given resources can be utilised to learn more about them. Visit the following resources to learn more: - [Practical String Methods applications](https://www.youtube.com/watch?v=Ctqi5Y4X-jA&t=11s) - [Comprehensive Study of String methods](https://www.w3schools.com/python/python_ref_string.asp) -- [String Slicing in Python](https://www.geeksforgeeks.org/string-slicing-in-python/) \ No newline at end of file +- [String Slicing in Python](https://www.geeksforgeeks.org/string-slicing-in-python/) diff --git a/src/data/roadmaps/python/content/100-python-basics/index.md b/src/data/roadmaps/python/content/100-python-basics/index.md index 3baf08bab..ff1f89a83 100644 --- a/src/data/roadmaps/python/content/100-python-basics/index.md +++ b/src/data/roadmaps/python/content/100-python-basics/index.md @@ -1,11 +1,11 @@ # Python -Python is a high-level, interpreted, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation. Python is dynamically-typed and garbage-collected. +Python is a high-level, interpreted, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation. Python is dynamically-typed and garbage-collected. Visit the following resources to learn more: - [Official Website: Python](https://www.python.org/) - [Tutorial Series: How to Code in Python](https://www.digitalocean.com/community/tutorials/how-to-write-your-first-python-3-program) -- [Python Wikipedia](https://en.wikipedia.org/wiki/Python_(programming_language)) +- [Python Wikipedia]() - [Googles Python Class](https://developers.google.com/edu/python) -- [W3Schools - Python Tutorial](https://www.w3schools.com/python) \ No newline at end of file +- [W3Schools - Python Tutorial](https://www.w3schools.com/python) diff --git a/src/data/roadmaps/python/content/100-python-roadmap-note.md b/src/data/roadmaps/python/content/100-python-roadmap-note.md index e1db1e440..ea11040b8 100644 --- a/src/data/roadmaps/python/content/100-python-roadmap-note.md +++ b/src/data/roadmaps/python/content/100-python-roadmap-note.md @@ -1,4 +1,3 @@ # Note This roadmap specifically covers **Python and the ecosystem** around it. You will notice that it is missing things like version control, databases, software design, architecture and other things that are not directly related to Python; this is intentional. Have a look at the [Backend Roadmap](/backend) for a more comprehensive overview of the backend ecosystem. - diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/100-arrays-linked-lists.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/100-arrays-linked-lists.md index 224273d85..0597a960c 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/100-arrays-linked-lists.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/100-arrays-linked-lists.md @@ -10,7 +10,3 @@ Visit the following resources to learn more: - [Arrays in Python](https://www.edureka.co/blog/arrays-in-python/) - [Array Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=QJNwK2uJyGs) - [Linked List Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=odW9FU8jPRQ) - - - - diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/101-heaps-stacks-queues.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/101-heaps-stacks-queues.md index 03b125b13..582a609a8 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/101-heaps-stacks-queues.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/101-heaps-stacks-queues.md @@ -16,4 +16,3 @@ Visit the following resources to learn more: - [Queue in Python](https://www.geeksforgeeks.org/queue-in-python/) - [Python Stacks, Queues, and Priority Queues in Practice](https://realpython.com/queue-in-python/) - [Heap Implementation in Python](https://www.educative.io/answers/heap-implementation-in-python) - diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/102-hash-tables.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/102-hash-tables.md index ac1564c00..cab7a7418 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/102-hash-tables.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/102-hash-tables.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Hash Table Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=jalSiaIi8j4) - [Hash Tables and Hashmaps in Python](https://www.edureka.co/blog/hash-tables-and-hashmaps-in-python/) - [Build a Hash Table in Python](https://realpython.com/python-hash-table/) - diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/103-binary-search-trees.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/103-binary-search-trees.md index f9578f3e0..74adc67d5 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/103-binary-search-trees.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/103-binary-search-trees.md @@ -7,5 +7,3 @@ Visit the following resources to learn more: - [Tree Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=S2W3SXGPVyU) - [How to Implement Binary Search Tree in Python](https://www.section.io/engineering-education/implementing-binary-search-tree-using-python/) - [Problem Set](https://www.geeksforgeeks.org/binary-search-tree-data-structure/?ref=gcse) - - diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/104-recursion.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/104-recursion.md index fbe127963..790bc1635 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/104-recursion.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/104-recursion.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Recursion in Python](https://www.geeksforgeeks.org/recursion/) - [Recursion in Python: An Introduction](https://realpython.com/python-recursion/) - diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/105-sorting-algorithms.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/105-sorting-algorithms.md index c841f69c0..e159ba2f7 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/105-sorting-algorithms.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/105-sorting-algorithms.md @@ -2,7 +2,7 @@ Sorting refers to arranging data in a particular format. Sorting algorithm specifies the way to arrange data in a particular order. Most common orders are in numerical or lexicographical order. -The importance of sorting lies in the fact that data searching can be optimized to a very high level, if data is stored in a sorted manner. +The importance of sorting lies in the fact that data searching can be optimized to a very high level, if data is stored in a sorted manner. Visit the following resources to learn more: diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/100-methods-dunder.md b/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/100-methods-dunder.md index ea3501130..309478089 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/100-methods-dunder.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/100-methods-dunder.md @@ -2,14 +2,13 @@ A method in python is somewhat similar to a function, except it is associated with object/classes. Methods in python are very similar to functions except for two major differences. -* The method is implicitly used for an object for which it is called. -* The method is accessible to data that is contained within the class. +- The method is implicitly used for an object for which it is called. +- The method is accessible to data that is contained within the class. -Dunder or magic methods in Python are the methods having two prefix and suffix underscores in the method name. Dunder here means “Double Under (Underscores)”. These are commonly used for operator overloading. Few examples for magic methods are: __init__, __add__, __len__, __repr__ etc. +Dunder or magic methods in Python are the methods having two prefix and suffix underscores in the method name. Dunder here means “Double Under (Underscores)”. These are commonly used for operator overloading. Few examples for magic methods are: **init**, **add**, **len**, **repr** etc. Visit the following resources to learn more: - [Method vs Function in Python](https://www.tutorialspoint.com/difference-between-method-and-function-in-python) - [Dunder or magic methods in Python](https://www.geeksforgeeks.org/dunder-magic-methods-python/) - [Python - Magic or Dunder Methods](https://www.tutorialsteacher.com/python/magic-methods-in-python) - diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/101-inheritance.md b/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/101-inheritance.md index 309e5aa5d..b11ca5c92 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/101-inheritance.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/101-inheritance.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Python Inheritance](https://www.w3schools.com/python/python_inheritance.asp) - [Inheritance in Python](https://www.javatpoint.com/inheritance-in-python) - diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/102-classes.md b/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/102-classes.md index 4950f6cef..6ad231f71 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/102-classes.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/102-classes.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Classes in Python](https://docs.python.org/3/tutorial/classes.html) - [Python Classes and Objects](https://www.geeksforgeeks.org/python-classes-and-objects/) - [Python Classes and Objects](https://www.w3schools.com/python/python_classes.asp) - diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/index.md b/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/index.md index c0703ac9b..ceae3fc94 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/index.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/100-oop/index.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Object Oriented Programming in Python](https://realpython.com/python3-object-oriented-programming/) - [Python OOP Concepts](https://www.geeksforgeeks.org/python-oops-concepts/) - [Object Oriented Programming (OOP) In Python - Beginner Crash Course](https://www.youtube.com/watch?v=-pEs-Bss8Wc/) -- [OOP in Python One Shot](https://www.youtube.com/watch?v=Ej_02ICOIgs) \ No newline at end of file +- [OOP in Python One Shot](https://www.youtube.com/watch?v=Ej_02ICOIgs) diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/101-regular-expressions.md b/src/data/roadmaps/python/content/102-python-advanced-topics/101-regular-expressions.md index 1f4b32f88..61dbec6d8 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/101-regular-expressions.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/101-regular-expressions.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Regular Expressions in Python](https://docs.python.org/3/library/re.html) - [Python Regular Expressions](https://developers.google.com/edu/python/regular-expressions) - [Python - Regular Expressions](https://www.tutorialspoint.com/python/python_reg_expressions.htm) - diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/103-lambdas.md b/src/data/roadmaps/python/content/102-python-advanced-topics/103-lambdas.md index babf7ee46..b07464b51 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/103-lambdas.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/103-lambdas.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Python Lambda Functions](https://www.geeksforgeeks.org/python-lambda-anonymous-functions-filter-map-reduce/) - [Lambdas in Python](https://www.w3schools.com/python/python_lambda.asp) - diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/104-iterators.md b/src/data/roadmaps/python/content/102-python-advanced-topics/104-iterators.md index 0d316ba35..e38110072 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/104-iterators.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/104-iterators.md @@ -1,6 +1,6 @@ # Iterators -An iterator is an object that contains a countable number of values. An iterator is an object that can be iterated upon, meaning that you can traverse through all the values. Technically, in Python, an iterator is an object which implements the iterator protocol, which consist of the methods __iter__() and __next__() . +An iterator is an object that contains a countable number of values. An iterator is an object that can be iterated upon, meaning that you can traverse through all the values. Technically, in Python, an iterator is an object which implements the iterator protocol, which consist of the methods **iter**() and **next**() . Visit the following resources to learn more: diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/105-modules/100-builtin-modules.md b/src/data/roadmaps/python/content/102-python-advanced-topics/105-modules/100-builtin-modules.md index 23e49d7f4..cb7223d60 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/105-modules/100-builtin-modules.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/105-modules/100-builtin-modules.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Python Modules](https://www.digitalocean.com/community/tutorials/python-modules) - [Python - Built-In Modules](https://www.knowledgehut.com/tutorials/python-tutorial/python-built-in-modules) - diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/107-generator-expressions.md b/src/data/roadmaps/python/content/102-python-advanced-topics/107-generator-expressions.md index 7cebddd86..adef6c18d 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/107-generator-expressions.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/107-generator-expressions.md @@ -9,4 +9,3 @@ Visit the following resources to learn more: - [Python Generator Expressions](https://www.pythontutorial.net/advanced-python/python-generator-expressions/) - [List Comprehensions in Python and Generator Expressions](https://djangostars.com/blog/list-comprehensions-and-generator-expressions/) - [Python | Generator Expressions](https://www.geeksforgeeks.org/generator-expressions/) - diff --git a/src/data/roadmaps/python/content/102-python-advanced-topics/108-paradigms.md b/src/data/roadmaps/python/content/102-python-advanced-topics/108-paradigms.md index d0c678328..93f560fa9 100644 --- a/src/data/roadmaps/python/content/102-python-advanced-topics/108-paradigms.md +++ b/src/data/roadmaps/python/content/102-python-advanced-topics/108-paradigms.md @@ -12,4 +12,3 @@ Python's support for multiple paradigms makes it a versatile and flexible langua Visit the following resources to learn more: - [Programming Paradigms in Python](https://www.geeksforgeeks.org/programming-paradigms-in-python/) - diff --git a/src/data/roadmaps/python/content/105-python-package-managers/100-pypi.md b/src/data/roadmaps/python/content/105-python-package-managers/100-pypi.md index f3e53c95a..61c0dac89 100644 --- a/src/data/roadmaps/python/content/105-python-package-managers/100-pypi.md +++ b/src/data/roadmaps/python/content/105-python-package-managers/100-pypi.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [PyPI Official Website](https://pypi.org/) - [Getting Started with Pip and PyPI in Python](https://www.youtube.com/watch?v=bPSfNKvhooA) - [How to Publish an Open-Source Python Package to PyPI](https://realpython.com/pypi-publish-python-package/) - diff --git a/src/data/roadmaps/python/content/105-python-package-managers/101-pip.md b/src/data/roadmaps/python/content/105-python-package-managers/101-pip.md index 32b997aa4..bcd0a093a 100644 --- a/src/data/roadmaps/python/content/105-python-package-managers/101-pip.md +++ b/src/data/roadmaps/python/content/105-python-package-managers/101-pip.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Using Pythons pip to Manage Your Projects Dependencies](https://realpython.com/what-is-pip/) - [Python PIP Introduction](https://www.w3schools.com/python/python_pip.asp) - diff --git a/src/data/roadmaps/python/content/105-python-package-managers/102-conda.md b/src/data/roadmaps/python/content/105-python-package-managers/102-conda.md index f4a188521..ad7dc23f4 100644 --- a/src/data/roadmaps/python/content/105-python-package-managers/102-conda.md +++ b/src/data/roadmaps/python/content/105-python-package-managers/102-conda.md @@ -7,4 +7,3 @@ Conda as a package manager helps you find and install packages. If you need a pa Visit the following resources to learn more: - [Conda Docs](https://docs.conda.io/en/latest/) - diff --git a/src/data/roadmaps/python/content/105-python-package-managers/index.md b/src/data/roadmaps/python/content/105-python-package-managers/index.md index c9a15db4f..92e50117a 100644 --- a/src/data/roadmaps/python/content/105-python-package-managers/index.md +++ b/src/data/roadmaps/python/content/105-python-package-managers/index.md @@ -4,5 +4,5 @@ Package managers allow you to manage the dependencies (external code written by `PyPI` and `Pip` are the most common contenders but here are some other options available as well: - - [**Poetry**](https://python-poetry.org/) : Manages dependencies via isolation - - [**PIPX**](https://github.com/pypa/pipx) : Isolation-based app deployment, so you don't have to affect the system or user PIP libraries. It enables you to try individual python CLI tools without affecting other dependencies. +- [**Poetry**](https://python-poetry.org/) : Manages dependencies via isolation +- [**PIPX**](https://github.com/pypa/pipx) : Isolation-based app deployment, so you don't have to affect the system or user PIP libraries. It enables you to try individual python CLI tools without affecting other dependencies. diff --git a/src/data/roadmaps/python/content/106-python-frameworks/100-synchronous/102-pyramid.md b/src/data/roadmaps/python/content/106-python-frameworks/100-synchronous/102-pyramid.md index 91c437069..d04dfe276 100644 --- a/src/data/roadmaps/python/content/106-python-frameworks/100-synchronous/102-pyramid.md +++ b/src/data/roadmaps/python/content/106-python-frameworks/100-synchronous/102-pyramid.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [Pyramid - Official Website](https://trypyramid.com/) - [Pyramid Documentation](https://docs.pyramid.com/en/latest/) - [Pyramid Framework Introduction](https://www.tutorialspoint.com/python_web_development_libraries/python_web_development_libraries_pyramid_framework.htm) - diff --git a/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/101-aiohttp.md b/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/101-aiohttp.md index 28e0623cf..3d8d06cf9 100644 --- a/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/101-aiohttp.md +++ b/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/101-aiohttp.md @@ -7,6 +7,3 @@ Visit the following resources to learn more: - [Official Docs](https://docs.aiohttp.org/en/stable/) - [Python Asyncio, Requests, Aiohttp | Make faster API Calls](https://www.youtube.com/watch?v=nFn4_nA_yk8) - [Creating a RESTful API with Python and aiohttp](https://tutorialedge.net/python/create-rest-api-python-aiohttp/) - - - diff --git a/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/102-tornado.md b/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/102-tornado.md index 15793cc31..ff5723752 100644 --- a/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/102-tornado.md +++ b/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/102-tornado.md @@ -7,5 +7,3 @@ Visit the following resources to learn more: - [Tornado — Official Website](https://www.tornadoweb.org/) - [A Step-by-Step Tutorial on Python Tornado](https://phrase.com/blog/posts/tornado-web-framework-i18n/) - [Tornado Python Framework](https://www.youtube.com/watch?v=-gJ21qzpieA) - - diff --git a/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/103-sanic.md b/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/103-sanic.md index 49a4a952e..e5cd1e713 100644 --- a/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/103-sanic.md +++ b/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/103-sanic.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Sanic Official Website](https://sanic.dev/en/) - [Introduction to Sanic Web Framework – Python](https://www.geeksforgeeks.org/introduction-to-sanic-web-framework-python/) - diff --git a/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/index.md b/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/index.md index 6a8e594e9..5d5159fea 100644 --- a/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/index.md +++ b/src/data/roadmaps/python/content/106-python-frameworks/101-asynchronous/index.md @@ -1,4 +1,5 @@ # Asynchronous + Asynchronous programming is a type of parallel programming in which a unit of work is allowed to run separately from the primary application thread. When the work is complete, it notifies the main thread about completion or failure of the worker thread. This style is mostly concerned with the asynchronous execution of tasks. Python has several asynchronous frameworks that are used to implement asynchronous programming. diff --git a/src/data/roadmaps/python/content/107-python-testing/101-pytest.md b/src/data/roadmaps/python/content/107-python-testing/101-pytest.md index f7990c77c..34f008a1d 100644 --- a/src/data/roadmaps/python/content/107-python-testing/101-pytest.md +++ b/src/data/roadmaps/python/content/107-python-testing/101-pytest.md @@ -6,5 +6,3 @@ Visit the following resources to learn more: - [Official Docs](https://docs.pytest.org/) - [Pytest Tutorial](https://www.tutorialspoint.com/pytest/index.htm) - - diff --git a/src/data/roadmaps/python/python.md b/src/data/roadmaps/python/python.md index 521e973c6..63a6f3058 100644 --- a/src/data/roadmaps/python/python.md +++ b/src/data/roadmaps/python/python.md @@ -1,58 +1,57 @@ --- -jsonUrl: "/jsons/roadmaps/python.json" -pdfUrl: "/pdfs/roadmaps/python.pdf" +jsonUrl: '/jsons/roadmaps/python.json' +pdfUrl: '/pdfs/roadmaps/python.pdf' order: 7 -briefTitle: "Python" -briefDescription: "Step by step guide to becoming a Python Developer in 2023" -title: "Python Developer" -description: "Step by step guide to becoming a Python developer in 2023" +briefTitle: 'Python' +briefDescription: 'Step by step guide to becoming a Python Developer in 2023' +title: 'Python Developer' +description: 'Step by step guide to becoming a Python developer in 2023' hasTopics: true dimensions: width: 992 height: 1259.03 schema: - headline: "Python Roadmap" - description: "Learn Python with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/python.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Python Roadmap' + description: 'Learn Python with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/python.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' sponsor: - url: "https://developer.fermyon.com/spin/python-components?utm_source=python&utm_medium=banner&utm_campaign=roadmap-sh" - title: "Serverless Python Apps" - imageUrl: "https://i.imgur.com/2ONZopb.jpg" - description: "Go from blinking cursor to deployed serverless Python apps in 66 seconds with Fermyon Cloud." + url: 'https://developer.fermyon.com/spin/python-components?utm_source=python&utm_medium=banner&utm_campaign=roadmap-sh' + title: 'Serverless Python Apps' + imageUrl: 'https://i.imgur.com/2ONZopb.jpg' + description: 'Go from blinking cursor to deployed serverless Python apps in 66 seconds with Fermyon Cloud.' event: - category: "SponsorClick" - action: "Fermyon Redirect" - label: "Python / Fermyon Link" + category: 'SponsorClick' + action: 'Fermyon Redirect' + label: 'Python / Fermyon Link' seo: - title: "Learn to become a modern Python developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for python development. Learn to become a modern Python developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Learn to become a modern Python developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for python development. Learn to become a modern Python developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming an python developer" - - "python developer roadmap" - - "python roadmap" - - "become python developer" - - "python developer skills" - - "python skills test" - - "skills for python development" - - "learn python development" - - "what is python" - - "python quiz" - - "python interview questions" + - 'guide to becoming an python developer' + - 'python developer roadmap' + - 'python roadmap' + - 'become python developer' + - 'python developer skills' + - 'python skills test' + - 'skills for python development' + - 'learn python development' + - 'what is python' + - 'python quiz' + - 'python interview questions' relatedRoadmaps: - - "backend" - - "devops" - - "golang" - - "java" - - "javascript" - - "nodejs" + - 'backend' + - 'devops' + - 'golang' + - 'java' + - 'javascript' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/qa/content/100-qa-basics/101-tester-mindset.md b/src/data/roadmaps/qa/content/100-qa-basics/101-tester-mindset.md index 750cc497c..1f9aec477 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/101-tester-mindset.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/101-tester-mindset.md @@ -5,11 +5,12 @@ As a Quality Assurance Engineer, your job is to look for the weak spots in a pro To do your job successfully, you need to have a Testing mindset. What does that mean? Among other things, it means you have to think in the most destructive way possible and be as creative as possible. A few important points: + - Know the product you are testing - Don’t be afraid to think outside of the box when you are testing it -- Don’t be afraid to misuse it as much as possible. +- Don’t be afraid to misuse it as much as possible. Visit the following resources to learn more: - [The Software Tester’s Mindset](https://softwaretester.careers/the-software-testers-mindset/) -- [How to Think Like a Tester](https://medium.com/@blakenorrish/how-to-think-like-a-tester-7a174ff6aeaf) \ No newline at end of file +- [How to Think Like a Tester](https://medium.com/@blakenorrish/how-to-think-like-a-tester-7a174ff6aeaf) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/102-testing-approaches/101-gray-box-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/102-testing-approaches/101-gray-box-testing.md index 671e84d83..f39b27c1c 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/102-testing-approaches/101-gray-box-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/102-testing-approaches/101-gray-box-testing.md @@ -4,4 +4,4 @@ Gray box testing is a software testing technique to test a software product or a Visit the following resources to learn more: -- [What is Gray Box Testing? Techniques & Example](https://www.guru99.com/grey-box-testing.html) \ No newline at end of file +- [What is Gray Box Testing? Techniques & Example](https://www.guru99.com/grey-box-testing.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/102-testing-approaches/index.md b/src/data/roadmaps/qa/content/100-qa-basics/102-testing-approaches/index.md index fb4d9f910..1d239ebab 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/102-testing-approaches/index.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/102-testing-approaches/index.md @@ -5,10 +5,11 @@ Proactive - An approach in which the test design process is initiated as early a Reactive - An approach in which the testing is not started until after design and coding are completed. Three approaches are commonly used to implement functional testing: + - Black Box Testing - White Box Testing - Gray Box Testing Visit the following resources to learn more: -- [Functional Testing Approaches and Agile Considerations](https://www.qualitylogic.com/knowledge-center/functional-testing-approaches-agile-considerations/) \ No newline at end of file +- [Functional Testing Approaches and Agile Considerations](https://www.qualitylogic.com/knowledge-center/functional-testing-approaches-agile-considerations/) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/101-test-rail.md b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/101-test-rail.md index 7f1b32a08..45273d916 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/101-test-rail.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/101-test-rail.md @@ -5,4 +5,4 @@ TestRail is a web-based test case management tool. It is used by testers, develo Visit the following resources to learn more: - [TestRail Website](https://www.gurock.com/testrail/) -- [TestRail Review Tutorial: Learn End-To-End Test Case Management](https://www.softwaretestinghelp.com/testrail-tutorial/) \ No newline at end of file +- [TestRail Review Tutorial: Learn End-To-End Test Case Management](https://www.softwaretestinghelp.com/testrail-tutorial/) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/102-test-link.md b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/102-test-link.md index 1ac7f37e3..e0646409f 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/102-test-link.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/102-test-link.md @@ -5,4 +5,4 @@ TestLink is most widely used web based open source test management tool. It sync Visit the following resources to learn more: - [TestLink Website](https://testlink.org/) -- [TestLink Tutorial: A Complete Guide](https://www.guru99.com/testlink-tutorial-complete-guide.html) \ No newline at end of file +- [TestLink Tutorial: A Complete Guide](https://www.guru99.com/testlink-tutorial-complete-guide.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/103-zephyr.md b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/103-zephyr.md index 79640f7a5..e043a3adf 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/103-zephyr.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/103-zephyr.md @@ -1,10 +1,11 @@ # Zephyr Zephyr is a testing solution that improves the quality of your software by managing and monitoring end-to-end testing. It is very effective for managing manual testing. Its key capabilities include: + - Test-case creation - Organization of tests by product releases and components - Assignment of tests to the Quality Assurance team Visit the following resources to learn more: -- [Zephyr for JIRA Tutorial: Test Management Tool](https://www.guru99.com/zephyr-agile-jira.html) \ No newline at end of file +- [Zephyr for JIRA Tutorial: Test Management Tool](https://www.guru99.com/zephyr-agile-jira.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/106-xray.md b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/106-xray.md index 1eb2461c6..ac8228ac3 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/106-xray.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/106-xray.md @@ -1,9 +1,9 @@ # xRay Xray is a complete Test Management tool for Jira. It is a full-featured app that does not require any other software in order to run. -Xray supports the entire testing life cycle: test planning, test design, test execution and test reporting. Xray does this by using special Jira issue types, so you can use all Jira benefits that you are used to. +Xray supports the entire testing life cycle: test planning, test design, test execution and test reporting. Xray does this by using special Jira issue types, so you can use all Jira benefits that you are used to. Jira's aim is to help you improve the quality of your systems through effective and efficient testing. That's why from its first version, Xray already supports both manual and automated tests, including full support for BDD framework (e.g. Cucumber, SpecFlow, Serenity BDD) examples/tests in the native language (i.e., English). Visit the following resources to learn more: -- [xRay - Getting Started](https://docs.getxray.app/display/XRAY/Getting+started) \ No newline at end of file +- [xRay - Getting Started](https://docs.getxray.app/display/XRAY/Getting+started) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/index.md b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/index.md index 9b0eddac8..d004c537d 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/index.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/105-manage-your-testing/index.md @@ -4,4 +4,4 @@ Test Management is a process of managing the testing activities in order to ensu Visit the following resources to learn more: -- [Test Management Process in Software Testing](https://www.guru99.com/test-management-phases-a-complete-guide-for-testing-project.html) \ No newline at end of file +- [Test Management Process in Software Testing](https://www.guru99.com/test-management-phases-a-complete-guide-for-testing-project.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/100-atlassian.md b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/100-atlassian.md index 40e13bc16..dc78c5605 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/100-atlassian.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/100-atlassian.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Atlassian Website](https://www.atlassian.com/) - [What is Jira used for?](https://www.atlassian.com/software/jira/guides/use-cases/what-is-jira-used-for#glossary-of-items) -- [What is Jira?](https://www.simplilearn.com/tutorials/jira/what-is-jira-and-how-to-use-jira-testing-software) \ No newline at end of file +- [What is Jira?](https://www.simplilearn.com/tutorials/jira/what-is-jira-and-how-to-use-jira-testing-software) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/101-assembla.md b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/101-assembla.md index 80d900d8b..fdbc5bae4 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/101-assembla.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/101-assembla.md @@ -5,4 +5,4 @@ Assembla is an extensive suite of applications for software development, enablin Visit the following resources to learn more: - [Assembla Website](https://get.assembla.com/projects/) -- [What is Assembla?](https://www.selecthub.com/project-management-software/assembla) \ No newline at end of file +- [What is Assembla?](https://www.selecthub.com/project-management-software/assembla) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/102-youtrack.md b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/102-youtrack.md index 530f2e00b..f4783a749 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/102-youtrack.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/102-youtrack.md @@ -5,4 +5,4 @@ YouTrack is a project management software developed by JetBrains. It’s in the Visit the following resources to learn more: - [YouTrack Website](https://www.jetbrains.com/youtrack/) -- [YouTrack for Beginners](https://medium.com/nerd-for-tech/youtrack-for-beginners-31e1e156fdd0) \ No newline at end of file +- [YouTrack for Beginners](https://medium.com/nerd-for-tech/youtrack-for-beginners-31e1e156fdd0) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/103-trello.md b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/103-trello.md index f42069fc9..4e1875dfd 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/103-trello.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/103-trello.md @@ -1,12 +1,12 @@ # Trello -Trello is a popular, simple, and easy-to-use collaboration tool that enables you to organize projects and everything related to them into boards. With Trello, you can find all kinds of information, such as: +Trello is a popular, simple, and easy-to-use collaboration tool that enables you to organize projects and everything related to them into boards. With Trello, you can find all kinds of information, such as: - What’s being worked on? -- Who’s working on what? +- Who’s working on what? - What progress the project is making Visit the following resources to learn more: - [Trello Website](https://trello.com/en) -- [What is Trello and How To Use It?](https://www.simplilearn.com/tutorials/project-management-tutorial/what-is-trello) \ No newline at end of file +- [What is Trello and How To Use It?](https://www.simplilearn.com/tutorials/project-management-tutorial/what-is-trello) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/index.md b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/index.md index 4c7c775c2..d8e128415 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/index.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/106-project-management/index.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [What are the Main Objectives of Project Management?](https://www.guru99.com/introduction-project-management-pmp-certification.html) - [Project Management in Software Testing](https://huddle.eurostarsoftwaretesting.com/project-management-in-software-testing/) -- [Project Management Life Cycle Phases: What are the stages?](https://www.guru99.com/initiation-phase-project-management-life-cycle.html) \ No newline at end of file +- [Project Management Life Cycle Phases: What are the stages?](https://www.guru99.com/initiation-phase-project-management-life-cycle.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/sanity-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/sanity-testing.md index 92276bfd9..2f63930a2 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/sanity-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/sanity-testing.md @@ -4,4 +4,4 @@ Sanity testing is a kind of Software Testing performed after receiving a softwar Visit the following resources to learn more: -- [Sanity Testing | Software Testing](https://www.geeksforgeeks.org/sanity-testing-software-testing/) \ No newline at end of file +- [Sanity Testing | Software Testing](https://www.geeksforgeeks.org/sanity-testing-software-testing/) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/smoke-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/smoke-testing.md index b99d55812..0f9ca0636 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/smoke-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/smoke-testing.md @@ -4,4 +4,4 @@ Smoke Testing is a software testing process that determines whether the deployed Visit the following resources to learn more: -- [Smoke Testing | Software Testing](https://www.guru99.com/smoke-testing.html) \ No newline at end of file +- [Smoke Testing | Software Testing](https://www.guru99.com/smoke-testing.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/uat.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/uat.md index f048e9ff2..a900bd918 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/uat.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/uat.md @@ -5,4 +5,4 @@ User Acceptance Testing (UAT) is a type of testing performed by the end user or Visit the following resources to learn more: - [What is User Acceptance Testing (UAT)?](https://www.guru99.com/user-acceptance-testing.html) -- [How to plan your UAT](https://www.youtube.com/watch?v=AU8SV7091-s) \ No newline at end of file +- [How to plan your UAT](https://www.youtube.com/watch?v=AU8SV7091-s) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/unit-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/unit-testing.md index 36da1be19..dc2b3a337 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/unit-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/unit-testing.md @@ -1,6 +1,6 @@ # Unit Testing -Unit testing is where individual __units__ (modules, functions/methods, routines, etc.) of software are tested to ensure their correctness. This low-level testing ensures smaller components are functionally sound while taking the burden off of higher-level tests. Generally, a developer writes these tests during the development process and they are run as automated tests. +Unit testing is where individual **units** (modules, functions/methods, routines, etc.) of software are tested to ensure their correctness. This low-level testing ensures smaller components are functionally sound while taking the burden off of higher-level tests. Generally, a developer writes these tests during the development process and they are run as automated tests. Visit the following resources to learn more: diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/accessibility-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/accessibility-testing.md index 99d372bb6..a859af216 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/accessibility-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/accessibility-testing.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [What is Accessibility Testing? (Examples)](https://www.guru99.com/accessibility-testing.html) - [Accessibility Testing Tutorial (Step By Step Guide)](https://www.softwaretestinghelp.com/what-is-web-accessibility-testing/) - [IBM Accessibility Toolkit](https://www.ibm.com/able/) - diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/index.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/index.md index cdebbc572..dbb99601a 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/index.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/index.md @@ -5,4 +5,4 @@ Non-functional testing is a type of software testing to test non-functional para Visit the following resources to learn more: - [What is Non Functional Testing](https://www.browserstack.com/guide/what-is-non-functional-testing) -- [Types of Non Functional Testing](https://www.guru99.com/non-functional-testing.html) \ No newline at end of file +- [Types of Non Functional Testing](https://www.guru99.com/non-functional-testing.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/load-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/load-testing.md index 59c22ed09..375ef5589 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/load-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/load-testing.md @@ -5,4 +5,4 @@ Load Testing is a type of Performance Testing that determines the performance of Visit the following resources to learn more: - [Software Testing: Load Testing](https://www.geeksforgeeks.org/software-testing-load-testing/) -- [Load testing and Best Practices](https://loadninja.com/load-testing/) \ No newline at end of file +- [Load testing and Best Practices](https://loadninja.com/load-testing/) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/performance-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/performance-testing.md index a9fc42659..2553d2843 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/performance-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/performance-testing.md @@ -18,4 +18,4 @@ Following are the commonly used performance testing types, but not limited to: Visit the following resources to learn more: -- [Performance Testing Tutorial – Types (Example)](https://www.guru99.com/performance-testing.html) \ No newline at end of file +- [Performance Testing Tutorial – Types (Example)](https://www.guru99.com/performance-testing.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/security-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/security-testing.md index 3415211d4..27c366cc3 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/security-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/security-testing.md @@ -5,4 +5,4 @@ Security Testing is a type of Software Testing that uncovers vulnerabilities, th Visit the following resources to learn more: - [What is Security Testing? Types with Example](https://www.guru99.com/what-is-security-testing.html) -- [Security Testing: Types, Tools, and Best Practices](https://brightsec.com/blog/security-testing/) \ No newline at end of file +- [Security Testing: Types, Tools, and Best Practices](https://brightsec.com/blog/security-testing/) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/stress-testing.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/stress-testing.md index a6f86abc8..a266e0e0e 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/stress-testing.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/stress-testing.md @@ -6,4 +6,4 @@ e.g. Injecting high volume of requests per second to an API might cause the disr Visit the following resources to learn more: -- [What is Stress Testing in Software Testing?](https://www.guru99.com/stress-testing-tutorial.html) \ No newline at end of file +- [What is Stress Testing in Software Testing?](https://www.guru99.com/stress-testing-tutorial.html) diff --git a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/index.md b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/index.md index a34df59ff..2f6993628 100644 --- a/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/index.md +++ b/src/data/roadmaps/qa/content/100-qa-basics/107-testing-techniques/index.md @@ -4,4 +4,4 @@ Testing Techniques are methods applied to evaluate a system or a component with Visit the following resources to learn more: -- [What are Testing Techniques : Types, Advantages & Disadvantages](https://www.elprocus.com/what-are-testing-techniques-types-advantages-disadvantages/) \ No newline at end of file +- [What are Testing Techniques : Types, Advantages & Disadvantages](https://www.elprocus.com/what-are-testing-techniques-types-advantages-disadvantages/) diff --git a/src/data/roadmaps/qa/content/101-qa-sdlc/100-waterfall-model.md b/src/data/roadmaps/qa/content/101-qa-sdlc/100-waterfall-model.md index ebf505dd1..153077328 100644 --- a/src/data/roadmaps/qa/content/101-qa-sdlc/100-waterfall-model.md +++ b/src/data/roadmaps/qa/content/101-qa-sdlc/100-waterfall-model.md @@ -4,4 +4,4 @@ Waterfall Model is a sequential model that divides software development into pre Visit the following resources to learn more: -- [What is Waterfall Model in SDLC? Advantages and Disadvantages](https://www.guru99.com/what-is-sdlc-or-waterfall-model.html) \ No newline at end of file +- [What is Waterfall Model in SDLC? Advantages and Disadvantages](https://www.guru99.com/what-is-sdlc-or-waterfall-model.html) diff --git a/src/data/roadmaps/qa/content/101-qa-sdlc/101-v-model.md b/src/data/roadmaps/qa/content/101-qa-sdlc/101-v-model.md index 7ef0b804e..1fedfc9b6 100644 --- a/src/data/roadmaps/qa/content/101-qa-sdlc/101-v-model.md +++ b/src/data/roadmaps/qa/content/101-qa-sdlc/101-v-model.md @@ -5,4 +5,4 @@ V Model is a highly disciplined SDLC model that has a testing phase parallel to Visit the following resources to learn more: - [V-Model in Software Testing](https://www.guru99.com/v-model-software-testing.html) -- [SDLC V-Model](https://www.geeksforgeeks.org/software-engineering-sdlc-v-model/) \ No newline at end of file +- [SDLC V-Model](https://www.geeksforgeeks.org/software-engineering-sdlc-v-model/) diff --git a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/100-kanban.md b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/100-kanban.md index 72cfbaa40..15bece3eb 100644 --- a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/100-kanban.md +++ b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/100-kanban.md @@ -7,4 +7,4 @@ A kanban board is an agile project management tool designed to help visualize wo Visit the following resources to learn more: - [Kanban - A brief introduction](https://www.atlassian.com/agile/kanban) -- [Kanban Model in Software Engineering](https://www.guru99.com/kanban-cards-boards-methodology.html) \ No newline at end of file +- [Kanban Model in Software Engineering](https://www.guru99.com/kanban-cards-boards-methodology.html) diff --git a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/101-scrum.md b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/101-scrum.md index e47a1915f..da37264e8 100644 --- a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/101-scrum.md +++ b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/101-scrum.md @@ -5,4 +5,4 @@ Scrum in Software Testing is a methodology for building complex software applica Visit the following resources to learn more: - [Scrum Testing Methodology Tutorial](https://www.guru99.com/scrum-testing-beginner-guide.html) -- [Scrum - What is, How it works](https://www.atlassian.com/agile/scrum) \ No newline at end of file +- [Scrum - What is, How it works](https://www.atlassian.com/agile/scrum) diff --git a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/102-safe.md b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/102-safe.md index c5f3b8c65..57caadeef 100644 --- a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/102-safe.md +++ b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/102-safe.md @@ -4,4 +4,4 @@ Scaled Agile Framework (SAFe) is a freely available online knowledge base that a Visit the following resources to learn more: -- [SAFe (Scaled Agile Framework) Tutorial](https://www.guru99.com/scaled-agile-framework.html) \ No newline at end of file +- [SAFe (Scaled Agile Framework) Tutorial](https://www.guru99.com/scaled-agile-framework.html) diff --git a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/103-xp.md b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/103-xp.md index 9ca20e872..d7412545b 100644 --- a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/103-xp.md +++ b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/103-xp.md @@ -5,4 +5,4 @@ Extreme Programming (XP) is an agile software development framework that aims to Visit the following resources to learn more: - [What is Extreme Programming (XP)?](https://www.agilealliance.org/glossary/xp) -- [Software Engineering | Extreme Programming (XP)](https://www.geeksforgeeks.org/software-engineering-extreme-programming-xp/) \ No newline at end of file +- [Software Engineering | Extreme Programming (XP)](https://www.geeksforgeeks.org/software-engineering-extreme-programming-xp/) diff --git a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/index.md b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/index.md index 96f5211e6..82d966b1c 100644 --- a/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/index.md +++ b/src/data/roadmaps/qa/content/101-qa-sdlc/102-agile-model/index.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [Agile Methodology: What is Agile Model in Software Testing?](https://www.guru99.com/agile-scrum-extreme-testing.html) - [Agile Model](https://www.javatpoint.com/software-engineering-agile-model) -- [Manifesto for Agile Software Development](https://agilemanifesto.org/) \ No newline at end of file +- [Manifesto for Agile Software Development](https://agilemanifesto.org/) diff --git a/src/data/roadmaps/qa/content/101-qa-sdlc/index.md b/src/data/roadmaps/qa/content/101-qa-sdlc/index.md index e2d9bbd01..5cbd87278 100644 --- a/src/data/roadmaps/qa/content/101-qa-sdlc/index.md +++ b/src/data/roadmaps/qa/content/101-qa-sdlc/index.md @@ -5,4 +5,4 @@ The Software Development Life Cycle (SDLC) is a process followed for a software Visit the following resources to learn more: - [QA Role In SDLC: Why Is Quality Assurance Important In IT](https://cadabra.studio/blog/why-is-quality-assurance-important-qa-role-in-sdlc/) -- [SDLC Overview](https://www.tutorialspoint.com/sdlc/sdlc_overview.htm) \ No newline at end of file +- [SDLC Overview](https://www.tutorialspoint.com/sdlc/sdlc_overview.htm) diff --git a/src/data/roadmaps/qa/content/102-qa-manual-testing/100-tdd.md b/src/data/roadmaps/qa/content/102-qa-manual-testing/100-tdd.md index c4197cfb9..d8494853b 100644 --- a/src/data/roadmaps/qa/content/102-qa-manual-testing/100-tdd.md +++ b/src/data/roadmaps/qa/content/102-qa-manual-testing/100-tdd.md @@ -5,4 +5,4 @@ Test Driven Development (TDD) is software development approach in which test cas Visit the following resources to learn more: - [What is Test Driven Development (TDD)? Tutorial with Example](https://www.guru99.com/test-driven-development.html) -- [Introduction to Test Driven Development (TDD)](https://pt.coursera.org/learn/test-and-behavior-driven-development-tdd-bdd) \ No newline at end of file +- [Introduction to Test Driven Development (TDD)](https://pt.coursera.org/learn/test-and-behavior-driven-development-tdd-bdd) diff --git a/src/data/roadmaps/qa/content/102-qa-manual-testing/101-test-planning.md b/src/data/roadmaps/qa/content/102-qa-manual-testing/101-test-planning.md index 2283fb210..718c87852 100644 --- a/src/data/roadmaps/qa/content/102-qa-manual-testing/101-test-planning.md +++ b/src/data/roadmaps/qa/content/102-qa-manual-testing/101-test-planning.md @@ -4,4 +4,4 @@ A Test Plan is a detailed document that describes the test strategy, objectives, Visit the following resources to learn more: -- [Test Plan: What is, How to Create (with Example)](https://www.guru99.com/what-everybody-ought-to-know-about-test-planing.html) \ No newline at end of file +- [Test Plan: What is, How to Create (with Example)](https://www.guru99.com/what-everybody-ought-to-know-about-test-planing.html) diff --git a/src/data/roadmaps/qa/content/102-qa-manual-testing/102-test-cases-and-scenarios.md b/src/data/roadmaps/qa/content/102-qa-manual-testing/102-test-cases-and-scenarios.md index e36cce12c..62e740f31 100644 --- a/src/data/roadmaps/qa/content/102-qa-manual-testing/102-test-cases-and-scenarios.md +++ b/src/data/roadmaps/qa/content/102-qa-manual-testing/102-test-cases-and-scenarios.md @@ -7,4 +7,4 @@ A Test Scenario is defined as any functionality that can be tested. It is a coll Visit the following resources to learn more: - [Test Case vs Test Scenario – Difference Between Them](https://www.guru99.com/test-case-vs-test-scenario.html) -- [How to Write Test Cases in Software Testing with Examples](https://www.guru99.com/test-case.html) \ No newline at end of file +- [How to Write Test Cases in Software Testing with Examples](https://www.guru99.com/test-case.html) diff --git a/src/data/roadmaps/qa/content/102-qa-manual-testing/104-compatibility.md b/src/data/roadmaps/qa/content/102-qa-manual-testing/104-compatibility.md index b762ffc4f..cfabdb86f 100644 --- a/src/data/roadmaps/qa/content/102-qa-manual-testing/104-compatibility.md +++ b/src/data/roadmaps/qa/content/102-qa-manual-testing/104-compatibility.md @@ -4,4 +4,4 @@ Compatibility is nothing but the capability of existing or living together. Comp Visit the following resources to learn more: -- [What is Compatibility Testing? Forward & Backward Example](https://www.guru99.com/compatibility-testing.html) \ No newline at end of file +- [What is Compatibility Testing? Forward & Backward Example](https://www.guru99.com/compatibility-testing.html) diff --git a/src/data/roadmaps/qa/content/102-qa-manual-testing/105-verification-and-validation.md b/src/data/roadmaps/qa/content/102-qa-manual-testing/105-verification-and-validation.md index dc63ca371..81fab0a6d 100644 --- a/src/data/roadmaps/qa/content/102-qa-manual-testing/105-verification-and-validation.md +++ b/src/data/roadmaps/qa/content/102-qa-manual-testing/105-verification-and-validation.md @@ -7,4 +7,4 @@ Validation in Software Engineering is a dynamic mechanism of testing and validat Visit the following resources to learn more: - [Differences Between Verification and Validation](https://www.guru99.com/verification-v-s-validation-in-a-software-testing.html) -- [Design Verification & Validation Process](https://www.guru99.com/design-verification-process.html) \ No newline at end of file +- [Design Verification & Validation Process](https://www.guru99.com/design-verification-process.html) diff --git a/src/data/roadmaps/qa/content/102-qa-manual-testing/index.md b/src/data/roadmaps/qa/content/102-qa-manual-testing/index.md index dd3b07e0c..8ccd1d2ef 100644 --- a/src/data/roadmaps/qa/content/102-qa-manual-testing/index.md +++ b/src/data/roadmaps/qa/content/102-qa-manual-testing/index.md @@ -5,4 +5,4 @@ Manual Testing is a type of software testing in which test cases are executed ma Visit the following resources to learn more: - [Manual Testing Tutorial: What is, Types, Concepts](https://www.guru99.com/manual-testing.html) -- [Manual Testing](https://www.javatpoint.com/manual-testing) \ No newline at end of file +- [Manual Testing](https://www.javatpoint.com/manual-testing) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/ajax.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/ajax.md index 76fea862f..c35905b81 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/ajax.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/ajax.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [What is AJAX?](https://www.w3schools.com/whatis/whatis_ajax.asp) - [Getting started](https://developer.mozilla.org/en-US/docs/Web/Guide/AJAX/Getting_Started) -- [What Is Ajax?](https://www.youtube.com/watch?v=3l13qGLTgNw) \ No newline at end of file +- [What Is Ajax?](https://www.youtube.com/watch?v=3l13qGLTgNw) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/caching.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/caching.md index aaf1113ea..0e8a32a1e 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/caching.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/caching.md @@ -4,4 +4,4 @@ Caching ensures that the resources downloaded once are reused instead of doing a Visit the following resources to learn more: -- [Caching - Simply Explained](https://www.youtube.com/watch?v=6FyXURRVmR0) \ No newline at end of file +- [Caching - Simply Explained](https://www.youtube.com/watch?v=6FyXURRVmR0) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/csr-vs-ssr.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/csr-vs-ssr.md index d55dc3ceb..a8fdf6c04 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/csr-vs-ssr.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/csr-vs-ssr.md @@ -5,4 +5,4 @@ CSR stands for Client Side Rendering and SSR stands for Server Side Rendering. C Visit the following resources to learn more: - [Server Side Rendering vs Client Side Rendering](https://www.youtube.com/watch?v=rNVcZklcmqU) -- [SSR vs CSR vs SSG](https://medium.com/@prashantramnyc/server-side-rendering-ssr-vs-client-side-rendering-csr-vs-pre-rendering-using-static-site-89f2d05182ef) \ No newline at end of file +- [SSR vs CSR vs SSG](https://medium.com/@prashantramnyc/server-side-rendering-ssr-vs-client-side-rendering-csr-vs-pre-rendering-using-static-site-89f2d05182ef) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/index.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/index.md index 6c72f9645..35426c5d2 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/index.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/index.md @@ -4,4 +4,4 @@ Front End Testing is a testing technique in which Graphical User Interface (GUI) Visit the following resources to learn more: -- [What is Front End Testing?](https://www.guru99.com/frontend-testing.html) \ No newline at end of file +- [What is Front End Testing?](https://www.guru99.com/frontend-testing.html) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/responsive-vs-adaptive.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/responsive-vs-adaptive.md index 6adb58d0b..c73124f41 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/responsive-vs-adaptive.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/responsive-vs-adaptive.md @@ -3,6 +3,7 @@ There are two approaches to ensuring a website is optimized for mobile, tablet, laptop and PC screens: responsive design and adaptive design. While both are intended to solve the same problem, they use different strategies. # What is responsive design? + A website created with responsive design serves up the same site to every device, but that site is fluid and will change its layout and appearance based on the size and orientation of the device. Developers use CSS to ensure each page of the site can reformat based on the size of the user's viewport and only need to create one codebase for the site. They use something called breakpoints to tell the site when to adjust to accommodate different screen sizes. diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/swas-pwas-jamstack.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/swas-pwas-jamstack.md index 6cb03b803..3a53355d8 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/swas-pwas-jamstack.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/swas-pwas-jamstack.md @@ -1,15 +1,18 @@ # SWAs, PWAs and Jamstack ## SWAs + A Static Web Application is any web application that can be delivered directly to an end user's browser without any server-side alteration of the HTML, CSS, or JavaScript content. While this can encompass very flat, unchanging sites like a corporate web site, static web applications generally refer to rich sites that utilize technologies in the browser instead of on the server to deliver dynamic content. ## PWAs + At their heart, Progressive Web Apps are just web applications. Using progressive enhancement, new capabilities are enabled in modern browsers. Using service workers and a web app manifest, your web application becomes reliable and installable. If the new capabilities aren't available, users still get the core experience. Progressive Web Apps provide you with a unique opportunity to deliver a web experience your users will love. Using the latest web features to bring enhanced capabilities and reliability, Progressive Web Apps allow what you build to be installed by anyone, anywhere, on any device with a single codebase. ## Jamstack -Jamstack is an architectural approach that decouples the web experience layer from data and business logic, improving flexibility, scalability, performance, and maintainability. + +Jamstack is an architectural approach that decouples the web experience layer from data and business logic, improving flexibility, scalability, performance, and maintainability. Jamstack removes the need for business logic to dictate the web experience. It enables a composable architecture for the web where custom logic and 3rd party services are consumed through APIs. Visit the following resources to learn more: diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-selenium-ide.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-selenium-ide.md index f2a53906e..6701dfc9e 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-selenium-ide.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/100-selenium-ide.md @@ -1,10 +1,10 @@ # Selenium IDE -Selenium IDE is an open source web automation testing tool from the Selenium Suite used primarily for QA purposes. It functions as a Firefox extension and does not require any programming knowledge and test cases can be created simply by interacting with the browser. +Selenium IDE is an open source web automation testing tool from the Selenium Suite used primarily for QA purposes. It functions as a Firefox extension and does not require any programming knowledge and test cases can be created simply by interacting with the browser. Selenium itself is an open-source, automated testing tool used to test web applications across various browsers. It's primarily built in Java and supports several browsers and programming languages. Selenium IDE was developed to speed up the creation of automation scripts. It’s a rapid prototyping tool and can be used by engineers with no programming knowledge whatsoever. Because of its simplicity, Selenium IDE is best used as a prototyping tool and not a complete solution for developing and maintaining complex test suites. Visit the following resources to learn more: - [Selenium IDE Website](https://www.selenium.dev/selenium-ide/) -- [Selenium IDE Tutorial](https://www.softwaretestinghelp.com/selenium-ide-script-selenium-tutorial-3/) \ No newline at end of file +- [Selenium IDE Tutorial](https://www.softwaretestinghelp.com/selenium-ide-script-selenium-tutorial-3/) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/101-browser-addons.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/101-browser-addons.md index 66f862a35..5750496f5 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/101-browser-addons.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/101-browser-addons.md @@ -7,4 +7,4 @@ Given that Chrome is the undisputed market leader in web browsers, it’s safe t Visit the following resources to learn more: - [8 Browser Plugins for Testing](https://blog.gurock.com/browser-plugins-for-testing/) -- [15 Best Chrome Extensions for Software Testers](https://www.softwaretestingmaterial.com/chrome-extensions-for-software-testers/) \ No newline at end of file +- [15 Best Chrome Extensions for Software Testers](https://www.softwaretestingmaterial.com/chrome-extensions-for-software-testers/) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/101-ghost-inspector.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/101-ghost-inspector.md index dcc7f18cd..9f992195b 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/101-ghost-inspector.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/101-ghost-inspector.md @@ -5,4 +5,4 @@ Ghost Inspector is a codeless automated testing tool that allows you to easily c Visit the following resources to learn more: - [Ghost Inspector Website](https://ghostinspector.com/) -- [What Is Ghost Inspector? Overview & Tour Of Features](https://theqalead.com/test-management/what-is-ghost-inspector-overview-tour-of-features/) \ No newline at end of file +- [What Is Ghost Inspector? Overview & Tour Of Features](https://theqalead.com/test-management/what-is-ghost-inspector-overview-tour-of-features/) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/index.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/index.md index 8fd9afe15..fe85abaf4 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/index.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/index.md @@ -5,4 +5,4 @@ A Test Automation Framework is a set of guidelines like coding standards, test-d Visit the following resources to learn more: - [Test Automation Framework: What is, Architecture & Types](https://www.guru99.com/test-automation-framework.html) -- [Popular Test Automation Frameworks](https://www.browserstack.com/guide/best-test-automation-frameworks) \ No newline at end of file +- [Popular Test Automation Frameworks](https://www.browserstack.com/guide/best-test-automation-frameworks) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/jasmine.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/jasmine.md index 01d10892f..12d1fd042 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/jasmine.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/jasmine.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Jasmines Official Website](https://jasmine.github.io/) - [Easy and Practical example of Angular testing with Jasmine](https://semaphoreci.com/community/tutorials/testing-components-in-angular-2-with-jasmine) -- [Starting with Jasmine from Scratch](https://www.testim.io/blog/jasmine-js-a-from-scratch-tutorial-to-start-testing) \ No newline at end of file +- [Starting with Jasmine from Scratch](https://www.testim.io/blog/jasmine-js-a-from-scratch-tutorial-to-start-testing) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/nightwatch.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/nightwatch.md index cad5d1649..fb3a2eb3b 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/nightwatch.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/nightwatch.md @@ -5,4 +5,4 @@ Nightwatch.js is an open-source automated testing framework that is powered by N Visit the following resources to learn more: - [Nightwatch.js Website](https://nightwatchjs.org/) -- [NightwatchJS Tutorial: Get Started with Automation Testing](https://www.browserstack.com/guide/nightwatch-framework-tutorial) \ No newline at end of file +- [NightwatchJS Tutorial: Get Started with Automation Testing](https://www.browserstack.com/guide/nightwatch-framework-tutorial) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/robot-framework.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/robot-framework.md index 3e288b2d6..de1afdfec 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/robot-framework.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/robot-framework.md @@ -9,4 +9,4 @@ Visit the following resources to learn more: - [Robot Framework Official Website](https://robotframework.org/) - [Robot Framework Official User Guide](https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html) - [Basic Step-by-step Robot Framework tutorial](https://medium.com/swlh/robot-framework-the-basics-dfeadc025bea) -- [Excellent tutorial to start working with Robot Framework](https://www.geeksforgeeks.org/robot-framework-in-python/) \ No newline at end of file +- [Excellent tutorial to start working with Robot Framework](https://www.geeksforgeeks.org/robot-framework-in-python/) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-bug-management.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-bug-management.md index ea08444dc..670b18443 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-bug-management.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-bug-management.md @@ -5,4 +5,4 @@ Exploratory Testing is all about exploring the software by navigating random pat Visit the following resources to learn more: - [Bug Magnet Website](https://bugmagnet.org/) -- [Bug Magnet: Chrome Extension for Exploratory Testing](http://www.testingjournals.com/bug-magnet-extension-exploratory-testing/) \ No newline at end of file +- [Bug Magnet: Chrome Extension for Exploratory Testing](http://www.testingjournals.com/bug-magnet-extension-exploratory-testing/) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/index.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/index.md index 429216d2f..16577623b 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/index.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/index.md @@ -1,7 +1,7 @@ # Frontend automation - Front-end automation is a way to characterize automation that streamlines tasks focused on interactivity, websites, and attended processes. Robotic process automation, or RPA, is considered automation on the front end, or from the user-interface (UI) level. Benefits of front-end automation include quick task building with no programming knowledge, no required changes to existing programs or applications, and those individuals who know the keystrokes can easily build the automation task. - - Visit the following resources to learn more: +Front-end automation is a way to characterize automation that streamlines tasks focused on interactivity, websites, and attended processes. Robotic process automation, or RPA, is considered automation on the front end, or from the user-interface (UI) level. Benefits of front-end automation include quick task building with no programming knowledge, no required changes to existing programs or applications, and those individuals who know the keystrokes can easily build the automation task. + +Visit the following resources to learn more: - [How we do automated testing on our frontend](https://dev.to/davidz/how-we-do-automated-testing-on-our-frontend-b10) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/101-mobile-automation/index.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/101-mobile-automation/index.md index 40a1a2eb5..1afc032d8 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/101-mobile-automation/index.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/101-mobile-automation/index.md @@ -4,4 +4,4 @@ Mobile automation, as the name suggests, refers to 'automation' that is done on Visit the following resources to learn more: -- [Mobile Automation Testing Steps and Process](https://u-tor.com/topic/mobile-automation-steps) \ No newline at end of file +- [Mobile Automation Testing Steps and Process](https://u-tor.com/topic/mobile-automation-steps) diff --git a/src/data/roadmaps/qa/content/103-qa-automated-testing/102-backend-automation/104-rest-assured.md b/src/data/roadmaps/qa/content/103-qa-automated-testing/102-backend-automation/104-rest-assured.md index 49e2f6f83..d11db0d20 100644 --- a/src/data/roadmaps/qa/content/103-qa-automated-testing/102-backend-automation/104-rest-assured.md +++ b/src/data/roadmaps/qa/content/103-qa-automated-testing/102-backend-automation/104-rest-assured.md @@ -5,4 +5,4 @@ Rest-assured helps developers and test engineers to test REST APIs in Java ease Visit the following resources to learn more: - [REST-assured Website](https://rest-assured.io) -- [REST Assured Tutorial: How to test API with Example](https://www.guru99.com/rest-assured.html) \ No newline at end of file +- [REST Assured Tutorial: How to test API with Example](https://www.guru99.com/rest-assured.html) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/102-locust.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/102-locust.md index 718bf56bc..5f614d275 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/102-locust.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/102-locust.md @@ -11,4 +11,4 @@ Locust is an easy-to-use, scriptable and scalable performance testing tool. You Visit the following resources to learn more: - [Locust Website](https://locust.io/) -- [Learn Locust](https://www.youtube.com/playlist?list=PLJ9A48W0kpRKMCzJARCObgJs3SinOewp5) \ No newline at end of file +- [Learn Locust](https://www.youtube.com/playlist?list=PLJ9A48W0kpRKMCzJARCObgJs3SinOewp5) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/105-artillery.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/105-artillery.md index 0e830a777..714ae7626 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/105-artillery.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/105-artillery.md @@ -6,7 +6,7 @@ Artillery prioritizes developer productivity and happiness, and follows the "bat ## Features -- Emulate complex user behavior with scenarios +- Emulate complex user behavior with scenarios - Load testing and smoke testing - Batteries included - Extensible & hackable @@ -17,4 +17,4 @@ Artillery prioritizes developer productivity and happiness, and follows the "bat Visit the following resources to learn more: - [Artillery Website](https://www.artillery.io/) -- [Learn Artillery](https://www.youtube.com/playlist?list=PLJ9A48W0kpRJh1_uW2mVNhSIVCMYmNlm7) \ No newline at end of file +- [Learn Artillery](https://www.youtube.com/playlist?list=PLJ9A48W0kpRJh1_uW2mVNhSIVCMYmNlm7) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/107-webpage-test.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/107-webpage-test.md index 2d6f73cad..18cfe4dc4 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/107-webpage-test.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/100-load-and-performance-testing/107-webpage-test.md @@ -6,4 +6,4 @@ Each test can be run from different locations around the world, on real browsers Visit the following resources to learn more: -- [WebPageTest Website](https://www.webpagetest.org/) \ No newline at end of file +- [WebPageTest Website](https://www.webpagetest.org/) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/101-wave.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/101-wave.md index f10bf78f7..fe8087fbc 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/101-wave.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/101-wave.md @@ -5,4 +5,4 @@ Wave is a suite of evaluation tools that helps authors make their web content mo Visit the following resources to learn more: - [Wave Website](https://wave.webaim.org/) -- [WAVE Accessibility Testing Tool Tutorial](https://www.softwaretestinghelp.com/web-accessibility-testing-tools/) \ No newline at end of file +- [WAVE Accessibility Testing Tool Tutorial](https://www.softwaretestinghelp.com/web-accessibility-testing-tools/) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/102-axe.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/102-axe.md index 63b49cacc..9b4ec8340 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/102-axe.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/102-axe.md @@ -5,4 +5,4 @@ Axe is a fast and lightweight accessibility testing tool that checks the entire Visit the following resources to learn more: - [Axe Website](https://www.deque.com/axe/) -- [Accessibility testing using the axe-core library](https://www.browserstack.com/docs/automate/selenium/accessibility-testing) \ No newline at end of file +- [Accessibility testing using the axe-core library](https://www.browserstack.com/docs/automate/selenium/accessibility-testing) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/100-authentication-authorization.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/100-authentication-authorization.md index 31de692e4..fa4d1fe1c 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/100-authentication-authorization.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/100-authentication-authorization.md @@ -2,10 +2,10 @@ `Authentication` is the process of verifying that an individual, entity or website is whom it claims to be. Authentication in the context of web applications is commonly performed by submitting a username or ID and one or more items of private information that only a given user should know. -`Authorization` may be defined as "the process of verifying that a requested action or service is approved for a specific entity" (NIST). `Authorization` is distinct from authentication which is the process of verifying an entity's identity. When designing and developing a software solution, it is important to keep these distinctions in mind. A user who has been authenticated (perhaps by providing a username and password) is often not authorized to access every resource and perform every action that is technically possible through a system. +`Authorization` may be defined as "the process of verifying that a requested action or service is approved for a specific entity" (NIST). `Authorization` is distinct from authentication which is the process of verifying an entity's identity. When designing and developing a software solution, it is important to keep these distinctions in mind. A user who has been authenticated (perhaps by providing a username and password) is often not authorized to access every resource and perform every action that is technically possible through a system. For example, a web app may have both regular users and admins, with the admins being able to perform actions the average user is not privileged to do so, even though they have been authenticated. Additionally, authentication is not always required for accessing resources; an unauthenticated user may be authorized to access certain public resources, such as an image or login page, or even an entire web app. Visit the following resources to learn more: -- [OWASP Website](https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html) \ No newline at end of file +- [OWASP Website](https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/101-vulnerability-scanning.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/101-vulnerability-scanning.md index ac805fcf8..424ef37de 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/101-vulnerability-scanning.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/101-vulnerability-scanning.md @@ -4,12 +4,12 @@ Vulnerability scanning identifies hosts and host attributes (e.g., operating systems, applications, open ports), but it also attempts to identify vulnerabilities rather than relying on human interpretation of the scanning results. Many vulnerability scanners are equipped to accept results from network discovery and network port and service identification, which reduces the -amount of work needed for vulnerability scanning. +amount of work needed for vulnerability scanning. Also, some scanners can perform their own network discovery and network port and service identification. Vulnerability scanning can help identify outdated software versions, missing patches, and misconfigurations, and validate compliance with or deviations -from an organization’s security policy. +from an organization’s security policy. This is done by identifying the operating systems and major software applications running on the hosts and matching them with information on known vulnerabilities @@ -17,4 +17,4 @@ stored in the scanners’ vulnerability databases. Visit the following resources to learn more: -- [NIST Website](https://csrc.nist.gov/glossary/term/vulnerability_scanning) \ No newline at end of file +- [NIST Website](https://csrc.nist.gov/glossary/term/vulnerability_scanning) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/102-owasp-10.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/102-owasp-10.md index c660a35b1..2a72e038e 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/102-owasp-10.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/102-owasp-10.md @@ -7,4 +7,4 @@ The OWASP Top 10 is a regularly-updated report outlining security concerns for w Visit the following resources to learn more: - [OWASP Top 10](https://owasp.org/www-project-top-ten/) -- [What is the OWASP Top 10?](https://www.cloudflare.com/learning/security/threats/owasp-top-10/) \ No newline at end of file +- [What is the OWASP Top 10?](https://www.cloudflare.com/learning/security/threats/owasp-top-10/) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/103-attack-vectors.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/103-attack-vectors.md index a16a77b27..ced830583 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/103-attack-vectors.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/103-attack-vectors.md @@ -4,4 +4,4 @@ This metric reflects the context by which vulnerability exploitation is possible Visit the following resources to learn more: -- [FIRST.org Website](https://www.first.org/cvss/v3.1/specification-document) \ No newline at end of file +- [FIRST.org Website](https://www.first.org/cvss/v3.1/specification-document) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/104-secrets-management.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/104-secrets-management.md index 6a9dcf808..a852744be 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/104-secrets-management.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/104-secrets-management.md @@ -7,4 +7,4 @@ Credentials such as passwords, SSH keys, certificates, API keys, backup codes, a Visit the following resources to learn more: - [AWS Secrets Management Website](https://aws.amazon.com/secrets-manager/) -- [Vault Website](https://www.vaultproject.io/) \ No newline at end of file +- [Vault Website](https://www.vaultproject.io/) diff --git a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/index.md b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/index.md index f09d924b6..f730e7589 100644 --- a/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/index.md +++ b/src/data/roadmaps/qa/content/104-qa-non-functional-testing/102-security-testing/index.md @@ -2,8 +2,8 @@ Security testing is a process intended to reveal flaws in the security mechanisms of an information system that protect data and maintain functionality as intended. Due to the logical limitations of security testing, passing the security testing process is not an indication that no flaws exist or that the system adequately satisfies the security requirements. -Typical security requirements may include specific elements of confidentiality, integrity, authentication, availability, authorization and non-repudiation. Actual security requirements tested depend on the security requirements implemented by the system. Security testing as a term has a number of different meanings and can be completed in a number of different ways. As such, a Security Taxonomy helps us to understand these different approaches and meanings by providing a base level to work from. +Typical security requirements may include specific elements of confidentiality, integrity, authentication, availability, authorization and non-repudiation. Actual security requirements tested depend on the security requirements implemented by the system. Security testing as a term has a number of different meanings and can be completed in a number of different ways. As such, a Security Taxonomy helps us to understand these different approaches and meanings by providing a base level to work from. Visit the following resources to learn more: -- [Security Testing Wiki](https://en.wikipedia.org/wiki/Security_testing) \ No newline at end of file +- [Security Testing Wiki](https://en.wikipedia.org/wiki/Security_testing) diff --git a/src/data/roadmaps/qa/content/105-qa-email-testing/101-gmail-tester.md b/src/data/roadmaps/qa/content/105-qa-email-testing/101-gmail-tester.md index c9bb13b57..271000439 100644 --- a/src/data/roadmaps/qa/content/105-qa-email-testing/101-gmail-tester.md +++ b/src/data/roadmaps/qa/content/105-qa-email-testing/101-gmail-tester.md @@ -2,8 +2,7 @@ Gmail-tester is a simple Node.js Gmail client which checks/returns email message(s) straight from any Gmail-powered account (both private and company). - Visit the following resources to learn more: - [Gmail-tester Website](https://www.npmjs.com/package/gmail-tester) -- [Using the gmail-tester + Puppeteer to poll Gmail inbox](https://medium.com/@sergtimosh/using-gmail-tester-puppeteer-to-poll-gmail-inbox-65bbee17618c) \ No newline at end of file +- [Using the gmail-tester + Puppeteer to poll Gmail inbox](https://medium.com/@sergtimosh/using-gmail-tester-puppeteer-to-poll-gmail-inbox-65bbee17618c) diff --git a/src/data/roadmaps/qa/content/106-qa-reporting/index.md b/src/data/roadmaps/qa/content/106-qa-reporting/index.md index 224c6f89e..439c5c506 100644 --- a/src/data/roadmaps/qa/content/106-qa-reporting/index.md +++ b/src/data/roadmaps/qa/content/106-qa-reporting/index.md @@ -1,6 +1,6 @@ # QA reporting -The International Software Testing Qualifications Board (ISTQB) glossary defines a QA report as: *Documentation summarizing test activities and results*. +The International Software Testing Qualifications Board (ISTQB) glossary defines a QA report as: _Documentation summarizing test activities and results_. By documenting the testing that was conducted and the results that were achieved, QA reports provide valuable insight into the health of the code base and critical metrics. As such, they should be generated on a regular basis to ensure the quality standards are being met. So basically, test reports should document all of the test cases that were performed during software testing, as well as the results of those tests. They should also deliver relevant information about the product and highlight any areas where improvements can be made. @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [How do you write a QA report?](https://www.netguru.com/blog/how-to-write-qa-report) - [How To Write QA Test Summary Report? [13 Easy Steps]](https://www.qatouch.com/blog/how-to-write-qa-test-summary-report/) - diff --git a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/100-grafana.md b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/100-grafana.md index f48f503a5..b4688ba89 100644 --- a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/100-grafana.md +++ b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/100-grafana.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Grafana Website](https://grafana.com/) - [Grafana Official Documentation](https://grafana.com/docs/) - [Grafana Community](https://community.grafana.com/) -- [Grafana Webinars and Videos](https://grafana.com/videos/) \ No newline at end of file +- [Grafana Webinars and Videos](https://grafana.com/videos/) diff --git a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/101-new-relic.md b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/101-new-relic.md index 893ad4324..6bf20f344 100644 --- a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/101-new-relic.md +++ b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/101-new-relic.md @@ -5,4 +5,4 @@ New Relic is an observability platform that helps you build better software. You Visit the following resources to learn more: - [New Relic Website](https://newrelic.com/) -- [Learn New Relic](https://learn.newrelic.com/) \ No newline at end of file +- [Learn New Relic](https://learn.newrelic.com/) diff --git a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/102-run-scope.md b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/102-run-scope.md index 28a61cb68..117b654d3 100644 --- a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/102-run-scope.md +++ b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/102-run-scope.md @@ -1,10 +1,9 @@ # Run scope -A Simple Tool for Monitoring Complex APIs. Verify that the structure and content of your API calls meets your expectations. Powerful and flexible assertions give you total control over defining a successful API call. +A Simple Tool for Monitoring Complex APIs. Verify that the structure and content of your API calls meets your expectations. Powerful and flexible assertions give you total control over defining a successful API call. -Create simple monitors with dynamic data for even the most complex use cases. More than simple string matching, build API validations without any code and use them across local dev, staging and production environments. +Create simple monitors with dynamic data for even the most complex use cases. More than simple string matching, build API validations without any code and use them across local dev, staging and production environments. Visit the following resources to learn more: - [Runscope Website](https://www.runscope.com) - diff --git a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/103-sentry.md b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/103-sentry.md index a30a56a34..da2926eaf 100644 --- a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/103-sentry.md +++ b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/103-sentry.md @@ -4,4 +4,4 @@ Sentry tracks your software performance, measuring metrics like throughput and l Visit the following resources to learn more: -- [Sentry Website](https://sentry.io) \ No newline at end of file +- [Sentry Website](https://sentry.io) diff --git a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/104-kibana.md b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/104-kibana.md index 1560dc13a..d465d64c1 100644 --- a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/104-kibana.md +++ b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/104-kibana.md @@ -1,8 +1,8 @@ # Kibana -Kibana is a free and open user interface that lets you visualize your Elasticsearch data and navigate the Elastic Stack. Do anything from tracking query load to understanding the way requests flow through your apps. +Kibana is a free and open user interface that lets you visualize your Elasticsearch data and navigate the Elastic Stack. Do anything from tracking query load to understanding the way requests flow through your apps. Visit the following resources to learn more: - [Elastic Kibana Website](https://www.elastic.co/kibana/) -- [Learn Kibana](https://www.elastic.co/training/free) \ No newline at end of file +- [Learn Kibana](https://www.elastic.co/training/free) diff --git a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/105-data-dog.md b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/105-data-dog.md index 549d2dba0..0ab8b6275 100644 --- a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/105-data-dog.md +++ b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/105-data-dog.md @@ -1,6 +1,6 @@ # Datadog -Datadog is a monitoring and analytics platform for large-scale applications. It encompasses infrastructure monitoring, application performance monitoring, log management, and user-experience monitoring. Datadog aggregates data across your entire stack with 400+ integrations for troubleshooting, alerting, and graphing. +Datadog is a monitoring and analytics platform for large-scale applications. It encompasses infrastructure monitoring, application performance monitoring, log management, and user-experience monitoring. Datadog aggregates data across your entire stack with 400+ integrations for troubleshooting, alerting, and graphing. Visit the following resources to learn more: diff --git a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/106-pager-duty.md b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/106-pager-duty.md index b09749f7a..50c50c160 100644 --- a/src/data/roadmaps/qa/content/107-qa-monitoring-logs/106-pager-duty.md +++ b/src/data/roadmaps/qa/content/107-qa-monitoring-logs/106-pager-duty.md @@ -5,4 +5,4 @@ Through its SaaS-based platform, PagerDuty empowers developers, DevOps, IT opera Visit the following resources to learn more: - [PagerDuty Website](https://www.pagerduty.com/) -- [Learn PagerDuty](https://university.pagerduty.com/) \ No newline at end of file +- [Learn PagerDuty](https://university.pagerduty.com/) diff --git a/src/data/roadmaps/qa/content/108-qa-vcs/100-git.md b/src/data/roadmaps/qa/content/108-qa-vcs/100-git.md index b69580842..eb35be86b 100644 --- a/src/data/roadmaps/qa/content/108-qa-vcs/100-git.md +++ b/src/data/roadmaps/qa/content/108-qa-vcs/100-git.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Git & GitHub Crash Course For Beginners](https://www.youtube.com/watch?v=SWYqp7iY_Tc) - [Learn Git with Tutorials, News and Tips - Atlassian](https://www.atlassian.com/git) -- [Git Cheat Sheet](https://cs.fyi/guide/git-cheatsheet) \ No newline at end of file +- [Git Cheat Sheet](https://cs.fyi/guide/git-cheatsheet) diff --git a/src/data/roadmaps/qa/content/108-qa-vcs/index.md b/src/data/roadmaps/qa/content/108-qa-vcs/index.md index 4c1542242..e42abdb33 100644 --- a/src/data/roadmaps/qa/content/108-qa-vcs/index.md +++ b/src/data/roadmaps/qa/content/108-qa-vcs/index.md @@ -2,7 +2,6 @@ Version control/source control systems allow developers to track and control changes to code over time. These services often include the ability to make atomic revisions to code, branch/fork off of specific points, and to compare versions of code. They are useful in determining the who, what, when, and why code changes were made. - Visit the following resources to learn more: - [Git](https://git-scm.com/) diff --git a/src/data/roadmaps/qa/content/110-qa-ci-cd/index.md b/src/data/roadmaps/qa/content/110-qa-ci-cd/index.md index 34eb9acd4..2ca30538b 100644 --- a/src/data/roadmaps/qa/content/110-qa-ci-cd/index.md +++ b/src/data/roadmaps/qa/content/110-qa-ci-cd/index.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [What is CI/CD? Continuous Integration and Continuous Delivery](https://www.guru99.com/continuous-integration.html) - [Continuous Integration vs Delivery vs Deployment](https://www.guru99.com/continuous-integration-vs-delivery-vs-deployment.html) -- [CI/CD Pipeline: Learn with Example](https://www.guru99.com/ci-cd-pipeline.html) \ No newline at end of file +- [CI/CD Pipeline: Learn with Example](https://www.guru99.com/ci-cd-pipeline.html) diff --git a/src/data/roadmaps/qa/content/111-qa-headless-testing/100-zombie-js.md b/src/data/roadmaps/qa/content/111-qa-headless-testing/100-zombie-js.md index 40249bea1..4540606c8 100644 --- a/src/data/roadmaps/qa/content/111-qa-headless-testing/100-zombie-js.md +++ b/src/data/roadmaps/qa/content/111-qa-headless-testing/100-zombie-js.md @@ -5,4 +5,4 @@ Zombie.js allows you to run Unit or Integration tests without a real web browser Visit the following resources to learn more: - [Zombie.js Website](http://zombie.js.org/) -- [Getting Started with Zombie.js](https://www.packt.com/getting-started-zombiejs/) \ No newline at end of file +- [Getting Started with Zombie.js](https://www.packt.com/getting-started-zombiejs/) diff --git a/src/data/roadmaps/qa/content/111-qa-headless-testing/101-playwright.md b/src/data/roadmaps/qa/content/111-qa-headless-testing/101-playwright.md index 5f4f8bb68..8ee520645 100644 --- a/src/data/roadmaps/qa/content/111-qa-headless-testing/101-playwright.md +++ b/src/data/roadmaps/qa/content/111-qa-headless-testing/101-playwright.md @@ -5,4 +5,4 @@ Playwright is an open-source test automation library initially developed by Micr Visit the following resources to learn more: - [Playwright Website](https://playwright.dev/) -- [Playwright Tutorial: Learn Basics and Setup](https://www.browserstack.com/guide/playwright-tutorial) \ No newline at end of file +- [Playwright Tutorial: Learn Basics and Setup](https://www.browserstack.com/guide/playwright-tutorial) diff --git a/src/data/roadmaps/qa/content/111-qa-headless-testing/102-puppeteer.md b/src/data/roadmaps/qa/content/111-qa-headless-testing/102-puppeteer.md index 5c306fbec..fefa1da2c 100644 --- a/src/data/roadmaps/qa/content/111-qa-headless-testing/102-puppeteer.md +++ b/src/data/roadmaps/qa/content/111-qa-headless-testing/102-puppeteer.md @@ -5,4 +5,4 @@ Puppeteer is a Node library that provides a high-level API to control headless C Visit the following resources to learn more: - [Puppeteer Website](https://pptr.dev/) -- [How to Use Puppeteer With Node.js](https://www.freecodecamp.org/news/how-to-use-puppeteer-with-nodejs/) \ No newline at end of file +- [How to Use Puppeteer With Node.js](https://www.freecodecamp.org/news/how-to-use-puppeteer-with-nodejs/) diff --git a/src/data/roadmaps/qa/content/111-qa-headless-testing/103-cypress.md b/src/data/roadmaps/qa/content/111-qa-headless-testing/103-cypress.md index 8c41ddc6c..0b04da259 100644 --- a/src/data/roadmaps/qa/content/111-qa-headless-testing/103-cypress.md +++ b/src/data/roadmaps/qa/content/111-qa-headless-testing/103-cypress.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Official Website](https://www.cypress.io/) - [Official Documentation](https://docs.cypress.io/guides/overview/why-cypress#Other) -- [Cypress End-to-End Testing](https://www.youtube.com/watch?v=7N63cMKosIE) \ No newline at end of file +- [Cypress End-to-End Testing](https://www.youtube.com/watch?v=7N63cMKosIE) diff --git a/src/data/roadmaps/qa/content/111-qa-headless-testing/104-headless-chrome.md b/src/data/roadmaps/qa/content/111-qa-headless-testing/104-headless-chrome.md index 6475a20d4..c0e3c5f9a 100644 --- a/src/data/roadmaps/qa/content/111-qa-headless-testing/104-headless-chrome.md +++ b/src/data/roadmaps/qa/content/111-qa-headless-testing/104-headless-chrome.md @@ -4,4 +4,4 @@ Headless Chrome is a way to run the Chrome browser in a headless environment wit Visit the following resources to learn more: -- [Headless Chromium](https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md) \ No newline at end of file +- [Headless Chromium](https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md) diff --git a/src/data/roadmaps/qa/content/111-qa-headless-testing/105-headless-fox.md b/src/data/roadmaps/qa/content/111-qa-headless-testing/105-headless-fox.md index fe2d22cd8..4cef32fec 100644 --- a/src/data/roadmaps/qa/content/111-qa-headless-testing/105-headless-fox.md +++ b/src/data/roadmaps/qa/content/111-qa-headless-testing/105-headless-fox.md @@ -4,4 +4,4 @@ Headless Browser Testing is a process of running the browser tests without the t Visit the following resources to learn more: -- [Using Headless Mode in Firefox](https://hacks.mozilla.org/2017/12/using-headless-mode-in-firefox/) \ No newline at end of file +- [Using Headless Mode in Firefox](https://hacks.mozilla.org/2017/12/using-headless-mode-in-firefox/) diff --git a/src/data/roadmaps/qa/content/111-qa-headless-testing/106-html-unit.md b/src/data/roadmaps/qa/content/111-qa-headless-testing/106-html-unit.md index acea44560..0ded6b8d9 100644 --- a/src/data/roadmaps/qa/content/111-qa-headless-testing/106-html-unit.md +++ b/src/data/roadmaps/qa/content/111-qa-headless-testing/106-html-unit.md @@ -2,9 +2,9 @@ HtmlUnit is a "GUI-Less browser for Java programs". It models HTML documents and provides an API that allows you to invoke pages, fill out forms, click links, etc... just like you do in your "normal" browser. It has fairly good JavaScript support (which is constantly improving) and is able to work even with quite complex AJAX libraries, simulating Chrome, Firefox or Internet Explorer depending on the configuration used. -HtmlUnit is not a generic unit testing framework. It is specifically a way to simulate a browser for testing purposes and is intended to be used within another testing framework such as JUnit or TestNG. +HtmlUnit is not a generic unit testing framework. It is specifically a way to simulate a browser for testing purposes and is intended to be used within another testing framework such as JUnit or TestNG. Visit the following resources to learn more: - [HtmlUnit Website](https://htmlunit.sourceforge.io/) -- [Introduction to HtmlUnit](https://www.baeldung.com/htmlunit) \ No newline at end of file +- [Introduction to HtmlUnit](https://www.baeldung.com/htmlunit) diff --git a/src/data/roadmaps/qa/content/111-qa-headless-testing/index.md b/src/data/roadmaps/qa/content/111-qa-headless-testing/index.md index 1a2de172d..6c69ec718 100644 --- a/src/data/roadmaps/qa/content/111-qa-headless-testing/index.md +++ b/src/data/roadmaps/qa/content/111-qa-headless-testing/index.md @@ -10,4 +10,4 @@ A few example cases where one may use headless browser testing include: Visit the following resources to learn more: -- [What is Headless Browser Testing and Why is it Important?](https://www.browserstack.com/guide/what-is-headless-browser-testing) \ No newline at end of file +- [What is Headless Browser Testing and Why is it Important?](https://www.browserstack.com/guide/what-is-headless-browser-testing) diff --git a/src/data/roadmaps/qa/qa.md b/src/data/roadmaps/qa/qa.md index a15053f93..a35ebfc3c 100644 --- a/src/data/roadmaps/qa/qa.md +++ b/src/data/roadmaps/qa/qa.md @@ -1,50 +1,49 @@ --- -jsonUrl: "/jsons/roadmaps/qa.json" -pdfUrl: "/pdfs/roadmaps/qa.pdf" +jsonUrl: '/jsons/roadmaps/qa.json' +pdfUrl: '/pdfs/roadmaps/qa.pdf' order: 7 -briefTitle: "QA" -briefDescription: "Step by step guide to becoming a modern QA Engineer in 2023" -title: "QA Engineer" -description: "Steps to follow in order to become a modern QA Engineer in 2023" +briefTitle: 'QA' +briefDescription: 'Step by step guide to becoming a modern QA Engineer in 2023' +title: 'QA Engineer' +description: 'Steps to follow in order to become a modern QA Engineer in 2023' isNew: false hasTopics: true dimensions: width: 968 height: 2107.75 schema: - headline: "QA Engineer Roadmap" - description: "Learn to become a QA Engineer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/qa.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'QA Engineer Roadmap' + description: 'Learn to become a QA Engineer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/qa.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "QA Roadmap: Learn to become a modern QA engineer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for modern QA development. Learn to become a modern QA engineer by following the steps, skills, resources and guides listed in this roadmap." + title: 'QA Roadmap: Learn to become a modern QA engineer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for modern QA development. Learn to become a modern QA engineer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a QA engineer" - - "QA engineer" - - "QA skills" - - "QA development skills" - - "QA development skills test" - - "QA engineer roadmap" - - "become a QA engineer" - - "QA engineer career path" - - "skills for QA development" - - "what is QA engineer" - - "QA engineer quiz" - - "QA engineer interview questions" + - 'guide to becoming a QA engineer' + - 'QA engineer' + - 'QA skills' + - 'QA development skills' + - 'QA development skills test' + - 'QA engineer roadmap' + - 'become a QA engineer' + - 'QA engineer career path' + - 'skills for QA development' + - 'what is QA engineer' + - 'QA engineer quiz' + - 'QA engineer interview questions' relatedRoadmaps: - - "frontend" - - "backend" - - "devops" - - "javascript" - - "nodejs" + - 'frontend' + - 'backend' + - 'devops' + - 'javascript' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- - diff --git a/src/data/roadmaps/react-native/react-native.md b/src/data/roadmaps/react-native/react-native.md index 342d0510d..5da0a897e 100644 --- a/src/data/roadmaps/react-native/react-native.md +++ b/src/data/roadmaps/react-native/react-native.md @@ -1,43 +1,43 @@ --- order: 13 -briefTitle: "React Native" -briefDescription: "Step by step guide to becoming a React Native Developer in 2023" -title: "React Native Developer" -description: "Step by step guide to becoming a React Native developer in 2023" +briefTitle: 'React Native' +briefDescription: 'Step by step guide to becoming a React Native Developer in 2023' +title: 'React Native Developer' +description: 'Step by step guide to becoming a React Native developer in 2023' isUpcoming: true seo: - title: "Learn to become a modern React Native developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for react native development. Learn to become a modern React Native developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Learn to become a modern React Native developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for react native development. Learn to become a modern React Native developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a react native developer" - - "guide to becoming a react native developer" - - "react native developer" - - "react native engineer" - - "react native skills" - - "guide to react native" - - "react native roadmap" - - "react native skills" - - "react native skills test" - - "skills for react native" - - "what is react native" - - "react native quiz" - - "react native interview questions" - - "react native engineer roadmap" - - "react native developer roadmap" - - "become a react native developer" - - "react native developer career path" - - "react native developer" - - "modern react native developer" + - 'guide to becoming a react native developer' + - 'guide to becoming a react native developer' + - 'react native developer' + - 'react native engineer' + - 'react native skills' + - 'guide to react native' + - 'react native roadmap' + - 'react native skills' + - 'react native skills test' + - 'skills for react native' + - 'what is react native' + - 'react native quiz' + - 'react native interview questions' + - 'react native engineer roadmap' + - 'react native developer roadmap' + - 'become a react native developer' + - 'react native developer career path' + - 'react native developer' + - 'modern react native developer' relatedRoadmaps: - - "flutter" - - "android" - - "javascript" - - "nodejs" + - 'flutter' + - 'android' + - 'javascript' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" ---- \ No newline at end of file + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' +--- diff --git a/src/data/roadmaps/react/content/101-cli-tools/index.md b/src/data/roadmaps/react/content/101-cli-tools/index.md index bff35fd0d..2a3214c08 100644 --- a/src/data/roadmaps/react/content/101-cli-tools/index.md +++ b/src/data/roadmaps/react/content/101-cli-tools/index.md @@ -2,5 +2,5 @@ Here is the list of most common CLI tools for React development: -* [create-react-app](https://create-react-app.dev) -* [vite](https://vitejs.dev) +- [create-react-app](https://create-react-app.dev) +- [vite](https://vitejs.dev) diff --git a/src/data/roadmaps/react/content/103-rendering/100-component-life-cycle.md b/src/data/roadmaps/react/content/103-rendering/100-component-life-cycle.md index 26b74a8d1..6708fbfb1 100644 --- a/src/data/roadmaps/react/content/103-rendering/100-component-life-cycle.md +++ b/src/data/roadmaps/react/content/103-rendering/100-component-life-cycle.md @@ -6,6 +6,3 @@ Visit the following resources to learn more: - [The Component Lifecycle](https://reactjs.org/docs/react-component.html#the-component-lifecycle) - [Lifecycle of Reactive Effects](https://react.dev/learn/lifecycle-of-reactive-effects) - - - diff --git a/src/data/roadmaps/react/content/103-rendering/101-lists-and-keys.md b/src/data/roadmaps/react/content/103-rendering/101-lists-and-keys.md index 537f42395..c05885fe1 100644 --- a/src/data/roadmaps/react/content/103-rendering/101-lists-and-keys.md +++ b/src/data/roadmaps/react/content/103-rendering/101-lists-and-keys.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [Lists and Keys](https://reactjs.org/docs/lists-and-keys.html) - [Rendering Lists](https://react.dev/learn/rendering-lists) - [List components in React by Example](https://www.robinwieruch.de/react-list-component/) -- [Why do we need the key prop in React?](https://www.robinwieruch.de/react-list-key/) \ No newline at end of file +- [Why do we need the key prop in React?](https://www.robinwieruch.de/react-list-key/) diff --git a/src/data/roadmaps/react/content/103-rendering/104-events.md b/src/data/roadmaps/react/content/103-rendering/104-events.md index 5c9c00bd4..557956ee5 100644 --- a/src/data/roadmaps/react/content/103-rendering/104-events.md +++ b/src/data/roadmaps/react/content/103-rendering/104-events.md @@ -2,8 +2,8 @@ Handling events with React elements is very similar to handling events on DOM elements. There are some syntax differences: -* React events are named using camelCase, rather than lowercase. -* With JSX you pass a function as the event handler, rather than a string. +- React events are named using camelCase, rather than lowercase. +- With JSX you pass a function as the event handler, rather than a string. Visit the following resources to learn more: diff --git a/src/data/roadmaps/react/content/103-rendering/index.md b/src/data/roadmaps/react/content/103-rendering/index.md index 32485d513..6bbc73b0f 100644 --- a/src/data/roadmaps/react/content/103-rendering/index.md +++ b/src/data/roadmaps/react/content/103-rendering/index.md @@ -4,14 +4,13 @@ React follows a declarative approach to rendering components, which means that d The virtual DOM (VDOM) is an important aspect of how React works. It is a lightweight in-memory representation of the DOM (Document Object Model), and it is used to optimize the rendering of components in a React application. -* Components are written as JavaScript classes or functions that define a render method. The render method returns a description of what the component should look like, using JSX syntax. -* When a component is rendered, React creates a virtual DOM (VDOM) representation of the component. The VDOM is a lightweight in-memory representation of the DOM, and it is used to optimize the rendering of components. -* React compares the VDOM representation of the component with the previous VDOM representation (if it exists). If there are differences between the two VDOMs, React calculates the minimum number of DOM updates needed to bring the actual DOM into line with the new VDOM. -* React updates the actual DOM with the minimum number of DOM updates needed to reflect the changes in the VDOM. +- Components are written as JavaScript classes or functions that define a render method. The render method returns a description of what the component should look like, using JSX syntax. +- When a component is rendered, React creates a virtual DOM (VDOM) representation of the component. The VDOM is a lightweight in-memory representation of the DOM, and it is used to optimize the rendering of components. +- React compares the VDOM representation of the component with the previous VDOM representation (if it exists). If there are differences between the two VDOMs, React calculates the minimum number of DOM updates needed to bring the actual DOM into line with the new VDOM. +- React updates the actual DOM with the minimum number of DOM updates needed to reflect the changes in the VDOM. This process is known as reconciliation, and it is an important aspect of how React works. By using a declarative approach and a VDOM, React is able to optimize the rendering of components and improve the performance of web applications. Visit the following resources to learn more: - [React.js under the Hood](https://www.freecodecamp.org/news/react-under-the-hood/) - diff --git a/src/data/roadmaps/react/react.md b/src/data/roadmaps/react/react.md index 189345ff2..67130db5c 100644 --- a/src/data/roadmaps/react/react.md +++ b/src/data/roadmaps/react/react.md @@ -1,60 +1,59 @@ --- -jsonUrl: "/jsons/roadmaps/react.json" -pdfUrl: "/pdfs/roadmaps/react.pdf" +jsonUrl: '/jsons/roadmaps/react.json' +pdfUrl: '/pdfs/roadmaps/react.pdf' order: 2 -briefTitle: "React" -briefDescription: "Step by step guide to become a React Developer in 2023" -title: "React Developer" -description: "Everything that is there to learn about React and the ecosystem in 2023." +briefTitle: 'React' +briefDescription: 'Step by step guide to become a React Developer in 2023' +title: 'React Developer' +description: 'Everything that is there to learn about React and the ecosystem in 2023.' hasTopics: true dimensions: width: 968 height: 1570.26 schema: - headline: "React Developer Roadmap" - description: "Learn to become a React developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/react.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'React Developer Roadmap' + description: 'Learn to become a React developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/react.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' sponsor: - url: "https://bit.ly/3YYcqdt" - title: "Free eBook" - imageUrl: "https://i.imgur.com/RCbFXOY.png" - description: "Learn how to find a GraphQL architecture that scales with this free eBook from Apollo" + url: 'https://bit.ly/3YYcqdt' + title: 'Free eBook' + imageUrl: 'https://i.imgur.com/RCbFXOY.png' + description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' event: - category: "SponsorClick" - action: "Apollo Redirect" - label: "React / Apollo Link" + category: 'SponsorClick' + action: 'Apollo Redirect' + label: 'React / Apollo Link' seo: - title: "React Developer Roadmap: Learn to become a React developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'React Developer Roadmap: Learn to become a React developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "react roadmap 2023" - - "react developer roadmap 2023" - - "guide to becoming a react developer" - - "react developer roadmap" - - "react roadmap" - - "become react developer" - - "react developer skills" - - "react skills test" - - "skills for react development" - - "learn react development" - - "what is react" - - "react quiz" - - "react interview questions" + - 'react roadmap 2023' + - 'react developer roadmap 2023' + - 'guide to becoming a react developer' + - 'react developer roadmap' + - 'react roadmap' + - 'become react developer' + - 'react developer skills' + - 'react skills test' + - 'skills for react development' + - 'learn react development' + - 'what is react' + - 'react quiz' + - 'react interview questions' relatedRoadmaps: - - "frontend" - - "javascript" - - "angular" - - "vue" - - "nodejs" - - "design-system" + - 'frontend' + - 'javascript' + - 'angular' + - 'vue' + - 'nodejs' + - 'design-system' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/software-architect/content/100-software-architect-basics/102-levels-of-architecture/100-application-architecture.md b/src/data/roadmaps/software-architect/content/100-software-architect-basics/102-levels-of-architecture/100-application-architecture.md index 27eae786c..c44bfb7d6 100644 --- a/src/data/roadmaps/software-architect/content/100-software-architect-basics/102-levels-of-architecture/100-application-architecture.md +++ b/src/data/roadmaps/software-architect/content/100-software-architect-basics/102-levels-of-architecture/100-application-architecture.md @@ -1,4 +1,3 @@ # Application Level Architecture The lowest level of architecture. Focus on one single application. Very detailed, low level design. Communication is usually within one development team. - diff --git a/src/data/roadmaps/software-architect/content/100-software-architect-basics/102-levels-of-architecture/index.md b/src/data/roadmaps/software-architect/content/100-software-architect-basics/102-levels-of-architecture/index.md index 4eaab4fa6..52f97c43d 100644 --- a/src/data/roadmaps/software-architect/content/100-software-architect-basics/102-levels-of-architecture/index.md +++ b/src/data/roadmaps/software-architect/content/100-software-architect-basics/102-levels-of-architecture/index.md @@ -2,7 +2,6 @@ Architecture can be done on several “levels” of abstractions. The level influences the importance of necessary skills. As there are many categorizations possible my favorite segmentation includes these 3 levels: -* **Application Level:** The lowest level of architecture. Focus on one single application. Very detailed, low level design. Communication is usually within one development team. -* **Solution Level:** The mid-level of architecture. Focus on one or more applications which fulfill a business need (business solution). Some high, but mainly low-level design. Communication is between multiple development teams. -* **Enterprise Level:** The highest level of architecture. Focus on multiple solutions. High level, abstract design, which needs to be detailed out by solution or application architects. Communication is across the organization. - +- **Application Level:** The lowest level of architecture. Focus on one single application. Very detailed, low level design. Communication is usually within one development team. +- **Solution Level:** The mid-level of architecture. Focus on one or more applications which fulfill a business need (business solution). Some high, but mainly low-level design. Communication is between multiple development teams. +- **Enterprise Level:** The highest level of architecture. Focus on multiple solutions. High level, abstract design, which needs to be detailed out by solution or application architects. Communication is across the organization. diff --git a/src/data/roadmaps/software-architect/content/101-architect-responsibilities.md b/src/data/roadmaps/software-architect/content/101-architect-responsibilities.md index 35707d0ae..0afa49ffa 100644 --- a/src/data/roadmaps/software-architect/content/101-architect-responsibilities.md +++ b/src/data/roadmaps/software-architect/content/101-architect-responsibilities.md @@ -2,16 +2,16 @@ To understand the necessary skills an architect needs, we first need to understand typical activities. The following list contains from my perspective the most important activities: -* Define and decide development technology and platform -* Define development standards, e.g., coding standards, tools, review processes, test approach, etc. -* Support identifying and understanding business requirements -* Design systems and take decisions based on requirements -* Document and communicate architectural definitions, design and decisions -* Check and review architecture and code, e.g., check if defined patterns and coding standards are implemented properly -* Collaborate with other architects and stakeholders -* Coach and consult developers -* Make sure that as implementation takes place, the architecture is being adhered to -* Play a key part in reviewing code -* Detail out and refine higher level design into lower level design +- Define and decide development technology and platform +- Define development standards, e.g., coding standards, tools, review processes, test approach, etc. +- Support identifying and understanding business requirements +- Design systems and take decisions based on requirements +- Document and communicate architectural definitions, design and decisions +- Check and review architecture and code, e.g., check if defined patterns and coding standards are implemented properly +- Collaborate with other architects and stakeholders +- Coach and consult developers +- Make sure that as implementation takes place, the architecture is being adhered to +- Play a key part in reviewing code +- Detail out and refine higher level design into lower level design _Note: Architecture is a continuous activity, especially when it is applied in agile software development. Therefore, these activities are done over and over again._ diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/100-design-and-architecture.md b/src/data/roadmaps/software-architect/content/102-important-skills/100-design-and-architecture.md index 523781a6c..aed1ffd72 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/100-design-and-architecture.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/100-design-and-architecture.md @@ -2,10 +2,10 @@ What makes a good design? This is probably the most important and challenging question. I will make a distinction between theory and practice. To my experience, having a mix of both is most valuable. Let’s start with theory: -* **Know the basic design patterns**: Patterns are one of the most important tools an architect needs to have to develop maintainable systems. With patterns you can reuse designs to solve common problems with proven solutions. The book “Design Patterns: Elements of Reusable Object-Oriented Software” written by John Vlissides, Ralph Johnson, Richard Helm, Erich Gamma is a must-read to everyone who is in software development. Although the patterns were published more than 20 years ago they are still the basis of modern software architecture. For example, the Model-View-Controller (MVC) pattern was described in this book, which is applied in many areas or is the basis for newer pattern, e.g. Model-View-ViewModel (MVVM). -* **Dig deeper into patterns and anti-patterns**: If you already know all basic Gang-of-Four patterns, then extend your knowledge with more software design patterns or dig deeper into your area of interest. One of my favorite books about application integration is “Enterprise Integration Patterns” written by Gregor Hohpe. This book is applicable in various areas whenever two applications need to exchange data, whether it is an old-school file exchange from some legacy systems or a modern microservice architecture. -* **Know quality measures**: Defining architecture is not the end. There are reasons why guidelines and coding standards are defined, applied and controlled. You do this because of quality and non-functional requirements. You want to have a system which is maintainable, reliable, adaptable, secure, testable, scalable, usable, etc. And one piece to achieving all of these quality attributes is applying good architecture work. You can start to learn more about quality measures on Wikipedia. +- **Know the basic design patterns**: Patterns are one of the most important tools an architect needs to have to develop maintainable systems. With patterns you can reuse designs to solve common problems with proven solutions. The book “Design Patterns: Elements of Reusable Object-Oriented Software” written by John Vlissides, Ralph Johnson, Richard Helm, Erich Gamma is a must-read to everyone who is in software development. Although the patterns were published more than 20 years ago they are still the basis of modern software architecture. For example, the Model-View-Controller (MVC) pattern was described in this book, which is applied in many areas or is the basis for newer pattern, e.g. Model-View-ViewModel (MVVM). +- **Dig deeper into patterns and anti-patterns**: If you already know all basic Gang-of-Four patterns, then extend your knowledge with more software design patterns or dig deeper into your area of interest. One of my favorite books about application integration is “Enterprise Integration Patterns” written by Gregor Hohpe. This book is applicable in various areas whenever two applications need to exchange data, whether it is an old-school file exchange from some legacy systems or a modern microservice architecture. +- **Know quality measures**: Defining architecture is not the end. There are reasons why guidelines and coding standards are defined, applied and controlled. You do this because of quality and non-functional requirements. You want to have a system which is maintainable, reliable, adaptable, secure, testable, scalable, usable, etc. And one piece to achieving all of these quality attributes is applying good architecture work. You can start to learn more about quality measures on Wikipedia. Theory is important. Practice is equally—or even more—important if you do not want to become an Ivory Tower Architect. -* **Try out and understand different technology stacks**: I think this is the most important activity if you want to become a better architect. Try out (new) technology stacks and learn their ups and downs. Different or new technology comes with different design aspects and patterns. You most likely do not learn anything from just flipping through abstract slides but by trying it out by yourself and feeling the pain or the relief. An architect should not only have broad, but—also in some areas—deep knowledge. It is not important to master all technology stacks but to have a solid understanding of the most important in your area. Also, try out technology which is not in your area, e.g., if you are deep into SAP R/3 you should also try JavaScript and vice versa. Still, both parties will be surprised about the latest advances in SAP S/4 Hana. For example, you can try it by yourself and take a course at openSAP for free. Be curious and try out new things. Also try out stuff which you did not like some years ago. -* **Analyze and understand applied patterns**: Have a look at any current framework, e.g., Angular. You can study a lot of patterns in practice, e.g., Observables. Try to understand how it is applied in the framework, why it was done. And if you are really dedicated, have a deeper look into the code and understand how it was implemented. -* **Be curious and attend User Groups**. [Meetup](https://www.meetup.com/) +- **Try out and understand different technology stacks**: I think this is the most important activity if you want to become a better architect. Try out (new) technology stacks and learn their ups and downs. Different or new technology comes with different design aspects and patterns. You most likely do not learn anything from just flipping through abstract slides but by trying it out by yourself and feeling the pain or the relief. An architect should not only have broad, but—also in some areas—deep knowledge. It is not important to master all technology stacks but to have a solid understanding of the most important in your area. Also, try out technology which is not in your area, e.g., if you are deep into SAP R/3 you should also try JavaScript and vice versa. Still, both parties will be surprised about the latest advances in SAP S/4 Hana. For example, you can try it by yourself and take a course at openSAP for free. Be curious and try out new things. Also try out stuff which you did not like some years ago. +- **Analyze and understand applied patterns**: Have a look at any current framework, e.g., Angular. You can study a lot of patterns in practice, e.g., Observables. Try to understand how it is applied in the framework, why it was done. And if you are really dedicated, have a deeper look into the code and understand how it was implemented. +- **Be curious and attend User Groups**. [Meetup](https://www.meetup.com/) diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/101-decision-making.md b/src/data/roadmaps/software-architect/content/102-important-skills/101-decision-making.md index 83203c0b5..c28f96280 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/101-decision-making.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/101-decision-making.md @@ -2,9 +2,9 @@ An architect needs to be able to take decisions and guide projects or the entire organization into the right direction. -* **Know what is important**: Do not waste time with unimportant decisions or activities. Learn what is important. To my knowledge there is not a book which has these information. My personal favorites are these 2 characteristics which I usually consider when evaluating if something is important or not: - 1. Conceptional Integrity: If you decide to do it in one way, stick to it, even if it is sometimes better to do it differently. Usually, this leads to a more straightforward overall concept, eases comprehensibility and eases maintenance. - 2. Uniformity: If you for example define and apply naming conventions it is not about upper- or lowercase, but to have it applied everywhere in the same way. -* **Prioritize**: Some decisions are highly critical. If they are not taken early enough workarounds are build up which are often unlikely to be removed later and are a nightmare for maintenance, or worse, developers simply stop working until a decision is taken. In such situations it is sometimes even better to go with a “bad” decision instead of having no decision. But before it comes to this situation, consider prioritizing upcoming decisions. There are different ways to do so. I suggest having a look at the Weighted Shortest Job First (WSJF) model which is widely used within agile software development. Especially the measures time criticality and risk reduction are critical to estimate the priority of architecture decisions. -* **Know your competence**: Do not decide things which are not in your competence. This is critical as it may ruin your position as architect significantly if not considered. To avoid this, clarify with your peers which responsibilities you have and what is part of your role. If there are more than one architect, then you should respect the level of architecture in which you are currently deployed. As an lower level architect you better come up with suggestions for higher level architecture instead of decisions. Further, I recommend checking critical decisions always with a peer. -* **Evaluate multiple options**: Always lay out more than one option if it comes to decisions. In the majority of the cases I was involved in, there was more than one possible (good) option. Going with only one option is bad in two respects: First, it seems that you did not do your job properly and secondly it impedes making proper decisions. By defining measures, options can be compared based on facts instead of gut feelings, e.g. license costs or maturity. This usually leads to better and more sustainable decisions. Further, it eases to sell the decision to different stakeholders. Besides, if you do not have evaluated options properly you may miss arguments when it comes to discussions. +- **Know what is important**: Do not waste time with unimportant decisions or activities. Learn what is important. To my knowledge there is not a book which has these information. My personal favorites are these 2 characteristics which I usually consider when evaluating if something is important or not: + 1. Conceptional Integrity: If you decide to do it in one way, stick to it, even if it is sometimes better to do it differently. Usually, this leads to a more straightforward overall concept, eases comprehensibility and eases maintenance. + 2. Uniformity: If you for example define and apply naming conventions it is not about upper- or lowercase, but to have it applied everywhere in the same way. +- **Prioritize**: Some decisions are highly critical. If they are not taken early enough workarounds are build up which are often unlikely to be removed later and are a nightmare for maintenance, or worse, developers simply stop working until a decision is taken. In such situations it is sometimes even better to go with a “bad” decision instead of having no decision. But before it comes to this situation, consider prioritizing upcoming decisions. There are different ways to do so. I suggest having a look at the Weighted Shortest Job First (WSJF) model which is widely used within agile software development. Especially the measures time criticality and risk reduction are critical to estimate the priority of architecture decisions. +- **Know your competence**: Do not decide things which are not in your competence. This is critical as it may ruin your position as architect significantly if not considered. To avoid this, clarify with your peers which responsibilities you have and what is part of your role. If there are more than one architect, then you should respect the level of architecture in which you are currently deployed. As an lower level architect you better come up with suggestions for higher level architecture instead of decisions. Further, I recommend checking critical decisions always with a peer. +- **Evaluate multiple options**: Always lay out more than one option if it comes to decisions. In the majority of the cases I was involved in, there was more than one possible (good) option. Going with only one option is bad in two respects: First, it seems that you did not do your job properly and secondly it impedes making proper decisions. By defining measures, options can be compared based on facts instead of gut feelings, e.g. license costs or maturity. This usually leads to better and more sustainable decisions. Further, it eases to sell the decision to different stakeholders. Besides, if you do not have evaluated options properly you may miss arguments when it comes to discussions. diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/102-simplifying-things.md b/src/data/roadmaps/software-architect/content/102-important-skills/102-simplifying-things.md index 4967ffa4a..ab64863b1 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/102-simplifying-things.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/102-simplifying-things.md @@ -2,7 +2,7 @@ Keep in mind the problem-solving principle Occam’s Razor which states to prefer simplicity. I interpret the principle as following: If you have too many assumptions about the problem to solve your solution will probably be wrong or lead to an unnecessary complex solution. Assumptions should be reduced (simplified) to come to a good solution. -* **Shake the solution**: To get solutions simplified, it often helps to “shake” the solution and look at them from different positions. Try to shape the solution by thinking top-down and again bottom-up. If you have a data flow or process, then first think left to right and again right to left. Ask questions such as: “What happens to your solution in a perfect world?” Or: “What would company / person X do?” (Where X is probably not your competitor, but one of the GAFA (Google, Apple, Facebook, & Amazon) companies.) Both questions force you to reduce assumptions as suggested by Occam’s Razor. -* **Take a step back**: After intense and long discussions, highly complex scribbles are often the results. You should never ever see these as the final results. Take a step back: Have a look at the big picture again (abstract level). Does it still make sense? Then go through it on the abstract level again and refactor. Sometimes it helps to stop a discussion and continue the next day. At least my brain needs some time to process and to come up with better, more elegant and simpler solutions. -* **Divide and Conquer**: Simplify the problem by dividing it into smaller pieces. Then solve them independently. Afterwards validate if the small pieces match together. Take the step back to have a look at the overall picture for this. -* **Refactoring is not evil**: It is totally ok to start with a more complex solution if no better idea can be found. If the solution is making troubles you can later rethink the solution and apply your learning. Refactoring is not evil. But before you start refactoring, keep in mind to have (1) enough automated tests in place which can ensure the proper functionality of the system and (2) the buy-in from your stakeholders. To learn more about refactoring I suggest reading “Refactoring. Improving the Design of Existing Code” by Martin Fowler. +- **Shake the solution**: To get solutions simplified, it often helps to “shake” the solution and look at them from different positions. Try to shape the solution by thinking top-down and again bottom-up. If you have a data flow or process, then first think left to right and again right to left. Ask questions such as: “What happens to your solution in a perfect world?” Or: “What would company / person X do?” (Where X is probably not your competitor, but one of the GAFA (Google, Apple, Facebook, & Amazon) companies.) Both questions force you to reduce assumptions as suggested by Occam’s Razor. +- **Take a step back**: After intense and long discussions, highly complex scribbles are often the results. You should never ever see these as the final results. Take a step back: Have a look at the big picture again (abstract level). Does it still make sense? Then go through it on the abstract level again and refactor. Sometimes it helps to stop a discussion and continue the next day. At least my brain needs some time to process and to come up with better, more elegant and simpler solutions. +- **Divide and Conquer**: Simplify the problem by dividing it into smaller pieces. Then solve them independently. Afterwards validate if the small pieces match together. Take the step back to have a look at the overall picture for this. +- **Refactoring is not evil**: It is totally ok to start with a more complex solution if no better idea can be found. If the solution is making troubles you can later rethink the solution and apply your learning. Refactoring is not evil. But before you start refactoring, keep in mind to have (1) enough automated tests in place which can ensure the proper functionality of the system and (2) the buy-in from your stakeholders. To learn more about refactoring I suggest reading “Refactoring. Improving the Design of Existing Code” by Martin Fowler. diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/103-how-to-code.md b/src/data/roadmaps/software-architect/content/102-important-skills/103-how-to-code.md index 4ee5c12e8..5e5aab289 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/103-how-to-code.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/103-how-to-code.md @@ -2,13 +2,13 @@ Even as an Enterprise Architect, the most abstract level of architecture, you should still know what developers are doing on their daily basis. And if you do not understand how this is done, you may face two major problems: -* Developers won’t accept your sayings. -* You do not understand challenges and needs of developers. -* **Have a side project**: The purpose of this is to try out new technologies and tools to find out how development is done today and in the future. Experience is the combination of observations, emotions and hypothesis (“Experience and Knowledge Management in Software Engineering” by Kurt Schneider). Reading a tutorial or some pros and cons is good. But this is just “book knowledge”. Only if you try out things by yourself you can experience emotions and can built up hypothesis about why something is good or bad. And the longer you work with a technology the better your hypothesis will get. This will help you to take better decisions in your day to day work. As I started programming I had no code completion and only some utility libraries to speed up development. Obviously, with this background I would make wrong decisions today. Today, we have tons of programming languages, frameworks, tools, processes and practices. Only if you have some experience and a rough overview in the major trends you are able to take part of the conversation and to steer development into the right direction. -* **Find the right things to try out**: You cannot try out everything. This is simply impossible. You need a more structured approach. One source I recently discovered is the [Technology Radar](https://www.thoughtworks.com/radar) from ThoughtWorks. They categorize technologies, tools, platforms, languages and frameworks into four categories: - * Adopt: “strong feeling to be ready for enterprise usage”. - * Trial: “enterprise should try it in one project that can handle the risk”. - * Assess: “explore how it affects your enterprise” - * Hold: “process with caution”. +- Developers won’t accept your sayings. +- You do not understand challenges and needs of developers. +- **Have a side project**: The purpose of this is to try out new technologies and tools to find out how development is done today and in the future. Experience is the combination of observations, emotions and hypothesis (“Experience and Knowledge Management in Software Engineering” by Kurt Schneider). Reading a tutorial or some pros and cons is good. But this is just “book knowledge”. Only if you try out things by yourself you can experience emotions and can built up hypothesis about why something is good or bad. And the longer you work with a technology the better your hypothesis will get. This will help you to take better decisions in your day to day work. As I started programming I had no code completion and only some utility libraries to speed up development. Obviously, with this background I would make wrong decisions today. Today, we have tons of programming languages, frameworks, tools, processes and practices. Only if you have some experience and a rough overview in the major trends you are able to take part of the conversation and to steer development into the right direction. +- **Find the right things to try out**: You cannot try out everything. This is simply impossible. You need a more structured approach. One source I recently discovered is the [Technology Radar](https://www.thoughtworks.com/radar) from ThoughtWorks. They categorize technologies, tools, platforms, languages and frameworks into four categories: + - Adopt: “strong feeling to be ready for enterprise usage”. + - Trial: “enterprise should try it in one project that can handle the risk”. + - Assess: “explore how it affects your enterprise” + - Hold: “process with caution”. With this categorization it is easier to get an overview of new things and their readiness to better evaluate which trend to explore next. diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/104-documentation.md b/src/data/roadmaps/software-architect/content/102-important-skills/104-documentation.md index 9d64d2ba6..77e45919b 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/104-documentation.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/104-documentation.md @@ -2,7 +2,7 @@ Architectural documentation is sometimes more and sometimes less important. Important documents are for example architectural decisions or code guidelines. Initial documentation is often required before coding starts and need to be refined continuously. Other documentation can be automatically generated as code can also be documentation, e.g. UML class diagrams. -* **Clean Code**: Code is the best documentation if done right. A good architect should be capable to distinguish between good and bad code. A really great resource to learn more about good and bad code is the book “Clean Code” by Robert C. Martin. -* **Generate documentation where possible**: Systems are changing quickly and it is hard to update the documentation. Whether it is about APIs or system landscapes in form of CMDBs (Configuration management database): The underlying information often changes too fast to keep the corresponding documentation up to date by hand. Example: For APIs you could auto generate documentation based on the definition file if you are model driven, or directly from the source code. A lot of tools exist for that, I think Swagger and RAML are a good starting point to learn more. -* **As much as necessary, as little as possible**: Whatever you need to document, e.g., decision papers, try to focus on only one thing at a time and include only the necessary information for this one thing. Extensive documentation is hard to read and to understand. Additional information should be stored in the appendix. Especially for decision papers it is more important to tell a convincing story instead of just throwing tons of arguments. Further, this saves you and your co-workers, who have to read it, a lot of time. Have a look at some documentation you have done in the past (source code, models, decision papers, etc.) and ask yourself the following questions: “Are all necessary information included to understand it?”, “Which information are really required and which could be omitted?” and “Does the documentation has a red line?”. -* **Learn more about architecture frameworks**: This point could be applied to all other “technical” points as well. I put it here, as frameworks like TOGAF or Zachmann are providing “tools” which feel heavy on the documentation side, although their added value is not limited to documentation. Getting certified in such a framework teaches you to tackle architecture more systematically. +- **Clean Code**: Code is the best documentation if done right. A good architect should be capable to distinguish between good and bad code. A really great resource to learn more about good and bad code is the book “Clean Code” by Robert C. Martin. +- **Generate documentation where possible**: Systems are changing quickly and it is hard to update the documentation. Whether it is about APIs or system landscapes in form of CMDBs (Configuration management database): The underlying information often changes too fast to keep the corresponding documentation up to date by hand. Example: For APIs you could auto generate documentation based on the definition file if you are model driven, or directly from the source code. A lot of tools exist for that, I think Swagger and RAML are a good starting point to learn more. +- **As much as necessary, as little as possible**: Whatever you need to document, e.g., decision papers, try to focus on only one thing at a time and include only the necessary information for this one thing. Extensive documentation is hard to read and to understand. Additional information should be stored in the appendix. Especially for decision papers it is more important to tell a convincing story instead of just throwing tons of arguments. Further, this saves you and your co-workers, who have to read it, a lot of time. Have a look at some documentation you have done in the past (source code, models, decision papers, etc.) and ask yourself the following questions: “Are all necessary information included to understand it?”, “Which information are really required and which could be omitted?” and “Does the documentation has a red line?”. +- **Learn more about architecture frameworks**: This point could be applied to all other “technical” points as well. I put it here, as frameworks like TOGAF or Zachmann are providing “tools” which feel heavy on the documentation side, although their added value is not limited to documentation. Getting certified in such a framework teaches you to tackle architecture more systematically. diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/105-communication.md b/src/data/roadmaps/software-architect/content/102-important-skills/105-communication.md index 795342228..91e683d6c 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/105-communication.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/105-communication.md @@ -2,9 +2,9 @@ From my observations this is one of the most underestimated skill. If you are brilliant in design but cannot communicate your ideas, your thoughts are likely to have less impact or even fail to succeed. -* **Learn how to communicate your ideas**: When collaborating on a board or flip chart, it is essential to know how to use it properly in order to structure you and your peers’ thoughts. I found the book “UZMO — Thinking With Your Pen” to be a good resource to enhance my skills in this area. As an architect you usually do not only participating in a meeting, usually you need to drive the meeting and to moderate it. -* **Give talks to large groups**: Presenting your ideas to a small or large group should be doable for you. If you feel uncomfortable with this, start presenting to your best friend. Enlarge the group slowly. This is something which you can only learn by doing and by leaving your personal comfort zone. Be patient with yourself, this process may take some time. -* **Find the right level of communication**: Different stakeholders have different interests and views. They need to be addressed individually on their level. Before you communicate, step back and check if the information you want to share have the right level, regarding abstractness, content, goals, motivations, etc. Example: A developer is usually interested in the very little detail of the solution, whereas a manager prefers to know which option saves most money. -* **Communicate often**: A brilliant architecture is worthless if nobody knows about it. Distribute the target architecture and the thoughts behind it, regularly and on every organizational level. Schedule meetings with developers, architects and managers to show them the desired or defined way. -* **Be transparent**: Regular communication mitigates missing transparency only partially. You need to make the reason behind decisions transparent. Especially, if people are not involved in the decision-making process it is hard to understand and to follow the decision and rationale behind it. -* **Be always prepared to give a presentation**: There is always someone with questions and you want to give the right answers immediately. Try to always have the most important slides in a consolidated set which you can show and explain. It saves you a lot of time and it gives security to yourself. +- **Learn how to communicate your ideas**: When collaborating on a board or flip chart, it is essential to know how to use it properly in order to structure you and your peers’ thoughts. I found the book “UZMO — Thinking With Your Pen” to be a good resource to enhance my skills in this area. As an architect you usually do not only participating in a meeting, usually you need to drive the meeting and to moderate it. +- **Give talks to large groups**: Presenting your ideas to a small or large group should be doable for you. If you feel uncomfortable with this, start presenting to your best friend. Enlarge the group slowly. This is something which you can only learn by doing and by leaving your personal comfort zone. Be patient with yourself, this process may take some time. +- **Find the right level of communication**: Different stakeholders have different interests and views. They need to be addressed individually on their level. Before you communicate, step back and check if the information you want to share have the right level, regarding abstractness, content, goals, motivations, etc. Example: A developer is usually interested in the very little detail of the solution, whereas a manager prefers to know which option saves most money. +- **Communicate often**: A brilliant architecture is worthless if nobody knows about it. Distribute the target architecture and the thoughts behind it, regularly and on every organizational level. Schedule meetings with developers, architects and managers to show them the desired or defined way. +- **Be transparent**: Regular communication mitigates missing transparency only partially. You need to make the reason behind decisions transparent. Especially, if people are not involved in the decision-making process it is hard to understand and to follow the decision and rationale behind it. +- **Be always prepared to give a presentation**: There is always someone with questions and you want to give the right answers immediately. Try to always have the most important slides in a consolidated set which you can show and explain. It saves you a lot of time and it gives security to yourself. diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/106-estimate-and-evaluate.md b/src/data/roadmaps/software-architect/content/102-important-skills/106-estimate-and-evaluate.md index 3102593e6..08309d7c1 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/106-estimate-and-evaluate.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/106-estimate-and-evaluate.md @@ -1,8 +1,8 @@ # Estimate and Evaluate -* **Know basic project management principles**: As architect or lead developer you are often asked for estimates to realize your ideas: How long, how much, how many people, which skills, etc.? Of course, if you plan to introduce new tools or frameworks you need to have an answer for these kind of “management” questions. Initially, you should be able to give a rough estimate, like days, months or years. And do not forget that it is not only about implementing, there are more activities to consider, like requirements engineering, testing and fixing bugs. Therefore, you should know the activities the used software development process. One thing you can apply to get better estimates, is to use past data and derive your prediction from that. If you do not have past data, you can also try approaches such as COCOMO by Barry W. Boehm. If you are deployed in an agile project, learn how to estimate and to plan properly: The book “Agile Estimating and Planning” by Mike Cohn provides a solid overview in this area. -* **Evaluate “unknown” architecture**: As architect you should also be able to evaluate the suitability of architectures for the current or future context(s). This is not an easy task but you can prepare for it by having a set of questions at hand which are common for every architecture. And it’s not only about architecture but also about how the system is managed, as this also gives you insights about the quality. I suggest to always have some questions prepared and ready to use. Some ideas for general questions: - * Design practices: Which patterns does the architecture follow? Are they consequently and correctly used? Does the design follow a red line or is there an uncontrolled growth? Is there a clear structure and separation of concerns? - * Development practices: Code guidelines in place and followed? How is the code versioned? Deployment practices? - * Quality assurance: Test automation coverage? Static code analysis in place and good results? Peer reviews in place? - * Security: Which security concepts are in place? Built-in security? Penetration tests or automated security analysis tools in place and regularly used? +- **Know basic project management principles**: As architect or lead developer you are often asked for estimates to realize your ideas: How long, how much, how many people, which skills, etc.? Of course, if you plan to introduce new tools or frameworks you need to have an answer for these kind of “management” questions. Initially, you should be able to give a rough estimate, like days, months or years. And do not forget that it is not only about implementing, there are more activities to consider, like requirements engineering, testing and fixing bugs. Therefore, you should know the activities the used software development process. One thing you can apply to get better estimates, is to use past data and derive your prediction from that. If you do not have past data, you can also try approaches such as COCOMO by Barry W. Boehm. If you are deployed in an agile project, learn how to estimate and to plan properly: The book “Agile Estimating and Planning” by Mike Cohn provides a solid overview in this area. +- **Evaluate “unknown” architecture**: As architect you should also be able to evaluate the suitability of architectures for the current or future context(s). This is not an easy task but you can prepare for it by having a set of questions at hand which are common for every architecture. And it’s not only about architecture but also about how the system is managed, as this also gives you insights about the quality. I suggest to always have some questions prepared and ready to use. Some ideas for general questions: + - Design practices: Which patterns does the architecture follow? Are they consequently and correctly used? Does the design follow a red line or is there an uncontrolled growth? Is there a clear structure and separation of concerns? + - Development practices: Code guidelines in place and followed? How is the code versioned? Deployment practices? + - Quality assurance: Test automation coverage? Static code analysis in place and good results? Peer reviews in place? + - Security: Which security concepts are in place? Built-in security? Penetration tests or automated security analysis tools in place and regularly used? diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/107-balance.md b/src/data/roadmaps/software-architect/content/102-important-skills/107-balance.md index f20746d66..6592aa76f 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/107-balance.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/107-balance.md @@ -1,7 +1,7 @@ # Balance -* **Quality comes at a price**: Earlier I talked about quality and non-functional requirements. If you overdo architecture it will increase costs and probably lower speed of development. You need to balance architectural and functional requirements. Over engineering should be avoided. -* **Solve contradicting goals**: A classic example of contradicting goals are short- and long-term goals. Projects often tend to build the simplest solution whereas an architect has the long-term vision in mind. Often, the simple solution does not fit into the long-term solution and is at risk to be thrown away later (sunk costs). To avoid implementation into the wrong direction, two things need to be considered: - 1. Developers and business need to understand the long term vision and their benefits in order to adapt their solution and - 2. managers who are responsible for budget need to be involved to understand the financial impact. It is not necessary to have 100% of the long term vision in place directly, but the developed piece should fit into it. -* **Conflict management**: Architects are often the glue between multiple groups with different backgrounds. This may lead to conflicts on different levels of communication. To find a balanced solution which also reflect long-term, strategic goals, it is often the role of architects to help overcome the conflict. My starting point regarding communication theory was the “Four-Ears Model” of Schulze von Thun. Based on this model a lot can be shown and deducted. But this theory needs some practice, which should be experienced during communication seminars. +- **Quality comes at a price**: Earlier I talked about quality and non-functional requirements. If you overdo architecture it will increase costs and probably lower speed of development. You need to balance architectural and functional requirements. Over engineering should be avoided. +- **Solve contradicting goals**: A classic example of contradicting goals are short- and long-term goals. Projects often tend to build the simplest solution whereas an architect has the long-term vision in mind. Often, the simple solution does not fit into the long-term solution and is at risk to be thrown away later (sunk costs). To avoid implementation into the wrong direction, two things need to be considered: + 1. Developers and business need to understand the long term vision and their benefits in order to adapt their solution and + 2. managers who are responsible for budget need to be involved to understand the financial impact. It is not necessary to have 100% of the long term vision in place directly, but the developed piece should fit into it. +- **Conflict management**: Architects are often the glue between multiple groups with different backgrounds. This may lead to conflicts on different levels of communication. To find a balanced solution which also reflect long-term, strategic goals, it is often the role of architects to help overcome the conflict. My starting point regarding communication theory was the “Four-Ears Model” of Schulze von Thun. Based on this model a lot can be shown and deducted. But this theory needs some practice, which should be experienced during communication seminars. diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/108-consult-and-coach.md b/src/data/roadmaps/software-architect/content/102-important-skills/108-consult-and-coach.md index d0a6b8981..78fef97b6 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/108-consult-and-coach.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/108-consult-and-coach.md @@ -2,6 +2,6 @@ Being pro-active is probably the best you can do when it comes to consulting and coaching. If you are asked, it is often too late. And cleaning up on the architecture site is something which you want to avoid. You need to somehow foresee the next weeks, months or even years and prepare yourself and the organization for the next steps. -* **Have a vision**: If you are deployed in a project, whether it is a traditional waterfall like approach or agile, you always need to have a vision of your mid- and long-term goals you want to achieve. This is not a detailed concept, but more a road-map towards everyone can work. As you cannot achieve everything at once (it is a journey) I prefer to use maturity models. They give a clear structure which can be easily consumed and give the current status of progress at every time. For different aspects I use different models, e.g. development practices or continuous delivery. Every level in the maturity model has clear requirements which follow the SMART criteria in order to ease measuring if you have achieved it or not. One nice example I found is for continues delivery. -* **Build a community of practice (CoP)**: Exchanging experience and knowledge among a common interest group helps distributing ideas and standardizing approaches. For example you could gather all JavaScript developer and architects in one room, every three months or so, and discuss past and current challenges and how they were tackled or new methodologies and approaches. Architects can share, discuss and align their visions, developers can share experience and learn from their peers. Such a round can be highly beneficial for the enterprise but also for the individual itself, as it helps building a stronger network and distributes ideas. Also check out the article Communities of Practice from the SAFe Framework which explains the CoP concept in an agile setting. -* **Conduct open door sessions**: One source of misconceptions or ambiguity is lack of communication. Block a fixed time slot, e.g. 30 min every week, for exchanging hot topics with your peers. This session has no agenda everything can be discussed. Try to solve minor things on the spot. Schedule follow-ups on the more complex topics. +- **Have a vision**: If you are deployed in a project, whether it is a traditional waterfall like approach or agile, you always need to have a vision of your mid- and long-term goals you want to achieve. This is not a detailed concept, but more a road-map towards everyone can work. As you cannot achieve everything at once (it is a journey) I prefer to use maturity models. They give a clear structure which can be easily consumed and give the current status of progress at every time. For different aspects I use different models, e.g. development practices or continuous delivery. Every level in the maturity model has clear requirements which follow the SMART criteria in order to ease measuring if you have achieved it or not. One nice example I found is for continues delivery. +- **Build a community of practice (CoP)**: Exchanging experience and knowledge among a common interest group helps distributing ideas and standardizing approaches. For example you could gather all JavaScript developer and architects in one room, every three months or so, and discuss past and current challenges and how they were tackled or new methodologies and approaches. Architects can share, discuss and align their visions, developers can share experience and learn from their peers. Such a round can be highly beneficial for the enterprise but also for the individual itself, as it helps building a stronger network and distributes ideas. Also check out the article Communities of Practice from the SAFe Framework which explains the CoP concept in an agile setting. +- **Conduct open door sessions**: One source of misconceptions or ambiguity is lack of communication. Block a fixed time slot, e.g. 30 min every week, for exchanging hot topics with your peers. This session has no agenda everything can be discussed. Try to solve minor things on the spot. Schedule follow-ups on the more complex topics. diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/109-marketing-skills.md b/src/data/roadmaps/software-architect/content/102-important-skills/109-marketing-skills.md index 12e3f0407..e6a206ee5 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/109-marketing-skills.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/109-marketing-skills.md @@ -2,9 +2,9 @@ Your ideas are great and you have communicated them well but still nobody wants to follow? Then you probably lack marketing skills. -* **Motivate and convince**: How do companies convince you of buying a product? They demonstrate its value and benefits. But not just with 5 bullet points. They wrap it nicely and make it as easy as possible to digest. - * Prototypes: Show a prototype of your idea. There are plenty of tools for creating prototypes. In the context of enterprises who love SAP check out build.me in which you can create nice looking and clickable UI5 apps fast and easy. - * Show a video: Instead of “boring slides” you can also show a video which demonstrates your idea or at least the direction. But please, don’t overdo marketing: In the long term, content is king. If your words do not come true, this will damage your reputation in the long term. -* **Fight for your ideas and be persistent**: People sometime do not like your ideas or they are just too lazy to follow them. If you are really convinced by your ideas, you should continuously go after them and “fight”. This is sometimes necessary. Architecture decisions with long term goals are often not the easiest one’s: Developers do not like them, as they are more complex to develop. Managers do not like them, as they are more expensive in the short term. This is your job to be persistent and to negotiate. -* **Find allies**: Establishing or enforcing your ideas on your own can be hard or even impossible. Try to find allies who can support and help convincing others. Use your network. If you do not have one yet, start building it now. You could start by talking to your (open-minded) peers about your ideas. If they like it, or at least parts of it, it is likely that they support your idea if asked by others (“The idea by X was interesting.”). If they don’t like it, ask for the why: Maybe you have missed something? Or your story is not convincing enough? Next step is to find allies with decision power. Ask for an open-minded discussion. If you fear the discussion, remember that sometimes you need to leave your comfort zone. -* **Repeat It, Believe It**: “[…] studies show that repeated exposure to an opinion makes people believe the opinion is more prevalent, even if the source of that opinion is only a single person.” (Source: The Financial Brand) If you publish few messages often enough, it can help to convince people more easily. But be aware: From my perspective such a strategy should be used wisely as it could backfire as a lousy marketing trick. +- **Motivate and convince**: How do companies convince you of buying a product? They demonstrate its value and benefits. But not just with 5 bullet points. They wrap it nicely and make it as easy as possible to digest. + - Prototypes: Show a prototype of your idea. There are plenty of tools for creating prototypes. In the context of enterprises who love SAP check out build.me in which you can create nice looking and clickable UI5 apps fast and easy. + - Show a video: Instead of “boring slides” you can also show a video which demonstrates your idea or at least the direction. But please, don’t overdo marketing: In the long term, content is king. If your words do not come true, this will damage your reputation in the long term. +- **Fight for your ideas and be persistent**: People sometime do not like your ideas or they are just too lazy to follow them. If you are really convinced by your ideas, you should continuously go after them and “fight”. This is sometimes necessary. Architecture decisions with long term goals are often not the easiest one’s: Developers do not like them, as they are more complex to develop. Managers do not like them, as they are more expensive in the short term. This is your job to be persistent and to negotiate. +- **Find allies**: Establishing or enforcing your ideas on your own can be hard or even impossible. Try to find allies who can support and help convincing others. Use your network. If you do not have one yet, start building it now. You could start by talking to your (open-minded) peers about your ideas. If they like it, or at least parts of it, it is likely that they support your idea if asked by others (“The idea by X was interesting.”). If they don’t like it, ask for the why: Maybe you have missed something? Or your story is not convincing enough? Next step is to find allies with decision power. Ask for an open-minded discussion. If you fear the discussion, remember that sometimes you need to leave your comfort zone. +- **Repeat It, Believe It**: “[…] studies show that repeated exposure to an opinion makes people believe the opinion is more prevalent, even if the source of that opinion is only a single person.” (Source: The Financial Brand) If you publish few messages often enough, it can help to convince people more easily. But be aware: From my perspective such a strategy should be used wisely as it could backfire as a lousy marketing trick. diff --git a/src/data/roadmaps/software-architect/content/102-important-skills/index.md b/src/data/roadmaps/software-architect/content/102-important-skills/index.md index b0c1733ca..938a8ac36 100644 --- a/src/data/roadmaps/software-architect/content/102-important-skills/index.md +++ b/src/data/roadmaps/software-architect/content/102-important-skills/index.md @@ -2,13 +2,13 @@ To support the laid-out activities specific skills are required. From my experience, read books and discussions we can boil this down to these ten skills every software architect should have: -* Design -* Decide -* Simplify -* Code -* Document -* Communicate -* Estimate -* Balance -* Consult -* Market +- Design +- Decide +- Simplify +- Code +- Document +- Communicate +- Estimate +- Balance +- Consult +- Market diff --git a/src/data/roadmaps/software-architect/content/103-technical-skills.md b/src/data/roadmaps/software-architect/content/103-technical-skills.md index 35054383b..2206a6ced 100644 --- a/src/data/roadmaps/software-architect/content/103-technical-skills.md +++ b/src/data/roadmaps/software-architect/content/103-technical-skills.md @@ -1,10 +1,10 @@ # Technical Skills -* Experience in software development -* Experience in project management -* Knowledge of one or more programming languages, such as Java, Python, JavaScript, Ruby, Rust, and C -* Knowledge of different development platforms -* Understanding of web applications, cybersecurity, and open source technologies -* Proficiency in analyzing code for issues and errors -* Experience in database platforms -* Experience with Operations and DevOps Skills +- Experience in software development +- Experience in project management +- Knowledge of one or more programming languages, such as Java, Python, JavaScript, Ruby, Rust, and C +- Knowledge of different development platforms +- Understanding of web applications, cybersecurity, and open source technologies +- Proficiency in analyzing code for issues and errors +- Experience in database platforms +- Experience with Operations and DevOps Skills diff --git a/src/data/roadmaps/software-architect/content/104-programming-languages/101-python.md b/src/data/roadmaps/software-architect/content/104-programming-languages/101-python.md index abb61f99c..64af3f12b 100644 --- a/src/data/roadmaps/software-architect/content/104-programming-languages/101-python.md +++ b/src/data/roadmaps/software-architect/content/104-programming-languages/101-python.md @@ -1,6 +1,6 @@ # Python -Python is a multi-paradigm language. Being an interpreted language, code is executed as soon as it is written and the Python syntax allows for writing code in functional, procedural or object-oriented programmatic ways. Python is frequently recommended as the first language new coders should learn, because of its focus on readability, consistency, and ease of use. This comes with some downsides, as the language is not especially performant in most production tasks. +Python is a multi-paradigm language. Being an interpreted language, code is executed as soon as it is written and the Python syntax allows for writing code in functional, procedural or object-oriented programmatic ways. Python is frequently recommended as the first language new coders should learn, because of its focus on readability, consistency, and ease of use. This comes with some downsides, as the language is not especially performant in most production tasks. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/104-programming-languages/105-dotnet-framework.md b/src/data/roadmaps/software-architect/content/104-programming-languages/105-dotnet-framework.md index edf279acc..e1da2b9c0 100644 --- a/src/data/roadmaps/software-architect/content/104-programming-languages/105-dotnet-framework.md +++ b/src/data/roadmaps/software-architect/content/104-programming-languages/105-dotnet-framework.md @@ -1,10 +1,9 @@ -# .NET Framework - -.NET is an open-source platform with tools and libraries for building web, mobile, desktop, games, IoT, cloud, and microservices. - -Officially supported languages in .NET: C#, F#, Visual Basic. - - +# .NET Framework + +.NET is an open-source platform with tools and libraries for building web, mobile, desktop, games, IoT, cloud, and microservices. + +Officially supported languages in .NET: C#, F#, Visual Basic. + Visit the following resources to learn more: - [.NET Website](https://dotnet.microsoft.com/en-us/) @@ -12,4 +11,4 @@ Visit the following resources to learn more: - [Why Choose .NET?](https://dotnet.microsoft.com/en-us/platform/why-choose-dotnet) - [C# Documentation](https://learn.microsoft.com/en-us/dotnet/csharp/?WT.mc_id=dotnet-35129-website) - [F# Documentation](https://learn.microsoft.com/en-us/dotnet/fsharp/?WT.mc_id=dotnet-35129-website) -- [Visual Basic Documentation](https://learn.microsoft.com/en-us/dotnet/visual-basic/?WT.mc_id=dotnet-35129-website) \ No newline at end of file +- [Visual Basic Documentation](https://learn.microsoft.com/en-us/dotnet/visual-basic/?WT.mc_id=dotnet-35129-website) diff --git a/src/data/roadmaps/software-architect/content/104-programming-languages/index.md b/src/data/roadmaps/software-architect/content/104-programming-languages/index.md index a14baa504..54c353aeb 100644 --- a/src/data/roadmaps/software-architect/content/104-programming-languages/index.md +++ b/src/data/roadmaps/software-architect/content/104-programming-languages/index.md @@ -1 +1 @@ -# Programming languages \ No newline at end of file +# Programming languages diff --git a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/103-actors.md b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/103-actors.md index f5b0ddc69..821177f71 100644 --- a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/103-actors.md +++ b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/103-actors.md @@ -5,4 +5,4 @@ Actor Model is a model that represents actors as the basic unit of a system, the Visit the following resources to learn more: - [Actor Model Explained](https://www.youtube.com/watch?v=ELwEdb_pD0k) -- [The actor model in 10 minutes](https://www.brianstorti.com/the-actor-model/) \ No newline at end of file +- [The actor model in 10 minutes](https://www.brianstorti.com/the-actor-model/) diff --git a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/104-acid-cap-theorem.md b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/104-acid-cap-theorem.md index 2edcbb136..46a9f28fb 100644 --- a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/104-acid-cap-theorem.md +++ b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/104-acid-cap-theorem.md @@ -13,4 +13,4 @@ Visit the following resources to learn more: - [An Illustrated Proof of the CAP Theorem](https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/) - [CAP Theorem and its applications in NoSQL Databases](https://www.ibm.com/uk-en/cloud/learn/cap-theorem) - [What is CAP Theorem?](https://www.youtube.com/watch?v=_RbsFXWRZ10) -- [ACID - Wikipedia](https://en.wikipedia.org/wiki/ACID) \ No newline at end of file +- [ACID - Wikipedia](https://en.wikipedia.org/wiki/ACID) diff --git a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/105-solid.md b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/105-solid.md index d1d2ff543..99ba6bf20 100644 --- a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/105-solid.md +++ b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/105-solid.md @@ -1,6 +1,5 @@ # SOLID - SOLID is a set of principles applied to object-oriented design (OOD) to create maintainable, understandable, and flexible code, while avoiding code smells and defects. The principles are: - Single Responsibility diff --git a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/106-ddd.md b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/106-ddd.md index 42f915c59..53735733f 100644 --- a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/106-ddd.md +++ b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/106-ddd.md @@ -1,6 +1,5 @@ # Domain-Driven Design - Domain-driven design (DDD) is a software design approach focusing on modeling software to match a domain according to input from that domain's experts. In terms of object-oriented programming, it means that the structure and language of software code (class names, class methods, class variables) should match the business domain. For example, if a software processes loan applications, it might have classes like LoanApplication and Customer, and methods such as AcceptOffer and Withdraw. diff --git a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/106-tdd.md b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/106-tdd.md index 4497195f6..3d9f5541a 100644 --- a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/106-tdd.md +++ b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/106-tdd.md @@ -1,6 +1,5 @@ # Test Driven Development - Test driven development (TDD) is the process of writing tests for software's requirements which will fail until the software is developed to meet those requirements. Once those tests pass, then the cycle repeats to refactor code or develop another feature/requirement. In theory, this ensures that software is written to meet requirements in the simplest form, and avoids code defects. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/index.md b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/index.md index fd26b2cf2..dc7101266 100644 --- a/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/index.md +++ b/src/data/roadmaps/software-architect/content/105-patterns-and-design-principles/index.md @@ -1 +1 @@ -# Patterns and design principles \ No newline at end of file +# Patterns and design principles diff --git a/src/data/roadmaps/software-architect/content/106-architect-tools/100-git.md b/src/data/roadmaps/software-architect/content/106-architect-tools/100-git.md index 2b6f46807..638b268f6 100644 --- a/src/data/roadmaps/software-architect/content/106-architect-tools/100-git.md +++ b/src/data/roadmaps/software-architect/content/106-architect-tools/100-git.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Git & GitHub Crash Course For Beginners](https://www.youtube.com/watch?v=SWYqp7iY_Tc) - [Learn Git with Tutorials, News and Tips - Atlassian](https://www.atlassian.com/git) -- [Git Cheat Sheet](https://cs.fyi/guide/git-cheatsheet) \ No newline at end of file +- [Git Cheat Sheet](https://cs.fyi/guide/git-cheatsheet) diff --git a/src/data/roadmaps/software-architect/content/106-architect-tools/101-slack.md b/src/data/roadmaps/software-architect/content/106-architect-tools/101-slack.md index bdcc0ca26..3de47eb29 100644 --- a/src/data/roadmaps/software-architect/content/106-architect-tools/101-slack.md +++ b/src/data/roadmaps/software-architect/content/106-architect-tools/101-slack.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Slack](https://slack.com) - [What is Slack?](https://www.youtube.com/watch?v=q19RtuCHt1Q) -- [Getting Started](https://slack.com/intl/en-in/help/categories/360000049043) \ No newline at end of file +- [Getting Started](https://slack.com/intl/en-in/help/categories/360000049043) diff --git a/src/data/roadmaps/software-architect/content/106-architect-tools/102-trello.md b/src/data/roadmaps/software-architect/content/106-architect-tools/102-trello.md index 2b7798e07..ae8e0ee48 100644 --- a/src/data/roadmaps/software-architect/content/106-architect-tools/102-trello.md +++ b/src/data/roadmaps/software-architect/content/106-architect-tools/102-trello.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Trello](https://trello.com) - [A Tour Of Trello](https://www.youtube.com/watch?v=AyfupeWS0yY) -- [Trello Guide](https://trello.com/guide) \ No newline at end of file +- [Trello Guide](https://trello.com/guide) diff --git a/src/data/roadmaps/software-architect/content/106-architect-tools/103-atlassian-tools.md b/src/data/roadmaps/software-architect/content/106-architect-tools/103-atlassian-tools.md index 05351356f..2b5002791 100644 --- a/src/data/roadmaps/software-architect/content/106-architect-tools/103-atlassian-tools.md +++ b/src/data/roadmaps/software-architect/content/106-architect-tools/103-atlassian-tools.md @@ -3,30 +3,38 @@ The Jira platform is, at its core, our workflow engine that allows you to track issues or tasks through a predefined and customizable workflow. These tasks can be organized by project, allowing for the entirety of your organization to track their issues at a project level with complete transparency using granular user permissions. ### Jira Service Desk + Jira Service Desk is for teams who receive incoming issues/requests from other teams/customers. Jira Service Desk is designed specifically for end-users to submit tickets to a help desk team. ### Jira Core + Jira Core takes this workflow engine and caters it for business teams to develop organized, easy to use, task-oriented projects. Whether the tasks are a simple to-do list or a robust 7 step workflow with complex transitions, Jira Core is built to accommodate all of your requirements. Jira Core is an excellent solution for business teams, legal teams, HR teams, non-technical teams, marketing teams, financial teams, operation teams, and more. ### Confluence -Confluence is a collaboration wiki used to help teams collaborate and share knowledge efficiently. It acts as your document collaboration and repository as it keeps full tracking of what changed in each document, when, and by whom to keep an 'audit' trail. Team members can create, share, and collaborate on content. + +Confluence is a collaboration wiki used to help teams collaborate and share knowledge efficiently. It acts as your document collaboration and repository as it keeps full tracking of what changed in each document, when, and by whom to keep an 'audit' trail. Team members can create, share, and collaborate on content. ### Bitbucket + Bitbucket Server is the on-premises Git repository management solution for enterprise teams. It allows everyone in your organization to easily collaborate on your Git repositories. ### Statuspage + Statuspage helps teams inform customers and end-users about outages and scheduled maintenance. Statuspage is the communication piece of your incident management process. Keep users in the loop from 'investigating' through 'resolved'. ### Opsgenie + Opsgenie is a modern incident management solution for operating always-on services that enable dev and ops teams to stay aware and in control of alerts and incidents. ### Advanced Roadmaps for Jira + Advanced Roadmaps is a Jira Software Cloud Premium feature that's designed to help multiple teams collaborate together, track the big picture, identify dependencies across large pieces of work, and plan for team capacity. Advanced Roadmaps is available as a standalone app for Jira Software Server and Data Center. ### Jira Align + Jira Align is an Enterprise Agile Planning platform that helps improve visibility, strategic alignment, and enterprise adaptability in order to accelerate your digital transformation. Visit the following resources to learn more: @@ -39,4 +47,3 @@ Visit the following resources to learn more: - [Opsgenie](https://www.atlassian.com/software/opsgenie) - [Advanced Roadmaps for Jira](https://www.atlassian.com/software/jira/features/roadmaps) - [Jira Align](https://www.atlassian.com/software/jira/align) - diff --git a/src/data/roadmaps/software-architect/content/106-architect-tools/index.md b/src/data/roadmaps/software-architect/content/106-architect-tools/index.md index 38da84032..9e2440444 100644 --- a/src/data/roadmaps/software-architect/content/106-architect-tools/index.md +++ b/src/data/roadmaps/software-architect/content/106-architect-tools/index.md @@ -1 +1 @@ -# Architect tools \ No newline at end of file +# Architect tools diff --git a/src/data/roadmaps/software-architect/content/107-architectures/100-serverless.md b/src/data/roadmaps/software-architect/content/107-architectures/100-serverless.md index 7580f846c..81e3aa4c5 100644 --- a/src/data/roadmaps/software-architect/content/107-architectures/100-serverless.md +++ b/src/data/roadmaps/software-architect/content/107-architectures/100-serverless.md @@ -5,4 +5,4 @@ Serverless architecture (also known as serverless computing or function as a ser Visit the following resources to learn more: - [Serverless Architectures By AWS](https://aws.amazon.com/lambda/serverless-architectures-learn-more/) -- [Serverless in Detail](https://martinfowler.com/articles/serverless.html) \ No newline at end of file +- [Serverless in Detail](https://martinfowler.com/articles/serverless.html) diff --git a/src/data/roadmaps/software-architect/content/107-architectures/101-microservices.md b/src/data/roadmaps/software-architect/content/107-architectures/101-microservices.md index dcfe78866..7d6d67851 100644 --- a/src/data/roadmaps/software-architect/content/107-architectures/101-microservices.md +++ b/src/data/roadmaps/software-architect/content/107-architectures/101-microservices.md @@ -1,10 +1,10 @@ -# Microservices - -Microservices are an architectural approach to software development that allows the creation of a distributed application from deployable services that allow communication through a well-defined API. Being a solution to monoliths. - +# Microservices + +Microservices are an architectural approach to software development that allows the creation of a distributed application from deployable services that allow communication through a well-defined API. Being a solution to monoliths. + Visit the following resources to learn more: - [Introduction to microservices](https://developer.ibm.com/learningpaths/get-started-application-modernization/intro-microservices/introduction/) - [Microservice Patterns and Resources by Chris Richardson](https://microservices.io/index.html) - [Microservices AntiPatterns and Pitfalls - Mark Richards](https://www.oreilly.com/content/microservices-antipatterns-and-pitfalls/) -- [Building Microservices, 2nd Edition - Sam Newman](https://samnewman.io/books/building_microservices_2nd_edition/) +- [Building Microservices, 2nd Edition - Sam Newman](https://samnewman.io/books/building_microservices_2nd_edition/) diff --git a/src/data/roadmaps/software-architect/content/107-architectures/103-layered-architecture.md b/src/data/roadmaps/software-architect/content/107-architectures/103-layered-architecture.md index 9988cf6a1..04b6c5ee2 100644 --- a/src/data/roadmaps/software-architect/content/107-architectures/103-layered-architecture.md +++ b/src/data/roadmaps/software-architect/content/107-architectures/103-layered-architecture.md @@ -8,12 +8,12 @@ Layered architecture is a common approach to designing scalable and maintainable While layered architecture has many benefits, it also has some drawbacks that should be considered. These include the following: -* Complexity: Layered architecture can add complexity to an application, especially if it is not implemented carefully. This can make the application more difficult to understand and maintain. +- Complexity: Layered architecture can add complexity to an application, especially if it is not implemented carefully. This can make the application more difficult to understand and maintain. -* Performance: Layered architecture can potentially impact the performance of an application, because data has to be passed between the different layers. This can be especially problematic if the application has a large number of layers or if the layers are not optimized for performance. +- Performance: Layered architecture can potentially impact the performance of an application, because data has to be passed between the different layers. This can be especially problematic if the application has a large number of layers or if the layers are not optimized for performance. -* Tight coupling: If the layers in a layered architecture are not well-defined and loosely coupled, changes to one layer can potentially affect other layers, which can lead to maintainability issues. +- Tight coupling: If the layers in a layered architecture are not well-defined and loosely coupled, changes to one layer can potentially affect other layers, which can lead to maintainability issues. -* Overhead: Layered architecture can add overhead to an application, because data has to be passed between the different layers. This can potentially impact the performance and scalability of the application. +- Overhead: Layered architecture can add overhead to an application, because data has to be passed between the different layers. This can potentially impact the performance and scalability of the application. -Overall, while layered architecture has many benefits, it is important to carefully consider the potential drawbacks and make sure that the benefits outweigh the costs in your specific application. \ No newline at end of file +Overall, while layered architecture has many benefits, it is important to carefully consider the potential drawbacks and make sure that the benefits outweigh the costs in your specific application. diff --git a/src/data/roadmaps/software-architect/content/107-architectures/104-distributed-systems.md b/src/data/roadmaps/software-architect/content/107-architectures/104-distributed-systems.md index df32ccc25..4fefa8a53 100644 --- a/src/data/roadmaps/software-architect/content/107-architectures/104-distributed-systems.md +++ b/src/data/roadmaps/software-architect/content/107-architectures/104-distributed-systems.md @@ -1,5 +1,5 @@ -# Distributed systems - +# Distributed systems + Visit the following resources to learn more: -- [Free Distributed Systems book from Maarten van Steen](https://www.distributed-systems.net/index.php/books/ds3/) \ No newline at end of file +- [Free Distributed Systems book from Maarten van Steen](https://www.distributed-systems.net/index.php/books/ds3/) diff --git a/src/data/roadmaps/software-architect/content/107-architectures/105-service-oriented.md b/src/data/roadmaps/software-architect/content/107-architectures/105-service-oriented.md index cbc2f1604..274d5d0a0 100644 --- a/src/data/roadmaps/software-architect/content/107-architectures/105-service-oriented.md +++ b/src/data/roadmaps/software-architect/content/107-architectures/105-service-oriented.md @@ -12,4 +12,4 @@ SOA provides four different service types: Visit the following resources to learn more: - [SOA Architecture By AWS](https://aws.amazon.com/what-is/service-oriented-architecture/) -- [SOA Architecture](https://www.geeksforgeeks.org/service-oriented-architecture/) \ No newline at end of file +- [SOA Architecture](https://www.geeksforgeeks.org/service-oriented-architecture/) diff --git a/src/data/roadmaps/software-architect/content/107-architectures/index.md b/src/data/roadmaps/software-architect/content/107-architectures/index.md index 2b9689138..cc7be8d1d 100644 --- a/src/data/roadmaps/software-architect/content/107-architectures/index.md +++ b/src/data/roadmaps/software-architect/content/107-architectures/index.md @@ -1 +1 @@ -# Architectures \ No newline at end of file +# Architectures diff --git a/src/data/roadmaps/software-architect/content/108-security/101-pki.md b/src/data/roadmaps/software-architect/content/108-security/101-pki.md index dc73c050e..5f110cb9e 100644 --- a/src/data/roadmaps/software-architect/content/108-security/101-pki.md +++ b/src/data/roadmaps/software-architect/content/108-security/101-pki.md @@ -4,25 +4,25 @@ A public key infrastructure (PKI) is a set of roles, policies, hardware, softwar ### Components of PKI -* **Digital certificates:** digital "identities" issued by trusted third parties, that identify users and machines. They may be securely stored in wallets or in directories. -* **Public and private keys:** form the basis of a PKI for secure communications, based on a secret private key and a mathematically related public key -* **Secure sockets layer (SSL):** An Internet-standard secure protocol -* **Certificate Authority (CA):** acts as a trusted, independent provider of digital certificates +- **Digital certificates:** digital "identities" issued by trusted third parties, that identify users and machines. They may be securely stored in wallets or in directories. +- **Public and private keys:** form the basis of a PKI for secure communications, based on a secret private key and a mathematically related public key +- **Secure sockets layer (SSL):** An Internet-standard secure protocol +- **Certificate Authority (CA):** acts as a trusted, independent provider of digital certificates ### What is PKI used for? -* Providing a recovery key for an encrypted hard drive -* Securing internal communications with database servers -* Signing documents -* Securing local networks: PKI capacities are built into Microsoft's Active Directory, for instance, and can work with physical keycards that store digital certificates to ensure that users are who they say they are. -* Secure messaging: the Signal protocol uses PKI, for instance -* Email Encryption -* Securing access to internet of things (IoT) devices +- Providing a recovery key for an encrypted hard drive +- Securing internal communications with database servers +- Signing documents +- Securing local networks: PKI capacities are built into Microsoft's Active Directory, for instance, and can work with physical keycards that store digital certificates to ensure that users are who they say they are. +- Secure messaging: the Signal protocol uses PKI, for instance +- Email Encryption +- Securing access to internet of things (IoT) devices ### Advantages of the PKI Approach -* PKI is a standards-based technology. -* It allows the choice of trust provider. -* It is highly scalable. Users maintain their own certificates, and certificate authentication only involves the data exchange between the client and server. This means that no third-party authentication server needs to be online. There is, thus, no limit to the number of users who can be supported using PKI. -* PKI allows delegated trust. A user who has obtained a certificate from a recognized and trusted certificate authority can authenticate himself to a server the first time he connects to that server without having previously been registered with the system. -* Although PKI is not notably a single sign-on service, it can be implemented in such a way as to enable single sign-on. \ No newline at end of file +- PKI is a standards-based technology. +- It allows the choice of trust provider. +- It is highly scalable. Users maintain their own certificates, and certificate authentication only involves the data exchange between the client and server. This means that no third-party authentication server needs to be online. There is, thus, no limit to the number of users who can be supported using PKI. +- PKI allows delegated trust. A user who has obtained a certificate from a recognized and trusted certificate authority can authenticate himself to a server the first time he connects to that server without having previously been registered with the system. +- Although PKI is not notably a single sign-on service, it can be implemented in such a way as to enable single sign-on. diff --git a/src/data/roadmaps/software-architect/content/108-security/103-auth-strategies.md b/src/data/roadmaps/software-architect/content/108-security/103-auth-strategies.md index 87570847d..eeb76b3f7 100644 --- a/src/data/roadmaps/software-architect/content/108-security/103-auth-strategies.md +++ b/src/data/roadmaps/software-architect/content/108-security/103-auth-strategies.md @@ -1,5 +1,5 @@ -# Auth strategies - +# Auth strategies + Visit the following resources to learn more: - [JSON Web Token - Handbook](https://auth0.com/resources/ebooks/jwt-handbook) @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [A Devlopers Guide to SAML](https://www.youtube.com/watch?v=l-6QSEqDJPo) - [SAML 2.0: Technical Overview](https://www.youtube.com/watch?v=SvppXbpv-5k) - [An Illustrated Guide to OAuth and OpenID Connect](https://www.youtube.com/watch?v=t18YB3xDfXI) -- [OAuth 2.0 & OpenID Connect (OIDC): Technical Overview](https://www.youtube.com/watch?v=rTzlF-U9Y6Y) +- [OAuth 2.0 & OpenID Connect (OIDC): Technical Overview](https://www.youtube.com/watch?v=rTzlF-U9Y6Y) diff --git a/src/data/roadmaps/software-architect/content/108-security/index.md b/src/data/roadmaps/software-architect/content/108-security/index.md index f76df344c..8dbb2f9bc 100644 --- a/src/data/roadmaps/software-architect/content/108-security/index.md +++ b/src/data/roadmaps/software-architect/content/108-security/index.md @@ -1 +1 @@ -# Security \ No newline at end of file +# Security diff --git a/src/data/roadmaps/software-architect/content/109-working-with-data/101-etl-datawarehouses.md b/src/data/roadmaps/software-architect/content/109-working-with-data/101-etl-datawarehouses.md index f39533643..c1742a876 100644 --- a/src/data/roadmaps/software-architect/content/109-working-with-data/101-etl-datawarehouses.md +++ b/src/data/roadmaps/software-architect/content/109-working-with-data/101-etl-datawarehouses.md @@ -2,9 +2,9 @@ In the world of data warehousing, if you need to bring data from multiple different data sources into one, centralized database, you must first: -* **EXTRACT** data from its original source -* **TRANSFORM** data by deduplicating it, combining it, and ensuring quality, to then -* **LOAD** data into the target database +- **EXTRACT** data from its original source +- **TRANSFORM** data by deduplicating it, combining it, and ensuring quality, to then +- **LOAD** data into the target database ETL tools enable data integration strategies by allowing companies to gather data from multiple data sources and consolidate it into a single, centralized location. ETL tools also make it possible for different types of data to work together. diff --git a/src/data/roadmaps/software-architect/content/109-working-with-data/102-sql-databases.md b/src/data/roadmaps/software-architect/content/109-working-with-data/102-sql-databases.md index eba522a4a..3e27e8e33 100644 --- a/src/data/roadmaps/software-architect/content/109-working-with-data/102-sql-databases.md +++ b/src/data/roadmaps/software-architect/content/109-working-with-data/102-sql-databases.md @@ -3,9 +3,10 @@ SQL stands for Structured Query Language. It's used for relational databases. A SQL database is a collection of tables that stores a specific set of structured data. Examples of SQL Databases -* MariaDB and MySQL -* PostgreSQL + +- MariaDB and MySQL +- PostgreSQL Visit the following resources to learn more: -- [SQL Databases](https://www.openlogic.com/blog/what-sql-database) \ No newline at end of file +- [SQL Databases](https://www.openlogic.com/blog/what-sql-database) diff --git a/src/data/roadmaps/software-architect/content/109-working-with-data/103-analytics/index.md b/src/data/roadmaps/software-architect/content/109-working-with-data/103-analytics/index.md index eb021f46e..f097a1dbb 100644 --- a/src/data/roadmaps/software-architect/content/109-working-with-data/103-analytics/index.md +++ b/src/data/roadmaps/software-architect/content/109-working-with-data/103-analytics/index.md @@ -1 +1 @@ -# Analytics \ No newline at end of file +# Analytics diff --git a/src/data/roadmaps/software-architect/content/109-working-with-data/103-nosql-databases.md b/src/data/roadmaps/software-architect/content/109-working-with-data/103-nosql-databases.md index 4e54df048..dafc869f9 100644 --- a/src/data/roadmaps/software-architect/content/109-working-with-data/103-nosql-databases.md +++ b/src/data/roadmaps/software-architect/content/109-working-with-data/103-nosql-databases.md @@ -3,10 +3,11 @@ NoSQL databases (aka "not only SQL") are non-tabular databases and store data differently than relational tables. NoSQL databases come in a variety of types based on their data model. The main types are document, key-value, wide-column, and graph. They provide flexible schemas and scale easily with large amounts of data and high user loads. Types of NoSQL databases -* Document databases Ex. MongoDB -* Key-value databases Ex. Redis -* Wide-column databases Ex. Cassandra -* Graph databases Ex. Neo4J + +- Document databases Ex. MongoDB +- Key-value databases Ex. Redis +- Wide-column databases Ex. Cassandra +- Graph databases Ex. Neo4J Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/109-working-with-data/index.md b/src/data/roadmaps/software-architect/content/109-working-with-data/index.md index 1eae922a6..14df64160 100644 --- a/src/data/roadmaps/software-architect/content/109-working-with-data/index.md +++ b/src/data/roadmaps/software-architect/content/109-working-with-data/index.md @@ -1 +1 @@ -# Working with data \ No newline at end of file +# Working with data diff --git a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/100-grpc.md b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/100-grpc.md index 511740eec..f0e4cb5f5 100644 --- a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/100-grpc.md +++ b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/100-grpc.md @@ -11,4 +11,4 @@ Visit the following resources to learn more: - [gRPC Website](https://grpc.io/) - [gRPC Introduction](https://grpc.io/docs/what-is-grpc/introduction/) - [gRPC Core Concepts](https://grpc.io/docs/what-is-grpc/core-concepts/) -- [Stephane Maarek - gRPC Introduction](https://youtu.be/XRXTsQwyZSU) \ No newline at end of file +- [Stephane Maarek - gRPC Introduction](https://youtu.be/XRXTsQwyZSU) diff --git a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/101-esb-soap.md b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/101-esb-soap.md index 9d7705614..5b9e7d9bd 100644 --- a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/101-esb-soap.md +++ b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/101-esb-soap.md @@ -1 +1 @@ -# Esb soap \ No newline at end of file +# Esb soap diff --git a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/102-graphql.md b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/102-graphql.md index 282a8c00f..7d66a5fe4 100644 --- a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/102-graphql.md +++ b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/102-graphql.md @@ -1,7 +1,7 @@ -# GraphQL - -GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools. - +# GraphQL + +GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools. + Visit the following resources to learn more: -- [Apollo GraphQL Tutorials](https://www.apollographql.com/tutorials/) +- [Apollo GraphQL Tutorials](https://www.apollographql.com/tutorials/) diff --git a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/103-rest.md b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/103-rest.md index 95c28543c..47d318f77 100644 --- a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/103-rest.md +++ b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/103-rest.md @@ -1,6 +1,6 @@ # REST -REST, or REpresentational State Transfer, is an architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. +REST, or REpresentational State Transfer, is an architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/104-bpm-bpel.md b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/104-bpm-bpel.md index f9724da32..b691ca281 100644 --- a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/104-bpm-bpel.md +++ b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/104-bpm-bpel.md @@ -1,13 +1,16 @@ # BPM BPEL ## BPM: Business Process Management + Medium or large enterprises needs robust processes to streamline their business needs by reducing the cost incurred per process and diminishing the turn around time for each activity. To achieve the above, there are various BPM tools like PEGA, IBM BPM, Appian, etc. Basically these tools automate the processes through a robust process modelling and implementation. ## BPMN: Business Process Management Notations + Its is a standard for representing business processes graphically. While modelling the process, the notations used are complied with BPMN (there are other like EPC, etc.). So BPMN is a standard notation that BPM consultants follow to model the business process. BPMN has versions and now BPMN 2.0 is the standard one. ## BPEL : Business Process Execution Language + Programmers use BPEL to define how a business process that involves web services will be executed. BPEL messages are typically used to invoke remote services, orchestrate process execution and manage events and exceptions. BPEL is often associated with Business Process Management Notation. In many organizations, analysts use BPMN to visualize business processes and developers transform the visualizations to BPEL for execution. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/105-messaging-queues.md b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/105-messaging-queues.md index 2da9cc1fd..ce77cd6d0 100644 --- a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/105-messaging-queues.md +++ b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/105-messaging-queues.md @@ -5,4 +5,4 @@ Message queuing makes it possible for applications to communicate asynchronously Visit the following resources to learn more: - [Messaging Queues](https://aws.amazon.com/message-queue/) -- [Messaging Queues Tutorial](https://www.tutorialspoint.com/inter_process_communication/inter_process_communication_message_queues.htm) \ No newline at end of file +- [Messaging Queues Tutorial](https://www.tutorialspoint.com/inter_process_communication/inter_process_communication_message_queues.htm) diff --git a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/index.md b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/index.md index dc6c06d39..cf6a63a9e 100644 --- a/src/data/roadmaps/software-architect/content/110-apis-and-integrations/index.md +++ b/src/data/roadmaps/software-architect/content/110-apis-and-integrations/index.md @@ -1 +1 @@ -# Apis and integrations \ No newline at end of file +# Apis and integrations diff --git a/src/data/roadmaps/software-architect/content/111-web-and-mobile/103-pwa.md b/src/data/roadmaps/software-architect/content/111-web-and-mobile/103-pwa.md index 87590db27..b60ee0134 100644 --- a/src/data/roadmaps/software-architect/content/111-web-and-mobile/103-pwa.md +++ b/src/data/roadmaps/software-architect/content/111-web-and-mobile/103-pwa.md @@ -1,6 +1,5 @@ # PWA - Progressive Web Apps (PWAs) are websites that are progressively enhanced to function like installed, native apps on supporting platforms, while functioning like regular websites on other browsers. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/111-web-and-mobile/105-w3c-and-whatwg-standards.md b/src/data/roadmaps/software-architect/content/111-web-and-mobile/105-w3c-and-whatwg-standards.md index bd28e2567..4e81ceea1 100644 --- a/src/data/roadmaps/software-architect/content/111-web-and-mobile/105-w3c-and-whatwg-standards.md +++ b/src/data/roadmaps/software-architect/content/111-web-and-mobile/105-w3c-and-whatwg-standards.md @@ -2,7 +2,7 @@ World Wide Web Consortium (W3C) standards define the best practices for web development to enable developers to build rich interactive experiences that are available on any device. Theses standards range from recommended web technologies such as HTML, CSS, XML to the generally accepted principles of web architecture, semantics and services. -Web Hypertext Application Technology Working Group (WHATWG) is another set of web standards that came into existence after W3C announced that it was going to be focusing on XHTML over HTML. +Web Hypertext Application Technology Working Group (WHATWG) is another set of web standards that came into existence after W3C announced that it was going to be focusing on XHTML over HTML. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/111-web-and-mobile/index.md b/src/data/roadmaps/software-architect/content/111-web-and-mobile/index.md index 2b50221a0..c8f9a0d06 100644 --- a/src/data/roadmaps/software-architect/content/111-web-and-mobile/index.md +++ b/src/data/roadmaps/software-architect/content/111-web-and-mobile/index.md @@ -1 +1 @@ -# Web and mobile \ No newline at end of file +# Web and mobile diff --git a/src/data/roadmaps/software-architect/content/112-architect-frameworks/index.md b/src/data/roadmaps/software-architect/content/112-architect-frameworks/index.md index a76aa9330..1f571cd1b 100644 --- a/src/data/roadmaps/software-architect/content/112-architect-frameworks/index.md +++ b/src/data/roadmaps/software-architect/content/112-architect-frameworks/index.md @@ -1 +1 @@ -# Architect frameworks \ No newline at end of file +# Architect frameworks diff --git a/src/data/roadmaps/software-architect/content/113-management/100-certifications/100-pmi-itil-prince2-rup.md b/src/data/roadmaps/software-architect/content/113-management/100-certifications/100-pmi-itil-prince2-rup.md index f54744ee5..14ff4d9ee 100644 --- a/src/data/roadmaps/software-architect/content/113-management/100-certifications/100-pmi-itil-prince2-rup.md +++ b/src/data/roadmaps/software-architect/content/113-management/100-certifications/100-pmi-itil-prince2-rup.md @@ -1 +1 @@ -# Pmi itil prince2 rup \ No newline at end of file +# Pmi itil prince2 rup diff --git a/src/data/roadmaps/software-architect/content/113-management/100-certifications/index.md b/src/data/roadmaps/software-architect/content/113-management/100-certifications/index.md index 208afdd72..843cd64b3 100644 --- a/src/data/roadmaps/software-architect/content/113-management/100-certifications/index.md +++ b/src/data/roadmaps/software-architect/content/113-management/100-certifications/index.md @@ -1 +1 @@ -# Certifications \ No newline at end of file +# Certifications diff --git a/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/100-less.md b/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/100-less.md index 30afd5ee2..97742c683 100644 --- a/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/100-less.md +++ b/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/100-less.md @@ -1 +1 @@ -# Less \ No newline at end of file +# Less diff --git a/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/101-safe.md b/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/101-safe.md index d9a202895..c384ac571 100644 --- a/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/101-safe.md +++ b/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/101-safe.md @@ -1 +1 @@ -# Safe \ No newline at end of file +# Safe diff --git a/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/index.md b/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/index.md index 98dcdffe0..cfe8651cf 100644 --- a/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/index.md +++ b/src/data/roadmaps/software-architect/content/113-management/101-agile-scrum/index.md @@ -1 +1 @@ -# Agile scrum \ No newline at end of file +# Agile scrum diff --git a/src/data/roadmaps/software-architect/content/113-management/index.md b/src/data/roadmaps/software-architect/content/113-management/index.md index 669db3f43..ec8049f7c 100644 --- a/src/data/roadmaps/software-architect/content/113-management/index.md +++ b/src/data/roadmaps/software-architect/content/113-management/index.md @@ -1 +1 @@ -# Management \ No newline at end of file +# Management diff --git a/src/data/roadmaps/software-architect/content/114-networks/index.md b/src/data/roadmaps/software-architect/content/114-networks/index.md index f7c7e4a8f..1bb6593b2 100644 --- a/src/data/roadmaps/software-architect/content/114-networks/index.md +++ b/src/data/roadmaps/software-architect/content/114-networks/index.md @@ -1 +1 @@ -# Networks \ No newline at end of file +# Networks diff --git a/src/data/roadmaps/software-architect/content/115-operations-knowledge/100-infrastructure-as-code.md b/src/data/roadmaps/software-architect/content/115-operations-knowledge/100-infrastructure-as-code.md index 8bb157f14..4e6c88a09 100644 --- a/src/data/roadmaps/software-architect/content/115-operations-knowledge/100-infrastructure-as-code.md +++ b/src/data/roadmaps/software-architect/content/115-operations-knowledge/100-infrastructure-as-code.md @@ -1,8 +1,8 @@ # Infrastructure as Code -Sometimes referred to as IaC, this section refers to the techniques and tools used to define infrastructure, typically in a markup language like YAML or JSON. Infrastructure as code allows DevOps Engineers to use the same workflows used by software developers to version, roll back, and otherwise manage changes. +Sometimes referred to as IaC, this section refers to the techniques and tools used to define infrastructure, typically in a markup language like YAML or JSON. Infrastructure as code allows DevOps Engineers to use the same workflows used by software developers to version, roll back, and otherwise manage changes. -The term Infrastructure as Code encompasses everything from bootstrapping to configuration to orchestration, and it is considered a best practice in the industry to manage all infrastructure as code. This technique precipitated the explosion in system complexity seen in modern DevOps organizations. +The term Infrastructure as Code encompasses everything from bootstrapping to configuration to orchestration, and it is considered a best practice in the industry to manage all infrastructure as code. This technique precipitated the explosion in system complexity seen in modern DevOps organizations. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/115-operations-knowledge/101-cloud-providers.md b/src/data/roadmaps/software-architect/content/115-operations-knowledge/101-cloud-providers.md index 8db4b0a15..4f95a1f4c 100644 --- a/src/data/roadmaps/software-architect/content/115-operations-knowledge/101-cloud-providers.md +++ b/src/data/roadmaps/software-architect/content/115-operations-knowledge/101-cloud-providers.md @@ -1 +1 @@ -# Cloud providers \ No newline at end of file +# Cloud providers diff --git a/src/data/roadmaps/software-architect/content/115-operations-knowledge/102-serverless-concepts.md b/src/data/roadmaps/software-architect/content/115-operations-knowledge/102-serverless-concepts.md index 34399c852..63ff95221 100644 --- a/src/data/roadmaps/software-architect/content/115-operations-knowledge/102-serverless-concepts.md +++ b/src/data/roadmaps/software-architect/content/115-operations-knowledge/102-serverless-concepts.md @@ -1,6 +1,6 @@ # Serverless Concepts -Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers. +Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers. There are still servers in serverless, but they are abstracted away from app development. A cloud provider handles the routine work of provisioning, maintaining, and scaling the server infrastructure. Developers can simply package their code in containers for deployment. diff --git a/src/data/roadmaps/software-architect/content/115-operations-knowledge/104-service-mesh.md b/src/data/roadmaps/software-architect/content/115-operations-knowledge/104-service-mesh.md index 409cd4f3b..5fbf57ab9 100644 --- a/src/data/roadmaps/software-architect/content/115-operations-knowledge/104-service-mesh.md +++ b/src/data/roadmaps/software-architect/content/115-operations-knowledge/104-service-mesh.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [Service Mesh explained in 15 Minutes](https://youtu.be/16fgzklcF7Y) - [Red Hat - What is a Service Mesh?](https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh) -- [Kubernetes Service Mesh - Blog Post](https://platform9.com/blog/kubernetes-service-mesh-a-comparison-of-istio-linkerd-and-consul/) \ No newline at end of file +- [Kubernetes Service Mesh - Blog Post](https://platform9.com/blog/kubernetes-service-mesh-a-comparison-of-istio-linkerd-and-consul/) diff --git a/src/data/roadmaps/software-architect/content/115-operations-knowledge/106-containers.md b/src/data/roadmaps/software-architect/content/115-operations-knowledge/106-containers.md index 3f303f725..32199d176 100644 --- a/src/data/roadmaps/software-architect/content/115-operations-knowledge/106-containers.md +++ b/src/data/roadmaps/software-architect/content/115-operations-knowledge/106-containers.md @@ -1,6 +1,6 @@ # Containers -Containers are a construct in which [cgroups](https://en.wikipedia.org/wiki/Cgroups), [namespaces](https://en.wikipedia.org/wiki/Linux_namespaces), and [chroot](https://en.wikipedia.org/wiki/Chroot) are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines. +Containers are a construct in which [cgroups](https://en.wikipedia.org/wiki/Cgroups), [namespaces](https://en.wikipedia.org/wiki/Linux_namespaces), and [chroot](https://en.wikipedia.org/wiki/Chroot) are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines. These images are designed for portability, allowing for full local testing of a static image, and easy deployment to a container management platform. diff --git a/src/data/roadmaps/software-architect/content/115-operations-knowledge/index.md b/src/data/roadmaps/software-architect/content/115-operations-knowledge/index.md index ce6d5d788..236d17d85 100644 --- a/src/data/roadmaps/software-architect/content/115-operations-knowledge/index.md +++ b/src/data/roadmaps/software-architect/content/115-operations-knowledge/index.md @@ -1 +1 @@ -# Operations knowledge \ No newline at end of file +# Operations knowledge diff --git a/src/data/roadmaps/software-architect/content/116-enterprise-software/101-sap-epr-hana-business-objects.md b/src/data/roadmaps/software-architect/content/116-enterprise-software/101-sap-epr-hana-business-objects.md index b3ccebd3a..3bd173ff1 100644 --- a/src/data/roadmaps/software-architect/content/116-enterprise-software/101-sap-epr-hana-business-objects.md +++ b/src/data/roadmaps/software-architect/content/116-enterprise-software/101-sap-epr-hana-business-objects.md @@ -1 +1 @@ -# Sap epr hana business objects \ No newline at end of file +# Sap epr hana business objects diff --git a/src/data/roadmaps/software-architect/content/116-enterprise-software/102-emc-dms.md b/src/data/roadmaps/software-architect/content/116-enterprise-software/102-emc-dms.md index b86f9fbf6..db4f610ef 100644 --- a/src/data/roadmaps/software-architect/content/116-enterprise-software/102-emc-dms.md +++ b/src/data/roadmaps/software-architect/content/116-enterprise-software/102-emc-dms.md @@ -1 +1 @@ -# Emc dms \ No newline at end of file +# Emc dms diff --git a/src/data/roadmaps/software-architect/content/116-enterprise-software/index.md b/src/data/roadmaps/software-architect/content/116-enterprise-software/index.md index 5c0b3723d..fcc7fc346 100644 --- a/src/data/roadmaps/software-architect/content/116-enterprise-software/index.md +++ b/src/data/roadmaps/software-architect/content/116-enterprise-software/index.md @@ -1 +1 @@ -# Enterprise software \ No newline at end of file +# Enterprise software diff --git a/src/data/roadmaps/software-architect/software-architect.md b/src/data/roadmaps/software-architect/software-architect.md index 0d2a91630..cdaa36c4b 100644 --- a/src/data/roadmaps/software-architect/software-architect.md +++ b/src/data/roadmaps/software-architect/software-architect.md @@ -1,59 +1,58 @@ --- -jsonUrl: "/jsons/roadmaps/software-architect.json" -pdfUrl: "/pdfs/roadmaps/software-architect.pdf" +jsonUrl: '/jsons/roadmaps/software-architect.json' +pdfUrl: '/pdfs/roadmaps/software-architect.pdf' order: 8 -briefTitle: "Software Architect" -briefDescription: "Step by step guide to become a Software Architect in 2023" -title: "Software Architect" -description: "Step by step guide to becoming a Software Architect in 2023" +briefTitle: 'Software Architect' +briefDescription: 'Step by step guide to become a Software Architect in 2023' +title: 'Software Architect' +description: 'Step by step guide to becoming a Software Architect in 2023' isNew: false hasTopics: true dimensions: width: 968 height: 1882.18 schema: - headline: "Software Architect Roadmap" - description: "Learn to become a Software Architect with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/software-architect.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Software Architect Roadmap' + description: 'Learn to become a Software Architect with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/software-architect.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Software Architect Roadmap" - description: "Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Software Architect Roadmap' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "solution architect roadmap" - - "enterprise architect roadmap" - - "guide to becoming a software architect" - - "guide to becoming a Software Architect" - - "software architect roadmap" - - "db administrator roadmap" - - "software architect roadmap" - - "software architect skills" - - "db administrator skills" - - "become software architect" - - "modern software architect skills" - - "software architect skills test" - - "skills for software architect" - - "skills for software architect" - - "learn software architect" - - "what is software architect" - - "software architect quiz" - - "software architect interview questions" + - 'solution architect roadmap' + - 'enterprise architect roadmap' + - 'guide to becoming a software architect' + - 'guide to becoming a Software Architect' + - 'software architect roadmap' + - 'db administrator roadmap' + - 'software architect roadmap' + - 'software architect skills' + - 'db administrator skills' + - 'become software architect' + - 'modern software architect skills' + - 'software architect skills test' + - 'skills for software architect' + - 'skills for software architect' + - 'learn software architect' + - 'what is software architect' + - 'software architect quiz' + - 'software architect interview questions' relatedRoadmaps: - - "backend" - - "software-design-architecture" - - "python" - - "python" - - "nodejs" - - "golang" - - "java" - - "devops" + - 'backend' + - 'software-design-architecture' + - 'python' + - 'python' + - 'nodejs' + - 'golang' + - 'java' + - 'devops' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' --- - diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/101-be-consistent.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/101-be-consistent.md index c0449e1f5..8deed26fb 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/101-be-consistent.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/101-be-consistent.md @@ -4,4 +4,4 @@ Being consistent refers to maintaining a consistent pattern. This can include us Learn more from the following links: -- [10 Tips for Writing Clean Code](https://www.pluralsight.com/blog/software-development/10-steps-to-clean-code) \ No newline at end of file +- [10 Tips for Writing Clean Code](https://www.pluralsight.com/blog/software-development/10-steps-to-clean-code) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/102-meaningful-names.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/102-meaningful-names.md index 5101b1bf0..5f29fc94f 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/102-meaningful-names.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/102-meaningful-names.md @@ -4,4 +4,4 @@ You should follow the practice of giving clear and descriptive names to differen Learn more from the following links: -- [A Guide for Naming Things in Programming](https://levelup.gitconnected.com/a-guide-for-naming-things-in-programming-2dc2d74879f8) \ No newline at end of file +- [A Guide for Naming Things in Programming](https://levelup.gitconnected.com/a-guide-for-naming-things-in-programming-2dc2d74879f8) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/103-indentation-and-code-style.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/103-indentation-and-code-style.md index 95be8d200..42c30cf35 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/103-indentation-and-code-style.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/103-indentation-and-code-style.md @@ -6,4 +6,4 @@ Having a consistent indentation and code style can help to make the code more re Learn mor from the following links: -- [Clean Code – Formatting](https://www.baeldung.com/cs/clean-code-formatting) \ No newline at end of file +- [Clean Code – Formatting](https://www.baeldung.com/cs/clean-code-formatting) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/104-keep-it-small.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/104-keep-it-small.md index d2394f3a5..cd31a98c3 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/104-keep-it-small.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/104-keep-it-small.md @@ -1,3 +1,3 @@ # Keep it Small -You should design and implement small, focused components that serve a specific purpose, rather than large, monolithic components that try to do everything. This can help to improve the maintainability and scalability of the system by making it easier to understand, test, and modify individual components. \ No newline at end of file +You should design and implement small, focused components that serve a specific purpose, rather than large, monolithic components that try to do everything. This can help to improve the maintainability and scalability of the system by making it easier to understand, test, and modify individual components. diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/105-pure-functions.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/105-pure-functions.md index 71bf18036..6919a8106 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/105-pure-functions.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/105-pure-functions.md @@ -7,4 +7,4 @@ A pure function is a specific type of function that meets the following criteria - Given the same input, it will always return the same output. - It does not depend on any state or variables that are outside of its scope. -Pure functions are considered to be more predictable and easier to test, as their behavior is determined solely by the input they receive and their internal logic. They also make it easier to reason about the behavior of a program, since the output of a pure function is not affected by any external factors. Pure functions are often used in functional programming, where they are considered a key principle. They are also useful in concurrent and parallel programming, as they are less prone to race conditions and other concurrency-related issues. \ No newline at end of file +Pure functions are considered to be more predictable and easier to test, as their behavior is determined solely by the input they receive and their internal logic. They also make it easier to reason about the behavior of a program, since the output of a pure function is not affected by any external factors. Pure functions are often used in functional programming, where they are considered a key principle. They are also useful in concurrent and parallel programming, as they are less prone to race conditions and other concurrency-related issues. diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/106-minimize-cyclomatic-complexity.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/106-minimize-cyclomatic-complexity.md index 768cf15dd..755d85f57 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/106-minimize-cyclomatic-complexity.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/106-minimize-cyclomatic-complexity.md @@ -15,4 +15,4 @@ By following these best practices, the system architecture will be more maintain Learn more from the following links: -- [How to reduce cyclomatic complexity?](https://kasp9023.medium.com/how-to-make-your-code-more-readable-focus-on-the-happy-path-and-reduce-cyclomatic-complexity-66802b8897b5) \ No newline at end of file +- [How to reduce cyclomatic complexity?](https://kasp9023.medium.com/how-to-make-your-code-more-readable-focus-on-the-happy-path-and-reduce-cyclomatic-complexity-66802b8897b5) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/107-avoid-passing-nulls-booleans.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/107-avoid-passing-nulls-booleans.md index da9a7a535..6d2b4d1cf 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/107-avoid-passing-nulls-booleans.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/107-avoid-passing-nulls-booleans.md @@ -8,4 +8,4 @@ Passing nulls or Booleans can lead to unexpected behavior and difficult-to-debug - Use the Ternary operator (?:) instead of if-else statements when working with Booleans. This can make the code more concise and easier to read. - Use the assert function to check the validity of function arguments and throw an exception if they are invalid. -By following these best practices, the system architecture will be more robust and less error-prone. \ No newline at end of file +By following these best practices, the system architecture will be more robust and less error-prone. diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/108-keep-framework-code-distant.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/108-keep-framework-code-distant.md index cf0656656..69107f890 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/108-keep-framework-code-distant.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/108-keep-framework-code-distant.md @@ -14,4 +14,4 @@ By following these best practices, the system architecture will be more maintain Learn more from the following links: -- [Clean architecture](https://pusher.com/tutorials/clean-architecture-introduction/) \ No newline at end of file +- [Clean architecture](https://pusher.com/tutorials/clean-architecture-introduction/) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/109-use-correct-constructs.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/109-use-correct-constructs.md index 8031b1283..eff2e7f9c 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/109-use-correct-constructs.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/109-use-correct-constructs.md @@ -6,4 +6,4 @@ When using correct constructs, the code should be organized in a logical and int Additionally, correct constructs also means to use the right constructs for the right problem, for example, if you want to iterate over an array, use a for loop instead of recursion and also, you should avoid using global variables and instead use function arguments and return values to pass data between different parts of the code. -By using correct constructs, the code will be more readable, more maintainable, and less prone to bugs, making it easier for other developers to understand, debug and extend the code. \ No newline at end of file +By using correct constructs, the code will be more readable, more maintainable, and less prone to bugs, making it easier for other developers to understand, debug and extend the code. diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/110-keep-tests-independent.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/110-keep-tests-independent.md index 894ebf240..87af19f5d 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/110-keep-tests-independent.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/110-keep-tests-independent.md @@ -11,7 +11,6 @@ Here are some ways to keep tests independent in system architecture: - Use test-driven development (TDD), which involves writing tests before writing the application code. This ensures that the tests are independent and that the code is written with testability in mind. - Avoid global state and shared mutable state as it may cause unexpected results. - Learn more from the following links: -- [Keeping Tests Valuable](https://www.checklyhq.com/learn/headless/valuable-tests/) \ No newline at end of file +- [Keeping Tests Valuable](https://www.checklyhq.com/learn/headless/valuable-tests/) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/111-use-meaningful-names.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/111-use-meaningful-names.md index 54b1dd81e..35d0a11c3 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/111-use-meaningful-names.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/111-use-meaningful-names.md @@ -11,7 +11,6 @@ Here are some ways to use meaningful names in system architecture: - Avoid using single letter variable names or generic names, such as "temp" or "x" that do not convey any meaning. - Avoid using overly long or complex names that make the code harder to read. - Learn more from the following links: -- [How to Write Meaningful Variable Names?](https://workat.tech/machine-coding/tutorial/writing-meaningful-variable-names-clean-code-za4m83tiesy0) \ No newline at end of file +- [How to Write Meaningful Variable Names?](https://workat.tech/machine-coding/tutorial/writing-meaningful-variable-names-clean-code-za4m83tiesy0) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/112-code-by-actor.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/112-code-by-actor.md index 1cf636427..7651719f0 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/112-code-by-actor.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/112-code-by-actor.md @@ -4,4 +4,4 @@ Learn more from the following links: -- [Actor Model Architecture](https://awesome-architecture.com/actor-model-architecture/actor-model-architecture/) \ No newline at end of file +- [Actor Model Architecture](https://awesome-architecture.com/actor-model-architecture/actor-model-architecture/) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/113-command-query-separation.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/113-command-query-separation.md index 5a2197fd3..a0dd827fb 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/113-command-query-separation.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/113-command-query-separation.md @@ -4,4 +4,4 @@ Command-Query Separation (CQS) is a software design principle that separates the Learn more from the following links: -- [CQRS Pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) \ No newline at end of file +- [CQRS Pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/114-avoid-hasty-abstractions.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/114-avoid-hasty-abstractions.md index 6610ec2f7..8c6a9d276 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/114-avoid-hasty-abstractions.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/114-avoid-hasty-abstractions.md @@ -12,7 +12,6 @@ Here are some ways to avoid hasty abstractions in system architecture: - Use automated testing to ensure that the abstraction does not introduce new bugs or break existing functionality. - Create abstraction in a way that it's easy to test, debug, and reason about. - Learn more from the following links: -- [AHA Programming](https://kentcdodds.com/blog/aha-programming) \ No newline at end of file +- [AHA Programming](https://kentcdodds.com/blog/aha-programming) diff --git a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/index.md b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/index.md index 83f98b741..e462e133e 100644 --- a/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/index.md +++ b/src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/index.md @@ -15,4 +15,4 @@ Clean code is code that is easy to read, understand, and maintain. It follows a Learn more from the following links: -- [Introduction to Clean Code & Software Design Principles](https://workat.tech/machine-coding/tutorial/introduction-clean-code-software-design-principles-nwu4qqc63e09) \ No newline at end of file +- [Introduction to Clean Code & Software Design Principles](https://workat.tech/machine-coding/tutorial/introduction-clean-code-software-design-principles-nwu4qqc63e09) diff --git a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/100-structured-programming.md b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/100-structured-programming.md index abc43a2c8..11b48e990 100644 --- a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/100-structured-programming.md +++ b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/100-structured-programming.md @@ -4,4 +4,4 @@ Structured programming is a programming paradigm that emphasizes the use of stru Learn more from the following links: -- [Overview of Structured programming](https://www.techtarget.com/searchsoftwarequality/definition/structured-programming-modular-programming) \ No newline at end of file +- [Overview of Structured programming](https://www.techtarget.com/searchsoftwarequality/definition/structured-programming-modular-programming) diff --git a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/101-functional-programming.md b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/101-functional-programming.md index 540d9e41d..34a4a7519 100644 --- a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/101-functional-programming.md +++ b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/101-functional-programming.md @@ -7,4 +7,4 @@ Functional programming encourages immutability, which means that once a variable Learn more from the following links: - [What is Functional Programming?](https://www.codingdojo.com/blog/what-is-functional-programming) -- [Tutorial - Functional Programming?](https://www.youtube.com/watch?v=dAPL7MQGjyM) \ No newline at end of file +- [Tutorial - Functional Programming?](https://www.youtube.com/watch?v=dAPL7MQGjyM) diff --git a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/102-object-oriented-programming.md b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/102-object-oriented-programming.md index ed5a4178f..08aeac22d 100644 --- a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/102-object-oriented-programming.md +++ b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/102-object-oriented-programming.md @@ -7,4 +7,4 @@ Encapsulation refers to the idea that an object's internal state should be hidde Learn more from the following links: - [What is Object Oriented Programming?](https://www.youtube.com/watch?v=pTB0EiLXUC8) -- [Overview of Object-Oriented Programming (OOP)](https://en.wikipedia.org/wiki/Object-oriented_programming) \ No newline at end of file +- [Overview of Object-Oriented Programming (OOP)](https://en.wikipedia.org/wiki/Object-oriented_programming) diff --git a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/index.md b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/index.md index 86cf6104f..83ed61778 100644 --- a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/index.md +++ b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/index.md @@ -11,4 +11,4 @@ A programming paradigm is a fundamental style or approach to solving problems us Learn more from the following links: - [Overview of Programming paradigm](https://en.wikipedia.org/wiki/Programming_paradigm) -- [Introduction of Programming Paradigms](https://www.geeksforgeeks.org/introduction-of-programming-paradigms/) \ No newline at end of file +- [Introduction of Programming Paradigms](https://www.geeksforgeeks.org/introduction-of-programming-paradigms/) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md index cbf6e8b38..2933f975e 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md @@ -5,4 +5,4 @@ Inheritance is a fundamental concept in object-oriented programming (OOP) that a Learn more from the following links: - [What is inheritance in programming?](https://www.youtube.com/watch?v=ajOYOxCanhE) -- [Overview of Inheritance (object-oriented programming)](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)) \ No newline at end of file +- [Overview of Inheritance (object-oriented programming)]() diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/101-polymorphism.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/101-polymorphism.md index 0b834dcf0..1cf3ca87c 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/101-polymorphism.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/101-polymorphism.md @@ -10,4 +10,4 @@ There are two types of polymorphism: Learn more from the following links: - [Overview of Polymorphism in programming](https://www.bmc.com/blogs/polymorphism-programming/) -- [What is polymorphism in programming?](https://www.youtube.com/watch?v=tIWm3I_Zu7I) \ No newline at end of file +- [What is polymorphism in programming?](https://www.youtube.com/watch?v=tIWm3I_Zu7I) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/102-abstraction.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/102-abstraction.md index 3a6f31db9..b8f704c9d 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/102-abstraction.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/102-abstraction.md @@ -9,4 +9,4 @@ There are two types of abstraction: Learn more from the following links: -- [Tutorial - Abstraction](https://www.youtube.com/watch?v=OF55HZPE7lQ) \ No newline at end of file +- [Tutorial - Abstraction](https://www.youtube.com/watch?v=OF55HZPE7lQ) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md index 8545eb543..3d8004876 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md @@ -6,5 +6,5 @@ Encapsulation is achieved by using access modifiers (such as "public," "private, Learn more from the following links: -- [Overview of Encapsulation](https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)) -- [Tutorial - What is encapsulation in programming?](https://www.youtube.com/watch?v=sNKKxc4QHqA) \ No newline at end of file +- [Overview of Encapsulation]() +- [Tutorial - What is encapsulation in programming?](https://www.youtube.com/watch?v=sNKKxc4QHqA) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/index.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/index.md index 140dac714..548917256 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/index.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/index.md @@ -12,4 +12,4 @@ There are several primary principles that are considered fundamental to object-o Learn more from the following links: - [Principles of Object-Oriented Programming](https://khalilstemmler.com/articles/object-oriented/programming/4-principles/) -- [What are four basic principles of OOP?](https://medium.com/@cancerian0684/what-are-four-basic-principles-of-object-oriented-programming-645af8b43727) \ No newline at end of file +- [What are four basic principles of OOP?](https://medium.com/@cancerian0684/what-are-four-basic-principles-of-object-oriented-programming-645af8b43727) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/100-abstract-classes.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/100-abstract-classes.md index 778efa485..258456e48 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/100-abstract-classes.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/100-abstract-classes.md @@ -6,4 +6,4 @@ Abstract classes are used to provide a common interface and implementation for a Learn more from the following resources: -- [What is an Abstract Class in Object Oriented Programming](https://computinglearner.com/abstract-class-in-object-oriented-programming/) \ No newline at end of file +- [What is an Abstract Class in Object Oriented Programming](https://computinglearner.com/abstract-class-in-object-oriented-programming/) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md index 19b7f15c6..be095dce6 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md @@ -6,4 +6,4 @@ Concrete classes are used to provide specific implementation details for a group Learn more from the following resources: -- [Concrete class in Java](https://www.geeksforgeeks.org/concrete-class-in-java/) \ No newline at end of file +- [Concrete class in Java](https://www.geeksforgeeks.org/concrete-class-in-java/) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/103-interfaces.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/103-interfaces.md index 28fa7b485..2a32c8099 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/103-interfaces.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/103-interfaces.md @@ -6,4 +6,4 @@ Interfaces are used to define a common behavior for a group of related classes, Learn more from the following resources: -- [Fundamental concepts: What's an Interface?](https://www.youtube.com/watch?v=o1jBgdhQsGo) \ No newline at end of file +- [Fundamental concepts: What's an Interface?](https://www.youtube.com/watch?v=o1jBgdhQsGo) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/index.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/index.md index 2e8b2f1f0..c60331ad2 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/index.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/index.md @@ -14,4 +14,4 @@ Object-oriented programming (OOP) is a programming paradigm that is based on the Learn more from the following resources: -- [Overview of Object-Oriented Paradigm](https://www.tutorialspoint.com/software_architecture_design/object_oriented_paradigm.htm) \ No newline at end of file +- [Overview of Object-Oriented Paradigm](https://www.tutorialspoint.com/software_architecture_design/object_oriented_paradigm.htm) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/100-domain-models.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/100-domain-models.md index 9b6e9f945..3bac6c290 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/100-domain-models.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/100-domain-models.md @@ -7,4 +7,4 @@ A domain model is used to provide a clear and consistent representation of the p Learn more from the following links: - [Overview of Domain model](https://en.wikipedia.org/wiki/Domain_model) -- [Domain Driven Design](https://khalilstemmler.com/articles/categories/domain-driven-design/) \ No newline at end of file +- [Domain Driven Design](https://khalilstemmler.com/articles/categories/domain-driven-design/) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/101-anemic-models.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/101-anemic-models.md index 62d37e0d8..4949fadda 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/101-anemic-models.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/101-anemic-models.md @@ -7,4 +7,4 @@ An anemic model is considered an anti-pattern in object-oriented programming (OO Learn more from the following links: - [Overview of Anemic Domain Model](https://en.wikipedia.org/wiki/Anemic_domain_model) -- [What is an Anaemic Domain Model?](https://www.ensonodigital.com/blog/anaemic-domain-model-vs-rich-domain-model) \ No newline at end of file +- [What is an Anaemic Domain Model?](https://www.ensonodigital.com/blog/anaemic-domain-model-vs-rich-domain-model) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/102-layered-architectures.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/102-layered-architectures.md index 460156d71..2eb593ba9 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/102-layered-architectures.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/102-layered-architectures.md @@ -11,4 +11,4 @@ There are several types of layered architectures, but a common one is the three- Learn more from the following links: - [Software Architecture Patterns — Layered Architecture](https://priyalwalpita.medium.com/software-architecture-patterns-layered-architecture-a3b89b71a057) -- [5 Primary Layers in Software Architecture?](https://www.indeed.com/career-advice/career-development/what-are-the-layers-in-software-architecture) \ No newline at end of file +- [5 Primary Layers in Software Architecture?](https://www.indeed.com/career-advice/career-development/what-are-the-layers-in-software-architecture) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/103-domain-language.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/103-domain-language.md index 39c3bc046..700aee12c 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/103-domain-language.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/103-domain-language.md @@ -7,4 +7,4 @@ A domain language is used to provide a common understanding of the problem domai Learn more from the following links: - [Overview of Domain-specific language](https://en.wikipedia.org/wiki/Domain-specific_language) -- [What are Domain Languages (DSLs)?](https://www.jetbrains.com/mps/concepts/domain-specific-languages/) \ No newline at end of file +- [What are Domain Languages (DSLs)?](https://www.jetbrains.com/mps/concepts/domain-specific-languages/) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/104-class-invariants.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/104-class-invariants.md index 5c9768bc6..34ef55587 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/104-class-invariants.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/104-class-invariants.md @@ -7,4 +7,4 @@ Class invariants are typically defined in the constructor of a class and are enf Learn more from the following links: - [Overview of Class invariant](https://en.wikipedia.org/wiki/Class_invariant) -- [The concept of class invariant in object-oriented programming](https://arxiv.org/abs/2109.06557) \ No newline at end of file +- [The concept of class invariant in object-oriented programming](https://arxiv.org/abs/2109.06557) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/index.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/index.md index bb5fc5abe..ef959957b 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/index.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/index.md @@ -6,4 +6,4 @@ The main advantage of using MDD is that it allows for a clear separation of conc Learn more from the following links: -- [Model Driven Design – theory to practice](https://www.todaysoftmag.com/article/1529/model-driven-design-theory-to-practice) \ No newline at end of file +- [Model Driven Design – theory to practice](https://www.todaysoftmag.com/article/1529/model-driven-design-theory-to-practice) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/index.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/index.md index 4b4694bac..27a56de8c 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/index.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/index.md @@ -5,4 +5,4 @@ Object-oriented programming (OOP) is a programming paradigm that is based on the Learn more from the following links: - [Discover Object Oriented Programming](https://blog.hubspot.com/website/object-oriented-programming) -- [Software Development Tutorial - What is object-oriented language?s](https://www.youtube.com/watch?app=desktop&v=SS-9y0H3Si8) \ No newline at end of file +- [Software Development Tutorial - What is object-oriented language?s](https://www.youtube.com/watch?app=desktop&v=SS-9y0H3Si8) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/100-composition-over-inheritance.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/100-composition-over-inheritance.md index 8cb57c90c..d72a588d2 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/100-composition-over-inheritance.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/100-composition-over-inheritance.md @@ -7,4 +7,4 @@ Inheritance is a powerful mechanism for creating reusable code, but it can also Learn more from the following links: - [Tutorial - Composition over Inheritance](https://www.youtube.com/watch?v=wfMtDGfHWpA) -- [Overview of Composition over Inheritance](https://en.wikipedia.org/wiki/Composition_over_inheritance) \ No newline at end of file +- [Overview of Composition over Inheritance](https://en.wikipedia.org/wiki/Composition_over_inheritance) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/101-encapsulate-what-varies.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/101-encapsulate-what-varies.md index d549f46db..f3c249044 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/101-encapsulate-what-varies.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/101-encapsulate-what-varies.md @@ -7,4 +7,4 @@ Encapsulating what varies allows for more flexibility in the code. When changes Learn more from the following resources: - [What does it mean when one says “Encapsulate what varies”?](https://softwareengineering.stackexchange.com/questions/337413/what-does-it-mean-when-one-says-encapsulate-what-varies) -- [Overview of Encapsulate What Varies](https://bootcamp.uxdesign.cc/software-design-principles-every-developers-should-know-23d24735518e) \ No newline at end of file +- [Overview of Encapsulate What Varies](https://bootcamp.uxdesign.cc/software-design-principles-every-developers-should-know-23d24735518e) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md index 57189b96a..fc499d50e 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md @@ -7,4 +7,4 @@ Programming against abstractions allows for more flexibility in the code. When c Learn more from the following resources: - [What is Abstraction in Programming – And Why is it Useful?](https://www.freecodecamp.org/news/what-is-abstraction-in-programming/) -- [Overview of Abstraction principle](https://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming)) \ No newline at end of file +- [Overview of Abstraction principle]() diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/103-hollywood-principle.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/103-hollywood-principle.md index c3a9b441f..9484de989 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/103-hollywood-principle.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/103-hollywood-principle.md @@ -6,4 +6,4 @@ This principle is often used in the context of inversion of control (IoC) and de Learn more from the following resources: -- [Tutorial - Hollywood Principle](https://www.youtube.com/watch?v=lRuygpsXE5s) \ No newline at end of file +- [Tutorial - Hollywood Principle](https://www.youtube.com/watch?v=lRuygpsXE5s) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/104-solid.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/104-solid.md index 486b2a233..3d115b241 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/104-solid.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/104-solid.md @@ -12,4 +12,4 @@ Learn more from the following resources: - [Get Started with SOLID](https://www.bmc.com/blogs/solid-design-principles/) - [SOLID Principles](https://khalilstemmler.com/articles/tags/solid/) -- [Tutorial - What are SOLID principle?](https://www.youtube.com/watch?v=aUCo5cy32kE) \ No newline at end of file +- [Tutorial - What are SOLID principle?](https://www.youtube.com/watch?v=aUCo5cy32kE) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/105-dry.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/105-dry.md index 79ffa0a96..d8106e985 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/105-dry.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/105-dry.md @@ -7,4 +7,4 @@ The DRY principle is closely related to the Single Responsibility Principle (SRP Learn more from the following resources: - [What is DRY in programming?](https://www.youtube.com/watch?v=Rv3RIc_ziOY) -- [Overview of Don't repeat yourself (DRY)](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) \ No newline at end of file +- [Overview of Don't repeat yourself (DRY)](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/106-yagni.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/106-yagni.md index 55f6b0b83..2b692ce2c 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/106-yagni.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/106-yagni.md @@ -7,4 +7,4 @@ The YAGNI principle is closely related to the Single Responsibility Principle (S Learn more from the following resources: - [YAGNI (You Aren’t Gonna Need It) Principle Helps in Efficiency](https://builtin.com/software-engineering-perspectives/yagni) -- [What is YAGNI coding rule, and Why it helps?](https://www.youtube.com/watch?v=2vys1q1dKc4) \ No newline at end of file +- [What is YAGNI coding rule, and Why it helps?](https://www.youtube.com/watch?v=2vys1q1dKc4) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/index.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/index.md index cd25e62ce..8260f3c9d 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/index.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/index.md @@ -17,4 +17,4 @@ By following these design principles, software can be developed in a way that is Learn more from the following resources: - [Principles of Software Design](https://www.geeksforgeeks.org/principles-of-software-design/) -- [Software Design Principles For Beginners](https://www.youtube.com/watch?v=60EqoRcanpo) \ No newline at end of file +- [Software Design Principles For Beginners](https://www.youtube.com/watch?v=60EqoRcanpo) diff --git a/src/data/roadmaps/software-design-architecture/content/104-design-patterns/100-gof-design-patterns.md b/src/data/roadmaps/software-design-architecture/content/104-design-patterns/100-gof-design-patterns.md index a70f938be..3a66d7c0f 100644 --- a/src/data/roadmaps/software-design-architecture/content/104-design-patterns/100-gof-design-patterns.md +++ b/src/data/roadmaps/software-design-architecture/content/104-design-patterns/100-gof-design-patterns.md @@ -11,4 +11,4 @@ The GoF design patterns are divided into three categories: Creational, Structura Learn more from the following links: - [Gangs of Four (GoF) Design Patterns](https://www.digitalocean.com/community/tutorials/gangs-of-four-gof-design-patterns) -- [Tutorial - Builder Pattern (Gang of Four Design Patterns Series)](https://www.youtube.com/watch?v=_sa2WlAFWQos) \ No newline at end of file +- [Tutorial - Builder Pattern (Gang of Four Design Patterns Series)](https://www.youtube.com/watch?v=_sa2WlAFWQos) diff --git a/src/data/roadmaps/software-design-architecture/content/104-design-patterns/101-posa-patterns.md b/src/data/roadmaps/software-design-architecture/content/104-design-patterns/101-posa-patterns.md index ac45fbb9b..e038070bd 100644 --- a/src/data/roadmaps/software-design-architecture/content/104-design-patterns/101-posa-patterns.md +++ b/src/data/roadmaps/software-design-architecture/content/104-design-patterns/101-posa-patterns.md @@ -12,4 +12,4 @@ POSA patterns are divided into four categories: Learn more from the following links: - [POSA Pattern Examples](https://www.youtube.com/watch?v=iYNa_KcWxCU) -- [Overview of Pattern-Oriented Software Architecture](https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture) \ No newline at end of file +- [Overview of Pattern-Oriented Software Architecture](https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture) diff --git a/src/data/roadmaps/software-design-architecture/content/104-design-patterns/index.md b/src/data/roadmaps/software-design-architecture/content/104-design-patterns/index.md index 25726b84f..7f19b7dd3 100644 --- a/src/data/roadmaps/software-design-architecture/content/104-design-patterns/index.md +++ b/src/data/roadmaps/software-design-architecture/content/104-design-patterns/index.md @@ -12,4 +12,4 @@ There are several different types of design patterns, including: Learn more from the following links: - [What Are Design Patterns?](https://www.youtube.com/watch?v=BWprw8UHIzA) -- [Overview - Software Design Pattern](https://en.wikipedia.org/wiki/Software_design_pattern) \ No newline at end of file +- [Overview - Software Design Pattern](https://en.wikipedia.org/wiki/Software_design_pattern) diff --git a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/100-component-principles.md b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/100-component-principles.md index 89ee04b08..e266f5017 100644 --- a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/100-component-principles.md +++ b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/100-component-principles.md @@ -15,4 +15,4 @@ By following these component principles, software can be developed in a way that Learn more from the following links: -- [Component-Based Architecture](https://www.tutorialspoint.com/software_architecture_design/component_based_architecture.htm) \ No newline at end of file +- [Component-Based Architecture](https://www.tutorialspoint.com/software_architecture_design/component_based_architecture.htm) diff --git a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/101-policy-vs-detail.md b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/101-policy-vs-detail.md index 2795ebaba..5c6acfe42 100644 --- a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/101-policy-vs-detail.md +++ b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/101-policy-vs-detail.md @@ -4,4 +4,4 @@ In software architecture, the distinction between **policy** and **detail** refe Policy refers to the high-level decisions that define the overall behavior and structure of the system. These decisions include things like the overall architecture, the system's interface, and the major components and their interactions. Policy decisions are often made by architects and designers, and they set the overall direction for the system. -Detail refers to the low-level implementation details that are required to implement the policy decisions. These include things like the specific algorithms, data structures, and code that make up the system's components. Details are often implemented by developers and are responsible for the actual functioning of the system. \ No newline at end of file +Detail refers to the low-level implementation details that are required to implement the policy decisions. These include things like the specific algorithms, data structures, and code that make up the system's components. Details are often implemented by developers and are responsible for the actual functioning of the system. diff --git a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/102-coupling-and-cohesion.md b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/102-coupling-and-cohesion.md index 6e02158e2..b843689e0 100644 --- a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/102-coupling-and-cohesion.md +++ b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/102-coupling-and-cohesion.md @@ -9,4 +9,4 @@ Cohesion, on the other hand, refers to the degree to which the responsibilities To learn more, visit the following links: - [Cohesion and Coupling in Software Engineering](https://www.youtube.com/watch?v=NweTzHYBgYU) -- [Overview of Coupling and Cohesion](https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/) \ No newline at end of file +- [Overview of Coupling and Cohesion](https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/) diff --git a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/103-boundaries.md b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/103-boundaries.md index c7022fcdb..fd0e0491d 100644 --- a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/103-boundaries.md +++ b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/103-boundaries.md @@ -6,4 +6,4 @@ Boundaries are important because they define the points of interaction between d To learn more, visit the following links: -- [Boundaries in Software Architecture](https://www.open.edu/openlearn/science-maths-technology/approaches-software-development/content-section-1.1.4) \ No newline at end of file +- [Boundaries in Software Architecture](https://www.open.edu/openlearn/science-maths-technology/approaches-software-development/content-section-1.1.4) diff --git a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/index.md b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/index.md index 3c4b65994..352e93a5a 100644 --- a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/index.md +++ b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/index.md @@ -5,4 +5,4 @@ Architectural principles refer to a set of guidelines or rules that are used to To learn more, visit the following links: - [Intro to Architectural Principles](https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/architectural-principles) -- [Principles of Software Design](https://www.youtube.com/watch?v=TO9igqkPtfc) \ No newline at end of file +- [Principles of Software Design](https://www.youtube.com/watch?v=TO9igqkPtfc) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/100-messaging/100-publish-subscribe.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/100-messaging/100-publish-subscribe.md index 845e65b6a..c6225a278 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/100-messaging/100-publish-subscribe.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/100-messaging/100-publish-subscribe.md @@ -7,4 +7,4 @@ The main advantage of using the publish-subscribe pattern is that it allows for Learn more from the following links: - [Publish-Subscribe Architecture (Explained by Example)](https://www.youtube.com/watch?v=O1PgqUqZKTA) -- [Tutorial - Publish–subscribe pattern](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) \ No newline at end of file +- [Tutorial - Publish–subscribe pattern](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/100-messaging/101-event-driven.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/100-messaging/101-event-driven.md index 17951b97b..2a20fc130 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/100-messaging/101-event-driven.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/100-messaging/101-event-driven.md @@ -7,4 +7,4 @@ The main advantage of using EDA is that it allows for a clear separation of conc Learn more from the following links: - [Overview of Event-driven programming](https://en.wikipedia.org/wiki/Event-driven_programming) -- [What is event-driven architecture?](https://www.redhat.com/en/topics/integration/what-is-event-driven-architecture) \ No newline at end of file +- [What is event-driven architecture?](https://www.redhat.com/en/topics/integration/what-is-event-driven-architecture) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/100-client-server.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/100-client-server.md index 8ad417502..1659c6182 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/100-client-server.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/100-client-server.md @@ -6,4 +6,4 @@ The client is responsible for presenting the user interface and handling user in Learn more from the following links: -- [Intro to Client-server Architecture](https://cs.uwaterloo.ca/~m2nagapp/courses/CS446/1195/Arch_Design_Activity/ClientServer.pdf) \ No newline at end of file +- [Intro to Client-server Architecture](https://cs.uwaterloo.ca/~m2nagapp/courses/CS446/1195/Arch_Design_Activity/ClientServer.pdf) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/101-peer-to-peer.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/101-peer-to-peer.md index 0c903d991..14c48731c 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/101-peer-to-peer.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/101-peer-to-peer.md @@ -6,4 +6,4 @@ The main advantage of using P2P architecture is that it allows for a more decent Learn more from the following links: -- [Peer to Peer Architecture](https://student.cs.uwaterloo.ca/~cs446/1171/Arch_Design_Activity/Peer2Peer.pdf) \ No newline at end of file +- [Peer to Peer Architecture](https://student.cs.uwaterloo.ca/~cs446/1171/Arch_Design_Activity/Peer2Peer.pdf) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/index.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/index.md index 5fd6215fa..575d729e0 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/index.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/101-distributed/index.md @@ -1,7 +1,7 @@ # Distributed - Distributed systems refer to the design and organization of software components that are distributed across multiple devices or locations, connected via a network, and work together to achieve a common goal. The main challenge in designing distributed systems is dealing with the inherent complexity that arises from the distribution of components and the communication between them, and it requires techniques such as load balancing, replication, and partitioning to improve scalability, fault-tolerance, and performance. Additionally, security and coordination are also important aspects of distributed systems. +Distributed systems refer to the design and organization of software components that are distributed across multiple devices or locations, connected via a network, and work together to achieve a common goal. The main challenge in designing distributed systems is dealing with the inherent complexity that arises from the distribution of components and the communication between them, and it requires techniques such as load balancing, replication, and partitioning to improve scalability, fault-tolerance, and performance. Additionally, security and coordination are also important aspects of distributed systems. Learn more from the following links: -- [Overview of Distributed Architecture](https://www.tutorialspoint.com/software_architecture_design/distributed_architecture.htm) \ No newline at end of file +- [Overview of Distributed Architecture](https://www.tutorialspoint.com/software_architecture_design/distributed_architecture.htm) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/100-component-based.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/100-component-based.md index 163c0e2a9..daa026d26 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/100-component-based.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/100-component-based.md @@ -6,4 +6,4 @@ In CBD, a software system is divided into a set of components, each of which has Learn more from the following links: -- [Component Based Software architecture](https://www.tutorialspoint.com/software_architecture_design/component_based_architecture.htm) \ No newline at end of file +- [Component Based Software architecture](https://www.tutorialspoint.com/software_architecture_design/component_based_architecture.htm) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/101-monolithic.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/101-monolithic.md index 0073b0e13..011e441e1 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/101-monolithic.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/101-monolithic.md @@ -8,4 +8,4 @@ Learn more from the following links: - [Overview of Monolithic Architecture](https://www.atlassian.com/microservices/microservices-architecture/microservices-vs-monolith) - [What is Monolithic architecture?](https://www.techtarget.com/whatis/definition/monolithic-architecture) -- [What is Software Architecture? (Monolithic vs. Layered vs. Microservice)s](https://www.youtube.com/watch?v=_07NtoK-Kns) \ No newline at end of file +- [What is Software Architecture? (Monolithic vs. Layered vs. Microservice)s](https://www.youtube.com/watch?v=_07NtoK-Kns) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/102-layered.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/102-layered.md index 0c4de8c07..e4f510d7e 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/102-layered.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/102-layered.md @@ -7,4 +7,4 @@ A layered architecture is often used for large and complex systems, where the ne Learn more from the following links: - [Layered Architectures](https://www.youtube.com/watch?v=0kpTKLTx8f4) -- [Get started with Layered Architecture](https://cs.uwaterloo.ca/~m2nagapp/courses/CS446/1195/Arch_Design_Activity/Layered.pdf) \ No newline at end of file +- [Get started with Layered Architecture](https://cs.uwaterloo.ca/~m2nagapp/courses/CS446/1195/Arch_Design_Activity/Layered.pdf) diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/index.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/index.md index 80395392c..5d54898d7 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/index.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/102-structural/index.md @@ -11,4 +11,4 @@ There are several different structural architecture patterns and styles that can - Client-Server: where a client sends requests to a server, and the server responds to those requests - Peer-to-Peer: where each node in the network acts as both a client and a server - Component-based: where the system is composed of reusable and independent software components -- Domain-Driven: where the system is organized around the core business domain and business entities. \ No newline at end of file +- Domain-Driven: where the system is organized around the core business domain and business entities. diff --git a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/index.md b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/index.md index 52dddb293..d55e3354a 100644 --- a/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/index.md +++ b/src/data/roadmaps/software-design-architecture/content/106-architectural-styles/index.md @@ -15,4 +15,4 @@ Some common architectural styles in software include: Learn more from the following links: - [What is Software Architecture & Styles?](https://study.com/academy/lesson/software-architecture-styles-patterns-components.html) -- [Types of Architectural Styles in Software Engineering](https://www.youtube.com/watch?v=2Pp0BcXN9YY) \ No newline at end of file +- [Types of Architectural Styles in Software Engineering](https://www.youtube.com/watch?v=2Pp0BcXN9YY) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/100-cqrs.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/100-cqrs.md index b50441427..6b6acc1fe 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/100-cqrs.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/100-cqrs.md @@ -7,4 +7,4 @@ The command side is responsible for processing commands and updating the system' Learn more from the following resources: - [Get Started with CQRS Pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) -- [CQRS Software Architecture Pattern: The Good, Bad, and the Ugly](https://betterprogramming.pub/cqrs-software-architecture-pattern-the-good-the-bad-and-the-ugly-e9d6e7a34daf) \ No newline at end of file +- [CQRS Software Architecture Pattern: The Good, Bad, and the Ugly](https://betterprogramming.pub/cqrs-software-architecture-pattern-the-good-the-bad-and-the-ugly-e9d6e7a34daf) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/101-soa.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/101-soa.md index 568f7d900..ac36538ad 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/101-soa.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/101-soa.md @@ -6,4 +6,4 @@ Learn more from the following links: - [Overview of Service-Oriented Architecture](https://medium.com/design-microservices-architecture-with-patterns/service-oriented-architecture-1e4716fbca17) - [Tutorial - Service-Oriented Architecture -SOA](https://www.youtube.com/watch?v=jNiEMmoTDoE) -- [What is Service-Oriented Architecture](https://www.youtube.com/watch?v=_dFJOSR-aFs) \ No newline at end of file +- [What is Service-Oriented Architecture](https://www.youtube.com/watch?v=_dFJOSR-aFs) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/102-domain-driven-design.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/102-domain-driven-design.md index 5cb5cf1c5..723b56cdd 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/102-domain-driven-design.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/102-domain-driven-design.md @@ -7,4 +7,4 @@ Learn more from the following links: - [What is DDD (Domain-Driven Design) ?](https://www.youtube.com/watch?v=Tnecs_7OT74) - [Domain-Driven Design patterns for a distributed system](https://www.youtube.com/watch?v=i3d_jzpf0gE) - [Modern Software Architecture (#1): Domain Driven Design](https://medium.com/modern-software-architecture/modern-software-architecture-1-domain-driven-design-f06fad8695f9) -- [The Concept of Domain-Driven Design Explained](https://medium.com/microtica/the-concept-of-domain-driven-design-explained-3184c0fd7c3f) \ No newline at end of file +- [The Concept of Domain-Driven Design Explained](https://medium.com/microtica/the-concept-of-domain-driven-design-explained-3184c0fd7c3f) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/103-model-view-controller.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/103-model-view-controller.md index 204051103..6c7fa0bae 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/103-model-view-controller.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/103-model-view-controller.md @@ -6,4 +6,4 @@ Learn more from the following links: - [MVC Design Pattern](https://www.geeksforgeeks.org/mvc-design-pattern/) - [MVC Framework - Introduction](https://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm) -- [Tutorial - MVC Architectural Pattern](https://www.youtube.com/watch?v=e9S90R-Y24Q) \ No newline at end of file +- [Tutorial - MVC Architectural Pattern](https://www.youtube.com/watch?v=e9S90R-Y24Q) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/104-microservices.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/104-microservices.md index ac7396737..7d068c003 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/104-microservices.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/104-microservices.md @@ -6,4 +6,4 @@ Learn more from the following links: - [Tutorial - Microservices Architectural Pattern](https://www.youtube.com/watch?v=8BPDv038oMI) - [Get started with Microservices Design Patterns](https://www.youtube.com/watch?v=xuH81XGWeGQ) -- [Brief of Microservices](https://microservices.io/patterns/microservices.html) \ No newline at end of file +- [Brief of Microservices](https://microservices.io/patterns/microservices.html) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md index c9aa4e4d8..2a9bf7b56 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md @@ -4,5 +4,5 @@ The Blackboard architectural pattern is a software design pattern that allows fo Learn more from the following links: -- [Overview of Blackboard (design pattern)](https://en.wikipedia.org/wiki/Blackboard_(design_pattern)) -- [](http://www.openloop.com/softwareEngineering/patterns/architecturePattern/arch_Blackboard.htm) \ No newline at end of file +- [Overview of Blackboard (design pattern)]() +- [](http://www.openloop.com/softwareEngineering/patterns/architecturePattern/arch_Blackboard.htm) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/106-microkernel.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/106-microkernel.md index ebeb2ac53..caaa45274 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/106-microkernel.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/106-microkernel.md @@ -5,4 +5,4 @@ A microkernel is an architectural pattern in operating system design that aims t Learn more from the following links: - [Microkernel Architectural Pattern | Software Architecture](https://www.youtube.com/watch?v=h3icQDMRLd8) -- [Overview of Microkernel Architecture](https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch03.html) \ No newline at end of file +- [Overview of Microkernel Architecture](https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch03.html) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/107-serverless-architecture.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/107-serverless-architecture.md index 354e23a26..2de6ad160 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/107-serverless-architecture.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/107-serverless-architecture.md @@ -6,4 +6,4 @@ This architecture pattern mainly focuses on the business logic and event-driven Learn more from the following links: -- [Serverless Architecture Patterns in AWS](https://waswani.medium.com/serverless-architecture-patterns-in-aws-edeab0e46a32) \ No newline at end of file +- [Serverless Architecture Patterns in AWS](https://waswani.medium.com/serverless-architecture-patterns-in-aws-edeab0e46a32) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/108-message-queues-streams.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/108-message-queues-streams.md index 1bd9ab254..917377502 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/108-message-queues-streams.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/108-message-queues-streams.md @@ -7,4 +7,4 @@ Message Queues: A message queue is a software component that allows multiple sys Learn more from the following links: - [System Design — Message Queues](https://medium.com/must-know-computer-science/system-design-message-queues-245612428a22) -- [Overview of Message Queue pattern](https://badia-kharroubi.gitbooks.io/microservices-architecture/content/patterns/communication-patterns/message-queue-pattern.html) \ No newline at end of file +- [Overview of Message Queue pattern](https://badia-kharroubi.gitbooks.io/microservices-architecture/content/patterns/communication-patterns/message-queue-pattern.html) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/109-event-sourcing.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/109-event-sourcing.md index 1ce7a3db0..6b09c71fa 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/109-event-sourcing.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/109-event-sourcing.md @@ -7,4 +7,4 @@ In Event sourcing, all changes to the state of the system are treated as events, Learn more from the following links: - [Event Sourcing Pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/event-sourcing) -- [Design Patterns: Why Event Sourcing?](https://www.youtube.com/watch?v=rUDN40rdly8) \ No newline at end of file +- [Design Patterns: Why Event Sourcing?](https://www.youtube.com/watch?v=rUDN40rdly8) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/index.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/index.md index c7825de50..9bce4e136 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/index.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/index.md @@ -17,4 +17,4 @@ Architectural patterns are a set of solutions that have been proven to work well Learn more from the following links: - [Overview - Architectural Pattern](https://en.wikipedia.org/wiki/Architectural_pattern) -- [Architecture Patterns Used In Enterprise Software Development](https://www.youtube.com/watch?v=BrT3AO8bVQY) \ No newline at end of file +- [Architecture Patterns Used In Enterprise Software Development](https://www.youtube.com/watch?v=BrT3AO8bVQY) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/100-dtos.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/100-dtos.md index 0151cc397..f425e2516 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/100-dtos.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/100-dtos.md @@ -4,4 +4,4 @@ The Data Transfer Object Design Pattern is one of the enterprise application arc Learn more from the following links: -- [Data Transfer Object pattern and Mappers](https://medium.com/@abdalrhmanalkraien/data-transfer-object-pattern-and-mapper-116508bc9df0) \ No newline at end of file +- [Data Transfer Object pattern and Mappers](https://medium.com/@abdalrhmanalkraien/data-transfer-object-pattern-and-mapper-116508bc9df0) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/101-identity-maps.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/101-identity-maps.md index 39cb22ffc..19711af58 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/101-identity-maps.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/101-identity-maps.md @@ -7,4 +7,4 @@ The identity map pattern is typically used in conjunction with an ORM (Object-Re Learn more from the following links: - [Overview of Identity map pattern](https://en.wikipedia.org/wiki/Identity_map_pattern) -- [Tutorial - Identity Map Design Pattern](https://youtube.com/watch?v=erDxkIyNudY) \ No newline at end of file +- [Tutorial - Identity Map Design Pattern](https://youtube.com/watch?v=erDxkIyNudY) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/102-use-cases.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/102-use-cases.md index 5c8c37ba9..1b1f72df7 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/102-use-cases.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/102-use-cases.md @@ -13,4 +13,4 @@ Use cases are often used to drive the design and development of the system, as t Learn more from the following links: -- [Use Case Patterns](https://caminao.blog/how-to-implement-symbolic-representations/patterns/functional-patterns/use-case-patterns/) \ No newline at end of file +- [Use Case Patterns](https://caminao.blog/how-to-implement-symbolic-representations/patterns/functional-patterns/use-case-patterns/) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/103-repositories.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/103-repositories.md index a70c8c1e2..7e1d555f5 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/103-repositories.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/103-repositories.md @@ -7,4 +7,4 @@ A repository is a pattern that can be used to organize the data access code and Learn more from the following links: - [Tutorial - Repository Design Pattern](https://www.youtube.com/watch?v=mb6bwnEaZ3U) -- [Introduction to Repository Design Patterns](https://cubettech.com/resources/blog/introduction-to-repository-design-pattern/) \ No newline at end of file +- [Introduction to Repository Design Patterns](https://cubettech.com/resources/blog/introduction-to-repository-design-pattern/) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/104-mappers.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/104-mappers.md index b534958a6..13e619cb6 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/104-mappers.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/104-mappers.md @@ -7,4 +7,4 @@ A mapper is a component that can be used to convert data from one format or mode Learn more from the following links: - [Overview of Data Mapper Pattern](https://en.wikipedia.org/wiki/Data_mapper_pattern) -- [Tutorial - Mappers](https://www.youtube.com/watch?v=7noMLStHcTE) \ No newline at end of file +- [Tutorial - Mappers](https://www.youtube.com/watch?v=7noMLStHcTE) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/105-transaction-script.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/105-transaction-script.md index 0199d035e..35fdcc2d6 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/105-transaction-script.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/105-transaction-script.md @@ -5,4 +5,4 @@ Transaction Script is a pattern used in enterprise application development that Learn more from the following links: - [Transaction Script Pattern](https://gunnarpeipman.com/transaction-script-pattern/) -- [Tutorial - Transaction Script Design Pattern](https://www.youtube.com/watch?v=fnsU9cqcY3I) \ No newline at end of file +- [Tutorial - Transaction Script Design Pattern](https://www.youtube.com/watch?v=fnsU9cqcY3I) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/106-commands-queries.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/106-commands-queries.md index 9bd71e5a0..8991a387e 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/106-commands-queries.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/106-commands-queries.md @@ -6,4 +6,4 @@ Queries are used for retrieving data from the system, such as reading data from Learn more from the following links: -- [Get Started with CQRS Pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) \ No newline at end of file +- [Get Started with CQRS Pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/107-value-objects.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/107-value-objects.md index 1ac5855a0..b51d2371e 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/107-value-objects.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/107-value-objects.md @@ -7,4 +7,4 @@ A Value Object is defined by its value rather than its identity, meaning that tw Learn more from the following links: - [Overview - Implement Value Objects](https://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/implement-value-objects) -- [Intro to Value object](https://en.wikipedia.org/wiki/Value_object) \ No newline at end of file +- [Intro to Value object](https://en.wikipedia.org/wiki/Value_object) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/108-domain-models.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/108-domain-models.md index dcde4d0ba..baba64a27 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/108-domain-models.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/108-domain-models.md @@ -7,4 +7,4 @@ A Domain Model is a collection of objects that represent the real-world concepts Learn more from the following links: - [Overview - Domain Models](https://sparxsystems.com/enterprise_architect_user_guide/14.0/model_domains/specialized_models.html) -- [Tutorial - Domain Model Pattern](https://www.youtube.com/watch?v=75EGANiqADw) \ No newline at end of file +- [Tutorial - Domain Model Pattern](https://www.youtube.com/watch?v=75EGANiqADw) diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/109-entities.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/109-entities.md index 0689dba2c..c9c9666a3 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/109-entities.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/109-entities.md @@ -2,4 +2,4 @@ Entities are a pattern used in enterprise application development to represent the business concepts that have a unique identity and a lifetime. They are typically used to model real-world objects or concepts that have a distinct identity and a lifecycle, such as a customer, an order, or an account. -An Entity is defined by its identity, meaning that two entities with the same identity are considered to be the same, regardless of their state. Entities usually have a unique identifier, such as a primary key, that is used to identify them. They also have an associated set of properties or attributes that describe their state. \ No newline at end of file +An Entity is defined by its identity, meaning that two entities with the same identity are considered to be the same, regardless of their state. Entities usually have a unique identifier, such as a primary key, that is used to identify them. They also have an associated set of properties or attributes that describe their state. diff --git a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/index.md b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/index.md index 55847e01c..e6e3aa34f 100644 --- a/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/index.md +++ b/src/data/roadmaps/software-design-architecture/content/108-enterprise-patterns/index.md @@ -15,4 +15,4 @@ These patterns can help to improve the maintainability and scalability of the so Learn more from the following links: - [Software Architecture Patterns in Enterprise Software](https://blog.devgenius.io/10-software-architecture-patterns-in-enterprise-software-development-fabacb5ed0c8) -- [What are Enterprise Integration Patterns?](https://www.youtube.com/watch?v=WNm3QmJadNs) \ No newline at end of file +- [What are Enterprise Integration Patterns?](https://www.youtube.com/watch?v=WNm3QmJadNs) diff --git a/src/data/roadmaps/software-design-architecture/content/index.md b/src/data/roadmaps/software-design-architecture/content/index.md index 0bfd9ae96..3768f12e3 100644 --- a/src/data/roadmaps/software-design-architecture/content/index.md +++ b/src/data/roadmaps/software-design-architecture/content/index.md @@ -15,4 +15,4 @@ Each architecture pattern or style has its own set of advantages and disadvantag Learn more from the following links: - [Software Architecture & Design Introduction](https://www.tutorialspoint.com/software_architecture_design/introduction.htm) -- [Overview of Software architecture](https://en.wikipedia.org/wiki/Software_architecture) \ No newline at end of file +- [Overview of Software architecture](https://en.wikipedia.org/wiki/Software_architecture) diff --git a/src/data/roadmaps/software-design-architecture/software-design-architecture.md b/src/data/roadmaps/software-design-architecture/software-design-architecture.md index 1c6612074..0bec5dc0c 100644 --- a/src/data/roadmaps/software-design-architecture/software-design-architecture.md +++ b/src/data/roadmaps/software-design-architecture/software-design-architecture.md @@ -1,62 +1,61 @@ --- -jsonUrl: "/jsons/roadmaps/software-design-architecture.json" -pdfUrl: "/pdfs/roadmaps/software-design-architecture.pdf" +jsonUrl: '/jsons/roadmaps/software-design-architecture.json' +pdfUrl: '/pdfs/roadmaps/software-design-architecture.pdf' order: 12 -briefTitle: "Design and Architecture" -briefDescription: "Guide to learn software design and architecture" -title: "Software Design and Architecture" -description: "Step by step guide to learn software design and architecture" +briefTitle: 'Design and Architecture' +briefDescription: 'Guide to learn software design and architecture' +title: 'Software Design and Architecture' +description: 'Step by step guide to learn software design and architecture' isNew: false hasTopics: true dimensions: width: 968 height: 1764.66 sponsor: - url: "https://bit.ly/3YYcqdt" - title: "Free eBook" - imageUrl: "https://i.imgur.com/RCbFXOY.png" - description: "Learn how to find a GraphQL architecture that scales with this free eBook from Apollo" + url: 'https://bit.ly/3YYcqdt' + title: 'Free eBook' + imageUrl: 'https://i.imgur.com/RCbFXOY.png' + description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' event: - category: "SponsorClick" - action: "Apollo Redirect" - label: "Design and Architecture / Apollo Link" + category: 'SponsorClick' + action: 'Apollo Redirect' + label: 'Design and Architecture / Apollo Link' schema: - headline: "Software Design and Architecture Roadmap" - description: "Learn Software Design and Architecture with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/software-design-architecture.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Software Design and Architecture Roadmap' + description: 'Learn Software Design and Architecture with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/software-design-architecture.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Software Design and Architecture Roadmap" - description: "Learn software design and architecture with this step by step guide and resources." + title: 'Software Design and Architecture Roadmap' + description: 'Learn software design and architecture with this step by step guide and resources.' keywords: - - "guide to learn software design and architecture" - - "software design roadmap" - - "software architecture roadmap" - - "software design and architecture roadmap" - - "modern software design and architecture roadmap" - - "fullstack software design and architecture roadmap" - - "design and architecture roadmap" - - "scalable design roadmap" - - "software design patterns roadmap" - - "software architecture patterns roadmap" - - "design architecture patterns roadmap" - - "application architectures" - - "software architecture guide" + - 'guide to learn software design and architecture' + - 'software design roadmap' + - 'software architecture roadmap' + - 'software design and architecture roadmap' + - 'modern software design and architecture roadmap' + - 'fullstack software design and architecture roadmap' + - 'design and architecture roadmap' + - 'scalable design roadmap' + - 'software design patterns roadmap' + - 'software architecture patterns roadmap' + - 'design architecture patterns roadmap' + - 'application architectures' + - 'software architecture guide' relatedRoadmaps: - - "backend" - - "software-architect" - - "devops" - - "python" - - "java" - - "nodejs" - - "golang" + - 'backend' + - 'software-architect' + - 'devops' + - 'python' + - 'java' + - 'nodejs' + - 'golang' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/100-introduction/100-terminology.md b/src/data/roadmaps/spring-boot/content/100-spring-core/100-introduction/100-terminology.md index 4d731c1e4..3e43c620f 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/100-introduction/100-terminology.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/100-introduction/100-terminology.md @@ -17,4 +17,4 @@ Spring Core is the foundation of the Spring Framework, which provides a comprehe This list is not exhaustive, it covers common terms and concepts used. Visit the following links to learn more about Spring: - [Spring Boot - Official Website](https://spring.io/projects/spring-boot) -- [Spring Boot - Starter Guide](https://spring.io/quickstart) \ No newline at end of file +- [Spring Boot - Starter Guide](https://spring.io/quickstart) diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/101-configuration.md b/src/data/roadmaps/spring-boot/content/100-spring-core/101-configuration.md index 59a9bb3c2..ac2171b39 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/101-configuration.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/101-configuration.md @@ -7,4 +7,4 @@ To learn more about Spring Core Configuration from the links below: - [Spring Framework Documentation](https://docs.spring.io/spring/docs/current/spring-framework-reference/) - ["Spring Configuration" tutorial](https://www.baeldung.com/project-configuration-with-spring) - ["Spring Framework" tutorial](https://www.tutorialspoint.com/spring/index.htm) -- ["Spring Core" video tutorial](https://www.youtube.com/watch?v=GB8k2-Egfv0) \ No newline at end of file +- ["Spring Core" video tutorial](https://www.youtube.com/watch?v=GB8k2-Egfv0) diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/102-dependency-injection.md b/src/data/roadmaps/spring-boot/content/100-spring-core/102-dependency-injection.md index 75ecb76e0..a97ea0731 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/102-dependency-injection.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/102-dependency-injection.md @@ -7,5 +7,3 @@ Visit the following links for more resources: - [Spring Dependency Injection](https://www.baeldung.com/spring-dependency-injection) - [Dependency Injection Using Spring Boot](https://medium.com/edureka/what-is-dependency-injection-5006b53af782) - [Dependency Injection in Spring](https://www.javatpoint.com/dependency-injection-in-spring) - - diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/103-spring-ioc.md b/src/data/roadmaps/spring-boot/content/100-spring-core/103-spring-ioc.md index fb21c3d71..d5d4d8be7 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/103-spring-ioc.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/103-spring-ioc.md @@ -24,4 +24,4 @@ More more resources, check out the following links: - [Spring IoC, Spring Bean Example Tutorial](https://www.digitalocean.com/community/tutorials/spring-ioc-bean-example-tutorial) - [Intro to Inversion of Control with Spring](https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring) - [IoC Container](https://www.javatpoint.com/ioc-container) -- [Spring – IoC Container](https://www.geeksforgeeks.org/spring-ioc-container/) \ No newline at end of file +- [Spring – IoC Container](https://www.geeksforgeeks.org/spring-ioc-container/) diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/104-spring-aop.md b/src/data/roadmaps/spring-boot/content/100-spring-core/104-spring-aop.md index 2bf302a23..3d0b01157 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/104-spring-aop.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/104-spring-aop.md @@ -9,6 +9,3 @@ For more resources, visit the following links: - [Spring AOP Tutorial](https://www.simplilearn.com/tutorials/spring-tutorial/spring-aop-aspect-oriented-programming) - [AOP with Spring Framework](https://www.tutorialspoint.com/spring/aop_with_spring.htm) - [Spring AOP Tutorial](https://howtodoinjava.com/spring-aop-tutorial/) - - - diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/105-spring-mvc.md b/src/data/roadmaps/spring-boot/content/100-spring-core/105-spring-mvc.md index 48ebeded9..53b9036b1 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/105-spring-mvc.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/105-spring-mvc.md @@ -8,4 +8,4 @@ For more resources, visit the following links: - [Spring MVC Tutorial](https://www.javatpoint.com/spring-mvc-tutorial) - [Spring - MVC Framework](https://www.tutorialspoint.com/spring/spring_web_mvc_framework.htm) -- [Web MVC framework](https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html) \ No newline at end of file +- [Web MVC framework](https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html) diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/index.md b/src/data/roadmaps/spring-boot/content/100-spring-core/index.md index 13fc57f9c..cc3a2c9f0 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/index.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/index.md @@ -11,4 +11,4 @@ You can learn more about Spring Core from the links below: - [Official website](https://spring.io/) - [Official Documentation](https://spring.io/why-spring) - [Getting Started with Spring](https://spring.io/guides/gs/spring-boot/) -- [Spring Core Tutorial](https://www.tutorialspoint.com/spring/index.htm) \ No newline at end of file +- [Spring Core Tutorial](https://www.tutorialspoint.com/spring/index.htm) diff --git a/src/data/roadmaps/spring-boot/content/101-spring-security/100-authentication.md b/src/data/roadmaps/spring-boot/content/101-spring-security/100-authentication.md index c15519173..e900681e1 100644 --- a/src/data/roadmaps/spring-boot/content/101-spring-security/100-authentication.md +++ b/src/data/roadmaps/spring-boot/content/101-spring-security/100-authentication.md @@ -7,6 +7,3 @@ For more info, visit the following resources: - [Spring Authentication](https://docs.spring.io/spring-security/reference/features/authentication/index.html) - [Spring Security Basic Authentication](https://www.baeldung.com/spring-security-basic-authentication) - [Spring Security Authentication](https://spring.io/projects/spring-security) - - - diff --git a/src/data/roadmaps/spring-boot/content/101-spring-security/101-authorization.md b/src/data/roadmaps/spring-boot/content/101-spring-security/101-authorization.md index 2a21f41b8..bcbaac3ff 100644 --- a/src/data/roadmaps/spring-boot/content/101-spring-security/101-authorization.md +++ b/src/data/roadmaps/spring-boot/content/101-spring-security/101-authorization.md @@ -7,4 +7,3 @@ Visit the following links for more information: - [Spring Authorization](https://docs.spring.io/spring-security/reference/servlet/authorization/index.html) - [Advanced authorization in Spring](https://docs.spring.io/spring-security/site/docs/5.2.11.RELEASE/reference/html/authorization.html) - [Spring Security: Authentication and Authorization In-Depth](https://www.marcobehler.com/guides/spring-security) - diff --git a/src/data/roadmaps/spring-boot/content/101-spring-security/102-oauth2.md b/src/data/roadmaps/spring-boot/content/101-spring-security/102-oauth2.md index ef13f7e09..217b01ae7 100644 --- a/src/data/roadmaps/spring-boot/content/101-spring-security/102-oauth2.md +++ b/src/data/roadmaps/spring-boot/content/101-spring-security/102-oauth2.md @@ -6,4 +6,4 @@ Learn more about Oauth2 from the following resources: - [Spring Boot - OAuth2 with JWT](https://www.tutorialspoint.com/spring_boot/spring_boot_oauth2_with_jwt.htm) - [Spring Boot and OAuth2](https://spring.io/guides/tutorials/spring-boot-oauth2/) -- [Spring Security](https://www.tutorialspoint.com/spring_security/spring_security_with_oauth2.htm) \ No newline at end of file +- [Spring Security](https://www.tutorialspoint.com/spring_security/spring_security_with_oauth2.htm) diff --git a/src/data/roadmaps/spring-boot/content/101-spring-security/103-jwt-authentication.md b/src/data/roadmaps/spring-boot/content/101-spring-security/103-jwt-authentication.md index fc57f08f8..3bb208ed1 100644 --- a/src/data/roadmaps/spring-boot/content/101-spring-security/103-jwt-authentication.md +++ b/src/data/roadmaps/spring-boot/content/101-spring-security/103-jwt-authentication.md @@ -6,4 +6,4 @@ For more resources, visit the following links: - [JWT Token Authentication in Spring](https://springframework.guru/jwt-authentication-in-spring-microservices-jwt-token/) - [Spring Security with JWT for REST API](https://www.toptal.com/spring/spring-security-tutorial) -- [Spring Security - JWT](https://www.tutorialspoint.com/spring_security/spring_security_with_jwt.htm) \ No newline at end of file +- [Spring Security - JWT](https://www.tutorialspoint.com/spring_security/spring_security_with_jwt.htm) diff --git a/src/data/roadmaps/spring-boot/content/102-spring-boot-starters.md b/src/data/roadmaps/spring-boot/content/102-spring-boot-starters.md index af56249f7..11024af53 100644 --- a/src/data/roadmaps/spring-boot/content/102-spring-boot-starters.md +++ b/src/data/roadmaps/spring-boot/content/102-spring-boot-starters.md @@ -6,4 +6,4 @@ For more information, visit the following links: - [Intro to Spring Boot Starters](https://www.baeldung.com/spring-boot-starters) - [Spring Boot Starters](https://www.javatpoint.com/spring-boot-starters) -- [Starters in Spring Boot](https://www.geeksforgeeks.org/spring-boot-starters/) \ No newline at end of file +- [Starters in Spring Boot](https://www.geeksforgeeks.org/spring-boot-starters/) diff --git a/src/data/roadmaps/spring-boot/content/103-autconfiguration.md b/src/data/roadmaps/spring-boot/content/103-autconfiguration.md index e725f42d8..2b0d1af4f 100644 --- a/src/data/roadmaps/spring-boot/content/103-autconfiguration.md +++ b/src/data/roadmaps/spring-boot/content/103-autconfiguration.md @@ -6,4 +6,4 @@ For more information, visit the following links: - [Auto-configuration using Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/using-boot-auto-configuration.html) - [Spring Boot Auto-configuration](https://www.javatpoint.com/spring-boot-auto-configuration) -- [What is Spring Boot Auto-configuration](https://www.geeksforgeeks.org/spring-boot-auto-configuration/) \ No newline at end of file +- [What is Spring Boot Auto-configuration](https://www.geeksforgeeks.org/spring-boot-auto-configuration/) diff --git a/src/data/roadmaps/spring-boot/content/104-spring-boot-actuators.md b/src/data/roadmaps/spring-boot/content/104-spring-boot-actuators.md index d24fbb3ed..5dbf5dd47 100644 --- a/src/data/roadmaps/spring-boot/content/104-spring-boot-actuators.md +++ b/src/data/roadmaps/spring-boot/content/104-spring-boot-actuators.md @@ -16,4 +16,4 @@ For more information, visit the following links: - [Building a RESTful Web Service with Spring Boot Actuator](https://spring.io/guides/gs/actuator-service/) - [Spring Boot Starter Actuator](https://www.javatpoint.com/spring-boot-actuator) -- [What is Spring Boot Actuator](https://www.baeldung.com/spring-boot-actuators) \ No newline at end of file +- [What is Spring Boot Actuator](https://www.baeldung.com/spring-boot-actuators) diff --git a/src/data/roadmaps/spring-boot/content/105-embedded-server.md b/src/data/roadmaps/spring-boot/content/105-embedded-server.md index 17e097470..be382a114 100644 --- a/src/data/roadmaps/spring-boot/content/105-embedded-server.md +++ b/src/data/roadmaps/spring-boot/content/105-embedded-server.md @@ -6,4 +6,4 @@ For more resources, visit the following links: - [Embedded Servers in Spring](https://subscription.packtpub.com/book/application-development/9781789132588/3/ch03lvl1sec24/embedded-servers) - [What is an Embedded Server? (Spring Boot)](https://www.springboottutorial.com/java-programmer-essentials-what-is-an-embedded-server) -- [Embedded Web Servers ‘How-to’ guides](https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/howto-embedded-web-servers.html) \ No newline at end of file +- [Embedded Web Servers ‘How-to’ guides](https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/howto-embedded-web-servers.html) diff --git a/src/data/roadmaps/spring-boot/content/106-hibernate/100-transactions.md b/src/data/roadmaps/spring-boot/content/106-hibernate/100-transactions.md index ea9b53ba7..1ac608ce2 100644 --- a/src/data/roadmaps/spring-boot/content/106-hibernate/100-transactions.md +++ b/src/data/roadmaps/spring-boot/content/106-hibernate/100-transactions.md @@ -9,4 +9,3 @@ For more information, visit the following links: - [Hibernate Transaction Management Example](https://www.javatpoint.com/hibernate-transaction-management-example) - [Hibernate Transaction Management](https://www.javaguides.net/2018/12/hibernate-transaction-management-tutorial.html) - [Hibernate Transaction](https://www.w3schools.blog/hibernate-transaction-management) - diff --git a/src/data/roadmaps/spring-boot/content/106-hibernate/101-relationships.md b/src/data/roadmaps/spring-boot/content/106-hibernate/101-relationships.md index d616d54ef..d61347946 100644 --- a/src/data/roadmaps/spring-boot/content/106-hibernate/101-relationships.md +++ b/src/data/roadmaps/spring-boot/content/106-hibernate/101-relationships.md @@ -14,4 +14,3 @@ Visit the following links for more information: - [Hibernate Relationships In Depth](https://www.java4s.com/hibernate/hibernate-relationships-in-depth/) - [Guide to JPA with Hibernate - Relationship Mapping](https://stackabuse.com/a-guide-to-jpa-with-hibernate-relationship-mapping/) - [Hibernate Mapping](https://dzone.com/articles/hibernate-mapping) - diff --git a/src/data/roadmaps/spring-boot/content/106-hibernate/102-entity-lifecycle.md b/src/data/roadmaps/spring-boot/content/106-hibernate/102-entity-lifecycle.md index b03a48478..ff6b3ebe9 100644 --- a/src/data/roadmaps/spring-boot/content/106-hibernate/102-entity-lifecycle.md +++ b/src/data/roadmaps/spring-boot/content/106-hibernate/102-entity-lifecycle.md @@ -1,6 +1,6 @@ # Entity lifecycle -In Hibernate, we can either create a new object of an entity and store it into the database, or we can fetch the existing data of an entity from the database. These entity is connected with the lifecycle and each object of entity passes through the various stages of the lifecycle. +In Hibernate, we can either create a new object of an entity and store it into the database, or we can fetch the existing data of an entity from the database. These entity is connected with the lifecycle and each object of entity passes through the various stages of the lifecycle. There are mainly four states of the Hibernate Lifecycle : @@ -12,6 +12,5 @@ There are mainly four states of the Hibernate Lifecycle : For more resources, visit the following links: - [Hibernate Lifecycle](https://www.geeksforgeeks.org/hibernate-lifecycle/) -- [Entity Lifecycle in Hibernate](https://www.javatpoint.com/hibernate-lifecycle) +- [Entity Lifecycle in Hibernate](https://www.javatpoint.com/hibernate-lifecycle) - [Hibernate Entity Lifecycle & and its state](https://www.baeldung.com/hibernate-entity-lifecycle) - diff --git a/src/data/roadmaps/spring-boot/content/106-hibernate/index.md b/src/data/roadmaps/spring-boot/content/106-hibernate/index.md index f2ce31d2a..2150db8f2 100644 --- a/src/data/roadmaps/spring-boot/content/106-hibernate/index.md +++ b/src/data/roadmaps/spring-boot/content/106-hibernate/index.md @@ -6,4 +6,4 @@ For more resources, visit the following links: - [Difference Between Spring vs Hibernate](https://www.educba.com/spring-vs-hibernate/) - [Spring Boot – Integrating Hibernate and JPA](https://www.geeksforgeeks.org/spring-boot-integrating-hibernate-and-jpa/) -- [Spring Hibernate Integration Example](https://www.digitalocean.com/community/tutorials/spring-hibernate-integration-example-tutorial) \ No newline at end of file +- [Spring Hibernate Integration Example](https://www.digitalocean.com/community/tutorials/spring-hibernate-integration-example-tutorial) diff --git a/src/data/roadmaps/spring-boot/content/107-spring-data/101-spring-data-mongodb.md b/src/data/roadmaps/spring-boot/content/107-spring-data/101-spring-data-mongodb.md index 1b2a0ac11..658c32014 100644 --- a/src/data/roadmaps/spring-boot/content/107-spring-data/101-spring-data-mongodb.md +++ b/src/data/roadmaps/spring-boot/content/107-spring-data/101-spring-data-mongodb.md @@ -9,4 +9,3 @@ For more resources on spring data mongodb, visit the following links: - [Spring Data MongoDB](https://spring.io/projects/spring-data-mongodb) - [Introduction to Spring Data MongoDB](https://www.baeldung.com/spring-data-mongodb-tutorial) - [Spring Boot Integration with MongoDB Tutorial](https://www.mongodb.com/compatibility/spring-boot) - diff --git a/src/data/roadmaps/spring-boot/content/107-spring-data/102-spring-data-jdbc.md b/src/data/roadmaps/spring-boot/content/107-spring-data/102-spring-data-jdbc.md index 3935d4e2f..541fcc000 100644 --- a/src/data/roadmaps/spring-boot/content/107-spring-data/102-spring-data-jdbc.md +++ b/src/data/roadmaps/spring-boot/content/107-spring-data/102-spring-data-jdbc.md @@ -6,4 +6,4 @@ Visit the following links for more resources on spring data jdbc: - [Spring Data JDBC](https://spring.io/projects/spring-data-jdbc) - [Spring Data JDBC - Reference Documentation](https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/) -- [Introduction to Spring Data JDBC](https://www.baeldung.com/spring-data-jdbc-intro) \ No newline at end of file +- [Introduction to Spring Data JDBC](https://www.baeldung.com/spring-data-jdbc-intro) diff --git a/src/data/roadmaps/spring-boot/content/107-spring-data/index.md b/src/data/roadmaps/spring-boot/content/107-spring-data/index.md index 75cf9f1d5..26632e32d 100644 --- a/src/data/roadmaps/spring-boot/content/107-spring-data/index.md +++ b/src/data/roadmaps/spring-boot/content/107-spring-data/index.md @@ -7,4 +7,3 @@ For more resources, visit the following links: - [Spring Data](https://spring.io/projects/spring-data) - [Spring Data – One API To Rule Them All?](https://www.infoq.com/articles/spring-data-intro/) - [What is JPA, Spring Data and Spring Data JPA](https://www.amitph.com/jpa-and-spring-data-jpa/) - diff --git a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/100-spring-cloud-gateway.md b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/100-spring-cloud-gateway.md index ceed43369..d2f687eeb 100644 --- a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/100-spring-cloud-gateway.md +++ b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/100-spring-cloud-gateway.md @@ -9,5 +9,3 @@ Visit the following links for more resources: - [What is Spring Cloud Gateway?](https://tanzu.vmware.com/developer/guides/scg-what-is/) - [Spring Cloud Gateway](https://spring.io/projects/spring-cloud-gateway) - [Exploring the New Spring Cloud Gateway](https://www.baeldung.com/spring-cloud-gateway) - - diff --git a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/101-cloud-config.md b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/101-cloud-config.md index 99a8aae87..a29553af4 100644 --- a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/101-cloud-config.md +++ b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/101-cloud-config.md @@ -9,4 +9,3 @@ For more resources, visit the following links: - [Spring Cloud Config](https://spring.io/projects/spring-cloud-config) - [Quick Intro to Spring Cloud Configuration](https://www.baeldung.com/spring-cloud-configuration) - [Spring Boot - Cloud Configuration Server](https://www.tutorialspoint.com/spring_boot/spring_boot_cloud_configuration_server.htm) - diff --git a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/102-spring-cloud-circuit-breaker.md b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/102-spring-cloud-circuit-breaker.md index e6ce8047b..772766bed 100644 --- a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/102-spring-cloud-circuit-breaker.md +++ b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/102-spring-cloud-circuit-breaker.md @@ -7,5 +7,3 @@ For more resources, visit the following links: - [Spring Cloud Circuit Breaker](https://spring.io/projects/spring-cloud-circuitbreaker) - [Quick Guide to Spring Cloud Circuit Breaker](https://www.baeldung.com/spring-cloud-circuit-breaker) - [Spring Cloud - Circuit Breaker using Hystrix](https://www.tutorialspoint.com/spring_cloud/spring_cloud_circuit_breaker_using_hystrix.htm) - - diff --git a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/103-spring-cloud-openfeign.md b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/103-spring-cloud-openfeign.md index 867aaf89e..def7b7d74 100644 --- a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/103-spring-cloud-openfeign.md +++ b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/103-spring-cloud-openfeign.md @@ -6,4 +6,4 @@ For more resources, visit the following links: - [Introduction to Spring Cloud OpenFeign](https://www.baeldung.com/spring-cloud-openfeign) - [Spring Cloud OpenFeign](https://spring.io/projects/spring-cloud-openfeign) -- [Simple Implementation of Spring Cloud OpenFeign](https://medium.com/javarevisited/simple-implementation-of-spring-cloud-openfeign-7f022630d01d) \ No newline at end of file +- [Simple Implementation of Spring Cloud OpenFeign](https://medium.com/javarevisited/simple-implementation-of-spring-cloud-openfeign-7f022630d01d) diff --git a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/104-hystrix.md b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/104-hystrix.md index a53596313..ff59f2279 100644 --- a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/104-hystrix.md +++ b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/104-hystrix.md @@ -7,4 +7,3 @@ For more resources, visit the following links: - [Spring Boot - Hystrix](https://www.tutorialspoint.com/spring_boot/spring_boot_hystrix.htm) - [Circuit Breaker: Hystrix Clients](https://cloud.spring.io/spring-cloud-netflix/multi/multi__circuit_breaker_hystrix_clients.html) - [Hystrix: Spring Cloud](https://stackabuse.com/spring-cloud-hystrix/) - diff --git a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/105-sleuth.md b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/105-sleuth.md index beb092da7..af0057fef 100644 --- a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/105-sleuth.md +++ b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/105-sleuth.md @@ -9,6 +9,3 @@ For more resources, visit the following links: - [Spring Cloud Sleuth](https://spring.io/projects/spring-cloud-sleuth) - [Spring Cloud Sleuth in a Monolith Application](https://www.baeldung.com/spring-cloud-sleuth-single-application) - [Spring Cloud Tutorial](https://www.javainuse.com/spring/cloud-sleuth) - - - diff --git a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/106-eureka.md b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/106-eureka.md index 748953452..230c60692 100644 --- a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/106-eureka.md +++ b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/106-eureka.md @@ -9,4 +9,3 @@ For more resources, visit the following links: - [Introduction to Spring Cloud Netflix – Eureka](https://www.baeldung.com/spring-cloud-netflix-eureka) - [Spring Boot - Eureka Server](https://www.tutorialspoint.com/spring_boot/spring_boot_eureka_server.htm) - [Introducing Spring Cloud EUREKA](https://www.youtube.com/watch?v=1uNo1NrqsX4) - diff --git a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/index.md b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/index.md index c32fde3e5..f51e32194 100644 --- a/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/index.md +++ b/src/data/roadmaps/spring-boot/content/108-microservices/100-spring-cloud/index.md @@ -20,4 +20,4 @@ For more resources, visit the following links: - [Spring Cloud](https://spring.io/projects/spring-cloud) - [Spring Cloud Tutorial](https://www.javatpoint.com/spring-cloud) -- [Spring Cloud – Bootstrapping](https://www.baeldung.com/spring-cloud-bootstrapping) \ No newline at end of file +- [Spring Cloud – Bootstrapping](https://www.baeldung.com/spring-cloud-bootstrapping) diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/100-servlet.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/100-servlet.md index f202d6553..2d0354a00 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/100-servlet.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/100-servlet.md @@ -7,7 +7,3 @@ For more information, visit the following links: - [DispatcherServlet and web.xml in Spring Boot](https://www.baeldung.com/spring-boot-dispatcherservlet-web-xml) - [The DispatcherServlet](https://docs.spring.io/spring-framework/docs/3.0.0.M4/spring-framework-reference/html/ch15s02.html) - [What is Dispatcher Servlet in Spring?](https://www.geeksforgeeks.org/what-is-dispatcher-servlet-in-sprin) - - - - diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/101-jsp-files.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/101-jsp-files.md index 64811ee74..d83d249ac 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/101-jsp-files.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/101-jsp-files.md @@ -9,4 +9,3 @@ Visit the following links for more resources: - [Spring MVC with JSP View](https://www.geeksforgeeks.org/spring-mvc-with-jsp-view/) - [Spring Boot With JavaServer Pages (JSP)](https://www.baeldung.com/spring-boot-jsp) - [Spring MVC: from JSP and Tiles to Thymeleaf](https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf/) - diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/102-architecture.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/102-architecture.md index 2a4fa265e..395ac52dc 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/102-architecture.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/102-architecture.md @@ -7,12 +7,3 @@ For more resources, visit the following resources: - [Spring MVC Tutorial](https://www.javatpoint.com/spring-mvc-tutorial) - [Spring – MVC Framework](https://www.geeksforgeeks.org/spring-mvc-framework/) - [Overview of Spring MVC Architecture](https://terasolunaorg.github.io/guideline/1.0.1.RELEASE/en/Overview/SpringMVCOverview.html) - - - - - - - - - diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/103-components.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/103-components.md index 1dabe107e..401554059 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/103-components.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/103-components.md @@ -17,10 +17,3 @@ For more information, visit the following links: - [Spring Boot vs Spring MVC: How do They Compare?](https://rollbar.com/blog/spring-boot-vs-spring-mvc-how-do-they-compare/) - [Spring MVC components](http://makble.com/spring-mvc-components) - - - - - - - diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/index.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/index.md index a30cd1dae..ed156befc 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/index.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/index.md @@ -8,4 +8,4 @@ For more information, visit the following links: - [Spring MVC Tutorial](https://www.javatpoint.com/spring-mvc-tutorial) - [Spring - MVC Framework](https://www.tutorialspoint.com/spring/spring_web_mvc_framework.htm) -- [Spring MVC Tutorial – Everything You Need To Know](https://www.edureka.co/blog/spring-mvc-tutorial/) \ No newline at end of file +- [Spring MVC Tutorial – Everything You Need To Know](https://www.edureka.co/blog/spring-mvc-tutorial/) diff --git a/src/data/roadmaps/spring-boot/content/110-testing/100-jpa-test.md b/src/data/roadmaps/spring-boot/content/110-testing/100-jpa-test.md index 0c5ac644f..db1d1009d 100644 --- a/src/data/roadmaps/spring-boot/content/110-testing/100-jpa-test.md +++ b/src/data/roadmaps/spring-boot/content/110-testing/100-jpa-test.md @@ -17,4 +17,3 @@ Visit the following links for more information on JPA testing: - [Testing JPA Queries with Spring Boot and @DataJpaTest](https://reflectoring.io/spring-boot-data-jpa-test/) - [@DataJpaTest example for Spring Data Repository Unit Test](https://www.bezkoder.com/spring-boot-unit-test-jpa-repo-datajpatest/) - [Testing in Spring Boot](https://www.baeldung.com/spring-boot-testing) - diff --git a/src/data/roadmaps/spring-boot/content/110-testing/101-mock-mvc.md b/src/data/roadmaps/spring-boot/content/110-testing/101-mock-mvc.md index 76cc0ef69..cd4f2b23a 100644 --- a/src/data/roadmaps/spring-boot/content/110-testing/101-mock-mvc.md +++ b/src/data/roadmaps/spring-boot/content/110-testing/101-mock-mvc.md @@ -2,11 +2,8 @@ Spring's MockMvc is a class that allows you to test Spring MVC controllers without the need for an actual web server. It is part of the Spring Test module, which provides a set of testing utilities for Spring applications. - For more information, visit the following link: - [Spring MockMVC tutorial](https://zetcode.com/spring/mockmvc/) - [Spring Boot MockMVC Example](https://howtodoinjava.com/spring-boot2/testing/spring-boot-mockmvc-example/) - [Integration Testing in Spring](https://baeldung.com/integration-testing-in-spring) - - diff --git a/src/data/roadmaps/spring-boot/content/110-testing/102-spring-boot-test-annotation.md b/src/data/roadmaps/spring-boot/content/110-testing/102-spring-boot-test-annotation.md index a91c07f44..4babac11a 100644 --- a/src/data/roadmaps/spring-boot/content/110-testing/102-spring-boot-test-annotation.md +++ b/src/data/roadmaps/spring-boot/content/110-testing/102-spring-boot-test-annotation.md @@ -6,4 +6,4 @@ For more information, visit the following links: - [Testing with Spring Boot and @SpringBootTest](https://reflectoring.io/spring-boot-test/) - [Annotation Interface SpringBootTest](https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/context/SpringBootTest.html) -- [Testing in Spring Boot](https://www.baeldung.com/spring-boot-testing) \ No newline at end of file +- [Testing in Spring Boot](https://www.baeldung.com/spring-boot-testing) diff --git a/src/data/roadmaps/spring-boot/content/110-testing/103-mockbean-annotation.md b/src/data/roadmaps/spring-boot/content/110-testing/103-mockbean-annotation.md index 67291d43e..d4fd5ad58 100644 --- a/src/data/roadmaps/spring-boot/content/110-testing/103-mockbean-annotation.md +++ b/src/data/roadmaps/spring-boot/content/110-testing/103-mockbean-annotation.md @@ -6,4 +6,4 @@ For more information, visit the following links: - [Mockito.mock() vs @Mock vs @MockBean](https://www.baeldung.com/java-spring-mockito-mock-mockbean) - [Spring Boot @MockBean Example](https://howtodoinjava.com/spring-boot2/testing/spring-mockbean-annotation/) -- [Annotation Interface MockBean](https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/mock/mockito/MockBean.html) \ No newline at end of file +- [Annotation Interface MockBean](https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/mock/mockito/MockBean.html) diff --git a/src/data/roadmaps/spring-boot/content/110-testing/index.md b/src/data/roadmaps/spring-boot/content/110-testing/index.md index 25ae6129f..d226dc58c 100644 --- a/src/data/roadmaps/spring-boot/content/110-testing/index.md +++ b/src/data/roadmaps/spring-boot/content/110-testing/index.md @@ -2,9 +2,8 @@ Spring provides a set of testing utilities that make it easy to test the various components of a Spring application, including controllers, services, repositories, and other components. It has a rich set of testing annotations, utility classes and other features to aid in unit testing, integration testing and more. - For more information, visit the following links: - [Spring Testing](https://industrialphysics.com/knowledgebase/articles/spring-testing/) - [What Is Spring Testing?](https://www.developer.com/design/what-is-spring-testing/) -- [Complete Guide To Spring Testing](https://www.lambdatest.com/blog/spring-testing/) \ No newline at end of file +- [Complete Guide To Spring Testing](https://www.lambdatest.com/blog/spring-testing/) diff --git a/src/data/roadmaps/spring-boot/spring-boot.md b/src/data/roadmaps/spring-boot/spring-boot.md index 1e86d9beb..f8b64084d 100644 --- a/src/data/roadmaps/spring-boot/spring-boot.md +++ b/src/data/roadmaps/spring-boot/spring-boot.md @@ -1,59 +1,58 @@ --- -jsonUrl: "/jsons/roadmaps/spring-boot.json" -pdfUrl: "/pdfs/roadmaps/spring-boot.pdf" +jsonUrl: '/jsons/roadmaps/spring-boot.json' +pdfUrl: '/pdfs/roadmaps/spring-boot.pdf' order: 10 -briefTitle: "Spring Boot" -briefDescription: "Step by step guide to becoming a Spring Boot Developer in 2023" -title: "Spring Boot Developer" -description: "Step by step guide to becoming a Spring Boot developer in 2023" +briefTitle: 'Spring Boot' +briefDescription: 'Step by step guide to becoming a Spring Boot Developer in 2023' +title: 'Spring Boot Developer' +description: 'Step by step guide to becoming a Spring Boot developer in 2023' hasTopics: true isNew: true dimensions: width: 968 height: 1245.52 schema: - headline: "Spring Boot Roadmap" - description: "Learn Spring Boot with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/spring-boot.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Spring Boot Roadmap' + description: 'Learn Spring Boot with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/spring-boot.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Learn to become a modern Spring Boot developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for spring boot development. Learn to become a modern Spring Boot developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Learn to become a modern Spring Boot developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for spring boot development. Learn to become a modern Spring Boot developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a developer" - - "guide to becoming a spring boot developer" - - "spring boot developer" - - "spring boot engineer" - - "spring boot skills" - - "guide to spring boot" - - "spring boot guide" - - "spring boot roadmap" - - "spring boot skills" - - "spring boot skills test" - - "skills for spring boot" - - "cloud development" - - "what is spring boot" - - "spring boot quiz" - - "spring boot interview questions" - - "spring boot engineer roadmap" - - "spring boot developer roadmap" - - "become a spring boot developer" - - "spring boot developer career path" - - "spring boot developer" - - "modern spring boot developer" + - 'guide to becoming a developer' + - 'guide to becoming a spring boot developer' + - 'spring boot developer' + - 'spring boot engineer' + - 'spring boot skills' + - 'guide to spring boot' + - 'spring boot guide' + - 'spring boot roadmap' + - 'spring boot skills' + - 'spring boot skills test' + - 'skills for spring boot' + - 'cloud development' + - 'what is spring boot' + - 'spring boot quiz' + - 'spring boot interview questions' + - 'spring boot engineer roadmap' + - 'spring boot developer roadmap' + - 'become a spring boot developer' + - 'spring boot developer career path' + - 'spring boot developer' + - 'modern spring boot developer' relatedRoadmaps: - - "backend" - - "devops" - - "python" - - "golang" - - "nodejs" + - 'backend' + - 'devops' + - 'python' + - 'golang' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/system-design/content/100-introduction/100-what-is-system-design.md b/src/data/roadmaps/system-design/content/100-introduction/100-what-is-system-design.md index df6c4b66d..0e2769674 100644 --- a/src/data/roadmaps/system-design/content/100-introduction/100-what-is-system-design.md +++ b/src/data/roadmaps/system-design/content/100-introduction/100-what-is-system-design.md @@ -2,8 +2,8 @@ System design is the process of defining the elements of a system, as well as their interactions and relationships, in order to satisfy a set of specified requirements. -It involves taking a problem statement, breaking it down into smaller components and designing each component to work together effectively to achieve the overall goal of the system. This process typically includes analyzing the current system (if any) and determining any deficiencies, creating a detailed plan for the new system, and testing the design to ensure that it meets the requirements. It is an iterative process that may involve multiple rounds of design, testing, and refinement. +It involves taking a problem statement, breaking it down into smaller components and designing each component to work together effectively to achieve the overall goal of the system. This process typically includes analyzing the current system (if any) and determining any deficiencies, creating a detailed plan for the new system, and testing the design to ensure that it meets the requirements. It is an iterative process that may involve multiple rounds of design, testing, and refinement. In software engineering, system design is a phase in the software development process that focuses on the high-level design of a software system, including the architecture and components. -It is also one of the important aspects of the interview process for software engineers. Most of the companies have a dedicated system design interview round, where they ask the candidates to design a system for a given problem statement. The candidates are expected to come up with a detailed design of the system, including the architecture, components, and their interactions. They are also expected to discuss the trade-offs involved in their design and the alternatives that they considered. \ No newline at end of file +It is also one of the important aspects of the interview process for software engineers. Most of the companies have a dedicated system design interview round, where they ask the candidates to design a system for a given problem statement. The candidates are expected to come up with a detailed design of the system, including the architecture, components, and their interactions. They are also expected to discuss the trade-offs involved in their design and the alternatives that they considered. diff --git a/src/data/roadmaps/system-design/content/100-introduction/101-how-to-approach-system-design.md b/src/data/roadmaps/system-design/content/100-introduction/101-how-to-approach-system-design.md index 1323eec61..4e1d1fd64 100644 --- a/src/data/roadmaps/system-design/content/100-introduction/101-how-to-approach-system-design.md +++ b/src/data/roadmaps/system-design/content/100-introduction/101-how-to-approach-system-design.md @@ -12,7 +12,7 @@ There are several steps that can be taken when approaching a system design: Note that this is a general approach to System Design. For interview specific answers, see the following resources: -* [How to approach System Design?](https://github.com/donnemartin/system-design-primer#how-to-approach-a-system-design-interview-question) -* [What are system design questions?](https://www.hiredintech.com/system-design) -* [Intro to Architecture and Systems Design Interviews](https://www.youtube.com/watch?v=ZgdS0EUmn70) -* [My System Design Template](https://leetcode.com/discuss/career/229177/My-System-Design-Template) \ No newline at end of file +- [How to approach System Design?](https://github.com/donnemartin/system-design-primer#how-to-approach-a-system-design-interview-question) +- [What are system design questions?](https://www.hiredintech.com/system-design) +- [Intro to Architecture and Systems Design Interviews](https://www.youtube.com/watch?v=ZgdS0EUmn70) +- [My System Design Template](https://leetcode.com/discuss/career/229177/My-System-Design-Template) diff --git a/src/data/roadmaps/system-design/content/100-introduction/102-who-is-this-guide-for.md b/src/data/roadmaps/system-design/content/100-introduction/102-who-is-this-guide-for.md index 7d0d1b687..d022ec4cb 100644 --- a/src/data/roadmaps/system-design/content/100-introduction/102-who-is-this-guide-for.md +++ b/src/data/roadmaps/system-design/content/100-introduction/102-who-is-this-guide-for.md @@ -1,3 +1,3 @@ # Who is this guide for? -This guide is intended for a wide range of individuals including software engineers, system administrators, and IT professionals who are interested in understanding the principles and best practices of designing scalable systems. It is also useful for those who are preparing for system design interviews as it provides a comprehensive understanding of the key concepts and considerations involved in the design process. The guide covers a variety of System Design topics with detailed explanations and external links for learning more about each topic. \ No newline at end of file +This guide is intended for a wide range of individuals including software engineers, system administrators, and IT professionals who are interested in understanding the principles and best practices of designing scalable systems. It is also useful for those who are preparing for system design interviews as it provides a comprehensive understanding of the key concepts and considerations involved in the design process. The guide covers a variety of System Design topics with detailed explanations and external links for learning more about each topic. diff --git a/src/data/roadmaps/system-design/content/100-introduction/index.md b/src/data/roadmaps/system-design/content/100-introduction/index.md index 403077737..4f8555828 100644 --- a/src/data/roadmaps/system-design/content/100-introduction/index.md +++ b/src/data/roadmaps/system-design/content/100-introduction/index.md @@ -2,8 +2,8 @@ System design is the process of defining the elements of a system, as well as their interactions and relationships, in order to satisfy a set of specified requirements. -It involves taking a problem statement, breaking it down into smaller components and designing each component to work together effectively to achieve the overall goal of the system. This process typically includes analyzing the current system (if any) and determining any deficiencies, creating a detailed plan for the new system, and testing the design to ensure that it meets the requirements. It is an iterative process that may involve multiple rounds of design, testing, and refinement. +It involves taking a problem statement, breaking it down into smaller components and designing each component to work together effectively to achieve the overall goal of the system. This process typically includes analyzing the current system (if any) and determining any deficiencies, creating a detailed plan for the new system, and testing the design to ensure that it meets the requirements. It is an iterative process that may involve multiple rounds of design, testing, and refinement. In software engineering, system design is a phase in the software development process that focuses on the high-level design of a software system, including the architecture and components. -It is also one of the important aspects of the interview process for software engineers. Most of the companies have a dedicated system design interview round, where they ask the candidates to design a system for a given problem statement. The candidates are expected to come up with a detailed design of the system, including the architecture, components, and their interactions. They are also expected to discuss the trade-offs involved in their design and the alternatives that they considered. \ No newline at end of file +It is also one of the important aspects of the interview process for software engineers. Most of the companies have a dedicated system design interview round, where they ask the candidates to design a system for a given problem statement. The candidates are expected to come up with a detailed design of the system, including the architecture, components, and their interactions. They are also expected to discuss the trade-offs involved in their design and the alternatives that they considered. diff --git a/src/data/roadmaps/system-design/content/101-performance-vs-scalability.md b/src/data/roadmaps/system-design/content/101-performance-vs-scalability.md index 1bc1d4e4f..374d09d2a 100644 --- a/src/data/roadmaps/system-design/content/101-performance-vs-scalability.md +++ b/src/data/roadmaps/system-design/content/101-performance-vs-scalability.md @@ -1,6 +1,6 @@ # Performance vs Scalability -A service is **scalable** if it results in increased **performance** in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to handle larger units of work, such as when datasets grow. +A service is **scalable** if it results in increased **performance** in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to handle larger units of work, such as when datasets grow. Another way to look at performance vs scalability: @@ -10,4 +10,4 @@ Another way to look at performance vs scalability: To learn more, visit the following links: - [Scalability, Availability & Stability Patterns](https://www.slideshare.net/jboner/scalability-availability-stability-patterns/) -- [A Word on Scalability](https://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html) \ No newline at end of file +- [A Word on Scalability](https://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html) diff --git a/src/data/roadmaps/system-design/content/102-latency-vs-throughput.md b/src/data/roadmaps/system-design/content/102-latency-vs-throughput.md index c8d498fbb..a63787e6f 100644 --- a/src/data/roadmaps/system-design/content/102-latency-vs-throughput.md +++ b/src/data/roadmaps/system-design/content/102-latency-vs-throughput.md @@ -7,4 +7,4 @@ Generally, you should aim for maximal throughput with acceptable latency. Learn more from the following links: - [System Design: Latency vs Throughput](https://cs.fyi/guide/latency-vs-throughput/) -- [Understanding Latency versus Throughput](https://community.cadence.com/cadence_blogs_8/b/fv/posts/understanding-latency-vs-throughput) \ No newline at end of file +- [Understanding Latency versus Throughput](https://community.cadence.com/cadence_blogs_8/b/fv/posts/understanding-latency-vs-throughput) diff --git a/src/data/roadmaps/system-design/content/103-availability-vs-consistency/100-cap-theorem.md b/src/data/roadmaps/system-design/content/103-availability-vs-consistency/100-cap-theorem.md index 849f824e2..98296cafd 100644 --- a/src/data/roadmaps/system-design/content/103-availability-vs-consistency/100-cap-theorem.md +++ b/src/data/roadmaps/system-design/content/103-availability-vs-consistency/100-cap-theorem.md @@ -24,4 +24,3 @@ For more information, have a look at the following resources: - [A plain english introduction to CAP theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) - [CAP FAQ](https://github.com/henryr/cap-faq) - [The CAP theorem](https://www.youtube.com/watch?v=k-Yaq8AHlFA) - diff --git a/src/data/roadmaps/system-design/content/103-availability-vs-consistency/index.md b/src/data/roadmaps/system-design/content/103-availability-vs-consistency/index.md index e71dfe85c..075d0b3ba 100644 --- a/src/data/roadmaps/system-design/content/103-availability-vs-consistency/index.md +++ b/src/data/roadmaps/system-design/content/103-availability-vs-consistency/index.md @@ -11,4 +11,4 @@ Have a look at the following resources to learn more: - [CAP Theorem](https://www.youtube.com/watch?v=_RbsFXWRZ10&t=1s) - [CAP Theorem Revisited](https://robertgreiner.com/cap-theorem-revisited/) - [A plain english introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [CAP FAQ](https://github.com/henryr/cap-faq) \ No newline at end of file +- [CAP FAQ](https://github.com/henryr/cap-faq) diff --git a/src/data/roadmaps/system-design/content/104-consistency-patterns/100-weak-consistency.md b/src/data/roadmaps/system-design/content/104-consistency-patterns/100-weak-consistency.md index fe9ebfaa9..01cbc317b 100644 --- a/src/data/roadmaps/system-design/content/104-consistency-patterns/100-weak-consistency.md +++ b/src/data/roadmaps/system-design/content/104-consistency-patterns/100-weak-consistency.md @@ -4,4 +4,4 @@ After an update is made to the data, it is not guaranteed that any subsequent re To learn more, visit the following links: -- [Consistency Patterns in Distributed Systems](https://cs.fyi/guide/consistency-patterns-week-strong-eventual/) \ No newline at end of file +- [Consistency Patterns in Distributed Systems](https://cs.fyi/guide/consistency-patterns-week-strong-eventual/) diff --git a/src/data/roadmaps/system-design/content/104-consistency-patterns/101-eventual-consistency.md b/src/data/roadmaps/system-design/content/104-consistency-patterns/101-eventual-consistency.md index 82938a0fc..eddaaa9ad 100644 --- a/src/data/roadmaps/system-design/content/104-consistency-patterns/101-eventual-consistency.md +++ b/src/data/roadmaps/system-design/content/104-consistency-patterns/101-eventual-consistency.md @@ -4,4 +4,4 @@ Eventual consistency is a form of Weak Consistency. After an update is made to t To learn more, visit the following links: -- [Consistency Patterns in Distributed Systems](https://cs.fyi/guide/consistency-patterns-week-strong-eventual/) \ No newline at end of file +- [Consistency Patterns in Distributed Systems](https://cs.fyi/guide/consistency-patterns-week-strong-eventual/) diff --git a/src/data/roadmaps/system-design/content/104-consistency-patterns/102-strong-consistency.md b/src/data/roadmaps/system-design/content/104-consistency-patterns/102-strong-consistency.md index 4daa9ae23..fcdc0b15c 100644 --- a/src/data/roadmaps/system-design/content/104-consistency-patterns/102-strong-consistency.md +++ b/src/data/roadmaps/system-design/content/104-consistency-patterns/102-strong-consistency.md @@ -4,4 +4,4 @@ After an update is made to the data, it will be immediately visible to any subse To learn more, visit the following links: -- [Consistency Patterns in Distributed Systems](https://cs.fyi/guide/consistency-patterns-week-strong-eventual/) \ No newline at end of file +- [Consistency Patterns in Distributed Systems](https://cs.fyi/guide/consistency-patterns-week-strong-eventual/) diff --git a/src/data/roadmaps/system-design/content/104-consistency-patterns/index.md b/src/data/roadmaps/system-design/content/104-consistency-patterns/index.md index 15fda777c..bf146a0d0 100644 --- a/src/data/roadmaps/system-design/content/104-consistency-patterns/index.md +++ b/src/data/roadmaps/system-design/content/104-consistency-patterns/index.md @@ -10,4 +10,4 @@ Each of these patterns has its own advantages and disadvantages, and the choice Have a look at the following resources to learn more: -- [Consistency Patterns in Distributed Systems](https://cs.fyi/guide/consistency-patterns-week-strong-eventual/) \ No newline at end of file +- [Consistency Patterns in Distributed Systems](https://cs.fyi/guide/consistency-patterns-week-strong-eventual/) diff --git a/src/data/roadmaps/system-design/content/105-availability-patterns/100-fail-over.md b/src/data/roadmaps/system-design/content/105-availability-patterns/100-fail-over.md index 3766f1b32..49eea6d09 100644 --- a/src/data/roadmaps/system-design/content/105-availability-patterns/100-fail-over.md +++ b/src/data/roadmaps/system-design/content/105-availability-patterns/100-fail-over.md @@ -2,15 +2,15 @@ Failover is an availability pattern that is used to ensure that a system can continue to function in the event of a failure. It involves having a backup component or system that can take over in the event of a failure. -In a failover system, there is a primary component that is responsible for handling requests, and a secondary (or backup) component that is on standby. The primary component is monitored for failures, and if it fails, the secondary component is activated to take over its duties. This allows the system to continue functioning with minimal disruption. +In a failover system, there is a primary component that is responsible for handling requests, and a secondary (or backup) component that is on standby. The primary component is monitored for failures, and if it fails, the secondary component is activated to take over its duties. This allows the system to continue functioning with minimal disruption. -Failover can be implemented in various ways, such as active-passive, active-active, and hot-standby. +Failover can be implemented in various ways, such as active-passive, active-active, and hot-standby. ## Active-passive With active-passive fail-over, heartbeats are sent between the active and the passive server on standby. If the heartbeat is interrupted, the passive server takes over the active's IP address and resumes service. -The length of downtime is determined by whether the passive server is already running in 'hot' standby or whether it needs to start up from 'cold' standby. Only the active server handles traffic. +The length of downtime is determined by whether the passive server is already running in 'hot' standby or whether it needs to start up from 'cold' standby. Only the active server handles traffic. Active-passive failover can also be referred to as master-slave failover. @@ -24,9 +24,9 @@ Active-active failover can also be referred to as master-master failover. ## Disadvantages of Failover - - Fail-over adds more hardware and additional complexity. - - There is a potential for loss of data if the active system fails before any newly written data can be replicated to the passive. +- Fail-over adds more hardware and additional complexity. +- There is a potential for loss of data if the active system fails before any newly written data can be replicated to the passive. - To learn more visit the following links: +To learn more visit the following links: - - [Fail Over Pattern - High Availability](https://www.filecloud.com/blog/2015/12/architectural-patterns-for-high-availability/) \ No newline at end of file +- [Fail Over Pattern - High Availability](https://www.filecloud.com/blog/2015/12/architectural-patterns-for-high-availability/) diff --git a/src/data/roadmaps/system-design/content/105-availability-patterns/102-availability-in-numbers.md b/src/data/roadmaps/system-design/content/105-availability-patterns/102-availability-in-numbers.md index e2239af5b..2f4476bde 100644 --- a/src/data/roadmaps/system-design/content/105-availability-patterns/102-availability-in-numbers.md +++ b/src/data/roadmaps/system-design/content/105-availability-patterns/102-availability-in-numbers.md @@ -6,22 +6,22 @@ Availability is often quantified by uptime (or downtime) as a percentage of time ``` Duration | Acceptable downtime -------------- | ------------- -Downtime per year | 8h 41min 38s -Downtime per month | 43m 28s -Downtime per week | 10m 4.8s -Downtime per day | 1m 26s +------------- | ------------- +Downtime per year | 8h 41min 38s +Downtime per month | 43m 28s +Downtime per week | 10m 4.8s +Downtime per day | 1m 26s ``` ## 99.99% Availability - Four 9s ``` Duration | Acceptable downtime -------------- | ------------- -Downtime per year | 52min 9.8s -Downtime per month | 4m 21s -Downtime per week | 1m 0.5s -Downtime per day | 8.6s +------------- | ------------- +Downtime per year | 52min 9.8s +Downtime per month | 4m 21s +Downtime per week | 1m 0.5s +Downtime per day | 8.6s ``` ## Availability in parallel vs in sequence diff --git a/src/data/roadmaps/system-design/content/105-availability-patterns/index.md b/src/data/roadmaps/system-design/content/105-availability-patterns/index.md index 94a7f9610..8e7db7811 100644 --- a/src/data/roadmaps/system-design/content/105-availability-patterns/index.md +++ b/src/data/roadmaps/system-design/content/105-availability-patterns/index.md @@ -2,4 +2,4 @@ Availability is measured as a percentage of uptime, and defines the proportion of time that a system is functional and working. Availability is affected by system errors, infrastructure problems, malicious attacks, and system load. Cloud applications typically provide users with a service level agreement (SLA), which means that applications must be designed and implemented to maximize availability. - - [Availability Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns#availability) \ No newline at end of file +- [Availability Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns#availability) diff --git a/src/data/roadmaps/system-design/content/106-background-jobs/100-event-driven.md b/src/data/roadmaps/system-design/content/106-background-jobs/100-event-driven.md index a46081fad..a0e01f185 100644 --- a/src/data/roadmaps/system-design/content/106-background-jobs/100-event-driven.md +++ b/src/data/roadmaps/system-design/content/106-background-jobs/100-event-driven.md @@ -8,4 +8,4 @@ Event-driven invocation uses a trigger to start the background task. Examples of Learn more from the following links: -- [Background Jobs - Event Driven Triggers](https://learn.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#event-driven-triggers) \ No newline at end of file +- [Background Jobs - Event Driven Triggers](https://learn.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#event-driven-triggers) diff --git a/src/data/roadmaps/system-design/content/106-background-jobs/101-schedule-driven.md b/src/data/roadmaps/system-design/content/106-background-jobs/101-schedule-driven.md index 3e09e5591..827067d78 100644 --- a/src/data/roadmaps/system-design/content/106-background-jobs/101-schedule-driven.md +++ b/src/data/roadmaps/system-design/content/106-background-jobs/101-schedule-driven.md @@ -10,4 +10,4 @@ Typical examples of tasks that are suited to schedule-driven invocation include Learn more from the following links: -- [Schedule Driven - Background Jobs](https://learn.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#schedule-driven-triggers) \ No newline at end of file +- [Schedule Driven - Background Jobs](https://learn.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#schedule-driven-triggers) diff --git a/src/data/roadmaps/system-design/content/106-background-jobs/102-returning-results.md b/src/data/roadmaps/system-design/content/106-background-jobs/102-returning-results.md index 8526c77ed..fce0cdec1 100644 --- a/src/data/roadmaps/system-design/content/106-background-jobs/102-returning-results.md +++ b/src/data/roadmaps/system-design/content/106-background-jobs/102-returning-results.md @@ -4,4 +4,4 @@ Background jobs execute asynchronously in a separate process, or even in a separ Learn more from the following links: -- [Returning Results - Background Jobs](https://learn.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#returning-results) \ No newline at end of file +- [Returning Results - Background Jobs](https://learn.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#returning-results) diff --git a/src/data/roadmaps/system-design/content/106-background-jobs/index.md b/src/data/roadmaps/system-design/content/106-background-jobs/index.md index 9e41e2db3..da942a1dd 100644 --- a/src/data/roadmaps/system-design/content/106-background-jobs/index.md +++ b/src/data/roadmaps/system-design/content/106-background-jobs/index.md @@ -11,4 +11,4 @@ Background jobs can be used for a variety of purposes, such as: Learn more from the following links: -- [Background Jobs - Best Practices](https://learn.microsoft.com/en-us/azure/architecture/best-practices/background-jobs) \ No newline at end of file +- [Background Jobs - Best Practices](https://learn.microsoft.com/en-us/azure/architecture/best-practices/background-jobs) diff --git a/src/data/roadmaps/system-design/content/107-domain-name-system.md b/src/data/roadmaps/system-design/content/107-domain-name-system.md index 411f72638..b22ed9d86 100644 --- a/src/data/roadmaps/system-design/content/107-domain-name-system.md +++ b/src/data/roadmaps/system-design/content/107-domain-name-system.md @@ -16,9 +16,9 @@ Services such as [CloudFlare](https://www.cloudflare.com/dns/) and [Route53](htt - Balance between varying cluster sizes - A/B testing - [Latency Based](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency) -- [Geolocation Based](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-geo) +- [Geolocation Based](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-geo) To learn more, visit the following links: - [Getting started with Domain Name System](https://github.com/donnemartin/system-design-primer#domain-name-system) -[What is DNS?](https://www.cloudflare.com/learning/dns/what-is-dns/) \ No newline at end of file + [What is DNS?](https://www.cloudflare.com/learning/dns/what-is-dns/) diff --git a/src/data/roadmaps/system-design/content/108-content-delivery-networks/100-push-cdns.md b/src/data/roadmaps/system-design/content/108-content-delivery-networks/100-push-cdns.md index c4b1bc085..45c6e8bb1 100644 --- a/src/data/roadmaps/system-design/content/108-content-delivery-networks/100-push-cdns.md +++ b/src/data/roadmaps/system-design/content/108-content-delivery-networks/100-push-cdns.md @@ -6,4 +6,4 @@ Sites with a small amount of traffic or sites with content that isn't often upda To learn more, visit the following links: -- [Introduction to CDNs](https://github.com/donnemartin/system-design-primer#content-delivery-network) \ No newline at end of file +- [Introduction to CDNs](https://github.com/donnemartin/system-design-primer#content-delivery-network) diff --git a/src/data/roadmaps/system-design/content/108-content-delivery-networks/101-pull-cdns.md b/src/data/roadmaps/system-design/content/108-content-delivery-networks/101-pull-cdns.md index 85563b7d9..55d3fb638 100644 --- a/src/data/roadmaps/system-design/content/108-content-delivery-networks/101-pull-cdns.md +++ b/src/data/roadmaps/system-design/content/108-content-delivery-networks/101-pull-cdns.md @@ -7,4 +7,4 @@ A time-to-live (TTL) determines how long content is cached. Pull CDNs minimize s To learn more, visit the following links: - [Introduction to CDNs](https://github.com/donnemartin/system-design-primer#content-delivery-network) -- [The Differences Between Push And Pull CDNss](http://www.travelblogadvice.com/technical/the-differences-between-push-and-pull-cdns/) \ No newline at end of file +- [The Differences Between Push And Pull CDNss](http://www.travelblogadvice.com/technical/the-differences-between-push-and-pull-cdns/) diff --git a/src/data/roadmaps/system-design/content/108-content-delivery-networks/index.md b/src/data/roadmaps/system-design/content/108-content-delivery-networks/index.md index fd71db594..f1df38c8a 100644 --- a/src/data/roadmaps/system-design/content/108-content-delivery-networks/index.md +++ b/src/data/roadmaps/system-design/content/108-content-delivery-networks/index.md @@ -4,11 +4,11 @@ A content delivery network (CDN) is a globally distributed network of proxy serv Serving content from CDNs can significantly improve performance in two ways: - - Users receive content from data centers close to them - - Your servers do not have to serve requests that the CDN fulfills +- Users receive content from data centers close to them +- Your servers do not have to serve requests that the CDN fulfills Learn more about CDNs from the following links: - [Introduction to CDNs](https://github.com/donnemartin/system-design-primer#content-delivery-network) - [The Differences Between Push And Pull CDNs](http://www.travelblogadvice.com/technical/the-differences-between-push-and-pull-cdns/) -- [Brief aout Content delivery network](https://en.wikipedia.org/wiki/Content_delivery_network) \ No newline at end of file +- [Brief aout Content delivery network](https://en.wikipedia.org/wiki/Content_delivery_network) diff --git a/src/data/roadmaps/system-design/content/109-load-balancers/100-horizontal-scaling.md b/src/data/roadmaps/system-design/content/109-load-balancers/100-horizontal-scaling.md index 60b2350b8..ad0888379 100644 --- a/src/data/roadmaps/system-design/content/109-load-balancers/100-horizontal-scaling.md +++ b/src/data/roadmaps/system-design/content/109-load-balancers/100-horizontal-scaling.md @@ -3,7 +3,8 @@ Load balancers can also help with horizontal scaling, improving performance and availability. Scaling out using commodity machines is more cost efficient and results in higher availability than scaling up a single server on more expensive hardware, called Vertical Scaling. It is also easier to hire for talent working on commodity hardware than it is for specialized enterprise systems. ## Disadvantages of horizontal scaling + - Scaling horizontally introduces complexity and involves cloning servers - Servers should be stateless: they should not contain any user-related data like sessions or profile pictures - Sessions can be stored in a centralized data store such as a database (SQL, NoSQL) or a persistent cache (Redis, Memcached) -- Downstream servers such as caches and databases need to handle more simultaneous connections as upstream servers scale out. \ No newline at end of file +- Downstream servers such as caches and databases need to handle more simultaneous connections as upstream servers scale out. diff --git a/src/data/roadmaps/system-design/content/109-load-balancers/101-layer-4-load-balancing.md b/src/data/roadmaps/system-design/content/109-load-balancers/101-layer-4-load-balancing.md index 74e894174..2ca2d380d 100644 --- a/src/data/roadmaps/system-design/content/109-load-balancers/101-layer-4-load-balancing.md +++ b/src/data/roadmaps/system-design/content/109-load-balancers/101-layer-4-load-balancing.md @@ -1,3 +1,3 @@ # Layer 4 Load Balancing -Layer 4 load balancers look at info at the transport layer to decide how to distribute requests. Generally, this involves the source, destination IP addresses, and ports in the header, but not the contents of the packet. Layer 4 load balancers forward network packets to and from the upstream server, performing Network Address Translation (NAT). \ No newline at end of file +Layer 4 load balancers look at info at the transport layer to decide how to distribute requests. Generally, this involves the source, destination IP addresses, and ports in the header, but not the contents of the packet. Layer 4 load balancers forward network packets to and from the upstream server, performing Network Address Translation (NAT). diff --git a/src/data/roadmaps/system-design/content/109-load-balancers/102-layer-7-load-balancing.md b/src/data/roadmaps/system-design/content/109-load-balancers/102-layer-7-load-balancing.md index ccd4676c7..5c93340b6 100644 --- a/src/data/roadmaps/system-design/content/109-load-balancers/102-layer-7-load-balancing.md +++ b/src/data/roadmaps/system-design/content/109-load-balancers/102-layer-7-load-balancing.md @@ -2,4 +2,4 @@ Layer 7 load balancers look at the application layer to decide how to distribute requests. This can involve contents of the header, message, and cookies. Layer 7 load balancers terminate network traffic, reads the message, makes a load-balancing decision, then opens a connection to the selected server. For example, a layer 7 load balancer can direct video traffic to servers that host videos while directing more sensitive user billing traffic to security-hardened servers. -At the cost of flexibility, layer 4 load balancing requires less time and computing resources than Layer 7, although the performance impact can be minimal on modern commodity hardware. \ No newline at end of file +At the cost of flexibility, layer 4 load balancing requires less time and computing resources than Layer 7, although the performance impact can be minimal on modern commodity hardware. diff --git a/src/data/roadmaps/system-design/content/109-load-balancers/103-load-balancing-algorithms.md b/src/data/roadmaps/system-design/content/109-load-balancers/103-load-balancing-algorithms.md index a3e9b3de2..9e91f52e9 100644 --- a/src/data/roadmaps/system-design/content/109-load-balancers/103-load-balancing-algorithms.md +++ b/src/data/roadmaps/system-design/content/109-load-balancers/103-load-balancing-algorithms.md @@ -6,4 +6,4 @@ There are two primary approaches to load balancing. Dynamic load balancing uses To learn more, visit the following links: -- [Types of Load Balancing Algorithms](https://www.cloudflare.com/learning/performance/types-of-load-balancing-algorithms/) \ No newline at end of file +- [Types of Load Balancing Algorithms](https://www.cloudflare.com/learning/performance/types-of-load-balancing-algorithms/) diff --git a/src/data/roadmaps/system-design/content/109-load-balancers/104-lb-vs-reverse-proxy.md b/src/data/roadmaps/system-design/content/109-load-balancers/104-lb-vs-reverse-proxy.md index fe76ecedf..c62b30aec 100644 --- a/src/data/roadmaps/system-design/content/109-load-balancers/104-lb-vs-reverse-proxy.md +++ b/src/data/roadmaps/system-design/content/109-load-balancers/104-lb-vs-reverse-proxy.md @@ -14,4 +14,4 @@ To learn more visit the following links: - [Reverse Proxy vs Load Balancer](https://www.nginx.com/resources/glossary/reverse-proxy-vs-load-balancer/) - [NGINX Architecture](https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/) - [HAProxy Architecture Guide](http://www.haproxy.org/download/1.2/doc/architecture.txt) -- [Reverse Proxy](https://en.wikipedia.org/wiki/Reverse_proxy) \ No newline at end of file +- [Reverse Proxy](https://en.wikipedia.org/wiki/Reverse_proxy) diff --git a/src/data/roadmaps/system-design/content/109-load-balancers/index.md b/src/data/roadmaps/system-design/content/109-load-balancers/index.md index 14a80497b..594453f30 100644 --- a/src/data/roadmaps/system-design/content/109-load-balancers/index.md +++ b/src/data/roadmaps/system-design/content/109-load-balancers/index.md @@ -2,15 +2,15 @@ Load balancers distribute incoming client requests to computing resources such as application servers and databases. In each case, the load balancer returns the response from the computing resource to the appropriate client. Load balancers are effective at: - - Preventing requests from going to unhealthy servers - - Preventing overloading resources - - Helping to eliminate a single point of failure +- Preventing requests from going to unhealthy servers +- Preventing overloading resources +- Helping to eliminate a single point of failure Load balancers can be implemented with hardware (expensive) or with software such as HAProxy. Additional benefits include: - - **SSL termination** - Decrypt incoming requests and encrypt server responses so backend servers do not have to perform these potentially expensive operations - - Removes the need to install X.509 certificates on each server - - **Session persistence** - Issue cookies and route a specific client's requests to same instance if the web apps do not keep track of sessions +- **SSL termination** - Decrypt incoming requests and encrypt server responses so backend servers do not have to perform these potentially expensive operations + - Removes the need to install X.509 certificates on each server +- **Session persistence** - Issue cookies and route a specific client's requests to same instance if the web apps do not keep track of sessions ## Disadvantages of load balancer @@ -22,4 +22,4 @@ To learn more, visit the following links: - [NGINX Architecture](https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/) - [HAProxy Architecture Guide](http://www.haproxy.org/download/1.2/doc/architecture.txt) -- [Scalability](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) \ No newline at end of file +- [Scalability](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) diff --git a/src/data/roadmaps/system-design/content/110-application-layer/100-microservices.md b/src/data/roadmaps/system-design/content/110-application-layer/100-microservices.md index 035cbfe0c..032b5cea0 100644 --- a/src/data/roadmaps/system-design/content/110-application-layer/100-microservices.md +++ b/src/data/roadmaps/system-design/content/110-application-layer/100-microservices.md @@ -7,4 +7,4 @@ Pinterest, for example, could have the following microservices: user profile, fo To learn more, visit the following links: - [Introduction to Microservices](https://aws.amazon.com/microservices/) -- [Microservices - Wikipedia](https://en.wikipedia.org/wiki/Microservices) \ No newline at end of file +- [Microservices - Wikipedia](https://en.wikipedia.org/wiki/Microservices) diff --git a/src/data/roadmaps/system-design/content/110-application-layer/101-service-discovery.md b/src/data/roadmaps/system-design/content/110-application-layer/101-service-discovery.md index 5e1d2a818..edbec1a30 100644 --- a/src/data/roadmaps/system-design/content/110-application-layer/101-service-discovery.md +++ b/src/data/roadmaps/system-design/content/110-application-layer/101-service-discovery.md @@ -5,4 +5,4 @@ Systems such as [Consul](https://www.consul.io/docs/index.html), [Etcd](https:// Visit the following links to learn more: - [What is Service-oriented architecture?](https://en.wikipedia.org/wiki/Service-oriented_architecture) -- [Intro to Service Discovery](https://github.com/donnemartin/system-design-primer#Service%20Discovery) \ No newline at end of file +- [Intro to Service Discovery](https://github.com/donnemartin/system-design-primer#Service%20Discovery) diff --git a/src/data/roadmaps/system-design/content/110-application-layer/index.md b/src/data/roadmaps/system-design/content/110-application-layer/index.md index ad1113c58..f324eba9e 100644 --- a/src/data/roadmaps/system-design/content/110-application-layer/index.md +++ b/src/data/roadmaps/system-design/content/110-application-layer/index.md @@ -11,4 +11,4 @@ Separating out the web layer from the application layer (also known as platform For more resources, visit the following links: -- [Intro to architecting systems for scale](http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer) \ No newline at end of file +- [Intro to architecting systems for scale](http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer) diff --git a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/100-replication.md b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/100-replication.md index b5c4d0e48..b432b045b 100644 --- a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/100-replication.md +++ b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/100-replication.md @@ -8,4 +8,4 @@ The master serves reads and writes, replicating writes to one or more slaves, wh ## Master-master Replication: -Both masters serve reads and writes and coordinate with each other on writes. If either master goes down, the system can continue to operate with both reads and writes. \ No newline at end of file +Both masters serve reads and writes and coordinate with each other on writes. If either master goes down, the system can continue to operate with both reads and writes. diff --git a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md index 8646526b7..cea52a3db 100644 --- a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md +++ b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md @@ -7,4 +7,4 @@ Similar to the advantages of federation, sharding results in less read and write Learn more from the following links: - [The coming of the Shard](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) -- [Shard (database architecture)](https://en.wikipedia.org/wiki/Shard_(database_architecture)) \ No newline at end of file +- [Shard (database architecture)]() diff --git a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/102-federation.md b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/102-federation.md index be18017b1..c48af7baf 100644 --- a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/102-federation.md +++ b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/102-federation.md @@ -1,3 +1,3 @@ # Federation -Federation (or functional partitioning) splits up databases by function. For example, instead of a single, monolithic database, you could have three databases: forums, users, and products, resulting in less read and write traffic to each database and therefore less replication lag. Smaller databases result in more data that can fit in memory, which in turn results in more cache hits due to improved cache locality. With no single central master serializing writes you can write in parallel, increasing throughput. \ No newline at end of file +Federation (or functional partitioning) splits up databases by function. For example, instead of a single, monolithic database, you could have three databases: forums, users, and products, resulting in less read and write traffic to each database and therefore less replication lag. Smaller databases result in more data that can fit in memory, which in turn results in more cache hits due to improved cache locality. With no single central master serializing writes you can write in parallel, increasing throughput. diff --git a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/103-denormalization.md b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/103-denormalization.md index d1e7e209a..22f410f74 100644 --- a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/103-denormalization.md +++ b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/103-denormalization.md @@ -6,4 +6,4 @@ Once data becomes distributed with techniques such as federation and sharding, m To learn more, visit the following links: -- [Denormalization](https://en.wikipedia.org/wiki/Denormalization) \ No newline at end of file +- [Denormalization](https://en.wikipedia.org/wiki/Denormalization) diff --git a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/104-sql-tuning.md b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/104-sql-tuning.md index 02d2e7418..33b159355 100644 --- a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/104-sql-tuning.md +++ b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/104-sql-tuning.md @@ -2,12 +2,12 @@ SQL tuning is a broad topic and many books have been written as reference. It's important to benchmark and profile to simulate and uncover bottlenecks. - - Benchmark - Simulate high-load situations with tools such as ab. - - Profile - Enable tools such as the slow query log to help track performance issues. +- Benchmark - Simulate high-load situations with tools such as ab. +- Profile - Enable tools such as the slow query log to help track performance issues. Benchmarking and profiling might point you to the following optimizations. To learn more, visit the following links: - [Optimizing MySQL Queries](https://aiddroid.com/10-tips-optimizing-mysql-queries-dont-suck/) -- [How we optimized PostgreSQL queries 100x](https://towardsdatascience.com/how-we-optimized-postgresql-queries-100x-ff52555eabe?gi=13caf5bcf32e) \ No newline at end of file +- [How we optimized PostgreSQL queries 100x](https://towardsdatascience.com/how-we-optimized-postgresql-queries-100x-ff52555eabe?gi=13caf5bcf32e) diff --git a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/index.md b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/index.md index c01e245f6..e052572db 100644 --- a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/index.md +++ b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/index.md @@ -2,10 +2,10 @@ A relational database like SQL is a collection of data items organized in tables. ACID is a set of properties of relational database transactions. - - **Atomicity** - Each transaction is all or nothing - - **Consistency** - Any transaction will bring the database from one valid state to another - - **Isolation** - Executing transactions concurrently has the same results as if the transactions were executed serially - - **Durability** - Once a transaction has been committed, it will remain so +- **Atomicity** - Each transaction is all or nothing +- **Consistency** - Any transaction will bring the database from one valid state to another +- **Isolation** - Executing transactions concurrently has the same results as if the transactions were executed serially +- **Durability** - Once a transaction has been committed, it will remain so There are many techniques to scale a relational database: master-slave replication, master-master replication, federation, sharding, denormalization, and SQL tuning. @@ -14,4 +14,4 @@ To learn more, visit the following links: - [Is there a good reason I see VARCHAR(255) used so often?](https://stackoverflow.com/questions/1217466/is-there-a-good-reason-i-see-varchar255-used-so-often-as-opposed-to-another-l) - [How we optimized PostgreSQL queries 100x](https://towardsdatascience.com/how-we-optimized-postgresql-queries-100x-ff52555eabe?gi=13caf5bcf32e) - [How do NULL values affect performance in a database search?](https://stackoverflow.com/questions/1017239/how-do-null-values-affect-performance-in-a-database-search) -- [Slow Query Log](https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html) \ No newline at end of file +- [Slow Query Log](https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html) diff --git a/src/data/roadmaps/system-design/content/111-databases/101-nosql/100-key-value-store.md b/src/data/roadmaps/system-design/content/111-databases/101-nosql/100-key-value-store.md index 376d970ba..13b47caae 100644 --- a/src/data/roadmaps/system-design/content/111-databases/101-nosql/100-key-value-store.md +++ b/src/data/roadmaps/system-design/content/111-databases/101-nosql/100-key-value-store.md @@ -7,4 +7,4 @@ Key-value stores provide high performance and are often used for simple data mod To learn more, visit the following links: - [Key–value database](https://en.wikipedia.org/wiki/Key%E2%80%93value_database) -- [What are the disadvantages of using a key/value table?](https://stackoverflow.com/questions/4056093/what-are-the-disadvantages-of-using-a-key-value-table-over-nullable-columns-or) \ No newline at end of file +- [What are the disadvantages of using a key/value table?](https://stackoverflow.com/questions/4056093/what-are-the-disadvantages-of-using-a-key-value-table-over-nullable-columns-or) diff --git a/src/data/roadmaps/system-design/content/111-databases/101-nosql/101-document-store.md b/src/data/roadmaps/system-design/content/111-databases/101-nosql/101-document-store.md index 58e5a70e2..cc165a903 100644 --- a/src/data/roadmaps/system-design/content/111-databases/101-nosql/101-document-store.md +++ b/src/data/roadmaps/system-design/content/111-databases/101-nosql/101-document-store.md @@ -6,4 +6,4 @@ Based on the underlying implementation, documents are organized by collections, To learn more, visit the following links: -- [Document-oriented database](https://en.wikipedia.org/wiki/Document-oriented_database) \ No newline at end of file +- [Document-oriented database](https://en.wikipedia.org/wiki/Document-oriented_database) diff --git a/src/data/roadmaps/system-design/content/111-databases/101-nosql/102-wide-column-store.md b/src/data/roadmaps/system-design/content/111-databases/101-nosql/102-wide-column-store.md index d1417394a..efdec9deb 100644 --- a/src/data/roadmaps/system-design/content/111-databases/101-nosql/102-wide-column-store.md +++ b/src/data/roadmaps/system-design/content/111-databases/101-nosql/102-wide-column-store.md @@ -6,4 +6,4 @@ Google introduced Bigtable as the first wide column store, which influenced the Learn more from the following links: -- [Bigtable architecture](https://www.read.seas.harvard.edu/~kohler/class/cs239-w08/chang06bigtable.pdf) \ No newline at end of file +- [Bigtable architecture](https://www.read.seas.harvard.edu/~kohler/class/cs239-w08/chang06bigtable.pdf) diff --git a/src/data/roadmaps/system-design/content/111-databases/101-nosql/103-graph-databases.md b/src/data/roadmaps/system-design/content/111-databases/101-nosql/103-graph-databases.md index be340da15..e5f59ac5c 100644 --- a/src/data/roadmaps/system-design/content/111-databases/101-nosql/103-graph-databases.md +++ b/src/data/roadmaps/system-design/content/111-databases/101-nosql/103-graph-databases.md @@ -7,4 +7,4 @@ Graphs databases offer high performance for data models with complex relationshi Learn more from the following links: - [Graph database](https://en.wikipedia.org/wiki/Graph_database) -- [Introduction to NoSQL](https://www.youtube.com/watch?v=qI_g07C_Q5I) \ No newline at end of file +- [Introduction to NoSQL](https://www.youtube.com/watch?v=qI_g07C_Q5I) diff --git a/src/data/roadmaps/system-design/content/111-databases/101-nosql/index.md b/src/data/roadmaps/system-design/content/111-databases/101-nosql/index.md index eb78ab63b..b8cd0b712 100644 --- a/src/data/roadmaps/system-design/content/111-databases/101-nosql/index.md +++ b/src/data/roadmaps/system-design/content/111-databases/101-nosql/index.md @@ -11,4 +11,4 @@ BASE is often used to describe the properties of NoSQL databases. In comparison Learn more from the following links: - [Brief of NOSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [Introduction to NoSQL](https://www.youtube.com/watch?v=qI_g07C_Q5I) \ No newline at end of file +- [Introduction to NoSQL](https://www.youtube.com/watch?v=qI_g07C_Q5I) diff --git a/src/data/roadmaps/system-design/content/111-databases/102-sql-vs-nosql.md b/src/data/roadmaps/system-design/content/111-databases/102-sql-vs-nosql.md index 2843c4ec6..f0dd33516 100644 --- a/src/data/roadmaps/system-design/content/111-databases/102-sql-vs-nosql.md +++ b/src/data/roadmaps/system-design/content/111-databases/102-sql-vs-nosql.md @@ -6,7 +6,7 @@ NoSQL databases, such as MongoDB and Cassandra, are best suited for unstructured The choice between SQL and NoSQL depends on the specific use case and requirements of the project. If you need to store and query structured data with complex relationships, an SQL database is likely a better choice. If you need to store and query large amounts of unstructured data with high scalability and performance, a NoSQL database may be a better choice. - Learn more from the followinw links: + - [SQL vs NoSQL: The Differences](https://www.sitepoint.com/sql-vs-nosql-differences/) -- [SQL vs NoSQL - When to Use Each](https://www.ibm.com/cloud/blog/sql-vs-nosql) \ No newline at end of file +- [SQL vs NoSQL - When to Use Each](https://www.ibm.com/cloud/blog/sql-vs-nosql) diff --git a/src/data/roadmaps/system-design/content/112-caching/100-client-caching.md b/src/data/roadmaps/system-design/content/112-caching/100-client-caching.md index 1b86e5058..89d574225 100644 --- a/src/data/roadmaps/system-design/content/112-caching/100-client-caching.md +++ b/src/data/roadmaps/system-design/content/112-caching/100-client-caching.md @@ -6,4 +6,4 @@ One common example of client-side caching is web browsers caching frequently acc Another example of client-side caching is application-level caching. Some applications, such as mobile apps, can cache data on the client's device to improve performance and reduce the amount of data that needs to be transferred over the network. -Client side caching has some advantages like reducing server load, faster page load times, and reducing network traffic. However, it also has some drawbacks like the potential for stale data if the client-side cache is not properly managed, or consuming memory or disk space on the client's device. \ No newline at end of file +Client side caching has some advantages like reducing server load, faster page load times, and reducing network traffic. However, it also has some drawbacks like the potential for stale data if the client-side cache is not properly managed, or consuming memory or disk space on the client's device. diff --git a/src/data/roadmaps/system-design/content/112-caching/101-cdn-caching.md b/src/data/roadmaps/system-design/content/112-caching/101-cdn-caching.md index c59f34648..a0916edce 100644 --- a/src/data/roadmaps/system-design/content/112-caching/101-cdn-caching.md +++ b/src/data/roadmaps/system-design/content/112-caching/101-cdn-caching.md @@ -4,4 +4,4 @@ A Content Delivery Network (CDN) is a distributed network of servers that are st When a user requests content from a website that is using a CDN, the CDN will first check if the requested content is available in the cache of a nearby server. If the content is found in the cache, it is served to the user from the nearby server. If the content is not found in the cache, it is requested from the origin server (the original source of the content) and then cached on the nearby server for future requests. -CDN caching can significantly improve the performance and availability of a website by reducing the distance that data needs to travel, reducing the load on the origin server, and allowing for faster delivery of content to end-users. \ No newline at end of file +CDN caching can significantly improve the performance and availability of a website by reducing the distance that data needs to travel, reducing the load on the origin server, and allowing for faster delivery of content to end-users. diff --git a/src/data/roadmaps/system-design/content/112-caching/103-database-caching.md b/src/data/roadmaps/system-design/content/112-caching/103-database-caching.md index 69bfe991a..33a4ccea8 100644 --- a/src/data/roadmaps/system-design/content/112-caching/103-database-caching.md +++ b/src/data/roadmaps/system-design/content/112-caching/103-database-caching.md @@ -1,3 +1,3 @@ # Database Caching -Your database usually includes some level of caching in a default configuration, optimized for a generic use case. Tweaking these settings for specific usage patterns can further boost performance. \ No newline at end of file +Your database usually includes some level of caching in a default configuration, optimized for a generic use case. Tweaking these settings for specific usage patterns can further boost performance. diff --git a/src/data/roadmaps/system-design/content/112-caching/104-application-caching.md b/src/data/roadmaps/system-design/content/112-caching/104-application-caching.md index 60fd85b08..69b6ef672 100644 --- a/src/data/roadmaps/system-design/content/112-caching/104-application-caching.md +++ b/src/data/roadmaps/system-design/content/112-caching/104-application-caching.md @@ -1,6 +1,6 @@ # Application Caching -In-memory caches such as Memcached and Redis are key-value stores between your application and your data storage. Since the data is held in RAM, it is much faster than typical databases where data is stored on disk. RAM is more limited than disk, so [cache invalidation](https://en.wikipedia.org/wiki/Cache_algorithms) algorithms such as [least recently used (LRU)](https://en.wikipedia.org/wiki/Cache_replacement_policies#Least_recently_used_(LRU)) can help invalidate 'cold' entries and keep 'hot' data in RAM. +In-memory caches such as Memcached and Redis are key-value stores between your application and your data storage. Since the data is held in RAM, it is much faster than typical databases where data is stored on disk. RAM is more limited than disk, so [cache invalidation](https://en.wikipedia.org/wiki/Cache_algorithms) algorithms such as [least recently used (LRU)]() can help invalidate 'cold' entries and keep 'hot' data in RAM. Redis has the following additional features: @@ -11,4 +11,4 @@ Generally, you should try to avoid file-based caching, as it makes cloning and a Visit the following links to learn more: -- [Intro to Application Caching](https://github.com/donnemartin/system-design-primer#application-caching) \ No newline at end of file +- [Intro to Application Caching](https://github.com/donnemartin/system-design-primer#application-caching) diff --git a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/100-cache-aside.md b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/100-cache-aside.md index a871f9bfc..3e2cbe027 100644 --- a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/100-cache-aside.md +++ b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/100-cache-aside.md @@ -24,4 +24,4 @@ def get_user(self, user_id): To learn more, have a look at the following resources: -- [From cache to in-memory data grid](https://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast) \ No newline at end of file +- [From cache to in-memory data grid](https://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast) diff --git a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/101-write-through.md b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/101-write-through.md index ecbdeedbb..40b8608b8 100644 --- a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/101-write-through.md +++ b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/101-write-through.md @@ -31,4 +31,4 @@ Write-through is a slow overall operation due to the write operation, but subseq Have a look at the following resources to learn more: -- [Scalability, availability, stability, patterns](http://www.slideshare.net/jboner/scalability-availability-stability-patterns/) \ No newline at end of file +- [Scalability, availability, stability, patterns](http://www.slideshare.net/jboner/scalability-availability-stability-patterns/) diff --git a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/102-write-behind.md b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/102-write-behind.md index 44d7832d7..20d45c51a 100644 --- a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/102-write-behind.md +++ b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/102-write-behind.md @@ -14,4 +14,4 @@ In write-behind, the application does the following: To learn more, visit the following links: -- [Scalability, availability, stability, patterns](http://www.slideshare.net/jboner/scalability-availability-stability-patterns/) \ No newline at end of file +- [Scalability, availability, stability, patterns](http://www.slideshare.net/jboner/scalability-availability-stability-patterns/) diff --git a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/103-refresh-ahead.md b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/103-refresh-ahead.md index 836b9e154..16ac0e258 100644 --- a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/103-refresh-ahead.md +++ b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/103-refresh-ahead.md @@ -5,10 +5,11 @@ You can configure the cache to automatically refresh any recently accessed cache Refresh-ahead can result in reduced latency vs read-through if the cache can accurately predict which items are likely to be needed in the future. ## Disadvantage of refresh-ahead: + - Not accurately predicting which items are likely to be needed in the future can result in reduced performance than without refresh-ahead. ![](https://i.imgur.com/sBXb7lb.png) To learn more, visit the following links: -- [From cache to in-memory data grid](http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast) \ No newline at end of file +- [From cache to in-memory data grid](http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast) diff --git a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/index.md b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/index.md index d13eae628..77383f85d 100644 --- a/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/index.md +++ b/src/data/roadmaps/system-design/content/112-caching/105-caching-strategies/index.md @@ -5,4 +5,4 @@ Since you can only store a limited amount of data in cache, you'll need to deter - Cache-aside - Write-through - Write-behind -- Refresh-ahead \ No newline at end of file +- Refresh-ahead diff --git a/src/data/roadmaps/system-design/content/112-caching/index.md b/src/data/roadmaps/system-design/content/112-caching/index.md index e762105ea..82acc7de4 100644 --- a/src/data/roadmaps/system-design/content/112-caching/index.md +++ b/src/data/roadmaps/system-design/content/112-caching/index.md @@ -15,4 +15,4 @@ Also, you can have the cache in several places, examples include: - CDN Caching - Web Server Caching - Database Caching -- Application Caching \ No newline at end of file +- Application Caching diff --git a/src/data/roadmaps/system-design/content/113-asynchronism/100-message-queues.md b/src/data/roadmaps/system-design/content/113-asynchronism/100-message-queues.md index b335f60e3..b07367c9f 100644 --- a/src/data/roadmaps/system-design/content/113-asynchronism/100-message-queues.md +++ b/src/data/roadmaps/system-design/content/113-asynchronism/100-message-queues.md @@ -17,4 +17,4 @@ To learn more, visit the following links: - [What is Redis?](https://redis.io/) - [RabbitMQ in Message Queues](https://www.rabbitmq.com/) - [Overview of Amazon SQS](https://aws.amazon.com/sqs/) -- [Apache Kafka](https://kafka.apache.org/) \ No newline at end of file +- [Apache Kafka](https://kafka.apache.org/) diff --git a/src/data/roadmaps/system-design/content/113-asynchronism/101-task-queues.md b/src/data/roadmaps/system-design/content/113-asynchronism/101-task-queues.md index f92c1876b..72c518f40 100644 --- a/src/data/roadmaps/system-design/content/113-asynchronism/101-task-queues.md +++ b/src/data/roadmaps/system-design/content/113-asynchronism/101-task-queues.md @@ -6,4 +6,4 @@ Tasks queues receive tasks and their related data, runs them, then delivers thei To learn more, visit the following links: -- [Celery - Distributed Task Queue](https://docs.celeryq.dev/en/stable/) \ No newline at end of file +- [Celery - Distributed Task Queue](https://docs.celeryq.dev/en/stable/) diff --git a/src/data/roadmaps/system-design/content/113-asynchronism/102-back-pressure.md b/src/data/roadmaps/system-design/content/113-asynchronism/102-back-pressure.md index 09ce53f1e..d512cc7fc 100644 --- a/src/data/roadmaps/system-design/content/113-asynchronism/102-back-pressure.md +++ b/src/data/roadmaps/system-design/content/113-asynchronism/102-back-pressure.md @@ -1,3 +1,3 @@ # Back Pressure -If queues start to grow significantly, the queue size can become larger than memory, resulting in cache misses, disk reads, and even slower performance. [Back pressure](http://mechanical-sympathy.blogspot.com/2012/05/apply-back-pressure-when-overloaded.html) can help by limiting the queue size, thereby maintaining a high throughput rate and good response times for jobs already in the queue. Once the queue fills up, clients get a server busy or HTTP 503 status code to try again later. Clients can retry the request at a later time, perhaps with [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff). \ No newline at end of file +If queues start to grow significantly, the queue size can become larger than memory, resulting in cache misses, disk reads, and even slower performance. [Back pressure](http://mechanical-sympathy.blogspot.com/2012/05/apply-back-pressure-when-overloaded.html) can help by limiting the queue size, thereby maintaining a high throughput rate and good response times for jobs already in the queue. Once the queue fills up, clients get a server busy or HTTP 503 status code to try again later. Clients can retry the request at a later time, perhaps with [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff). diff --git a/src/data/roadmaps/system-design/content/113-asynchronism/index.md b/src/data/roadmaps/system-design/content/113-asynchronism/index.md index 0249a6ab4..e5584922d 100644 --- a/src/data/roadmaps/system-design/content/113-asynchronism/index.md +++ b/src/data/roadmaps/system-design/content/113-asynchronism/index.md @@ -9,4 +9,4 @@ To learn more, visit the following links: - [It's all a numbers game](https://www.youtube.com/watch?v=1KRYH75wgy4) - [Applying back pressure when overloaded](http://mechanical-sympathy.blogspot.com/2012/05/apply-back-pressure-when-overloaded.html) - [Little's law](https://en.wikipedia.org/wiki/Little%27s_law) -- [What is the difference between a message queue and a task queue?](https://www.quora.com/What-is-the-difference-between-a-message-queue-and-a-task-queue-Why-would-a-task-queue-require-a-message-broker-like-RabbitMQ-Redis-Celery-or-IronMQ-to-function) \ No newline at end of file +- [What is the difference between a message queue and a task queue?](https://www.quora.com/What-is-the-difference-between-a-message-queue-and-a-task-queue-Why-would-a-task-queue-require-a-message-broker-like-RabbitMQ-Redis-Celery-or-IronMQ-to-function) diff --git a/src/data/roadmaps/system-design/content/114-idempotent-operations.md b/src/data/roadmaps/system-design/content/114-idempotent-operations.md index b0c03622f..79bc63a78 100644 --- a/src/data/roadmaps/system-design/content/114-idempotent-operations.md +++ b/src/data/roadmaps/system-design/content/114-idempotent-operations.md @@ -2,9 +2,9 @@ Idempotent operations are operations that can be applied multiple times without changing the result beyond the initial application. In other words, if an operation is idempotent, it will have the same effect whether it is executed once or multiple times. -It is also important to understand the benefits of [idempotent](https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning) operations, especially when using message or task queues that do not guarantee *exactly once* processing. Many queueing systems guarantee *at least once* message delivery or processing. These systems are not completely synchronized, for instance, across geographic regions, which simplifies some aspects of their implemntation or design. Designing the operations that a task queue executes to be idempotent allows one to use a queueing system that has accepted this design trade-off. +It is also important to understand the benefits of [idempotent](https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning) operations, especially when using message or task queues that do not guarantee _exactly once_ processing. Many queueing systems guarantee _at least once_ message delivery or processing. These systems are not completely synchronized, for instance, across geographic regions, which simplifies some aspects of their implemntation or design. Designing the operations that a task queue executes to be idempotent allows one to use a queueing system that has accepted this design trade-off. To learn more, visit the following links: - [What is an idempotent operation?](https://stackoverflow.com/questions/1077412/what-is-an-idempotent-operation) -- [Overview of Idempotent Operation](https://www.baeldung.com/cs/idempotent-operations) \ No newline at end of file +- [Overview of Idempotent Operation](https://www.baeldung.com/cs/idempotent-operations) diff --git a/src/data/roadmaps/system-design/content/115-communication/100-http.md b/src/data/roadmaps/system-design/content/115-communication/100-http.md index 7acc7c7b1..575aa916e 100644 --- a/src/data/roadmaps/system-design/content/115-communication/100-http.md +++ b/src/data/roadmaps/system-design/content/115-communication/100-http.md @@ -19,4 +19,4 @@ HTTP is an application layer protocol relying on lower-level protocols such as T - [Everything you need to know about HTTP](https://cs.fyi/guide/http-in-depth) - [What Is HTTP?](https://www.nginx.com/resources/glossary/http/) -- [What is the difference between HTTP protocol and TCP protocol?](https://www.quora.com/What-is-the-difference-between-HTTP-protocol-and-TCP-protocol) \ No newline at end of file +- [What is the difference between HTTP protocol and TCP protocol?](https://www.quora.com/What-is-the-difference-between-HTTP-protocol-and-TCP-protocol) diff --git a/src/data/roadmaps/system-design/content/115-communication/101-tcp.md b/src/data/roadmaps/system-design/content/115-communication/101-tcp.md index 35b427c6e..3656dc06a 100644 --- a/src/data/roadmaps/system-design/content/115-communication/101-tcp.md +++ b/src/data/roadmaps/system-design/content/115-communication/101-tcp.md @@ -3,9 +3,9 @@ TCP is a connection-oriented protocol over an [IP network](https://en.wikipedia.org/wiki/Internet_Protocol). Connection is established and terminated using a [handshake](https://en.wikipedia.org/wiki/Handshaking). All packets sent are guaranteed to reach the destination in the original order and without corruption through: - Sequence numbers and [checksum fields](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Checksum_computation) for each packet -- [Acknowledgement](https://en.wikipedia.org/wiki/Acknowledgement_(data_networks)) packets and automatic retransmission +- [Acknowledgement]() packets and automatic retransmission -If the sender does not receive a correct response, it will resend the packets. If there are multiple timeouts, the connection is dropped. TCP also implements [flow control](https://en.wikipedia.org/wiki/Flow_control_(data)) and congestion control. These guarantees cause delays and generally result in less efficient transmission than UDP. +If the sender does not receive a correct response, it will resend the packets. If there are multiple timeouts, the connection is dropped. TCP also implements [flow control]() and congestion control. These guarantees cause delays and generally result in less efficient transmission than UDP. To ensure high throughput, web servers can keep a large number of TCP connections open, resulting in high memory usage. It can be expensive to have a large number of open connections between web server threads and say, a [memcached server](https://memcached.org/). [Connection pooling](https://en.wikipedia.org/wiki/Connection_pool) can help in addition to switching to UDP where applicable. @@ -25,4 +25,4 @@ To learn more, visit the following links: - [Difference between TCP and UDP](http://stackoverflow.com/questions/5970383/difference-between-tcp-and-udp) - [Transmission control protocol](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) - [User datagram protocol](https://en.wikipedia.org/wiki/User_Datagram_Protocol) -- [Scaling memcache at Facebook](http://www.cs.bu.edu/~jappavoo/jappavoo.github.com/451/papers/memcache-fb.pdf) \ No newline at end of file +- [Scaling memcache at Facebook](http://www.cs.bu.edu/~jappavoo/jappavoo.github.com/451/papers/memcache-fb.pdf) diff --git a/src/data/roadmaps/system-design/content/115-communication/102-udp.md b/src/data/roadmaps/system-design/content/115-communication/102-udp.md index 6b9c19716..35ac56743 100644 --- a/src/data/roadmaps/system-design/content/115-communication/102-udp.md +++ b/src/data/roadmaps/system-design/content/115-communication/102-udp.md @@ -19,4 +19,4 @@ To learn more, visit the following link: - [Difference between TCP and UDP](http://stackoverflow.com/questions/5970383/difference-between-tcp-and-udp) - [Transmission control protocol](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) - [User datagram protocol](https://en.wikipedia.org/wiki/User_Datagram_Protocol) -- [Scaling memcache at Facebook](http://www.cs.bu.edu/~jappavoo/jappavoo.github.com/451/papers/memcache-fb.pdf) \ No newline at end of file +- [Scaling memcache at Facebook](http://www.cs.bu.edu/~jappavoo/jappavoo.github.com/451/papers/memcache-fb.pdf) diff --git a/src/data/roadmaps/system-design/content/115-communication/104-rest.md b/src/data/roadmaps/system-design/content/115-communication/104-rest.md index 1e47d1140..c2ab4e681 100644 --- a/src/data/roadmaps/system-design/content/115-communication/104-rest.md +++ b/src/data/roadmaps/system-design/content/115-communication/104-rest.md @@ -14,4 +14,4 @@ REST is focused on exposing data. It minimizes the coupling between client/serve To learn more, visit the following links: - [What Is REST?](https://github.com/donnemartin/system-design-primer#REST) -- [What are the drawbacks of using RESTful APIs?](https://www.quora.com/What-are-the-drawbacks-of-using-RESTful-APIs) \ No newline at end of file +- [What are the drawbacks of using RESTful APIs?](https://www.quora.com/What-are-the-drawbacks-of-using-RESTful-APIs) diff --git a/src/data/roadmaps/system-design/content/115-communication/105-grpc.md b/src/data/roadmaps/system-design/content/115-communication/105-grpc.md index f36b64680..ecc5ff76d 100644 --- a/src/data/roadmaps/system-design/content/115-communication/105-grpc.md +++ b/src/data/roadmaps/system-design/content/115-communication/105-grpc.md @@ -4,4 +4,4 @@ gRPC is a high-performance, open-source framework for building remote procedure Learn more from the following links: -- [What Is gRPC?](https://www.wallarm.com/what/the-concept-of-grpc) \ No newline at end of file +- [What Is gRPC?](https://www.wallarm.com/what/the-concept-of-grpc) diff --git a/src/data/roadmaps/system-design/content/115-communication/106-graphql.md b/src/data/roadmaps/system-design/content/115-communication/106-graphql.md index 53928a758..77ec70002 100644 --- a/src/data/roadmaps/system-design/content/115-communication/106-graphql.md +++ b/src/data/roadmaps/system-design/content/115-communication/106-graphql.md @@ -5,4 +5,4 @@ GraphQL is a query language and runtime for building APIs. It allows clients to To learn more, visit the following links: - [GraphQL Server](https://www.howtographql.com/basics/3-big-picture/) -- [What is GraphQL?](https://www.redhat.com/en/topics/api/what-is-graphql) \ No newline at end of file +- [What is GraphQL?](https://www.redhat.com/en/topics/api/what-is-graphql) diff --git a/src/data/roadmaps/system-design/content/115-communication/index.md b/src/data/roadmaps/system-design/content/115-communication/index.md index addedcd0b..0ee565174 100644 --- a/src/data/roadmaps/system-design/content/115-communication/index.md +++ b/src/data/roadmaps/system-design/content/115-communication/index.md @@ -1,3 +1,3 @@ # Communication -Network protocols are a key part of systems today, as no system can exist in isolation - they all need to communicate with each other. You should learn about the networking protocols such as HTTP, TCP, UDP. Also, learn about the architectural styles such as RPC, REST, GraphQL and gRPC. \ No newline at end of file +Network protocols are a key part of systems today, as no system can exist in isolation - they all need to communicate with each other. You should learn about the networking protocols such as HTTP, TCP, UDP. Also, learn about the architectural styles such as RPC, REST, GraphQL and gRPC. diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/100-busy-database.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/100-busy-database.md index 5b7bd5b61..1eb665f46 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/100-busy-database.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/100-busy-database.md @@ -4,4 +4,4 @@ A busy database in system design refers to a database that is handling a high vo To learn more, visit the following links: -- [Busy Database antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/busy-database/) \ No newline at end of file +- [Busy Database antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/busy-database/) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/101-busy-frontend.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/101-busy-frontend.md index 96130d3fd..60b1b482b 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/101-busy-frontend.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/101-busy-frontend.md @@ -8,4 +8,4 @@ This problem typically occurs when an application is developed as monolithic pie To learn more about this and how to fix this pattern, visit the following link: -- [Busy Front End antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/busy-front-end/) \ No newline at end of file +- [Busy Front End antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/busy-front-end/) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/102-chatty-io.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/102-chatty-io.md index 277a3c52c..9ad1eef27 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/102-chatty-io.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/102-chatty-io.md @@ -10,4 +10,4 @@ Network calls and other I/O operations are inherently slow compared to compute t To learn more, visit the following links: -- [Chatty I/O antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/chatty-io/) \ No newline at end of file +- [Chatty I/O antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/chatty-io/) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/103-extraneous-fetching.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/103-extraneous-fetching.md index e28a8de66..f33625e62 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/103-extraneous-fetching.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/103-extraneous-fetching.md @@ -11,4 +11,4 @@ Extraneous fetching can lead to a number of issues, such as: Visit the following links to learn more: -- [Extraneous Fetching antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/extraneous-fetching/) \ No newline at end of file +- [Extraneous Fetching antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/extraneous-fetching/) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/104-improper-instantiation.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/104-improper-instantiation.md index e10bd70b1..53e08a775 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/104-improper-instantiation.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/104-improper-instantiation.md @@ -4,4 +4,4 @@ Improper instantiation in system design refers to the practice of creating unnec Learn more from the following links: -- [Improper Instantiation antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/improper-instantiation/) \ No newline at end of file +- [Improper Instantiation antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/improper-instantiation/) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/105-monolithic-persistence.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/105-monolithic-persistence.md index de4d1c878..edf444a0d 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/105-monolithic-persistence.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/105-monolithic-persistence.md @@ -4,4 +4,4 @@ Monolithic Persistence refers to the use of a single, monolithic database to sto To learn more, visit the following links: -- [Monolithic Persistence antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/monolithic-persistence/) \ No newline at end of file +- [Monolithic Persistence antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/monolithic-persistence/) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/106-no-caching.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/106-no-caching.md index 60a02f9fc..b00e2c5d5 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/106-no-caching.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/106-no-caching.md @@ -10,4 +10,4 @@ When data is not cached, it can cause a number of undesirable behaviors, includi In turn, these problems can lead to poor response times, increased contention in the data store, and poor scalability. -- [No Caching antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/no-caching/) \ No newline at end of file +- [No Caching antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/no-caching/) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/107-noisy-neighbor.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/107-noisy-neighbor.md index f5429c1ec..82be4a0b2 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/107-noisy-neighbor.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/107-noisy-neighbor.md @@ -10,4 +10,4 @@ Examples of noisy neighbor scenarios include: Learn from the following links: -- [Noisy Neighbor antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/noisy-neighbor/noisy-neighbor) \ No newline at end of file +- [Noisy Neighbor antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/noisy-neighbor/noisy-neighbor) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/108-retry-storm.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/108-retry-storm.md index b6030846b..e668804c6 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/108-retry-storm.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/108-retry-storm.md @@ -1,8 +1,8 @@ # Retry Storm - Retry Storm refers to a situation in which a large number of retries are triggered in a short period of time, leading to a significant increase in traffic and resource usage. This can occur when a system is not properly designed to handle failures or when a component is behaving unexpectedly. This can lead to Performance degradation, Increased resource utilization, Increased network traffic, and Poor user experience. To address retry storms, a number of approaches can be taken such as Exponential backoff, Circuit breaking, and Monitoring and alerting. +Retry Storm refers to a situation in which a large number of retries are triggered in a short period of time, leading to a significant increase in traffic and resource usage. This can occur when a system is not properly designed to handle failures or when a component is behaving unexpectedly. This can lead to Performance degradation, Increased resource utilization, Increased network traffic, and Poor user experience. To address retry storms, a number of approaches can be taken such as Exponential backoff, Circuit breaking, and Monitoring and alerting. To learn more, visit the following links: - [Retry Storm antipattern](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/retry-storm/s) -- [How To Avoid Retry Storms In Distributed Systems](https://faun.pub/how-to-avoid-retry-storms-in-distributed-systems-91bf34f43c7f) \ No newline at end of file +- [How To Avoid Retry Storms In Distributed Systems](https://faun.pub/how-to-avoid-retry-storms-in-distributed-systems-91bf34f43c7f) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/109-synchronous-io.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/109-synchronous-io.md index ab329a70d..b6203b011 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/109-synchronous-io.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/109-synchronous-io.md @@ -18,4 +18,4 @@ This antipattern typically occurs because: - The application uses a library that only provides synchronous methods for I/O. - An external library performs synchronous I/O operations internally. A single synchronous I/O call can block an entire call chain. -- [What is Synchronous I/O antipattern?](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/synchronous-io/) \ No newline at end of file +- [What is Synchronous I/O antipattern?](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/synchronous-io/) diff --git a/src/data/roadmaps/system-design/content/116-performance-antipatterns/index.md b/src/data/roadmaps/system-design/content/116-performance-antipatterns/index.md index 4adc56476..84c8bf031 100644 --- a/src/data/roadmaps/system-design/content/116-performance-antipatterns/index.md +++ b/src/data/roadmaps/system-design/content/116-performance-antipatterns/index.md @@ -11,4 +11,4 @@ Some of the examples of performance antipatterns include: Learn more from the following links: -- [Performance antipatterns for cloud applications](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/) \ No newline at end of file +- [Performance antipatterns for cloud applications](https://learn.microsoft.com/en-us/azure/architecture/antipatterns/) diff --git a/src/data/roadmaps/system-design/content/117-monitoring/100-health-monitoring.md b/src/data/roadmaps/system-design/content/117-monitoring/100-health-monitoring.md index 7b65f0092..baa8b14af 100644 --- a/src/data/roadmaps/system-design/content/117-monitoring/100-health-monitoring.md +++ b/src/data/roadmaps/system-design/content/117-monitoring/100-health-monitoring.md @@ -4,4 +4,4 @@ A system is healthy if it is running and capable of processing requests. The pur Learn more from the following: -- [Health Monitoring of a System](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#health-monitoring) \ No newline at end of file +- [Health Monitoring of a System](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#health-monitoring) diff --git a/src/data/roadmaps/system-design/content/117-monitoring/101-availability-monitoring.md b/src/data/roadmaps/system-design/content/117-monitoring/101-availability-monitoring.md index f22cded72..49caf58aa 100644 --- a/src/data/roadmaps/system-design/content/117-monitoring/101-availability-monitoring.md +++ b/src/data/roadmaps/system-design/content/117-monitoring/101-availability-monitoring.md @@ -4,4 +4,4 @@ A truly healthy system requires that the components and subsystems that compose Learn more from the following: -- [Availability Monitoring](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#availability-monitoring) \ No newline at end of file +- [Availability Monitoring](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#availability-monitoring) diff --git a/src/data/roadmaps/system-design/content/117-monitoring/102-performance-monitoring.md b/src/data/roadmaps/system-design/content/117-monitoring/102-performance-monitoring.md index fda39f065..0eca63154 100644 --- a/src/data/roadmaps/system-design/content/117-monitoring/102-performance-monitoring.md +++ b/src/data/roadmaps/system-design/content/117-monitoring/102-performance-monitoring.md @@ -4,4 +4,4 @@ As the system is placed under more and more stress (by increasing the volume of Learn more from following links: -- [Performance Monitoring](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#performance-monitoring) \ No newline at end of file +- [Performance Monitoring](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#performance-monitoring) diff --git a/src/data/roadmaps/system-design/content/117-monitoring/103-security-monitoring.md b/src/data/roadmaps/system-design/content/117-monitoring/103-security-monitoring.md index c9f40661a..dc567e27f 100644 --- a/src/data/roadmaps/system-design/content/117-monitoring/103-security-monitoring.md +++ b/src/data/roadmaps/system-design/content/117-monitoring/103-security-monitoring.md @@ -10,4 +10,4 @@ Monitoring might be able to help detect attacks on the system. For example, a la Visit the following to learn more: -- [Security Monitoring](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#security-monitoring) \ No newline at end of file +- [Security Monitoring](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#security-monitoring) diff --git a/src/data/roadmaps/system-design/content/117-monitoring/104-usage-monitoring.md b/src/data/roadmaps/system-design/content/117-monitoring/104-usage-monitoring.md index 4e6b79b6b..47fdadebf 100644 --- a/src/data/roadmaps/system-design/content/117-monitoring/104-usage-monitoring.md +++ b/src/data/roadmaps/system-design/content/117-monitoring/104-usage-monitoring.md @@ -10,4 +10,4 @@ Usage monitoring tracks how the features and components of an application are us Learn more from the following links: -- [Usage Monitoring](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#usage-monitoring) \ No newline at end of file +- [Usage Monitoring](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#usage-monitoring) diff --git a/src/data/roadmaps/system-design/content/117-monitoring/105-instrumentation.md b/src/data/roadmaps/system-design/content/117-monitoring/105-instrumentation.md index 7d08c7dbb..081d44523 100644 --- a/src/data/roadmaps/system-design/content/117-monitoring/105-instrumentation.md +++ b/src/data/roadmaps/system-design/content/117-monitoring/105-instrumentation.md @@ -4,4 +4,4 @@ Instrumentation is a critical part of the monitoring process. You can make meani Learn more from the following links: -- [Instrumenting an application](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#instrumenting-an-application) \ No newline at end of file +- [Instrumenting an application](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#instrumenting-an-application) diff --git a/src/data/roadmaps/system-design/content/117-monitoring/106-visualization-and-alerts.md b/src/data/roadmaps/system-design/content/117-monitoring/106-visualization-and-alerts.md index b1afec09e..485ad3868 100644 --- a/src/data/roadmaps/system-design/content/117-monitoring/106-visualization-and-alerts.md +++ b/src/data/roadmaps/system-design/content/117-monitoring/106-visualization-and-alerts.md @@ -4,4 +4,4 @@ An important aspect of any monitoring system is the ability to present the data Learn more from the following links: -- [Visualize Data and Raise Alerts](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#visualizing-data-and-raising-alerts) \ No newline at end of file +- [Visualize Data and Raise Alerts](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring#visualizing-data-and-raising-alerts) diff --git a/src/data/roadmaps/system-design/content/117-monitoring/index.md b/src/data/roadmaps/system-design/content/117-monitoring/index.md index a6a376898..103c328e1 100644 --- a/src/data/roadmaps/system-design/content/117-monitoring/index.md +++ b/src/data/roadmaps/system-design/content/117-monitoring/index.md @@ -4,4 +4,4 @@ Distributed applications and services running in the cloud are, by their nature, Visit the following to learn more: -- [Monitoring and Diagnostics Guidance](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring) \ No newline at end of file +- [Monitoring and Diagnostics Guidance](https://learn.microsoft.com/en-us/azure/architecture/best-practices/monitoring) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/100-asynchronous-request-reply.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/100-asynchronous-request-reply.md index 9e7c06a76..30c741b55 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/100-asynchronous-request-reply.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/100-asynchronous-request-reply.md @@ -4,4 +4,4 @@ Decouple backend processing from a frontend host, where backend processing needs Learn more from the following links: -- [Asynchronous Request-Reply pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/async-request-reply) \ No newline at end of file +- [Asynchronous Request-Reply pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/async-request-reply) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/101-claim-check.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/101-claim-check.md index 0a18580c5..a2eaf5812 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/101-claim-check.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/101-claim-check.md @@ -4,4 +4,4 @@ Split a large message into a claim check and a payload. Send the claim check to Learn more from the following links: -- [Claim Check - Cloud Design patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/claim-check) \ No newline at end of file +- [Claim Check - Cloud Design patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/claim-check) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/102-choreography.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/102-choreography.md index e0832a1f3..ffe764d5f 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/102-choreography.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/102-choreography.md @@ -4,4 +4,4 @@ Have each component of the system participate in the decision-making process abo Learn more from the following links: -- [Choreography pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/choreography) \ No newline at end of file +- [Choreography pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/choreography) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/103-competing-consumers.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/103-competing-consumers.md index eb604baef..65e103436 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/103-competing-consumers.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/103-competing-consumers.md @@ -4,4 +4,4 @@ Enable multiple concurrent consumers to process messages received on the same me Learn more from the following links: -- [Competing Consumers pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/competing-consumers) \ No newline at end of file +- [Competing Consumers pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/competing-consumers) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/104-pipes-and-filters.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/104-pipes-and-filters.md index c7acd225e..efa4b3e7b 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/104-pipes-and-filters.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/104-pipes-and-filters.md @@ -4,4 +4,4 @@ Decompose a task that performs complex processing into a series of separate elem Learn more from the following links: -- [Pipes and Filters pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters) \ No newline at end of file +- [Pipes and Filters pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/105-priority-queue.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/105-priority-queue.md index 6879a5c59..106d26310 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/105-priority-queue.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/105-priority-queue.md @@ -4,4 +4,4 @@ Prioritize requests sent to services so that requests with a higher priority are Learn more from the following links: -- [Priority Queue pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/priority-queue) \ No newline at end of file +- [Priority Queue pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/priority-queue) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/106-publisher-subscriber.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/106-publisher-subscriber.md index f449e0eb0..9bc5571eb 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/106-publisher-subscriber.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/106-publisher-subscriber.md @@ -4,4 +4,4 @@ Enable an application to announce events to multiple interested consumers asynch Learn more from the following links: -- [Publisher-Subscriber pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/publisher-subscriber) \ No newline at end of file +- [Publisher-Subscriber pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/publisher-subscriber) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/107-queue-based-load-leveling.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/107-queue-based-load-leveling.md index 4f922dbf0..27f056316 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/107-queue-based-load-leveling.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/107-queue-based-load-leveling.md @@ -4,4 +4,4 @@ Use a queue that acts as a buffer between a task and a service it invokes in ord Learn more from the following links: -- [Queue-Based Load Leveling pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling) \ No newline at end of file +- [Queue-Based Load Leveling pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/108-scheduling-agent-supervisor.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/108-scheduling-agent-supervisor.md index 187d30190..a74beee71 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/108-scheduling-agent-supervisor.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/108-scheduling-agent-supervisor.md @@ -4,4 +4,4 @@ Coordinate a set of distributed actions as a single operation. If any of the act Learn more from the following links: -- [Scheduler Agent Supervisor pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/scheduler-agent-supervisor) \ No newline at end of file +- [Scheduler Agent Supervisor pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/scheduler-agent-supervisor) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/109-sequential-convoy.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/109-sequential-convoy.md index 336ad2411..6b4ce1f9c 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/109-sequential-convoy.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/109-sequential-convoy.md @@ -5,4 +5,4 @@ Sequential Convoy is a pattern that allows for the execution of a series of task Learn more from the following links: - [What is Sequential Convoy?](https://learn.microsoft.com/en-us/biztalk/core/sequential-convoys) -- [Overview - Sequential Convoy pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/sequential-convoy) \ No newline at end of file +- [Overview - Sequential Convoy pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/sequential-convoy) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/index.md index 24e371045..e27fb257c 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/100-messaging/index.md @@ -4,4 +4,4 @@ Messaging is a pattern that allows for the communication and coordination betwee Learn more from the following links: -- [Messaging Cloud Patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/category/messaging) \ No newline at end of file +- [Messaging Cloud Patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/category/messaging) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/100-cache-aside.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/100-cache-aside.md index 65c510774..7d341fe22 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/100-cache-aside.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/100-cache-aside.md @@ -4,4 +4,4 @@ Load data on demand into a cache from a data store. This can improve performance Learn more from the following links: -- [Cache-Aside pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cache-aside) \ No newline at end of file +- [Cache-Aside pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cache-aside) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/101-cqrs.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/101-cqrs.md index e9c9a5b4d..7ad131600 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/101-cqrs.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/101-cqrs.md @@ -4,4 +4,4 @@ CQRS stands for Command and Query Responsibility Segregation, a pattern that sep Learn more from the following links: -- [CQRS pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) \ No newline at end of file +- [CQRS pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/102-event-sourcing.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/102-event-sourcing.md index 1f703a546..c1576ebca 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/102-event-sourcing.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/102-event-sourcing.md @@ -4,4 +4,4 @@ Instead of storing just the current state of the data in a domain, use an append Learn more from the following links: -- [Event Sourcing pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/event-sourcing) \ No newline at end of file +- [Event Sourcing pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/event-sourcing) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/103-index-table.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/103-index-table.md index d439780f8..aed22497c 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/103-index-table.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/103-index-table.md @@ -4,4 +4,4 @@ Create indexes over the fields in data stores that are frequently referenced by Learn more from the following links: -- [Index Table pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/index-table) \ No newline at end of file +- [Index Table pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/index-table) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/104-materialized-view.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/104-materialized-view.md index 7b3bc2b49..49f44bb6e 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/104-materialized-view.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/104-materialized-view.md @@ -4,4 +4,4 @@ Generate prepopulated views over the data in one or more data stores when the da Learn more from the following links: -- [Materialized View pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/materialized-view) \ No newline at end of file +- [Materialized View pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/materialized-view) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/105-sharding.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/105-sharding.md index 8ede687eb..b2001066c 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/105-sharding.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/105-sharding.md @@ -4,4 +4,4 @@ Sharding is a technique used to horizontally partition a large data set across m Learn more from the following links: -- [Sharding pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/sharding) \ No newline at end of file +- [Sharding pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/sharding) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/106-static-content-hosting.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/106-static-content-hosting.md index d3cee0b48..cecb96a86 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/106-static-content-hosting.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/106-static-content-hosting.md @@ -4,4 +4,4 @@ Deploy static content to a cloud-based storage service that can deliver them dir Learn more from the following links: -- [Static Content Hosting pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/static-content-hosting) \ No newline at end of file +- [Static Content Hosting pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/static-content-hosting) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/107-valet-key.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/107-valet-key.md index 380aa1026..c5b96dbc2 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/107-valet-key.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/107-valet-key.md @@ -4,4 +4,4 @@ Use a token that provides clients with restricted direct access to a specific re Learn more from the following links: -- [Valet Key pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/valet-key) \ No newline at end of file +- [Valet Key pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/valet-key) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/index.md index d032f2087..991f86b8d 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/101-data-management/index.md @@ -4,4 +4,4 @@ Data management is the key element of cloud applications, and influences most of Learn more from the following links: -- [Data management patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/category/data-management) \ No newline at end of file +- [Data management patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/category/data-management) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/100-ambassador.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/100-ambassador.md index ffdd4dd72..5e4d84944 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/100-ambassador.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/100-ambassador.md @@ -6,4 +6,4 @@ This pattern can be useful for offloading common client connectivity tasks such To learn more, visit the following links: -- [Ambassador pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/ambassador) \ No newline at end of file +- [Ambassador pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/ambassador) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/101-anti-corruption-layer.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/101-anti-corruption-layer.md index 843b4c16b..c499e35cf 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/101-anti-corruption-layer.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/101-anti-corruption-layer.md @@ -4,4 +4,4 @@ Implement a façade or adapter layer between different subsystems that don't sha To learn more, visit the following links: -- [Anti-corruption Layer pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer) \ No newline at end of file +- [Anti-corruption Layer pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/102-backends-for-frontend.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/102-backends-for-frontend.md index 782c74d92..2e03afcbd 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/102-backends-for-frontend.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/102-backends-for-frontend.md @@ -4,4 +4,4 @@ Create separate backend services to be consumed by specific frontend application To learn more, visit the following links: -- [Backends for Frontends pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends) \ No newline at end of file +- [Backends for Frontends pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/103-cqrs.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/103-cqrs.md index e9c9a5b4d..7ad131600 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/103-cqrs.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/103-cqrs.md @@ -4,4 +4,4 @@ CQRS stands for Command and Query Responsibility Segregation, a pattern that sep Learn more from the following links: -- [CQRS pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) \ No newline at end of file +- [CQRS pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/104-compute-resource-consolidation.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/104-compute-resource-consolidation.md index 7e116ba2a..4d9026792 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/104-compute-resource-consolidation.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/104-compute-resource-consolidation.md @@ -4,4 +4,4 @@ Consolidate multiple tasks or operations into a single computational unit. This To learn more, visit the following links: -- [Compute Resource Consolidation pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/compute-resource-consolidation) \ No newline at end of file +- [Compute Resource Consolidation pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/compute-resource-consolidation) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/105-external-configuration-store.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/105-external-configuration-store.md index fcbc4ab47..4a81b5e13 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/105-external-configuration-store.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/105-external-configuration-store.md @@ -4,4 +4,4 @@ Move configuration information out of the application deployment package to a ce To learn more, visit the following links: -- [External Configuration Store pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/external-configuration-store) \ No newline at end of file +- [External Configuration Store pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/external-configuration-store) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/106-gateway-aggregation.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/106-gateway-aggregation.md index 1c47b0fcb..9e56c1fc1 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/106-gateway-aggregation.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/106-gateway-aggregation.md @@ -4,4 +4,4 @@ Use a gateway to aggregate multiple individual requests into a single request. T To learn more, visit the following links: -- [Gateway Aggregation pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation) \ No newline at end of file +- [Gateway Aggregation pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/107-gateway-offloading.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/107-gateway-offloading.md index 052a9c63c..26729047c 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/107-gateway-offloading.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/107-gateway-offloading.md @@ -4,4 +4,4 @@ Offload shared or specialized service functionality to a gateway proxy. This pat To learn more, visit the following links: -- [Gateway Offloading pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-offloading) \ No newline at end of file +- [Gateway Offloading pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-offloading) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/108-gateway-routing.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/108-gateway-routing.md index f0045aa1a..8a9120012 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/108-gateway-routing.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/108-gateway-routing.md @@ -8,4 +8,4 @@ Route requests to multiple services or multiple service instances using a single To learn more, visit the following links: -- [Gateway Routing pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-routing) \ No newline at end of file +- [Gateway Routing pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-routing) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/109-leader-election.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/109-leader-election.md index 5c7101034..ac52148b1 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/109-leader-election.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/109-leader-election.md @@ -4,4 +4,4 @@ Coordinate the actions performed by a collection of collaborating instances in a To learn more, visit the following links: -- [Overview of Leader Election](https://learn.microsoft.com/en-us/azure/architecture/patterns/leader-election) \ No newline at end of file +- [Overview of Leader Election](https://learn.microsoft.com/en-us/azure/architecture/patterns/leader-election) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/110-pipes-and-filters.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/110-pipes-and-filters.md index fc70b5b82..dea570bf3 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/110-pipes-and-filters.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/110-pipes-and-filters.md @@ -4,4 +4,4 @@ Decompose a task that performs complex processing into a series of separate elem To learn more, visit the following links: -- [Pipe and Filter Architectural Style](https://learn.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters) \ No newline at end of file +- [Pipe and Filter Architectural Style](https://learn.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/111-sidecar.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/111-sidecar.md index 3c80eb5e3..50ace71d9 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/111-sidecar.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/111-sidecar.md @@ -6,4 +6,4 @@ This pattern is named Sidecar because it resembles a sidecar attached to a motor To learn more, visit the following links: -- [Sidecar pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/sidecar) \ No newline at end of file +- [Sidecar pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/sidecar) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/112-static-content-hosting.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/112-static-content-hosting.md index d3cee0b48..cecb96a86 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/112-static-content-hosting.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/112-static-content-hosting.md @@ -4,4 +4,4 @@ Deploy static content to a cloud-based storage service that can deliver them dir Learn more from the following links: -- [Static Content Hosting pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/static-content-hosting) \ No newline at end of file +- [Static Content Hosting pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/static-content-hosting) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/113-strangler-fig.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/113-strangler-fig.md index ab5eb1d8e..4b2875929 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/113-strangler-fig.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/113-strangler-fig.md @@ -4,4 +4,4 @@ Incrementally migrate a legacy system by gradually replacing specific pieces of To learn more, visit the following links: -- [What is Strangler fig?](https://learn.microsoft.com/en-us/azure/architecture/patterns/strangler-fig) \ No newline at end of file +- [What is Strangler fig?](https://learn.microsoft.com/en-us/azure/architecture/patterns/strangler-fig) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/index.md index 4c4391694..c7d786f61 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/index.md @@ -4,4 +4,4 @@ Good design encompasses factors such as consistency and coherence in component d To learn more, visit the following links: -- [Design and implementation patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/category/design-implementation) \ No newline at end of file +- [Design and implementation patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/category/design-implementation) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/geodes.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/geodes.md index dc18bfd36..b32310ea5 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/geodes.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/geodes.md @@ -5,4 +5,4 @@ The Geode pattern involves deploying a collection of backend services into a set To learn more visit the following links: - [Geode pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/geodes) -- [Geode Formation, Types & Appearance | What is a Geode?](https://study.com/academy/lesson/geode-formation-types-appearance.ht) \ No newline at end of file +- [Geode Formation, Types & Appearance | What is a Geode?](https://study.com/academy/lesson/geode-formation-types-appearance.ht) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/health-endpoint-monitoring.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/health-endpoint-monitoring.md index 0cf1d745b..254ef9b0c 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/health-endpoint-monitoring.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/health-endpoint-monitoring.md @@ -5,4 +5,4 @@ Implement functional checks in an application that external tools can access thr To learn more visit the following links: - [Health Endpoint Monitoring pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring) -- [Explaining the health endpoint monitoring pattern](https://www.oreilly.com/library/view/java-ee-8/9781788830621/5012c01e-90ca-4809-a210-d3736574f5b3.xhtml) \ No newline at end of file +- [Explaining the health endpoint monitoring pattern](https://www.oreilly.com/library/view/java-ee-8/9781788830621/5012c01e-90ca-4809-a210-d3736574f5b3.xhtml) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/index.md index 2d7cff828..42d4bc29f 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/index.md @@ -4,4 +4,4 @@ Availability is measured as a percentage of uptime, and defines the proportion o To learn more visit the following links: -- [Availability Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns#availability) \ No newline at end of file +- [Availability Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns#availability) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/queue-based-load-leveling.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/queue-based-load-leveling.md index f19c38ce0..c3f0c68ab 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/queue-based-load-leveling.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/queue-based-load-leveling.md @@ -4,4 +4,4 @@ Use a queue that acts as a buffer between a task and a service it invokes in ord To learn more visit the following links: -- [Queue-Based Load Leveling pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling) \ No newline at end of file +- [Queue-Based Load Leveling pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/throttling.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/throttling.md index 4559c47e5..dd27a1b75 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/throttling.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/100-availability/throttling.md @@ -4,4 +4,4 @@ Control the consumption of resources used by an instance of an application, an i To learn more visit the following links: -- [Throttling pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/throttling) \ No newline at end of file +- [Throttling pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/throttling) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/bulkhead.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/bulkhead.md index 738ebb871..89058f1bd 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/bulkhead.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/bulkhead.md @@ -5,4 +5,4 @@ The Bulkhead pattern is a type of application design that is tolerant of failure Learn more from the following links: - [Bulkhead pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/bulkhead) -- [Get started with Bulkhead](https://dzone.com/articles/resilient-microservices-pattern-bulkhead-pattern) \ No newline at end of file +- [Get started with Bulkhead](https://dzone.com/articles/resilient-microservices-pattern-bulkhead-pattern) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/circuit-breaker.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/circuit-breaker.md index a018c36f2..348628832 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/circuit-breaker.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/circuit-breaker.md @@ -5,4 +5,4 @@ Handle faults that might take a variable amount of time to recover from, when co Learn more from the following links: - [Circuit breaker design pattern](https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern) -- [Overview of Circuit Breaker](https://medium.com/geekculture/design-patterns-for-microservices-circuit-breaker-pattern-276249ffab33) \ No newline at end of file +- [Overview of Circuit Breaker](https://medium.com/geekculture/design-patterns-for-microservices-circuit-breaker-pattern-276249ffab33) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/geodes.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/geodes.md index ce890a2dc..e06d04c81 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/geodes.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/geodes.md @@ -4,4 +4,4 @@ The Geode pattern involves deploying a collection of backend services into a set To learn more visit the following links: -- [Geode pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/geodes) \ No newline at end of file +- [Geode pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/geodes) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/health-endpoint-monitoring.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/health-endpoint-monitoring.md index 573beb4b3..d54c01acb 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/health-endpoint-monitoring.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/health-endpoint-monitoring.md @@ -4,4 +4,4 @@ Implement functional checks in an application that external tools can access thr To learn more visit the following links: -- [Health Endpoint Monitoring pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring) \ No newline at end of file +- [Health Endpoint Monitoring pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/index.md index 6f96b39d5..7d2b4650d 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/101-high-availability/index.md @@ -4,4 +4,4 @@ Azure infrastructure is composed of geographies, regions, and Availability Zones Learn more from the following links: -- [High availability Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns#high-availability) \ No newline at end of file +- [High availability Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns#high-availability) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/bulkhead.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/bulkhead.md index 738ebb871..89058f1bd 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/bulkhead.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/bulkhead.md @@ -5,4 +5,4 @@ The Bulkhead pattern is a type of application design that is tolerant of failure Learn more from the following links: - [Bulkhead pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/bulkhead) -- [Get started with Bulkhead](https://dzone.com/articles/resilient-microservices-pattern-bulkhead-pattern) \ No newline at end of file +- [Get started with Bulkhead](https://dzone.com/articles/resilient-microservices-pattern-bulkhead-pattern) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/circuit-breaker.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/circuit-breaker.md index a018c36f2..348628832 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/circuit-breaker.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/circuit-breaker.md @@ -5,4 +5,4 @@ Handle faults that might take a variable amount of time to recover from, when co Learn more from the following links: - [Circuit breaker design pattern](https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern) -- [Overview of Circuit Breaker](https://medium.com/geekculture/design-patterns-for-microservices-circuit-breaker-pattern-276249ffab33) \ No newline at end of file +- [Overview of Circuit Breaker](https://medium.com/geekculture/design-patterns-for-microservices-circuit-breaker-pattern-276249ffab33) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/compensating-transaction.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/compensating-transaction.md index b25ad9da0..5728a449c 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/compensating-transaction.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/compensating-transaction.md @@ -5,4 +5,4 @@ Undo the work performed by a series of steps, which together define an eventuall Learn more from the following resources: - [Compensating Transaction pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/compensating-transaction) -- [Intro to Compensation Transaction](https://en.wikipedia.org/wiki/Compensating_transaction) \ No newline at end of file +- [Intro to Compensation Transaction](https://en.wikipedia.org/wiki/Compensating_transaction) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/health-endpoint-monitoring.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/health-endpoint-monitoring.md index 573beb4b3..d54c01acb 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/health-endpoint-monitoring.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/health-endpoint-monitoring.md @@ -4,4 +4,4 @@ Implement functional checks in an application that external tools can access thr To learn more visit the following links: -- [Health Endpoint Monitoring pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring) \ No newline at end of file +- [Health Endpoint Monitoring pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/index.md index faa9de45a..bbd4db161 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/index.md @@ -8,4 +8,4 @@ Detecting failures and recovering quickly and efficiently, is necessary to maint Learn more from the following links: -- [Resiliency Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns#resiliency) \ No newline at end of file +- [Resiliency Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns#resiliency) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/leader-election.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/leader-election.md index a24b35af5..3b829b58d 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/leader-election.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/leader-election.md @@ -4,4 +4,4 @@ Coordinate the actions performed by a collection of collaborating instances in a To learn more, visit the following links: -- [Leader Election Pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/leader-election) \ No newline at end of file +- [Leader Election Pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/leader-election) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/queue-based-load-leveling.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/queue-based-load-leveling.md index f19c38ce0..c3f0c68ab 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/queue-based-load-leveling.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/queue-based-load-leveling.md @@ -4,4 +4,4 @@ Use a queue that acts as a buffer between a task and a service it invokes in ord To learn more visit the following links: -- [Queue-Based Load Leveling pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling) \ No newline at end of file +- [Queue-Based Load Leveling pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/retry.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/retry.md index ad1fbbe89..06673cdf3 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/retry.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/retry.md @@ -4,4 +4,4 @@ Enable an application to handle transient failures when it tries to connect to a Learn more from the following resources: -- [Retry pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/retry) \ No newline at end of file +- [Retry pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/retry) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/scheduler-agent-supervisor.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/scheduler-agent-supervisor.md index 187d30190..a74beee71 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/scheduler-agent-supervisor.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/102-resiliency/scheduler-agent-supervisor.md @@ -4,4 +4,4 @@ Coordinate a set of distributed actions as a single operation. If any of the act Learn more from the following links: -- [Scheduler Agent Supervisor pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/scheduler-agent-supervisor) \ No newline at end of file +- [Scheduler Agent Supervisor pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/scheduler-agent-supervisor) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/federated-identity.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/federated-identity.md index 91a2b2987..f37ad5664 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/federated-identity.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/federated-identity.md @@ -4,4 +4,4 @@ Delegate authentication to an external identity provider. This can simplify deve To learn more, visit the following links: -- [Federated Identity pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/federated-identity) \ No newline at end of file +- [Federated Identity pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/federated-identity) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/gatekeeper.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/gatekeeper.md index 21921da4e..7100387ce 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/gatekeeper.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/gatekeeper.md @@ -4,4 +4,4 @@ Protect applications and services using a dedicated host instance that acts as a Learn more from the following resources: -- [Gatekeeper pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/gatekeeper) \ No newline at end of file +- [Gatekeeper pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/gatekeeper) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/index.md index 120041500..026960481 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/index.md @@ -4,4 +4,4 @@ Security provides confidentiality, integrity, and availability assurances agains Learn more from the following links: -- [Security patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/security/security-patterns) \ No newline at end of file +- [Security patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/security/security-patterns) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/valet-key.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/valet-key.md index 380aa1026..c5b96dbc2 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/valet-key.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/103-security/valet-key.md @@ -4,4 +4,4 @@ Use a token that provides clients with restricted direct access to a specific re Learn more from the following links: -- [Valet Key pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/valet-key) \ No newline at end of file +- [Valet Key pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/valet-key) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/index.md index cf40739a0..cd781f524 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/103-reliability-patterns/index.md @@ -4,4 +4,4 @@ These patterns provide a way to design and implement systems that can withstand Learn more from the following links: -- [Reliability Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns) \ No newline at end of file +- [Reliability Patterns](https://learn.microsoft.com/en-us/azure/architecture/framework/resiliency/reliability-patterns) diff --git a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/index.md b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/index.md index da3514389..17629d61d 100644 --- a/src/data/roadmaps/system-design/content/118-cloud-design-patterns/index.md +++ b/src/data/roadmaps/system-design/content/118-cloud-design-patterns/index.md @@ -4,4 +4,4 @@ Cloud design patterns are solutions to common problems that arise when building To learn more, visit the following links: -- [Cloud Design Patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/) \ No newline at end of file +- [Cloud Design Patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/) diff --git a/src/data/roadmaps/system-design/system-design.md b/src/data/roadmaps/system-design/system-design.md index eb3cd30a6..122b6dfd1 100644 --- a/src/data/roadmaps/system-design/system-design.md +++ b/src/data/roadmaps/system-design/system-design.md @@ -1,50 +1,49 @@ --- -jsonUrl: "/jsons/roadmaps/system-design.json" -pdfUrl: "/pdfs/roadmaps/system-design.pdf" +jsonUrl: '/jsons/roadmaps/system-design.json' +pdfUrl: '/pdfs/roadmaps/system-design.pdf' order: 8 -briefTitle: "System Design" -briefDescription: "Guide to learn system Design" -title: "System Design" -description: "Everything you need to know about designing large scale systems." +briefTitle: 'System Design' +briefDescription: 'Guide to learn system Design' +title: 'System Design' +description: 'Everything you need to know about designing large scale systems.' isNew: true hasTopics: true dimensions: width: 968 height: 2848.5 schema: - headline: "System Design Roadmap" - description: "Learn System Design with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/system-design.png" - datePublished: "2023-01-17" - dateModified: "2023-01-17" + headline: 'System Design Roadmap' + description: 'Learn System Design with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/system-design.png' + datePublished: '2023-01-17' + dateModified: '2023-01-17' seo: - title: "System Design Roadmap" - description: "Learn system design with this step by step guide and resources." + title: 'System Design Roadmap' + description: 'Learn system design with this step by step guide and resources.' keywords: - - "guide to learn system design" - - "system design roadmap" - - "distributed systems roadmap" - - "modern system design roadmap" - - "system design roadmap" - - "scalable system roadmap" - - "system design patterns roadmap" - - "system design roadmap" - - "application architectures" - - "system design guide" + - 'guide to learn system design' + - 'system design roadmap' + - 'distributed systems roadmap' + - 'modern system design roadmap' + - 'system design roadmap' + - 'scalable system roadmap' + - 'system design patterns roadmap' + - 'system design roadmap' + - 'application architectures' + - 'system design guide' relatedRoadmaps: - - "backend" - - "software-architect" - - "devops" - - "python" - - "java" - - "nodejs" - - "golang" + - 'backend' + - 'software-architect' + - 'devops' + - 'python' + - 'java' + - 'nodejs' + - 'golang' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/typescript/content/100-typescript/100-typescript-vs-javascript.md b/src/data/roadmaps/typescript/content/100-typescript/100-typescript-vs-javascript.md index 84322ed41..8d0174f72 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/100-typescript-vs-javascript.md +++ b/src/data/roadmaps/typescript/content/100-typescript/100-typescript-vs-javascript.md @@ -11,4 +11,4 @@ Here are a few key differences between TypeScript and JavaScript: Learn more from the following links: -- [Learning JavaScript and TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html#learning-javascript-and-typescript) \ No newline at end of file +- [Learning JavaScript and TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html#learning-javascript-and-typescript) diff --git a/src/data/roadmaps/typescript/content/100-typescript/101-ts-js-interoperability.md b/src/data/roadmaps/typescript/content/100-typescript/101-ts-js-interoperability.md index addc02566..7fd2e6fd1 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/101-ts-js-interoperability.md +++ b/src/data/roadmaps/typescript/content/100-typescript/101-ts-js-interoperability.md @@ -4,4 +4,4 @@ TypeScript and JavaScript have full interoperability, meaning you can use TypeSc You can use JavaScript libraries in TypeScript projects by either including the JavaScript files directly or using type definitions for the library. Type definitions provide type information for JavaScript libraries, making it easier to use them in TypeScript. -On the other hand, you can use TypeScript code in JavaScript projects by simply compiling the TypeScript code into JavaScript. The generated JavaScript code can be used in any JavaScript environment, and it will work the same way as regular JavaScript code. \ No newline at end of file +On the other hand, you can use TypeScript code in JavaScript projects by simply compiling the TypeScript code into JavaScript. The generated JavaScript code can be used in any JavaScript environment, and it will work the same way as regular JavaScript code. diff --git a/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/100-tsconfig-json.md b/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/100-tsconfig-json.md index 6b81408e6..f315ba451 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/100-tsconfig-json.md +++ b/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/100-tsconfig-json.md @@ -28,4 +28,4 @@ Given below is the sample `tsconfig.json` file: Learn more from the following links: -- [What is a tsconfig.json](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#handbook-content) \ No newline at end of file +- [What is a tsconfig.json](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#handbook-content) diff --git a/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/101-compiler-options.md b/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/101-compiler-options.md index bc328c87f..e234a1dd5 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/101-compiler-options.md +++ b/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/101-compiler-options.md @@ -8,4 +8,4 @@ tsc --target ES5 --module commonjs Learn more from the following links: -- [Compiler Options](https://www.typescriptlang.org/docs/handbook/compiler-options.html) \ No newline at end of file +- [Compiler Options](https://www.typescriptlang.org/docs/handbook/compiler-options.html) diff --git a/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/index.md b/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/index.md index c09d63a35..ac2d75ca9 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/index.md +++ b/src/data/roadmaps/typescript/content/100-typescript/102-install-configure/index.md @@ -45,4 +45,4 @@ And you're all set! You can now start writing TypeScript code in your project. Learn more from the following links: -- [Install and Configure TypeScript](https://www.typescriptlang.org/download) \ No newline at end of file +- [Install and Configure TypeScript](https://www.typescriptlang.org/download) diff --git a/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/100-tsc.md b/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/100-tsc.md index 353e1e702..7aed793ca 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/100-tsc.md +++ b/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/100-tsc.md @@ -20,4 +20,4 @@ You can run `tsc --help` to see a list of all the available options and flags. Learn more from the following links: -- [tsc CLI Options](https://www.typescriptlang.org/docs/handbook/compiler-options.html#using-the-cli) \ No newline at end of file +- [tsc CLI Options](https://www.typescriptlang.org/docs/handbook/compiler-options.html#using-the-cli) diff --git a/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/101-ts-node.md b/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/101-ts-node.md index 0e7a49fb0..a49dd8f71 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/101-ts-node.md +++ b/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/101-ts-node.md @@ -3,4 +3,4 @@ ts-node is a TypeScript execution and REPL for node.js, with source map and native ESM support. Learn more from the following links: - [ts-node - GitHub Project](https://github.com/TypeStrong/ts-node) -- [How To Run TypeScript Scripts with ts-node](https://www.digitalocean.com/community/tutorials/typescript-running-typescript-ts-node) \ No newline at end of file +- [How To Run TypeScript Scripts with ts-node](https://www.digitalocean.com/community/tutorials/typescript-running-typescript-ts-node) diff --git a/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/102-ts-playground.md b/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/102-ts-playground.md index 1b48dd89c..8a2ed88f5 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/102-ts-playground.md +++ b/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/102-ts-playground.md @@ -4,4 +4,4 @@ The TypeScript Playground is a great tool to learn TypeScript. It allows you to Learn more from the following links: -- [TypeScript - Playground](https://www.typescriptlang.org/play) \ No newline at end of file +- [TypeScript - Playground](https://www.typescriptlang.org/play) diff --git a/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/index.md b/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/index.md index b0e5d57c0..017fe2317 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/index.md +++ b/src/data/roadmaps/typescript/content/100-typescript/103-running-typescript/index.md @@ -14,7 +14,7 @@ tsc app.ts ```bash node app.js ``` - + Learn more from the following link: -- [Running your TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-tooling-in-5-minutes.html) \ No newline at end of file +- [Running your TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-tooling-in-5-minutes.html) diff --git a/src/data/roadmaps/typescript/content/100-typescript/index.md b/src/data/roadmaps/typescript/content/100-typescript/index.md index e2a268dfb..3bb5d7ed2 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/index.md +++ b/src/data/roadmaps/typescript/content/100-typescript/index.md @@ -12,4 +12,4 @@ The main benefits of using TypeScript include: Learn more from the folowing links: - [Overview of TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html) -- [TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html) \ No newline at end of file +- [TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/100-boolean.md b/src/data/roadmaps/typescript/content/101-typescript-types/100-boolean.md index b97df1e24..e552046f5 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/100-boolean.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/100-boolean.md @@ -9,4 +9,4 @@ let isFalse: boolean = false; Learn more from the following links: -- [Number, String, Boolean, Symbol and Object](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#the-primitives-string-number-and-boolean) \ No newline at end of file +- [Number, String, Boolean, Symbol and Object](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#the-primitives-string-number-and-boolean) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/101-number.md b/src/data/roadmaps/typescript/content/101-typescript-types/101-number.md index db119fcaa..ae6c5e132 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/101-number.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/101-number.md @@ -9,4 +9,4 @@ let floatValue: number = 3.14; Learn more from the following links: -- [Number, String, Boolean, Symbol and Object](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#the-primitives-string-number-and-boolean) \ No newline at end of file +- [Number, String, Boolean, Symbol and Object](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#the-primitives-string-number-and-boolean) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/102-string.md b/src/data/roadmaps/typescript/content/101-typescript-types/102-string.md index afa59cb90..79abaaef7 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/102-string.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/102-string.md @@ -8,4 +8,4 @@ let name: string = 'John Doe'; Learn more from the following link -- [Number, String, Boolean, Symbol and Object](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#the-primitives-string-number-and-boolean) \ No newline at end of file +- [Number, String, Boolean, Symbol and Object](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#the-primitives-string-number-and-boolean) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/103-void.md b/src/data/roadmaps/typescript/content/101-typescript-types/103-void.md index f413f1764..69dc548b3 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/103-void.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/103-void.md @@ -2,7 +2,6 @@ `void` represents the return value of functions which don’t return a value. It’s the inferred type any time a function doesn’t have any `return` statements, or doesn’t return any explicit value from those return statements: - ```typescript // The inferred return type is void function noop() { @@ -12,7 +11,6 @@ function noop() { In JavaScript, a function that doesn’t return any value will implicitly return the value `undefined`. However, `void` and `undefined` are not the same thing in TypeScript. There are further details at the end of this chapter. - Learn more from the following links: -- [void - TypeScript Docs](https://www.typescriptlang.org/docs/handbook/2/functions.html#void) \ No newline at end of file +- [void - TypeScript Docs](https://www.typescriptlang.org/docs/handbook/2/functions.html#void) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/104-undefined.md b/src/data/roadmaps/typescript/content/101-typescript-types/104-undefined.md index 1aad7ab51..0d2fbdfd3 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/104-undefined.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/104-undefined.md @@ -2,7 +2,7 @@ JavaScript has two primitive values used to signal absent or uninitialized value: `null` (absent) and `undefined` (unintialized). -TypeScript has two corresponding *types* by the same names. How these types behave depends on whether you have the `strictNullChecks` option on. +TypeScript has two corresponding _types_ by the same names. How these types behave depends on whether you have the `strictNullChecks` option on. With `strictNullChecks` off, values that might be `null` or `undefined` can still be accessed normally, and the values `null` and `undefined` can be assigned to a property of any type. This is similar to how languages without `null` checks (e.g. C#, Java) behave. The lack of checking for these values tends to be a major source of bugs; TypeScript always recommend people turn `strictNullChecks` on if it’s practical to do so in the codebase. @@ -13,11 +13,11 @@ function doSomething(x: string | null) { if (x === null) { // do nothing } else { - console.log("Hello, " + x.toUpperCase()); + console.log('Hello, ' + x.toUpperCase()); } } ``` Learn more from the following links: -- [null and undefined](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#null-and-undefined) \ No newline at end of file +- [null and undefined](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#null-and-undefined) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/105-null.md b/src/data/roadmaps/typescript/content/101-typescript-types/105-null.md index 7f13a2151..f07b837a1 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/105-null.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/105-null.md @@ -2,7 +2,7 @@ JavaScript has two primitive values used to signal absent or uninitialized value: `null` (absent) and `undefined` (unintialized). -TypeScript has two corresponding *types* by the same names. How these types behave depends on whether you have the `strictNullChecks` option on. +TypeScript has two corresponding _types_ by the same names. How these types behave depends on whether you have the `strictNullChecks` option on. With `strictNullChecks` off, values that might be `null` or `undefined` can still be accessed normally, and the values `null` and `undefined` can be assigned to a property of any type. This is similar to how languages without `null` checks (e.g. C#, Java) behave. The lack of checking for these values tends to be a major source of bugs; TypeScript always recommend people turn `strictNullChecks` on if it’s practical to do so in the codebase. @@ -13,11 +13,11 @@ function doSomething(x: string | null) { if (x === null) { // do nothing } else { - console.log("Hello, " + x.toUpperCase()); + console.log('Hello, ' + x.toUpperCase()); } } ``` Learn more from the following links: -- [null and undefined](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#null-and-undefined) \ No newline at end of file +- [null and undefined](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#null-and-undefined) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/109-array.md b/src/data/roadmaps/typescript/content/101-typescript-types/109-array.md index 6cbf99b50..b422a6f07 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/109-array.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/109-array.md @@ -8,4 +8,4 @@ const numbers: number[] = [1, 2, 3]; Learn more from the following links: -- [Arrays](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#arrays) \ No newline at end of file +- [Arrays](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#arrays) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/111-any.md b/src/data/roadmaps/typescript/content/101-typescript-types/111-any.md index 7fdb0da9a..c4f366e3c 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/111-any.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/111-any.md @@ -7,12 +7,12 @@ When a value is of type `any`, you can access any properties of it (which will i ```typescript let obj: any = { x: 0 }; // None of the following lines of code will throw compiler errors. -// Using `any` disables all further type checking, and it is assumed +// Using `any` disables all further type checking, and it is assumed // you know the environment better than TypeScript. obj.foo(); obj(); obj.bar = 100; -obj = "hello"; +obj = 'hello'; const n: number = obj; ``` diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/112-object.md b/src/data/roadmaps/typescript/content/101-typescript-types/112-object.md index 2ba6d444e..6373b381b 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/112-object.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/112-object.md @@ -16,4 +16,4 @@ printCoord({ x: 3, y: 7 }); Learn more from the following links: -- [Object Types in TypeScript](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#object-types) \ No newline at end of file +- [Object Types in TypeScript](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#object-types) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/114-never.md b/src/data/roadmaps/typescript/content/101-typescript-types/114-never.md index 631c7a563..fb12c6322 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/114-never.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/114-never.md @@ -14,7 +14,7 @@ function error(message: string): never { // Inferred return type is never function fail() { - return error("Something failed"); + return error('Something failed'); } // Function returning never must not have a reachable end point diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/100-as-const.md b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/100-as-const.md index 1f248f3cd..1cbbd3c80 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/100-as-const.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/100-as-const.md @@ -14,4 +14,4 @@ Using as const allows TypeScript to infer more accurate types for constants, whi Learn more from the following links: -- [const assertions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) \ No newline at end of file +- [const assertions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/101-as-type.md b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/101-as-type.md index 910f964cb..85c73824d 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/101-as-type.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/101-as-type.md @@ -6,9 +6,9 @@ For example: ```typescript let num = 42; -let str = num as string; +let str = num as string; // str is now of type string, even though num is a number ``` -It's important to note that type assertions do not change the runtime type of a value, and do not cause any type of conversion. They simply provide a way for the programmer to override the type inference performed by the compiler. \ No newline at end of file +It's important to note that type assertions do not change the runtime type of a value, and do not cause any type of conversion. They simply provide a way for the programmer to override the type inference performed by the compiler. diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/102-as-any.md b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/102-as-any.md index 517ca3581..7b8d8631f 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/102-as-any.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/102-as-any.md @@ -10,4 +10,4 @@ let anyValue: any = 42; // we can assign any value to anyValue, regardless of its type anyValue = 'Hello, world!'; anyValue = true; -``` \ No newline at end of file +``` diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/103-non-null-assertion.md b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/103-non-null-assertion.md index c5b42211e..18d0b98c4 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/103-non-null-assertion.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/103-non-null-assertion.md @@ -13,4 +13,4 @@ The non-null assertion operator is used to assert that a value is not null or un Learn more from the following links: -- [Non-null assertion operator](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#non-null-assertion-operator) \ No newline at end of file +- [Non-null assertion operator](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#non-null-assertion-operator) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/index.md b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/index.md index 0300956ef..a741c2ae1 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/index.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/115-type-assertions/index.md @@ -23,4 +23,4 @@ In both examples, `num` is a number, but the type assertions tell the compiler t Learn more from the following links: -- [Type Assertions](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#type-assertions) \ No newline at end of file +- [Type Assertions](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#type-assertions) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/116-satisfies-keyword.md b/src/data/roadmaps/typescript/content/101-typescript-types/116-satisfies-keyword.md index 5409d705f..6dc13f948 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/116-satisfies-keyword.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/116-satisfies-keyword.md @@ -7,10 +7,10 @@ For example: ```typescript // Each property can be a string or an RGB tuple. const palette = { - red: [255, 0, 0], - green: "#00ff00", - bleu: [0, 0, 255] -// ^^^^ sacrebleu - we've made a typo! + red: [255, 0, 0], + green: '#00ff00', + bleu: [0, 0, 255], + // ^^^^ sacrebleu - we've made a typo! }; // We want to be able to use array methods on 'red'... @@ -23,14 +23,14 @@ const greenNormalized = palette.green.toUpperCase(); Notice that we’ve written `bleu`, whereas we probably should have written `blue`. We could try to catch that `bleu` typo by using a type annotation on palette, but we’d lose the information about each property. ```typescript -type Colors = "red" | "green" | "blue"; +type Colors = 'red' | 'green' | 'blue'; type RGB = [red: number, green: number, blue: number]; const palette: Record = { - red: [255, 0, 0], - green: "#00ff00", - bleu: [0, 0, 255] -// ~~~~ The typo is now correctly detected + red: [255, 0, 0], + green: '#00ff00', + bleu: [0, 0, 255], + // ~~~~ The typo is now correctly detected }; // But we now have an undesirable error here - 'palette.red' "could" be a string. const redComponent = palette.red.at(0); @@ -39,14 +39,14 @@ const redComponent = palette.red.at(0); The `satisfies` operator lets us validate that the type of an expression matches some type, without changing the resulting type of that expression. As an example, we could use `satisfies` to validate that all the properties of palette are compatible with `string | number[]`: ```typescript -type Colors = "red" | "green" | "blue"; +type Colors = 'red' | 'green' | 'blue'; type RGB = [red: number, green: number, blue: number]; const palette = { - red: [255, 0, 0], - green: "#00ff00", - bleu: [0, 0, 255] -// ~~~~ The typo is now caught! + red: [255, 0, 0], + green: '#00ff00', + bleu: [0, 0, 255], + // ~~~~ The typo is now caught! } satisfies Record; // Both of these methods are still accessible! @@ -56,4 +56,4 @@ const greenNormalized = palette.green.toUpperCase(); Learn more from the following resources: -- [Satisfies Keyword](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-9.html#the-satisfies-operator) \ No newline at end of file +- [Satisfies Keyword](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-9.html#the-satisfies-operator) diff --git a/src/data/roadmaps/typescript/content/101-typescript-types/index.md b/src/data/roadmaps/typescript/content/101-typescript-types/index.md index 0e50f3f66..98577cec1 100644 --- a/src/data/roadmaps/typescript/content/101-typescript-types/index.md +++ b/src/data/roadmaps/typescript/content/101-typescript-types/index.md @@ -23,4 +23,4 @@ You can also create custom types in TypeScript using interfaces, classes, and ty Learn more from the following links: -- [Transcript - Everyday Types](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html) \ No newline at end of file +- [Transcript - Everyday Types](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html) diff --git a/src/data/roadmaps/typescript/content/102-type-inference.md b/src/data/roadmaps/typescript/content/102-type-inference.md index 29ea69ad1..4186a30c3 100644 --- a/src/data/roadmaps/typescript/content/102-type-inference.md +++ b/src/data/roadmaps/typescript/content/102-type-inference.md @@ -5,11 +5,11 @@ Type inference in TypeScript refers to the process of automatically determining Here's an example of type inference in TypeScript: ```typescript -let name = "John Doe"; +let name = 'John Doe'; ``` In this example, the TypeScript compiler automatically infers that the type of the name variable is string. This means that you can use the name variable just like any other string in your code, and the TypeScript compiler will ensure that you don't perform any invalid operations on it. Learn more from the following links: -- [Type Inference](https://www.typescriptlang.org/docs/handbook/type-inference.html#handbook-content) \ No newline at end of file +- [Type Inference](https://www.typescriptlang.org/docs/handbook/type-inference.html#handbook-content) diff --git a/src/data/roadmaps/typescript/content/103-type-compatibility.md b/src/data/roadmaps/typescript/content/103-type-compatibility.md index baab7cf9a..1158489b8 100644 --- a/src/data/roadmaps/typescript/content/103-type-compatibility.md +++ b/src/data/roadmaps/typescript/content/103-type-compatibility.md @@ -6,8 +6,8 @@ Here's an example of type compatibility in TypeScript: ```typescript interface Point { -x: number; -y: number; + x: number; + y: number; } let p1: Point = { x: 10, y: 20 }; @@ -20,4 +20,4 @@ In this example, `p1` has the type `Point`, while `p2` has the type `{ x: number Learn more from the following links: -- [Type Compatibility](https://www.typescriptlang.org/docs/handbook/type-compatibility.html) \ No newline at end of file +- [Type Compatibility](https://www.typescriptlang.org/docs/handbook/type-compatibility.html) diff --git a/src/data/roadmaps/typescript/content/104-combining-types/100-union-types.md b/src/data/roadmaps/typescript/content/104-combining-types/100-union-types.md index 250f34ff2..d10cff03e 100644 --- a/src/data/roadmaps/typescript/content/104-combining-types/100-union-types.md +++ b/src/data/roadmaps/typescript/content/104-combining-types/100-union-types.md @@ -3,13 +3,13 @@ Union Types in TypeScript allow you to specify multiple possible types for a single variable or parameter. A union type is written as a vertical bar `|` separated list of types. For example, consider a function that takes either a string or a number as an argument: - + ```typescript function combine(input1: string | number, input2: string | number) { - return input1 + input2; + return input1 + input2; } ``` Learn more from the following links: -- [Union Types in TypeScript](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) \ No newline at end of file +- [Union Types in TypeScript](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) diff --git a/src/data/roadmaps/typescript/content/104-combining-types/101-intersection-types.md b/src/data/roadmaps/typescript/content/104-combining-types/101-intersection-types.md index 7f325a1f1..1ac3c875d 100644 --- a/src/data/roadmaps/typescript/content/104-combining-types/101-intersection-types.md +++ b/src/data/roadmaps/typescript/content/104-combining-types/101-intersection-types.md @@ -14,4 +14,4 @@ Note that the union type uses the `|` operator that defines a variable which can Learn more from the following links: -- [Intersection Types in TypeScript](https://www.typescripttutorial.net/typescript-tutorial/typescript-intersection-types/) \ No newline at end of file +- [Intersection Types in TypeScript](https://www.typescripttutorial.net/typescript-tutorial/typescript-intersection-types/) diff --git a/src/data/roadmaps/typescript/content/104-combining-types/102-type-aliases.md b/src/data/roadmaps/typescript/content/104-combining-types/102-type-aliases.md index 7aa6c4116..913899370 100644 --- a/src/data/roadmaps/typescript/content/104-combining-types/102-type-aliases.md +++ b/src/data/roadmaps/typescript/content/104-combining-types/102-type-aliases.md @@ -16,4 +16,4 @@ In the example above, `Name` and `Age` are type aliases for `string` and `number Learn more from the following links: -- [Type Aliases](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#type-aliases) \ No newline at end of file +- [Type Aliases](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#type-aliases) diff --git a/src/data/roadmaps/typescript/content/104-combining-types/103-keyof-operator.md b/src/data/roadmaps/typescript/content/104-combining-types/103-keyof-operator.md index cf09cadcc..a48c4abd3 100644 --- a/src/data/roadmaps/typescript/content/104-combining-types/103-keyof-operator.md +++ b/src/data/roadmaps/typescript/content/104-combining-types/103-keyof-operator.md @@ -9,12 +9,12 @@ interface User { location: string; } -type UserKeys = keyof User; // "name" | "age" | "location" -const key: UserKeys = "name"; +type UserKeys = keyof User; // "name" | "age" | "location" +const key: UserKeys = 'name'; ``` In this example, `UserKeys` is a type that represents the union of keys from the `User` interface, which is `"name"` | `"age"` | `"location"`. And a constant named `key` with the type `UserKeys` is declared with the value `"name"`. Learn more from the following links: -- [Keyof Type Operator](https://www.typescriptlang.org/docs/handbook/2/keyof-types.html#handbook-content) \ No newline at end of file +- [Keyof Type Operator](https://www.typescriptlang.org/docs/handbook/2/keyof-types.html#handbook-content) diff --git a/src/data/roadmaps/typescript/content/104-combining-types/index.md b/src/data/roadmaps/typescript/content/104-combining-types/index.md index a83c2614e..d085ce358 100644 --- a/src/data/roadmaps/typescript/content/104-combining-types/index.md +++ b/src/data/roadmaps/typescript/content/104-combining-types/index.md @@ -8,7 +8,7 @@ The union operator `|` is used to combine two or more types into a single type t ```typescript type stringOrNumber = string | number; -let value: stringOrNumber = "hello"; +let value: stringOrNumber = 'hello'; value = 42; ``` @@ -27,7 +27,7 @@ interface B { } type AB = A & B; -let value: AB = { a: "hello", b: 42 }; +let value: AB = { a: 'hello', b: 42 }; ``` Learn more from the following links: @@ -35,4 +35,4 @@ Learn more from the following links: - [Union Types in TypeScript](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) - [Intersection Types in TypeScript](https://www.typescripttutorial.net/typescript-tutorial/typescript-intersection-types/) - [Type Aliases](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#type-aliases) -- [Keyof Type Operator](https://www.typescriptlang.org/docs/handbook/2/keyof-types.html#handbook-content) \ No newline at end of file +- [Keyof Type Operator](https://www.typescriptlang.org/docs/handbook/2/keyof-types.html#handbook-content) diff --git a/src/data/roadmaps/typescript/content/105-type-guards/100-typeof-operator.md b/src/data/roadmaps/typescript/content/105-type-guards/100-typeof-operator.md index 15c6ffe5c..15c2339e6 100644 --- a/src/data/roadmaps/typescript/content/105-type-guards/100-typeof-operator.md +++ b/src/data/roadmaps/typescript/content/105-type-guards/100-typeof-operator.md @@ -3,15 +3,15 @@ The `typeof` operator is used to check the type of a variable. It returns a string value representing the type of the variable. ```typescript -let value: string | number = "hello"; +let value: string | number = 'hello'; -if (typeof value === "string") { - console.log("value is a string"); +if (typeof value === 'string') { + console.log('value is a string'); } else { - console.log("value is a number"); + console.log('value is a number'); } ``` Learn more from the following links: -- [Type Guards and Differentiating Types](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#typeof-type-guards) \ No newline at end of file +- [Type Guards and Differentiating Types](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#typeof-type-guards) diff --git a/src/data/roadmaps/typescript/content/105-type-guards/101-instanceof-operator.md b/src/data/roadmaps/typescript/content/105-type-guards/101-instanceof-operator.md index 29ba434ac..52c3f6f8f 100644 --- a/src/data/roadmaps/typescript/content/105-type-guards/101-instanceof-operator.md +++ b/src/data/roadmaps/typescript/content/105-type-guards/101-instanceof-operator.md @@ -24,4 +24,4 @@ if (pet instanceof Bird) { Learn more from the following links: -- [instanceOf Operator](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#instanceof-narrowing) \ No newline at end of file +- [instanceOf Operator](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#instanceof-narrowing) diff --git a/src/data/roadmaps/typescript/content/105-type-guards/102-equality.md b/src/data/roadmaps/typescript/content/105-type-guards/102-equality.md index bb0875bce..89f9be330 100644 --- a/src/data/roadmaps/typescript/content/105-type-guards/102-equality.md +++ b/src/data/roadmaps/typescript/content/105-type-guards/102-equality.md @@ -19,4 +19,4 @@ When we checked that `x` and `y` are both equal in the above example, TypeScript Learn more from the following links: -- [Equality Narrowing](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#equality-narrowing) \ No newline at end of file +- [Equality Narrowing](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#equality-narrowing) diff --git a/src/data/roadmaps/typescript/content/105-type-guards/103-truthiness.md b/src/data/roadmaps/typescript/content/105-type-guards/103-truthiness.md index de3633592..1669def5c 100644 --- a/src/data/roadmaps/typescript/content/105-type-guards/103-truthiness.md +++ b/src/data/roadmaps/typescript/content/105-type-guards/103-truthiness.md @@ -16,4 +16,4 @@ function getUsersOnlineMessage(numUsersOnline: number) { Learn more from the following links: -- [Truthiness Narrowing](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#truthiness-narrowing) \ No newline at end of file +- [Truthiness Narrowing](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#truthiness-narrowing) diff --git a/src/data/roadmaps/typescript/content/105-type-guards/104-type-predicates.md b/src/data/roadmaps/typescript/content/105-type-guards/104-type-predicates.md index cd11e7e3d..bb5d235b2 100644 --- a/src/data/roadmaps/typescript/content/105-type-guards/104-type-predicates.md +++ b/src/data/roadmaps/typescript/content/105-type-guards/104-type-predicates.md @@ -19,4 +19,4 @@ function example(x: unknown) { Learn more from the following links: -- [Type Guards and Differentiating Types](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates) \ No newline at end of file +- [Type Guards and Differentiating Types](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates) diff --git a/src/data/roadmaps/typescript/content/105-type-guards/index.md b/src/data/roadmaps/typescript/content/105-type-guards/index.md index dc111c6d4..19a457c04 100644 --- a/src/data/roadmaps/typescript/content/105-type-guards/index.md +++ b/src/data/roadmaps/typescript/content/105-type-guards/index.md @@ -4,4 +4,4 @@ Type guards are a way to narrow down the type of a variable. This is useful when Learn more from the following resources: -- [Type Guards - TypeScript Docs](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#typeof-type-guards) \ No newline at end of file +- [Type Guards - TypeScript Docs](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#typeof-type-guards) diff --git a/src/data/roadmaps/typescript/content/106-functions/100-typing-functions.md b/src/data/roadmaps/typescript/content/106-functions/100-typing-functions.md index 8422c3155..0a2437b65 100644 --- a/src/data/roadmaps/typescript/content/106-functions/100-typing-functions.md +++ b/src/data/roadmaps/typescript/content/106-functions/100-typing-functions.md @@ -6,7 +6,7 @@ Function declaration with types: ```typescript function add(a: number, b: number): number { - return a + b; + return a + b; } ``` @@ -14,7 +14,7 @@ Arrow function with types: ```typescript const multiply = (a: number, b: number): number => { - return a * b; + return a * b; }; ``` @@ -24,10 +24,10 @@ Function type: let divide: (a: number, b: number) => number; divide = (a, b) => { - return a / b; + return a / b; }; ``` Learn more from the following links: -- [TypeScript Functions](https://www.typescriptlang.org/docs/handbook/2/functions.html) \ No newline at end of file +- [TypeScript Functions](https://www.typescriptlang.org/docs/handbook/2/functions.html) diff --git a/src/data/roadmaps/typescript/content/106-functions/101-function-overloading.md b/src/data/roadmaps/typescript/content/106-functions/101-function-overloading.md index 62219adf0..f856995e6 100644 --- a/src/data/roadmaps/typescript/content/106-functions/101-function-overloading.md +++ b/src/data/roadmaps/typescript/content/106-functions/101-function-overloading.md @@ -10,11 +10,10 @@ function add(a: any, b: any): any { return a + b; } -console.log(add(1, 2)); // 3 -console.log(add("Hello", " World")); // "Hello World" +console.log(add(1, 2)); // 3 +console.log(add('Hello', ' World')); // "Hello World" ``` - Learn more from the following links: -- [Function Overloads](https://www.typescriptlang.org/docs/handbook/2/functions.html#function-overloads) \ No newline at end of file +- [Function Overloads](https://www.typescriptlang.org/docs/handbook/2/functions.html#function-overloads) diff --git a/src/data/roadmaps/typescript/content/106-functions/index.md b/src/data/roadmaps/typescript/content/106-functions/index.md index ab54a2090..5ccb5b652 100644 --- a/src/data/roadmaps/typescript/content/106-functions/index.md +++ b/src/data/roadmaps/typescript/content/106-functions/index.md @@ -18,9 +18,9 @@ function add(a: number, b: number): number { } let result = add(1, 2); -console.log(result); // 3 +console.log(result); // 3 ``` Learn more from the following links: -- [Functions in TypeScript](https://www.typescriptlang.org/docs/handbook/2/functions.html) \ No newline at end of file +- [Functions in TypeScript](https://www.typescriptlang.org/docs/handbook/2/functions.html) diff --git a/src/data/roadmaps/typescript/content/107-interfaces/100-types-vs-interfaces.md b/src/data/roadmaps/typescript/content/107-interfaces/100-types-vs-interfaces.md index 6ef00bfe2..db1a8724b 100644 --- a/src/data/roadmaps/typescript/content/107-interfaces/100-types-vs-interfaces.md +++ b/src/data/roadmaps/typescript/content/107-interfaces/100-types-vs-interfaces.md @@ -11,8 +11,8 @@ type Person = { }; const person: Person = { - name: "John Doe", - age: 30 + name: 'John Doe', + age: 30, }; ``` @@ -25,12 +25,12 @@ interface Person { } const person: Person = { - name: "John Doe", - age: 30 + name: 'John Doe', + age: 30, }; ``` Learn more from the following links: - [Interfaces vs. Type Aliases](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#differences-between-type-aliases-and-interfaces) -- [Interfaces vs Types in TypeScript](https://stackoverflow.com/questions/37233735/interfaces-vs-types-in-typescript) \ No newline at end of file +- [Interfaces vs Types in TypeScript](https://stackoverflow.com/questions/37233735/interfaces-vs-types-in-typescript) diff --git a/src/data/roadmaps/typescript/content/107-interfaces/101-extending-interfaces.md b/src/data/roadmaps/typescript/content/107-interfaces/101-extending-interfaces.md index 4d38691da..f64b7bd16 100644 --- a/src/data/roadmaps/typescript/content/107-interfaces/101-extending-interfaces.md +++ b/src/data/roadmaps/typescript/content/107-interfaces/101-extending-interfaces.md @@ -15,7 +15,7 @@ interface Square extends Shape { let square: Square = { width: 10, height: 10, - sideLength: 10 + sideLength: 10, }; ``` @@ -23,4 +23,4 @@ In this example, the `Square` interface extends the `Shape` interface and adds a Learn more from the following links: -- [Extending Interfaces](https://www.typescriptlang.org/docs/handbook/2/objects.html) \ No newline at end of file +- [Extending Interfaces](https://www.typescriptlang.org/docs/handbook/2/objects.html) diff --git a/src/data/roadmaps/typescript/content/107-interfaces/102-interface-declaration.md b/src/data/roadmaps/typescript/content/107-interfaces/102-interface-declaration.md index d884b0cb4..932d07c4c 100644 --- a/src/data/roadmaps/typescript/content/107-interfaces/102-interface-declaration.md +++ b/src/data/roadmaps/typescript/content/107-interfaces/102-interface-declaration.md @@ -18,4 +18,4 @@ In this example, the Person interface defines four properties: `firstName`, `las Learn more from the following links: -- [Extending Interfaces](https://www.typescriptlang.org/docs/handbook/2/objects.html) \ No newline at end of file +- [Extending Interfaces](https://www.typescriptlang.org/docs/handbook/2/objects.html) diff --git a/src/data/roadmaps/typescript/content/107-interfaces/103-hybrid-types.md b/src/data/roadmaps/typescript/content/107-interfaces/103-hybrid-types.md index 3125c26c9..b7de10023 100644 --- a/src/data/roadmaps/typescript/content/107-interfaces/103-hybrid-types.md +++ b/src/data/roadmaps/typescript/content/107-interfaces/103-hybrid-types.md @@ -22,4 +22,5 @@ type User = { age: number; email: string; education: Education; -}; \ No newline at end of file +}; +``` diff --git a/src/data/roadmaps/typescript/content/107-interfaces/index.md b/src/data/roadmaps/typescript/content/107-interfaces/index.md index fbd4accdc..0ac6cc577 100644 --- a/src/data/roadmaps/typescript/content/107-interfaces/index.md +++ b/src/data/roadmaps/typescript/content/107-interfaces/index.md @@ -12,7 +12,7 @@ interface User { const user: User = { name: 'John Doe', - age: 30 + age: 30, }; ``` @@ -20,4 +20,4 @@ In this example, the `User` interface defines the structure of the `user` object Learn more from the following links: -- [TypeScript - Interfaces](https://www.typescriptlang.org/docs/handbook/2/objects.html) \ No newline at end of file +- [TypeScript - Interfaces](https://www.typescriptlang.org/docs/handbook/2/objects.html) diff --git a/src/data/roadmaps/typescript/content/108-classes/100-constructor-params.md b/src/data/roadmaps/typescript/content/108-classes/100-constructor-params.md index 42d9b7690..f946e39c2 100644 --- a/src/data/roadmaps/typescript/content/108-classes/100-constructor-params.md +++ b/src/data/roadmaps/typescript/content/108-classes/100-constructor-params.md @@ -12,4 +12,4 @@ In this example, the constructor has two parameters: name and age. name has a pr Learn more from the following links: -- [TypeScript - Construct](https://www.typescriptlang.org/docs/handbook/2/classes.html#constructors) \ No newline at end of file +- [TypeScript - Construct](https://www.typescriptlang.org/docs/handbook/2/classes.html#constructors) diff --git a/src/data/roadmaps/typescript/content/108-classes/102-access-modifiers.md b/src/data/roadmaps/typescript/content/108-classes/102-access-modifiers.md index 72eb38c43..20cc5cf32 100644 --- a/src/data/roadmaps/typescript/content/108-classes/102-access-modifiers.md +++ b/src/data/roadmaps/typescript/content/108-classes/102-access-modifiers.md @@ -10,4 +10,4 @@ Access modifiers in TypeScript allow you to define the level of visibility and a Learn more from the following resources: -- [TypeScript Access Modifiers](https://www.typescripttutorial.net/typescript-tutorial/typescript-access-modifiers/) \ No newline at end of file +- [TypeScript Access Modifiers](https://www.typescripttutorial.net/typescript-tutorial/typescript-access-modifiers/) diff --git a/src/data/roadmaps/typescript/content/108-classes/103-abstract-classes.md b/src/data/roadmaps/typescript/content/108-classes/103-abstract-classes.md index d1de6e376..696e8e089 100644 --- a/src/data/roadmaps/typescript/content/108-classes/103-abstract-classes.md +++ b/src/data/roadmaps/typescript/content/108-classes/103-abstract-classes.md @@ -20,4 +20,4 @@ class Dog extends Animal { Learn more from the following resources: -- [Abstract Classes](https://www.typescriptlang.org/docs/handbook/2/classes.html#abstract-classes-and-members) \ No newline at end of file +- [Abstract Classes](https://www.typescriptlang.org/docs/handbook/2/classes.html#abstract-classes-and-members) diff --git a/src/data/roadmaps/typescript/content/108-classes/104-inheritance-vs-polymorphism.md b/src/data/roadmaps/typescript/content/108-classes/104-inheritance-vs-polymorphism.md index 152f7c50d..c98eaadd1 100644 --- a/src/data/roadmaps/typescript/content/108-classes/104-inheritance-vs-polymorphism.md +++ b/src/data/roadmaps/typescript/content/108-classes/104-inheritance-vs-polymorphism.md @@ -36,4 +36,4 @@ animal.makeSound(); // Output: Meow Learn more from the following resources: -- [Inheritance and Polymorphism In TypeScript](https://www.youtube.com/watch?v=Sn6K57YSuwU) \ No newline at end of file +- [Inheritance and Polymorphism In TypeScript](https://www.youtube.com/watch?v=Sn6K57YSuwU) diff --git a/src/data/roadmaps/typescript/content/108-classes/105-method-overriding.md b/src/data/roadmaps/typescript/content/108-classes/105-method-overriding.md index d296be04c..4d96d62fd 100644 --- a/src/data/roadmaps/typescript/content/108-classes/105-method-overriding.md +++ b/src/data/roadmaps/typescript/content/108-classes/105-method-overriding.md @@ -27,4 +27,4 @@ In this example, the `Dog` class overrides the makeSound method defined in the A Learn more from the following resources: -- [TypeScript - Overriding Methods](https://www.typescriptlang.org/docs/handbook/2/classes.html#overriding-methods) \ No newline at end of file +- [TypeScript - Overriding Methods](https://www.typescriptlang.org/docs/handbook/2/classes.html#overriding-methods) diff --git a/src/data/roadmaps/typescript/content/108-classes/index.md b/src/data/roadmaps/typescript/content/108-classes/index.md index 55ff9ff87..6ae8bc607 100644 --- a/src/data/roadmaps/typescript/content/108-classes/index.md +++ b/src/data/roadmaps/typescript/content/108-classes/index.md @@ -24,4 +24,4 @@ In this example, the `Animal` class has a name field, a constructor that sets th Learn more from the following resources: -- [Tutorial - Classes](https://www.typescriptlang.org/docs/handbook/2/classes.html) \ No newline at end of file +- [Tutorial - Classes](https://www.typescriptlang.org/docs/handbook/2/classes.html) diff --git a/src/data/roadmaps/typescript/content/109-generics/100-generic-types.md b/src/data/roadmaps/typescript/content/109-generics/100-generic-types.md index 83c0f00a2..4715faa8a 100644 --- a/src/data/roadmaps/typescript/content/109-generics/100-generic-types.md +++ b/src/data/roadmaps/typescript/content/109-generics/100-generic-types.md @@ -9,7 +9,7 @@ function identity(arg: T): T { return arg; } -let output = identity("Hello"); // type of output will be 'string' +let output = identity('Hello'); // type of output will be 'string' ``` In this example, the `identity` function takes a single argument of any data type and returns the same data type. The actual data type is specified when the function is called by using `` before the argument `Hello`. @@ -26,9 +26,11 @@ class GenericNumber { let myGenericNumber = new GenericNumber(); myGenericNumber.zeroValue = 0; -myGenericNumber.add = function(x, y) { return x + y; }; +myGenericNumber.add = function (x, y) { + return x + y; +}; ``` Learn more from the following resources: -- [Hello World of Generics](https://www.typescriptlang.org/docs/handbook/2/generics.html#hello-world-of-generics) \ No newline at end of file +- [Hello World of Generics](https://www.typescriptlang.org/docs/handbook/2/generics.html#hello-world-of-generics) diff --git a/src/data/roadmaps/typescript/content/109-generics/101-generic-constraints.md b/src/data/roadmaps/typescript/content/109-generics/101-generic-constraints.md index d455b2038..d6c33e4c5 100644 --- a/src/data/roadmaps/typescript/content/109-generics/101-generic-constraints.md +++ b/src/data/roadmaps/typescript/content/109-generics/101-generic-constraints.md @@ -16,12 +16,12 @@ function loggingIdentity(arg: T): T { return arg; } -loggingIdentity(3); // Error, number doesn't have a .length property -loggingIdentity({length: 10, value: 3}); // OK +loggingIdentity(3); // Error, number doesn't have a .length property +loggingIdentity({ length: 10, value: 3 }); // OK ``` In this example, the `Lengthwise` interface defines a `length` property. The `loggingIdentity` function uses a generic type parameter `T` that is constrained by the `Lengthwise` interface, meaning that the type parameter must extend or implement the `Lengthwise` interface. This constraint ensures that the length property is available on the argument passed to the `loggingIdentity` function. Learn more from the following resources: -- [Generic Constraints - TypeScript](https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-constraints) \ No newline at end of file +- [Generic Constraints - TypeScript](https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-constraints) diff --git a/src/data/roadmaps/typescript/content/109-generics/index.md b/src/data/roadmaps/typescript/content/109-generics/index.md index 82e125093..1580dd198 100644 --- a/src/data/roadmaps/typescript/content/109-generics/index.md +++ b/src/data/roadmaps/typescript/content/109-generics/index.md @@ -9,11 +9,11 @@ function identity(arg: T): T { return arg; } -let output = identity("Hello"); // type of output will be 'string' +let output = identity('Hello'); // type of output will be 'string' ``` In this example, the `identity` function takes a single argument of any data type and returns the same data type. The actual data type is specified when the function is called by using `` before the argument `"Hello"`. Learn more from the following resources: -- [Hello World of Generics](https://www.typescriptlang.org/docs/handbook/2/generics.html#hello-world-of-generics) \ No newline at end of file +- [Hello World of Generics](https://www.typescriptlang.org/docs/handbook/2/generics.html#hello-world-of-generics) diff --git a/src/data/roadmaps/typescript/content/110-decorators.md b/src/data/roadmaps/typescript/content/110-decorators.md index 803608184..e3cccc054 100644 --- a/src/data/roadmaps/typescript/content/110-decorators.md +++ b/src/data/roadmaps/typescript/content/110-decorators.md @@ -5,7 +5,11 @@ Decorators are a feature of TypeScript that allow you to modify the behavior of Here's an example of how you might use a decorator in TypeScript: ```typescript -function log(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) { +function log( + target: Object, + propertyKey: string | symbol, + descriptor: PropertyDescriptor +) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { @@ -33,4 +37,4 @@ In this example, we use the `@log` decorator to modify the behavior of the `add` Learn more from the following links: -- [Decorators](https://www.typescriptlang.org/docs/handbook/decorators.html#handbook-content) \ No newline at end of file +- [Decorators](https://www.typescriptlang.org/docs/handbook/decorators.html#handbook-content) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/100-partial.md b/src/data/roadmaps/typescript/content/111-utility-types/100-partial.md index 9469f7578..9305bcd57 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/100-partial.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/100-partial.md @@ -16,7 +16,7 @@ function createUser(user: Partial): User { name: 'John Doe', age: 30, email: 'john.doe@example.com', - ...user + ...user, }; } @@ -28,4 +28,4 @@ console.log(newUser); Learn more from the following links: -- [Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) \ No newline at end of file +- [Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/101-pick.md b/src/data/roadmaps/typescript/content/111-utility-types/101-pick.md index ac89389d2..66f9125ca 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/101-pick.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/101-pick.md @@ -9,14 +9,14 @@ interface Todo { completed: boolean; } -type TodoPreview = Pick; +type TodoPreview = Pick; const todo: TodoPreview = { - title: "Clean room", + title: 'Clean room', completed: false, }; ``` Learn more from the following links: -- [Pick](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys) \ No newline at end of file +- [Pick](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/102-omit.md b/src/data/roadmaps/typescript/content/111-utility-types/102-omit.md index 07c0144ff..773828b2c 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/102-omit.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/102-omit.md @@ -10,22 +10,22 @@ interface Todo { createdAt: number; } -type TodoPreview = Omit; +type TodoPreview = Omit; const todo: TodoPreview = { - title: "Clean room", + title: 'Clean room', completed: false, createdAt: 1615544252770, }; -type TodoInfo = Omit; +type TodoInfo = Omit; const todoInfo: TodoInfo = { - title: "Pick up kids", - description: "Kindergarten closes at 5pm", + title: 'Pick up kids', + description: 'Kindergarten closes at 5pm', }; ``` Learn more from the following links: -- [Omit](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys) \ No newline at end of file +- [Omit](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/103-readonly.md b/src/data/roadmaps/typescript/content/111-utility-types/103-readonly.md index f88b65931..ea5aac532 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/103-readonly.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/103-readonly.md @@ -8,13 +8,13 @@ interface Todo { } const todo: Readonly = { - title: "Delete inactive users", + title: 'Delete inactive users', }; // Cannot assign to 'title' because it is a read-only property. -todo.title = "Hello"; +todo.title = 'Hello'; ``` Learn more from the following links: -- [Readonly](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype) \ No newline at end of file +- [Readonly](https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/104-record.md b/src/data/roadmaps/typescript/content/111-utility-types/104-record.md index ae90fa28b..2a27f0989 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/104-record.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/104-record.md @@ -8,15 +8,15 @@ interface CatInfo { breed: string; } -type CatName = "miffy" | "boris" | "mordred"; +type CatName = 'miffy' | 'boris' | 'mordred'; const cats: Record = { - miffy: { age: 10, breed: "Persian" }, - boris: { age: 5, breed: "Maine Coon" }, - mordred: { age: 16, breed: "British Shorthair" }, + miffy: { age: 10, breed: 'Persian' }, + boris: { age: 5, breed: 'Maine Coon' }, + mordred: { age: 16, breed: 'British Shorthair' }, }; ``` Learn more from the following links: -- [Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type) \ No newline at end of file +- [Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/105-exclude.md b/src/data/roadmaps/typescript/content/111-utility-types/105-exclude.md index 9b8dc9ac2..68b307f7b 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/105-exclude.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/105-exclude.md @@ -3,11 +3,11 @@ Exclude constructs a type by excluding from UnionType all union members that are assignable to ExcludedMembers. ```typescript -type T0 = Exclude<"a" | "b" | "c", "a">; // "b" | "c" -type T1 = Exclude<"a" | "b" | "c", "a" | "b">; // "c" -type T2 = Exclude void), Function>; // string | number +type T0 = Exclude<'a' | 'b' | 'c', 'a'>; // "b" | "c" +type T1 = Exclude<'a' | 'b' | 'c', 'a' | 'b'>; // "c" +type T2 = Exclude void), Function>; // string | number ``` Learn more from the following links: -- [Exclude](https://www.typescriptlang.org/docs/handbook/utility-types.html#excludeuniontype-excludedmembers) \ No newline at end of file +- [Exclude](https://www.typescriptlang.org/docs/handbook/utility-types.html#excludeuniontype-excludedmembers) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/106-extract.md b/src/data/roadmaps/typescript/content/111-utility-types/106-extract.md index 1443513d0..b42ad9a49 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/106-extract.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/106-extract.md @@ -3,10 +3,10 @@ Extract constructs a type by extracting from Type all union members that are assignable to Union. ```typescript -type T0 = Extract<"a" | "b" | "c", "a" | "f">; +type T0 = Extract<'a' | 'b' | 'c', 'a' | 'f'>; // ^ = type T0 = "a" ``` Learn more from the following links: -- [Extract](https://www.typescriptlang.org/docs/handbook/utility-types.html#extracttype-union) \ No newline at end of file +- [Extract](https://www.typescriptlang.org/docs/handbook/utility-types.html#extracttype-union) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/107-non-nullable.md b/src/data/roadmaps/typescript/content/111-utility-types/107-non-nullable.md index 0ab4581ae..c3f8d26b1 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/107-non-nullable.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/107-non-nullable.md @@ -6,10 +6,10 @@ Non-Nullable constructs a type by excluding `null` and `undefined` from Type. type T0 = NonNullable; // type T0 = string | number -type T1 = NonNullable; +type T1 = NonNullable; // type T1 = string[] ``` Learn more from the following links: -- [NonNullable](https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullabletype) \ No newline at end of file +- [NonNullable](https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullabletype) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/108-parameters.md b/src/data/roadmaps/typescript/content/111-utility-types/108-parameters.md index 19de681ca..e8cfd73e2 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/108-parameters.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/108-parameters.md @@ -12,8 +12,8 @@ type T1 = Parameters<(s: string) => void>; type T2 = Parameters<(arg: T) => T>; // type T2 = [arg: unknown] -declare function f1(arg: { a: number, b: string }): void; -type T3 = Parameters; +declare function f1(arg: { a: number; b: string }): void; +type T3 = Parameters; // type T3 = [arg: { // a: number; // b: string; @@ -22,16 +22,16 @@ type T3 = Parameters; type T4 = Parameters; // type T4 = unknown[] -type T5 = Parameters; +type T5 = Parameters; // type T5 = never type T6 = Parameters; // ^ Type 'string' does not satisfy the constraint '(...args: any) => any'. - + type T7 = Parameters; -// ^ Type 'Function' does not satisfy the constraint '(...args: any) => any'. +// ^ Type 'Function' does not satisfy the constraint '(...args: any) => any'. ``` Learn more from the following links: -- [Parameters](https://www.typescriptlang.org/docs/handbook/utility-types.html#parameterstype) \ No newline at end of file +- [Parameters](https://www.typescriptlang.org/docs/handbook/utility-types.html#parameterstype) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/109-return-type.md b/src/data/roadmaps/typescript/content/111-utility-types/109-return-type.md index 088291d07..5df027f06 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/109-return-type.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/109-return-type.md @@ -6,35 +6,35 @@ Return type constructs a type consisting of the return type of function Type. type T0 = ReturnType<() => string>; // type T0 = string -type T1 = ReturnType<(s: string) => void>; +type T1 = ReturnType<(s: string) => void>; // type T1 = void type T2 = ReturnType<() => T>; // type T2 = unknown -type T3 = ReturnType<() => T>; +type T3 = ReturnType<() => T>; // type T3 = number[] -declare function f1(): { a: number; b: string }; -type T4 = ReturnType; +declare function f1(): { a: number; b: string }; +type T4 = ReturnType; // type T4 = { // a: number; // b: string; // } -type T5 = ReturnType; +type T5 = ReturnType; // type T5 = any -type T6 = ReturnType; +type T6 = ReturnType; // type T6 = never type T7 = ReturnType; // ^ Type 'string' does not satisfy the constraint '(...args: any) => any'. - + type T8 = ReturnType; // ^ Type 'Function' does not satisfy the constraint '(...args: any) => any'. ``` Learn more from the following links: -- [ReturnType](https://www.typescriptlang.org/docs/handbook/utility-types.html#returntypetype) \ No newline at end of file +- [ReturnType](https://www.typescriptlang.org/docs/handbook/utility-types.html#returntypetype) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/110-instance-type.md b/src/data/roadmaps/typescript/content/111-utility-types/110-instance-type.md index 838a4e5ec..82e3ba0e6 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/110-instance-type.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/110-instance-type.md @@ -8,22 +8,22 @@ class C { y = 0; } -type T0 = InstanceType; +type T0 = InstanceType; // type T0 = C -type T1 = InstanceType; +type T1 = InstanceType; // type T1 = any -type T2 = InstanceType; +type T2 = InstanceType; // type T2 = never type T3 = InstanceType; // ^ Type 'string' does not satisfy the constraint 'abstract new (...args: any) => any'. - + type T4 = InstanceType; // ^ Type 'Function' does not satisfy the constraint 'abstract new (...args: any) => any'. ``` Learn more from the following links: -- [InstanceType](https://www.typescriptlang.org/docs/handbook/utility-types.html#instancetypetype) \ No newline at end of file +- [InstanceType](https://www.typescriptlang.org/docs/handbook/utility-types.html#instancetypetype) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/111-awaited.md b/src/data/roadmaps/typescript/content/111-utility-types/111-awaited.md index 1db6fedc8..c2448c938 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/111-awaited.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/111-awaited.md @@ -6,13 +6,13 @@ This type is meant to model operations like await in async functions, or the `.t type A = Awaited>; // type A = string -type B = Awaited>>; +type B = Awaited>>; // type B = number -type C = Awaited>; +type C = Awaited>; // type C = number | boolean ``` Learn more from the following links: -- [Awaited](https://www.typescriptlang.org/docs/handbook/utility-types.html#awaitedtype) \ No newline at end of file +- [Awaited](https://www.typescriptlang.org/docs/handbook/utility-types.html#awaitedtype) diff --git a/src/data/roadmaps/typescript/content/111-utility-types/index.md b/src/data/roadmaps/typescript/content/111-utility-types/index.md index aeeca57c2..1e6a4964e 100644 --- a/src/data/roadmaps/typescript/content/111-utility-types/index.md +++ b/src/data/roadmaps/typescript/content/111-utility-types/index.md @@ -11,4 +11,4 @@ TypeScript provides several utility types that can be used to manipulate and tra Learn more from the following links: -- [TypeScript - Utility Types](https://www.typescriptlang.org/docs/handbook/utility-types.html) \ No newline at end of file +- [TypeScript - Utility Types](https://www.typescriptlang.org/docs/handbook/utility-types.html) diff --git a/src/data/roadmaps/typescript/content/112-advanced-types/100-mapped-types.md b/src/data/roadmaps/typescript/content/112-advanced-types/100-mapped-types.md index 9efdd18b7..26facdd9b 100644 --- a/src/data/roadmaps/typescript/content/112-advanced-types/100-mapped-types.md +++ b/src/data/roadmaps/typescript/content/112-advanced-types/100-mapped-types.md @@ -17,4 +17,4 @@ In this example, the `Readonly` mapped type takes an object type `T` and creates Learn more from the following links: -- [Mapped Types](https://www.typescriptlang.org/docs/handbook/2/mapped-types.html#handbook-content) \ No newline at end of file +- [Mapped Types](https://www.typescriptlang.org/docs/handbook/2/mapped-types.html#handbook-content) diff --git a/src/data/roadmaps/typescript/content/112-advanced-types/101-conditional-types.md b/src/data/roadmaps/typescript/content/112-advanced-types/101-conditional-types.md index 29b6d6d88..95861d016 100644 --- a/src/data/roadmaps/typescript/content/112-advanced-types/101-conditional-types.md +++ b/src/data/roadmaps/typescript/content/112-advanced-types/101-conditional-types.md @@ -7,8 +7,8 @@ For example, the following is a conditional type that takes two types and return ```typescript type Extends = T extends U ? T : U; -type A = Extends; // type A is 'string' -type B = Extends; // type B is 'string' +type A = Extends; // type A is 'string' +type B = Extends; // type B is 'string' ``` In this example, the Extends conditional type takes two types T and U and returns the type of the first argument `T` if it extends the second argument `U`, and the type of the second argument `U` otherwise. The T extends `U` syntax is used to test whether `T extends U`, and the `? T : U` syntax is used to select the type `T` if the test passes and the type `U` otherwise. @@ -16,4 +16,4 @@ In this example, the Extends conditional type takes two types T and U and return Learn more from the following links: - [Conditional Types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#handbook-content) -- [Conditional Types - Advanced TypeScript](https://www.youtube.com/watch?v=QFWrbNehKk0) \ No newline at end of file +- [Conditional Types - Advanced TypeScript](https://www.youtube.com/watch?v=QFWrbNehKk0) diff --git a/src/data/roadmaps/typescript/content/112-advanced-types/102-literal-types.md b/src/data/roadmaps/typescript/content/112-advanced-types/102-literal-types.md index 82b9db0e3..84672677d 100644 --- a/src/data/roadmaps/typescript/content/112-advanced-types/102-literal-types.md +++ b/src/data/roadmaps/typescript/content/112-advanced-types/102-literal-types.md @@ -7,12 +7,12 @@ For example, the following is a literal type that represents a value of 42: ```typescript type Age = 42; -let age: Age = 42; // ok -let age: Age = 43; // error +let age: Age = 42; // ok +let age: Age = 43; // error ``` In this example, the `Age` literal type is created by using the number `42` as a type. This type can then be used to enforce that a value must be of type `number` and have the value `42`. Learn more from the following links: -- [Literal Types](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) \ No newline at end of file +- [Literal Types](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) diff --git a/src/data/roadmaps/typescript/content/112-advanced-types/103-template-literal-types.md b/src/data/roadmaps/typescript/content/112-advanced-types/103-template-literal-types.md index a02e06ff4..ba380eac1 100644 --- a/src/data/roadmaps/typescript/content/112-advanced-types/103-template-literal-types.md +++ b/src/data/roadmaps/typescript/content/112-advanced-types/103-template-literal-types.md @@ -15,4 +15,4 @@ In this example, the `Name` template literal type is created by concatenating th Learn more from the following links: -- [Template Literal Types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html#handbook-content) \ No newline at end of file +- [Template Literal Types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html#handbook-content) diff --git a/src/data/roadmaps/typescript/content/112-advanced-types/104-recursive-types.md b/src/data/roadmaps/typescript/content/112-advanced-types/104-recursive-types.md index e33d12268..e97aca9f0 100644 --- a/src/data/roadmaps/typescript/content/112-advanced-types/104-recursive-types.md +++ b/src/data/roadmaps/typescript/content/112-advanced-types/104-recursive-types.md @@ -7,7 +7,10 @@ For example, the following is a recursive type that represents a linked list: ```typescript type LinkedList = T & { next: LinkedList }; -let list: LinkedList = { value: 1, next: { value: 2, next: { value: 3, next: null } } }; +let list: LinkedList = { + value: 1, + next: { value: 2, next: { value: 3, next: null } }, +}; ``` -In this example, the `LinkedList` type is defined as a type that extends `T` and contains a property `next` of the same type `LinkedList`. This allows us to create a linked list where each node contains a value of type `T` and a reference to the next node in the list. \ No newline at end of file +In this example, the `LinkedList` type is defined as a type that extends `T` and contains a property `next` of the same type `LinkedList`. This allows us to create a linked list where each node contains a value of type `T` and a reference to the next node in the list. diff --git a/src/data/roadmaps/typescript/content/112-advanced-types/index.md b/src/data/roadmaps/typescript/content/112-advanced-types/index.md index b82461f8e..d5f51f072 100644 --- a/src/data/roadmaps/typescript/content/112-advanced-types/index.md +++ b/src/data/roadmaps/typescript/content/112-advanced-types/index.md @@ -15,4 +15,4 @@ These advanced types allow for more complex and expressive type systems, and ena Learn more from the following links: - [Advanced Topics](https://www.typescriptlang.org/docs/handbook/type-compatibility.html#advanced-topics) -- [Tutorial of Typescript - Advanced Types](https://www.youtube.com/playlist?list=PLw5h0DiJ-9PBIgIyd2ZA1CVnJf0BLFJg2) \ No newline at end of file +- [Tutorial of Typescript - Advanced Types](https://www.youtube.com/playlist?list=PLw5h0DiJ-9PBIgIyd2ZA1CVnJf0BLFJg2) diff --git a/src/data/roadmaps/typescript/content/113-modules/100-namespaces.md b/src/data/roadmaps/typescript/content/113-modules/100-namespaces.md index f6e372722..545fd9218 100644 --- a/src/data/roadmaps/typescript/content/113-modules/100-namespaces.md +++ b/src/data/roadmaps/typescript/content/113-modules/100-namespaces.md @@ -7,9 +7,9 @@ Here's an example of how you can use namespaces in TypeScript: ```typescript // myNamespace.ts namespace MyNamespace { - export function doSomething() { - console.log("Doing something..."); - } + export function doSomething() { + console.log('Doing something...'); + } } // main.ts @@ -23,4 +23,4 @@ Learn more from the following resources: - [Overview of Namespaces](https://www.typescriptlang.org/docs/handbook/namespaces.html) - [Namespaces and Modules](https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html) -- [TypeScript - Using Namespaces](https://typescriptlang.org/docs/handbook/namespaces-and-modules.html#using-namespaces) \ No newline at end of file +- [TypeScript - Using Namespaces](https://typescriptlang.org/docs/handbook/namespaces-and-modules.html#using-namespaces) diff --git a/src/data/roadmaps/typescript/content/113-modules/101-ambient-modules.md b/src/data/roadmaps/typescript/content/113-modules/101-ambient-modules.md index fff7a07d0..3eae72243 100644 --- a/src/data/roadmaps/typescript/content/113-modules/101-ambient-modules.md +++ b/src/data/roadmaps/typescript/content/113-modules/101-ambient-modules.md @@ -6,12 +6,12 @@ Here's an example of how you can use ambient modules in TypeScript: ```typescript // myModule.d.ts -declare module "my-module" { - export function doSomething(): void; +declare module 'my-module' { + export function doSomething(): void; } // main.ts -import * as myModule from "my-module"; +import * as myModule from 'my-module'; myModule.doSomething(); ``` @@ -19,4 +19,4 @@ In this example, we declare an ambient module "my-module" in the `myModule.d.ts` Learn more from the following links: -- [Ambient Modules](https://www.typescriptlang.org/docs/handbook/modules.html#ambient-modules) \ No newline at end of file +- [Ambient Modules](https://www.typescriptlang.org/docs/handbook/modules.html#ambient-modules) diff --git a/src/data/roadmaps/typescript/content/113-modules/102-external-modules.md b/src/data/roadmaps/typescript/content/113-modules/102-external-modules.md index 5e4c8efca..6da1773ce 100644 --- a/src/data/roadmaps/typescript/content/113-modules/102-external-modules.md +++ b/src/data/roadmaps/typescript/content/113-modules/102-external-modules.md @@ -7,11 +7,11 @@ Here's an example of how you can use external modules in TypeScript: ```typescript // myModule.ts export function doSomething() { - console.log("Doing something..."); + console.log('Doing something...'); } // main.ts -import { doSomething } from "./myModule"; +import { doSomething } from './myModule'; doSomething(); // Output: "Doing something..." ``` @@ -20,4 +20,4 @@ In this example, we use the "export" keyword in the "myModule.ts" file to export Learn more from the following links: - [External Module](https://www.javatpoint.com/typescript-module) -- [TypeScript - External Module](https://learncodeweb.com/typescript/modules-in-typescript-explain-with-an-example/) \ No newline at end of file +- [TypeScript - External Module](https://learncodeweb.com/typescript/modules-in-typescript-explain-with-an-example/) diff --git a/src/data/roadmaps/typescript/content/113-modules/103-namespace-augmentation.md b/src/data/roadmaps/typescript/content/113-modules/103-namespace-augmentation.md index 2e3b36b5c..7b7c8a401 100644 --- a/src/data/roadmaps/typescript/content/113-modules/103-namespace-augmentation.md +++ b/src/data/roadmaps/typescript/content/113-modules/103-namespace-augmentation.md @@ -17,7 +17,7 @@ declare namespace MyModule { namespace MyModule { export class MyModule { public newFunction() { - console.log("I am a new function in MyModule!"); + console.log('I am a new function in MyModule!'); } } } @@ -30,4 +30,4 @@ In this example, we use namespace augmentation to add a new function "newFunctio Learn more from the following links: -- [Module Augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation) \ No newline at end of file +- [Module Augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation) diff --git a/src/data/roadmaps/typescript/content/113-modules/104-global-augmentation.md b/src/data/roadmaps/typescript/content/113-modules/104-global-augmentation.md index 25026c3f3..315d7af0f 100644 --- a/src/data/roadmaps/typescript/content/113-modules/104-global-augmentation.md +++ b/src/data/roadmaps/typescript/content/113-modules/104-global-augmentation.md @@ -14,14 +14,14 @@ declare namespace NodeJS { // main.ts global.myGlobalFunction = function () { - console.log("I am a global function!"); + console.log('I am a global function!'); }; myGlobalFunction(); // Output: "I am a global function!" ``` - + In this example, we declare a new namespace "NodeJS" and add an interface "Global" to it. Within the "Global" interface, we declare a new function "myGlobalFunction". Learn more from the following links: -- [Global augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation) \ No newline at end of file +- [Global augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation) diff --git a/src/data/roadmaps/typescript/content/113-modules/index.md b/src/data/roadmaps/typescript/content/113-modules/index.md index 288f398c8..bc5f1743a 100644 --- a/src/data/roadmaps/typescript/content/113-modules/index.md +++ b/src/data/roadmaps/typescript/content/113-modules/index.md @@ -1,6 +1,6 @@ # Modules -In TypeScript, modules are used to organize and reuse code. There are two types of modules in TypeScript: +In TypeScript, modules are used to organize and reuse code. There are two types of modules in TypeScript: - Internal - External @@ -14,9 +14,9 @@ Here is an example of how you can use internal modules in TypeScript: ```typescript // myModule.ts namespace MyModule { - export function doSomething() { - console.log("Doing something..."); - } + export function doSomething() { + console.log('Doing something...'); + } } // main.ts @@ -27,4 +27,4 @@ MyModule.doSomething(); // Output: "Doing something..." Learn more from the following links: - [Modules](https://www.typescriptlang.org/docs/handbook/modules.html#handbook-content) -- [TypeScript - Modules](https://www.youtube.com/watch?v=EpOPR03z4Vw) \ No newline at end of file +- [TypeScript - Modules](https://www.youtube.com/watch?v=EpOPR03z4Vw) diff --git a/src/data/roadmaps/typescript/content/114-ecosystem/102-useful-packages.md b/src/data/roadmaps/typescript/content/114-ecosystem/102-useful-packages.md index f50c02684..65213384a 100644 --- a/src/data/roadmaps/typescript/content/114-ecosystem/102-useful-packages.md +++ b/src/data/roadmaps/typescript/content/114-ecosystem/102-useful-packages.md @@ -8,4 +8,4 @@ TypeScript has a large ecosystem of packages that can be used to extend the lang - [ts-jest](https://github.com/kulshekhar/ts-jest): A Jest transformer with source map support that lets you use Jest to test projects written in TypeScript. - [typesync](https://github.com/jeffijoe/typesync): Install missing TypeScript typings for dependencies in your package.json. - [tsd](https://github.com/SamVerschueren/tsd) - TypeScript Definition Manager -- [type-fest](https://github.com/sindresorhus/type-fest) - A collection of essential TypeScript types \ No newline at end of file +- [type-fest](https://github.com/sindresorhus/type-fest) - A collection of essential TypeScript types diff --git a/src/data/roadmaps/typescript/content/114-ecosystem/103-build-tools.md b/src/data/roadmaps/typescript/content/114-ecosystem/103-build-tools.md index fb6265feb..3bb8d88c5 100644 --- a/src/data/roadmaps/typescript/content/114-ecosystem/103-build-tools.md +++ b/src/data/roadmaps/typescript/content/114-ecosystem/103-build-tools.md @@ -13,4 +13,4 @@ Visit the following resources to learn more: - [swc is a super-fast compiler written in Rust](https://swc.rs/) - [tsup is a zero-config TypeScript build tool](https://tsup.egoist.sh/) - [Rollup is a module bundler for JavaScript](https://rollupjs.org/guide/en/) -- [tsdx is a zero-config CLI for TypeScript package development](https://tsdx.io/) \ No newline at end of file +- [tsdx is a zero-config CLI for TypeScript package development](https://tsdx.io/) diff --git a/src/data/roadmaps/typescript/content/114-ecosystem/index.md b/src/data/roadmaps/typescript/content/114-ecosystem/index.md index 37af10642..8e851b3ce 100644 --- a/src/data/roadmaps/typescript/content/114-ecosystem/index.md +++ b/src/data/roadmaps/typescript/content/114-ecosystem/index.md @@ -1,3 +1,3 @@ # Ecosystem -Have a look at the linked nodes for different tools and frameworks that you can use to build your projects. \ No newline at end of file +Have a look at the linked nodes for different tools and frameworks that you can use to build your projects. diff --git a/src/data/roadmaps/typescript/typescript.md b/src/data/roadmaps/typescript/typescript.md index ddecf14cf..8408c67dc 100644 --- a/src/data/roadmaps/typescript/typescript.md +++ b/src/data/roadmaps/typescript/typescript.md @@ -1,51 +1,50 @@ --- -jsonUrl: "/jsons/roadmaps/typescript.json" -pdfUrl: "/pdfs/roadmaps/typescript.pdf" +jsonUrl: '/jsons/roadmaps/typescript.json' +pdfUrl: '/pdfs/roadmaps/typescript.pdf' order: 6 -briefTitle: "TypeScript" -briefDescription: "Everything you need to learn about TypeScript in 2023" -title: "TypeScript" -description: "Everything you need to learn about TypeScript in 2023" +briefTitle: 'TypeScript' +briefDescription: 'Everything you need to learn about TypeScript in 2023' +title: 'TypeScript' +description: 'Everything you need to learn about TypeScript in 2023' hasTopics: true isNew: true dimensions: width: 968 height: 1884.38 schema: - headline: "TypeScript Roadmap" - description: "Learn everything about TypeScript with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/typescript.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'TypeScript Roadmap' + description: 'Learn everything about TypeScript with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/typescript.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "TypeScript Roadmap: Learn to become a TypeScript developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for typescript development. Learn to become a modern TypeScript developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'TypeScript Roadmap: Learn to become a TypeScript developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for typescript development. Learn to become a modern TypeScript developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "typescript roadmap 2023" - - "typescript developer roadmap 2023" - - "guide to becoming a typescript developer" - - "guide to learning typescript" - - "typescript developer roadmap" - - "typescript roadmap" - - "become typescript developer" - - "typescript developer skills" - - "typescript skills test" - - "skills for typescript development" - - "learn typescript development" - - "what is typescript" - - "typescript quiz" - - "typescript interview questions" + - 'typescript roadmap 2023' + - 'typescript developer roadmap 2023' + - 'guide to becoming a typescript developer' + - 'guide to learning typescript' + - 'typescript developer roadmap' + - 'typescript roadmap' + - 'become typescript developer' + - 'typescript developer skills' + - 'typescript skills test' + - 'skills for typescript development' + - 'learn typescript development' + - 'what is typescript' + - 'typescript quiz' + - 'typescript interview questions' relatedRoadmaps: - - "frontend" - - "backend" - - "javascript" - - "nodejs" + - 'frontend' + - 'backend' + - 'javascript' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/100-bj-frogg-behavior-model.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/100-bj-frogg-behavior-model.md index 2bcb695b3..3792bf240 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/100-bj-frogg-behavior-model.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/100-bj-frogg-behavior-model.md @@ -8,4 +8,4 @@ B.J. Fogg, a renowned psychologist, and researcher at Stanford University, propo - **Triggers**: Triggers are the cues, notifications, or prompts that signal users to take an action. For an action to occur, triggers should be presented at the right time when the user has adequate motivation and ability. -UX designers should strive to find the balance between these three factors to facilitate the desired user behavior. By understanding your audience and their needs, implementing clear and concise triggers, and minimizing the effort required for action, the FBM can be an effective tool for designing user-centered products. \ No newline at end of file +UX designers should strive to find the balance between these three factors to facilitate the desired user behavior. By understanding your audience and their needs, implementing clear and concise triggers, and minimizing the effort required for action, the FBM can be an effective tool for designing user-centered products. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/101-stephen-wendell-create-action-funnel.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/101-stephen-wendell-create-action-funnel.md index b33cc8111..bea161fd0 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/101-stephen-wendell-create-action-funnel.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/101-stephen-wendell-create-action-funnel.md @@ -10,4 +10,4 @@ Stephen Wendell's Create Action Funnel is a UX design framework focused on conve - **Refine and Test the Experience:** Use wireframes and prototypes to test and iteratively refine the user experience. Employ user testing, A/B testing, and analytics to gather insight on user behavior, preferences, and engagement. Continuously use feedback to make improvements, ensuring that the design effectively leads visitors down the action funnel. -By implementing Stephen Wendell's `Create Action Funnel`, you can effectively guide users through an engaging journey that motivates them to become active customers, ultimately increasing conversion rates and overall satisfaction. \ No newline at end of file +By implementing Stephen Wendell's `Create Action Funnel`, you can effectively guide users through an engaging journey that motivates them to become active customers, ultimately increasing conversion rates and overall satisfaction. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/102-spectrum-of-thinking-interventions.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/102-spectrum-of-thinking-interventions.md index f63d95b62..23a4ae5c4 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/102-spectrum-of-thinking-interventions.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/102-spectrum-of-thinking-interventions.md @@ -1,12 +1,13 @@ # Spectrum of Thinking Interventions -The *Spectrum of Thinking Interventions* provides a structure to guide your UX design process, helping you identify the types and range of thinking interventions that the user may require. This spectrum encompasses four primary categories: guidance, explanation, exploration, and creation. +The _Spectrum of Thinking Interventions_ provides a structure to guide your UX design process, helping you identify the types and range of thinking interventions that the user may require. This spectrum encompasses four primary categories: guidance, explanation, exploration, and creation. ## Guidance Guidance-based interventions are designed to help users navigate through a digital product or service with minimal effort. They may be aimed at full-fledged beginners, casual users, or experts in their respective domains. Such interventions may include signposts, tooltips, and clearly articulated labels. -*Examples:* +_Examples:_ + - Visual cues (e.g., icons, colors) - Signposting (e.g., breadcrumbs) - In-context information (e.g., tool tips, hints) @@ -15,7 +16,8 @@ Guidance-based interventions are designed to help users navigate through a digit Explanation-based interventions provide users with detailed narratives, overviews, or background information that helps them make informed decisions. This may include tutorials, articles, videos, or any other mediums that help explain complex concepts or instructions. -*Examples:* +_Examples:_ + - Multimedia tutorials - Articles or blog posts - Infographics or diagrams @@ -24,7 +26,8 @@ Explanation-based interventions provide users with detailed narratives, overview Exploration-based interventions encourage users to understand and interact with the product by investigating, asking questions, or searching for solutions on their own. This can be done by providing interactive elements, multiple pathways, and opportunities for discovery. -*Examples:* +_Examples:_ + - Interactive simulations or models - Advanced search capabilities - Multiple UI paths for task completion @@ -33,9 +36,10 @@ Exploration-based interventions encourage users to understand and interact with Creation-based interventions engage users by offering them the tools and resources to co-create or customize their experience. This type of intervention often involves a more extensive level of input and involvement from the user as they become active participants in the design process. -*Examples:* +_Examples:_ + - Customizable user interfaces - Allowing users to create their content - Enabling users to manage their preferences, settings, and configurations -With this spectrum in mind, it is essential as a UX designer to analyze which types of thinking interventions are most relevant to your target users and design the most accessible and effective solutions. Always consider how these interventions will influence users' decision-making processes and their overall satisfaction with your digital product or service. \ No newline at end of file +With this spectrum in mind, it is essential as a UX designer to analyze which types of thinking interventions are most relevant to your target users and design the most accessible and effective solutions. Always consider how these interventions will influence users' decision-making processes and their overall satisfaction with your digital product or service. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/103-dual-process-theory.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/103-dual-process-theory.md index 5882d9296..f353ed6b4 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/103-dual-process-theory.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/103-dual-process-theory.md @@ -22,4 +22,4 @@ In order to create user experiences that cater to both System 1 and System 2 thi - **Accommodate different thinking styles**: Recognize that different users may approach tasks using different cognitive styles, and design experiences that cater to a range of preferences. - **Test and iterate**: Continuously test your designs with real users, and iterate based on their feedback to ensure that your designs are catering to both System 1 and System 2 thinking. -By understanding the Dual Process Theory and designing for both types of cognitive processing, UX designers can create user experiences that are both delightful and efficient, ultimately leading to higher user satisfaction and engagement. \ No newline at end of file +By understanding the Dual Process Theory and designing for both types of cognitive processing, UX designers can create user experiences that are both delightful and efficient, ultimately leading to higher user satisfaction and engagement. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/index.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/index.md index c3e3997cf..4942252b3 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/index.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/frameworks/index.md @@ -1 +1 @@ -# Frameworks \ No newline at end of file +# Frameworks diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/index.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/index.md index 6ebab728b..a82404f6a 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/index.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/index.md @@ -1,6 +1,6 @@ # Understanding Human Decision Making -Human decision making is the cognitive process through which individuals analyze information, evaluate alternatives, and select a course of action based on their preferences, goals, and desires. It plays a vital role in the field of UX design, as designers must understand how users make decisions in order to create intuitive and efficient interfaces. +Human decision making is the cognitive process through which individuals analyze information, evaluate alternatives, and select a course of action based on their preferences, goals, and desires. It plays a vital role in the field of UX design, as designers must understand how users make decisions in order to create intuitive and efficient interfaces. ## Factors Influencing Decision Making @@ -25,4 +25,4 @@ To enhance user decision-making experience, consider the following principles: - **Feedback**: Instant feedback can help users understand the results of their decisions and guide them towards desired outcomes. This can be achieved through visual cues, messages, and animations. - **Defaults**: Use smart defaults to help users make decisions in a context-appropriate manner, which could range from pre-filled forms to suggested options. -Understanding human decision making and incorporating these principles into UX design will enable designers to create more intuitive, enjoyable, and efficient user experiences. \ No newline at end of file +Understanding human decision making and incorporating these principles into UX design will enable designers to create more intuitive, enjoyable, and efficient user experiences. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/100-nudge-theory.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/100-nudge-theory.md index 513a0e6d0..2aba405c0 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/100-nudge-theory.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/100-nudge-theory.md @@ -5,11 +5,8 @@ In the context of UX design, nudge theory can be applied in various ways to influence user behavior and drive desired outcomes. This might include: - **Choice Architecture**: Designing the layout and ordering of choices in a way that influences user decisions. For example, placing more desirable options at the top of a list or making them more visually prominent. - - **Defaults**: Setting default options that encourage users to make better decisions. For example, pre-selecting a more environmentally-friendly shipping option or having a privacy setting enabled by default. - - **Social proof**: Showing how others have made similar choices or have had positive experiences. For example, presenting product ratings and reviews, or indicating that a large number of users have taken a particular action such as signing up for a newsletter. - - **Timely interventions**: Providing guidance or prompts at the right moment in the user's journey. For example, offering help when a user encounters a complex task or reminding them of the benefits of completing a process when their motivation may be wavering. -When applying nudge theory in UX design, it's crucial to maintain a balance between encouraging positive behaviors and respecting user autonomy. Designers should aim to empower users with meaningful choices and useful information, rather than manipulating or deceiving them. \ No newline at end of file +When applying nudge theory in UX design, it's crucial to maintain a balance between encouraging positive behaviors and respecting user autonomy. Designers should aim to empower users with meaningful choices and useful information, rather than manipulating or deceiving them. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/101-persuasive-technology.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/101-persuasive-technology.md index 73db0d197..2643b0ded 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/101-persuasive-technology.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/101-persuasive-technology.md @@ -1,17 +1,17 @@ # Persuasive Technology -Persuasive technology is an area of UX design that focuses on using technology to influence human behavior and encourage users to take specific actions. It combines the principles of psychology and design to create experiences that impact user behavior in a desired way. The goal of persuasive technology is to subtly persuade or encourage users to adopt specific habits or behaviors, often with the intent of improving their overall experience or achieving a particular outcome. +Persuasive technology is an area of UX design that focuses on using technology to influence human behavior and encourage users to take specific actions. It combines the principles of psychology and design to create experiences that impact user behavior in a desired way. The goal of persuasive technology is to subtly persuade or encourage users to adopt specific habits or behaviors, often with the intent of improving their overall experience or achieving a particular outcome. Some common examples of persuasive technology include: -* **Reinforcement**: Providing users with positive feedback or rewards for completing specific actions (e.g., badges or points in a gamified interface). - -* **Social influence**: Leveraging social connections and norms to encourage actions or decisions, such as displaying the number of friends who have also enjoyed a product on a shopping site. - -* **Scarcity**: Using the concept of scarcity (limited availability, time-limited offers) to instill a sense of urgency in users and encourage them to take action before they miss out. - -* **Personalization**: Tailoring content or experiences to the individual user based on their preferences, behaviors, or demographic information, which makes the experience more relevant and engaging. +- **Reinforcement**: Providing users with positive feedback or rewards for completing specific actions (e.g., badges or points in a gamified interface). -* **Commitment and consistency**: Encouraging users to make small commitments with the intent to build towards larger commitments over time, often through a progression of small tasks or milestones. +- **Social influence**: Leveraging social connections and norms to encourage actions or decisions, such as displaying the number of friends who have also enjoyed a product on a shopping site. -Incorporating persuasive technology into UX design can lead to more engaging and effective user experiences. However, it's crucial to use these techniques responsibly and ethically, ensuring that the end goal aligns with the best interests of users and does not exploit or manipulate them in any negative way. \ No newline at end of file +- **Scarcity**: Using the concept of scarcity (limited availability, time-limited offers) to instill a sense of urgency in users and encourage them to take action before they miss out. + +- **Personalization**: Tailoring content or experiences to the individual user based on their preferences, behaviors, or demographic information, which makes the experience more relevant and engaging. + +- **Commitment and consistency**: Encouraging users to make small commitments with the intent to build towards larger commitments over time, often through a progression of small tasks or milestones. + +Incorporating persuasive technology into UX design can lead to more engaging and effective user experiences. However, it's crucial to use these techniques responsibly and ethically, ensuring that the end goal aligns with the best interests of users and does not exploit or manipulate them in any negative way. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/102-behavior-design.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/102-behavior-design.md index 390b12ae4..ef5a461be 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/102-behavior-design.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/102-behavior-design.md @@ -17,4 +17,4 @@ To create effective behavior designs, UX designers should: - Design solutions that address both the motivation and ability aspects of behavior change, as well as the appropriate triggers to prompt action. - Continuously test and iterate on the design to better understand user behavior and optimize engagement. -By focusing on behavior design, UX designers can create more engaging and user-friendly experiences that ultimately drive user satisfaction and increase the chances of achieving their desired goals. \ No newline at end of file +By focusing on behavior design, UX designers can create more engaging and user-friendly experiences that ultimately drive user satisfaction and increase the chances of achieving their desired goals. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/103-behavioral-science.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/103-behavioral-science.md index dd440e67d..35df4dfb0 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/103-behavioral-science.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/103-behavioral-science.md @@ -16,4 +16,4 @@ Some key principles of behavioral science that UX designers should consider incl - **Habit formation:** Creating a habit-forming experience can lead to increased user retention and engagement. Designers should consider features and elements that reinforce routine usage or solve recurring pain-points. -By integrating behavioral science principles into their design process, UX designers can better understand and anticipate users' needs, ultimately creating more enjoyable, effective, and engaging experiences. \ No newline at end of file +By integrating behavioral science principles into their design process, UX designers can better understand and anticipate users' needs, ultimately creating more enjoyable, effective, and engaging experiences. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/104-behavioral-economics.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/104-behavioral-economics.md index 9391dea58..fb2a6f62c 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/104-behavioral-economics.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/104-behavioral-economics.md @@ -14,4 +14,4 @@ The key concepts of Behavioral Economics include: - Nudging: Subtle changes to choice architecture can influence people's decisions without restricting their freedom of choice, through methods like default options, framing, or social proof. -Understanding and applying behavioral economic principles can help UX designers create interfaces and experiences that account for these biases and help users make better choices. By designing to minimize cognitive load, supporting decision-making, and presenting options effectively, UX designers can enhance user satisfaction and encourage desired actions. \ No newline at end of file +Understanding and applying behavioral economic principles can help UX designers create interfaces and experiences that account for these biases and help users make better choices. By designing to minimize cognitive load, supporting decision-making, and presenting options effectively, UX designers can enhance user satisfaction and encourage desired actions. diff --git a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/index.md b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/index.md index 8665dd076..bd6dff7aa 100644 --- a/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/index.md +++ b/src/data/roadmaps/ux-design/content/100-human-decision-making/ux-buzzwords/index.md @@ -1 +1 @@ -# UX Buzzwords \ No newline at end of file +# UX Buzzwords diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/100-help-user-think-about-their-action.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/100-help-user-think-about-their-action.md index 6bc15f59a..2e3d7e535 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/100-help-user-think-about-their-action.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/100-help-user-think-about-their-action.md @@ -14,4 +14,4 @@ To successfully change user behavior, it's crucial to encourage users to think a - **Make it personal**: Connect the outcomes of the user's actions to their personal goals or aspirations. Users are more likely to think about their actions if they perceive the effects in the context of their own life. -By incorporating these techniques within your UX design, you will encourage users to actively think about their actions, leading to more mindful engagement with your product, informed decision-making, and improved user satisfaction. \ No newline at end of file +By incorporating these techniques within your UX design, you will encourage users to actively think about their actions, leading to more mindful engagement with your product, informed decision-making, and improved user satisfaction. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/101-educate-and-encourage-user.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/101-educate-and-encourage-user.md index 00e9fe416..514516fdb 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/101-educate-and-encourage-user.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/101-educate-and-encourage-user.md @@ -4,22 +4,22 @@ One of the primary goals of UX design is to guide users through the intended flo - **Guidance:** Provide clear and concise instructions, explanations, and help text to ensure users understand how to use your application. Using onboarding tutorials, tooltips, and contextual help can greatly improve the user experience and aid in changing their behavior if required. - - Example: Show a brief tutorial during a user's first interaction with your app, highlighting key features they may not be aware of. + - Example: Show a brief tutorial during a user's first interaction with your app, highlighting key features they may not be aware of. - **Feedback:** Give users real-time feedback as they interact with your application. This can range from basic notifications to more detailed information tailored to their specific behaviors. - - Example: When a user creates a password, show an interactive strength meter indicating whether their chosen password is strong or weak. This may encourage the user to choose a stronger and more secure password. + - Example: When a user creates a password, show an interactive strength meter indicating whether their chosen password is strong or weak. This may encourage the user to choose a stronger and more secure password. - **Positive reinforcement:** Encourage users to continue using your application by rewarding them for achieving milestones or completing tasks. This can be achieved through gamification elements like badges, points, and progress indicators. - - Example: Award a badge to users who complete their profile or connect their social media accounts. This can encourage users to fully engage with your application and form a habit of using it regularly. + - Example: Award a badge to users who complete their profile or connect their social media accounts. This can encourage users to fully engage with your application and form a habit of using it regularly. - **Social influence:** Utilize social proof to promote a change in user behavior. Showcasing the actions or opinions of other users can create a sense of community and drive users to follow suit. - - Example: Display the number of users who have completed a task or upvoted a piece of content, which may motivate other users to follow the apparent trend. + - Example: Display the number of users who have completed a task or upvoted a piece of content, which may motivate other users to follow the apparent trend. - **Personalization:** Cater to users by presenting them with tailored content based on their preferences, usage patterns, and prior interactions. Personalization can make users feel more invested in the application, which may encourage them to consistently use and engage with it. - - Example: Offer users personalized recommendations for articles or products based on their browsing history, which can enhance their experience and increase the likelihood of repeat visits. + - Example: Offer users personalized recommendations for articles or products based on their browsing history, which can enhance their experience and increase the likelihood of repeat visits. -By effectively educating and encouraging your users, you can create a user experience that promotes desired behaviors, fosters positive habits, and ultimately leads to a more successful and impactful application. Remember to always put your user at the center of your design process to ensure you're addressing their needs and desires in the most effective way possible. \ No newline at end of file +By effectively educating and encouraging your users, you can create a user experience that promotes desired behaviors, fosters positive habits, and ultimately leads to a more successful and impactful application. Remember to always put your user at the center of your design process to ensure you're addressing their needs and desires in the most effective way possible. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/index.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/index.md index b221e2489..ed4abb17b 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/index.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/100-changing-user-behavior/index.md @@ -20,4 +20,4 @@ There are several key principles and strategies for changing user behavior in UX - **Iterate and evaluate**: Continuously test and refine your design to improve the effectiveness of your behavior change strategies. Evaluate the success of your interventions by measuring changes in user behavior and adjusting your approach accordingly. -By applying these strategies in your UX design, you can change user behavior and drive positive outcomes for your users and your product. \ No newline at end of file +By applying these strategies in your UX design, you can change user behavior and drive positive outcomes for your users and your product. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/100-defaulting.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/100-defaulting.md index 63b037152..5aef88d9f 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/100-defaulting.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/100-defaulting.md @@ -12,10 +12,10 @@ Benefits of defaulting include: When implementing defaulting, keep the following guidelines in mind: -- **Consider user needs and preferences**: Defaults should align with the most common or preferred user actions, based on user research and understanding of your audience. +- **Consider user needs and preferences**: Defaults should align with the most common or preferred user actions, based on user research and understanding of your audience. - **Be transparent**: Make it clear to users that you have pre-selected some choices on their behalf, and offer ways to change these selections if needed. -- **Regularly review and adjust**: As your user base or product evolves, it's essential to review and adjust your default settings to ensure they remain relevant and helpful to users. +- **Regularly review and adjust**: As your user base or product evolves, it's essential to review and adjust your default settings to ensure they remain relevant and helpful to users. -In summary, defaulting is a powerful UX design technique that, when used thoughtfully, can streamline user interactions and lead to better usability and user satisfaction. \ No newline at end of file +In summary, defaulting is a powerful UX design technique that, when used thoughtfully, can streamline user interactions and lead to better usability and user satisfaction. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/101-make-it-incidental.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/101-make-it-incidental.md index c0eb291ad..ec8c6c6a6 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/101-make-it-incidental.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/101-make-it-incidental.md @@ -1,6 +1,6 @@ # Make it Incidental -In UX design, making something incidental refers to subtly introducing a feature or element while the user is engaged in a different, primary task. The intention behind this approach is to avoid interrupting the user's flow, prevent them from feeling overwhelmed, and make the discovery of that feature feel more natural and serendipitous. +In UX design, making something incidental refers to subtly introducing a feature or element while the user is engaged in a different, primary task. The intention behind this approach is to avoid interrupting the user's flow, prevent them from feeling overwhelmed, and make the discovery of that feature feel more natural and serendipitous. ## Benefits of Making It Incidental @@ -14,4 +14,4 @@ In UX design, making something incidental refers to subtly introducing a feature - **Guided interactions:** Introduce features while users are actively engaged in tasks, where the discovery is an organic part of the interaction. - **Contextual hints:** Provide subtle cues or suggestions for users that signal the presence of additional features, which can be used when needed. -Remember, the key to making something incidental is to strategically place it within the user journey, so that it feels like a natural and seamless discovery. This approach can help create delightful and efficient user experiences. \ No newline at end of file +Remember, the key to making something incidental is to strategically place it within the user journey, so that it feels like a natural and seamless discovery. This approach can help create delightful and efficient user experiences. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/102-automate-act-of-repition.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/102-automate-act-of-repition.md index b3bf50fbc..5249902cf 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/102-automate-act-of-repition.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/102-automate-act-of-repition.md @@ -20,4 +20,4 @@ As a UX designer, consider the following strategies to automate repetitive tasks - **Batch actions**: Allow users to perform actions, like selecting or deleting items, in groups rather than individually. This can significantly reduce the number of clicks and time required to complete the task. - **Keyboard shortcuts**: Provide keyboard shortcuts for common actions, enabling users to perform tasks without using a mouse or touch interactions. This can be particularly helpful for power users or users with accessibility needs. -By automating acts of repetition in your design, you can enhance the user experience, reduce frustration and improve overall satisfaction. Be mindful of your users' needs, analyze the repetitive tasks they may encounter, and implement effective automation techniques to create a seamless, efficient, and enjoyable experience. \ No newline at end of file +By automating acts of repetition in your design, you can enhance the user experience, reduce frustration and improve overall satisfaction. Be mindful of your users' needs, analyze the repetitive tasks they may encounter, and implement effective automation techniques to create a seamless, efficient, and enjoyable experience. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/index.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/index.md index 1e11abc43..8739cb07d 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/index.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/101-cheating/index.md @@ -17,4 +17,4 @@ When designing cheat mechanisms in your UX, consider the following best practice - **Documentation and communication**: If permitting cheating is an intentional design choice, communicate this to your users explicitly, so they don't feel guilty about exploiting loopholes. Making users aware of cheat options can help you foster an environment where users knowingly bend the rules, thus adding an interesting dynamic to the overall user experience. - **Monitoring**: Constantly monitor how users are interacting with your design and how prevalent cheating behavior is. If cheating becomes too widespread or harmful, consider tweaking the system and addressing any unintended consequences. -By carefully designing and implementing cheating strategies, you can effectively enhance the user experience, while still maintaining the integrity of your system and the motivation of your users. Remember, the goal is to make the experience enjoyable and rewarding, not to provide users with a way to cheat their way to success. \ No newline at end of file +By carefully designing and implementing cheating strategies, you can effectively enhance the user experience, while still maintaining the integrity of your system and the motivation of your users. Remember, the goal is to make the experience enjoyable and rewarding, not to provide users with a way to cheat their way to success. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/100-help-user-avoiding-the-cue.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/100-help-user-avoiding-the-cue.md index c2cc3f07f..2350e1134 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/100-help-user-avoiding-the-cue.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/100-help-user-avoiding-the-cue.md @@ -14,4 +14,4 @@ Here are some strategies to help users avoid the cue: - **Monitor user behavior**: Continuously assess user behavior and feedback to ensure that the unwanted cues are no longer causing problems. Be prepared to make further adjustments if necessary, and consider implementing A/B testing to optimize your solution. -By helping users avoid unwanted cues, you'll create a more seamless user experience, leading to increased user satisfaction and a more effective product overall. \ No newline at end of file +By helping users avoid unwanted cues, you'll create a more seamless user experience, leading to increased user satisfaction and a more effective product overall. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/101-replace-the-routine.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/101-replace-the-routine.md index 816dfd86d..bd93236e3 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/101-replace-the-routine.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/101-replace-the-routine.md @@ -16,4 +16,4 @@ Consider the following points when replacing the routine: - **Iterate and refine**: UX design is an ongoing process. Continuously refine and optimize the new routine based on the user feedback and changing user behavior trends. -By adopting the "replace the routine" approach in your UX design, you can provide your users with a better experience that aligns with their existing behaviors, while also introducing new efficiencies and possibilities. Doing so increases user satisfaction, promotes adoption, and ultimately leads to happier, loyal users. \ No newline at end of file +By adopting the "replace the routine" approach in your UX design, you can provide your users with a better experience that aligns with their existing behaviors, while also introducing new efficiencies and possibilities. Doing so increases user satisfaction, promotes adoption, and ultimately leads to happier, loyal users. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/102-use-consciousness-to-interfere.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/102-use-consciousness-to-interfere.md index fb52b2e2f..32f7baae3 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/102-use-consciousness-to-interfere.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/102-use-consciousness-to-interfere.md @@ -14,4 +14,4 @@ Here's a brief summary of how to use consciousness to interfere in UX design: - **Measure Impact**: Continuously measure the impact of your design changes by monitoring user behavior and key performance indicators (KPIs). This will help you understand the effectiveness of your interventions and inform future design decisions. -By using consciousness to interfere in the UX design process, you gain a deeper understanding of user behavior, enabling you to create more intuitive, engaging, and effective user experiences. \ No newline at end of file +By using consciousness to interfere in the UX design process, you gain a deeper understanding of user behavior, enabling you to create more intuitive, engaging, and effective user experiences. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/103-mindfulness-to-avoid-acting-on-the-cue.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/103-mindfulness-to-avoid-acting-on-the-cue.md index c568e1f6d..466e80665 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/103-mindfulness-to-avoid-acting-on-the-cue.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/103-mindfulness-to-avoid-acting-on-the-cue.md @@ -8,13 +8,13 @@ Mindfulness is a powerful technique that can help designers and users alike to a - **Observe without judgment:** Take note of any compulsions or urges that arise while interacting with a product, but don't judge them as good or bad. Simply acknowledging their existence can help you understand your responses and make better choices in the future. -- **Pause and reflect:** When you notice a cue, take a moment to pause and evaluate your options. Consider whether the action you're about to take is aligned with your goals or if it's something you'd like to change. +- **Pause and reflect:** When you notice a cue, take a moment to pause and evaluate your options. Consider whether the action you're about to take is aligned with your goals or if it's something you'd like to change. - **Respond with intention:** Once you've reflected on your options, make a conscious decision about your next action. This may mean going through with the original behavior, choosing a more desirable alternative, or refraining from acting entirely. ## Incorporating mindfulness techniques into your designs -In addition to practicing mindfulness personally, consider how you can create designs that encourage users to be more mindful and avoid acting on unwanted cues. +In addition to practicing mindfulness personally, consider how you can create designs that encourage users to be more mindful and avoid acting on unwanted cues. - **Design for minimal distractions:** Aim to reduce visual clutter, unnecessary alerts, and anything that might pull users' attention away from the present moment. @@ -22,4 +22,4 @@ In addition to practicing mindfulness personally, consider how you can create de - **Support user reflection:** Consider incorporating features that prompt users to reflect on their actions, such as goal-setting or progress tracking tools, which can encourage more mindful decision-making. -By fostering mindfulness in both your design process and your end product, you can create UX experiences that help users better navigate their interactions with technology, avoiding unwanted behaviors and promoting healthier habits. \ No newline at end of file +By fostering mindfulness in both your design process and your end product, you can create UX experiences that help users better navigate their interactions with technology, avoiding unwanted behaviors and promoting healthier habits. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/104-crowd-out-old-habit-with-new-behavior.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/104-crowd-out-old-habit-with-new-behavior.md index 14cf16883..9c9cf9361 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/104-crowd-out-old-habit-with-new-behavior.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/104-crowd-out-old-habit-with-new-behavior.md @@ -21,4 +21,4 @@ Once you have designed the new behavior, it's time to implement it in your produ Monitor user behavior and analyze data to determine if the new behavior is successfully replacing the old habit. If needed, iterate on your design to make necessary improvements, and continue tracking user behavior until the new habit is well-established. -In summary, crowding out old habits with new behaviors is an effective method of improving user experience in your product. By identifying existing behaviors that need change, designing new habits that are beneficial to users, and constantly testing and iterating, you can ensure a successful transition for your users and an overall improved UX. \ No newline at end of file +In summary, crowding out old habits with new behaviors is an effective method of improving user experience in your product. By identifying existing behaviors that need change, designing new habits that are beneficial to users, and constantly testing and iterating, you can ensure a successful transition for your users and an overall improved UX. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/index.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/index.md index c2b68b923..29fecaef6 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/index.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/existing-behavior/index.md @@ -1 +1 @@ -# Existing behavior \ No newline at end of file +# Existing behavior diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/index.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/index.md index 0b6a5ea5e..906ff3fd6 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/index.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/102-make-or-change-habbits/index.md @@ -14,4 +14,4 @@ Making or changing habits is an essential aspect of UX design that focuses on he - **Iterate and improve**: Finally, always strive for improvement by continuously analyzing and iterating on your designs. Gather user feedback to identify areas where users may be struggling to form or maintain new habits, adjusting your design accordingly. -By understanding the principles of habit formation and incorporating these strategies into your UX design process, you can help users adopt new behaviors more easily and create lasting change. \ No newline at end of file +By understanding the principles of habit formation and incorporating these strategies into your UX design process, you can help users adopt new behaviors more easily and create lasting change. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/classifying-behavior/100-bj-frogg-behavior-grid.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/classifying-behavior/100-bj-frogg-behavior-grid.md index 33b193505..fd7b39a73 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/classifying-behavior/100-bj-frogg-behavior-grid.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/classifying-behavior/100-bj-frogg-behavior-grid.md @@ -3,18 +3,21 @@ The BJ Fogg Behavior Grid is a framework that helps UX designers, product managers, and marketers understand and identify different types of behavior change. Created by Stanford University professor B.J. Fogg, the grid consists of 15 behavior types based on the combination of three dimensions: Duration, Frequency, and Intensity. ## Duration + - **One-time behaviors**: These are behaviors that happen only once (e.g., signing up for an account). - **Short-term behaviors**: Behaviors that take place for a limited period of time (e.g., using a trial version of a product). - **Long-term behaviors**: Behaviors that are ongoing or happen repeatedly over a considerable time (e.g., continued use of a product). ## Frequency + - **Single-instance behaviors**: Behaviors that occur only one time per occasion (e.g., entering a password once to log in) - **Infrequent behaviors**: Behaviors that do not happen regularly or happen sporadically (e.g., posting on social media once a week) - **Frequent behaviors**: Behaviors that happen on a consistent and regular basis (e.g., checking email multiple times a day) ## Intensity + - **Low-stakes behaviors**: Behaviors that have little impact or are considered less important (e.g., choosing a profile picture) - **Medium-stakes behaviors**: Behaviors that have moderate importance or impact (e.g., deciding how much personal information to share) - **High-stakes behaviors**: Behaviors that have significant impact on the user's experience or perception of the product (e.g., making a purchase or canceling a subscription) -Using this grid, designers can classify user behaviors into different types and tailor their UX design strategies to target the specific behavior they want to encourage, change, or eliminate. Additionally, the Behavior Grid can be used to analyze and understand user motivations, triggers, and barriers, enabling designers to create more effective behavior change interventions. \ No newline at end of file +Using this grid, designers can classify user behaviors into different types and tailor their UX design strategies to target the specific behavior they want to encourage, change, or eliminate. Additionally, the Behavior Grid can be used to analyze and understand user motivations, triggers, and barriers, enabling designers to create more effective behavior change interventions. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/classifying-behavior/index.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/classifying-behavior/index.md index 0dcd840bc..41ff75c70 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/classifying-behavior/index.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/classifying-behavior/index.md @@ -1 +1 @@ -# Classifying behavior \ No newline at end of file +# Classifying behavior diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/index.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/index.md index 98517a962..f9f7a87fd 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/index.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/index.md @@ -20,4 +20,4 @@ Here are some key behavior change strategies often employed in UX design: - **Personalization and Tailoring:** Customizing content or recommendations based on a user's preferences, history or characteristics can make interventions more relevant and effective. -By incorporating these behavior change strategies in your UX design, you improve the chances of users successfully adopting the desired behaviors, which can ultimately lead to a more positive and effective user experience. \ No newline at end of file +By incorporating these behavior change strategies in your UX design, you improve the chances of users successfully adopting the desired behaviors, which can ultimately lead to a more positive and effective user experience. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/100-nir-eyal-hook-model.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/100-nir-eyal-hook-model.md index c810feb88..071b41f6b 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/100-nir-eyal-hook-model.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/100-nir-eyal-hook-model.md @@ -10,4 +10,4 @@ The Hook Model is a concept developed by Nir Eyal, a writer and entrepreneur. It - **Investment:** This component focuses on users investing time or effort into the product, which increases the likelihood of future engagement. An investment might include creating a profile, adding friends, or curating content. Users often feel a sense of ownership after investing in a product, making them more likely to return and continue using it. -By incorporating these components into your UX design, you can create experiences that encourage users to develop habits and become more attached to your product. Keep in mind, however, that "addiction" is not the primary goal - rather, it's about promoting genuine value and enhancing users' lives in a positive manner. \ No newline at end of file +By incorporating these components into your UX design, you can create experiences that encourage users to develop habits and become more attached to your product. Keep in mind, however, that "addiction" is not the primary goal - rather, it's about promoting genuine value and enhancing users' lives in a positive manner. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/101-cue-routine-reward-model.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/101-cue-routine-reward-model.md index fc05a9291..84e64ef91 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/101-cue-routine-reward-model.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/101-cue-routine-reward-model.md @@ -3,13 +3,17 @@ The Cue-Routine-Reward Model, also known as the Habit Loop, is a neurological framework that describes how habits are formed and maintained in our brains. By understanding this model, UX designers can create more engaging and addictive user experiences, encouraging users to come back to the product repeatedly. The model consists of three key components: - **Cue**: A stimulus, or trigger, that prompts your brain to start a habit. This can be anything from a notification on your phone to a daily routine or a specific location. + ``` Example: Receiving an email notification (Cue) prompts you to check your inbox. ``` + - **Routine**: The actual habit or default action you take in response to the cue. This is typically an automated behavior that occurs without much conscious thought. + ``` Example: After receiving the email notification (Cue), you open your email app and read the message (Routine). ``` + - **Reward**: The satisfaction or positive reinforcement your brain gets from completing the routine. This release of dopamine in the brain helps to strengthen and reinforce the habit over time. ``` @@ -24,4 +28,4 @@ To apply the Cue-Routine-Reward model in UX design: - Ensure a meaningful **reward** is provided to users so they feel a sense of accomplishment or receive some form of positive feedback. This can include personalized content, social validation, or progress tracking. -By incorporating the Cue-Routine-Reward model into your UX design, you can tap into users' natural habit-forming tendencies and ultimately create more addictive, engaging experiences. \ No newline at end of file +By incorporating the Cue-Routine-Reward model into your UX design, you can tap into users' natural habit-forming tendencies and ultimately create more addictive, engaging experiences. diff --git a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/index.md b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/index.md index 7aee02f37..ef22fff32 100644 --- a/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/index.md +++ b/src/data/roadmaps/ux-design/content/101-behavior-change-strategies/making-users-addicted/index.md @@ -1 +1 @@ -# Making users addicted \ No newline at end of file +# Making users addicted diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/100-target-outcome.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/100-target-outcome.md index dc1acdba6..aaca9c562 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/100-target-outcome.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/100-target-outcome.md @@ -1,6 +1,6 @@ # Target Outcome -The target outcome is a clear, measurable, and time-bound objective that your product aims to achieve. It defines the desired results for your users and becomes the focal point for the entire product design process. A well-defined target outcome ensures that your UX design is aligned with your users' needs and your business goals. +The target outcome is a clear, measurable, and time-bound objective that your product aims to achieve. It defines the desired results for your users and becomes the focal point for the entire product design process. A well-defined target outcome ensures that your UX design is aligned with your users' needs and your business goals. Here are a few key elements to consider when defining your target outcome: @@ -12,4 +12,4 @@ Here are a few key elements to consider when defining your target outcome: - **Time-bound**: Establish a clear timeline for achieving your target outcome. A deadline helps keep the team focused and on track and allows you to evaluate your progress along the way. -To sum up, defining a clear target outcome is a critical step in the UX design process, as it guides decision-making and helps ensure that your product delivers true value to your users. By focusing on user needs, making your target outcome specific and measurable, setting realistic goals, and establishing a timeline, you can ensure that your product's UX design is aligned with both user needs and business objectives. \ No newline at end of file +To sum up, defining a clear target outcome is a critical step in the UX design process, as it guides decision-making and helps ensure that your product delivers true value to your users. By focusing on user needs, making your target outcome specific and measurable, setting realistic goals, and establishing a timeline, you can ensure that your product's UX design is aligned with both user needs and business objectives. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/101-target-actor.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/101-target-actor.md index 11f520068..1b07eefc4 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/101-target-actor.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/101-target-actor.md @@ -12,4 +12,4 @@ When designing for a target actor, it is crucial to consider the following facto - **Technology proficiency**: Users' familiarity with devices and applications greatly impacts their expectations and behavior while using a product. Designers must take into account their target actor's proficiency with technology to ensure a smooth and frustration-free user experience. -To effectively design for target actors, user research methods such as interviews, surveys, and usability tests can be employed to gather data and insights. This information helps designers create accurate user personas and make informed design decisions tailored to the needs of the target actors. By keeping the target actors at the forefront throughout the design process, you will ultimately create a more satisfying and successful product experience. \ No newline at end of file +To effectively design for target actors, user research methods such as interviews, surveys, and usability tests can be employed to gather data and insights. This information helps designers create accurate user personas and make informed design decisions tailored to the needs of the target actors. By keeping the target actors at the forefront throughout the design process, you will ultimately create a more satisfying and successful product experience. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/102-target-action.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/102-target-action.md index 87f5482f5..6840a92c6 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/102-target-action.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/102-target-action.md @@ -14,4 +14,4 @@ Understanding the target action helps you create a more streamlined and effectiv - **Validate with Testing:** Verify whether your design indeed supports users in achieving their target actions by conducting usability tests. Gather user feedback, analyze the results, and iterate the design until users can effortlessly complete their primary goals. -By incorporating the target action concept in your UX design process, you'll be able to create a more intuitive and user-centric product that effectively addresses users' primary goals and maximizes user satisfaction. \ No newline at end of file +By incorporating the target action concept in your UX design process, you'll be able to create a more intuitive and user-centric product that effectively addresses users' primary goals and maximizes user satisfaction. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/index.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/index.md index 2a29a8a63..1e9f7884d 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/index.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/clarify-product/index.md @@ -1 +1 @@ -# Clarify product \ No newline at end of file +# Clarify product diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/define-target-users/100-create-user-personas.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/define-target-users/100-create-user-personas.md index a47bbff91..1c9ec7f6f 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/define-target-users/100-create-user-personas.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/define-target-users/100-create-user-personas.md @@ -12,4 +12,4 @@ User personas are fictional representations of your target users, created to hel - **Share and Refine**: Share your personas with your team and gather feedback. Make any necessary changes to ensure that the personas accurately represent your target users. -Remember, user personas are not static, and should be updated as you gather more user data and insights. Keep them in mind throughout the design process, and always consider their needs and goals when making design decisions. \ No newline at end of file +Remember, user personas are not static, and should be updated as you gather more user data and insights. Keep them in mind throughout the design process, and always consider their needs and goals when making design decisions. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/define-target-users/index.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/define-target-users/index.md index 20bacfd80..b1a26214b 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/define-target-users/index.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/define-target-users/index.md @@ -1 +1 @@ -# Define target users \ No newline at end of file +# Define target users diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/100-business-model-canvas.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/100-business-model-canvas.md index 389889de8..3e41b82cb 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/100-business-model-canvas.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/100-business-model-canvas.md @@ -12,4 +12,4 @@ The **Business Model Canvas** is a strategic management and visual representatio - **Key Partnerships (KP):** The network of suppliers, partners, and allies that help your business execute its key activities, optimize resources, and reduce risks. - **Cost Structure (CS):** The major expenses associated with operating your business model, such as fixed and variable costs, economies of scale, and cost advantages. -When designing or analyzing an existing business model, the Business Model Canvas enables you to visually map out all these critical components and understand how they are interconnected. By understanding your current business model, you can identify weaknesses, opportunities for improvement, and potential pivots to enhance the overall user experience and the success of the business. \ No newline at end of file +When designing or analyzing an existing business model, the Business Model Canvas enables you to visually map out all these critical components and understand how they are interconnected. By understanding your current business model, you can identify weaknesses, opportunities for improvement, and potential pivots to enhance the overall user experience and the success of the business. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/101-lean-canvas.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/101-lean-canvas.md index 0518bebbb..36c1ee151 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/101-lean-canvas.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/101-lean-canvas.md @@ -38,4 +38,4 @@ Determine the indicators you'll use to track your performance and gauge the succ Identify and describe any unfair advantages your product or business may have over your competitors. This could include unique expertise, proprietary technology, or strategic partnerships. -By completing a Lean Canvas, you'll have a clear and concise overview of your business model, allowing you to refine your concept, focus on what matters most, and communicate your vision to team members, investors, and customers. It's a powerful tool that can be an excellent starting point for any entrepreneur or startup looking to create a successful UX design. \ No newline at end of file +By completing a Lean Canvas, you'll have a clear and concise overview of your business model, allowing you to refine your concept, focus on what matters most, and communicate your vision to team members, investors, and customers. It's a powerful tool that can be an excellent starting point for any entrepreneur or startup looking to create a successful UX design. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/index.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/index.md index 1d6762cd0..b1d141126 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/index.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/existing-business-model/index.md @@ -1 +1 @@ -# Existing business model \ No newline at end of file +# Existing business model diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/index.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/index.md index d4f3d36ea..4b928b5e9 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/index.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/index.md @@ -21,4 +21,4 @@ Before diving into UX design, it's crucial to have a thorough understanding of t - **Involve Users in Design:** Involve users in the design process through activities like participatory design or usability testing, where users can provide feedback on prototypes and designs. - **Stay Updated on Industry Trends:** Keep yourself informed on current trends in UX design and technology to ensure your design remains relevant and up-to-date. -By investing time in understanding the product from the business, user, and competition perspectives, you'll be better equipped to create a successful and impactful UX design. \ No newline at end of file +By investing time in understanding the product from the business, user, and competition perspectives, you'll be better equipped to create a successful and impactful UX design. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/100-business-model-inspirator.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/100-business-model-inspirator.md index 4a438b2d5..59c20e9be 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/100-business-model-inspirator.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/100-business-model-inspirator.md @@ -14,4 +14,4 @@ Some key aspects of Business Model Inspirators include: - **Adaptability**: Be ready to pivot or evolve your business model based on changing market dynamics, user preferences, competitive forces, and other external factors. Developing a flexible business model is crucial to ensure long-term success and sustainability. -Implementing a Business Model Inspirator can contribute to the creation of a more innovative and robust UX design, ultimately leading to enhanced customer experiences, increased revenue, and long-term success for your brand. \ No newline at end of file +Implementing a Business Model Inspirator can contribute to the creation of a more innovative and robust UX design, ultimately leading to enhanced customer experiences, increased revenue, and long-term success for your brand. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/101-competitor-analysis.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/101-competitor-analysis.md index a027766af..212549e91 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/101-competitor-analysis.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/101-competitor-analysis.md @@ -20,4 +20,4 @@ By conducting a thorough competitor analysis, you can gain valuable insights int - **Benchmark your own offerings:** Compare your products and services with those of your competitors. Identify your unique selling points and assess if your offerings cater to the needs of your target audience in a way that sets you apart from the competition. -Remember that competitor analysis is not a one-time task. Instead, it should be an ongoing process that helps you stay up-to-date with the trends and changes within your industry, allowing you to make informed decisions about your UX design and overall business strategy. \ No newline at end of file +Remember that competitor analysis is not a one-time task. Instead, it should be an ongoing process that helps you stay up-to-date with the trends and changes within your industry, allowing you to make informed decisions about your UX design and overall business strategy. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/102-five-forces-model.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/102-five-forces-model.md index 1109bba80..42d08b823 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/102-five-forces-model.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/102-five-forces-model.md @@ -2,7 +2,7 @@ **Five Forces Model** -The *Five Forces Model* is a strategic framework developed by Harvard Business School professor Michael Porter. It is designed to analyze the competitive environment and help businesses understand the factors that influence competition, profitability, and overall industry attractiveness. This model is essential in UX design as it helps you identify opportunities, make informed decisions, and ultimately design products that satisfy users' needs and preferences. +The _Five Forces Model_ is a strategic framework developed by Harvard Business School professor Michael Porter. It is designed to analyze the competitive environment and help businesses understand the factors that influence competition, profitability, and overall industry attractiveness. This model is essential in UX design as it helps you identify opportunities, make informed decisions, and ultimately design products that satisfy users' needs and preferences. The Five Forces Model consists of five components: @@ -16,4 +16,4 @@ The Five Forces Model consists of five components: - **Bargaining Power of Buyers:** Lastly, this force examines the degree of control customers have over your product's price, features, and overall quality. Factors that affect buyer power include market size, consumer information availability, product differentiation, and price sensitivity. In UX design, it's crucial to align your product with user expectations and preferences, ensuring they perceive it as valuable and are less likely to seek alternatives. -To effectively use the *Five Forces Model* in UX design, it's essential to research and understand these forces in your industry, act on insights, and continually reassess your position as the competitive landscape evolves. By doing so, you'll create a robust and sustainable UX strategy that satisfies both user needs and market demands. \ No newline at end of file +To effectively use the _Five Forces Model_ in UX design, it's essential to research and understand these forces in your industry, act on insights, and continually reassess your position as the competitive landscape evolves. By doing so, you'll create a robust and sustainable UX strategy that satisfies both user needs and market demands. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/103-swot-analysis.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/103-swot-analysis.md index 8958d24ec..0e35dabba 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/103-swot-analysis.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/103-swot-analysis.md @@ -17,4 +17,4 @@ To ensure a comprehensive SWOT analysis, follow these steps: - **Develop Strategies**: Use the SWOT results to create effective strategies that leverage strengths, address weaknesses, capitalize on opportunities, and mitigate threats. - **Monitor Progress**: Continuously track the progress of your strategies, assessing their effectiveness and updating the SWOT analysis as required. -In summary, a SWOT analysis can serve as an excellent starting point in creating a robust UX design strategy. By understanding the internal and external factors influencing your business, you can make informed decisions while designing user experiences that resonate with your target audience and promote business growth. \ No newline at end of file +In summary, a SWOT analysis can serve as an excellent starting point in creating a robust UX design strategy. By understanding the internal and external factors influencing your business, you can make informed decisions while designing user experiences that resonate with your target audience and promote business growth. diff --git a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/index.md b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/index.md index 808f524c5..ab3f2402d 100644 --- a/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/index.md +++ b/src/data/roadmaps/ux-design/content/102-understand-the-product/new-business-model/index.md @@ -1 +1 @@ -# New business model \ No newline at end of file +# New business model diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/create-product-backlog/100-user-stories.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/create-product-backlog/100-user-stories.md index 44e9891ad..3a0dfefa3 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/create-product-backlog/100-user-stories.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/create-product-backlog/100-user-stories.md @@ -4,7 +4,7 @@ User stories are an essential component of UX design, particularly during the pr ## What are User Stories? -A user story is a brief, informal description of a specific user's need or interaction with a product. They are written from the perspective of the user and typically follow this format: +A user story is a brief, informal description of a specific user's need or interaction with a product. They are written from the perspective of the user and typically follow this format: ``` As a [type of user], I want to [perform an action or achieve a goal] so that [reason or benefit]. @@ -30,4 +30,4 @@ When creating user stories, it is essential to keep the end-users in mind. Follo - **Write User Stories**: Using the provided format, write user stories that explicitly capture the needs of your identified personas. Be concise, clear, and specific. - **Review and Refine**: Review the user stories with your team and stakeholders to ensure they accurately reflect user needs and goals. Refine them as necessary to maintain focus and clarity. -In conclusion, user stories are a powerful tool for creating a user-centered, empathetic design process. By effectively capturing user needs and goals, user stories help to guide product development and ensure that the final product is tailored to the end-users' desires. \ No newline at end of file +In conclusion, user stories are a powerful tool for creating a user-centered, empathetic design process. By effectively capturing user needs and goals, user stories help to guide product development and ensure that the final product is tailored to the end-users' desires. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/create-product-backlog/index.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/create-product-backlog/index.md index 2de1d8727..205044820 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/create-product-backlog/index.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/create-product-backlog/index.md @@ -1 +1 @@ -# Create product backlog \ No newline at end of file +# Create product backlog diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/100-custom-experience-map.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/100-custom-experience-map.md index be7b1ed9d..de5f8eb09 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/100-custom-experience-map.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/100-custom-experience-map.md @@ -36,4 +36,4 @@ To make the most of a custom experience map, consider the following tips: - Update the map as the product evolves or new data becomes available to keep it relevant and useful. - Regularly review the map during design iterations to ensure user goals and pain-points are consistently addressed. -By leveraging the power of a custom experience map, UX designers can visualize and uncover valuable insights, which lead to more informed decisions and ultimately a better user experience. \ No newline at end of file +By leveraging the power of a custom experience map, UX designers can visualize and uncover valuable insights, which lead to more informed decisions and ultimately a better user experience. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/101-simple-flowchart.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/101-simple-flowchart.md index 531c2f5ab..621e77a95 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/101-simple-flowchart.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/101-simple-flowchart.md @@ -2,7 +2,7 @@ A simple flowchart is a useful deliverable in the UX design process that helps visually represent the flow of a user's journey through a website or an app. It's a diagrammatic representation of the user interactions and decision points, showcasing the steps they will take to achieve a specific goal. -This straightforward visual aid can assist the entire project team, including designers, developers, and stakeholders, to understand the overall structure and organization of the proposed design solution. +This straightforward visual aid can assist the entire project team, including designers, developers, and stakeholders, to understand the overall structure and organization of the proposed design solution. ## Key Elements of a Simple Flowchart @@ -22,4 +22,4 @@ This straightforward visual aid can assist the entire project team, including de To create a simple flowchart, start by listing all the essential steps and decisions in the user journey you want to document. Organize them sequentially and then use standard shapes and arrows to create the flowchart. Make sure to include annotations or labels to clarify the meaning of each shape. -In summary, a simple flowchart is a valuable UX deliverable that helps visualize user interactions and design solutions in an easy-to-understand format, facilitating better communication and collaboration within project teams. \ No newline at end of file +In summary, a simple flowchart is a valuable UX deliverable that helps visualize user interactions and design solutions in an easy-to-understand format, facilitating better communication and collaboration within project teams. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/102-event-driven-process-chain-model.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/102-event-driven-process-chain-model.md index 53e583aeb..2441f6106 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/102-event-driven-process-chain-model.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/102-event-driven-process-chain-model.md @@ -4,14 +4,15 @@ The Event Driven Process Chain (EPC) model is a flowchart-based diagramming meth In an EPC model, events, functions, and control flow are the primary components. -* **Event**: Represents a specific point in time, such as the start, end or a change in a process. -* **Function**: Represents an action or task that needs to be performed. Functions typically connect to events and other functions within a process chain. -* **Control Flow**: Illustrates the flow of activities in the process chain by connecting events and functions with arrows, showing the sequence of tasks. +- **Event**: Represents a specific point in time, such as the start, end or a change in a process. +- **Function**: Represents an action or task that needs to be performed. Functions typically connect to events and other functions within a process chain. +- **Control Flow**: Illustrates the flow of activities in the process chain by connecting events and functions with arrows, showing the sequence of tasks. Creating an EPC model involves the following steps: + - Identify the main activities and events in the process to be modeled. - Define the flow of activities by connecting events and functions using arrows. - Identify decision points or branches in the process, where alternative paths may be followed. - Analyze the model to identify areas for improvement, such as bottlenecks, inefficiencies or redundancies. -EPC models are beneficial for UX designers as they provide a clear, visual representation of the business processes. This helps in understanding how a user's interactions with a product or service are tied to the overall process flow. Consequently, insights gained from EPC models can inform the UX design process in terms of the required steps and interactions, potential pain points, and opportunities for innovation. \ No newline at end of file +EPC models are beneficial for UX designers as they provide a clear, visual representation of the business processes. This helps in understanding how a user's interactions with a product or service are tied to the overall process flow. Consequently, insights gained from EPC models can inform the UX design process in terms of the required steps and interactions, potential pain points, and opportunities for innovation. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/103-business-process-model-and-notation.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/103-business-process-model-and-notation.md index 2c99615e6..c0a858be2 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/103-business-process-model-and-notation.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/103-business-process-model-and-notation.md @@ -16,4 +16,4 @@ Business Process Model and Notation (BPMN) is a graphical representation of busi - **Flexibility**: BPMN can accommodate various levels of complexity, enabling designers to model simple or complex processes as needed. - **Collaboration**: By bridging the gap between technical and non-technical stakeholders, BPMN empowers cross-functional collaboration throughout the design process. -To incorporate BPMN in your UX design process, you'll need to familiarize yourself with its various elements and syntax. Consider leveraging BPMN tools and resources to create diagrams that accurately represent your target user's needs and the corresponding business processes. By doing so, you'll be able to craft a more precise and effective user experience. \ No newline at end of file +To incorporate BPMN in your UX design process, you'll need to familiarize yourself with its various elements and syntax. Consider leveraging BPMN tools and resources to create diagrams that accurately represent your target user's needs and the corresponding business processes. By doing so, you'll be able to craft a more precise and effective user experience. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/index.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/index.md index 09111bae6..5a8f7239a 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/index.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/deliverables/index.md @@ -1 +1 @@ -# Deliverables \ No newline at end of file +# Deliverables diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/index.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/index.md index 3b44c488f..ea37d341b 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/index.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/index.md @@ -7,9 +7,8 @@ In this stage, designers focus on gathering information, understanding the probl Key components of conceptual design include: - **Problem Definition**: Identify and describe the core problem or challenge that your design aims to address. This should include insights from user research, business objectives, and a clear design goal. - + - **User Personas and Scenarios**: Develop representative user personas, providing demographic and behavioral information to help understand target user needs, motivations, and goals. Scenarios can then be created to illustrate how users might interact with the proposed solution in various contexts. - - **Information Architecture**: Define the high-level structure of the product or service, organizing content and features in a way that is easy for users to understand and navigate. This helps ensure that information is presented clearly and consistently throughout the experience. - **Sketches and Wireframes**: Create rough sketches or wireframes to visualize key aspects of the user interface and explore various design alternatives. These early prototypes can help identify potential issues and guide future design decisions. @@ -18,4 +17,4 @@ Key components of conceptual design include: - **Iteration**: Continually refine and iterate on the initial concept, using feedback from user testing and stakeholder input to make informed design adjustments. This iterative approach allows for flexibility and adaptability as the project progresses. -Ultimately, the goal of conceptual design is to create a coherent and engaging vision that meets user needs and aligns with business objectives. By investing time and effort into this foundational stage, designers can lay the groundwork for a successful and enjoyable user experience. \ No newline at end of file +Ultimately, the goal of conceptual design is to create a coherent and engaging vision that meets user needs and aligns with business objectives. By investing time and effort into this foundational stage, designers can lay the groundwork for a successful and enjoyable user experience. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/100-keep-it-short-simple.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/100-keep-it-short-simple.md index c88ab5553..6ce482e24 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/100-keep-it-short-simple.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/100-keep-it-short-simple.md @@ -4,18 +4,18 @@ The principle of "Keep it short and simple" (also known as the KISS principle) i Here are a few tips to implement the KISS principle in your UX design process: -* **Simplicity**: Limit the number of elements on the screen, and have a clear, straightforward layout. This makes it easier for users to focus on important information and reduces cognitive load. +- **Simplicity**: Limit the number of elements on the screen, and have a clear, straightforward layout. This makes it easier for users to focus on important information and reduces cognitive load. -* **Clear Hierarchies**: Categorize and group information logically, making sure that the most essential information is presented first. This helps users quickly understand the structure of your content. +- **Clear Hierarchies**: Categorize and group information logically, making sure that the most essential information is presented first. This helps users quickly understand the structure of your content. -* **Minimal Clicks**: Aim to provide the shortest possible path for users to achieve their goal. Evaluate and eliminate any unnecessary steps or clicks to make the overall experience smooth and hassle-free. +- **Minimal Clicks**: Aim to provide the shortest possible path for users to achieve their goal. Evaluate and eliminate any unnecessary steps or clicks to make the overall experience smooth and hassle-free. -* **Consistency**: Keep key design elements and interactions consistent across your interface. This enables users to recognize patterns and anticipate behavior, which in turn makes it easier for them to learn and interact with your product. +- **Consistency**: Keep key design elements and interactions consistent across your interface. This enables users to recognize patterns and anticipate behavior, which in turn makes it easier for them to learn and interact with your product. -* **Content**: Write easy-to-understand and concise content that clearly communicates your message. Avoid jargon, and use clear language that is appropriate for your target audience. +- **Content**: Write easy-to-understand and concise content that clearly communicates your message. Avoid jargon, and use clear language that is appropriate for your target audience. -* **Visual Clarity**: Use simple and clean visual elements, such as icons, typography, and color schemes. Make sure your designs are legible and visually appealing without adding unnecessary clutter. +- **Visual Clarity**: Use simple and clean visual elements, such as icons, typography, and color schemes. Make sure your designs are legible and visually appealing without adding unnecessary clutter. -* **Feedback**: Provide clear and timely feedback to users about the results of their actions. This helps them understand if they're on the right track or if they need to course-correct. +- **Feedback**: Provide clear and timely feedback to users about the results of their actions. This helps them understand if they're on the right track or if they need to course-correct. -By following the KISS principle, you can create a more efficient and enjoyable user experience, ultimately leading to increased user satisfaction and higher conversion rates. \ No newline at end of file +By following the KISS principle, you can create a more efficient and enjoyable user experience, ultimately leading to increased user satisfaction and higher conversion rates. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/101-make-it-easy.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/101-make-it-easy.md index 91eb13e4d..835506048 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/101-make-it-easy.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/101-make-it-easy.md @@ -16,4 +16,4 @@ In UX design, the key to creating a great user experience is making it easy for - **Feedback**: Give users continuous feedback on the outcome of their actions. This can be through visual cues, sounds, and even haptic feedback. Providing feedback helps users understand what's happening and builds their confidence in the interface. -Remember, the easier it is for users to interact with your product, the more likely they are to enjoy using it, thus leading to a better overall user experience. \ No newline at end of file +Remember, the easier it is for users to interact with your product, the more likely they are to enjoy using it, thus leading to a better overall user experience. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/102-make-progress-visible.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/102-make-progress-visible.md index a30737460..56819aba4 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/102-make-progress-visible.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/102-make-progress-visible.md @@ -20,4 +20,4 @@ Incorporate these best practices into your UX design to make progress visible: - **Estimate time or effort:** Give users a sense of how long a task will take, or how much effort is involved, by showing time estimates or the number of steps involved. - **Enable users to review progress:** Allow users to review their progress and easily navigate between completed steps if they need to make changes. -By making progress visible, you can provide users with a sense of accomplishment, reduce anxiety, and encourage engagement with your product. Keep this approach in mind during your UX design process to create more satisfying and user-friendly experiences. \ No newline at end of file +By making progress visible, you can provide users with a sense of accomplishment, reduce anxiety, and encourage engagement with your product. Keep this approach in mind during your UX design process to create more satisfying and user-friendly experiences. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/103-make-progress-meaningful-reward-user.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/103-make-progress-meaningful-reward-user.md index 83bee0870..b0623f3c7 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/103-make-progress-meaningful-reward-user.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/103-make-progress-meaningful-reward-user.md @@ -26,4 +26,4 @@ Leverage the power of social networks to allow users to share their achievements Incorporate gamification elements into your UX design to make progress and rewards more engaging and entertaining. Gamification techniques can include points, levels, leaderboards, and other game-like components that encourage users to invest time and effort in your product. -By making progress meaningful and rewarding for users, you can significantly enhance the overall user experience, foster user loyalty, and improve the chances of your product's long-term success. Always consider the unique needs and preferences of your target audience to customize your approach for the best results. \ No newline at end of file +By making progress meaningful and rewarding for users, you can significantly enhance the overall user experience, foster user loyalty, and improve the chances of your product's long-term success. Always consider the unique needs and preferences of your target audience to customize your approach for the best results. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/104-make-successful-completion-clearly-visible.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/104-make-successful-completion-clearly-visible.md index d1b5a5867..01213f84e 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/104-make-successful-completion-clearly-visible.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/104-make-successful-completion-clearly-visible.md @@ -12,4 +12,4 @@ When designing user experiences, it's essential to ensure that users can easily - **Accessible design:** Ensure that your success indicators and feedback are accessible to all users, including those with visual impairments. Use suitable text labels, alt text, and other accessibility features to guarantee that everyone can perceive and understand when they've completed a task. -By incorporating these elements into your UX design, you will create a user experience that not only guides users through tasks efficiently but also provides them with the satisfaction of clearly visible successful completions. This, in turn, can lead to more enjoyable interactions with your digital product and improved user engagement. \ No newline at end of file +By incorporating these elements into your UX design, you will create a user experience that not only guides users through tasks efficiently but also provides them with the satisfaction of clearly visible successful completions. This, in turn, can lead to more enjoyable interactions with your digital product and improved user engagement. diff --git a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/index.md b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/index.md index 823fbacee..451f4d4e2 100644 --- a/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/index.md +++ b/src/data/roadmaps/ux-design/content/103-conceptual-design/things-to-lookout-for/index.md @@ -1 +1 @@ -# Things to lookout for \ No newline at end of file +# Things to lookout for diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/100-good-layout-rules.md b/src/data/roadmaps/ux-design/content/104-prototyping/100-good-layout-rules.md index fbbfb50ba..8ee0ca82b 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/100-good-layout-rules.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/100-good-layout-rules.md @@ -1,6 +1,6 @@ # Good Layout Rules -In the world of UX design, a good layout is crucial to ensure your prototype is intuitive and user-friendly. By following these good layout rules, you can ensure your designs are efficient, attractive, and easy to navigate for users. +In the world of UX design, a good layout is crucial to ensure your prototype is intuitive and user-friendly. By following these good layout rules, you can ensure your designs are efficient, attractive, and easy to navigate for users. ## Consistency @@ -34,4 +34,4 @@ Make sure your prototype can adapt to different screen sizes and devices, ensuri As you develop your design, continually test and iterate on your layout based on user feedback and data. This process will help refine your design and ensure it meets the needs and expectations of your users. -By incorporating these good layout rules into your prototyping process, you'll be well on your way to creating a user-friendly and effective design that meets the goals and objectives of your project. \ No newline at end of file +By incorporating these good layout rules into your prototyping process, you'll be well on your way to creating a user-friendly and effective design that meets the goals and objectives of your project. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/index.md b/src/data/roadmaps/ux-design/content/104-prototyping/index.md index 86dde189e..87e68cb2d 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/index.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/index.md @@ -28,4 +28,4 @@ Prototyping is essential in UX design because it: - Facilitates collaboration: Prototypes enable designers, stakeholders, and developers to discuss the design and give meaningful feedback. - Enhances user experience: Iterative testing and refining the design based on feedback ensures the final product meets user needs and expectations. -In conclusion, prototyping is a crucial step in the UX design process that helps designers test ideas, gather feedback, and iterate on the design, ultimately leading to a more user-centered final product. \ No newline at end of file +In conclusion, prototyping is a crucial step in the UX design process that helps designers test ideas, gather feedback, and iterate on the design, ultimately leading to a more user-centered final product. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/100-call-to-action.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/100-call-to-action.md index cec1a80f5..81c2ec524 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/100-call-to-action.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/100-call-to-action.md @@ -25,4 +25,4 @@ Here are some best practices to follow when designing and implementing CTAs: - Ensure the CTA is relevant to the content and user experience. - Test different CTA variations, placements, and designs to determine which is most effective for your target audience. -By incorporating CTAs into your UX design, you can create a more engaging, user-friendly experience that helps guide users through your product and ultimately drives them to take the desired actions. \ No newline at end of file +By incorporating CTAs into your UX design, you can create a more engaging, user-friendly experience that helps guide users through your product and ultimately drives them to take the desired actions. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/101-status-reports.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/101-status-reports.md index 07971c114..b65a4eb94 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/101-status-reports.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/101-status-reports.md @@ -28,4 +28,4 @@ Ensure your status reports are accessible by providing descriptive text, like al Offer users the option to dismiss non-critical status reports as per their preference. This can be done by providing a close button for banners, tooltips, and pop-ups. -In conclusion, status reports are a valuable aspect of UX design that effectively communicate essential information to users, thus improving their overall experience with your product. Integrating these principles into your UX pattern can considerably enhance your design's effectiveness and user satisfaction. \ No newline at end of file +In conclusion, status reports are a valuable aspect of UX design that effectively communicate essential information to users, thus improving their overall experience with your product. Integrating these principles into your UX pattern can considerably enhance your design's effectiveness and user satisfaction. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/102-how-to-tips.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/102-how-to-tips.md index a6efdb4c3..d4cb09380 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/102-how-to-tips.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/102-how-to-tips.md @@ -10,4 +10,4 @@ Examples of this pattern include: - Pop-ups or modals that appear when users first interact with a product or service, providing an overview or tutorial on how to get started. - Interactive tutorials or walkthroughs that guide users through key features or functions of a product or service, step-by-step. -Overall, the "How-to-tips" UX pattern is a valuable tool for improving the usability and accessibility of a product or service, helping users to learn how to use it effectively and efficiently. \ No newline at end of file +Overall, the "How-to-tips" UX pattern is a valuable tool for improving the usability and accessibility of a product or service, helping users to learn how to use it effectively and efficiently. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/103-reminders-planning-prompts.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/103-reminders-planning-prompts.md index e3dec9382..2348c4151 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/103-reminders-planning-prompts.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/103-reminders-planning-prompts.md @@ -1,6 +1,6 @@ # Simple Reminders and Planning Prompts -In the realm of UX design, **reminders and planning prompts** are essential components that ensure users remember to complete specific actions or tasks at the right time. By including these prompts within the user flow, you can aid users in staying on track and reduce the likelihood of missed deadlines or incomplete tasks. +In the realm of UX design, **reminders and planning prompts** are essential components that ensure users remember to complete specific actions or tasks at the right time. By including these prompts within the user flow, you can aid users in staying on track and reduce the likelihood of missed deadlines or incomplete tasks. ## Why Use Reminders and Planning Prompts? @@ -14,7 +14,7 @@ Users often have multiple tasks to juggle simultaneously, making it easy for thi To provide effective, well-timed reminders and prompts, consider employing the following methods: -- **Push notifications**: Utilize mobile or desktop notifications to remind users about upcoming tasks, appointments, or deadlines. +- **Push notifications**: Utilize mobile or desktop notifications to remind users about upcoming tasks, appointments, or deadlines. - **In-product prompts**: Place on-screen prompts to encourage users to take specific actions while using the application. - **Email reminders**: Send scheduled emails to users as reminders for tasks or appointment confirmation. - **Badges**: Use badges or other visual cues to indicate pending tasks, such as unread messages or incomplete items in a to-do list. @@ -24,9 +24,9 @@ To provide effective, well-timed reminders and prompts, consider employing the f To ensure that your reminders and planning prompts encourage users to take action, follow these guidelines: -* **Customization**: Allow users to customize their reminders, such as setting preferred notification times or choosing the method of delivery. -* **Context**: Provide context around the reminder so users have enough information upfront to determine the task's priority. -* **Actionable**: Make your reminders engaging and actionable, so users can directly take action from the reminder or prompt. -* **Timeliness**: Consider the user's time zone and availability when scheduling reminders and plan accordingly. +- **Customization**: Allow users to customize their reminders, such as setting preferred notification times or choosing the method of delivery. +- **Context**: Provide context around the reminder so users have enough information upfront to determine the task's priority. +- **Actionable**: Make your reminders engaging and actionable, so users can directly take action from the reminder or prompt. +- **Timeliness**: Consider the user's time zone and availability when scheduling reminders and plan accordingly. -Incorporating reminders and planning prompts into your UX design strategy can improve user engagement, satisfaction, and product success. By considering the different types and strategies outlined above, you can create a user experience that keeps your audience actively engaged with your application. \ No newline at end of file +Incorporating reminders and planning prompts into your UX design strategy can improve user engagement, satisfaction, and product success. By considering the different types and strategies outlined above, you can create a user experience that keeps your audience actively engaged with your application. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/104-decision-making-support.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/104-decision-making-support.md index d3ea40303..ca00983ec 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/104-decision-making-support.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/104-decision-making-support.md @@ -21,4 +21,4 @@ Decision making support plays a crucial role in UX design by providing users wit - Take into account different use cases and decision-making styles across your target audience, and design support features that cater to these variations. - Be cautious not to overwhelm users with too much decision support, which can lead to increased cognitive load and poor user experience. -By incorporating effective decision-making support into your UX design, you can enhance user experience, increase satisfaction, and ultimately, help your users make better choices while interacting with your product. \ No newline at end of file +By incorporating effective decision-making support into your UX design, you can enhance user experience, increase satisfaction, and ultimately, help your users make better choices while interacting with your product. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/105-behavior-change-games.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/105-behavior-change-games.md index a7eb05ab3..83fc81c17 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/105-behavior-change-games.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/105-behavior-change-games.md @@ -26,4 +26,4 @@ Behavior change games are a powerful UX design pattern that help users adopt new - **Support network**: The inclusion of social features creates a community of support, forging connections between individuals with similar goals and fostering accountability. -When designing behavior change games, it's essential to keep user experience in mind, and create an enjoyable and motivating experience. Balancing fun and educational elements can result in a powerful tool for guiding users towards positive change in their lives. \ No newline at end of file +When designing behavior change games, it's essential to keep user experience in mind, and create an enjoyable and motivating experience. Balancing fun and educational elements can result in a powerful tool for guiding users towards positive change in their lives. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/106-gamification.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/106-gamification.md index ed00024d0..0a9eb46a5 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/106-gamification.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/106-gamification.md @@ -4,10 +4,10 @@ Gamification is a UX design pattern that involves incorporating elements of game ## Benefits of Gamification -* **Increased engagement**: Gamification helps in capturing the user's attention and encourages them to spend more time interacting with the product. -* **Motivation**: Game mechanics like points, badges, and leaderboards act as incentives, motivating users to perform a desired behavior or accomplish specific goals. -* **Improved learning**: Gamification can make learning new concepts or skills more enjoyable, allowing users to better retain information. -* **User retention**: By creating a sense of achievement and fostering friendly competition, gamification can inspire users to keep returning to the product. +- **Increased engagement**: Gamification helps in capturing the user's attention and encourages them to spend more time interacting with the product. +- **Motivation**: Game mechanics like points, badges, and leaderboards act as incentives, motivating users to perform a desired behavior or accomplish specific goals. +- **Improved learning**: Gamification can make learning new concepts or skills more enjoyable, allowing users to better retain information. +- **User retention**: By creating a sense of achievement and fostering friendly competition, gamification can inspire users to keep returning to the product. ## Key Elements of Gamification @@ -26,4 +26,4 @@ When implementing gamification in your UX design, consider the following factors - **Balancing challenge and reward**: Create a balance between the level of challenge and the offered rewards to maintain user interest. - **Feedback**: Provide users with timely feedback on their progress and performance to keep them engaged and informed. -By incorporating gamification into your UX design, you can create more engaging and captivating experiences that keep users coming back for more. Just remember to ensure that the game elements are relevant to the product's purpose and contribute positively to the overall user experience. \ No newline at end of file +By incorporating gamification into your UX design, you can create more engaging and captivating experiences that keep users coming back for more. Just remember to ensure that the game elements are relevant to the product's purpose and contribute positively to the overall user experience. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/107-planners.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/107-planners.md index e47897ab0..f5bf29194 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/107-planners.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/107-planners.md @@ -42,4 +42,4 @@ When incorporating planners into your UX design, consider the following best pra - Ensure that your planner design is consistent with the overall user interface and user experience goals, while also being flexible to accommodate user preferences and habits. -By following these best practices and tailoring planners to meet the needs of your users, you can create a more engaging and user-friendly experience that allows users to complete complex tasks with ease. \ No newline at end of file +By following these best practices and tailoring planners to meet the needs of your users, you can create a more engaging and user-friendly experience that allows users to complete complex tasks with ease. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/108-reminders.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/108-reminders.md index 9297d1b28..253c79c38 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/108-reminders.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/108-reminders.md @@ -26,4 +26,4 @@ Here are a few best practices to consider when incorporating reminders into your - **Allow Personalization**: Where possible, provide the user with options to customize the timing and frequency of reminders, enabling them to personalize their experience to suit their preferences. - **Consider Design Elements**: Reminders can be delivered through several methods, including in-app notifications, push notifications, and emails. Consider the most appropriate method for your user base and ensure the design of the reminder is visually appealing and easy to engage with. -In conclusion, thoughtfully implemented reminders can significantly enhance the user experience and improve user engagement, retention, and satisfaction. By following best practices and considering the user's needs, you can create effective reminders that users appreciate and value. \ No newline at end of file +In conclusion, thoughtfully implemented reminders can significantly enhance the user experience and improve user engagement, retention, and satisfaction. By following best practices and considering the user's needs, you can create effective reminders that users appreciate and value. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/109-social-sharing.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/109-social-sharing.md index 0767cc368..d0b6b5a4c 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/109-social-sharing.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/109-social-sharing.md @@ -2,7 +2,8 @@ In the realm of UX design, **Social Sharing** is a crucial pattern that allows users to share content from a website or app to various social media platforms. It helps in creating interaction between users and the content, engaging the audience and generating more traffic to the source. -## Benefits of Social Sharing +## Benefits of Social Sharing + - Increase in brand visibility and awareness - Drive more traffic to the website or app - Higher chances of content going viral @@ -10,6 +11,7 @@ In the realm of UX design, **Social Sharing** is a crucial pattern that allows u - Improves organic search rankings ## Designing Effective Social Sharing Buttons + - **Positioning**: Place the social sharing buttons at an easily accessible location on the page, e.g., top, bottom, or alongside the content. - **Size and Style**: Opt for clear and recognizable social icons that are easy to tap or click. Ensure their size is adequate to avoid any UX issues. - **Customization**: Tailor the design of social sharing buttons to complement your website or app's visual appeal. @@ -17,4 +19,4 @@ In the realm of UX design, **Social Sharing** is a crucial pattern that allows u - **Share counts**: Show the number of shares for individual content pieces when appropriate, as it adds social proof and encourages more shares. - **Mobile optimization**: Ensure your social sharing buttons are functional and visually appealing on mobile devices, as a significant portion of sharing occurs via mobile. -Incorporating social sharing into your UX design not only provides opportunities for increased engagement but also serves as an effective marketing tool. Remember, a well-designed and strategically placed social sharing component can lead to a higher reach and greater success for your brand. \ No newline at end of file +Incorporating social sharing into your UX design not only provides opportunities for increased engagement but also serves as an effective marketing tool. Remember, a well-designed and strategically placed social sharing component can lead to a higher reach and greater success for your brand. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/110-goal-trackers.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/110-goal-trackers.md index 8244a195c..a20b2c7a3 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/110-goal-trackers.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/110-goal-trackers.md @@ -27,4 +27,4 @@ When designing a goal tracker, consider these best practices for optimal UX: - **Adaptable**: Make the goal tracker adaptable and flexible, allowing users to change or modify their goals as needed. - **Accessibility**: Design the goal tracker to be easily accessible, allowing users to monitor their progress without disrupting their workflow or navigation. -In conclusion, goal trackers play an important role in UX design to drive user engagement, satisfaction, and overall success. By understanding their purpose and components, and incorporating thoughtful design principles, you can create goal trackers that enhance your users' experience and promote the accomplishment of their desired objectives. \ No newline at end of file +In conclusion, goal trackers play an important role in UX design to drive user engagement, satisfaction, and overall success. By understanding their purpose and components, and incorporating thoughtful design principles, you can create goal trackers that enhance your users' experience and promote the accomplishment of their desired objectives. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/111-tutorials.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/111-tutorials.md index 52445a4d4..0f1711f39 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/111-tutorials.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/111-tutorials.md @@ -18,4 +18,4 @@ In this section, we will discuss the importance of tutorials in UX Design and pr - **Be concise:** Long tutorials can be overwhelming and discourage users. Present only the necessary information, and keep the tutorial as short and to-the-point as possible. - **Test and iterate:** Regularly test your tutorials to ensure they are still relevant and effective. Gather user feedback to identify areas for improvement, and make updates accordingly. -Remember, a well-designed tutorial can greatly enhance a user's experience with your software or application. Invest time and effort into creating engaging, informative and easy-to-follow tutorials, and enjoy the benefits of a more skilled and satisfied user base. \ No newline at end of file +Remember, a well-designed tutorial can greatly enhance a user's experience with your software or application. Invest time and effort into creating engaging, informative and easy-to-follow tutorials, and enjoy the benefits of a more skilled and satisfied user base. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/index.md b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/index.md index 95a1a6048..5564cc45e 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/index.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/ux-patterns/index.md @@ -1 +1 @@ -# Ux patterns \ No newline at end of file +# Ux patterns diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/100-figma.md b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/100-figma.md index 6c60a481e..ff714ab8e 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/100-figma.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/100-figma.md @@ -16,5 +16,4 @@ - **Plugins**: Figma supports a wide range of user-created plugins that extend its functionality, allowing you to tailor the tool to your specific needs. - -- [Figma Website](https://figma.com) \ No newline at end of file +- [Figma Website](https://figma.com) diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/101-adobe-xd.md b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/101-adobe-xd.md index e88f0e1dc..7dcde8b2b 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/101-adobe-xd.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/101-adobe-xd.md @@ -4,16 +4,16 @@ Adobe XD (Experience Design) is a powerful design and prototyping tool that allo ## Key Features of Adobe XD -* **Design tools**: Adobe XD offers a set of powerful design tools, such as vector drawing, the ability to import images, and a range of pre-defined UI components to help you create aesthetically pleasing designs. The built-in grid system allows for precise alignment and consistency across your designs. +- **Design tools**: Adobe XD offers a set of powerful design tools, such as vector drawing, the ability to import images, and a range of pre-defined UI components to help you create aesthetically pleasing designs. The built-in grid system allows for precise alignment and consistency across your designs. -* **Responsive artboards**: XD allows you to create multiple artboards for different devices and screen sizes. This enables you to visualize and design in one go, for multiple device types. +- **Responsive artboards**: XD allows you to create multiple artboards for different devices and screen sizes. This enables you to visualize and design in one go, for multiple device types. -* **Prototype and Interactions**: With Adobe XD, you can easily add interactions to your designs. This helps in better communication of your ideas and makes it easier for clients and developers to understand your vision. The preview mode enables you to test your prototype and see the interactions in real-time. +- **Prototype and Interactions**: With Adobe XD, you can easily add interactions to your designs. This helps in better communication of your ideas and makes it easier for clients and developers to understand your vision. The preview mode enables you to test your prototype and see the interactions in real-time. -* **Collaboration and Sharing**: Adobe XD simplifies collaboration between team members, stakeholders, and developers. You can create shared design specs and live URLs for your prototypes, gather feedback, and even co-edit documents with other designers in real-time. +- **Collaboration and Sharing**: Adobe XD simplifies collaboration between team members, stakeholders, and developers. You can create shared design specs and live URLs for your prototypes, gather feedback, and even co-edit documents with other designers in real-time. -* **Integrations**: XD seamlessly integrates with other Adobe Creative Cloud applications, such as Photoshop, Illustrator, and After Effects, enabling smoother workflows and consistency across your designs. It also supports third-party plugins to expand its capabilities. +- **Integrations**: XD seamlessly integrates with other Adobe Creative Cloud applications, such as Photoshop, Illustrator, and After Effects, enabling smoother workflows and consistency across your designs. It also supports third-party plugins to expand its capabilities. To get started with Adobe XD, you'll need to download and install the application from the [Adobe Creative Cloud website](https://www.adobe.com/products/xd.html). Adobe offers a free basic plan for XD, which allows you to work on one shared document at a time and a limited number of shared prototypes and design specs. -As a designer, familiarizing yourself with Adobe XD's features and learning how to effectively use it can significantly improve your design process, making your wireframing and prototyping tasks quicker and more efficient. \ No newline at end of file +As a designer, familiarizing yourself with Adobe XD's features and learning how to effectively use it can significantly improve your design process, making your wireframing and prototyping tasks quicker and more efficient. diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/102-sketch.md b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/102-sketch.md index 84ca03316..4130c5746 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/102-sketch.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/102-sketch.md @@ -14,4 +14,4 @@ Sketch is a powerful digital design tool specifically tailored for user interfac - **Collaboration and Plugins:** Sketch offers a wide range of plugins and integrations for collaborative work and extends its functionality via community-driven addons. -- [Sketch Website](https://www.sketch.com/) \ No newline at end of file +- [Sketch Website](https://www.sketch.com/) diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/103-balsamiq.md b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/103-balsamiq.md index 8512fda20..a158289a0 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/103-balsamiq.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/103-balsamiq.md @@ -4,14 +4,14 @@ Balsamiq is a popular wireframing tool that helps designers, developers, and pro **Key Features of Balsamiq** -- *Drag-and-Drop Interface:* Balsamiq has a simple, drag-and-drop interface that allows you to add elements like buttons, text fields, images, and icons to your wireframes, making it easy for anyone to use. +- _Drag-and-Drop Interface:_ Balsamiq has a simple, drag-and-drop interface that allows you to add elements like buttons, text fields, images, and icons to your wireframes, making it easy for anyone to use. -- *Built-in UI Components:* Balsamiq has a wide variety of pre-designed UI components, which help you quickly create wireframes for different platforms like web, mobile, and desktop applications. +- _Built-in UI Components:_ Balsamiq has a wide variety of pre-designed UI components, which help you quickly create wireframes for different platforms like web, mobile, and desktop applications. -- *Sketch-style Wireframes:* Balsamiq's sketch-like wireframe style encourages you to focus on your concepts and think about the user experience before getting into detailed design work. This approach is great for brainstorming or getting feedback from stakeholders. +- _Sketch-style Wireframes:_ Balsamiq's sketch-like wireframe style encourages you to focus on your concepts and think about the user experience before getting into detailed design work. This approach is great for brainstorming or getting feedback from stakeholders. -- *Collaboration and Sharing:* You can easily share your wireframes with team members or clients using Balsamiq Cloud or by exporting your wireframes to a variety of formats, including PDF and PNG. +- _Collaboration and Sharing:_ You can easily share your wireframes with team members or clients using Balsamiq Cloud or by exporting your wireframes to a variety of formats, including PDF and PNG. -- *Integration with Other Tools:* Balsamiq can integrate with popular tools like Google Drive, Atlassian Confluence, Jira, and more, allowing you to seamlessly collaborate and manage your projects. +- _Integration with Other Tools:_ Balsamiq can integrate with popular tools like Google Drive, Atlassian Confluence, Jira, and more, allowing you to seamlessly collaborate and manage your projects. -- [Balsamiq Website](https://balsamiq.com/) \ No newline at end of file +- [Balsamiq Website](https://balsamiq.com/) diff --git a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/index.md b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/index.md index e48eb3509..b7a9b76a0 100644 --- a/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/index.md +++ b/src/data/roadmaps/ux-design/content/104-prototyping/wireframing/index.md @@ -1 +1 @@ -# Wireframing \ No newline at end of file +# Wireframing diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/100-avoid-temporal-myopia.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/100-avoid-temporal-myopia.md index b3fca9edd..10d26c3e3 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/100-avoid-temporal-myopia.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/100-avoid-temporal-myopia.md @@ -26,4 +26,4 @@ Incorporate user feedback into your design process, gathering insights from dive Design experiences that foster trust and loyalty with users, including employing principles of personalization, security, transparency, and accessibility. Establishing long-term relationships with users will help you better understand their needs and adapt your designs as their requirements change over time. -By avoiding temporal myopia in your UX design process, you'll create experiences that cater to both immediate and long-term user needs while fostering trust and loyalty. Balancing short-term gains with a long-term user-centric focus will help you deliver designs that stand the test of time and provide lasting value to both users and organizations. \ No newline at end of file +By avoiding temporal myopia in your UX design process, you'll create experiences that cater to both immediate and long-term user needs while fostering trust and loyalty. Balancing short-term gains with a long-term user-centric focus will help you deliver designs that stand the test of time and provide lasting value to both users and organizations. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/101-remind-of-prior-commitment-to-act.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/101-remind-of-prior-commitment-to-act.md index cbbfdb13e..fedb52f43 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/101-remind-of-prior-commitment-to-act.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/101-remind-of-prior-commitment-to-act.md @@ -15,4 +15,4 @@ Sometimes, users need a gentle reminder of the commitments or decisions they've - **Leverage personalized content**: Customize content to emphasize a user's previous actions, for example, by showing related products based on prior purchases, or pre-filling forms with previously entered data. - **Create social proof**: Showcase testimonials, reviews, or follower counts to remind users of their decision to join a community or use a product, creating a sense of belonging and reinforcing their initial commitment. -By incorporating reminders of prior commitments in the user experience, you can make users feel more invested in the process, create a sense of urgency, and ultimately, improve the overall UX design. \ No newline at end of file +By incorporating reminders of prior commitments in the user experience, you can make users feel more invested in the process, create a sense of urgency, and ultimately, improve the overall UX design. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/102-make-commitment-to-friends.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/102-make-commitment-to-friends.md index e960b7a05..0ed216046 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/102-make-commitment-to-friends.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/102-make-commitment-to-friends.md @@ -14,4 +14,4 @@ One of the key strategies to create a sense of urgency in your UX design is to e - **Create group goals:** Allow users to commit to a shared goal together. Design experiences that encourage collaboration and teamwork, such as group challenges or competitions. - **Offer incentives for group commitments:** Reward users for achieving goals together, for example, offering discounts or exclusive features for a group of friends who sign up for a service together. -By incorporating the "make commitment to friends" concept in your UX design, you can tap into people's natural tendencies of social conformity and accountability. This encourages users to engage with your product, convert to actions, and more importantly, stick around for the long haul. \ No newline at end of file +By incorporating the "make commitment to friends" concept in your UX design, you can tap into people's natural tendencies of social conformity and accountability. This encourages users to engage with your product, convert to actions, and more importantly, stick around for the long haul. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/103-make-reward-scarce.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/103-make-reward-scarce.md index 1c1a17566..fdba19526 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/103-make-reward-scarce.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/103-make-reward-scarce.md @@ -6,24 +6,24 @@ One of the effective techniques to create urgency in UX design is to make reward Introduce rewards with limited quantities, making users feel that they need to act fast before the rewards are gone. This exerts psychological pressure as users do not want to miss out on the opportunity. -*Example*: You can offer a limited quantity promotion wherein the first 50 customers to make a purchase receive a bonus gift or a special discount. +_Example_: You can offer a limited quantity promotion wherein the first 50 customers to make a purchase receive a bonus gift or a special discount. ## Limited Time Offers Creating time-based limitations on rewards is another effective way to increase urgency. The inherent nature of time works its magic by encouraging users to be quick to avoid missing out on the reward. -*Example*: Flash sales, 24-hour promotions and countdown timers are examples of limited-time offers that create urgency to buy now or miss out on the deal. +_Example_: Flash sales, 24-hour promotions and countdown timers are examples of limited-time offers that create urgency to buy now or miss out on the deal. ## Exclusive Access Offering exclusive access to specific features, content or experiences for a limited number of users not only increases perceived value but also adds a sense of exclusivity. -*Example*: Granting access to a members-only online event, beta release of an application, or special product launches can create urgency to sign-up or purchase for the privilege of having that exclusive access. +_Example_: Granting access to a members-only online event, beta release of an application, or special product launches can create urgency to sign-up or purchase for the privilege of having that exclusive access. ## Seasonal Rewards Align the rewards with seasons, events, or holidays, creating a natural sense of scarcity due to the time-bound nature of these events. -*Example*: Offering discounts, special promotions, or limited edition items connected to holidays or events like Christmas, Valentine's Day, Black Friday, etc., can create a sense of urgency as users are aware that these opportunities only come around once a year. +_Example_: Offering discounts, special promotions, or limited edition items connected to holidays or events like Christmas, Valentine's Day, Black Friday, etc., can create a sense of urgency as users are aware that these opportunities only come around once a year. -Remember to apply these strategies ethically and transparently when designing experiences in your application. Creating genuine scarcity and urgency will ensure that your users value your offers and continue to engage with your product. \ No newline at end of file +Remember to apply these strategies ethically and transparently when designing experiences in your application. Creating genuine scarcity and urgency will ensure that your users value your offers and continue to engage with your product. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/index.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/index.md index 5b170f7d3..27e6000da 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/index.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/create-urgency/index.md @@ -1 +1 @@ -# Create urgency \ No newline at end of file +# Create urgency diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/100-tell-user-and-ask.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/100-tell-user-and-ask.md index 152775f9e..0d6db045e 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/100-tell-user-and-ask.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/100-tell-user-and-ask.md @@ -18,4 +18,4 @@ Another important aspect of creating an engaging and interactive experience is t - **Interactive elements**: Encourage users to engage with the interface, such as sliding for content, using progressive disclosure techniques, or utilizing drag-and-drop functionality. - **Feedback mechanisms**: Provide quick and easy ways for users to express their opinions or report issues, such as clickable star ratings, feedback forms, or live chat features. -By combining the "Tell User" and "Ask User" strategies, UX designers can create a more dynamic and engaging user experience, while also staying in tune with the evolving needs and expectations of their audience. \ No newline at end of file +By combining the "Tell User" and "Ask User" strategies, UX designers can create a more dynamic and engaging user experience, while also staying in tune with the evolving needs and expectations of their audience. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/101-make-it-clear-where-to-act.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/101-make-it-clear-where-to-act.md index 4dfa695e2..1b793a95e 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/101-make-it-clear-where-to-act.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/101-make-it-clear-where-to-act.md @@ -16,4 +16,4 @@ Here are a few strategies to ensure users can easily identify where to act: - **Feedback:** Provide feedback to users when they interact with various elements. This can include hover effects, button presses, and animations that serve as confirmations of successful actions. -By making it clear where users need to act, your interface becomes more accessible, efficient, and enjoyable for them to use. This will ultimately result in a more successful and engaging user experience. \ No newline at end of file +By making it clear where users need to act, your interface becomes more accessible, efficient, and enjoyable for them to use. This will ultimately result in a more successful and engaging user experience. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/102-clear-the-page-of-distractions.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/102-clear-the-page-of-distractions.md index 6fd0a2a5f..47fbd99e1 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/102-clear-the-page-of-distractions.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/102-clear-the-page-of-distractions.md @@ -26,4 +26,4 @@ Excessive use of popups or ads can be distracting and annoying to users. Keep th Ensure that your webpage loads quickly, as slow loading times can lead to user frustration and abandonment. Optimize images and other media, and consider lazy loading techniques for a smoother experience. -By following these guidelines and effectively clearing your page of distractions, you can create a user-friendly and aesthetically pleasant design that will keep your users engaged and focused on the most important elements of your website. \ No newline at end of file +By following these guidelines and effectively clearing your page of distractions, you can create a user-friendly and aesthetically pleasant design that will keep your users engaged and focused on the most important elements of your website. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/index.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/index.md index 936cbb73c..fd8a0c366 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/index.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-attention/index.md @@ -1 +1 @@ -# Getting attention \ No newline at end of file +# Getting attention diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/100-prime-user-relevant-associations.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/100-prime-user-relevant-associations.md index 6582ad017..d66472c18 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/100-prime-user-relevant-associations.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/100-prime-user-relevant-associations.md @@ -36,4 +36,4 @@ By successfully priming user-relevant associations, designers can: - Increase user engagement and product adoption - Encourage brand loyalty -By closely understanding and addressing users' needs and preferences, UX designers can create favorable conscious evaluations and ultimately lay a solid foundation for a successful user experience. \ No newline at end of file +By closely understanding and addressing users' needs and preferences, UX designers can create favorable conscious evaluations and ultimately lay a solid foundation for a successful user experience. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/101-leverage-loss-aversion.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/101-leverage-loss-aversion.md index acc242bff..ec17bc455 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/101-leverage-loss-aversion.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/101-leverage-loss-aversion.md @@ -16,4 +16,4 @@ Loss aversion is a psychological phenomenon where individuals are more likely to - **Risk reversal and guarantees:** Reduce the perceived risk by offering money-back guarantees, free returns, or no-strings-attached trials. By taking away the potential for loss, users may be more likely to give your product or service a try. -Remember, the goal is to create a balanced user experience that informs and helps users make informed decisions, without resorting to manipulative tactics. Use loss aversion thoughtfully and ethically, and always prioritize the needs and emotions of your users. \ No newline at end of file +Remember, the goal is to create a balanced user experience that informs and helps users make informed decisions, without resorting to manipulative tactics. Use loss aversion thoughtfully and ethically, and always prioritize the needs and emotions of your users. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/102-use-peer-comparisons.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/102-use-peer-comparisons.md index 87e7525ce..f28ec5025 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/102-use-peer-comparisons.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/102-use-peer-comparisons.md @@ -22,4 +22,4 @@ Peer comparisons involve using feedback or showcasing how other users, especiall - Be aware that peer comparisons can lead to unintended consequences if not handled properly, such as demotivation, social pressure, or decreased self-esteem. - Always respect user privacy and ensure a positive, supportive environment when implementing peer comparisons in your UX design. -By effectively leveraging peer comparisons, you can enhance user engagement and satisfaction, ultimately creating a more successful and enjoyable product experience. \ No newline at end of file +By effectively leveraging peer comparisons, you can enhance user engagement and satisfaction, ultimately creating a more successful and enjoyable product experience. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/103-use-competition.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/103-use-competition.md index f75e94f2f..e2aa36195 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/103-use-competition.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/103-use-competition.md @@ -32,4 +32,4 @@ Evaluate the effectiveness of the competitive features in your UX design by trac In conclusion, using competition in UX design can create engaging experiences that motivate users, encouraging them to delve deeper into your app or platform. By carefully considering your target audience and the potential pitfalls of competition, you will be well on your way to crafting a user experience that keeps users coming back for more. ---- \ No newline at end of file +--- diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/104-avoid-cognitive-overhead.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/104-avoid-cognitive-overhead.md index 3dc293fb4..990e5d2b9 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/104-avoid-cognitive-overhead.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/104-avoid-cognitive-overhead.md @@ -6,21 +6,21 @@ Cognitive overhead refers to the mental effort needed to understand or operate a A clutter-free, clean, and easy-to-navigate design is always a good starting point. In order to keep cognitive overhead to a minimum, focus on simplifying both the interface and the content: - - Utilize white space: By providing ample space between functional elements, you make it easier for users to scan and process the interface. - - Reduce the number of options: Offering too many choices can overwhelm users or cause them to second-guess their decisions. Aim for a balance of ease and functionality. +- Utilize white space: By providing ample space between functional elements, you make it easier for users to scan and process the interface. +- Reduce the number of options: Offering too many choices can overwhelm users or cause them to second-guess their decisions. Aim for a balance of ease and functionality. #### 2. Establish a clear hierarchy A well-structured hierarchy helps users navigate your design and understand the relationship between elements. This reduces cognitive overhead as users don't have to work hard to make sense of the interface: - - Organize content logically: Group related items together and place them in a consistent order. - - Use size, color, and typography effectively: Make important information stand out and use visual cues to indicate less important elements. +- Organize content logically: Group related items together and place them in a consistent order. +- Use size, color, and typography effectively: Make important information stand out and use visual cues to indicate less important elements. #### 3. Provide clear & concise instructions Your design should guide users effortlessly, which can be achieved by providing clear directions or prompts: - - Use actionable language: Be precise and direct with your wording, and avoid using jargon. - - Offer visual cues & feedback: Include well-placed icons, highlighted sections, or animation to support the user's actions and indicate the outcome of those actions. +- Use actionable language: Be precise and direct with your wording, and avoid using jargon. +- Offer visual cues & feedback: Include well-placed icons, highlighted sections, or animation to support the user's actions and indicate the outcome of those actions. -In summary, reducing cognitive overhead in your UX design is essential to create an efficient and user-friendly experience. Adopt a simple and clean design, establish a clear hierarchy, and provide helpful instructions to ensure more favorable conscious evaluations from your users. \ No newline at end of file +In summary, reducing cognitive overhead in your UX design is essential to create an efficient and user-friendly experience. Adopt a simple and clean design, establish a clear hierarchy, and provide helpful instructions to ensure more favorable conscious evaluations from your users. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/105-avoid-choice-overload.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/105-avoid-choice-overload.md index 60965ba17..c11d5136c 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/105-avoid-choice-overload.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/105-avoid-choice-overload.md @@ -18,4 +18,4 @@ To help users make decisions quicker, consider setting default selections for ce If your design requires users to make complex decisions, such as choosing a product from an extensive catalog, consider implementing advanced filtering and sorting options. By giving users the ability to refine their options based on specific attributes, they can more easily identify the best option for their needs. Make sure these filtering options are easy to understand and use, and provide clear feedback on the number of results remaining as users adjust their filters. -By being mindful of choice overload and implementing these strategies, you can create a more enjoyable and user-friendly experience for your users. Remember, the goal is to make their decision-making process as seamless and stress-free as possible. \ No newline at end of file +By being mindful of choice overload and implementing these strategies, you can create a more enjoyable and user-friendly experience for your users. Remember, the goal is to make their decision-making process as seamless and stress-free as possible. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/106-avoid-direct-payments.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/106-avoid-direct-payments.md index da5b57c6d..9bd8d1a4e 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/106-avoid-direct-payments.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/106-avoid-direct-payments.md @@ -3,6 +3,7 @@ Avoiding direct payments is a crucial aspect of UX design that can lead to favorable conscious evaluations from users. Direct payments refer to instances where users are required to pay for your product or service upfront, which can create a negative perception and less willingness to engage. By finding alternative ways to monetize or offer premium features, you can create an enjoyable experience and encourage users to appreciate and invest in your offerings without feeling forced. ## Why it Matters? + - **Trust-Building**: When users are not asked to pay upfront or have no hidden costs, they are more likely to trust your product or service, increasing the likelihood of loyal customers. - **Accessibility**: Making your offerings available without direct payments ensures a larger and more diverse audience can experience the value your product provides, which can lead to increased traffic and eventual conversions. - **Reduced churn**: Users who do not feel "locked-in" by having to pay upfront are less likely to abandon your product or service in search of alternative solutions. @@ -15,4 +16,4 @@ Avoiding direct payments is a crucial aspect of UX design that can lead to favor - **Subscriptions**: Offer subscriptions as an alternative payment method that allows users to access premium features and receive updates frequently, creating a sense of loyalty and commitment. - **Pay-as-you-go or usage-based pricing**: Implement a flexible pricing model where users only pay for what they use or when they use a specific feature, removing the barrier of direct payments and increasing user satisfaction. -By avoiding direct payments and implementing these strategies, a UX designer can create a user experience that fosters trust, accessibility, and user engagement. By doing so, you increase the likelihood of gaining favorable conscious evaluations of your product, ultimately leading to long-term success. \ No newline at end of file +By avoiding direct payments and implementing these strategies, a UX designer can create a user experience that fosters trust, accessibility, and user engagement. By doing so, you increase the likelihood of gaining favorable conscious evaluations of your product, ultimately leading to long-term success. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/index.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/index.md index cf8d3f5ac..7fdab7329 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/index.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/getting-favorable-conscious-evaluation/index.md @@ -1 +1 @@ -# Getting favorable conscious evaluation \ No newline at end of file +# Getting favorable conscious evaluation diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/index.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/index.md index afcc2d48d..ef50b5f11 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/index.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/index.md @@ -1,14 +1,14 @@ # UX Best Practices -UX design, or user experience design, is essential for creating user-friendly and effective products. In this section, we'll discuss some of the best practices that can help you create an optimal user experience for your products. +UX design, or user experience design, is essential for creating user-friendly and effective products. In this section, we'll discuss some of the best practices that can help you create an optimal user experience for your products. ## Understand your users -Before you start designing any product or feature, it's crucial to **know and understand your users**. Conduct user research, create user personas, and use these insights to tailor your design to the needs and preferences of your target audience. +Before you start designing any product or feature, it's crucial to **know and understand your users**. Conduct user research, create user personas, and use these insights to tailor your design to the needs and preferences of your target audience. ## Focus on usability -One of the main goals of UX design is to create products that are **easy to use and navigate**. Aim for simplicity, consistency, and clarity in your design, and make sure to test your product with real users to identify potential usability issues. +One of the main goals of UX design is to create products that are **easy to use and navigate**. Aim for simplicity, consistency, and clarity in your design, and make sure to test your product with real users to identify potential usability issues. ## Design for accessibility @@ -36,6 +36,6 @@ Consistency in design elements, such as typography, colors, and layout, creates ## Test and iterate -Usability testing and iterative design are essential components of the UX design process. **Conduct usability tests** with real users to identify pain points and areas of improvement, and continually iterate and improve your design based on feedback and insights gained. +Usability testing and iterative design are essential components of the UX design process. **Conduct usability tests** with real users to identify pain points and areas of improvement, and continually iterate and improve your design based on feedback and insights gained. -By applying these UX best practices, you'll be well on your way to creating user-friendly, effective products that lead to greater user satisfaction and success. \ No newline at end of file +By applying these UX best practices, you'll be well on your way to creating user-friendly, effective products that lead to greater user satisfaction and success. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/100-elicit-implementation-intentions.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/100-elicit-implementation-intentions.md index 880e31de5..fa54ba170 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/100-elicit-implementation-intentions.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/100-elicit-implementation-intentions.md @@ -22,4 +22,4 @@ To encourage users to form implementation intentions, you'll want to create prom - **Offer encouragement and feedback**: Positive reinforcement can help keep users motivated and engaged with their plans. Congratulate users on milestones reached and provide feedback on their progress. -By incorporating these strategies into your UX design, you can foster an environment that supports users in forming implementation intentions and helps them achieve their goals more effectively. Remember, the easier it is for users to make plans and take actionable steps towards their objectives, the more successful and satisfied they will be with your product. \ No newline at end of file +By incorporating these strategies into your UX design, you can foster an environment that supports users in forming implementation intentions and helps them achieve their goals more effectively. Remember, the easier it is for users to make plans and take actionable steps towards their objectives, the more successful and satisfied they will be with your product. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/101-default-everything.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/101-default-everything.md index d3aa5442e..8117e1695 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/101-default-everything.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/101-default-everything.md @@ -20,4 +20,4 @@ One of the key principles in UX design is to **make it easy for users** by creat - **Test your defaults:** It's important to test and validate your default settings to ensure that they benefit your users. Collect feedback, conduct user testing, and iterate to find the most effective defaults for your product. -By implementing default settings in your UX design, you'll simplify the user's experience and make it easier for them to interact with your product. By choosing the right defaults and constantly testing and refining them, you'll provide a more satisfying and efficient experience for your users. \ No newline at end of file +By implementing default settings in your UX design, you'll simplify the user's experience and make it easier for them to interact with your product. By choosing the right defaults and constantly testing and refining them, you'll provide a more satisfying and efficient experience for your users. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/102-lessen-the-burden-of-action-info.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/102-lessen-the-burden-of-action-info.md index f229e5ee6..9cb69a415 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/102-lessen-the-burden-of-action-info.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/102-lessen-the-burden-of-action-info.md @@ -3,21 +3,16 @@ The goal of "lessening the burden of action information" is to simplify and streamline the user experience so that users can efficiently accomplish their tasks without confusion or frustration. Here are some key ways to do this: - #### Provide Clear Instructions - Clearly communicate to your users what they need to do. Ensure language is clear, concise and easily understood. This reduces the chances of users feeling lost or not knowing what to do. - + Clearly communicate to your users what they need to do. Ensure language is clear, concise and easily understood. This reduces the chances of users feeling lost or not knowing what to do. - #### Minimize Steps - Reduce the number of steps or actions users need to take in order to complete a task. This not only simplifies the process but also saves users' time and effort. - + Reduce the number of steps or actions users need to take in order to complete a task. This not only simplifies the process but also saves users' time and effort. - #### Declutter Interface - Remove unnecessary elements from your interface that might distract or confuse your users. Focus on presenting only the essential information and UI components, which will allow your users to navigate and interact more easily. - + Remove unnecessary elements from your interface that might distract or confuse your users. Focus on presenting only the essential information and UI components, which will allow your users to navigate and interact more easily. - #### Group Related Actions - Organize similar actions and options together. This helps users understand the logical flow of completing a task and makes the interface easier to navigate. - + Organize similar actions and options together. This helps users understand the logical flow of completing a task and makes the interface easier to navigate. - #### Break Down Complex Tasks - Break complex tasks into smaller, more manageable sub-tasks or steps. This helps users understand the overall process better and allows them to focus on one step at a time. - + Break complex tasks into smaller, more manageable sub-tasks or steps. This helps users understand the overall process better and allows them to focus on one step at a time. - #### Make Default Values Meaningful - Set default values that make sense and help users to complete actions more quickly. This saves users the time and effort of manually entering or selecting values in certain cases. + Set default values that make sense and help users to complete actions more quickly. This saves users the time and effort of manually entering or selecting values in certain cases. -By implementing these techniques in your UX design, you will make it easier for users to interact with and complete tasks within your product, leading to a more satisfying and successful experience. \ No newline at end of file +By implementing these techniques in your UX design, you will make it easier for users to interact with and complete tasks within your product, leading to a more satisfying and successful experience. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/103-deploy-peer-comparisons.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/103-deploy-peer-comparisons.md index 17001707d..65da9c20f 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/103-deploy-peer-comparisons.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/103-deploy-peer-comparisons.md @@ -16,4 +16,4 @@ Deploying peer comparisons in UX design involves showing users how their actions - **Provide Opt-Out Options** - Give users the choice to remove themselves from peer comparisons or view comparisons anonymously. - **Avoid Overwhelming Users** - Display comparisons sparingly and thoughtfully. Excessive peer comparisons can be overwhelming or counterproductive. -By carefully implementing peer comparisons in your UX design, you can effectively motivate users to take desired actions, while maintaining a positive and intuitive user experience. Remember to be considerate of users' privacy and preferences when introducing this powerful technique. \ No newline at end of file +By carefully implementing peer comparisons in your UX design, you can effectively motivate users to take desired actions, while maintaining a positive and intuitive user experience. Remember to be considerate of users' privacy and preferences when introducing this powerful technique. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/index.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/index.md index 0974c7863..fe76081cc 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/index.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/make-it-easy-for-users/index.md @@ -1 +1 @@ -# Make it easy for users \ No newline at end of file +# Make it easy for users diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/100-make-ui-professional-and-beautiful.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/100-make-ui-professional-and-beautiful.md index aeea3b486..c108e562c 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/100-make-ui-professional-and-beautiful.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/100-make-ui-professional-and-beautiful.md @@ -4,7 +4,7 @@ Creating a professional and beautiful user interface (UI) is essential for a pos ## Color Scheme -Choose a color scheme that complements your brand and the message you want to convey. Use colors that evoke emotions and are aesthetically pleasing. Aim for a balanced mix of primary, secondary, and accent colors. You can use online color palette generators or other resources to create a harmonious color scheme. +Choose a color scheme that complements your brand and the message you want to convey. Use colors that evoke emotions and are aesthetically pleasing. Aim for a balanced mix of primary, secondary, and accent colors. You can use online color palette generators or other resources to create a harmonious color scheme. ## Typography @@ -34,4 +34,4 @@ Make effective use of white space (also known as negative space) to create visua Provide visual feedback and subtle animations to enhance user interaction. Micro-interactions, such as hover effects, progress indicators, and animations, showcase attentiveness to detail and contribute to an engaging UX. -By incorporating these aspects, you can craft a professional and beautiful UI that promotes a positive intuitive reaction. Remember that a visually appealing interface, combined with smooth and efficient functionality, leads to a better UX, ultimately benefiting both the users and your business. \ No newline at end of file +By incorporating these aspects, you can craft a professional and beautiful UI that promotes a positive intuitive reaction. Remember that a visually appealing interface, combined with smooth and efficient functionality, leads to a better UX, ultimately benefiting both the users and your business. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/101-deploy-social-proof.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/101-deploy-social-proof.md index 5f367f38e..56b11a8ed 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/101-deploy-social-proof.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/101-deploy-social-proof.md @@ -14,4 +14,4 @@ Deploying social proof is a powerful UX design principle that helps to encourage - **Trust Seals and Certifications**: Including trust seals from established organizations or certifications from industry leaders can further enhance your product's credibility. Ensure that these are relevant to your target audience and displayed prominently within your UX design. -By deploying social proof strategically within your UX design, you can create a positive intuitive reaction that encourages users to trust your product, comply with your suggestions, and ultimately, choose your product over the competition. \ No newline at end of file +By deploying social proof strategically within your UX design, you can create a positive intuitive reaction that encourages users to trust your product, comply with your suggestions, and ultimately, choose your product over the competition. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/102-deploy-strong-subject-authority.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/102-deploy-strong-subject-authority.md index 2733c7298..d6e417e58 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/102-deploy-strong-subject-authority.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/102-deploy-strong-subject-authority.md @@ -25,4 +25,4 @@ Deploying strong subject authority refers to providing the user with a sense of - **Accessibility:** Ensure your content is accessible to everyone, regardless of their abilities, by meeting accessibility standards. - **Customer Support:** Offer easily accessible support options and resources, such as a help center, live chat, or customer service contact information. -To deploy strong subject authority in your UX design, focus on providing reliable content, maintaining a professional appearance, sharing testimonials and social proof, and offering accessible support. By incorporating these elements into your design, users are more likely to have a positive, intuitive reaction to your product and become loyal, satisfied customers. \ No newline at end of file +To deploy strong subject authority in your UX design, focus on providing reliable content, maintaining a professional appearance, sharing testimonials and social proof, and offering accessible support. By incorporating these elements into your design, users are more likely to have a positive, intuitive reaction to your product and become loyal, satisfied customers. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/103-be-authentic-and-personal.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/103-be-authentic-and-personal.md index ce0c9617e..669d1ba47 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/103-be-authentic-and-personal.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/103-be-authentic-and-personal.md @@ -26,4 +26,4 @@ An authentic user experience is characterized by consistency in design elements, To create an authentic UX design, offer personalized experiences to your users based on their preferences, browsing history, or other data. This might include recommending content they may be interested in or tailoring the website layout to meet their specific needs. -By being authentic and personal in your UX design, you can create a positive and memorable experience for your users. By understanding your target audience, using natural language, incorporating engaging visuals, and providing personalized experiences, you can foster user engagement, trust, and loyalty towards your product or brand. \ No newline at end of file +By being authentic and personal in your UX design, you can create a positive and memorable experience for your users. By understanding your target audience, using natural language, incorporating engaging visuals, and providing personalized experiences, you can foster user engagement, trust, and loyalty towards your product or brand. diff --git a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/index.md b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/index.md index e9a1519e2..d945fb05e 100644 --- a/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/index.md +++ b/src/data/roadmaps/ux-design/content/105-ux-best-practices/positive-intuitive-reaction/index.md @@ -1 +1 @@ -# Positive intuitive reaction \ No newline at end of file +# Positive intuitive reaction diff --git a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/100-gather-lessons-prioritize-integrate.md b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/100-gather-lessons-prioritize-integrate.md index 9bc5159ee..55ffa69b5 100644 --- a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/100-gather-lessons-prioritize-integrate.md +++ b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/100-gather-lessons-prioritize-integrate.md @@ -24,4 +24,4 @@ Once you have prioritized the key issues, the next step is to integrate them int Monitoring the progress and evaluating the impact of these changes in subsequent iterations is also important. This will help you validate the success of your efforts and provide valuable insights for continuous improvement. -To summarize, gathering lessons, prioritizing, and integrating them into your UX design process is essential for measuring the impact and knowing the areas of improvement. By continuously iterating and learning from user feedback and data, you can build a more effective and engaging product for your users. \ No newline at end of file +To summarize, gathering lessons, prioritizing, and integrating them into your UX design process is essential for measuring the impact and knowing the areas of improvement. By continuously iterating and learning from user feedback and data, you can build a more effective and engaging product for your users. diff --git a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/index.md b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/index.md index cf74ab78d..e5e3a99e8 100644 --- a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/index.md +++ b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/index.md @@ -30,4 +30,4 @@ Several tools can assist you in measuring the impact of your UX design, includin - **Optimizely**: A platform for A/B testing, multivariate testing, and personalization of your design. - **UsabilityHub**: A user testing platform that offers a range of tools to test your design, including first-click tests, preference tests, and five-second tests. -By regularly measuring the impact of your UX design and analyzing the gathered data, you can effectively enhance your design, ensuring positive user experiences and achieving your business goals. \ No newline at end of file +By regularly measuring the impact of your UX design and analyzing the gathered data, you can effectively enhance your design, ensuring positive user experiences and achieving your business goals. diff --git a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/100-incremental-ab-testing.md b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/100-incremental-ab-testing.md index fcb8b40a5..46185bf88 100644 --- a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/100-incremental-ab-testing.md +++ b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/100-incremental-ab-testing.md @@ -40,4 +40,4 @@ Once you've completed your test, analyze the results to determine if your increm Based on your results, iterate and make improvements to your UX design. Continue running incremental A/B tests as you fine-tune your design to achieve the best possible user experience. -By making use of incremental A/B testing, you thoroughly understand the impact of each small change in your UX design, which empowers you to create an optimized user experience and reach your conversion goals effectively. \ No newline at end of file +By making use of incremental A/B testing, you thoroughly understand the impact of each small change in your UX design, which empowers you to create an optimized user experience and reach your conversion goals effectively. diff --git a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/101-multivariate-testing.md b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/101-multivariate-testing.md index 153a39b6d..80e11eb22 100644 --- a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/101-multivariate-testing.md +++ b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/101-multivariate-testing.md @@ -4,7 +4,7 @@ Multivariate testing is an advanced user testing method that allows designers to ## How it Works -In a multivariate test, several design variations are presented to different groups of users simultaneously. The test seeks to measure the performance of each design variation utilizing clearly-defined metrics like conversion rates, number of clicks, or user engagement. Data is collected and analyzed to determine which variation has the greatest positive impact on those pre-identified metrics. +In a multivariate test, several design variations are presented to different groups of users simultaneously. The test seeks to measure the performance of each design variation utilizing clearly-defined metrics like conversion rates, number of clicks, or user engagement. Data is collected and analyzed to determine which variation has the greatest positive impact on those pre-identified metrics. ## Key Advantages @@ -20,6 +20,6 @@ In a multivariate test, several design variations are presented to different gro ## Things to Consider -Multivariate testing may require a larger user sample size compared to A/B testing, as more variations of the design are being analyzed. Additionally, this method works best when there is sufficient traffic or a high volume of user engagement. +Multivariate testing may require a larger user sample size compared to A/B testing, as more variations of the design are being analyzed. Additionally, this method works best when there is sufficient traffic or a high volume of user engagement. -Keep in mind that while multivariate testing can provide valuable insights, it's important not to lose sight of the big picture. Focus on testing elements that are truly critical to your design goals and prioritize user feedback at every stage of the process. \ No newline at end of file +Keep in mind that while multivariate testing can provide valuable insights, it's important not to lose sight of the big picture. Focus on testing elements that are truly critical to your design goals and prioritize user feedback at every stage of the process. diff --git a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/index.md b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/index.md index 94cfd7d77..f00b526a9 100644 --- a/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/index.md +++ b/src/data/roadmaps/ux-design/content/106-measuring-the-impact/testing/index.md @@ -1 +1 @@ -# Testing \ No newline at end of file +# Testing diff --git a/src/data/roadmaps/ux-design/content/index.md b/src/data/roadmaps/ux-design/content/index.md index 4e768b56d..792d60054 100644 --- a/src/data/roadmaps/ux-design/content/index.md +++ b/src/data/roadmaps/ux-design/content/index.md @@ -1 +1 @@ -# \ No newline at end of file +# diff --git a/src/data/roadmaps/ux-design/ux-design.md b/src/data/roadmaps/ux-design/ux-design.md index 086e30532..4a8e29504 100644 --- a/src/data/roadmaps/ux-design/ux-design.md +++ b/src/data/roadmaps/ux-design/ux-design.md @@ -1,52 +1,52 @@ --- -jsonUrl: "/jsons/roadmaps/ux-design.json" -pdfUrl: "/pdfs/roadmaps/ux-design.pdf" +jsonUrl: '/jsons/roadmaps/ux-design.json' +pdfUrl: '/pdfs/roadmaps/ux-design.pdf' order: 12 -briefTitle: "UX Design" -briefDescription: "Step by step guide to becoming a UX Designer in 2023" -title: "UX Design" -description: "Step by step guide to becoming a UX Designer in 2023" +briefTitle: 'UX Design' +briefDescription: 'Step by step guide to becoming a UX Designer in 2023' +title: 'UX Design' +description: 'Step by step guide to becoming a UX Designer in 2023' isNew: true hasTopics: true dimensions: width: 968 height: 2590.38 schema: - headline: "UX Design Roadmap" - description: "Learn all about UX Design with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/ux-design.png" - datePublished: "2023-03-26" - dateModified: "2023-03-26" + headline: 'UX Design Roadmap' + description: 'Learn all about UX Design with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/ux-design.png' + datePublished: '2023-03-26' + dateModified: '2023-03-26' seo: - title: "UX Design Roadmap: Step by Step guide to learn UX Design in 2023" - description: "Learn how to become a UX Designer in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." + title: 'UX Design Roadmap: Step by Step guide to learn UX Design in 2023' + description: 'Learn how to become a UX Designer in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' keywords: - - "guide to learn ux design" - - "guide to becoming a ux designer" - - "ux designer" - - "ux design skills" - - "guide to ux design" - - "ux design roadmap" - - "ux design skills" - - "ux design skills test" - - "skills for ux design" - - "what is ux design" - - "ux design quiz" - - "ux design interview questions" - - "ux designer roadmap" - - "ux designer roadmap" - - "become a ux designer" - - "ux designer career path" - - "ux designer" - - "modern ux designer" + - 'guide to learn ux design' + - 'guide to becoming a ux designer' + - 'ux designer' + - 'ux design skills' + - 'guide to ux design' + - 'ux design roadmap' + - 'ux design skills' + - 'ux design skills test' + - 'skills for ux design' + - 'what is ux design' + - 'ux design quiz' + - 'ux design interview questions' + - 'ux designer roadmap' + - 'ux designer roadmap' + - 'become a ux designer' + - 'ux designer career path' + - 'ux designer' + - 'modern ux designer' relatedRoadmaps: - - "design-system" - - "frontend" + - 'design-system' + - 'frontend' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "role-roadmap" ---- \ No newline at end of file + - 'roadmap' + - 'main-sitemap' + - 'role-roadmap' +--- diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/100-vue-cli.md b/src/data/roadmaps/vue/content/100-fundamental-topics/100-vue-cli.md index 409a3315f..da08a7142 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/100-vue-cli.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/100-vue-cli.md @@ -16,4 +16,3 @@ Vue CLI aims to be the standard tooling baseline for the Vue ecosystem. It ensur Visit the following resources to learn more: - [Vue CLI Guide](https://cli.vuejs.org/guide/) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/100-single-file-components.md b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/100-single-file-components.md index ca81cafb5..e382a3cfd 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/100-single-file-components.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/100-single-file-components.md @@ -5,4 +5,3 @@ Vue Single-File Components (a.k.a. `*.vue` files, abbreviated as SFC) is a speci Visit the following resources to learn more: - [Single File Components](https://vuejs.org/guide/scaling-up/sfc.html) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/102-props.md b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/102-props.md index b26a98466..ee0815450 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/102-props.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/102-props.md @@ -2,11 +2,9 @@ If we are building a blog, we will likely need a component representing a blog post. We want all the blog posts to share the same visual layout, but with different content. Such a component won't be useful unless you can pass data to it, such as the title and content of the specific post we want to display. That's where props come in. -Props are custom attributes you can register on a component. +Props are custom attributes you can register on a component. Visit the following resources to learn more: - [Props Basics](https://vuejs.org/guide/essentials/component-basics.html#passing-props) - [Props in Depth](https://vuejs.org/guide/components/props.html) - - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/103-events.md b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/103-events.md index 16200db5c..052d43873 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/103-events.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/103-events.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Listening to Events](https://vuejs.org/guide/essentials/component-basics.html#listening-to-events) - [Events in Detail](https://vuejs.org/guide/components/events.html) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/104-attribute-inheritance.md b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/104-attribute-inheritance.md index fc21c0ae8..085176423 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/104-attribute-inheritance.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/104-attribute-inheritance.md @@ -5,4 +5,3 @@ Attribute inheritance aka "fallthrough attributes" is a feature of Vue.js that a Visit the following resources to learn more: - [Fallthrough Attributes](https://vuejs.org/guide/components/attrs.html) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/index.md b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/index.md index 629b29dac..3efb7abee 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/index.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/index.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Components Basics](https://vuejs.org/guide/essentials/component-basics.html) - [Components in Depth](https://vuejs.org/guide/components/registration.html) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/103-directives.md b/src/data/roadmaps/vue/content/100-fundamental-topics/103-directives.md index ea248ab14..fc89c3399 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/103-directives.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/103-directives.md @@ -5,4 +5,3 @@ Directives are special attributes with the `v-` prefix. Vue provides a number of Visit the following resources to learn more: - [Directives Documentation](https://vuejs.org/guide/essentials/template-syntax.html#directives) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/100-options-api.md b/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/100-options-api.md index a012aae1c..b47ebb5a0 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/100-options-api.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/100-options-api.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [TypeScript with Options API](https://vuejs.org/guide/typescript/options-api.html) - [Options API Documentation](https://vuejs.org/api/#options-api) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/101-composition-api.md b/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/101-composition-api.md index 636af6cda..82547fbe3 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/101-composition-api.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/101-composition-api.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [Composition API FAQ](https://vuejs.org/guide/extras/composition-api-faq.html) - [Composition API](https://vuejs.org/api/#composition-api) - [Vue 3 Composition API](https://www.thisdot.co/blog/vue-3-composition-api-ref-and-reactive) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/106-rendering-lists.md b/src/data/roadmaps/vue/content/100-fundamental-topics/106-rendering-lists.md index c2ef8359d..34b975df9 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/106-rendering-lists.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/106-rendering-lists.md @@ -5,4 +5,3 @@ We can use the `v-for` directive to render a list of items based on an array. Th Visit the following resources to learn more: - [Rendering Lists in Vue.js](https://vuejs.org/guide/essentials/list.html) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/107-conditional-rendering.md b/src/data/roadmaps/vue/content/100-fundamental-topics/107-conditional-rendering.md index 01b43badd..89e05be8e 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/107-conditional-rendering.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/107-conditional-rendering.md @@ -5,5 +5,3 @@ The directive `v-if` is used to conditionally render a block. The block will onl Visit the following resources to learn more: - [Conditional Rendering](https://vuejs.org/guide/essentials/conditional.html) - - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/110-events-handling.md b/src/data/roadmaps/vue/content/100-fundamental-topics/110-events-handling.md index 0d80850d6..f6250e799 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/110-events-handling.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/110-events-handling.md @@ -5,4 +5,3 @@ When you build a dynamic website with Vue you'll most likely want it to be able Visit the following resources to learn more: - [Event Handling in Vue.js](https://vuejs.org/guide/essentials/event-handling.html) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/111-computed-properties.md b/src/data/roadmaps/vue/content/100-fundamental-topics/111-computed-properties.md index ccb527fb2..35f453961 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/111-computed-properties.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/111-computed-properties.md @@ -5,4 +5,3 @@ In-template expressions are very convenient, but they are meant for simple opera Visit the following resources to learn more: - [Computed Properties](https://vuejs.org/guide/essentials/computed.html#computed-properties) - diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/index.md b/src/data/roadmaps/vue/content/100-fundamental-topics/index.md index e3b875b71..fe7e797bd 100644 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/index.md +++ b/src/data/roadmaps/vue/content/100-fundamental-topics/index.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Vue.js Official Website](https://vuejs.org/) - [Official Documentation](https://vuejs.org/guide/introduction.html) - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/100-ref.md b/src/data/roadmaps/vue/content/101-advanced-topics/100-ref.md index 20bc42d34..209d0b713 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/100-ref.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/100-ref.md @@ -6,6 +6,3 @@ Visit the following resources to learn more: - [Ref() vs Reactive() in Vue 3 — what’s the right choice?](https://medium.com/@bsalwiczek/ref-vs-reactive-in-vue-3-whats-the-right-choice-7c6f7265ce39) - [Reactivity API — ref](https://vuejs.org/api/reactivity-core.html#ref) - - - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/101-torefs.md b/src/data/roadmaps/vue/content/101-advanced-topics/101-torefs.md index 15d07cc2b..1a05ff761 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/101-torefs.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/101-torefs.md @@ -6,5 +6,3 @@ Visit the following resources to learn more: - [Reactivity API — toRefs](https://vuejs.org/api/reactivity-utilities.html#toref) - [Vue 3: Reactivity Made Easy (ref, reactive, toRefs... oh my!)](https://www.youtube.com/watch?v=sAj6tdVS2cA) - - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/102-reactive.md b/src/data/roadmaps/vue/content/101-advanced-topics/102-reactive.md index 54a4240ef..4136a8711 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/102-reactive.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/102-reactive.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Reactivity API — reactive](https://vuejs.org/api/reactivity-core.html#reactive) - [Diving into Vue 3 - The Reactivity API](https://developers.deepgram.com/blog/2022/02/diving-into-vue-3-reactivity-api/) - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/103-computed.md b/src/data/roadmaps/vue/content/101-advanced-topics/103-computed.md index bea3b2385..2aab3e554 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/103-computed.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/103-computed.md @@ -5,4 +5,3 @@ Visit the following resources to learn more: - [Reactivity Core — computed](https://vuejs.org/api/reactivity-core.html#computed) - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/104-watch.md b/src/data/roadmaps/vue/content/101-advanced-topics/104-watch.md index 569b4a018..3d8875e1f 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/104-watch.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/104-watch.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Reactivity API — watch](https://vuejs.org/api/reactivity-core.html#watch) - [Understanding watchers in Vue](https://blog.logrocket.com/understanding-watchers-vue/) - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/106-composables.md b/src/data/roadmaps/vue/content/101-advanced-topics/106-composables.md index 496de3510..c22f89a65 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/106-composables.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/106-composables.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [Vue.js Composables](https://vuejs.org/guide/reusability/composables.html) - [What is a Composable? (Vue 3)](https://www.youtube.com/watch?v=h8yveYCbFQM) - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/109-provide-inject.md b/src/data/roadmaps/vue/content/101-advanced-topics/109-provide-inject.md index af224c638..ac04116b5 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/109-provide-inject.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/109-provide-inject.md @@ -5,4 +5,3 @@ Usually, when we need to pass data from the parent to a child component, we use Visit the following resources to learn more: - [Provide / Inject in Vue.js](https://vuejs.org/guide/components/provide-inject.html) - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/112-plugins.md b/src/data/roadmaps/vue/content/101-advanced-topics/112-plugins.md index 17d9fca88..2e23c8df3 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/112-plugins.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/112-plugins.md @@ -1,6 +1,6 @@ # Plugins -Plugins are self-contained code that usually add app-level functionality to Vue. +Plugins are self-contained code that usually add app-level functionality to Vue. Visit the following resources to learn more: diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/114-slots.md b/src/data/roadmaps/vue/content/101-advanced-topics/114-slots.md index 913f517a2..13fe6d0f3 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/114-slots.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/114-slots.md @@ -5,6 +5,3 @@ In some cases, we may want to pass a template fragment to a child component, and Visit the following resources to learn more: - [Slots in Vue.js](https://vuejs.org/guide/components/slots.html) - - - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/115-transition.md b/src/data/roadmaps/vue/content/101-advanced-topics/115-transition.md index c7b85ef55..5d393284f 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/115-transition.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/115-transition.md @@ -2,10 +2,9 @@ Vue offers two built-in components that can help work with transitions and animations in response to changing state: -* `` for applying animations when an element or component is entering and leaving the DOM. This is covered on this page. -* `` for applying animations when an element or component is inserted into, removed from, or moved within a `v-for` list. This is covered in the next chapter. +- `` for applying animations when an element or component is entering and leaving the DOM. This is covered on this page. +- `` for applying animations when an element or component is inserted into, removed from, or moved within a `v-for` list. This is covered in the next chapter. Visit the following resources to learn more: - [Transition Component](https://vuejs.org/guide/built-ins/transition.html#transition) - diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/116-transition-group.md b/src/data/roadmaps/vue/content/101-advanced-topics/116-transition-group.md index 277779376..a23aa69e8 100644 --- a/src/data/roadmaps/vue/content/101-advanced-topics/116-transition-group.md +++ b/src/data/roadmaps/vue/content/101-advanced-topics/116-transition-group.md @@ -5,4 +5,3 @@ Visit the following resources to learn more: - [TransitionGroup Component](https://vuejs.org/guide/built-ins/transition-group.html) - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/100-routing/100-vue-router.md b/src/data/roadmaps/vue/content/102-ecosystem/100-routing/100-vue-router.md index 25c386c58..54fe14549 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/100-routing/100-vue-router.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/100-routing/100-vue-router.md @@ -5,4 +5,3 @@ Vue Router is the official router for Vue.js which allows creating static/dynami Visit the following resources to learn more: - [Vue Router](https://router.vuejs.org/) - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/100-vue-formulate.md b/src/data/roadmaps/vue/content/102-ecosystem/101-forms/100-vue-formulate.md index 5f680d612..052f95136 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/100-vue-formulate.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/101-forms/100-vue-formulate.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Official Website: Vue Formulate](https://vueformulate.com/) - [wearebraid/vue-formulate](https://github.com/wearebraid/vue-formulate) - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/101-vee-validate.md b/src/data/roadmaps/vue/content/102-ecosystem/101-forms/101-vee-validate.md index 473987b77..208b62568 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/101-vee-validate.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/101-forms/101-vee-validate.md @@ -6,5 +6,3 @@ Visit the following resources to learn more: - [Official Website: Vee Validate](https://vee-validate.logaretm.com/v4/) - [logarem/vee-validate](https://github.com/logaretm/vee-validate) - - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/102-vuelidate.md b/src/data/roadmaps/vue/content/102-ecosystem/101-forms/102-vuelidate.md index c8e0c97b0..9311028fd 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/102-vuelidate.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/101-forms/102-vuelidate.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Official Website: Vuelidate](https://vuelidate.js.org/) - [vuelidate/vuelidate](https://github.com/vuelidate/vuelidate) - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/102-ssr/100-quasar.md b/src/data/roadmaps/vue/content/102-ecosystem/102-ssr/100-quasar.md index a75ae338c..e79cf4b81 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/102-ssr/100-quasar.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/102-ssr/100-quasar.md @@ -7,5 +7,3 @@ Visit the following resources to learn more: - [Official Website: Quasar](https://quasar.dev/) - [Quasar Framework: Vue.js Cross Platform App](https://www.youtube.com/watch?v=opmng7llVJ0&list=PLAiDzIdBfy8iu_MZrq3IPuSFcRgCQ0iL0) - [How to Build an App using Quasar Framework](https://www.youtube.com/watch?v=czJIuHyPPXo) - - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/105-mobile-apps/100-capacitor.md b/src/data/roadmaps/vue/content/102-ecosystem/105-mobile-apps/100-capacitor.md index ab7314833..547f7a1da 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/105-mobile-apps/100-capacitor.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/105-mobile-apps/100-capacitor.md @@ -6,5 +6,3 @@ Visit the following resources to learn more: - [Building cross-platform apps with Capacitor and Vue.js](https://blog.logrocket.com/building-cross-platform-apps-with-capacitor-and-vue-js/) - [Building Mobile Apps With Capacitor And Vue.js](https://www.smashingmagazine.com/2018/07/mobile-apps-capacitor-vue-js/) - - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/102-axios.md b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/102-axios.md index 28c5f0ced..a6918ed9a 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/102-axios.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/102-axios.md @@ -8,5 +8,3 @@ Visit the following resources to learn more: - [Axios Getting Started](https://axios-http.com/docs/intro) - [How to make HTTP requests with Axios](https://blog.logrocket.com/how-to-make-http-requests-like-a-pro-with-axios/#why) - - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/103-unfetch.md b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/103-unfetch.md index b9d17eb08..fea541e34 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/103-unfetch.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/103-unfetch.md @@ -5,5 +5,3 @@ Unfetch is the bare minimum 500b [fetch](https://developer.mozilla.org/en-US/doc Visit the following resources to learn more: - [Official GitHub Repository](https://github.com/developit/unfetch) - - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/104-superagent.md b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/104-superagent.md index f12634fdc..46df3fed7 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/104-superagent.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/104-superagent.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [Official Website](https://visionmedia.github.io/superagent/) - [GitHub Repository](https://github.com/visionmedia/superagent) - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/index.md b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/index.md index d258b622b..8659a1aa8 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/index.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/index.md @@ -5,4 +5,3 @@ There are several options available to make API calls from your Vue.js applicati Visit the following resources to learn more: - [How To Make API calls in Vue.JS Applications](https://medium.com/bb-tutorials-and-thoughts/how-to-make-api-calls-in-vue-js-applications-43e017d4dc86) - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/112-element-ui.md b/src/data/roadmaps/vue/content/102-ecosystem/112-element-ui.md index 109605bcf..eb99cc789 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/112-element-ui.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/112-element-ui.md @@ -6,5 +6,3 @@ Visit the following resources to learn more: - [Official Website](https://element-plus.org/en-US/) - [Official Getting Started](https://element-plus.org/en-US/guide/design.html) - - diff --git a/src/data/roadmaps/vue/content/102-ecosystem/index.md b/src/data/roadmaps/vue/content/102-ecosystem/index.md index 2047532ae..53c9f10e7 100644 --- a/src/data/roadmaps/vue/content/102-ecosystem/index.md +++ b/src/data/roadmaps/vue/content/102-ecosystem/index.md @@ -5,4 +5,3 @@ Thanks to its popularity, Vue has been enriched by a vast ecosystem of plugins a Visit the following resources to learn more: - [Awesome Vue.js](https://github.com/vuejs/awesome-vue) - diff --git a/src/data/roadmaps/vue/vue.md b/src/data/roadmaps/vue/vue.md index 71f7addfe..312ffd65a 100644 --- a/src/data/roadmaps/vue/vue.md +++ b/src/data/roadmaps/vue/vue.md @@ -1,60 +1,59 @@ --- -jsonUrl: "/jsons/roadmaps/vue.json" -pdfUrl: "/pdfs/roadmaps/vue.pdf" +jsonUrl: '/jsons/roadmaps/vue.json' +pdfUrl: '/pdfs/roadmaps/vue.pdf' order: 4 -briefTitle: "Vue" -briefDescription: "Step by step guide to become a Vue Developer in 2023" -title: "Vue Developer" -description: "Everything that is there to learn about Vue and the ecosystem in 2023." +briefTitle: 'Vue' +briefDescription: 'Step by step guide to become a Vue Developer in 2023' +title: 'Vue Developer' +description: 'Everything that is there to learn about Vue and the ecosystem in 2023.' isNew: false hasTopics: true dimensions: width: 968 height: 1657.07 schema: - headline: "Vue Developer Roadmap" - description: "Learn to become a Vue Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place." - imageUrl: "https://roadmap.sh/roadmaps/vue.png" - datePublished: "2023-01-05" - dateModified: "2023-01-20" + headline: 'Vue Developer Roadmap' + description: 'Learn to become a Vue Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' + imageUrl: 'https://roadmap.sh/roadmaps/vue.png' + datePublished: '2023-01-05' + dateModified: '2023-01-20' seo: - title: "Vue Developer Roadmap: Learn to become a Vue developer" - description: "Community driven, articles, resources, guides, interview questions, quizzes for vue development. Learn to become a modern Vue developer by following the steps, skills, resources and guides listed in this roadmap." + title: 'Vue Developer Roadmap: Learn to become a Vue developer' + description: 'Community driven, articles, resources, guides, interview questions, quizzes for vue development. Learn to become a modern Vue developer by following the steps, skills, resources and guides listed in this roadmap.' keywords: - - "guide to becoming a vue developer" - - "guide to becoming a vue.js developer" - - "vue developer roadmap" - - "vue.js developer roadmap" - - "vue roadmap" - - "vue.js roadmap" - - "become vue developer" - - "become vue.js developer" - - "vue developer skills" - - "vue.js developer skills" - - "vue skills test" - - "vue.js skills test" - - "skills for vue development" - - "skills for vue.js development" - - "learn vue development" - - "learn vue.js development" - - "what is vue" - - "what is vue.js" - - "vue quiz" - - "vue.js quiz" - - "vue interview questions" - - "vue.js interview questions" + - 'guide to becoming a vue developer' + - 'guide to becoming a vue.js developer' + - 'vue developer roadmap' + - 'vue.js developer roadmap' + - 'vue roadmap' + - 'vue.js roadmap' + - 'become vue developer' + - 'become vue.js developer' + - 'vue developer skills' + - 'vue.js developer skills' + - 'vue skills test' + - 'vue.js skills test' + - 'skills for vue development' + - 'skills for vue.js development' + - 'learn vue development' + - 'learn vue.js development' + - 'what is vue' + - 'what is vue.js' + - 'vue quiz' + - 'vue.js quiz' + - 'vue interview questions' + - 'vue.js interview questions' relatedRoadmaps: - - "frontend" - - "javascript" - - "react" - - "angular" - - "nodejs" + - 'frontend' + - 'javascript' + - 'react' + - 'angular' + - 'nodejs' sitemap: priority: 1 - changefreq: "monthly" + changefreq: 'monthly' tags: - - "roadmap" - - "main-sitemap" - - "skill-roadmap" + - 'roadmap' + - 'main-sitemap' + - 'skill-roadmap' --- - diff --git a/src/data/videos/acid-explained.md b/src/data/videos/acid-explained.md index 99eee7d0c..6477e102d 100644 --- a/src/data/videos/acid-explained.md +++ b/src/data/videos/acid-explained.md @@ -1,19 +1,19 @@ --- -title: "ACID Explained" -description: "Learn what it means for a database to be ACID compliant with examples." -duration: "5 minutes" +title: 'ACID Explained' +description: 'Learn what it means for a database to be ACID compliant with examples.' +duration: '5 minutes' isNew: false date: 2021-09-26 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/all-about-http-caching.md b/src/data/videos/all-about-http-caching.md index 17cbb897b..570374133 100644 --- a/src/data/videos/all-about-http-caching.md +++ b/src/data/videos/all-about-http-caching.md @@ -1,19 +1,19 @@ --- -title: "All about HTTP Caching" -description: "Learn what is HTTP caching, places for caching and different caching headers." -duration: "13 minutes" +title: 'All about HTTP Caching' +description: 'Learn what is HTTP caching, places for caching and different caching headers.' +duration: '13 minutes' isNew: false date: 2020-10-04 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/array-structure.md b/src/data/videos/array-structure.md index c86c92c36..d043fb8b0 100644 --- a/src/data/videos/array-structure.md +++ b/src/data/videos/array-structure.md @@ -1,19 +1,19 @@ --- -title: "All about Array Data Structure" -description: "Learn everything you need to know about array data structure" -duration: "10 minutes" +title: 'All about Array Data Structure' +description: 'Learn everything you need to know about array data structure' +duration: '10 minutes' isNew: false date: 2022-01-09 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/arrays-and-objects-in-javascript.md b/src/data/videos/arrays-and-objects-in-javascript.md index b65ddf902..d116acc58 100644 --- a/src/data/videos/arrays-and-objects-in-javascript.md +++ b/src/data/videos/arrays-and-objects-in-javascript.md @@ -1,19 +1,19 @@ --- -title: "Arrays and Objects in JavaScript" -description: "Learn how to manipulate arrays and objects in JavaScript." -duration: "12 minutes" +title: 'Arrays and Objects in JavaScript' +description: 'Learn how to manipulate arrays and objects in JavaScript.' +duration: '12 minutes' isNew: false date: 2020-05-09 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/async-javascript.md b/src/data/videos/async-javascript.md index caa68a2a3..2e4b75b00 100644 --- a/src/data/videos/async-javascript.md +++ b/src/data/videos/async-javascript.md @@ -1,19 +1,19 @@ --- -title: "Asynchronous JavaScript" -description: "Learn how to write asynchronous JavaScript using Async/Await" -duration: "15 minutes" +title: 'Asynchronous JavaScript' +description: 'Learn how to write asynchronous JavaScript using Async/Await' +duration: '15 minutes' isNew: false date: 2021-11-14 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/basic-authentication.md b/src/data/videos/basic-authentication.md index 223dbc84c..e08e19234 100644 --- a/src/data/videos/basic-authentication.md +++ b/src/data/videos/basic-authentication.md @@ -1,19 +1,19 @@ --- -title: "Basic Authentication" -description: "Learn everything you need to know about basic authentication" -duration: "5 minutes" +title: 'Basic Authentication' +description: 'Learn everything you need to know about basic authentication' +duration: '5 minutes' isNew: true date: 2022-10-01 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/basics-of-authentication.md b/src/data/videos/basics-of-authentication.md index 147123857..97d48f72c 100644 --- a/src/data/videos/basics-of-authentication.md +++ b/src/data/videos/basics-of-authentication.md @@ -1,19 +1,19 @@ --- -title: "Basics of Authentication" -description: "Learn everything you need to know about authentication with this Authentication Series" -duration: "5 minutes" +title: 'Basics of Authentication' +description: 'Learn everything you need to know about authentication with this Authentication Series' +duration: '5 minutes' isNew: true date: 2022-09-21 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/big-o-notation.md b/src/data/videos/big-o-notation.md index a46dcd004..4fdd33c2c 100644 --- a/src/data/videos/big-o-notation.md +++ b/src/data/videos/big-o-notation.md @@ -1,19 +1,19 @@ --- -title: "Big O Notation" -description: "Learn what the Big-O notation is and how to calculate the time complexity of an algorithm." -duration: "8 minutes" +title: 'Big O Notation' +description: 'Learn what the Big-O notation is and how to calculate the time complexity of an algorithm.' +duration: '8 minutes' isNew: false date: 2021-10-25 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/content-delivery-networks.md b/src/data/videos/content-delivery-networks.md index ebe08bbbe..161526526 100644 --- a/src/data/videos/content-delivery-networks.md +++ b/src/data/videos/content-delivery-networks.md @@ -1,19 +1,19 @@ --- -title: "Content Delivery Networks" -description: "Learn what the CDNs are and the difference between push CDN vs pull CDN." -duration: "4 minutes" +title: 'Content Delivery Networks' +description: 'Learn what the CDNs are and the difference between push CDN vs pull CDN.' +duration: '4 minutes' isNew: false date: 2020-09-26 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/dns-explained.md b/src/data/videos/dns-explained.md index d0ab73972..e3f4b552d 100644 --- a/src/data/videos/dns-explained.md +++ b/src/data/videos/dns-explained.md @@ -1,19 +1,19 @@ --- -title: "DNS and how does it work?" -description: "Learn what the DNS is and how a website is found on the internet." -duration: "5 minutes" +title: 'DNS and how does it work?' +description: 'Learn what the DNS is and how a website is found on the internet.' +duration: '5 minutes' isNew: false date: 2020-08-17 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/dns-records.md b/src/data/videos/dns-records.md index 8fe683854..f1202fb14 100644 --- a/src/data/videos/dns-records.md +++ b/src/data/videos/dns-records.md @@ -1,19 +1,19 @@ --- -title: "DNS Records" -description: "Learn what the DNS is and how a website is found on the internet." -duration: "6 minutes" +title: 'DNS Records' +description: 'Learn what the DNS is and how a website is found on the internet.' +duration: '6 minutes' isNew: false date: 2020-08-31 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/floating-point-arithmetic.md b/src/data/videos/floating-point-arithmetic.md index 78f544c57..3550a17fb 100644 --- a/src/data/videos/floating-point-arithmetic.md +++ b/src/data/videos/floating-point-arithmetic.md @@ -1,19 +1,19 @@ --- -title: "Floating Point Arithmetic" -description: "Learn how ow the arithmetic operations work on floating-point numbers and why the results might be different from what you may expect." -duration: "4 minutes" +title: 'Floating Point Arithmetic' +description: 'Learn how ow the arithmetic operations work on floating-point numbers and why the results might be different from what you may expect.' +duration: '4 minutes' isNew: false date: 2021-10-10 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/freeze-and-seal-objects-in-javascript.md b/src/data/videos/freeze-and-seal-objects-in-javascript.md index bda66792e..9864dcda6 100644 --- a/src/data/videos/freeze-and-seal-objects-in-javascript.md +++ b/src/data/videos/freeze-and-seal-objects-in-javascript.md @@ -1,19 +1,19 @@ --- -title: "Freeze and Seal in JavaScript" -description: "Learn what is object freeze and seal in JavaScript and how to use them" -duration: "6 minutes" +title: 'Freeze and Seal in JavaScript' +description: 'Learn what is object freeze and seal in JavaScript and how to use them' +duration: '6 minutes' isNew: false date: 2020-10-16 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/graph-data-structure.md b/src/data/videos/graph-data-structure.md index 963bde862..f2817aba6 100644 --- a/src/data/videos/graph-data-structure.md +++ b/src/data/videos/graph-data-structure.md @@ -1,19 +1,19 @@ --- -title: "Graph Data Structure" -description: "Learn everything you need to know about the graph data structure" -duration: "13 minutes" +title: 'Graph Data Structure' +description: 'Learn everything you need to know about the graph data structure' +duration: '13 minutes' isNew: false date: 2022-09-08 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/hash-table-data-structure.md b/src/data/videos/hash-table-data-structure.md index c6c2f61e7..dac323c0d 100644 --- a/src/data/videos/hash-table-data-structure.md +++ b/src/data/videos/hash-table-data-structure.md @@ -1,19 +1,19 @@ --- -title: "Hash Table Data Structure" -description: "Learn everything you need to know about the hash table data structure" -duration: "8 minutes" +title: 'Hash Table Data Structure' +description: 'Learn everything you need to know about the hash table data structure' +duration: '8 minutes' isNew: false date: 2022-02-21 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/heap-data-structure.md b/src/data/videos/heap-data-structure.md index 5e5a4cb63..515b0a893 100644 --- a/src/data/videos/heap-data-structure.md +++ b/src/data/videos/heap-data-structure.md @@ -1,19 +1,19 @@ --- -title: "Heap Data Structure" -description: "Learn everything you need to know about the heap data structure" -duration: "11 minutes" +title: 'Heap Data Structure' +description: 'Learn everything you need to know about the heap data structure' +duration: '11 minutes' isNew: false date: 2022-08-24 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/how-to-use-css-variables.md b/src/data/videos/how-to-use-css-variables.md index 778804ae7..4879fb76e 100644 --- a/src/data/videos/how-to-use-css-variables.md +++ b/src/data/videos/how-to-use-css-variables.md @@ -1,19 +1,19 @@ --- -title: "How to use CSS Variables?" -description: "Learn how to write scalable CSS using CSS Variables." -duration: "5 minutes" +title: 'How to use CSS Variables?' +description: 'Learn how to write scalable CSS using CSS Variables.' +duration: '5 minutes' isNew: false date: 2020-07-03 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/how-to-use-github-actions.md b/src/data/videos/how-to-use-github-actions.md index b99279e2b..46bd25aab 100644 --- a/src/data/videos/how-to-use-github-actions.md +++ b/src/data/videos/how-to-use-github-actions.md @@ -1,19 +1,19 @@ --- -title: "Automate with GitHub Actions" -description: "Learn how to implement CI/CD with GitHub Actions" -duration: "6 minutes" +title: 'Automate with GitHub Actions' +description: 'Learn how to implement CI/CD with GitHub Actions' +duration: '6 minutes' isNew: false date: 2020-07-13 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/javascript-fetch-api.md b/src/data/videos/javascript-fetch-api.md index 854807f4e..dde44b2fc 100644 --- a/src/data/videos/javascript-fetch-api.md +++ b/src/data/videos/javascript-fetch-api.md @@ -1,19 +1,19 @@ --- -title: "JavaScript Fetch API" +title: 'JavaScript Fetch API' description: "Learn how to use JavaScript's Fetch API to interact with remote API." -duration: "3 minutes" +duration: '3 minutes' isNew: false date: 2020-08-02 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/linked-list-data-structure.md b/src/data/videos/linked-list-data-structure.md index 4baa81cdb..c90441bb1 100644 --- a/src/data/videos/linked-list-data-structure.md +++ b/src/data/videos/linked-list-data-structure.md @@ -1,19 +1,19 @@ --- -title: "Linked List Data Structure" -description: "Learn everything you need to know about linked list data structure" -duration: "11 minutes" +title: 'Linked List Data Structure' +description: 'Learn everything you need to know about linked list data structure' +duration: '11 minutes' isNew: false date: 2022-01-31 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/load-balancers-101.md b/src/data/videos/load-balancers-101.md index 94b7d977e..57f0d6466 100644 --- a/src/data/videos/load-balancers-101.md +++ b/src/data/videos/load-balancers-101.md @@ -1,19 +1,19 @@ --- -title: "Load Balancers 101" -description: "Learn the basics of load balancers, types and different algorithms." -duration: "9 minutes" +title: 'Load Balancers 101' +description: 'Learn the basics of load balancers, types and different algorithms.' +duration: '9 minutes' isNew: false date: 2020-09-18 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/osi-model.md b/src/data/videos/osi-model.md index a4a8b3e6f..2ad8afb0f 100644 --- a/src/data/videos/osi-model.md +++ b/src/data/videos/osi-model.md @@ -1,19 +1,19 @@ --- -title: "OSI Model Explained" -description: "Learn what is OSI Model and the different layers involved." -duration: "7 minutes" +title: 'OSI Model Explained' +description: 'Learn what is OSI Model and the different layers involved.' +duration: '7 minutes' isNew: false date: 2020-10-24 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/practical-intro-to-react.md b/src/data/videos/practical-intro-to-react.md index edec7a9fa..3e9a52bc3 100644 --- a/src/data/videos/practical-intro-to-react.md +++ b/src/data/videos/practical-intro-to-react.md @@ -1,19 +1,19 @@ --- -title: "Practical Introduction to React" -description: "Learn how to create a React Application with practical example." -duration: "40 minutes" +title: 'Practical Introduction to React' +description: 'Learn how to create a React Application with practical example.' +duration: '40 minutes' isNew: false date: 2020-07-09 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- In this short series of lessons, we are going to create a react app from scratch. We are mainly going to use React and Chakra UI and see how we can build an application that fetches the trending projects from GitHub's API and shows you in the form of listing. @@ -21,16 +21,19 @@ In this short series of lessons, we are going to create a react app from scratch If you want to get an idea of what we are going to be building have a look at [GitHunt](https://kamranahmed.info/githunt). Also the complete source code can be found at [@kamranahmedse/githunt](https://github.com/kamranahmedse/githunt) ## Intro and Basic Setup + The video below gives you the basic introduction about the project and explains what we are going to build. ## Building the Interface + In this second lesson we are going to create all the required components and the UI using Chakra UI and in the next lesson of this series we are going to start adding interactivity to our application. ## Building the View Switcher + In this lesson we start adding interactivity to the interface. We will be building the view switcher where you can switch between the "Grid View" and the "List View" and in the next and last lesson of the series, we are going to integrate GitHub API and show the repositories. diff --git a/src/data/videos/promises-in-javascript.md b/src/data/videos/promises-in-javascript.md index 686819982..9eca62969 100644 --- a/src/data/videos/promises-in-javascript.md +++ b/src/data/videos/promises-in-javascript.md @@ -1,19 +1,19 @@ --- -title: "All about Promises in JavaScript" -description: "Learn how to write asynchronous code in JavaScript using promises." -duration: "8 minutes" +title: 'All about Promises in JavaScript' +description: 'Learn how to write asynchronous code in JavaScript using promises.' +duration: '8 minutes' isNew: false date: 2020-07-20 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/queue-data-structure.md b/src/data/videos/queue-data-structure.md index edd622873..5fe37658c 100644 --- a/src/data/videos/queue-data-structure.md +++ b/src/data/videos/queue-data-structure.md @@ -1,19 +1,19 @@ --- -title: "Queue Data Structure" -description: "Learn everything you need to know about the queue data structure" -duration: "4 minutes" +title: 'Queue Data Structure' +description: 'Learn everything you need to know about the queue data structure' +duration: '4 minutes' isNew: false date: 2022-02-14 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/random-number-generators.md b/src/data/videos/random-number-generators.md index e1e6e85f8..9a89925b9 100644 --- a/src/data/videos/random-number-generators.md +++ b/src/data/videos/random-number-generators.md @@ -1,19 +1,19 @@ --- -title: "Random Number Generators" -description: "How do random number generators work?" -duration: "8 minutes" +title: 'Random Number Generators' +description: 'How do random number generators work?' +duration: '8 minutes' isNew: false date: 2021-11-03 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/scaling-the-unscalable.md b/src/data/videos/scaling-the-unscalable.md index f3c4fc6c4..1f2c396af 100644 --- a/src/data/videos/scaling-the-unscalable.md +++ b/src/data/videos/scaling-the-unscalable.md @@ -1,19 +1,19 @@ --- -title: "Scaling the Unscalable" -description: "Learn the basics of System Design and understand how to build a scalable application." -duration: "10 minutes" +title: 'Scaling the Unscalable' +description: 'Learn the basics of System Design and understand how to build a scalable application.' +duration: '10 minutes' isNew: false date: 2020-07-26 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/session-based-authentication.md b/src/data/videos/session-based-authentication.md index 15d909308..fc4fb7ab0 100644 --- a/src/data/videos/session-based-authentication.md +++ b/src/data/videos/session-based-authentication.md @@ -1,19 +1,19 @@ --- -title: "Session Based Authentication" -description: "Learn everything you need to know about session authentication" -duration: "2 minutes" +title: 'Session Based Authentication' +description: 'Learn everything you need to know about session authentication' +duration: '2 minutes' isNew: true date: 2022-11-02 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/ssh-ssl-tls.md b/src/data/videos/ssh-ssl-tls.md index 855ea42c1..8f2fcc4f7 100644 --- a/src/data/videos/ssh-ssl-tls.md +++ b/src/data/videos/ssh-ssl-tls.md @@ -1,19 +1,19 @@ --- -title: "SSH vs TLS vs SSL" -description: "Learn the difference between SSH, TLS and SSL" -duration: "3 minutes" +title: 'SSH vs TLS vs SSL' +description: 'Learn the difference between SSH, TLS and SSL' +duration: '3 minutes' isNew: false date: 2021-11-25 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/stack-data-structure.md b/src/data/videos/stack-data-structure.md index aae5ab1d6..feb192841 100644 --- a/src/data/videos/stack-data-structure.md +++ b/src/data/videos/stack-data-structure.md @@ -1,19 +1,19 @@ --- -title: "Stack Data Structure" -description: "Learn everything you need to know about the stack data structure" -duration: "5 minutes" +title: 'Stack Data Structure' +description: 'Learn everything you need to know about the stack data structure' +duration: '5 minutes' isNew: false date: 2022-02-07 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/system-design-101.md b/src/data/videos/system-design-101.md index c8b9ace0c..1eac48a15 100644 --- a/src/data/videos/system-design-101.md +++ b/src/data/videos/system-design-101.md @@ -1,19 +1,19 @@ --- -title: "System Design 101" -description: "Learn about all the bits and pieces of system design." -duration: "7 minutes" +title: 'System Design 101' +description: 'Learn about all the bits and pieces of system design.' +duration: '7 minutes' isNew: false date: 2020-08-08 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/tcp-ip-model.md b/src/data/videos/tcp-ip-model.md index ee49df89e..3eb665105 100644 --- a/src/data/videos/tcp-ip-model.md +++ b/src/data/videos/tcp-ip-model.md @@ -1,19 +1,19 @@ --- -title: "TCP/IP Model Explained" -description: "Learn what is TCP/IP Model and the different layers involved." -duration: "5 minutes" +title: 'TCP/IP Model Explained' +description: 'Learn what is TCP/IP Model and the different layers involved.' +duration: '5 minutes' isNew: false date: 2020-11-06 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/transport-protocols-tcp-vs-udp.md b/src/data/videos/transport-protocols-tcp-vs-udp.md index b0ca0a7bf..eb765e2e1 100644 --- a/src/data/videos/transport-protocols-tcp-vs-udp.md +++ b/src/data/videos/transport-protocols-tcp-vs-udp.md @@ -1,19 +1,19 @@ --- -title: "Transport Protocols: TCP vs UDP" -description: "Learn about the Transport Layer of the TCP/IP model and different transport protocols." -duration: "10 minutes" +title: 'Transport Protocols: TCP vs UDP' +description: 'Learn about the Transport Layer of the TCP/IP model and different transport protocols.' +duration: '10 minutes' isNew: false date: 2020-11-21 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/tree-data-structure.md b/src/data/videos/tree-data-structure.md index 5ed5cfe82..a0e5967bf 100644 --- a/src/data/videos/tree-data-structure.md +++ b/src/data/videos/tree-data-structure.md @@ -1,19 +1,19 @@ --- -title: "Tree Data Structure" -description: "Learn everything you need to know about the tree data structure" -duration: "8 minutes" +title: 'Tree Data Structure' +description: 'Learn everything you need to know about the tree data structure' +duration: '8 minutes' isNew: false date: 2022-08-11 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/what-are-data-structures.md b/src/data/videos/what-are-data-structures.md index d57dca242..800119e2b 100644 --- a/src/data/videos/what-are-data-structures.md +++ b/src/data/videos/what-are-data-structures.md @@ -1,19 +1,19 @@ --- -title: "What are Data Structures?" -description: "Learn about the different data structures in this illustrated series" -duration: "1 minute" +title: 'What are Data Structures?' +description: 'Learn about the different data structures in this illustrated series' +duration: '1 minute' isNew: false date: 2021-12-12 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/what-is-cap-theorem.md b/src/data/videos/what-is-cap-theorem.md index 6e0eb0938..53371c60d 100644 --- a/src/data/videos/what-is-cap-theorem.md +++ b/src/data/videos/what-is-cap-theorem.md @@ -1,19 +1,19 @@ --- -title: "What is CAP Theorem?" -description: "An illustrated explanation to CAP theorem with examples and proof." -duration: "8 minutes" +title: 'What is CAP Theorem?' +description: 'An illustrated explanation to CAP theorem with examples and proof.' +duration: '8 minutes' isNew: false date: 2021-10-05 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/what-is-dependency-injection.md b/src/data/videos/what-is-dependency-injection.md index 2e65a2703..81f0653de 100644 --- a/src/data/videos/what-is-dependency-injection.md +++ b/src/data/videos/what-is-dependency-injection.md @@ -1,19 +1,19 @@ --- -title: "What is Dependency Injection?" -description: "Learn what is dependency injection and how to write better code with the help of it." -duration: "3 minutes" +title: 'What is Dependency Injection?' +description: 'Learn what is dependency injection and how to write better code with the help of it.' +duration: '3 minutes' isNew: false date: 2020-07-04 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/what-is-dom-shadow-dom-virtual-dom.md b/src/data/videos/what-is-dom-shadow-dom-virtual-dom.md index 2b519b67e..dbfda279f 100644 --- a/src/data/videos/what-is-dom-shadow-dom-virtual-dom.md +++ b/src/data/videos/what-is-dom-shadow-dom-virtual-dom.md @@ -1,19 +1,19 @@ --- -title: "DOM, Shadow DOM, Virtual DOM" -description: "Learn what is DOM, Shadow DOM and Virtual DOM and how they work." -duration: "6 minutes" +title: 'DOM, Shadow DOM, Virtual DOM' +description: 'Learn what is DOM, Shadow DOM and Virtual DOM and how they work.' +duration: '6 minutes' isNew: false date: 2020-07-20 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- - \ No newline at end of file + diff --git a/src/data/videos/what-is-eventual-consistency.md b/src/data/videos/what-is-eventual-consistency.md index 6c68cbb70..a95b0768d 100644 --- a/src/data/videos/what-is-eventual-consistency.md +++ b/src/data/videos/what-is-eventual-consistency.md @@ -1,19 +1,19 @@ --- -title: "What is Eventual Consistency?" -description: "Learn about the different consistency models in distributed systems" -duration: "5 minutes" +title: 'What is Eventual Consistency?' +description: 'Learn about the different consistency models in distributed systems' +duration: '5 minutes' isNew: false date: 2021-11-30 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/data/videos/yaml-in-depth.md b/src/data/videos/yaml-in-depth.md index 1be654d24..fb831d37d 100644 --- a/src/data/videos/yaml-in-depth.md +++ b/src/data/videos/yaml-in-depth.md @@ -1,19 +1,19 @@ --- -title: "YAML in Depth" -description: "Everything you need to know about YAML" -duration: "8 minutes" +title: 'YAML in Depth' +description: 'Everything you need to know about YAML' +duration: '8 minutes' isNew: false date: 2021-10-18 author: - name: "Kamran Ahmed" - url: "https://twitter.com/kamranahmedse" - imageUrl: "/authors/kamranahmedse.jpeg" + name: 'Kamran Ahmed' + url: 'https://twitter.com/kamranahmedse' + imageUrl: '/authors/kamranahmedse.jpeg' sitemap: priority: 0.7 - changefreq: "weekly" + changefreq: 'weekly' tags: - - "video" - - "video-sitemap" + - 'video' + - 'video-sitemap' --- diff --git a/src/lib/File.ts b/src/lib/File.ts index 47da512c7..eebe568cf 100644 --- a/src/lib/File.ts +++ b/src/lib/File.ts @@ -8,4 +8,4 @@ export interface MarkdownFileType> { slug: string; text: string; }[]; -} \ No newline at end of file +} diff --git a/src/lib/best-practice-topic.ts b/src/lib/best-practice-topic.ts index 3b2478bc6..abae4bc0f 100644 --- a/src/lib/best-practice-topic.ts +++ b/src/lib/best-practice-topic.ts @@ -27,10 +27,15 @@ export interface BestPracticeTopicFileType { * Gets all the topic files available for all the best practices * @returns Hashmap containing the topic slug and the topic file content */ -export async function getAllBestPracticeTopicFiles(): Promise> { - const contentFiles = await import.meta.glob('/src/data/best-practices/*/content/**/*.md', { - eager: true, - }); +export async function getAllBestPracticeTopicFiles(): Promise< + Record +> { + const contentFiles = await import.meta.glob( + '/src/data/best-practices/*/content/**/*.md', + { + eager: true, + } + ); const mapping: Record = {}; @@ -39,10 +44,14 @@ export async function getAllBestPracticeTopicFiles(): Promise */ -export async function getTopicsByBestPracticeId(bestPracticeId: string): Promise { +export async function getTopicsByBestPracticeId( + bestPracticeId: string +): Promise { const topicFileMapping = await getAllBestPracticeTopicFiles(); const allTopics = Object.values(topicFileMapping); diff --git a/src/lib/best-pratice.ts b/src/lib/best-pratice.ts index 3a83a10bd..39f8f573a 100644 --- a/src/lib/best-pratice.ts +++ b/src/lib/best-pratice.ts @@ -46,9 +46,12 @@ function bestPracticePathToId(filePath: string): string { * @returns string[] Array of best practices file IDs */ export async function getBestPracticeIds() { - const bestPracticeFiles = await import.meta.glob('/src/data/best-practices/*/*.md', { - eager: true, - }); + const bestPracticeFiles = await import.meta.glob( + '/src/data/best-practices/*/*.md', + { + eager: true, + } + ); return Object.keys(bestPracticeFiles).map(bestPracticePathToId); } @@ -60,9 +63,12 @@ export async function getBestPracticeIds() { * @returns Promisified BestPracticeFileType[] */ export async function getAllBestPractices(): Promise { - const bestPracticeFilesMap = await import.meta.glob('/src/data/best-practices/*/*.md', { - eager: true, - }); + const bestPracticeFilesMap = await import.meta.glob( + '/src/data/best-practices/*/*.md', + { + eager: true, + } + ); const bestPracticeFiles = Object.values(bestPracticeFilesMap); const bestPracticeItems = bestPracticeFiles.map((bestPracticeFile) => ({ @@ -70,5 +76,7 @@ export async function getAllBestPractices(): Promise { id: bestPracticePathToId(bestPracticeFile.file), })); - return bestPracticeItems.sort((a, b) => a.frontmatter.order - b.frontmatter.order); + return bestPracticeItems.sort( + (a, b) => a.frontmatter.order - b.frontmatter.order + ); } diff --git a/src/lib/config.ts b/src/lib/config.ts index e2ca84537..a9653ca51 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -1,6 +1,7 @@ export const siteConfig = { title: 'Roadmaps to becoming a modern developer', - description: 'Community driven roadmaps, articles and guides for developers to grow in their career.', + description: + 'Community driven roadmaps, articles and guides for developers to grow in their career.', url: { twitter: 'https://twitter.com/roadmapsh', youtube: 'https://youtube.com/theroadmap?sub_confirmation=1', diff --git a/src/lib/guide.ts b/src/lib/guide.ts index b76b4771f..a23033382 100644 --- a/src/lib/guide.ts +++ b/src/lib/guide.ts @@ -44,9 +44,12 @@ function guidePathToId(filePath: string): string { * @returns Promisifed guide files */ export async function getAllGuides(): Promise { - const guides = await import.meta.glob('/src/data/guides/*.md', { - eager: true, - }); + const guides = await import.meta.glob( + '/src/data/guides/*.md', + { + eager: true, + } + ); const guideFiles = Object.values(guides); const enrichedGuides = guideFiles.map((guideFile) => ({ diff --git a/src/lib/jsonld-schema.ts b/src/lib/jsonld-schema.ts index af580b0b8..ae699720e 100644 --- a/src/lib/jsonld-schema.ts +++ b/src/lib/jsonld-schema.ts @@ -10,7 +10,8 @@ type ArticleSchemaProps = { }; export function generateArticleSchema(article: ArticleSchemaProps) { - const { url, headline, description, imageUrl, datePublished, dateModified } = article; + const { url, headline, description, imageUrl, datePublished, dateModified } = + article; return { '@context': 'https://schema.org', diff --git a/src/lib/link-group.ts b/src/lib/link-group.ts index fda2fd465..2b765561b 100644 --- a/src/lib/link-group.ts +++ b/src/lib/link-group.ts @@ -25,9 +25,12 @@ function linkGroupPathToId(filePath: string): string { * @returns Promisifed linkGroup files */ export async function getAllLinkGroups(): Promise { - const linkGroups = await import.meta.glob('/src/link-groups/*.md', { - eager: true, - }); + const linkGroups = await import.meta.glob( + '/src/link-groups/*.md', + { + eager: true, + } + ); const linkGroupFiles = Object.values(linkGroups); const enrichedLinkGroups = linkGroupFiles.map((linkGroupFile) => ({ diff --git a/src/lib/roadmap-topic.ts b/src/lib/roadmap-topic.ts index 61ad6daa7..81cdab69a 100644 --- a/src/lib/roadmap-topic.ts +++ b/src/lib/roadmap-topic.ts @@ -21,7 +21,10 @@ function generateTopicUrl(filePath: string) { * @param topicUrl Topic URL for which breadcrumbs are required * @param topicFiles Topic file mapping to read the topic data from */ -function generateBreadcrumbs(topicUrl: string, topicFiles: Record): BreadcrumbItem[] { +function generateBreadcrumbs( + topicUrl: string, + topicFiles: Record +): BreadcrumbItem[] { // We need to collect all the pages with permalinks to generate breadcrumbs // e.g. /backend/internet/how-does-internet-work/http // /backend @@ -75,10 +78,15 @@ export interface RoadmapTopicFileType { * Gets all the topic files available for all the roadmaps * @returns Hashmap containing the topic slug and the topic file content */ -export async function getRoadmapTopicFiles(): Promise> { - const contentFiles = await import.meta.glob('/src/data/roadmaps/*/content/**/*.md', { - eager: true, - }); +export async function getRoadmapTopicFiles(): Promise< + Record +> { + const contentFiles = await import.meta.glob( + '/src/data/roadmaps/*/content/**/*.md', + { + eager: true, + } + ); const mapping: Record = {}; @@ -87,10 +95,13 @@ export async function getRoadmapTopicFiles(): Promise { - const { roadmap: currentRoadmap, roadmapId, file: currentTopic } = mapping[topicUrl]; + const { + roadmap: currentRoadmap, + roadmapId, + file: currentTopic, + } = mapping[topicUrl]; const roadmapUrl = `/${roadmapId}`; // Breadcrumbs for the file @@ -158,7 +173,9 @@ export async function getRoadmapTopicFiles(): Promise { +async function sortTopics( + topics: RoadmapTopicFileType[] +): Promise { let sortedTopics: RoadmapTopicFileType[] = []; // For each of the topic, find its place in the sorted topics @@ -193,10 +210,14 @@ async function sortTopics(topics: RoadmapTopicFileType[]): Promise */ -export async function getTopicsByRoadmapId(roadmapId: string): Promise { +export async function getTopicsByRoadmapId( + roadmapId: string +): Promise { const topicFileMapping = await getRoadmapTopicFiles(); const allTopics = Object.values(topicFileMapping); - const roadmapTopics = allTopics.filter((topic) => topic.roadmapId === roadmapId); + const roadmapTopics = allTopics.filter( + (topic) => topic.roadmapId === roadmapId + ); return sortTopics(roadmapTopics); } diff --git a/src/lib/roadmap.ts b/src/lib/roadmap.ts index 641a6d21d..1da54211f 100644 --- a/src/lib/roadmap.ts +++ b/src/lib/roadmap.ts @@ -55,9 +55,12 @@ function roadmapPathToId(filePath: string): string { * @returns string[] Array of roadmap IDs */ export async function getRoadmapIds() { - const roadmapFiles = await import.meta.glob('/src/data/roadmaps/*/*.md', { - eager: true, - }); + const roadmapFiles = await import.meta.glob( + '/src/data/roadmaps/*/*.md', + { + eager: true, + } + ); return Object.keys(roadmapFiles).map(roadmapPathToId); } @@ -68,10 +71,15 @@ export async function getRoadmapIds() { * @param tag Tag assigned to roadmap * @returns Promisified RoadmapFileType[] */ -export async function getRoadmapsByTag(tag: string): Promise { - const roadmapFilesMap = await import.meta.glob('/src/data/roadmaps/*/*.md', { - eager: true, - }); +export async function getRoadmapsByTag( + tag: string +): Promise { + const roadmapFilesMap = await import.meta.glob( + '/src/data/roadmaps/*/*.md', + { + eager: true, + } + ); const roadmapFiles = Object.values(roadmapFilesMap); const filteredRoadmaps = roadmapFiles @@ -81,13 +89,18 @@ export async function getRoadmapsByTag(tag: string): Promise id: roadmapPathToId(roadmapFile.file), })); - return filteredRoadmaps.sort((a, b) => a.frontmatter.order - b.frontmatter.order); + return filteredRoadmaps.sort( + (a, b) => a.frontmatter.order - b.frontmatter.order + ); } export async function getRoadmapById(id: string): Promise { - const roadmapFilesMap = await import.meta.glob('/src/data/roadmaps/*/*.md', { - eager: true, - }); + const roadmapFilesMap = await import.meta.glob( + '/src/data/roadmaps/*/*.md', + { + eager: true, + } + ); const roadmapFile = Object.values(roadmapFilesMap).find((roadmapFile) => { return roadmapPathToId(roadmapFile.file) === id; @@ -103,6 +116,8 @@ export async function getRoadmapById(id: string): Promise { }; } -export async function getRoadmapsByIds(ids: string[]): Promise { +export async function getRoadmapsByIds( + ids: string[] +): Promise { return Promise.all(ids.map((id) => getRoadmapById(id))); } diff --git a/src/lib/video.ts b/src/lib/video.ts index 3f0f8448f..22206bc8a 100644 --- a/src/lib/video.ts +++ b/src/lib/video.ts @@ -43,9 +43,12 @@ function videoPathToId(filePath: string): string { * @returns Promisifed video files */ export async function getAllVideos(): Promise { - const videos = await import.meta.glob('/src/data/videos/*.md', { - eager: true, - }); + const videos = await import.meta.glob( + '/src/data/videos/*.md', + { + eager: true, + } + ); const videoFiles = Object.values(videos); const enrichedVideos = videoFiles.map((videoFile) => ({ diff --git a/src/pages/pdfs.md b/src/pages/pdfs.md index c852bbcd5..e18156491 100644 --- a/src/pages/pdfs.md +++ b/src/pages/pdfs.md @@ -8,36 +8,36 @@ noIndex: true Here is the list of PDF links for each of the roadmaps. -* **Frontend Roadmap** - [Roadmap Link](https://roadmap.sh/frontend) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/frontend.pdf) -* **Backend Roadmap** - [Roadmap Link](https://roadmap.sh/backend) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/backend.pdf) -* **DevOps Roadmap** - [Roadmap Link](https://roadmap.sh/devops) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/devops.pdf) -* **Computer Science Roadmap** - [Roadmap Link](https://roadmap.sh/computer-science) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/computer-science.pdf) -* **QA Roadmap** - [Roadmap Link](https://roadmap.sh/qa) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/qa.pdf) -* **ASP.NET Core Roadmap** - [Roadmap Link](https://roadmap.sh/aspnet-core) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/aspnet-core.pdf) -* **Flutter Roadmap** - [Roadmap Link](https://roadmap.sh/flutter) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/flutter.pdf) -* **Go Roadmap** - [Roadmap Link](https://roadmap.sh/golang) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/golang.pdf) -* **Software Architect Roadmap** - [Roadmap Link](https://roadmap.sh/software-architect) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/software-architect.pdf) -* **Software Design and Architecture Roadmap** - [Roadmap Link](https://roadmap.sh/software-design-architecture) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/software-design-architecture.pdf) -* **JavaScript Roadmap** - [Roadmap Link](https://roadmap.sh/javascript) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/javascript.pdf) -* **Node.js Roadmap** - [Roadmap Link](https://roadmap.sh/nodejs) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/nodejs.pdf) -* **TypeScript Roadmap** - [Roadmap Link](https://roadmap.sh/typescript) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/typescript.pdf) -* **GraphQL Roadmap** - [Roadmap Link](https://roadmap.sh/graphql) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/graphql.pdf) -* **Angular Roadmap** - [Roadmap Link](https://roadmap.sh/angular) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/angular.pdf) -* **React Roadmap** - [Roadmap Link](https://roadmap.sh/react) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/react.pdf) -* **Vue Roadmap** - [Roadmap Link](https://roadmap.sh/vue) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/vue.pdf) -* **Design System Roadmap** - [Roadmap Link](https://roadmap.sh/design-system) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/design-system.pdf) -* **Blockchain Roadmap** - [Roadmap Link](https://roadmap.sh/blockchain) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/blockchain.pdf) -* **Java Roadmap** - [Roadmap Link](https://roadmap.sh/java) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/java.pdf) -* **Spring Boot Roadmap** - [Roadmap Link](https://roadmap.sh/spring-boot) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/spring-boot.pdf) -* **Python Roadmap** - [Roadmap Link](https://roadmap.sh/python) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/python.pdf) -* **System Design** - [Roadmap Link](https://roadmap.sh/system-design) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/system-design.pdf) -* **Kubernetes** - [Roadmap Link](https://roadmap.sh/kubernetes) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/kubernetes.pdf) -* **Cyber Security** - [Roadmap Link](https://roadmap.sh/cyber-security) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/cyber-security.pdf) -* **MongoDB** - [Roadmap Link](https://roadmap.sh/mongodb) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/mongodb.pdf) -* **UX Design** - [Roadmap Link](https://roadmap.sh/ux-design) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/ux-design.pdf) +- **Frontend Roadmap** - [Roadmap Link](https://roadmap.sh/frontend) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/frontend.pdf) +- **Backend Roadmap** - [Roadmap Link](https://roadmap.sh/backend) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/backend.pdf) +- **DevOps Roadmap** - [Roadmap Link](https://roadmap.sh/devops) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/devops.pdf) +- **Computer Science Roadmap** - [Roadmap Link](https://roadmap.sh/computer-science) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/computer-science.pdf) +- **QA Roadmap** - [Roadmap Link](https://roadmap.sh/qa) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/qa.pdf) +- **ASP.NET Core Roadmap** - [Roadmap Link](https://roadmap.sh/aspnet-core) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/aspnet-core.pdf) +- **Flutter Roadmap** - [Roadmap Link](https://roadmap.sh/flutter) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/flutter.pdf) +- **Go Roadmap** - [Roadmap Link](https://roadmap.sh/golang) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/golang.pdf) +- **Software Architect Roadmap** - [Roadmap Link](https://roadmap.sh/software-architect) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/software-architect.pdf) +- **Software Design and Architecture Roadmap** - [Roadmap Link](https://roadmap.sh/software-design-architecture) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/software-design-architecture.pdf) +- **JavaScript Roadmap** - [Roadmap Link](https://roadmap.sh/javascript) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/javascript.pdf) +- **Node.js Roadmap** - [Roadmap Link](https://roadmap.sh/nodejs) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/nodejs.pdf) +- **TypeScript Roadmap** - [Roadmap Link](https://roadmap.sh/typescript) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/typescript.pdf) +- **GraphQL Roadmap** - [Roadmap Link](https://roadmap.sh/graphql) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/graphql.pdf) +- **Angular Roadmap** - [Roadmap Link](https://roadmap.sh/angular) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/angular.pdf) +- **React Roadmap** - [Roadmap Link](https://roadmap.sh/react) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/react.pdf) +- **Vue Roadmap** - [Roadmap Link](https://roadmap.sh/vue) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/vue.pdf) +- **Design System Roadmap** - [Roadmap Link](https://roadmap.sh/design-system) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/design-system.pdf) +- **Blockchain Roadmap** - [Roadmap Link](https://roadmap.sh/blockchain) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/blockchain.pdf) +- **Java Roadmap** - [Roadmap Link](https://roadmap.sh/java) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/java.pdf) +- **Spring Boot Roadmap** - [Roadmap Link](https://roadmap.sh/spring-boot) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/spring-boot.pdf) +- **Python Roadmap** - [Roadmap Link](https://roadmap.sh/python) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/python.pdf) +- **System Design** - [Roadmap Link](https://roadmap.sh/system-design) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/system-design.pdf) +- **Kubernetes** - [Roadmap Link](https://roadmap.sh/kubernetes) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/kubernetes.pdf) +- **Cyber Security** - [Roadmap Link](https://roadmap.sh/cyber-security) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/cyber-security.pdf) +- **MongoDB** - [Roadmap Link](https://roadmap.sh/mongodb) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/mongodb.pdf) +- **UX Design** - [Roadmap Link](https://roadmap.sh/ux-design) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/ux-design.pdf) Here is the list of PDF links for each of the best practices: -* **Frontend Performance** - [Best Practices Link](https://roadmap.sh/best-practices/frontend-performance) / [PDF Link](https://roadmap.sh/pdfs/best-practices/frontend-performance.pdf) -* **API Security** - [Best Practices Link](https://roadmap.sh/best-practices/api-security) / [PDF Link](https://roadmap.sh/pdfs/best-practices/api-security.pdf) -* **Amazon Web Services (AWS)** - [Best Practices Link](https://roadmap.sh/best-practices/aws) / [PDF Link](https://roadmap.sh/pdfs/best-practices/aws.pdf) \ No newline at end of file +- **Frontend Performance** - [Best Practices Link](https://roadmap.sh/best-practices/frontend-performance) / [PDF Link](https://roadmap.sh/pdfs/best-practices/frontend-performance.pdf) +- **API Security** - [Best Practices Link](https://roadmap.sh/best-practices/api-security) / [PDF Link](https://roadmap.sh/pdfs/best-practices/api-security.pdf) +- **Amazon Web Services (AWS)** - [Best Practices Link](https://roadmap.sh/best-practices/aws) / [PDF Link](https://roadmap.sh/pdfs/best-practices/aws.pdf) diff --git a/src/pages/terms.md b/src/pages/terms.md index 58a02c6b8..7ac94f88c 100644 --- a/src/pages/terms.md +++ b/src/pages/terms.md @@ -108,7 +108,6 @@ These Terms apply to your use of all the Services, including the iOS application (a) Both you and roadmap.sh acknowledge that the Terms are concluded between you and roadmap.sh only, and not with Apple, and that Apple is not responsible for the Application or the Content; (b) The Application is licensed to you on a limited, non-exclusive, non-transferrable, non-sublicensable basis, solely to be used in connection with the Services for your private, personal, non-commercial use, subject to all the terms and conditions of these Terms as they are applicable to the Services; (c) You will only use the Application in connection with an Apple device that you own or control; (d) You acknowledge and agree that Apple has no obligation whatsoever to furnish any maintenance and support services with respect to the Application; (e) In the event of any failure of the Application to conform to any applicable warranty, including those implied by law, you may notify Apple of such failure; upon notification, Apple’s sole warranty obligation to you will be to refund to you the purchase price, if any, of the Application; (f) You acknowledge and agree that roadmap.sh, and not Apple, is responsible for addressing any claims you or any third party may have in relation to the Application; (g) You acknowledge and agree that, in the event of any third party claim that the Application or your possession and use of the Application infringes that third party’s intellectual property rights, roadmap.sh, and not Apple, will be responsible for the investigation, defense, settlement and discharge of any such infringement claim; (h) You represent and warrant that you are not located in a country subject to a U.S. Government embargo, or that has been designated by the U.S. Government as a “terrorist supporting” country, and that you are not listed on any U.S. Government list of prohibited or restricted parties; (i) Both you and roadmap.sh acknowledge and agree that, in your use of the Application, you will comply with any applicable third party terms of agreement which may affect or be affected by such use; and (j) Both you and roadmap.sh acknowledge and agree that Apple and Apple’s subsidiaries are third party beneficiaries of these Terms, and that upon your acceptance of these Terms, Apple will have the right (and will be deemed to have accepted the right) to enforce these Terms against you as the third party beneficiary hereof. - ## What are roadmap.sh's Terms of Sale? If you purchase any goods or services or license any software through the site whether or not in connection with an Offer or Discount, in addition to agreeing to these Terms of Use, you are agreeing to the Terms of Sale, available here. @@ -126,4 +125,3 @@ Assignment. You may not assign, delegate or transfer these Terms or your rights Choice of Law; Arbitration. These Terms are governed by and will be construed under the laws of the State of California, without regard to the conflicts of laws provisions thereof. Any dispute arising from or relating to the subject matter of these Terms shall be finally settled in San Francisco County, California, in English, in accordance with the Streamlined Arbitration Rules and Procedures of Judicial Arbitration and Mediation Services, Inc. ("JAMS") then in effect, by one commercial arbitrator with substantial experience in resolving intellectual property and commercial contract disputes, who shall be selected from the appropriate list of JAMS arbitrators in accordance with such Rules. Judgment upon the award rendered by such arbitrator may be entered in any court of competent jurisdiction. Notwithstanding the foregoing obligation to arbitrate disputes, each party shall have the right to pursue injunctive or other equitable relief at any time, from any court of competent jurisdiction. For all purposes of this Agreement, the parties consent to exclusive jurisdiction and venue in the state or federal courts located in, respectively, San Francisco County, California, or the Northern District of California. Any arbitration under this Agreement will take place on an individual basis: class arbitrations and class actions are not permitted. YOU UNDERSTAND AND AGREE THAT BY ENTERING INTO THIS AGREEMENT, YOU AND ROADMAP.SH ARE EACH WAIVING THE RIGHT TO TRIAL BY JURY OR TO PARTICIPATE IN A CLASS ACTION. Miscellaneous. You will be responsible for paying, withholding, filing, and reporting all taxes, duties, and other governmental assessments associated with your activity in connection with the Services, provided that roadmap.sh may, in its sole discretion, do any of the foregoing on your behalf or for itself as it sees fit. The failure of either you or us to exercise, in any way, any right herein shall not be deemed a waiver of any further rights hereunder. If any provision of these Terms is found to be unenforceable or invalid, that provision will be limited or eliminated, to the minimum extent necessary, so that these Terms shall otherwise remain in full force and effect and enforceable. You and roadmap.sh agree that these Terms are the complete and exclusive statement of the mutual understanding between you and roadmap.sh, and that it supersedes and cancels all previous written and oral agreements, communications and other understandings relating to the subject matter of these Terms. You hereby acknowledge and agree that you are not an employee, agent, partner, or joint venture of roadmap.sh, and you do not have any authority of any kind to bind roadmap.sh in any respect whatsoever. Except as expressly set forth in the section above regarding the Apple Application, you and roadmap.sh agree there are no third party beneficiaries intended under these Terms. - diff --git a/src/styles/global.css b/src/styles/global.css index ffa6c4a3c..7d5aeae73 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -4,7 +4,7 @@ @layer components { .container { - @apply max-w-[830px] px-4 mx-auto; + @apply mx-auto max-w-[830px] px-4; } } @@ -16,10 +16,10 @@ p > code { font-weight: normal !important; } -.prose ul li>code:before, -p>code:before, -.prose ul li>code:after, -p>code:after { +.prose ul li > code:before, +p > code:before, +.prose ul li > code:after, +p > code:after { content: '' !important; } diff --git a/tests/roadmap.spec.ts b/tests/roadmap.spec.ts index 4bb02d1d0..dd439d881 100644 --- a/tests/roadmap.spec.ts +++ b/tests/roadmap.spec.ts @@ -2,7 +2,9 @@ import path from 'node:path'; import fs from 'node:fs'; import { test, expect } from '@playwright/test'; -const roadmapIds = fs.readdirSync(path.join(process.cwd(), 'src/data/roadmaps')); +const roadmapIds = fs.readdirSync( + path.join(process.cwd(), 'src/data/roadmaps') +); test(`roadmaps`, async ({ page }) => { await page.goto('/roadmaps'); diff --git a/tsconfig.json b/tsconfig.json index 77da9dd00..bcbf8b509 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,3 @@ { "extends": "astro/tsconfigs/strict" -} \ No newline at end of file +}