From 6bcf574c01a526053d4545f7a50aa500b59a7f3b Mon Sep 17 00:00:00 2001 From: Ajay-Dhangar Date: Thu, 22 Aug 2024 13:56:02 +0530 Subject: [PATCH 1/6] added new content in Js Data Type || new update in blog --- ...00\231s Guide to the Top 5 React Hooks.md" | 4 + blog/Cybersecurity-in-Cloud-Computing.md | 42 +- blog/DOM manipulation in JavaScript.md | 4 + .../index.md | 4 +- blog/Getting started with PostgreSQL.md | 2 + blog/Getting-started-with-nextJS.md | 2 + blog/Introduction in Python Development.md | 4 +- ...ion to Cyber Security and Web Explosion.md | 4 +- blog/JavaScript ES6 features.md | 483 ++---------------- ...l for Natural Language Processing Tasks.md | 4 +- blog/Mastering Data Structures in Python.md | 2 + blog/Mastering Design Patterns in Java.md | 12 +- blog/Mastering OOP concepts in JAVA.md | 6 +- blog/Mastering SOLID principles in Java.md | 2 + .../Quantum computing and it's application.md | 4 + blog/Web-Development-with-Django.md | 50 +- blog/ai-in-healthcare.md | 4 + blog/automating-tasks-with-python.md | 4 + ...ding-and-deploying-progressive-web-apps.md | 4 + ...pment with-microservices-and-kubernetes.md | 3 + blog/composable-architecture.md | 4 +- ...ainerization-with-docker-and-kubernetes.md | 4 + blog/debugging.md | 6 +- blog/developing-cross-platform-apps.md | 4 +- .../index.md | 4 + .../build-done-vsce.png | Bin 12370 -> 0 bytes .../check-uploading-failed.png | Bin 18335 -> 0 bytes .../check-uploading-ok.png | Bin 23454 -> 0 bytes ...on-development-host-window-open-folder.png | Bin 19689 -> 0 bytes .../extension-development-host-window.png | Bin 12666 -> 0 bytes .../host-and-parent-windows.png | Bin 43659 -> 0 bytes .../icon-vscode-sftp-extension.png | Bin 23926 -> 0 bytes blog/fix-bug-in-vscode-extension/index.md | 7 - .../npm-with-yarn-lock-error.png | Bin 13376 -> 0 bytes .../sftp-button.png | Bin 42918 -> 0 bytes .../vscode-sftp-upload-changed-files.png | Bin 4107 -> 0 bytes blog/from-ftp-client-to-github-action.md | 2 + blog/getting-started-with-mern/index.md | 2 + .../index.md | 3 + blog/getting-started-with-nlp.md | 4 +- ...ng-started-with-serverless-architecture.md | 4 +- blog/getting-started-with-vite/index.md | 4 + blog/git-best-practicies.md | 2 + blog/install-mongodb-linux.md | 2 + blog/install-mongodb-windows.md | 2 + ...tion-to-cryptography-and-cyber-security.md | 4 +- ...he-Linux-development-and-cyber-security.md | 4 +- blog/introduction-to-web-assembly.md | 4 +- ...integration-and-application-development.md | 4 +- ...everaging-gpt-models-for-microfrontends.md | 4 +- blog/microservices-architecture.md | 4 +- ...e-node-version-per-terminal-in-windows.mdx | 12 - blog/piracy-preserving-ai.md | 4 +- blog/react-js.md | 3 + blog/reactjs-mongodb-chrome-extension.md | 4 +- blog/sed-normalize-md-file-with-regex.md | 4 +- blog/sql.md | 2 + docs/javascript/data-types/_category_.json | 8 + .../primitive-types/_category_.json | 8 + .../data-types/primitive-types/bigint.md | 0 .../data-types/primitive-types/boolean.md | 0 .../data-types/primitive-types/number.md | 0 .../data-types/primitive-types/string.md | 154 ++++++ .../data-types/primitive-types/symbol.md | 0 .../data-types/primitive-types/undefined.md | 111 ++++ 65 files changed, 451 insertions(+), 581 deletions(-) delete mode 100644 blog/fix-bug-in-vscode-extension/build-done-vsce.png delete mode 100644 blog/fix-bug-in-vscode-extension/check-uploading-failed.png delete mode 100644 blog/fix-bug-in-vscode-extension/check-uploading-ok.png delete mode 100644 blog/fix-bug-in-vscode-extension/extension-development-host-window-open-folder.png delete mode 100644 blog/fix-bug-in-vscode-extension/extension-development-host-window.png delete mode 100644 blog/fix-bug-in-vscode-extension/host-and-parent-windows.png delete mode 100644 blog/fix-bug-in-vscode-extension/icon-vscode-sftp-extension.png delete mode 100644 blog/fix-bug-in-vscode-extension/index.md delete mode 100644 blog/fix-bug-in-vscode-extension/npm-with-yarn-lock-error.png delete mode 100644 blog/fix-bug-in-vscode-extension/sftp-button.png delete mode 100644 blog/fix-bug-in-vscode-extension/vscode-sftp-upload-changed-files.png delete mode 100644 blog/nvs-one-node-version-per-terminal-in-windows.mdx create mode 100644 docs/javascript/data-types/_category_.json create mode 100644 docs/javascript/data-types/primitive-types/_category_.json create mode 100644 docs/javascript/data-types/primitive-types/bigint.md create mode 100644 docs/javascript/data-types/primitive-types/boolean.md create mode 100644 docs/javascript/data-types/primitive-types/number.md create mode 100644 docs/javascript/data-types/primitive-types/string.md create mode 100644 docs/javascript/data-types/primitive-types/symbol.md create mode 100644 docs/javascript/data-types/primitive-types/undefined.md diff --git "a/blog/Beginner\342\200\231s Guide to the Top 5 React Hooks.md" "b/blog/Beginner\342\200\231s Guide to the Top 5 React Hooks.md" index 4163bbb8e..937914baa 100644 --- "a/blog/Beginner\342\200\231s Guide to the Top 5 React Hooks.md" +++ "b/blog/Beginner\342\200\231s Guide to the Top 5 React Hooks.md" @@ -7,6 +7,10 @@ date: 2024-06-19 hide_table_of_contents: true --- +In this beginner’s guide, we’ll explore the top 5 React hooks that every React developer should know. React hooks are a powerful feature introduced in React 16.8 that allow you to use state and other React features in functional components. They provide a more elegant and composable way to manage component logic compared to class components. Let’s dive into the top 5 React hooks you should be familiar with. + + + ## Why React Hooks? ### Evolution of React: diff --git a/blog/Cybersecurity-in-Cloud-Computing.md b/blog/Cybersecurity-in-Cloud-Computing.md index ea355e2ed..c44bfa756 100644 --- a/blog/Cybersecurity-in-Cloud-Computing.md +++ b/blog/Cybersecurity-in-Cloud-Computing.md @@ -1,39 +1,19 @@ -# Cybersecurity in Cloud Computing +--- +title: Cybersecurity in Cloud Computing +sidebar_label: Cybersecurity in Cloud Computing +tags: [cybersecurity, cloud computing, technology, security] +date: 2024-08-05 +hide_table_of_contents: true +--- + +In this guide, we will explore the key aspects of cybersecurity in cloud computing, including common threats, best practices, and security frameworks. Cloud computing offers scalable resources and convenience, but it also introduces unique cybersecurity challenges that need to be addressed to protect sensitive data and applications. + + ## Overview Cloud computing offers scalable resources and convenience, but it also introduces unique cybersecurity challenges. This guide covers key aspects of cybersecurity in cloud computing, including common threats, best practices, and security frameworks. ## Table of Contents -1. Introduction to Cloud Computing -2. Common Cloud Security Threats - - Data Breaches - - Insider Threats - - Account Hijacking - - Denial of Service (DoS) Attacks -3. Cloud Security Models - - Shared Responsibility Model - - Security as a Service (SECaaS) -4. Best Practices for Cloud Security - - Data Encryption - - Identity and Access Management (IAM) - - Regular Audits and Compliance - - Secure Application Development -5. Cloud Security Frameworks and Standards - - NIST Cloud Computing Security - - ISO/IEC 27017 - - CSA Cloud Controls Matrix -6. Implementing Cloud Security - - Choosing a Secure Cloud Provider - - Configuring Security Settings - - Monitoring and Incident Response -7. Case Studies of Cloud Security Breaches - - Analysis of Major Incidents - - Lessons Learned -8. Future Trends in Cloud Security - - AI and Machine Learning - - Quantum Computing - - Zero Trust Architecture -9. Conclusion ## 1. Introduction to Cloud Computing Cloud computing provides on-demand delivery of computing resources over the internet, enabling businesses to scale and innovate quickly. However, this flexibility comes with cybersecurity challenges that need to be addressed to protect sensitive data and applications. diff --git a/blog/DOM manipulation in JavaScript.md b/blog/DOM manipulation in JavaScript.md index ce128b2a9..61adde58e 100644 --- a/blog/DOM manipulation in JavaScript.md +++ b/blog/DOM manipulation in JavaScript.md @@ -7,6 +7,10 @@ date: 2024-06-25 hide_table_of_contents: true --- +In web development, the Document Object Model (DOM) is a crucial aspect of creating dynamic and interactive web pages. The DOM represents the structure of a web document as a tree of nodes, allowing developers to access, modify, and interact with the content and elements of a web page using JavaScript. + + + ## 1. Understanding DOM - The Document Object Model (DOM) is a programming interface for web documents. diff --git a/blog/Dockerize Spring-boot with Github-Actions/index.md b/blog/Dockerize Spring-boot with Github-Actions/index.md index 104530361..1547c1534 100644 --- a/blog/Dockerize Spring-boot with Github-Actions/index.md +++ b/blog/Dockerize Spring-boot with Github-Actions/index.md @@ -7,7 +7,9 @@ date: 2024-07-28 hide_table_of_contents: true --- -# Dockerize Spring-boot with Github-Actions +In this blog, we will learn how to Dockerize a Spring Boot application and set up a Continuous Integration/Continuous Deployment (CI/CD) pipeline using GitHub Actions. + + - This Blog article demonstrates a complete Docker CI/CD pipeline for a Spring Boot application using GitHub Actions. diff --git a/blog/Getting started with PostgreSQL.md b/blog/Getting started with PostgreSQL.md index d40d5ae75..1ab2d0ef8 100644 --- a/blog/Getting started with PostgreSQL.md +++ b/blog/Getting started with PostgreSQL.md @@ -9,6 +9,8 @@ hide_table_of_contents: true The PostgreSQL language, primarily SQL (Structured Query Language), is the standard language for interacting with the PostgreSQL database. SQL is used to define the structure of the database (Data Definition Language or DDL), manipulate the data (Data Manipulation Language or DML), control access (Data Control Language or DCL), and query the data (Data Query Language or DQL). In addition to standard SQL, PostgreSQL supports procedural languages like PL/pgSQL, which allows for writing complex functions and triggers with control structures, error handling, and more. This makes PostgreSQL a versatile and powerful tool for database management, providing both simplicity for basic queries and advanced features for complex database operations. The extensibility of PostgreSQL allows users to define custom functions, operators, and data types, enhancing the database's capabilities beyond the typical relational model. + + ## Introduction to PostgreSQL PostgreSQL, often referred to as Postgres, is a powerful, open-source object-relational database management system (ORDBMS) known for its robustness, reliability, and performance. Developed by a global community of developers, PostgreSQL has a history spanning over 30 years, which has contributed to its reputation as one of the most advanced and feature-rich databases available. diff --git a/blog/Getting-started-with-nextJS.md b/blog/Getting-started-with-nextJS.md index 6ce7981ea..d34724170 100644 --- a/blog/Getting-started-with-nextJS.md +++ b/blog/Getting-started-with-nextJS.md @@ -8,6 +8,8 @@ hide_table_of_contents: true --- Next.js is a popular React framework that enables server-side rendering and static site generation, offering an optimized, flexible approach to building modern web applications. + + ### What is Next.js? diff --git a/blog/Introduction in Python Development.md b/blog/Introduction in Python Development.md index 82e908d5e..87fd111c1 100644 --- a/blog/Introduction in Python Development.md +++ b/blog/Introduction in Python Development.md @@ -7,10 +7,10 @@ date: 2024-07-11 hide_table_of_contents: true --- -## Introduction - Python, renowned for its simplicity, readability, and versatility, is a popular programming language used across various domains, including web development, data science, machine learning, and automation. This documentation explores the essential aspects of Python development, including its ecosystem, tools, libraries, and best practices. + + ## Python in Development ### Open Source Ecosystem diff --git a/blog/Introduction to Cyber Security and Web Explosion.md b/blog/Introduction to Cyber Security and Web Explosion.md index 5bf0b87af..86a40886b 100644 --- a/blog/Introduction to Cyber Security and Web Explosion.md +++ b/blog/Introduction to Cyber Security and Web Explosion.md @@ -7,10 +7,10 @@ date: 2024-06-23 hide_table_of_contents: true --- -## Introduction - In the digital age, the exponential growth of the internet, often referred to as the web explosion, has transformed every facet of modern life. From personal communication to business operations, the internet has become a fundamental pillar. However, this explosion has also introduced significant challenges, particularly in the realm of cyber security. As we become increasingly interconnected, the need to protect sensitive information and maintain privacy has never been more critical. + + ## Understanding the Web Explosion The term "web explosion" describes the rapid and widespread increase in internet usage, fueled by advancements in technology, increased accessibility, and the proliferation of connected devices. The web explosion is characterized by: diff --git a/blog/JavaScript ES6 features.md b/blog/JavaScript ES6 features.md index fbe8351fc..5e345fec8 100644 --- a/blog/JavaScript ES6 features.md +++ b/blog/JavaScript ES6 features.md @@ -1,484 +1,89 @@ --- title: 'Unveiling the Significance of JS ES6 features' sidebar_label: Design-Patterns -authors: [dharshibalasubramaniyam] +authors: [dharshibalasubramaniyam, ajay-dhangar] tags: [ES6, javascript, best-practices] date: 2024-06-18 hide_table_of_contents: true --- -- In the fast-paced world of web development, staying ahead of the curve is not just an advantage — it’s a necessity. Enter ECMAScript 6, or ES6 for short, a game-changer that has redefined the landscape of JavaScript programming. +JavaScript, being one of the most popular programming languages, has evolved significantly over the years. ECMAScript 2015 (ES6) introduced several new features and enhancements that have transformed the way developers write JavaScript code. From arrow functions to template literals, ES6 offers a more modern and efficient syntax for working with JavaScript. In this article, we will explore the significance of some of the key ES6 features and how they have improved the developer experience. -- What if you could write JavaScript code that is not only more concise but also more powerful? How would it feel to have a set of features that streamline your workflow, enhance code readability, and unlock new possibilities in your projects? The answer lies in understanding the transformative impact of ES6 on the world’s most widely-used programming language. + -- As we dive into the significance of ES6, we’ll discover how this evolution has not only simplified the developer experience but has also laid the foundation for more robust, expressive, and maintainable code. +## Arrow Functions -- ES6 introduces a plethora of features that elevate JavaScript development to new heights. +Arrow functions are a concise way to write functions in JavaScript. They provide a more streamlined syntax compared to traditional function expressions and automatically bind the `this` value based on the surrounding context. Here's an example of an arrow function: - -## 1. let and const -- In ECMAScript 2015 (ES6), the let and const keywords were introduced to declare variables, offering improvements over the traditional var keyword. -- Scope: Variables declared with ‘let’ and ‘const’ have block-level scope, meaning they are limited to the block, statement, or expression where ‘var’ has global level scope. - -```js -if (true) { - let x = 10; - const y = 20; - var z = 30; - console.log(x); // Outputs: 10 - console.log(y); // Outputs: 20 - console.log(z); // Outputs: 30 +```javascript title="app.js" +// Traditional function expression +function add(a, b) { + return a + b; } - -console.log(x); // Outputs: Error: x is not defined -console.log(y); // Outputs: Error: x is not defined -console.log(z); // Outputs: 30 -``` - -- Hoisting: Unlike variables declared with var, variables declared with let and const are not hoisted to the top of their scope. They remain in the temporal dead zone until the point of declaration. - -```js -console.log(a); // outputs: 20 -var a = 20; - -console.log(b); // Error: Cannot access 'b' before initialization -let b = 20; - -console.log(c); // Error: Cannot access 'c' before initialization -const c = 20; -``` - -- Reassignment: Variables declared with let can be reassigned, allowing for flexibility in updating values where, variables declared with const are constant and cannot be reassigned once a value is assigned. - -```js -let p = 30; -p = 40; // Valid - -const pi = 3.14; -pi = 3.145; // Error: Assignment to constant variable -``` - -- However, this does not make objects or arrays declared with const immutable; it means the reference to the object or array cannot be changed. - -```js -const colors = ['red', 'green', 'blue']; -colors.push('yellow'); // Valid -colors = ['purple']; // Error: Assignment to constant variable -``` - -- Declaration: Variables declared with const must be assigned a value at the time of declaration. - -```js -var x; // valid -let y; // valid -const z; // Error: Missing initializer in const declaration -``` - -## 2. Arrow functions - -- Arrow functions, introduced in ECMAScript 2015 (ES6), provide a concise and more readable syntax for writing functions in JavaScript. - -```js -// In ES5 -var add = function(x, y) { - return x + y; -}; -// ES6 (Arrow Function) -const add = (x, y) { - return x + y; -} -// If the function body is a single expression, -// you can omit the braces {} and the return keyword. -const add = (x, y) => x + y; -``` - -- Arrow functions are more concise compared to traditional function expressions, especially when the function has a simple body. - - -## 3. Template literals - -- Template literals, introduced in ECMAScript 2015 (ES6), provide a more flexible and concise way to create strings in JavaScript. They use backticks (`) instead of single or double quotes and allow for embedded expressions and multiline strings. -- Embedded expressions: Template literals support the embedding of expressions, including variables, functions, and operations, directly within the string. - -```js -// In ES5 -var a = 5; -var b = 10; -var result = 'The sum of ' + a + ' and ' + b + ' is ' + (a + b) + '.'; - -// In ES6 (Template Literal with Embedded Expression) -const a = 5; -const b = 10; -const result = `The sum of ${a} and ${b} is ${a + b}.`; +// Arrow function +const add = (a, b) => a + b; ``` -- Multiline strings: One of the significant advantages of template literals is their ability to create multiline strings without the need for explicit line breaks or concatenation. - -```js -// In ES5 -var multilineString = 'This is a long string\n' + - 'that spans multiple lines\n' + - 'using concatenation.'; - -// In ES6 (Template Literal) -const multilineString = `This is a long string -that spans multiple lines -using template literals.`; -``` +Arrow functions are especially useful when working with higher-order functions like `map`, `filter`, and `reduce`. They eliminate the need for the `function` keyword and provide a more readable and compact syntax. -## 4. Destructuring assignments +## Template Literals -- Destructuring is a powerful feature introduced in ECMAScript 2015 (ES6) that allows you to extract values from arrays or properties from objects and assign them to variables in a more concise and expressive way. -- It simplifies the process of working with complex data structures. -- Array destructuring +Template literals are a new way to create strings in JavaScript. They allow you to embed expressions and multiline strings directly within the string using backticks (\`\`). Here's an example of a template literal: -```js -// In ES5 -var numbers = [1, 2, 3]; -var a = numbers[0]; -var b = numbers[1]; -var c = numbers[2]; +```javascript title="app.js" +const name = 'Alice'; +const greeting = `Hello, ${name}!`; -// In ES6 -const [a, b, c] = [1, 2, 3]; -console.log(a, b, c); // Outputs: 1 2 3 +console.log(greeting); // Output: Hello, Alice! ``` -- Object destructuring - Alias assignment, Nested destructuring +Template literals make it easier to concatenate strings and embed variables or expressions within a string. They provide a more flexible and readable alternative to traditional string concatenation. -```js -// In ES5 -var person = { name: 'John', marks: 85 }; -var name = person.name; -var marks = person.marks; +## Destructuring Assignment -// In ES6 -const person = { name: 'John', marks: 85 }; -const { name, marks } = person; -console.log(name, marks); // Outputs: John 85 +Destructuring assignment allows you to extract values from arrays or objects and assign them to variables in a single statement. This feature simplifies the process of accessing nested data structures and makes the code more concise. Here's an example of array destructuring: -// In ES6 - alias assignment -const person = { name: 'John', marks: 85 }; -const { name: studentName, marks: finalMarks } = person; -console.log(studentName, finalMarks); // Outputs: John 85 +```javascript title="app.js" +const numbers = [1, 2, 3, 4, 5]; +const [first, second] = numbers; -//In ES6 - Nested destructuring -const user = { - name: 'John', - age: 30, - address: { - city: 'New York', - country: 'USA' - } -}; - -const { name, age, address: { city, country } } = user; -console.log(name, age, city, country); // Outputs: John 30 New York USA +console.log(first); // Output: 1 +console.log(second); // Output: 2 ``` -- Function Parameter Destructuring - -```js -// ES6 -function printPerson({ firstName, lastName }) { - console.log(`${firstName} ${lastName}`); -} +Destructuring assignment can also be used with objects to extract properties into variables. It provides a convenient way to work with complex data structures and improve code readability. -const person = { firstName: 'John', lastName: 'Doe' }; -printPerson(person); // Outputs: John Doe -``` +## Default Parameters -## 5. Default parameters +Default parameters allow you to specify default values for function parameters in case no argument is provided. This feature simplifies the process of handling missing arguments and provides a more robust way to define function behavior. Here's an example of default parameters: -- Default parameters, introduced in ECMAScript 2015 (ES6), allow you to assign default values to function parameters in case the arguments are not provided or are explicitly set to undefined. - -```js -// without default values - -function add(x, y) { - return x + y; +```javascript title="app.js" +function greet(name = 'World') { + console.log(`Hello, ${name}!`); } -console.log(add()); // outputs NaN -console.log(add(1, 2)); // outputs 3 -// let’s see how we handle this issue in ES5 and ES6. - -// In ES5 -function add(x, y) { - x = x || 0; - y = y || 0; - return x + y; -} +greet(); // Output: Hello, World! -// ES6 (Default Parameters) -function add(x = 0, y = 0) { - return x + y; -} - -console.log(add()); // Outputs: 0 -console.log(add(1, 2)); // Outputs: 3 +greet('Alice'); // Output: Hello, Alice! ``` -## 6. The spread and rest operator - -- The rest and spread operators are two powerful features introduced in ECMAScript 2015 (ES6) that enhance the way we work with arrays and function parameters. Despite having similar syntax (the ellipsis …), they serve different purposes. -- As the name suggests, the spread operator “spreads” the values in an array or a string across one or more arguments. In cases where we require all the elements of an iterable or object to help us achieve a task, we use a spread operator. - -```js -// In ES6 - spread operator example 1 with array - -const greeting = ['Welcome', 'back', 'John!']; - -console.log(greeting); // ['Welcome', 'back', 'John!'] -console.log(...greeting); // Welcome back John! - -// Note: console.log(...greeting) is equivalent to console.log('Welcome', 'back', 'John!'); -// In ES6 - spread operator example 1 with Object - -const obj1 = { a : 1, b : 2 }; - -// add members obj1 to obj3 -const obj2 = { ...obj1, c: 3 }; -console.log(obj2); // {a: 1, b: 2, c: 3} -``` - -- The rest operator is converse to the spread operator. while the spread operator expands elements of an iterable, the rest operator collects several elements compress them into an array. In functions when we require to pass arguments but were not sure how many we have to pass, the rest parameter makes it easier. - -```js -// In ES6 - rest operator example 1 -let func = function(...args) { - console.log(args); -} - -func(3); // [3] -func(4, 5, 6); // [4, 5, 6] - -// In ES6 - rest operator example 2 -function func(a, b, ...nums) { - console.log( a + ' ' + b ); // 1 2 - // the rest go into titles array - console.log(nums); [3, 4, 5] -} - -func(1, 2, 3, 4, 5); - -// Note: There must be only one rest operator in javascript functions and -// should always be at the end in the parameter list, else it causes an error. -``` - -## 7. Promises - -- Promises were introduced in ECMAScript 2015 (ES6) to simplify asynchronous programming and provide a more structured way to handle asynchronous operations. -They are especially useful for dealing with asynchronous operations like network requests, file reading, or timeouts. -- Creating a promise — A Promise is created using the Promise constructor, which takes a function called the "executor." The executor function has two parameters, resolve and reject, which are functions provided by the Promise implementation. -- A Promise can be in one of three states: Pending, Fulfilled, Rejected -- Pending: The initial state; the promise is neither fulfilled nor rejected. -- Fulfilled: The operation completed successfully, and the promise has a resulting value. -- Rejected: The operation failed, and the promise has a reason for the failure. -- Handling promises — To handle the result of a Promise, you can use the .then() method for success and .catch() method for failure. These methods are called on the Promise instance. - -```js -// creating a promise -const fetchData = () => { - return new Promise((resolve, reject) => { - // Simulate an asynchronous operation (e.g., fetching data from a server) - setTimeout(() => { - const success = Math.random() > 0.5; // Simulate success or failure randomly - - if (success) { - const data = { message: 'Data successfully fetched!' }; - resolve(data); // Resolve with the fetched data - } else { - reject(new Error('Failed to fetch data')); // Reject with an error - } - }, 1000); // Simulate a 1-second delay - }); -}; - -// handling promise -fetchData() - .then((result) => { - console.log(result.message); - }) - .catch((error) => { - console.error(error.message); - }); -``` - -- We define a function fetchData that returns a new Promise. - -- Inside the Promise constructor, we simulate an asynchronous operation using setTimeout. The operation randomly succeeds or fails. - -- If the operation is successful, we call resolve with an object representing the fetched data. If there is an error, we call reject with an Error object. - -- We use the then method to handle the successful result and the catch method to handle errors. - -- promise.all() — A utility method that takes an array of Promises and returns a new Promise that is fulfilled with an array of the fulfilled values when all the promises in the array are fulfilled. If any promise in the array is rejected, the resulting Promise is rejected with the reason of the first rejected promise. - -```js -const promise1 = Promise.resolve('One'); -const promise2 = Promise.resolve('Two'); -const promise3 = new Promise((resolve, reject) => { - setTimeout(() => resolve('Three'), 1000); -}); - -Promise.all([promise1, promise2, promise3]) - .then((results) => { - console.log(results); // Outputs: ['One', 'Two', 'Three'] - }) - .catch((error) => { - console.error(error); - }); - -``` - -- promise.race() — Similar to Promise.all(), but it settles as soon as any of the promises in the array settles, either fulfilled or rejected. - -```js -const promise1 = Promise.resolve('Fast'); -const promise2 = new Promise((resolve, reject) => { - setTimeout(() => resolve('Slow'), 2000); -}); - -Promise.race([promise1, promise2]) - .then((result) => { - console.log(result); // Outputs: 'Fast' - }) - .catch((error) => { - console.error(error); - }); -``` - -## 8. Modules - -- In ECMAScript 2015 (ES6), the module system was introduced to allow developers to organize their code into reusable and maintainable pieces. Before ES6 modules, JavaScript relied on various patterns like immediately-invoked function expressions (IIFE) or the CommonJS pattern for modular development. ES6 modules provide a standardized and native way to work with modules in JavaScript. -- In ES6, a file becomes a module when it contains at least one import or export statement. -- export statement is used to specify what values are accessible from a module, and the import statement is used to bring those values into another module. -- Individual export - -```js -// student.js -export const name = "Mary"; -export const age = 17; - -// main.js -import { name, age } from "./person.js"; -console.log(name, age); // outputs: Mary 17 - - -- All at once export -// student.js -const name = "Jesse"; -const age = 40; - -export {name, age}; - -// main.js -import { name, age } from "./person.js"; -console.log(name, age); // outputs: Mary 17 -``` - -- default export — A module can have a default export, which is the main export of the module. It is often used when a module represents a single value or function. - -```js -// myModule.js - -// Default exporting a function -export default function() { - console.log('Default function executed!'); -} - -// main.js - -// Importing the default export -import myDefaultFunction from './myModule'; - -myDefaultFunction(); // Outputs: Default function executed! -``` - -## 9. Classes -- Classes in ECMAScript 2015 (ES6) introduced a more convenient and syntactic way to create constructor functions and work with prototype-based inheritance. JavaScript, being a prototype-based language, lacked a formal class structure prior to ES6. -- Classes provide a cleaner and more familiar syntax for creating objects and organizing code in an object-oriented manner. - -```js -class Animal { - // Constructor method for initializing instances - constructor(name, sound) { - this.name = name; - this.sound = sound; - } - - // Method for making the animal make its sound - makeSound() { - console.log(`${this.name} says ${this.sound}`); - } -} - -// Creating instances of the class -const dog = new Animal('Dog', 'Woof'); -const cat = new Animal('Cat', 'Meow'); - -// Using class methods -dog.makeSound(); // Outputs: Dog says Woof -cat.makeSound(); // Outputs: Cat says Meow -``` - -Classes support inheritance through the extends keyword. This allows a new class to inherit the properties and methods of an existing class. - -```js -class Cat extends Animal { - constructor(name, sound, color) { - super(name, sound); // Calls the constructor of the parent class - this.color = color; - } - - // unique method for cats - purr() { - console.log(`${this.name} purrs softly.`); - } -} - -const kitty = new Cat('Kitty', 'Meow', 'White'); -kitty.makeSound(); // Outputs: Kitty says Meow -kitty.purr(); // Outputs: Kitty purrs softly. -``` - -## 10. Symbols -- Symbols are a primitive data type introduced in ECMAScript 2015 (ES6) to provide a way to create unique identifiers. -- Unlike strings or numbers, symbols are guaranteed to be unique, which makes them useful for scenarios where you need to create property keys that won’t clash with other properties. - -```js -// creating symbol -const mySymbol = Symbol(); -console.log(typeof mySymbol); // Outputs: symbol -``` - -Symbols are guaranteed to be unique, even if they have the same description. The description is a human-readable string that can be used for debugging but does not affect the uniqueness of the symbol. - -```js -const symbol1 = Symbol('apple'); -const symbol2 = Symbol('apple'); - -console.log(symbol1 === symbol2); // Outputs: false +Default parameters make functions more flexible and self-contained by providing sensible defaults for missing arguments. They enhance code clarity and reduce the need for explicit parameter checks. -// Symbols are often used to create non-enumerable properties on objects, -// helping prevent unintentional name collisions. +## Rest Parameters -const myObject = { - [Symbol('key')]: 'value', -}; +Rest parameters allow you to represent an indefinite number of arguments as an array within a function. This feature simplifies the process of working with variable-length argument lists and provides a more flexible way to define functions. Here's an example of rest parameters: -for (const key in myObject) { - console.log(key); // No output, as the symbol property is non-enumerable +```javascript title="app.js" +function sum(...numbers) { + return numbers.reduce((total, num) => total + num, 0); } -console.log(Object.keys(myObject)); // Outputs: [] +console.log(sum(1, 2, 3, 4, 5)); // Output: 15 ``` -## conclusion -From the simplicity of arrow functions to the modularity of ES6 modules, and the flexibility of template literals, ES6 has revolutionized the way developers write and structure their code. The introduction of let and const for variable declarations, destructuring for concise data extraction, and the powerful features of Promises for asynchronous operations have all contributed to a more robust and developer-friendly JavaScript. +Rest parameters enable functions to accept any number of arguments without explicitly defining them. They provide a cleaner and more concise syntax for working with variable-length argument lists. -ES6 not only addressed common pain points in JavaScript but also paved the way for a more modern and scalable approach to building applications. With advancements like the spread and rest operators, default parameters, and the introduction of classes for object-oriented programming, ES6 has empowered developers to create cleaner, more maintainable code. +## Conclusion -In conclusion, ES6 has not only elevated the capabilities of JavaScript but has also redefined the developer experience, making it more enjoyable and productive. +ES6 introduced several new features and enhancements that have revolutionized the way developers write JavaScript code. Arrow functions, template literals, destructuring assignment, default parameters, and rest parameters are just a few of the key features that have improved the developer experience and made JavaScript more expressive and efficient. By leveraging these features, developers can write cleaner, more readable, and more maintainable code, ultimately enhancing the quality and performance of their JavaScript applications. \ No newline at end of file diff --git a/blog/Leveraging GPT model for Natural Language Processing Tasks.md b/blog/Leveraging GPT model for Natural Language Processing Tasks.md index 7650e1339..779271af0 100644 --- a/blog/Leveraging GPT model for Natural Language Processing Tasks.md +++ b/blog/Leveraging GPT model for Natural Language Processing Tasks.md @@ -7,10 +7,10 @@ date: 2024-08-01 hide_table_of_contents: true --- -## Introduction - The Generative Pre-trained Transformer (GPT) model, developed by OpenAI, is a powerful tool for Natural Language Processing (NLP) tasks. Its ability to understand and generate human-like text has revolutionized various applications in AI, from chatbots to content creation. This documentation provides a comprehensive guide to leveraging the GPT model for a range of NLP tasks, detailing its capabilities, implementation, and best practices. + + ## Understanding GPT ### Model Architecture diff --git a/blog/Mastering Data Structures in Python.md b/blog/Mastering Data Structures in Python.md index 5c5375db7..164eb84cf 100644 --- a/blog/Mastering Data Structures in Python.md +++ b/blog/Mastering Data Structures in Python.md @@ -9,6 +9,8 @@ hide_table_of_contents: true Data structures are essential components in computer science, enabling efficient data storage, manipulation, and retrieval. In Python, a variety of built-in data structures are available, each suited for specific tasks. This article aims to provide a comprehensive guide to mastering these data structures, including their usage, advantages, and best practices. + + ## Overview of Data Structures ### Types of Data Structures diff --git a/blog/Mastering Design Patterns in Java.md b/blog/Mastering Design Patterns in Java.md index 59b7ed859..a4f42f680 100644 --- a/blog/Mastering Design Patterns in Java.md +++ b/blog/Mastering Design Patterns in Java.md @@ -7,17 +7,9 @@ date: 2024-06-18 hide_table_of_contents: true --- -- In the world of software engineering, turning ideas into actual code can be tricky. +In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. -- As developers, our goal is not just to make things work, but also to make sure our code is maintainable, scalable, adaptable and reusable. - -- Enter design patterns — the time-tested blueprints that empower us to tackle recurring design problems with elegance and efficiency. - -- At its heart, a design pattern is like a ready-made solution for common problems we face when designing software. These solutions are like shortcuts, saving us time and effort by using proven strategies that experts have refined over many years. - -- In this article, we’ll delve into some of the most important design patterns that every developer should be familiar with. We’ll explore their principles, why they’re useful, and how you can use them in real projects. Whether you’re struggling with creating objects, organizing relationships between classes, or managing how objects behave, there’s a design pattern that can help. - -- Let’s begin. + ## 1. Singleton pattern diff --git a/blog/Mastering OOP concepts in JAVA.md b/blog/Mastering OOP concepts in JAVA.md index 3426abf65..6d36956d0 100644 --- a/blog/Mastering OOP concepts in JAVA.md +++ b/blog/Mastering OOP concepts in JAVA.md @@ -7,7 +7,11 @@ date: 2024-06-18 hide_table_of_contents: true --- -Programing paradigms are approaches to write code, each with its own principles, concepts and guidelines. These paradigms guide how developers structure and organize their programs, as well as how they think about problem-solving. Here are some common programming paradigms. +Programing paradigms are approaches to write code, each with its own principles, concepts and guidelines. These paradigms guide how developers structure and organize their programs, as well as how they think about problem-solving. + + + +Here are some common programming paradigms. - Imperative Programming: Imperative programming is based on the idea of giving the computer a sequence of instructions to perform. Eg., C, Assembly - Declarative Programing: Declarative programming emphasizes expressing what should be accomplished rather than how to achieve it. Eg., SQL diff --git a/blog/Mastering SOLID principles in Java.md b/blog/Mastering SOLID principles in Java.md index d0f843da2..5ce4d8dbd 100644 --- a/blog/Mastering SOLID principles in Java.md +++ b/blog/Mastering SOLID principles in Java.md @@ -9,6 +9,8 @@ hide_table_of_contents: true SOLID principles are one of the object-oriented approaches used in software development, intended to create quality software. The broad goal of the SOLID principles is to reduce dependencies, so that developers can change one area of the software without affecting others. Furthermore, they are intended to make designs easier to understand, maintain, reuse, and extend. + + ## 1. Single responsibility principle (SRP) - SRP states that, a class should have only one reason to change, meaning it should have a single responsibility. diff --git a/blog/Quantum computing and it's application.md b/blog/Quantum computing and it's application.md index 47dbb47ef..1db91c15b 100644 --- a/blog/Quantum computing and it's application.md +++ b/blog/Quantum computing and it's application.md @@ -6,6 +6,10 @@ tags: [Quantum Computing, Applications] date: 2024-07-22 --- +In the realm of computing, quantum computing stands as a revolutionary field that leverages the principles of quantum mechanics to process information in fundamentally different ways compared to classical computing. This blog aims to introduce the basics of quantum computing, explore its potential applications, and provide resources for further learning. + + + ## Quantum Computing: Basics and Applications Quantum computing is a revolutionary field that leverages the principles of quantum mechanics to process information in fundamentally different ways compared to classical computing. This blog will introduce the basics of quantum computing, explore its potential applications, and provide resources for further learning. diff --git a/blog/Web-Development-with-Django.md b/blog/Web-Development-with-Django.md index edf1c07ca..7e72e87df 100644 --- a/blog/Web-Development-with-Django.md +++ b/blog/Web-Development-with-Django.md @@ -1,56 +1,8 @@ # Web Development with Django -## Overview Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. This guide will introduce you to Django, walk you through setting up a Django project, and cover key features and best practices for developing robust web applications. -## Table of Contents -1. Introduction to Django -2. Setting Up the Development Environment - - Installing Python and Django - - Setting Up a Virtual Environment - - Creating a New Django Project -3. Understanding the Django Project Structure - - Project vs. App - - Key Files and Directories -4. Building Your First Django App - - Creating a New App - - Defining Models - - Creating and Applying Migrations - - Registering Models in Admin -5. Django Views and Templates - - Creating Views - - URL Routing - - Using Templates - - Template Inheritance -6. Working with Forms - - Creating Forms - - Handling Form Submissions - - Form Validation - - Using Django Forms with Models -7. Handling Static Files and Media - - Configuring Static Files - - Serving Media Files -8. Django's Built-in Authentication System - - User Authentication and Authorization - - Managing Users and Permissions - - Customizing the Authentication Workflow -9. Testing in Django - - Writing Unit Tests - - Using the Django Test Client - - Best Practices for Testing -10. Deploying Django Applications - - Preparing for Deployment - - Using Gunicorn and Nginx - - Deploying on Popular Platforms (Heroku, AWS, etc.) -11. Advanced Django Features - - Django REST Framework for APIs - - Caching in Django - - Internationalization and Localization -12. Best Practices and Tips - - Code Organization - - Security Best Practices - - Performance Optimization -13. Conclusion + ## 1. Introduction to Django Django is a powerful and flexible framework that follows the "batteries-included" philosophy. It provides many built-in features such as an ORM, authentication, and an admin panel, which make it an excellent choice for web development. diff --git a/blog/ai-in-healthcare.md b/blog/ai-in-healthcare.md index ffa8ff386..5f37c4056 100644 --- a/blog/ai-in-healthcare.md +++ b/blog/ai-in-healthcare.md @@ -7,6 +7,10 @@ date: 2024-07-30 hide_table_of_contents: true --- +In today's rapidly evolving healthcare landscape, Artificial Intelligence (AI) is playing a transformative role in improving patient care, diagnosis, and operational efficiency. This blog explores the applications of AI in healthcare, machine learning models for medical diagnosis, AI-powered medical devices, and the ethical considerations and regulatory compliance associated with AI in healthcare. + + + ## Introduction Artificial Intelligence (AI) is revolutionizing healthcare by enhancing the accuracy of diagnoses, personalizing treatment plans, and streamlining administrative processes. From machine learning models that predict patient outcomes to AI-powered medical devices, the integration of AI in healthcare is transforming the industry. diff --git a/blog/automating-tasks-with-python.md b/blog/automating-tasks-with-python.md index 39e73c1b1..359323497 100644 --- a/blog/automating-tasks-with-python.md +++ b/blog/automating-tasks-with-python.md @@ -7,6 +7,10 @@ date: 2024-07-13 hide_table_of_contents: true --- +In today's fast-paced world, automation plays a crucial role in enhancing productivity and efficiency. Python, with its rich set of libraries and modules, provides a powerful framework for automating various system-level tasks. This blog explores how to leverage Python's OS and Subprocess modules to automate tasks such as file and directory operations and executing system commands. + + + ## Introduction Automation is a powerful way to boost productivity and efficiency by minimizing manual intervention in repetitive tasks. Python, with its versatile libraries and modules, provides an excellent framework for task automation. This blog explores how to use Python's OS and Subprocess modules to automate various system-level tasks, including file and directory operations and executing system commands. diff --git a/blog/building-and-deploying-progressive-web-apps.md b/blog/building-and-deploying-progressive-web-apps.md index 803565a0f..954a17580 100644 --- a/blog/building-and-deploying-progressive-web-apps.md +++ b/blog/building-and-deploying-progressive-web-apps.md @@ -7,6 +7,10 @@ date: 2024-07-27 hide_table_of_contents: true --- +In the world of modern web development, Progressive Web Apps (PWAs) have gained popularity for providing a native app-like experience on the web. This guide explores the concept of PWAs, their benefits, and provides a step-by-step guide to building and deploying them. + + + ## Introduction Progressive Web Apps (PWAs) are web applications that provide a native app-like experience to users. By leveraging modern web capabilities, PWAs offer benefits such as offline access, push notifications, and improved performance. This documentation introduces PWAs, their advantages, and provides a step-by-step guide to building and deploying them. diff --git a/blog/cloud-native-development with-microservices-and-kubernetes.md b/blog/cloud-native-development with-microservices-and-kubernetes.md index 9dd8f1e02..2f8811f96 100644 --- a/blog/cloud-native-development with-microservices-and-kubernetes.md +++ b/blog/cloud-native-development with-microservices-and-kubernetes.md @@ -7,6 +7,9 @@ date: 2024-07-31 hide_table_of_contents: true --- +In the era of cloud computing, cloud-native development has emerged as a paradigm for building scalable, resilient, and maintainable applications. This guide explores the key concepts, tools, and best practices associated with cloud-native development using microservices and Kubernetes. + + ## Introduction to Cloud-Native Development diff --git a/blog/composable-architecture.md b/blog/composable-architecture.md index 5adfced74..066d3fbe0 100644 --- a/blog/composable-architecture.md +++ b/blog/composable-architecture.md @@ -7,10 +7,10 @@ date: 2024-08-01 hide_table_of_contents: true --- -## Introduction - Composable architecture emphasizes building applications using modular, interchangeable components. This approach enhances flexibility, scalability, and maintainability, allowing developers to adapt to changing requirements efficiently. This documentation explores the principles, design strategies, and practical applications of composable architecture. + + ## Designing Modular Components ### Principles of Modularity diff --git a/blog/containerization-with-docker-and-kubernetes.md b/blog/containerization-with-docker-and-kubernetes.md index 02e45fb7f..a37d6d436 100644 --- a/blog/containerization-with-docker-and-kubernetes.md +++ b/blog/containerization-with-docker-and-kubernetes.md @@ -7,6 +7,10 @@ date: 2024-07-30 hide_table_of_contents: true --- +In the world of modern software development, containerization has become a key technology for building, deploying, and scaling applications. Docker and Kubernetes are two popular tools that have revolutionized the way we manage and run applications in a cloud-native environment. This guide provides an overview of containerization with Docker and Kubernetes, covering key concepts, best practices, and real-world examples. + + + ## Introduction to Containerization Containerization is a lightweight form of virtualization that allows you to run multiple isolated systems on a single host. Containers package an application and its dependencies together, ensuring consistency across different environments and simplifying deployment. diff --git a/blog/debugging.md b/blog/debugging.md index 071ab74b2..b31db1a82 100644 --- a/blog/debugging.md +++ b/blog/debugging.md @@ -7,7 +7,11 @@ description: Step-by-Step Guide Debugging Tests in Create React App draft: false --- -Debugging tests in a React application can be challenging, but fear not! We've got you covered with this step-by-step guide to help you overcome the common hurdles and make your tests shine. Let's dive in: +Debugging tests in a React application can be challenging, but fear not! We've got you covered with this step-by-step guide to help you overcome the common hurdles and make your tests shine. + + + +Let's dive in: **Step 1: Install Create React App** diff --git a/blog/developing-cross-platform-apps.md b/blog/developing-cross-platform-apps.md index 4c400135a..52490e994 100644 --- a/blog/developing-cross-platform-apps.md +++ b/blog/developing-cross-platform-apps.md @@ -7,10 +7,10 @@ date: 2024-07-27 hide_table_of_contents: true --- -## Introduction - Cross-platform development allows developers to build applications that can run on multiple operating systems with a single codebase. Flutter, paired with the Dart programming language, is a powerful framework for creating high-performance, visually attractive applications for both mobile and web platforms. + + ## What is Flutter? Flutter is an open-source UI software development toolkit created by Google. It is used to develop applications for Android, iOS, Linux, Mac, Windows, Google Fuchsia, and the web from a single codebase. Flutter uses the Dart programming language and provides a rich set of pre-designed widgets. diff --git a/blog/dockerizing-a-rust-application-with-multi-stage-builds/index.md b/blog/dockerizing-a-rust-application-with-multi-stage-builds/index.md index c97881f69..0c6b3f73a 100644 --- a/blog/dockerizing-a-rust-application-with-multi-stage-builds/index.md +++ b/blog/dockerizing-a-rust-application-with-multi-stage-builds/index.md @@ -33,6 +33,10 @@ meta: content: "https://codeharborhub.github.io/assets/images/mern-8a27add30515e58f789f89a4c9072818.jpg" --- +In this blog post, we will learn how to get started with MERN stack development. The MERN stack consists of four technologies: MongoDB, Express.js, React, and Node.js. We will cover the basics of each technology and guide you through building a simple web application using the MERN stack. + + + Create a Docker image for your Rust application with minimal image size ⚒️ ![Dockerizing a Rust application with Multi-Stage Builds](./rust-docker.png) diff --git a/blog/fix-bug-in-vscode-extension/build-done-vsce.png b/blog/fix-bug-in-vscode-extension/build-done-vsce.png deleted file mode 100644 index 7605a5916a6e68af388aec701347b169032cc707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12370 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 diff --git a/blog/fix-bug-in-vscode-extension/check-uploading-failed.png b/blog/fix-bug-in-vscode-extension/check-uploading-failed.png deleted file mode 100644 index f7208734b71e8539b42937f263e4e164e6981c8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18335 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

{E-{j5W##n=PJbpIzVkt3@%=T?7*pGF%96SyK5G zw|b-T@IiIt8{8|ZxVeTm^JkOu)Bn_b;<30KD<{gWXU2y`sIQg`Rnj9Q_1W|k&`%Zy zow8NlI{b9RjJoI#qqL8YY$MmGsmm>L!O$N$CQJ?}K@a&*t@Xdnd{08rt_{65|7Tfm zD3gQqX^(!Kt&@ABPFR4>Z4tx_daDW!73Fe!$q&BE7?=6!Cj&5uDePhH(3$p4Y8n)g z60=$C0T16Kcx=x^kz3sGPS&9|XU4_gFhp|0PawFhy6y*ON=%tXb&m)n0k;3U$Ex8Z zBZ}hsnwI~IV{Vttis~^ak{(rwh?i$HXZ-&>=D8BtjJ?{)z!UBI%5AX;g(pad(W{SW zR5>0$z-&9L_hguRql6GT(KmXZ4^;ldA?-V4%(BYup;34_u+uvU^0C>E^F6h~#^A(I zmUAdt0Yg&uP~dFxFK-t>PVOg=XMue{{K){1F8SFsq1wX72B#eUEIKxMn)*# z+nGcdQg3c7rgUxj>3ZA2a%!FqL*L9_*4ANM0!&Mft_+sxhC0d&Ed)-U7T<|6FNV8_ z^_TKNkXr>SL)y1f3f^Ri%ZdL*ipLO4u7_K=G1t#DZ^j^x^!@c>>lR@|3TFB$gWLlz z2EXpB5Ul*UCuR3BnuxRd4}5qL8;7!K+iG@YTx$E%liqW;cWxAH%(1KwwxHUM;Gz z>LLCOHSa;}XxO=$JadG1yUUJRS3&2UAx&LY%u7UMM{)v>an{J^mf}|Eyl_DZiDr*| z%^PT~@NXtvZH2XBfFjR~CtPL^&53t}m)xT5j;5B(`&BmiV=VaU)mFSIq%ZKsqB1cI0>ybJn4q= zcd>(4JcYcMk)p=~*=%VJZ);~Bn;f?0%X)Qa zdv~NRyRkmB8a~E*@L}67Vm3&UBfh5ZoA8&>N!_FGC-|Et??cmE`|m@Q*cNdAXjmWc z>rj&_S?TS-ZsC8K$Pj=3b}{NJ_=bo(i6=*ojAgzydxSWl5p5zR{Bk2KXLL{pF~`EB0f_hub0gztp>(>E|230v zAnfKl*+307ACT$;=lA^%UAHG+9rf|RBp`@1)pRasg13Jj&3WSfop*?U)pFjr_f2^o zvdJr-TCM>cPkNSJM28_s_!J>hJ^fAiGfofXz}3E+y1XdjY0;;DWI&$6f_hsN**sC_ zNLbd0lX)&g*(srLS9f|-fHZEFC#+_$IA-zv=3 zzOve^G=tLiD(CC^sU7MgqyG)Gk;5B_`Z_n@g9LaP=YfzhV1|^MZe^|MMWslT|lUf1p zixI<}RrQn^UY8uspa-Ak&jY+<0|jucTehEf8xZJc1HK7w-i`ss@J85$uSw%ztka6tNm%b7(Ojf&<3d>`0}uXHJwbZW1(+@6-kE}d)_=3 zS_9rQLtNBtpT8RUF$F{z;8P~DjQ139O%fwU)F+_vN7#fbc+plQcoc~sM8d!vjc1&Wz+|K{7jKM6NXf||X5#5JP!q%W~duXO*c#;0fj zy2y8>Uw2s!?*neBTOvu=H;kfJ0oZsWQrrSt)#l0YJ5xj@W++HxZDVMfyH?a6`^hh( zZ2{Myg0y0;V~>5dLu0FD>L>g)iyxA76uVuFZHK5t7TBkcUANNhb&S7Xy*@}bM6~V& znbq;2BckXKgL)r#%YQ^87VG|H))pMp(0O(9tlm$y9l;Q1*l<}`ZJvdkY<$Jc!1uIg9SY_|g

+??}DMI+CCov}9kOB4tC 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

&cT+AYOl42YVEYGspyr5 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 X1B8j32P>x$00000NkvXXu0mjfu&|@= diff --git a/blog/fix-bug-in-vscode-extension/extension-development-host-window-open-folder.png b/blog/fix-bug-in-vscode-extension/extension-development-host-window-open-folder.png deleted file mode 100644 index 1241e2a6b5c4b5cc6580f7fadd7a3a34cb1c9594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19689 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 IcX}rMFMNKd^Z)<= diff --git a/blog/fix-bug-in-vscode-extension/host-and-parent-windows.png b/blog/fix-bug-in-vscode-extension/host-and-parent-windows.png deleted file mode 100644 index 1774cb3b15ca70879a3244ef5d95ed3d5ee68af2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43659 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≻7ep((RP7C^0F8MO2d}p_U(!4G4o=b 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 diff --git a/blog/fix-bug-in-vscode-extension/icon-vscode-sftp-extension.png b/blog/fix-bug-in-vscode-extension/icon-vscode-sftp-extension.png deleted file mode 100644 index d4be32e797a99519bf5074ebbeaab808238615ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23926 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 diff --git a/blog/fix-bug-in-vscode-extension/sftp-button.png b/blog/fix-bug-in-vscode-extension/sftp-button.png deleted file mode 100644 index 427e815df45b97377de1a3313e9949659239375e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42918 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⁡iyLN6J5ttG z^a{9W;3Ur=M#6T$)p+T>D0T`QNrSD^X!Hg=#DdIpmW05a-xg=E`*Lsf3&LLl=#|b@ zz5TN*Yf-zd#*BvCbb}|iu|R>n56x!W6do<-QEUxds;V%H1v7a={KU?MI zCyB|t_^SnQ&>F`^sir8Mg$(yfaFX5Rs)vzy8tx69n5d z1)#04fm%}vhKLU+mhRkO2VYMd4auBkjK={eRAhyE?}TEvfi%aR6Iq{1E3nI3IP=52 z$7$>v81&h?ow*J}YB|xofiL##n7GJI<=!aY!Q~`E^Nl1ZBE#T^w^8vjulcXP)UrX; zcliP}{nZ*+v=`4(0{FoB3V%xDLi^>-ab_>JiTXEFD>Kx$7ez2%fLwalQLnVXv=wJ2 z_|0t{r)*m&l?3IE7_V3urBefHJw7;n0P-lnY(juB8nu@KtNmwLl|m2U5H| zr2uiFB%C5Z%$_=H{bu1hfp!lD$)bKrL{3-J{~$jo%f3@YK;=QU+bFU@Y;-d=i0|Cz z*}7psBoG;dWW`AK*%a3x$3(FbVvcKKR>4r$*G_P>=_)LSl-kbvS+2XGQdz&do##wcJi2vHPyV;BqJ$<3%GZ zFGXRV>tyt=EABrOxh0S4(Iv?G19ZvMCWzOV0NI_&>Ex5{0`f(B^dwkR-LK`vnca0{ zGh-sDEpNJoa)%R8J4=cV-9l=h9BHu2aIf0{Iah_`y72re zsYjB-s-AzGvZh2JHomyU$omW|b_I6#&pxNH_PrAd%f|@2+gipPmxr7Esh%Dvjb(Zo zkR8z3>%lLklaps0aTmVT_#Wz3q~JA072 z@MU9r^%e|A!iUT~R**_9F&&PU9@j-;ViVl~jzc4N=j((uu=a8d2ZWJ#y|3dfDmycK z7KrHKU0Zqq8YVPDb8)}LtGD&89S=%wpQa2}7W{|8xirs<(w4UBEwxVS}(~3)sj=w58H&xVGzqyd1 z^LyK=ZnEQC1*MdToo+L}3TXdRN-=b$LEgbq^X6_JJBNIV*x|0Q&l%}L4fEh$SCKP8 zQ$z$8PCs|tZjRacaH%H>&?=;hKUn2ni-Yke#fg)ui912q5A3 zi58|u!)w;qkpB4`U_00Jj6R6CJI`;Av22}|#F$p469mS5q1E|bXqdZ-(R#z*Q3JV5LM$Mtvgr_*L>_WWFI}mS`23gI> zudaj{o(;y5uQ7ftnM|Bn$m~dZXO&<2l;}+}xu+i|!f{H`py+gsgC+$d5)%F3!^Ak5 zQ5uS9%b6}TN2sJxjIaJSvQf^x8JoOClj2zA_2ip#LB)o$f_rngf6~`v7$jf2ONXx+ ziZbk6Z(m;*n_hWlCVOjczZjuADORMxMd=j6d$5D)J^Eo~j95&tvYd3@>TTNrVSjs{ zPKU2$tqabX3D2TMM>l?R7;!m%-5K!J_W$+i{JJD{jq0kIg8_zS*m`%wL+cXn5AxCAWl29l$`t(ZK8o$uo=4U)RiSN9-AdImBOy`BJHlRoULzrj_M1x3<1BXjj_z zU1C|8)L4HTTRNpl?s}0q5YkLFK9YV`z)m({`I2QW$1V&8$Qvwqz}FO=P6HlXP(e7? zb?W0GaiGEqPCuR&oF6=4vEH|;z?!G``hE6j%j=K0mJy@ee0Xul)xfReleK7#)BD_# zpbG<;qZu?OKsFgbACriPQT738YuwX`(jjxo+t!Tc{=RYhsrQuqFBiVFV%ET|Nc31VAym<>w{ubtOjp<8IQ zSbMNCo-4+i!!cKO6u-pAk1axs6k)p<_&cpHp+-o{E(@RkQ8ODJjmGV@$@JnmYj9Q5 z+?mmA)?ai}O4a+zVq0i=+&le5eT}Z<38OCFa9FDvS5us~1!d zvX*Zy#CDY;02c-5X>+F2Epy2jeaN-3Zdxg>@|&?~?1$|GfV{yw8=T!s$o$IZe}Q(W zkFQ(mcTXpRqa0AUF+Xc&i5K~^Pn^;%&q+a+Rj;SzwBp33$#C+^Q^z!PK< zKFnOBu9#?Fl(W${d_l3}{_`z^3Eq{-m3L`mlBE0YcT}Z=3yNVrwsfCtG@U`rmwyuc zq{RfRKXyapVmojC0G!D7k4U^df8#OgI{F%hvAz1@_uqzDFVEZdIzM$LeKQourJ&u1 zP*{mU?>C(tg5_Z z9KUeQ!}^YaM*bctg`;cBGuxZ*&*G4F^E|81(0?p8x+=;IsLdu0sA$3Rh3`)xVkROW zF*0{_T15T}j=Czf0n}P_6`$Yi2;BiM>StiiwEqN*jmP;+%rJpZ8J#V7e%&u!8)k7p z#yWXv+TVWf6szcmWMzSoJBp`GcIU)j<~VF{1Rk9o7BZthZs$E9V2{yNuD1Eq)bjp= z-5rb=Mwiddg`pvMu&fXwAktKh0gi?`Tp|TCyCH+$(zlyXZw@$6!a++rwNIroJK&?7 z!eSFcT+rXNI3s$6(G{;&?VT)16`44UkGOZ*DK3R>wt0zaSoYxRo z$b7M$w(m`Et{bHdfv4*b;gf(9Bg}l& z5f!&N)Zmmh+kE@D;nwEnFG>$X4-hlK(EtkuCUg(W>MyWiB$k?so*(Xha+N4!#HH_2 zTYP{^i+9_cNzFNRRzdc3`J*w}OP=a{<-5~@Eh>|?wbGyjAUg}tQAcnLE}TExUC2+e ziHsMCLnVhX@j+Eza8RAa?kmq^A@yScywQo(S!t%6x$XUcBu$u;1_qK_ui`B{PfK%A z1QQBnAOkU2nn94T15*A$yYUoC6*2%0KIg#*E9c%#=-0-CQZbl8S`nV#9n}hrn`g<{K z6cdid)C{t4UZe)HRoJK^^6KJL?Kc7*s+1#wuHp|7KimvweZC$zf;1j%b(gw)sno4f%C9mu+V^{S@ zSHh;*L})%9;U88w!-& zG)MzfHpztY%L??*dETn1ysyD*_-0*XTCUrhJ{LNUw~JLp-Ta#IP{*c>t;zWD;Vb6G zvgyTjZd!Z9oksfjjgETSlZ61fV`3RM`?JI?seGy(p_fk!4?;qLv!bSnq&&Jl7HR4Y zG^IeNyaAzpd*pe({dGe!oMW|ZD9Q9WX*w2ms`eh-AOag{cR|^;Y(qZ%u~p^uG4Uup zGQ;DZ?sugZxf&6kG^O(YxhO>CYe!;4!a)T|QgW11&kH0boiMcILmN76Kq^4;Oztjs z#fh~Ok4^k=W1W7{2kTt!;ug>Du72Ls<3*{L&JS@UT9{F|z^@qxwh3cW)_I6PjS2e( zbgy4v!hrr~m`UW8W~Y=f^gwC9!1QRhM>CBCL2@Sbuy-6V=sPqdcvjGC#W(f5_SQv< z+wj?!L@+!H-1NL7p!NWDFMu6d))ExAturS%5mcF-3>2SklK{seyiJ{utgTqEXfR|#3K(L=kKa2#HgBUhiNO7N7(S`l4P z5Q<0UL;TkLurM+$GEkiJSD`MLk;nWf|Ie&V%fj4pcRqKFsR`jjNtf_HpOCmFrpNf}4;ac( zeJ;N0x)9ewtBu)T%Z~>oltH8lw6H;$B5)=b%^-KaAXg~H5nj};iVOW_N;4>blR*`C zQjQt}N>7T})(ral`5UC~!a?O|V~XuAGOPmB@-jsI^lM^%=~00(^<4kTDhUvHQeN_C zas@dl?b7j9XfZLJwbP?H9Tz~N{<0!iRw~hHlo`M|@^bFD+xhvMTQl~3{LqjaWI67U zS)7|`!!Y~Is{@t8j41kVrW22CcnS85btUYRehod@UHiGa>!kZ~E7I|i<#{L&)WVeA z^n1vp`pg>KwOJ)jnI9{;=?s4xOtt?vsQa;sh|IWJX;P+F`|+ajJU46e3;Th9khfUwh*^%ROTke@$<40)W$c zo}w8pDlQ2eOYrU*zV1nPg%Q1hqd)GaP7cTa&RmnD+WkahJdiowlgw~yP`_glt=9DbG)g2mVwp0?$0HZB!T&rHejMy;I5_3h`o(vCk) zh@m`r3g3o*5&FSY@OH>5HJI^kYB!nr@M8G9VZ1qmur9%~7mp7dc#5oYJOANyEKAO~ zXAS>Y#Y{9WOii>rrXG4mm-ZI3+fuwa4h`8r!UV_0m;22Y>wWJOsaoVJJ7Rh^Sm*}o z52`2u1mHVk_j@Pu5UBjNX|G!l$SuOVEN#QAn}t*l)KH9O+-<|Cl zXStW`1J8|N;o7`bQhB9l*5&u!^%^1iGz9;_>B*8$cvQqb$woipqJXyR1#+EN^FQBr ze)QT%e^}v@JpEy=yK3F^k|>{&cA2g7Lzd|h%c4veS7Zfs%Ganr2MJ>3Z=<#QHa}Lo zuv18+oOVJWoURB9b)E5P)4QD>cveN@Mq(Q)f6x)$dDBu@hVA07Hz(4P%His3S!^Ge z`9%u;wp$K&>6f*&grKk${!s1T^Vdq-P{50EC}5f{KySm*yhAXPqp~TwyjMx?M`hC_ zV6aub>8*6jKKWR#6Js5(C)tfc#BWpcMdZ3SJT8Co;-ne13 zAFt2%Kj~;j<>|cc4UGu)-8uU=>1iy|T(i^ELT#iMvO_m5rM8i0(5U-0iBPG9aAmmt z6D~lpuhjToT#Y)-c?d@pw9gy@3Gsx$I~GFyv_J%j8mPLf@<##5T1DR@&3gnb$G|&#i4^;P;B*CNx#c`=ank7} z%l`R?3PnHh&3wEcmQFqC>-db|Y0sAp{4aG&^3bcmSAth0Lxuikgi6N%4~Ig5#+Q9t zgFi)1Ur84G_e*;-KI6kO2GZMPQ%_b^2;bnMf|SVAFi}osfpVonCL52!RP%>FZ0Kqc zlS6Pii4LC-wRa_B_7NL$g>;hHQGw1%ulPf-xEnzLHd|%yfJoN_#Nr=lx97yajStvI z<8S_Q?{d8B%VcE%KgTvaUVV{Xwb?h-jz?XY>3kA+cJr<3f|U^Vlk?veBRr@2mij4E zWumPHZ+c(B+i(&jyTtqNl+|&Y4**pn56JrUo(+7BmW?utJbMALpZ$K(C0;=4-n`cx5b7Tw0&%9u=VQbn-XHJsR&ABgVr7x}V;*z8oX; zB4~i^IPKuRp~iWEIU^sXM8T1&wjlif!_eXDrnVY*AlGMdy~HzVu9%8e81E$NIK0wL z5lId@-T4X&0*w(+&qL$wb-nDsD{A?HqFb&USe-`>G~N52|AEeAYX2Q>u4Bp*cnwq_ zJ9aa9NJ62lrTmc7e8Ossak9T#Q1x^?=P4!)zq9E`9<@GQqa9XloZKGR8qg(T zAk#d$ypR0jh&;|=D)vdX?pEO)$a_H?Ol$33S^Zxao$MLE`BE4G8lZ5l90`uYsV9Vq zbDPRKCuyYxh0TF~o;O5@guc$trc?X(a_4XlI773b&HAk}M2KUj=UIKwU~_p6<KsBB*@^)by?@*qSQ2lrn2#2VA(J0LvPw~ zc*~RXMfsF5wOHJv`;8l~$1hE19_t5xulPa}~KP7|;uP^dCG807Lww`|y{b^0cH$yIPmhpHjw&qQ%gV!i(|zbaa2SLO9MuI98h( z!}s24&I-&V%gOM;o8b6fU(s_$t^fH;TnPV5rV_4%W}}Ayl4_}7^wc< z8*B_sOW{z)K)3do`$)O`(F%0;SGS9bl8Ui+pHDn1R_@;W$cY2;pnAp%14@>Na4T^8 zS47a(M9>`ht=A{R^D>38;v;k(M%-&Dlu!RJ+78cO{Vu~Hc#f@ygG_sWzd~({-s|BD zmN(5kONOq~3&fQ0A`k5;ysFWs@Sj?gr@L4kJn)A^KsT)Len0YeyHzhBVJl(<)>RI0 zbe)q8AZfQ^YJbA0azC}3)r3ECdNriLEgVDZ;e+urS_(XHvU=>vg1U8w_9=`Ci+%VCaNXbsAIEC*C|{af#+U@yk2gopx#@T@@qWx0+@-|VtfQ4qtj zOYt^|h)n`1pv3E`5oY=SAaYY3UiVR(J$|o`Z$WMH1C+e3{HhHdfUGV}Lb!xV`WqZ|o;iZdc8kUVsIOLFRYeTP~5;2O_&%F#E+>GS>E%Vg=bF2rgIk=tgJgdbH zTl(Tq0x7=+=U#03Wsw#JYZ{CR+vz^oVWq%U4Mt!Bj%pu!VWD<^-M^S5i5`db z9J5ansQ)W25=7E*ZvQBk*UGf*PhZ{eR-b1p%2T_C#`3xGq215AV-)CAzYgn^*Q}z8 zv8%i9h8VWh?(hu zSkX}gcX1)zq;nJZu5^^ve=2MGe7wu3ks~Atz%8$~o4Agc(yP2$*Zw)7r?20hSlqpF zuGNhy{#nb*CwN z9Y>TEMs6r0<}9b998JjrW0nm*bjzPx<999EstoMvNO^G7^fxIV+OlQ)Ft;RX(QvFfg(J5UXaGf>2zUTmgGZd zoqcd~wDCRQ5yL%#7^>S)tKckn>mh{P3crWD-K`+mD=bZPr;RLXe3!!h$~!anb&I@6 z7H@ZV72%Z9rzbA0W8sv?>`C1sG1PS78l=*^JR4P#>aQ@7l-?o-w-;&Odo4Hmk5y?` zl(LdDVL}ZMVeJ3QES#EF88TrbWEJ!>+oORHf@%eD7IObow}csOCJi`z)Q2#PW8oQ@XEF?G0be z%4%TJE2SppT*W^yCUecjyjgsxg?2>%Ht?)!=x!5doOH$clzenq7iPBj$4DGCbOiTk z7u_aq!GpehHahmp$A8Juk1pBhnIh2LW4bjP<~q;b=d~Gv>_9Hp=5O6Jy_eTcuReBO z+?}`)=ZM#C?W(b&_@y8Bti@Y~WKnEe$CEp|rtQ70(K}buKe;$wV+ve8c!w)*E^`|w z$>qiEajf`>w~i{5gACawFr5Q67kMDBusnS6>De>;zg_#PheE;iZp$0BVim+K=Wm>+ z-29@|I_rGqR7|jb#c#b>y`-!N7M{Bb_A9oSjx?i#EG*wcWZKTw)B#gOJR~F=xSX2F zUeXy;Sh5}b75qqZ;adiI$@{w>Li(l&iKVssW6UBOp}<;&;w+ceK&*@Q$V->w%_+L@ zzI0!Y&^xYbqVAuC+Kn3a^aPv&RmS1s_O8TCZvf zvPG?8!UtVH>nxuNtsB@&eBAL3#X=V6o|FjTm<&^ZSjh8BWtjGVc?rr{^7vQJYR&Uw zx++JtkxQCAAN&9E2y}Uw8S!aM#D9Y^;i@N(2)ns!$7-#qQg8?(P;Dnc4}NEI#uHlo zqYyUUqkl45bNv)QxTN&w+?$?9l+2(TJaZi9Qe7i zY%{l$Gn*yecfnsDjyfsR0R=-!uVCK-cn3g@L8v{g8~?aeOg3m916=X6`PMD-$f+B# z#LXv4hrc_f=bxY?0~+n*h{<2(7LZvw8I|w~p{bAXqp$GzRAqo`XtRGb6~V-e0`%^% z?R_#r!331;U&6rcS-QVMVK*PGGE51QdvaH-psQ=V@6twEywG%&l=zczWE_|jR=@N7 zH!*zq#G}=t2Xi5{oAH==>yZolC^^i+C-=JkT=#SR>BSA{dgBOhW4`{27H9J_|P55R__nKdJw<@O90Y%%sF4HJ4pMOuKQQ ze{c)i0K|@ehU)Rx>(k1HuS>Xq*NSP392>wyAHhMuR$G1V)zU1wSe-t(o*S_DOg`F7 zXap(OG}gnoK=1`7)o-Y4M8djGV$%I$0cz3Mi)c;~P{L<*uM?(R-I&n__3_D1cLvgF zok@TQ_F&;tzPOOS?{M%8ijvl8;(z1&84s8~zY!U3c^4k(4GOLyUD$1KLPY>hzW}r@ zA(+7L2oRE{9D}JrzQuOLpd=WUHeJQCr!7RF{`@XHUj>8GKzNuBBP^eL_ctwMCdH*< zgEk@ZDeWLTL;L+V!1&yv7#ZsxuQa@*s5 zuBXZq^yFL1tgY$ULM<@QzSwKe0qS( zUh;wzeAPv=#brGp?oMvq>+8A`BhmAlKf1p%m;m@0qPf4c$nAF0&jXt`` zgfyacWT1$Z+T~D}BiRR^0uglRkCM$CKU8S_wEVQ?r8LP`rKvV7z|n?gAqNUBLc##5 zQ7T`WW-lesi?=VY*X z)!BRWhZ#f4Vu7uJpfu(O;-PV)_Jkzyg?YEAFCGR=DNZ%+wI@aaMeMR)GQL2tSx>1K zwWlDwSM8k2a_~M;lV^w{Eo9B+8nLut&s;47EOhd25hE@ircP6y+nyTP9OF z@{sAvELl;YrLdytDFJHa{d!}MK-42Tp07k-8hb1ObJ9^^H;J#sZibCphFB(&Xh0(r z6DRNW+;uw=`R;zes~r9A7kqu6uRPBYuGD-?|+v#Dzp4sa&$sLQYAd7q!(ts zW}bz6qz^Avp6*ZxTx!p?cxB&At?neFaH8qJ>74gUd%}|RL$e;cPIe@%<;YH(3GyB6 zy3}L+3t7IIU(Y1b&QdJayWO6m<4jWx&0gDTH3c5=0-+7|hMGTF?UuqrgOS5@3)gdj?E zg|)0e%gT!(D3vk1C|^)k^R1v;p0cOMMbAmCrYw&Lp7!BG~Mjj{Z+kckz~YfMaV z;pA80Z(^FLio0qof$KiA4^=7Y zNFLxWlDqq{kJ15>mF_}$*rEmlvbU8QCa%cw!&iq3~zgzz0>c*kSN;K|F)7mMn4sSBCM9}bI104N=a;JZTZ<=FqTB`Eh?={CiAvUob7))}*hG=-F zyWP?m^YRZh1Y>vFdUNTlGTso2$dMP@jCID|h$i;GtgWIEW>?K9>TiR=%a%gFJw>2< za|j3xms_bLvg~D>pLn~a9V*6}^%F&V=~)-5Zx-fHem-(H@Ye|RE)!IOC+0t? zs?ojGlW0$GO34LlUF4=-{S{1UTJw`k$LGvU;qwYL zMmSpcuERv1XA*~={5W`0Wx@OQYe_Q`lGB@qMhh)%W!c|5>$^HXSKT~c?HNTjGb`t6 z^{4-=PtvOYk}s&%_PJnS2-9=&Qst^8ZQo@#a*UeSx{qYoo=xJ_jM1LsH)eZOZU635 z4|(}4*6xFjdewJH9C?3!JL#4v->R1x0DaP`!d_pCCm>%oWjXWk9IGHuks_09jhEet z)F`J_Z7L+1B|_!WA91*F@$Mr&dcI*D?o9qbr)yz4c+ySlR??DIz;n*CQYm)ZJN$%~ z8BFLvo;P$mEj;-W^9hHv(We1oVYd{19AC9=L;4Um<`8w>8{nV|^i=phxBlX2CN7a( zR~6Yd$V*0>kfU{TDWgi%BCU?|pze;csx%^jaP#)2=>Ex*?C2K3p`%TAUA_Ao5yd9< z{3{$aucrie$s4nMh`CyZ<;&S~WgVSD97qls4jtQ@0BWTOE%^~!t?@2}T?GsX53$&b zL&l1bw{H<(X87GqPBw+3ERP^z2~e4qyQxvn}ijhN&?ARo8|fAEFbSW zK!GjN4Wd)Gx_JSb*2Ij7Z0qxUDHX^b>PN)>)KJonvExy^#Zx?ZHgaf4kF&p%VRGV6 zWk2h!x@FUmt|nT?;QM}d>VUCaE{+9~3hX%D(A{rn2`YX92Wm7mqP_+eITqGwG=)5XWO?Dn{X+5d2ef%8`1y)sPyjUpFpk%biG+>^<&y*w*!M-6?ozNGf3o9w zMGwC8;@K-=UK>l|0}p&u$EygQB9P?*6S#a20QsGk3q}oh*seayZ9Zhk)^jZ2cz(lI z5ZJ8rK6Vt!4F>Ph`B2uzVFbU+7RWGO03f35@zC|6d#SxbPR0PV4*Y?u{SNx9BJ{}A zF8+BmCm*t^L)*{Vjbos2umMyJt7+S}lhR1>p5Q*{F-?y%AOOoGIB6iSLa zT|hE7PZ<;DPmTI|n$DIdZ%S+PTrT3GToG_UafeUk3BQ4n&ow4mT`hWH zc@MA33u`}`9ZDQ$xd!Jjk#7|~jpW6}NU%V@NMFysppzoTsO2&wC8QjxD5Fd%L5_tt zOVDQHBdR~UyJTx!+$`HxA;S6;RHeBYK))y(4mAT;MDfY3v(b{$S=Z77{i%rJ*m5=o z(qV>4JkB?K2s~=?9@Hcy@ngjY#P%a_bT!6?UVu(bTJ4g@TEOMkOo}`D%;R!@Lh%LM zwH7B>`6V8p=rK?ovihO7JV#8%zN%w_dfK-ibT7`hDdC_b~ zx_!MhqZ@LL^BIQHpaRp2bUmGy!EF4wJlw&A>Qk8wC5r_QGR7r-$|o?mNfOCsb&?g8 zXNmOE>s0+=9rd|NJ%1KPSmx8D!sar8)+3m9<~~tX)y$Z zdUk&QZehBiSE!pc+Djwuj{d=%N+Wr5DGgjYggAvE6z0JR{9Vbd~Eex3ybERX)A;0y3V zKdCs6iy?S382|~Z6ic{nZm{4>0ELS%8EP%kPZF%bz;)ca`x%$UNsf8alhq$qRO#px zEU7z0a8~GO0%MGF^MYJcR>Q9;;5K5@7ET?x!fK+L^5rQaJIT4VBE+!8iTNC~SU{Np z90j7jk9;;8s_Ibg1~Ej-lOn8}C*{o!&!bMZ4oa%9SkB|Nb(Xzv`d2X_sjT0nk=K;$ zv-~J!jjt(h8=}kakiDER&Eg+>@0ncm*H8KJ6+vU$t(RvVhV8H?C(7S%i`_uVTFTQ4 z`Yh}N05an_S(@x!HEfqdEA3357fOSi9};2=d*aR^Z9AtzM9hY{G9Zgp6T}R-?x;46 zsuwH|QxyCedo?v?!y<_d&JuM3oK9cnaCU}K`|(S^o>^O+Yy5Svy@ZZkYN)aL*6vLN zZWp2Jzu~W8g1)T}F>jqU&<)zexPUVNi8|4!Fj>Xubi;Z+V!EAVMW8BL| zlvrjoU32!fNJJ(Tz1i8teRDOTR@ejdw`&S}qnE0J{MGgT?r*5r`P^UhHOIFp-;dyH z`rtTe6)%bnuE(?$|5CB1O9aT#=IRreQ03XGItRy|osQPF*#u-`Z&wb3{DRm12qe`b zqvMy}poaOFb$y=!#8tpo?}D#XT#+jUi}`Gtf&y_ZXS@>*+xTqObUh&LMt`h-H zeHM3YrxGJJ;n7!g>%*q%!$#Gm_V`*FHH)dJ1ui=)m)tkBnF0IaaXNqDVhP!2?^)0=Uh`1_wYx4 zPy&+yguaQ3$O}%c+?b>S8r(lIo;_R%zFHwyA&%_AY|y~z?Q8>{FRw^vvC=W`-+P?v z?)U8|aljQvjQ=e@a^q}LSax+t@e&$xi5)!55Qf_MljECj`#6wE^CH%1{{)Wunp>3- z_hp%Ig?o4?@11t6?=JW)J1O=OFwyYr&X$AYSr#qir}$6UUxKiQlgCQ-*{}ftM%eRQ zhG~*&1kl?_Q+lMP^ef}VFZs7zJL5j9%eGhUF10C4JH&bG&O*0`8f4i6rMc7J2+(6p zH5~%Azg=-F(~3*~K1CWGMJ&)esER`s{~hAWquUFq!9B;Y=fDK}31-c8MHfJlX)W$l zG7vps0N=AL7mXpul!H#5eC{SZ2NOsX)#2ePabW}04P(JbZzp|`-#k!Dh5@8lDFH+$ zlKh1-7LS~L_|Uf93|;jv#8;{Xvu6_0j%CX4SskNu5KxS|N93?I&@|TqLRPMW1ZIx{OTTEnl>!~;K zEwuXI6+SS{R>Frq&vB9;Q5?o3p)h32Zv>Oyq;8=zq=Q7{)Cu5mE!fZ50<&Kek-B6F zsaFi#4(L(@UP>PVAKTdc#rTFIuk6Q5!_P+>a>3B!$G%!X?KR4;OtPzZHVL*xp#?qR zbVYl-^dXwzf>aohm+aG|Loig<2YG<=_UFzJ6Vp&Nhgib*uT5XW@1bYjwi)Z#VE_I| zi!p104}Vo5Fu{~%ascgt$_`PZ%_|{cElTzOeV9KqB}~dmpZEZX>0Otjq#EV^0&qDDm8&_6;v$T0d3;sL2lL>-FEX2oGKK zZqD%XPLK_%~ywCpWsV?Rxy2;RP47wfyYBX^Xnby z&%h(yGES;}u7LxyHW*hf2LIR=NkGV-x(g+WQbmjJv|bNtcy`Iwp0~vB_f`;m)zXUz z`3v4gm>-b+n~Y;1*;5_aoMd(1Ihy~~0zBdfPkK#Zxb$3)#W)@V1)Vn@13(X|O397J znUZaXdtdMeOvPd186NevA~R{{Py{_3wLd>kPGx7}ET$7gskdl<0K2D(1>_y$yo--3 z_wx5tYz$Dk*=163A{V)mFAaTqsCJ?qt6zF}w+JP^N$At^f+O{JOz19sqy)=@;om4z z31dhhsNyV6a=YseJdGLbYT7!*_L8OtRaJK8GMLU0h$vHNJ&t#MIz@i?3I|wzT;+KX zHwRq@t>8pA=CgEtB6PQI_`+mdC+KhZgprwka3v1d$sLVFuD;7$N`rl5z$;wO;^(Sf z6s1!ze|M^k0F}K53HeDeV_IG?FmfzCN@y)T(0ju`K`zvX_mn1xgtRkL7lEqy05efh z+6w&|dr1YIQwS0mQ`Rih(FYVn-Ms9`P@SL~a#FwqBVqDohm!GXdpQN;qJdh!Xh!4J z0}5hl?p`?0ZmY{xo=%Jm@QMa#4$EZft_MIuHSe0|C4)(aphuO1mQD~181+Do#Z=Rm ztWeSr_a%er!49?gjclxo*5XZ0)#4q_CuTtRTmY>NVQo)BKAJ90AP~a%z52%V__234 z5FpetA;q|)$Ca;4z)^$HdZU^cgOWgAj&azN2NPx9_bbB9t78=mw&UPz$&IWQ2m5)u z?!H#c8nJfEUEQci`p$_8_hEvb-seSsBIs$L}jkxs{(@C*ykDwU14r}rrzD?SG} zIYgj_SAsirVlO#BajPbiW9j}&7q=;8LyoC=#u?(@8uuI2T0iq7TvL2RDOGD=fsWj5 z1s5BQPBwR#-n5Uea?gyyZD(3Ow1`fS10#075#R0t4%i$a(jjEiDF~i(;M~aRm?(MH z7F#PdS)JDC6}R)vl_HJ^)Kz%rB0$O2NBL4VvjehBmLyS^sr8)kvBXdDkdU8qJcjJ4 z!^7@-mQl)c;Y-6`Vh#X`$M34NDXE(&6l=yZobuF4vg{TL3Qq|@>v4UH@mC@kGUmKq>M@9^tcW#+*JB|&>K)F8wi>GIrUE9jH8Lg4+~IJwZN{>rJSN&7 ze%DAtmn8#1dy+r*j4LM0ndzbUWX=~;O=To4&3W<&@cMP6G4}!^9FXNJ0<=hgA6NEp zwm(sXXbwgtni}H3>@D)HiatL+zYKQ`kXXuz`O#0<$puFpwh+>76hBQG+?X#h+^-(^++W2o@LOUZw_7# z?3FU}amrl<9ncq9fb(zeO1?Pspx5wJ-6PJrZ1I_^4tSEo4v?E36#SSxywiC&bK7@0 zzlqeqt$5x!UK-X#fUzgb$II_eg4(;L6g!!@2m*?#IL+CEQBNlZD(Ovnah~#%TI)gW zfo~)!-vdmDK&LDlmh}JA(sze7^*mp15<&|lNN*BFsnSJ|8l(w`6j6#&M3f>Ty(lGs z^e!bz2SK_91Ze_6L8>(A2n3|}DhLSg{d|9K{=CnV`|RG?ot-%|drpO(R;1{M$bn(# z;5KyE`a^iyxHS9+>eNQ}eu|MU@!-_29zNJI=dW;(16E3c;bdKR2@4TaT@r<%G7otPJ; z&pX8XQk(-O`Q?78{_{yza<(e5h(abGg}-s5^mVsq$s{ih2PNM_y}b@_MkIMxgw=hq z^3$K%kO-hKL7OpET|0ZR!wYc%44S~O1U;(A5C5K%6|D<3Jd+1%g6hVJTu)mNn6tBN zB#xsx<~k)fglxpa%x`VUV^p$$?rDEK-wdH6QQ9wjD3jrN5PO97*3#t8IU30LMDLY#P@2E7`8YjP#9jk{u2h?k-1UewpuCop$=zn z_t#6drS4Av&hF*kSGilpFS0WAY^C~c5#Y9I7izBfh!QvfWmGhe?78jrN%R&uuG2)f zP=!jmUqpk-qe6=twCpCa|6Oo!X4FuKR{#G02PxcLg7)nA)<2p<%Ywo&o#83XembG- zLcXZ}d1&wf=r2*i$6+|uiw}S;9f|T-fy_GwzwB4)Q&DAm;k{RPW5~# zGGNnVd~immyZ8PRx3>}jUhtZF2@VGOjOjmSOLN|N4ff`!>3sY&OT~=La zTo=ayxa$-X|8exL;6`ta>4g>$U4pmhm_hsId}<*kSC`mblXewF!a*_##m= zsL|y;BrNXGI+aih4SnOh2xNrt&-ed}aJM`6xU8#%s>m;JZ1 zXVs{MX~8HS*18)XzH0qy_aT*a=~9(iL`p)}*I;DHogfMwbWFz$HQUh?nEb_v?PPRk z?kjr_XB5AB;+oyH?-DBiIT#2BvXHplav7Dtvme;01<*Ej)&G2bdg#FGAQ~}dCYv{u za}ZNHO}Lo4ky)i)8m?W4lnu>Jr+x_x`O|^h)YrrAJ<87jSVFEfIl%1ZWq*LY$W8`< zX&AOxVMHNZaUUlCd-Mx_%)wdD!RVc!FDr?z04df>DdOz}W%wS%puh55ad96zufaun zg#Trgk%uKFHsn(Ssr`rXwe8gD19GGXECHWQ_dn!cyS*6KZ5Vv#->?fg%&N1L7%)tL zpUK?^`cGs7qq`q~x`lPL_MWx=0=` zWALlT4|4%~huk74)k%0CVVh&vl)o_{CXosO57a6|djedTPsLLgr?u%pbnY^$&wM(T zcF*7@VX0wN@>VOs9y)#OW^M z=mO`zSn&da_T|wPt9olDJ)@3|@j3GLjmi3sUKYHYj1yX9VYmJr%?sLwyGXJt9@X!S zh}7Z&`v2CeC+#j&`^K|~C96uh*;7kqXv?c@`Fflx8QKBNw^HIqQxV*nKgJ}H5`7aQ zO8e5);n^yXdAg`;B=J7|!LUC2#ZGEPUsVQ$>X%+!=6m!e>_*kelAb8Vwy*YY)lAAe z?{p;7z+}@+K=358S0@UueJzQIJjh#H)Qj4}t>B z6k-e^-+Q3ll}_Sm6+CUMiNN%b@`Dz2^d4IQtM5>7Yz%X?VJ6j{u3FuEIMjIkbvCcb zrSPT%tHImtQNQ!Lq0g=6RqH?(oU%TC*RsiTeO&XYN_fggc0(HYhnO{m{`N_k!k7R& zULx9h$nC?iGb@u$Z!ou2AO{vl-re8W?v29pB0z3YxRUWEf!ow_;YpM1A z@@S`8e);NSU7^~0QDYAPQJM}rdn+G+p50`J6kUG=5jsOYRc4pIhc|A#r5faln5&SDy=L5~f^y4({rkeT3f;LA-bm2>Jxnrm ze*G!4v}QN%cbZAjxeK9xgO~SicSp#WiU%$!Yo;Al>EoF(FJ=7XPv}3!n^-$`!0Ps8 zKW}{IanG-9uqzE_Odb39Axry$Xq)`#FA<5c)B8b`qVbhQ;`%&*R> zXFKlVYz&OwYz%Ppu-X1*Fx@emoTFGG^vIHD%RKt3+IDo!py9a5um3F^by3V2Z&Vu0 z;-H%>*A2GD%9z&j&yV7nC@$%?hx|c|^i%8)s}%Kl3cq(kx34DtT~lL^7^hyRxKQ9# z24lo6D-RjH;G&*2i^*2e@x$YV&{k~E;7435Wa4h{Js#2QPs+9H)oK9t1%@-}CU`Zl z7a~4?jcr}HIgQ;HOZ!q?_&jDS=2_e$`Y!4F9A8v@% zQkH6|FIo&5DrJt2h#fFW@%7j27Rv_X%|eNvtaAGRv9ug+>mk#(YUv{Zrv&J$5R~ zQ8nP!+3JYU(b;_htZ|p1|N*!}PrNQ!6`70GT#W+U2fPw!kpzD~Yh|Zh7 zzyL_C_d;FkW&6>#22?D;loaPKiFth-H!Sx=Lv zLy@~^KXT<-if?6iDOxXsdg#b_^*1_Ju~ZdG9;~4bVn^CM3Gi~$xp zBn!JvWkBRKdejfM5(OD&V?sgPkO<+oVM_3z{yP;|f|D9vHtAABd~N~y=70)#uAZ6& zc^W*!M4aBI(#uxnW_k(-Crb4wQu95&VTwRUI~*`DPapW8z*U9`Da*Zjzbc85y_b|v z4tAJ;!xuvs5?G~`?oNrxP){NigQBO1?zg${DTZk?O8 zkbeWZ!{a$(A`l9c?GM6qzYJcGeujG(eTy#Xy6TmAoGCYfdeplA@>6gH9i<;C`kAIC z(l0w~Re*ofbz#w&t`ZAx`u3=RaD!TM?7uORfq~wbM;9y~yteltB>xD1qlO{Fh3r~d z@U)}((Uu<5BFvxtMP#;3SZXnm+bbOIhKyf znff<+SER@;FPuEGD{QTpX?{*SLGgs|c|n28#+xCYw?-rdIIc#C(Qf=A<7Q#58)df3 z^^{M&RRgclzrOC@wb{@Ydw6qc*WBZpu`8wbuWa>xx5-T2iC8kexwmI+)@Rq$Y|jJ3 zd_pIZYE-Gz4p>f##vbbZJNUzn}et<6)V}8@JTH0^Gu? z6(eJVUV}LamXx?_ReP1DIu4&i zSPt*3HI>53EN!IJKgNvA34>p61)kea7>o}X*1aps_nnP>Nkftf1h;-h1l1#eN?0u! zkWMwizyLSHALB#o7P%H>j>ih@{(m~O=UX^08jCYk7ET)|KWaahWNLVrFBF!-3G((c zmK$WQ^NzV-iFwE_Z=yuJvb^Rb1(IDU*GjP!KgK8fN7a9yr znuK#FxX^)EJ>!bG#16Kc0XLe=;F~yT8Sy*Th}$2S_E$A z$0idXK5>o@2$R3q7&r(pDFwi}z)O?U_}F!)q_S)<6tDmR2B05L0~$vw>_kn$AVpz+ zY;0KCNO@DNqrW}(EFmplsC{7KtN(r!fzb8J$)tqi+l(bU6Cx?rE3f;U?UrG(DkLrZ zI=m~(4wIr5lHHwq%xw3$F}u5hb%4v>SDx%z^&y|s#5ymjB4pN0feZK2DHC_1@G~oTUPt3Ty(A=KHMFomUKF>Vn1Vi<3-aZ$z$~HZ(vz zucHkUtx7sSglA=BnqK+sQXFVW-JmvTSr1O?9cR`YJ9)7Op;ndE;&5kH#CdTe$+p8>K;_=CU&<)nf z&7<#N_GTU&Dsgy{FFExjyjEyG-Kqqg>p4vY4fCQbMB7eDVv`-3fWtHw-0FaGn-6bw z0NUdSXu+}z@|L|3JPC@IuW2MWhjY8I5n(e!(3HZ;V!6yZV3=}Q4xuE^R%s1;_Pc_g zxI$V|Q?m*IVRTr$d+Z}w%+Q<``*~DH%h4|rb*#{h3a9mjS7*+@?&uElV zPQ#=Ppo#Pgz)#%a;Mew>(e)`nXnIo*wyu~dNb~xu4O=3Bh;b=jfX^l~o{eZ5` zE>)BIv>~$G$MKTFkyq1&9;dvEr|xGF0pVrXBv`(yUJN4yJrK~v#hC!xz@Z^rnQ_RH zM|bz-MuLSQAU5wNlYyH0=MDbD1H$U8yaW z$n*d=M62NM`|I}0v6;SyGjKwOzTuPW4?sswA{Q_TiI>!YmomoHNSZA|yvYKXsp%U_ktisG;N3;s>R zK$WRaj0ip?ZUtj-40w}2iMXw^D!fU>V30uN?d9Gr9cDTaFW_xegf@J#eO-zJGS&bR zF!Z{6!RB@kc?NB@ejvSNJGrxXFaC)W#bqpZF_1BdEJF1fCV*qfg@aTqbPcUePod$b z25*4ZhW?%GvXf=Cj}FK=dLZkI%LDrI<6iMU_L4v6O!PPY`0(7Zd^6|lSJ!Pw=`tL-^^^@5?k;Ay5ZxIFv(gTD! z(>^K6!#5N#J=WdEv2lOB7ngO;x4xsx6oV4E+P(iT3O5Kd#;+A zuZWez$jtBSI&yY&8uOViukkf2AaI6zCtZK(IVigI02|>L_>w^^P1Z|N(*_w*;tcI| zyakFF*{4^>FU7<6|@2(I-xXK*An^o)Y z38w>JS$VI7kf*>Ra%Evy1$r0|nnU@(aVEaOL(19rN@$yfNY|#g2!FU0EUUE;7i=Q` zH|ll0puxC!TdTV+zUAaiIa`T&v2X}@jbQ@W)E?x32H5%GuC9GcW6zCyd%uWSr1ftz zyy9L$#PI^T$vN%-@#Gscwe2(zZP*(WLA4GTd(IW1NL#S(C)v?A^`@ij_TjMFJh!+4#tsS?UPj(E4GhpW#VMb*rUYe) zcYe&89k%RbP}2(Xhw(R#?riHV<-5Vbk{oIANef$tJh&Oi^6M*g_ZuZP5Z~l~aV&rd zjP5`ev(?>N;o=cM1By`%k0kqSso{lSYx`@{3JfP1+BPG0OqvD9z`NUu6zH!7Q8+4RLli)r zRkcDd;@yQr;Yzcq0XoC7QlB1JcB_C-FOa4$AnjQ*^sGAo)cC55o+5)#uP)+T;LvN|EJ8%cv<_#+ ztIQ#BO^b)Ov!TI~0SlR+3a;O$$dPCKB$C@t6^(^7G%&Gx)rI_UnrO>aKoqO7dePqQ z%Lw7zDW8bbAzh-2b+=gAAq469Jk8JI6lOhi7B13akP|FXY6&tCj((e^=a$h5!5;Z_O9zYd*`d{Vy@l_~yt zJ^zzO1@D#$-2US*`(o zne?{XQ$Mg8AHbbL9y8p{v;4k}M@d1Iv5Otg?)m3(aYg}DFI@P1eg!I5bRO~dFg{z| zR1D~{-}R(-eWuQvV<}QG@kypWhptYW5Y)A_Ijm|~fzavAROIUs<^EEt(C(_Oy_)mM zwwF$H>0VEQaIb&i+u`H-N^)Yaai-!#tJ8`yN^-RBHLLU31Xf(~rFE5FqG^d}@MYgs zpX(B`Vh_#*b4?vew3#$jD(2%Y)~HOo_q6$Sz7yMFx0!P)uvM@!0Y#N zd6<1WeO`{q-droTD#cYSbcm(+o$6(NfP-z(3Rdkm2j#cfpk~?(#|2Vpy(bGTKOn$Q z)yMh{6e#wI44ahty+1q5<|o%AEAD?(7>U`RyHS;o;(3mwWxK5tmp{ZO5}$7vy?PSq zB}d-q$(&suHC(vg7g7muh1tePG5of&oHVyiY(g>KBY3$#g#O%m8MkADm!CS`kV4nE zP`?F`21I0JUH86uq^@<1+fabv!NuoqlZjA`K{Pmje`=>BapwMreA5HDrT6Pa2r!s) zth4R?l=%syT}eYWrCmG@q4Q+4Qwi^-eOzTu*3K)q|53%(4_9|JPm$kUIdk@rkxn}1 zU(P7Ymupy6=xR7Tjj-U?4%GO3UXBJ&$b5w;B$7qkq@dbWSIl4jy3wo?*8Cd(oUp&X z`;pIwdD>KKRnNaD!-qZSB!E}MXM-9HYQ4F-f@cI+O-okp#9*s;30}wP-0y;u*#x=YKGFexbxc?>n`Y|{R16Jp6Mtk@a zIKSGHwPMN)K^<#lRefL*n5M^I15AA{J4_=Ew_-yq;Xu4_>kEnVo!@mhu-RkibrkeT zn^bGFdciT*hDFq_yZ~5evzgK+TVULVqiG&q0DuhfpGE+_5LYHHgH8DLs?D%&dF$Pg zd{NpF#r+Z0n<_!DqSpLx=6mIN4zeDM88Bz>mp;{eLao-i|N7z|^<9!oN;c3&F}H60 z#(z!>4tGO|8vNMY@F@5BNrwCOk&Y*`CVNH7r~AT+KE0&kO703QfLrPNYQU}UlkVHm zQj?aM2@H2)P+0A#rpb_n+MQX99rgiWXx^#-qO?MgxMWel>mtdri%r!{U9;p5QUtO8 z+Dci7+L0X^u0P<}q3j2D>mRmr|86U+NMAR!Wyug8z3zQod!fI}cV(X8%fOr}4Z`*APqAi+Cvr;1B|Y*Z?0$~T2#{ikpP&NH$%ev` zx^*8-`aJyZiLI_3YxM`U5L6S%MKZ~}U@YNv62N3EL=;GPw7?DLX`+8z654qlEDVHguXI3!yJM06X<4dr85G!A)(e^A~O406%t_1sZj(@ z2oZxSc2ZA2nSV?CN?!2vrW~tP^FTy1vh(os*hU+qEdKTrHRyxc!*Hs>nScPyAsXm- zgg(@shZV_3VQ)9O_S)CDuadD&ocrZ$-F(cs&PpE?X0xjo+n;4#jC9U4Q_GW_{K$9Q zn<=7uK8J?KQ;$q&wP1^|h3=)u-sb+(7Pe?WM{lM#CglI-=zQfwP5Jj>Py5XZp+9&- z%T_voYLT+k6%_~K#sEjYK%}MMWsmd7QY42>FD_BkLC`zNO!Io2ur(TeB-xB_FhwF^MXHdR${u^~GXQcTcFi3meD^#jf^e$R8-CZEXIpZ- zj$Z1e+f|qW&S}f7$sU$4>CEzn0b`2HHI7tj=U-&R2pm7?taK|o`f($ZK?HQ)y>jdC zxY-Yutdxvtk;9G6vYJJ@jrMGYZ5D5}FZ{4% zyzb-L`tBhgB%?ZZ7=99T7G@9{8oET!tMO~TfABf?l=nG}*@Yiz`-pw5SZ#yZe@(#~ aX93ECBNGer7oq|5(^9{!_Th$A(EkI-YDIeh diff --git a/blog/fix-bug-in-vscode-extension/vscode-sftp-upload-changed-files.png b/blog/fix-bug-in-vscode-extension/vscode-sftp-upload-changed-files.png deleted file mode 100644 index 72f9f9d69d450c40eb115867105d45a5effce94a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4107 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 + In this article, we'll take a look at the evolution of remote file management, from the use of FTP clients to the adoption of GitHub Actions for automated deployment. ## The FTP client era diff --git a/blog/getting-started-with-mern/index.md b/blog/getting-started-with-mern/index.md index 4154743a6..dcc08e925 100644 --- a/blog/getting-started-with-mern/index.md +++ b/blog/getting-started-with-mern/index.md @@ -40,6 +40,8 @@ meta: A comprehensive guide to get you started with MERN stack. From building an API with Express.js to creating a React app, this guide covers all the basics of the MERN stack. + + ![Getting started with MERN](./mern.jpg) :::caution diff --git a/blog/getting-started-with-microservices/index.md b/blog/getting-started-with-microservices/index.md index ff2394ece..43390f140 100644 --- a/blog/getting-started-with-microservices/index.md +++ b/blog/getting-started-with-microservices/index.md @@ -7,6 +7,9 @@ date: 2024-06-17 hide_table_of_contents: true --- +In the era of cloud-native development, microservices have emerged as a popular architectural style for building scalable, resilient, and maintainable applications. This guide provides an introduction to microservices, explores their benefits, and offers a step-by-step tutorial on developing a microservice application using Spring Boot and MongoDB. + + ## 1. Understanding the importance Microservices diff --git a/blog/getting-started-with-nlp.md b/blog/getting-started-with-nlp.md index c8bfe9598..2504a9782 100644 --- a/blog/getting-started-with-nlp.md +++ b/blog/getting-started-with-nlp.md @@ -8,10 +8,10 @@ hide_table_of_contents: true --- -## Introduction - Natural Language Processing (NLP) is a field of artificial intelligence that focuses on the interaction between computers and humans through natural language. The goal of NLP is to enable computers to understand, interpret, and generate human language in a way that is valuable. This documentation provides an introduction to NLP, its basic concepts, techniques, tools, and practical applications. + + ## Basic Concepts NLP involves several key concepts: diff --git a/blog/getting-started-with-serverless-architecture.md b/blog/getting-started-with-serverless-architecture.md index adebcc32c..37f1b1286 100644 --- a/blog/getting-started-with-serverless-architecture.md +++ b/blog/getting-started-with-serverless-architecture.md @@ -7,10 +7,10 @@ date: 2024-07-22 hide_table_of_contents: true --- -## Introduction - Serverless architecture is a cloud computing execution model where the cloud provider dynamically manages the allocation and provisioning of servers. AWS Lambda, a key component of serverless architecture, allows you to run code without provisioning or managing servers. This guide will introduce you to AWS Lambda and provide a step-by-step approach to getting started with serverless architecture. + + ## Key Concepts ### What is AWS Lambda? diff --git a/blog/getting-started-with-vite/index.md b/blog/getting-started-with-vite/index.md index 672a70380..105461d91 100644 --- a/blog/getting-started-with-vite/index.md +++ b/blog/getting-started-with-vite/index.md @@ -24,6 +24,10 @@ date: 2024-03-17 12:15:07 description: "Learn how to get started with React by creating a new app using Vite. Follow the steps to set up your development environment and build your first React application." --- +In this blog post, we will learn how to get started with React by creating a new app using Vite. We will follow the steps to set up our development environment and build our first React application. We will explore the advantages of using Vite for React development and discuss its features, benefits, and community support. Let's dive in! + + + import './style.css'; ![Getting Started with React and Vite](./react-and-vite.jpg) diff --git a/blog/git-best-practicies.md b/blog/git-best-practicies.md index 25baf918f..d5c4f6bca 100644 --- a/blog/git-best-practicies.md +++ b/blog/git-best-practicies.md @@ -9,6 +9,8 @@ hide_table_of_contents: true Git is a powerful tool for managing the development of software projects, but it can be challenging to use effectively. In this article, we'll take a look at some best practices for using Git, including how to structure your commits, how to manage branches, and how to collaborate with others. By following these best practices, you can make your development process more efficient and less error-prone. + + ## Commit Often, Perfect Later, Publish Once One of the most important best practices for using Git is to commit your changes often. This means that you should make small, focused commits that capture a single logical change to your code. By committing often, you can keep a detailed history of your changes, which makes it easier to understand the evolution of your codebase and to track down bugs. diff --git a/blog/install-mongodb-linux.md b/blog/install-mongodb-linux.md index ba9e04142..8f9db2710 100644 --- a/blog/install-mongodb-linux.md +++ b/blog/install-mongodb-linux.md @@ -9,6 +9,8 @@ draft: false MongoDB is a popular NoSQL database that is known for its flexibility and scalability. It is widely used in modern web applications and is a great choice for storing and managing large volumes of data. In this article, we will walk you through the process of installing MongoDB on a Linux system, specifically Debian Bullseye. + + ## Step 1: Import the MongoDB GPG Key The first step is to import the MongoDB GPG key, which is used to verify the authenticity of the MongoDB packages. You can do this by running the following command in your terminal: diff --git a/blog/install-mongodb-windows.md b/blog/install-mongodb-windows.md index f79d58e0e..e96633c5f 100644 --- a/blog/install-mongodb-windows.md +++ b/blog/install-mongodb-windows.md @@ -9,6 +9,8 @@ draft: false MongoDB is a popular NoSQL database that is known for its flexibility and scalability. It is widely used in modern web applications and is a great choice for storing and managing large volumes of data. In this article, we will walk you through the process of installing MongoDB on a Windows system. + + ## Step 1: Download the MongoDB Installer The first step is to download the MongoDB installer from the official MongoDB website. You can find the installer at the following URL: [https://www.mongodb.com/try/download/community](https://www.mongodb.com/try/download/community) diff --git a/blog/introduction-to-cryptography-and-cyber-security.md b/blog/introduction-to-cryptography-and-cyber-security.md index 8d73d31e9..2e90f8019 100644 --- a/blog/introduction-to-cryptography-and-cyber-security.md +++ b/blog/introduction-to-cryptography-and-cyber-security.md @@ -7,10 +7,10 @@ date: 2024-06-24 hide_table_of_contents: true --- -## Introduction - In the realm of cyber security, cryptography stands as a critical tool for protecting information. As digital data exchange grows exponentially, the importance of cryptography in ensuring data security and privacy cannot be overstated. This blog explores the fundamental concepts of cryptography, its historical significance, and its contemporary applications in cyber security. + + ## Understanding Cryptography Cryptography is the science of encoding and decoding information to protect it from unauthorized access. It involves various techniques and algorithms that transform readable data, known as plaintext, into an unreadable format, known as ciphertext. Only those who possess the appropriate decryption key can convert the ciphertext back into plaintext. diff --git a/blog/introduction-to-the-Linux-development-and-cyber-security.md b/blog/introduction-to-the-Linux-development-and-cyber-security.md index 83d9f32ce..3ddcab9cf 100644 --- a/blog/introduction-to-the-Linux-development-and-cyber-security.md +++ b/blog/introduction-to-the-Linux-development-and-cyber-security.md @@ -8,10 +8,10 @@ date: 2024-06-23 hide_table_of_contents: true --- -## Introduction - Linux, renowned for its stability, security, and open-source nature, plays a pivotal role in modern computing environments, particularly in development and cybersecurity. This documentation explores how Linux facilitates software development processes and serves as a secure foundation for cybersecurity operations. + + ## Linux in Development ### Open Source Ecosystem diff --git a/blog/introduction-to-web-assembly.md b/blog/introduction-to-web-assembly.md index 280e0ccd4..e3b16e424 100644 --- a/blog/introduction-to-web-assembly.md +++ b/blog/introduction-to-web-assembly.md @@ -7,10 +7,10 @@ date: 2024-07-21 hide_table_of_contents: true --- -## Introduction - WebAssembly (Wasm) is a binary instruction format that provides near-native performance for web applications. Designed as a portable compilation target for high-level languages like C, C++, and Rust, WebAssembly enables efficient execution of code on modern web browsers. This documentation introduces WebAssembly, its benefits, and how to get started with Wasm development. + + ## What is WebAssembly (Wasm)? WebAssembly is a low-level, assembly-like language with a compact binary format that runs with near-native performance. It provides a new way to run code written in multiple languages on the web at near-native speed, allowing for powerful web applications. diff --git a/blog/iot-integration-and-application-development.md b/blog/iot-integration-and-application-development.md index 2f6a67314..ceb48121c 100644 --- a/blog/iot-integration-and-application-development.md +++ b/blog/iot-integration-and-application-development.md @@ -7,7 +7,9 @@ date: 2024-07-31 hide_table_of_contents: true --- -The Internet of Things (IoT) represents a network of interconnected devices that communicate and share data to drive intelligent actions, transforming industries and everyday life. +The Internet of Things (IoT) is a transformative technology that connects physical devices to the internet, enabling data collection, exchange, and automation. This documentation provides an overview of IoT, including its architecture, communication protocols, sensors, actuators, and integration with cloud and edge computing. + + ## Introduction to IoT diff --git a/blog/leveraging-gpt-models-for-microfrontends.md b/blog/leveraging-gpt-models-for-microfrontends.md index 3a23c74f9..7d76a0e93 100644 --- a/blog/leveraging-gpt-models-for-microfrontends.md +++ b/blog/leveraging-gpt-models-for-microfrontends.md @@ -7,10 +7,10 @@ date: 2024-08-01 hide_table_of_contents: true --- -## Introduction - Microfrontends represent a new architectural trend in web development, aiming to extend the benefits of microservices to the frontend. This documentation delves into leveraging GPT models for architecting front-end applications at scale using microfrontends. + + ## Introduction to Microfrontends Microfrontends break down frontend monoliths into smaller, more manageable pieces that can be developed, tested, and deployed independently. This approach enhances scalability, flexibility, and team autonomy. diff --git a/blog/microservices-architecture.md b/blog/microservices-architecture.md index 802d481ae..ed4fde11a 100644 --- a/blog/microservices-architecture.md +++ b/blog/microservices-architecture.md @@ -7,10 +7,10 @@ date: 2024-07-29 hide_table_of_contents: true --- -## Introduction - Microservices architecture is an approach to designing software systems where the application is broken down into smaller, loosely coupled, and independently deployable services. Each service focuses on a specific business functionality and communicates with other services through well-defined APIs. This architecture enables easier maintenance, scalability, and faster deployment cycles. + + ## Designing Microservices Architecture Designing a microservices architecture involves: diff --git a/blog/nvs-one-node-version-per-terminal-in-windows.mdx b/blog/nvs-one-node-version-per-terminal-in-windows.mdx deleted file mode 100644 index 50620a7c6..000000000 --- a/blog/nvs-one-node-version-per-terminal-in-windows.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 'nvs: One Node Version Per Terminal in Windows' -authors: [ajay-dhangar] -tags: [nvs, node] -date: 2024-03-15 13:37:46 -decription: Install and setup nvs to Windows for PowerShell and Git-Bash -draft: false ---- - -`nvs` is a cross-platform Node.js version manager that allows you to install and use multiple versions of Node.js on the same machine. It is similar to `nvm` for Unix-based systems. `nvs` is a simple and easy-to-use tool that allows you to switch between different versions of Node.js with a single command. - -In this article, we will learn how to install and set up `nvs` on Windows for PowerShell and Git-Bash. diff --git a/blog/piracy-preserving-ai.md b/blog/piracy-preserving-ai.md index 703218b36..d2a4eb785 100644 --- a/blog/piracy-preserving-ai.md +++ b/blog/piracy-preserving-ai.md @@ -7,10 +7,10 @@ date: 2024-08-01 hide_table_of_contents: true --- -## Introduction - Privacy-Preserving AI is an emerging field focused on protecting individuals' privacy while enabling the use of AI for data analysis and decision-making. This documentation covers various techniques and applications, exploring how AI can be developed and deployed without compromising data privacy. + + ## Differential Privacy ### Overview diff --git a/blog/react-js.md b/blog/react-js.md index 90cf886e2..163eed6eb 100644 --- a/blog/react-js.md +++ b/blog/react-js.md @@ -6,8 +6,11 @@ tags: [javascript , framework , frontend , react , node ] date: 2024-06-13 12:29 hide_table_of_contents: true --- + React is a JavaScript library primarily used for building user interfaces in single-page applications. While it's often integrated with tools like Webpack for bundling JavaScript and CSS files, React itself does not directly incorporate Webpack. Despite its nature as a library rather than a full framework or programming language, React remains instrumental in modern web development. + + React offers various extensions for entire application architectural support, such as Flux and React Native, beyond mere UI. ## Why React? diff --git a/blog/reactjs-mongodb-chrome-extension.md b/blog/reactjs-mongodb-chrome-extension.md index 6eb81ac84..6e928c991 100644 --- a/blog/reactjs-mongodb-chrome-extension.md +++ b/blog/reactjs-mongodb-chrome-extension.md @@ -7,10 +7,10 @@ date: 2024-06-13 23:23:23 hide_table_of_contents: true --- -# Chrome Extension Using MERN - Creating a Chrome extension can seem like a daunting task, especially when you're trying to combine it with technologies like ReactJS and MongoDB. When I first set out to build my extension, I found it challenging to find a perfect YouTube tutorial or blog post that covered everything I needed. So, I turned to StackOverflow and other resources to piece together my project. + + You can always take help from my github repository: https://github.com/abckhush/Basic-Chrome-Extension Here's a step-by-step guide based on my experience: diff --git a/blog/sed-normalize-md-file-with-regex.md b/blog/sed-normalize-md-file-with-regex.md index 39a6bfdb7..88fd726cb 100644 --- a/blog/sed-normalize-md-file-with-regex.md +++ b/blog/sed-normalize-md-file-with-regex.md @@ -1,6 +1,6 @@ --- title: 'Sed: Normalize markdown file with Regex' -author: Ajay Dhangar +author: ajay-dhangar tags: [sed, regex, web clipper] date: 2024-03-15 14:37:46 description: How to normalize markdown file with Regex @@ -9,6 +9,8 @@ draft: false I have been using [web clipper](https://www.notion.so/web-clipper) to save articles and blog posts for a while now. It's a great tool to save content from the web and organize it in a clean and readable format. However, the markdown files generated by web clipper are not always consistent, and I often find myself manually editing them to make them more readable. + + One of the common issues I encounter is inconsistent formatting of the front matter in the markdown files. The front matter is a block of metadata at the beginning of a markdown file that contains information such as the title, author, tags, date, and description of the content. Here's an example of what the front matter looks like: ```markdown diff --git a/blog/sql.md b/blog/sql.md index 2c7034ad2..6fb6da295 100644 --- a/blog/sql.md +++ b/blog/sql.md @@ -9,6 +9,8 @@ hide_table_of_contents: true Structured query language (SQL) is a programming language for storing and processing information in a relational database. A relational database stores information in tabular form, with rows and columns representing different data attributes and the various relationships between the data values. You can use SQL statements to store, update, remove, search, and retrieve information from the database. You can also use SQL to maintain and optimize database performance. + + ## Why is SQL important? Structured query language (SQL) is a popular query language that is frequently used in all types of applications. Data analysts and developers learn and use SQL because it integrates well with different programming languages. For example, they can embed SQL queries with the Java programming language to build high-performing data processing applications with major SQL database systems such as Oracle or MS SQL Server. SQL is also fairly easy to learn as it uses common English keywords in its statements diff --git a/docs/javascript/data-types/_category_.json b/docs/javascript/data-types/_category_.json new file mode 100644 index 000000000..d99a54e7a --- /dev/null +++ b/docs/javascript/data-types/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Data Types", + "position": 3, + "link": { + "type": "generated-index", + "description": "In this tutorial, you'll learn about the different data types in JavaScript, such as string, number, boolean, null, undefined, object, and symbol." + } +} diff --git a/docs/javascript/data-types/primitive-types/_category_.json b/docs/javascript/data-types/primitive-types/_category_.json new file mode 100644 index 000000000..25c38b894 --- /dev/null +++ b/docs/javascript/data-types/primitive-types/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Primitive Types", + "position": 1, + "link": { + "type": "generated-index", + "description": "Primitive types are the most basic data types in JavaScript. In this tutorial, you'll learn about the primitive types in JavaScript, such as string, number, boolean, null, undefined, and symbol." + } +} diff --git a/docs/javascript/data-types/primitive-types/bigint.md b/docs/javascript/data-types/primitive-types/bigint.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/javascript/data-types/primitive-types/boolean.md b/docs/javascript/data-types/primitive-types/boolean.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/javascript/data-types/primitive-types/number.md b/docs/javascript/data-types/primitive-types/number.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/javascript/data-types/primitive-types/string.md b/docs/javascript/data-types/primitive-types/string.md new file mode 100644 index 000000000..1e231b99d --- /dev/null +++ b/docs/javascript/data-types/primitive-types/string.md @@ -0,0 +1,154 @@ +--- +id: string +title: String Data Type in JavaScript +sidebar_label: String +sidebar_position: 1 +tags: [javascript, data type, primitive type, string] +description: Learn about the string data type in JavaScript, how to create strings, and common string operations. +--- + + + +In JavaScript, a string is a sequence of characters enclosed within single or double quotes. Strings are used to represent text data and are one of the primitive data types in JavaScript. + +## Creating Strings + +You can create strings in JavaScript using single quotes (`'`), double quotes (`"`), or backticks (`` ` ``). Here are examples of each: + +```javascript title="app.js" +let singleQuoted = 'Hello, World!'; +let doubleQuoted = "Hello, World!"; +let backticks = `Hello, World!`; +``` + + +### Single Quotes + +Strings enclosed within single quotes are the most common way to create strings in JavaScript. You can use single quotes to represent text data: + +```javascript title="app.js" +let singleQuoted = 'Hello, World!'; + +console.log(singleQuoted); // Output: Hello, World! +``` + +### Double Quotes + +Strings enclosed within double quotes are functionally equivalent to single-quoted strings. You can use double quotes to represent text data: + +```javascript title="app.js" +let doubleQuoted = "Hello, World!"; + +console.log(doubleQuoted); // Output: Hello, World! +``` + +### Backticks + +Strings enclosed within backticks are called template literals. Template literals allow you to embed expressions and multiline strings in JavaScript. You can use backticks to represent text data: + +```javascript title="app.js" +let backticks = `Hello, World!`; + +console.log(backticks); // Output: Hello, World! +``` + +## Common String Operations + +Strings in JavaScript support various operations, such as concatenation, interpolation, and methods for manipulating string data. Here are some common string operations: + +### Concatenation + +String concatenation is the process of combining two or more strings into a single string. You can use the `+` operator or template literals for string concatenation: + +```javascript title="app.js" +let firstName = 'John'; +let lastName = 'Doe'; + +// Using the + operator +let fullName = firstName + ' ' + lastName; +console.log(fullName); // Output: John Doe + +// Using template literals +let fullNameTemplate = `${firstName} ${lastName}`; +console.log(fullNameTemplate); // Output: John Doe +``` + +### Interpolation + +String interpolation allows you to embed expressions within a string. You can use template literals to interpolate variables and expressions directly within the string: + +```javascript title="app.js" +let name = 'Alice'; +let greeting = `Hello, ${name}!`; + +console.log(greeting); // Output: Hello, Alice! +``` + +### String Methods + +JavaScript provides built-in methods for working with strings. Here are some common string methods: + +- `length`: Returns the length of a string. +- `toUpperCase()`: Converts a string to uppercase. +- `toLowerCase()`: Converts a string to lowercase. +- `trim()`: Removes whitespace from the beginning and end of a string. +- `split()`: Splits a string into an array of substrings based on a delimiter. +- `indexOf()`: Returns the index of the first occurrence of a substring within a string. +- `replace()`: Replaces a substring with another substring. +- `substring()`: Extracts a substring based on start and end positions. +- `charAt()`: Returns the character at a specified index. +- `startsWith()`: Checks if a string starts with a specified substring. +- `endsWith()`: Checks if a string ends with a specified substring. +- `includes()`: Checks if a string contains a specified substring. +- `slice()`: Extracts a portion of a string based on start and end positions. +- `concat()`: Combines two or more strings. +- `repeat()`: Repeats a string a specified number of times. +- `padStart()`: Pads a string with another string until it reaches a specified length from the start. +- `padEnd()`: Pads a string with another string until it reaches a specified length from the end. +- `match()`: Searches a string for a specified pattern and returns an array of matches. +- `search()`: Searches a string for a specified pattern and returns the index of the first match. + +Here's an example using some of these string methods: + +```javascript title="app.js" +let text = 'Hello, World!'; +let substring = text.substring(0, 5); // Extracts 'Hello' +let uppercaseText = text.toUpperCase(); // Converts text to uppercase +let replacedText = text.replace('World', 'JavaScript'); // Replaces 'World' with 'JavaScript' +let splitText = text.split(','); // Splits text into an array ['Hello', ' World!'] +let includesText = text.includes('Hello'); // Checks if text contains 'Hello' (returns true) +let indexOfText = text.indexOf('World'); // Returns the index of 'World' (returns 7) +let length = text.length; // Returns the length of the text (returns 13) +let charAt = text.charAt(7); // Returns the character at index 7 (returns 'W') +let startsWith = text.startsWith('Hello'); // Checks if text starts with 'Hello' (returns true) +let endsWith = text.endsWith('World!'); // Checks if text ends with 'World!' (returns true) +let repeatText = text.repeat(2); // Repeats text twice ('Hello, World!Hello, World!') +let paddedText = text.padStart(20, '*'); // Pads text with '*' until it reaches a length of 20 from the start +let trimmedText = ' Hello, World! '.trim(); // Removes whitespace from the beginning and end of the text + +console.log(substring); +console.log(uppercaseText); +console.log(replacedText); +console.log(splitText); +console.log(includesText); +console.log(indexOfText); +console.log(length); +console.log(charAt); +console.log(startsWith); +console.log(endsWith); +console.log(repeatText); +console.log(paddedText); +console.log(trimmedText); +``` + +These are just a few examples of the many string methods available in JavaScript. You can explore more string methods in the [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String). + +Strings are a fundamental part of JavaScript and are widely used to represent text data in web development. Understanding how to create and manipulate strings is essential for building interactive web applications. + +In this tutorial, you learned about the string data type in JavaScript, how to create strings using single quotes, double quotes, and backticks, and common string operations such as concatenation, interpolation, and string methods. You also explored examples of using string methods to manipulate and work with string data. + +Strings are versatile and powerful data types in JavaScript, and mastering string operations will help you build dynamic and interactive web applications. If you want to learn more about JavaScript data types, check out our [JavaScript Data Types](/docs/category/data-types-1) tutorial. + +## Conclusion + +Strings are a fundamental data type in JavaScript used to represent text data. You can create strings using single quotes, double quotes, or backticks. Strings support various operations such as concatenation, interpolation, and methods for manipulating string data. \ No newline at end of file diff --git a/docs/javascript/data-types/primitive-types/symbol.md b/docs/javascript/data-types/primitive-types/symbol.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/javascript/data-types/primitive-types/undefined.md b/docs/javascript/data-types/primitive-types/undefined.md new file mode 100644 index 000000000..de8ff26e0 --- /dev/null +++ b/docs/javascript/data-types/primitive-types/undefined.md @@ -0,0 +1,111 @@ +--- +id: undefined +title: Undefined Data Type in JavaScript +sidebar_label: Undefined +sidebar_position: 2 +tags: [javascript, data type, primitive type, undefined] +description: Learn about the undefined data type in JavaScript, how to create undefined values, and common operations with undefined values. +--- + + + +In JavaScript, `undefined` is a primitive data type that represents an undefined value. When a variable is declared but not assigned a value, it is automatically assigned the value `undefined`. + +## Creating Undefined Values + +You can create `undefined` values in JavaScript by declaring a variable without assigning a value to it. Here's an example: + +```javascript title="app.js" +let undefinedValue; +console.log(undefinedValue); // Output: undefined +``` + +In the example above, the variable `undefinedValue` is declared but not assigned a value, so it is automatically assigned the value `undefined`. + +## Checking for Undefined Values + +You can check if a variable is `undefined` using strict equality (`===`) or the `typeof` operator. Here are examples of both methods: + +### Using Strict Equality (`===`) + +You can use the strict equality operator (`===`) to check if a variable is `undefined`. The strict equality operator compares both the value and the type of the operands: + +```javascript title="app.js" +let undefinedValue; +console.log(undefinedValue === undefined); // Output: true +``` + +### Using the `typeof` Operator + +You can also use the `typeof` operator to check if a variable is `undefined`. The `typeof` operator returns the data type of the operand: + +```javascript title="app.js" +let undefinedValue; +console.log(typeof undefinedValue === 'undefined'); // Output: true +``` + +## Common Operations with Undefined Values + +### Assigning Undefined Values + +You can assign `undefined` to a variable explicitly by using the `undefined` keyword. Here's an example: + +```javascript title="app.js" +let explicitUndefined = undefined; + +console.log(explicitUndefined); // Output: undefined +``` + +### Returning Undefined from Functions + +If a function does not explicitly return a value, it implicitly returns `undefined`. Here's an example: + +```javascript title="app.js" +function noReturnValue() { + // No return statement +} + +console.log(noReturnValue()); // Output: undefined +``` + +### Deleting Properties + +You can delete properties from an object using the `delete` operator. After deleting a property, accessing the property will return `undefined`. Here's an example: + +```javascript title="app.js" +let person = { name: 'Alice', age: 30 }; + +delete person.age; + +console.log(person.age); // Output: undefined +``` + +### Checking for Undefined Properties + +You can check if an object has a property with an `undefined` value using the `in` operator. The `in` operator returns `true` if the property exists in the object, even if its value is `undefined`. Here's an example: + +```javascript title="app.js" +let person = { name: 'Alice', age: undefined }; + +console.log('age' in person); // Output: true +``` + +### Passing Undefined Arguments + +If a function is called with fewer arguments than declared parameters, the missing arguments are assigned the value `undefined`. Here's an example: + +```javascript title="app.js" +function greet(name, message) { + console.log(`Hello, ${name}! ${message}`); +} + +greet('Alice'); // Output: Hello, Alice! undefined +``` + +In this example, the `greet` function is called with one argument (`'Alice'`) instead of two. The `message` parameter is assigned the value `undefined` because it is missing in the function call. + +Understanding the `undefined` data type and how it behaves in JavaScript is essential for writing robust and error-free code. By handling `undefined` values correctly, you can prevent unexpected behavior and improve the reliability of your JavaScript applications. + +## Conclusion + +In this tutorial, you learned about the `undefined` data type in JavaScript, how to create `undefined` values, and common operations with `undefined` values. You also explored various scenarios where `undefined` values are used and how to handle them effectively in your JavaScript code. \ No newline at end of file From a4155c0a29f97b2dd86601ca54056cf61702a6f1 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Thu, 22 Aug 2024 08:29:18 +0000 Subject: [PATCH 2/6] Restyled by prettier-markdown --- ...00\231s Guide to the Top 5 React Hooks.md" | 84 +-- blog/Cybersecurity-in-Cloud-Computing.md | 24 + blog/DOM manipulation in JavaScript.md | 114 ++- .../index.md | 23 +- blog/Getting started with PostgreSQL.md | 308 +++++--- blog/Getting-started-with-nextJS.md | 63 +- blog/Introduction in Python Development.md | 6 +- ...ion to Cyber Security and Web Explosion.md | 2 +- blog/JavaScript ES6 features.md | 10 +- ...l for Natural Language Processing Tasks.md | 4 +- blog/Mastering Data Structures in Python.md | 3 +- blog/Mastering Design Patterns in Java.md | 27 +- blog/Mastering OOP concepts in JAVA.md | 152 ++-- blog/Mastering SOLID principles in Java.md | 41 +- .../Quantum computing and it's application.md | 8 +- blog/Web-Development-with-Django.md | 83 ++- blog/ai-in-healthcare.md | 7 +- blog/automating-tasks-with-python.md | 2 +- ...ding-and-deploying-progressive-web-apps.md | 59 +- ...pment with-microservices-and-kubernetes.md | 15 +- blog/composable-architecture.md | 7 +- ...ainerization-with-docker-and-kubernetes.md | 27 +- blog/debugging.md | 26 +- blog/developing-cross-platform-apps.md | 23 +- .../index.md | 13 +- blog/from-ftp-client-to-github-action.md | 4 +- blog/getting-started-with-mern/index.md | 702 +++++++++--------- .../index.md | 6 +- blog/getting-started-with-nlp.md | 8 +- ...ng-started-with-serverless-architecture.md | 38 +- blog/getting-started-with-vite/index.md | 2 +- blog/git-best-practicies.md | 4 +- blog/install-mongodb-linux.md | 2 +- blog/install-mongodb-windows.md | 2 +- ...he-Linux-development-and-cyber-security.md | 7 +- blog/introduction-to-web-assembly.md | 6 +- ...integration-and-application-development.md | 33 +- ...everaging-gpt-models-for-microfrontends.md | 3 +- blog/microservices-architecture.md | 19 +- blog/piracy-preserving-ai.md | 32 +- blog/react-js.md | 59 +- blog/reactjs-mongodb-chrome-extension.md | 80 +- blog/sed-normalize-md-file-with-regex.md | 6 +- blog/sql.md | 45 +- .../data-types/primitive-types/string.md | 33 +- .../data-types/primitive-types/undefined.md | 12 +- 46 files changed, 1290 insertions(+), 944 deletions(-) diff --git "a/blog/Beginner\342\200\231s Guide to the Top 5 React Hooks.md" "b/blog/Beginner\342\200\231s Guide to the Top 5 React Hooks.md" index 937914baa..44d17cf88 100644 --- "a/blog/Beginner\342\200\231s Guide to the Top 5 React Hooks.md" +++ "b/blog/Beginner\342\200\231s Guide to the Top 5 React Hooks.md" @@ -1,5 +1,5 @@ --- -title: 'A Beginner’s Guide to the Top 5 React Hooks' +title: "A Beginner’s Guide to the Top 5 React Hooks" sidebar_label: React hooks authors: [dharshibalasubramaniyam] tags: [react.js, react-hooks] @@ -36,7 +36,7 @@ In this beginner’s guide, we’ll explore the top 5 React hooks that every Rea ### Importing useState hook from react: ```js -import { useState } from 'react'; +import { useState } from "react"; ``` ### Declaring a state variable named count with an initial value of 0, @@ -61,6 +61,7 @@ const Counter = () => { ); }; ``` + - In above example, when the button is clicked, the onClick event handler calls the setCount function with the updated value of count (count + 1), causing the component to re-render with the new state value. - Note: We cannot update a state variable like, count = count +1 @@ -71,29 +72,26 @@ const Counter = () => { ```js const Counter = () => { - const [person, setPerson] = useState({id: '1', name: 'John', age: 25}); + const [person, setPerson] = useState({ id: "1", name: "John", age: 25 }); const updateName = (newName) => { - setPerson(prevState => { + setPerson((prevState) => { return { ...prevState, name: newName }; }); }; const updateAge = (newAge) => { - setPerson(prevState => { + setPerson((prevState) => { return { ...prevState, age: newAge }; }); }; - return ( -

- {/* form to update name and age */} -
- ); + return
{/* form to update name and age */}
; }; ``` ## 2. ‘useEffect’ hook + - The useEffect hook in React enables functional components to perform side effects, such as data fetching, DOM manipulation, or subscriptions. It replaces lifecycle methods like componentDidMount, componentDidUpdate, and componentWillUnmount in class components. ### componentDidMount @@ -105,7 +103,7 @@ const Counter = () => { ```js useEffect(() => { // Perform initialization or side effects - console.log("The component is rendered initially.") + console.log("The component is rendered initially."); }, []); ``` @@ -118,7 +116,7 @@ useEffect(() => { ```js useEffect(() => { // Effect runs after every render - console.log("The component is rendered.") + console.log("The component is rendered."); }); ``` @@ -127,7 +125,7 @@ useEffect(() => { ```js useEffect(() => { // Perform side effects after state or props update - console.log("dependency1 or dependency2 have updated.") + console.log("dependency1 or dependency2 have updated."); }, [dependency1, dependency2]); ``` @@ -140,10 +138,10 @@ useEffect(() => { ```js useEffect(() => { // Perform side effects - console.log("dependency is updated.") + console.log("dependency is updated."); return () => { // Cleanup tasks - console.log("The component is unmounted.") + console.log("The component is unmounted."); }; }, [dependency]); ``` @@ -158,7 +156,7 @@ useEffect(() => { ```js // themeContext.js -import React, { createContext } from 'react'; +import React, { createContext } from "react"; export const ThemeContext = createContext(null); ``` @@ -169,11 +167,11 @@ export const ThemeContext = createContext(null); ```js function App() { - const theme = 'dark'; + const theme = "dark"; return ( - + ); } @@ -184,20 +182,21 @@ function App() { - Now, any component within the provider can access the context using the useContext hook. ```js -import React, { useContext } from 'react'; -import ThemeContext from './ThemeContext'; +import React, { useContext } from "react"; +import ThemeContext from "./ThemeContext"; function MyComponent() { const theme = useContext(ThemeContext); - return
- Content -
; + return ( +
+ Content +
+ ); } ``` @@ -218,25 +217,21 @@ const Counter = () => { // Step 1: Define initial state const initialState = { count: 0 }; - return ( -
- content -
- ); + return
content
; }; ``` ### Reducer Function - You define a reducer function. This function takes two arguments: the current state and an action, and returns the new state based on the action. The reducer function is responsible for updating the state. - + ```js // Step 2: Define reducer function const reducer = (state, action) => { switch (action.type) { - case 'increment': + case "increment": return { count: state.count + 1 }; - case 'decrement': + case "decrement": return { count: state.count - 1 }; default: throw new Error(); @@ -251,15 +246,15 @@ const reducer = (state, action) => { ```js const Counter = () => { const initialState = { count: 0 }; - + // Step 3: Use useReducer hook const [state, dispatch] = useReducer(reducer, initialState); return (
Count: {state.count} - - + +
); }; @@ -276,7 +271,7 @@ const Counter = () => { Example 1 ```js -import React, { useRef } from 'react'; +import React, { useRef } from "react"; function MyComponent() { // Create a ref to store a DOM element @@ -305,7 +300,7 @@ In this example, myInputRef is created using useRef, and it's attached to the in Example 2 ```js -import React, { useState, useRef } from 'react'; +import React, { useState, useRef } from "react"; function Counter() { // State for storing the count @@ -320,10 +315,10 @@ function Counter() { if (intervalIdRef.current !== null) { return; // If already running, do nothing } - + // Start the counter intervalIdRef.current = setInterval(() => { - setCount(prevCount => prevCount + 1); + setCount((prevCount) => prevCount + 1); }, 1000); }; @@ -333,7 +328,7 @@ function Counter() { if (intervalIdRef.current === null) { return; // If not running, do nothing } - + // Stop the counter clearInterval(intervalIdRef.current); intervalIdRef.current = null; @@ -350,6 +345,7 @@ function Counter() { export default Counter; ``` + - We have a state variable count that stores the current count. - We create a ref named intervalIdRef using useRef(null). This ref will be used to store the ID returned by setInterval so that we can later clear the interval. - startCounter function starts a timer using setInterval and increments the count every second. It first checks if the counter is already running to avoid starting multiple timers simultaneously. diff --git a/blog/Cybersecurity-in-Cloud-Computing.md b/blog/Cybersecurity-in-Cloud-Computing.md index c44bfa756..bca73d018 100644 --- a/blog/Cybersecurity-in-Cloud-Computing.md +++ b/blog/Cybersecurity-in-Cloud-Computing.md @@ -11,89 +11,113 @@ In this guide, we will explore the key aspects of cybersecurity in cloud computi ## Overview + Cloud computing offers scalable resources and convenience, but it also introduces unique cybersecurity challenges. This guide covers key aspects of cybersecurity in cloud computing, including common threats, best practices, and security frameworks. ## Table of Contents ## 1. Introduction to Cloud Computing + Cloud computing provides on-demand delivery of computing resources over the internet, enabling businesses to scale and innovate quickly. However, this flexibility comes with cybersecurity challenges that need to be addressed to protect sensitive data and applications. ## 2. Common Cloud Security Threats ### Data Breaches + Data breaches in the cloud can occur due to misconfigured storage, weak authentication, or vulnerabilities in the cloud infrastructure. ### Insider Threats + Insider threats involve malicious activities by employees or other trusted individuals who have access to sensitive data. ### Account Hijacking + Attackers can gain unauthorized access to cloud accounts through phishing, brute force attacks, or exploiting vulnerabilities. ### Denial of Service (DoS) Attacks + DoS attacks overwhelm cloud services with traffic, causing disruptions and potentially leading to data loss. ## 3. Cloud Security Models ### Shared Responsibility Model + The shared responsibility model divides security responsibilities between the cloud provider and the customer. Providers secure the infrastructure, while customers are responsible for securing their data and applications. ### Security as a Service (SECaaS) + SECaaS delivers security services through the cloud, offering solutions like antivirus, intrusion detection, and security monitoring. ## 4. Best Practices for Cloud Security ### Data Encryption + Encrypt data both in transit and at rest to protect it from unauthorized access. ### Identity and Access Management (IAM) + Implement strong IAM practices, including multi-factor authentication (MFA) and least privilege access, to control who can access cloud resources. ### Regular Audits and Compliance + Conduct regular security audits and ensure compliance with relevant standards and regulations. ### Secure Application Development + Follow secure coding practices and regularly update applications to fix security vulnerabilities. ## 5. Cloud Security Frameworks and Standards ### NIST Cloud Computing Security + The National Institute of Standards and Technology (NIST) provides guidelines and best practices for securing cloud environments. ### ISO/IEC 27017 + This international standard offers guidelines for information security controls specific to cloud services. ### CSA Cloud Controls Matrix + The Cloud Security Alliance (CSA) provides a framework of security controls tailored to cloud computing environments. ## 6. Implementing Cloud Security ### Choosing a Secure Cloud Provider + Select a cloud provider with strong security measures, certifications, and a proven track record. ### Configuring Security Settings + Properly configure security settings, such as firewalls, encryption, and access controls, to protect cloud resources. ### Monitoring and Incident Response + Implement continuous monitoring and establish an incident response plan to quickly detect and respond to security incidents. ## 7. Case Studies of Cloud Security Breaches ### Analysis of Major Incidents + Examine major cloud security breaches to understand how they occurred and the impact they had. ### Lessons Learned + Learn from past incidents to improve security measures and prevent similar breaches in the future. ## 8. Future Trends in Cloud Security ### AI and Machine Learning + Artificial intelligence and machine learning can enhance cloud security by detecting and responding to threats in real-time. ### Quantum Computing + Quantum computing poses new challenges and opportunities for cloud security, particularly in the field of encryption. ### Zero Trust Architecture + Zero trust architecture assumes that threats can come from both outside and inside the network, and it implements strict access controls and continuous monitoring. ## 9. Conclusion + Securing cloud environments is crucial for protecting sensitive data and maintaining trust. By understanding the unique challenges of cloud security and implementing best practices, organizations can leverage the benefits of cloud computing while minimizing risks. diff --git a/blog/DOM manipulation in JavaScript.md b/blog/DOM manipulation in JavaScript.md index 61adde58e..3a93c3b75 100644 --- a/blog/DOM manipulation in JavaScript.md +++ b/blog/DOM manipulation in JavaScript.md @@ -1,5 +1,5 @@ --- -title: 'DOM manipulation in JavaScript' +title: "DOM manipulation in JavaScript" sidebar_label: DOM-manipulation-in-JavaScript authors: [dharshibalasubramaniyam] tags: [dom, javascript] @@ -17,30 +17,30 @@ In web development, the Document Object Model (DOM) is a crucial aspect of creat - This model allows developers to interact with the document programmatically via scripting languages like JavaScript. -- When a web page is loaded, the browser parses the HTML and creates the DOM. +- When a web page is loaded, the browser parses the HTML and creates the DOM. - The DOM represents the document as a tree of nodes, where each node is an object representing a part of the document: -*Document Node*: Represents the entire document. +_Document Node_: Represents the entire document. -*Element Nodes*: Represent HTML elements like `
`, `

`, ``, etc. +_Element Nodes_: Represent HTML elements like `

`, `

`, ``, etc. -*Text Nodes*: Contain the text content within elements. +_Text Nodes_: Contain the text content within elements. -*Attribute Nodes*: Represent the attributes of HTML elements (`class`, `id`, `src` etc.). +_Attribute Nodes_: Represent the attributes of HTML elements (`class`, `id`, `src` etc.). For example, consider the following HTML: ```html - + - + Example with Attributes - - + +

Hello, World!

This is a paragraph.

- + ``` @@ -62,7 +62,7 @@ Document │ └── "This is a paragraph." ``` -The DOM plays a central role in web development by enabling developers to create dynamic and interactive web pages. +The DOM plays a central role in web development by enabling developers to create dynamic and interactive web pages. - Access and manipulate elements: Developers can use JavaScript to select, modify, and create HTML elements. @@ -70,7 +70,7 @@ The DOM plays a central role in web development by enabling developers to create - Modify styles: Through the DOM, developers can change the CSS styles of elements dynamically. -## 2. DOM Manipulation +## 2. DOM Manipulation ### 2.1. Accessing Elements @@ -80,16 +80,15 @@ The DOM plays a central role in web development by enabling developers to create
Hello, World!
``` - ```js // Get the element with the ID 'myElement' -const element = document.getElementById('myElement'); +const element = document.getElementById("myElement"); // Log the element to the console console.log(element); ``` -- To get elements by their class, we can use the `getElementsByClassName` method. This method returns a live HTMLCollection of elements with the specified class name. +- To get elements by their class, we can use the `getElementsByClassName` method. This method returns a live HTMLCollection of elements with the specified class name. ```html
First Element
@@ -99,14 +98,14 @@ console.log(element); ```js // Get the elements with the class name 'myClass' -const elements = document.getElementsByClassName('myClass'); +const elements = document.getElementsByClassName("myClass"); // Log the elements to the console console.log(elements); // Optionally, you can iterate over the elements as well for (let i = 0; i < elements.length; i++) { - console.log(elements[i]) + console.log(elements[i]); } ``` @@ -116,8 +115,8 @@ for (let i = 0; i < elements.length; i++) {

Hello, World!

This is a paragraph.

-

Another paragraph inside a div.

-

Second paragraph inside a div.

+

Another paragraph inside a div.

+

Second paragraph inside a div.

``` @@ -127,7 +126,7 @@ const paragraphs = document.getElementsByTagName("p"); // Loop through and log the text content of each

element for (let i = 0; i < paragraphs.length; i++) { - console.log(paragraphs[i].textContent); + console.log(paragraphs[i].textContent); } ``` @@ -150,7 +149,6 @@ const paragraphInDiv = document.querySelector("div p"); - The `querySelectorAll` method in JavaScript allows you to select and retrieve a list (or NodeList) of all elements that match a specified CSS selector within the document or within a specific element. Unlike `querySelector`, which returns only the first matching element, `querySelectorAll` returns a NodeList containing all matching elements. ```js - // Select all

elements in the document const paragraphs = document.querySelectorAll("p"); @@ -162,8 +160,8 @@ const introElements = document.querySelectorAll(".intro"); // Select all

  • elements inside the