<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Stephen Michael</title>
    <description>The latest articles on DEV Community by Stephen Michael (@mc-stephen).</description>
    <link>https://dev.to/mc-stephen</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F470437%2F41a39b78-754a-42ce-8d55-36213dabc25b.png</url>
      <title>DEV Community: Stephen Michael</title>
      <link>https://dev.to/mc-stephen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mc-stephen"/>
    <language>en</language>
    <item>
      <title>How to Customize and Change Your Flutter App Launcher Icon [2024]</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Fri, 01 Nov 2024 11:59:54 +0000</pubDate>
      <link>https://dev.to/mc-stephen/how-to-customize-and-change-your-flutter-app-launcher-icon-2024-2jk2</link>
      <guid>https://dev.to/mc-stephen/how-to-customize-and-change-your-flutter-app-launcher-icon-2024-2jk2</guid>
      <description>&lt;p&gt;Hey there! Looking to give your Flutter app a bit of personality? Maybe that default launcher icon is just too “blah” for your masterpiece. Don’t worry! You’ve come to the right place. In this guide, I’ll walk you through changing the Flutter app launcher icon to something truly &lt;em&gt;you&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And the best part? Even if you've never touched a line of code in your life, you can still follow along. We’ll go step-by-step, throw in some humor to keep things fun, and you’ll be showing off that shiny new app icon in no time. Let’s get into it!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Original source of this article can be found in &lt;a href="https://axxellanceblog.com/" rel="noopener noreferrer"&gt;Axxellanceblog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What is a Flutter App Launcher Icon? And Why Bother?
&lt;/h3&gt;

&lt;p&gt;Alright, let’s start with the basics. In case you’re scratching your head, an “app launcher icon” is the small image you see on your phone screen when you open your list of apps. By default, Flutter gives you a generic icon – basically, the vanilla ice cream of app icons. But you want more, right?&lt;/p&gt;

&lt;p&gt;Maybe your app is for coffee lovers, and you want a coffee cup as the icon. Or perhaps it's a cat app, and a cute little kitty face would be &lt;em&gt;purr-fect&lt;/em&gt; (sorry, had to!). Customizing this icon makes your app stand out and gives users a taste of what they’re about to enjoy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Set Up Your Flutter Project
&lt;/h3&gt;

&lt;p&gt;Alright, first things first – if you already have a Flutter project, you’re golden. If not, let’s get one set up quickly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open a Terminal/Command Prompt&lt;/strong&gt;: You’ll use this to run commands. (Yes, like those "hacker movies" where they type random code – but we’ll keep it simpler.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a New Project&lt;/strong&gt;: Run this command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter create my_cool_app  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace "my_cool_app" with whatever you want to call your project.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open Your Project Folder&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd my_cool_app  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it! You now have a Flutter app to work with. On to the fun part: designing your icon!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Before the Flutter command can work, you will have to install flutter on your working pc, for some reference do check out the flutter documentation for more info @ &lt;a href="https://docs.flutter.dev/get-started/install/windows/mobile" rel="noopener noreferrer"&gt;Flutter.io&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 2: Create Your Custom Icon
&lt;/h3&gt;

&lt;p&gt;You can’t customize your launcher icon without an icon, right? You can create one in any design tool, like Canva, Photoshop, or even Paint if you're feeling nostalgic.&lt;/p&gt;

&lt;h4&gt;
  
  
  Icon Requirements:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Size&lt;/strong&gt;: 512x512 pixels is perfect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format&lt;/strong&gt;: Save it as a PNG.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design Tip&lt;/strong&gt;: Keep it simple but unique! Icons are small, so avoid overcrowing with too many details.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Got your icon ready? Let’s put it in the app!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Install the Flutter Launcher Icons Package
&lt;/h3&gt;

&lt;p&gt;Now we’re getting into the real magic. Flutter has an amazing package called &lt;strong&gt;flutter_launcher_icons&lt;/strong&gt; that does the heavy lifting for you – no need to go into each platform folder and change things manually (we’re not cavemen here).&lt;/p&gt;

&lt;p&gt;Here’s how to install it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open the pubspec.yaml file&lt;/strong&gt;: This file is in your project folder and controls which packages Flutter uses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add the package under dependencies&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dependencies:  
  flutter:  
    sdk: flutter  
  flutter_launcher_icons: ^0.9.2  
dev_dependencies:  
  flutter_launcher_icons: ^0.9.2  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Add configuration options&lt;/strong&gt; to tell Flutter where your icon is and what to use it for:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter_icons:  
  android: true  
  ios: true  
  image_path: "assets/icon/icon.png"  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Explanation time!&lt;/em&gt; Here’s what’s going on:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;android: true&lt;/strong&gt; and &lt;strong&gt;ios: true&lt;/strong&gt; mean you want the icon for both Android and iOS.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;image_path&lt;/strong&gt; is the path to your icon file.

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Save and close pubspec.yaml&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Add Your Icon File to the Project
&lt;/h3&gt;

&lt;p&gt;Now you need to place your shiny new icon in the project folder.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create an Assets Folder&lt;/strong&gt;: Inside your project directory, create a folder named &lt;code&gt;assets&lt;/code&gt; and another folder within it named &lt;code&gt;icon&lt;/code&gt;. Your path should look like this:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my_cool_app/  
└── assets/  
    └── icon/  
        └── icon.png  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Move Your Icon&lt;/strong&gt;: Copy or move your custom icon file into that &lt;code&gt;icon&lt;/code&gt; folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tell Flutter About Your Assets&lt;/strong&gt;: Go back to &lt;code&gt;pubspec.yaml&lt;/code&gt; and add the assets folder under &lt;code&gt;flutter&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter:  
  assets:  
    - assets/icon/icon.png  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5: Run the Package to Apply the Icon
&lt;/h3&gt;

&lt;p&gt;Almost there! Now we just need to run the &lt;strong&gt;flutter_launcher_icons&lt;/strong&gt; package to apply your new icon.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open Your Terminal Again&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run This Command&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter pub run flutter_launcher_icons:main  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see a success message and no errors, congratulations! You’re officially a custom-icon-crafting legend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Test Your Icon
&lt;/h3&gt;

&lt;p&gt;You don’t want to go through all this only to find out your icon looks weird. Let’s test it out!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the App on a Device or Emulator&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter run  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check Your App Launcher&lt;/strong&gt;: If all goes well, your new app icon should be there, loud and proud.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Troubleshooting Common Issues
&lt;/h3&gt;

&lt;p&gt;Alright, things don’t always go perfectly. If you run into problems, here’s a quick list of common fixes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;App Icon Not Showing Up?&lt;/strong&gt; Double-check your &lt;code&gt;pubspec.yaml&lt;/code&gt; formatting. YAML is picky – if it’s even a little off, it won’t work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong Icon Size?&lt;/strong&gt; Make sure your icon is 512x512 pixels. Small icons may look blurry or cropped.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Wrapping Up
&lt;/h3&gt;

&lt;p&gt;And that’s it – you’ve done it! You customized your Flutter app launcher icon without breaking a sweat. Now, whenever you or someone else installs the app, they’ll see that unique icon and know it’s yours.&lt;/p&gt;

&lt;p&gt;Customizing your app launcher icon might seem like a small touch, but it really helps set your app apart and gives it a professional polish. Plus, you did it all on your own! Now you can impress friends, family, and users with a unique app experience right from the start.&lt;/p&gt;

&lt;p&gt;Now go forth and code – with style!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is regular expression and how to use it in javascript</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Fri, 01 Nov 2024 11:48:18 +0000</pubDate>
      <link>https://dev.to/mc-stephen/what-is-regular-expression-and-how-to-use-it-in-javascript-3pla</link>
      <guid>https://dev.to/mc-stephen/what-is-regular-expression-and-how-to-use-it-in-javascript-3pla</guid>
      <description>&lt;p&gt;A regular expression, or regex, is a character sequence that defines patterns for matching text. These patterns are integral in tasks like searching, "find and replace" operations, and input validation. &lt;/p&gt;

&lt;p&gt;Widely used in applications from search engines to text editors and processing tools like &lt;code&gt;sed&lt;/code&gt; and &lt;code&gt;AWK&lt;/code&gt;, regex patterns make it easy to specify complex search criteria with minimal code. Many programming languages provide libraries, often called "regex engines," that allow for regex pattern matching and replacement.&lt;/p&gt;

&lt;p&gt;In JavaScript, regular expressions are implemented as objects and work seamlessly with methods such as &lt;code&gt;exec()&lt;/code&gt; and &lt;code&gt;test()&lt;/code&gt; from the &lt;code&gt;RegExp&lt;/code&gt; class, and string methods like &lt;code&gt;match()&lt;/code&gt;, &lt;code&gt;replace()&lt;/code&gt;, &lt;code&gt;search()&lt;/code&gt;, and &lt;code&gt;split()&lt;/code&gt;. These allow developers to search within strings, validate input, or even split text based on specific patterns. Such tools are essential for handling text data dynamically and efficiently in programming.&lt;/p&gt;

&lt;p&gt;JavaScript’s regex syntax enables developers to create precise pattern-matching rules that can be reused across projects. This guide covers the basics of regex patterns in JavaScript, from syntax to application, providing an overview of each key method and a reference for more in-depth learning.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The original source of this article can be found in &lt;a href="https://axxellanceblog.com/" rel="noopener noreferrer"&gt;Axxellanceblog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  History of Regex
&lt;/h3&gt;

&lt;p&gt;Now let me just ship in a little bit of history about regular expression (what is the use of knowledge if you don't know its origin eh!). Regular expressions were first described in 1951 by Stephen Cole Kleene for theoretical computer science and automata theory, later finding practical use in the 1960s in text editors and compilers through implementations like Ken Thompson's QED editor and Unix's &lt;code&gt;grep&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Through the 1970s and 1980s, regexes became foundational in Unix tools (e.g., &lt;code&gt;sed&lt;/code&gt;, &lt;code&gt;AWK&lt;/code&gt;, &lt;code&gt;vi&lt;/code&gt;) and were standardized in POSIX. The 1980s saw Perl’s advanced regex features, leading to innovations like PCRE (Perl Compatible Regular Expressions) in 1997, now widely used across languages and platforms, with hardware-accelerated regex engines emerging in the 2010s.&lt;/p&gt;

&lt;p&gt;JavaScript incorporated regular expressions as first-class objects in its earliest versions, supporting pattern matching via &lt;code&gt;RegExp&lt;/code&gt; methods like &lt;code&gt;exec()&lt;/code&gt; and &lt;code&gt;test()&lt;/code&gt;, along with string methods like &lt;code&gt;match()&lt;/code&gt; and &lt;code&gt;replace()&lt;/code&gt;. This integration allowed regex to be central in web development for tasks like input validation and string manipulation.&lt;/p&gt;

&lt;p&gt;Today, JavaScript regex is a core tool for both client- and server-side applications, with expanded features introduced in ES6, such as Unicode support and sticky flags, enhancing its flexibility and power in modern programming.  &lt;/p&gt;

&lt;p&gt;Now that we know its history, let's move on to something more knowledgeable by discussing the types of regex expressions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Types of Regex Expressions
&lt;/h3&gt;

&lt;p&gt;Regular expressions can be crafted in two distinct ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Literal Expression&lt;/strong&gt;: This method employs a regex literal, where the pattern is encapsulated within slashes
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const re = /ab+c/  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This technique compiles the expression at the time the script loads, optimizing performance when the pattern is static.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Constructor&lt;/strong&gt;: Alternatively, the &lt;code&gt;RegExp&lt;/code&gt; constructor can be utilized
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const re = new RegExp("ab+c");  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This method allows for runtime compilation, making it ideal for scenarios where the pattern is variable or derived from external inputs, such as user-generated content.&lt;/p&gt;

&lt;p&gt;Now that we know the types of expressions we have on regex, let's look at some of its patterns, and special characters, and use them in Javascript as reserved methods.&lt;/p&gt;

&lt;h3&gt;
  
  
  Regex Patterns
&lt;/h3&gt;

&lt;p&gt;A regular expression pattern consists of basic characters, like &lt;code&gt;/abc/&lt;/code&gt;, or a mix of basic and special characters, such as &lt;code&gt;/ab*c/&lt;/code&gt; or &lt;code&gt;/Chapter (\d+)\.\d*/&lt;/code&gt;. In the last example, parentheses serve as a capturing mechanism. The match obtained from this section of the pattern is stored for future reference, as detailed in the section on using groups.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Basic Patterns&lt;/th&gt;
&lt;th&gt;Special Patterns&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic patterns are formed using characters that you aim to match exactly. For instance, the pattern /abc/ will match character sequences in a string only when the precise order "ABC" appears together. This match would be successful in the strings "Hi, do you know your ABCs?" and "The latest airplane designs evolved from slab-craft," where it identifies the substring "abc."However, there is no match in the string "Grab crab," since it contains "ab c" but not the exact substring "abc."&lt;/td&gt;
&lt;td&gt;When searching for a match that goes beyond a direct comparison—such as identifying one or more instances of "b" or locating whitespace—you can incorporate special characters into the pattern. For example, to match a single "a" followed by zero or more "b"s and then "c," you would use the pattern /ab*c/. Here, the asterisk (*) after "b" signifies "zero or more occurrences of the preceding element." In the string "cbbabbbbcdebc," this pattern successfully matches the substring "abbbbc."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Special characters in regular expressions
&lt;/h3&gt;

&lt;p&gt;If you're interested in viewing all the special characters that can be utilized in regular expressions, refer to the table below:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Characters/constructs&lt;/th&gt;
&lt;th&gt;Corresponding article&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[xyz], [^xyz], ., \d, \D, \w, \W, \s, \S, \t, \r, \n, \v, \f, [\b], \0, \cX, \xhh, \uhhhh, \u{hhhh}, x\&lt;/td&gt;
&lt;td&gt;y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^, $, \b, \B, x(?=y), x(?!y), (?&amp;lt;=y)x, (?&amp;lt;!y)x&lt;/td&gt;
&lt;td&gt;Assertions (Boundary-type assertions Included)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(x), (?x), (?:x), \n, \k&lt;/td&gt;
&lt;td&gt;Groups and backreferences&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;x*, x+, x?, x{n}, x{n,}, x{n,m}&lt;/td&gt;
&lt;td&gt;Quantifiers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Using regular expressions in JavaScript
&lt;/h3&gt;

&lt;p&gt;Regular expressions are utilized in conjunction with the RegExp methods &lt;code&gt;test()&lt;/code&gt; and &lt;code&gt;exec()&lt;/code&gt;, as well as various String methods including &lt;code&gt;match()&lt;/code&gt;, &lt;code&gt;matchAll()&lt;/code&gt;, &lt;code&gt;replace()&lt;/code&gt;, &lt;code&gt;replaceAll()&lt;/code&gt;, &lt;code&gt;search()&lt;/code&gt;, and &lt;code&gt;split()&lt;/code&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;exec()&lt;/td&gt;
&lt;td&gt;Executes a search for a match in a string. It returns an array of information or null on a mismatch.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;test()&lt;/td&gt;
&lt;td&gt;Checks for a match within a string and returns either true or false.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;match()&lt;/td&gt;
&lt;td&gt;Returns an array of all matches, including capturing groups, or null if no matches are found.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;matchAll()&lt;/td&gt;
&lt;td&gt;Returns an iterator that provides all matches, including capturing groups.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;search()&lt;/td&gt;
&lt;td&gt;Tests for a match within a string and returns the index of the match, or -1 if no match is found.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;replace()&lt;/td&gt;
&lt;td&gt;Performs a search for a match in a string and replaces the matched substring with a specified replacement substring.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;replaceAll()&lt;/td&gt;
&lt;td&gt;Conducts a search for all matches in a string and replaces each matched substring with a specified replacement substring.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;split()&lt;/td&gt;
&lt;td&gt;Uses a regular expression or a fixed string to split a string into an array of substrings.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To determine whether a pattern exists within a string, use the &lt;code&gt;test()&lt;/code&gt; or &lt;code&gt;search()&lt;/code&gt; methods. For more detailed information—albeit with slower execution—you can utilize the &lt;code&gt;exec()&lt;/code&gt; or &lt;code&gt;match()&lt;/code&gt; methods. When using &lt;code&gt;exec()&lt;/code&gt; or &lt;code&gt;match()&lt;/code&gt;, if a match is found, these methods return an array and update properties of both the associated regular expression object and the built-in &lt;code&gt;RegExp&lt;/code&gt; object. If the match fails, the &lt;code&gt;exec()&lt;/code&gt; method returns null, which is coerced to false.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced searching with flags
&lt;/h3&gt;

&lt;p&gt;Regular expressions come with optional flags that enable global searching and case-insensitive matching features. These flags can be combined or used individually in any order and are incorporated as part of the regular expression.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;d&lt;/td&gt;
&lt;td&gt;Generate indices for substring matches.&lt;/td&gt;
&lt;td&gt;new RegExp(pattern, 'd'); // not standard at the time of this writing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;g&lt;/td&gt;
&lt;td&gt;Global search.&lt;/td&gt;
&lt;td&gt;const matchesGlobal = [...str.matchAll(/pattern/g)];&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;Case-insensitive search.&lt;/td&gt;
&lt;td&gt;const matchesCaseInsensitive = str.match(/pattern/i);&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;m&lt;/td&gt;
&lt;td&gt;Multi-line mode. It changes the behavior of ^ and $ to match the start and end of each line.&lt;/td&gt;
&lt;td&gt;const matchesMultiLine = str.match(/^pattern$/m);&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;s&lt;/td&gt;
&lt;td&gt;Dot All mode. This allows the dot . to match newline characters as well.&lt;/td&gt;
&lt;td&gt;const matchesDotAll = str.match(/pattern.s/);&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;u&lt;/td&gt;
&lt;td&gt;Unicode. Treats the pattern and input as a sequence of Unicode code points.&lt;/td&gt;
&lt;td&gt;const matchesUnicode = str.match(/\u{1F600}/u); // Matches the grinning face emoji&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;v&lt;/td&gt;
&lt;td&gt;An upgrade to the u mode with more Unicode features.&lt;/td&gt;
&lt;td&gt;new RegExp(pattern, 'v'); // not standard at the time of this writing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;y&lt;/td&gt;
&lt;td&gt;Perform a "sticky" search that matches starting at the current position in the target string.&lt;/td&gt;
&lt;td&gt;const stickyMatch = /pattern/y;const result = stickyMatch.exec(str); // Executes from the current position&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep in mind that flags are essential components of a regular expression and cannot be modified after the expression has been created.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;For instance, &lt;code&gt;re = /\w+\s/g&lt;/code&gt; defines a regular expression that searches for one or more word characters followed by a space, and it searches for this pattern throughout the entire string.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const re = /\w+\s/g; // or new RegExp("\\w+\\s", "g");
const str = "fee fi fo fum"; 
const myArray = str.match(re); 
console.log(myArray); // ["fee ", "fi ", "fo "]

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;m&lt;/code&gt; flag indicates that a multiline input string should be interpreted as consisting of multiple lines. When the &lt;code&gt;m&lt;/code&gt; flag is applied, the &lt;code&gt;^&lt;/code&gt; and &lt;code&gt;$&lt;/code&gt; anchors match at the beginning or end of each line within the input string, rather than just at the start or end of the entire string.&lt;/p&gt;

&lt;p&gt;Additionally, the &lt;code&gt;i&lt;/code&gt;, &lt;code&gt;m&lt;/code&gt;, and &lt;code&gt;s&lt;/code&gt; flags can be activated or deactivated for specific sections of a regex using the modifier syntax.&lt;/p&gt;

&lt;h3&gt;
  
  
  Addition
&lt;/h3&gt;

&lt;p&gt;As you explore regex, you'll find that they can be intimidating at first, but with practice, they become invaluable in your coding toolkit. For hands-on practice, visit &lt;a href="https://regex101.com" rel="noopener noreferrer"&gt;regex101.com&lt;/a&gt; to test your patterns and see immediate results.&lt;/p&gt;

&lt;p&gt;If you need an in-depth explanation or more, do check out Wikipedia as they have more in-depth explanations on this. Remember, mastering regex opens up a world of possibilities in text processing, so don't hesitate to experiment and enhance your skills!&lt;/p&gt;

&lt;p&gt;Thank you for reading!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How To Format Or Factory Reset A Mac OS Computer</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Thu, 18 May 2023 14:39:00 +0000</pubDate>
      <link>https://dev.to/mc-stephen/how-to-format-or-factory-reset-a-mac-os-computer-bp</link>
      <guid>https://dev.to/mc-stephen/how-to-format-or-factory-reset-a-mac-os-computer-bp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In today's article, I am going to show you how you can easily format or factory reset a mac book pro. This article is made possible thanks to a certain blog website I am going to mention soon, so yes I am giving the credit to them as I did try their approach and it works for me. I will try my best to explain this as easily as I can. If at the end of this article you find it worth reading please don't forget to share and comment.&lt;/p&gt;

&lt;p&gt;As for the blog site that has made this particular article possible, here is their link =&amp;gt; &lt;a href="https://www.hellotech.com/"&gt;hellotech.com&lt;/a&gt; as for the particular post on their website that says more about this, simply click &lt;a href="https://www.hellotech.com/guide/for/how-to-factory-reset-mac-before-selling"&gt;here&lt;/a&gt; to see the blog post.&lt;/p&gt;

&lt;p&gt;The original source of this article can be found &lt;a href="https://axxellanceblog.com/posts/how-to-format-or-factory-reset-a-mac-os-computer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reasons You Might Want To Reset a Mac OS
&lt;/h3&gt;

&lt;p&gt;There are many reasons you might want to reset a mac pc, few of them are "you probably trying to sell it, you just got it new and some unnecessary stuff is installed on it, or you just feel like doing that for experience purposes (this last one is me)". If that is the case for you then don't be afraid as this article will show you a simple step-by-step guide to archive this.&lt;/p&gt;

&lt;p&gt;You should know that there are some necessary things you need to do before formatting your mac os pc, some of them are "back up the data you probably need, and deauthorize some applications from accepting your mac os", especially when you want to sell it. I won't go into much detail on this because I do believe you should know what is most important to you on your pc. Though if you need more details on this sub-topic, then you should probably check out the other website. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This website I mentioned which I said I got the experence has nothing to do with me or this &lt;strong&gt;&lt;a href="https://axxellanceblog.com"&gt;axxellanceblog.com&lt;/a&gt;&lt;/strong&gt;, I only include this website on my blog site (backlinks) as a token of appreciation for there awesome article. Note that images and some words was gotten from them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 1: Restarting your Mac OS
&lt;/h3&gt;

&lt;p&gt;To restart your mac os, simply click on the &lt;strong&gt;apple icon/logo&lt;/strong&gt; at the top left corner of your laptop screen and select the &lt;strong&gt;restart&lt;/strong&gt; button from the dropdown. before you do any of this it's best you connect your mac OS to a reliable source as this factory reset can consume lots of time and data depending on your internet and pc speed. &lt;/p&gt;

&lt;p&gt;You should also unplug all your devices except your mouse and keyboard to avoid accidentally erasing an external hard drive. here is a preview of what I am talking about &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1NOzeup9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/db2ab2cd-5bb8-4e81-85f7-4d1250f08e4c%3Fwidth%3D990%26height%3D760" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1NOzeup9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/db2ab2cd-5bb8-4e81-85f7-4d1250f08e4c%3Fwidth%3D990%26height%3D760" alt="How to Factory Reset Mac 1.jpg" width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: If your computer is frozen, press Control + Command + Eject (or the power button) to force restart your computer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now that your mac os has begun the restart process, you need to press and hold the &lt;strong&gt;command + R&lt;/strong&gt; key on your keyboard, You can release the keys when you see the Apple logo on your screen.&lt;/p&gt;

&lt;p&gt;When the progress bar under the Apple logo is completed, you will enter Recovery Mode. From here, you will erase your hard drive and reinstall the macOS that was installed on your computer when you got it. here is a preview below of the key you need to press and hold on your keyboard&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2Mo8w3DG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/6a716aa0-8d29-4a33-a6b8-06f8166e6cf6%3Fwidth%3D576%26height%3D344" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2Mo8w3DG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/6a716aa0-8d29-4a33-a6b8-06f8166e6cf6%3Fwidth%3D576%26height%3D344" alt="How to Factory Reset Mac 2.jpg" width="576" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note that it is best to press and hold those key as soon as you click on the restart button though you can wait untill the system goes blank before you press and hold those keys.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 2: Formatting Your HDD/SSD
&lt;/h3&gt;

&lt;p&gt;From the dialog or application that will be shown, you will probably see 4 options to click from. For now, just select the &lt;strong&gt;disk utility&lt;/strong&gt; option and then click on the &lt;strong&gt;continue&lt;/strong&gt; button. see below for a preview&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qkOw6fAi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/166d4514-c32d-4245-b11e-32019681a8fa%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qkOw6fAi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/166d4514-c32d-4245-b11e-32019681a8fa%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 4.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now from the disk utility application/window, click on the &lt;strong&gt;view&lt;/strong&gt; dropdown located at the top left corner of the disk utility application then select &lt;strong&gt;show all devices&lt;/strong&gt; (make sure it has a checkmark beside it). &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PQVSWG2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/3b8aa6ef-9755-4e50-89bb-72a599c5a217%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PQVSWG2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/3b8aa6ef-9755-4e50-89bb-72a599c5a217%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 6.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qYUn2f47--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/5a513b49-3505-4f5b-a1c5-0600ecd93991%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qYUn2f47--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/5a513b49-3505-4f5b-a1c5-0600ecd93991%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 7.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you will need to select the drive you want to erase, and you will see a list of drives at the left side of the disk utility application/window, In most cases, you want to delete the whole disk, which is the highest option on the Internal list. This will ensure that you delete all your old data so you can install the Mac operating system (macOS) on a clean drive. &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fnF8C1lZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b125eec6-39f0-4bf4-a582-850e578abef9%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fnF8C1lZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b125eec6-39f0-4bf4-a582-850e578abef9%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 8.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;after selecting the parent disk, you then need to click on the &lt;strong&gt;erase&lt;/strong&gt; button located at the top of the disk utility window. &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Your Mac has a copy of the macOS that came with it stored on a partition of your main hard drive. So, even if you erase your hard drive, you will be able to reinstall macOS later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J_MttRaH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/607fa41f-91e8-4dc7-bf4c-9b6be368e89c%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J_MttRaH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/607fa41f-91e8-4dc7-bf4c-9b6be368e89c%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 9.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After clicking on the &lt;strong&gt;erase&lt;/strong&gt; button, you will see a pop-up dialog asking for some info from you, so on the &lt;strong&gt;name&lt;/strong&gt; input just enter the name you will like to give your Mac pc, if you know some advanced stuff you can probably specify the &lt;strong&gt;format and scheme&lt;/strong&gt; options you need if not just leave the default option. &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BBMa4HDA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/93d272ea-ee20-4895-a0ec-514077aae663%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BBMa4HDA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/93d272ea-ee20-4895-a0ec-514077aae663%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 10.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;here is a quick detail for those of you that might want to know what each of those options on the dialog means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name:&lt;/strong&gt; You can choose any name you want, but it is recommended that you don’t use any personal information because there’s a chance that other people will be able to see your driver’s name when you are connected to the same network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Format:&lt;/strong&gt; You can choose either APFS (Apple File System) or macOS Extended (Journaled). The Disk Utility will show the compatible format by default. However, if you want to double-check the current format of the volume, click on the lowest option on the Internal tree (usually called Mac HD). On the right, you should see “Type.” If the built-in disk came to APFS-formatted, you should not reformat it as Journaled. Most older computers will be Journaled, while most modern laptops that come with solid-state drives (SSDs) are APFS-formatted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scheme:&lt;/strong&gt; If prompted, choose GUID Partition Map.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: This is the last step before all your data will be deleted. If you need to back up any data, click the Apple logo in the top-right corner of your screen and select Restart to return to your desktop.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After inputting or selecting your options you can then click on the &lt;strong&gt;erase&lt;/strong&gt; button located at the bottom right corner of the pop-up dialog/window. &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you see &lt;em&gt;Erase Volume Group&lt;/em&gt;, click that instead. Take note that this is different from the &lt;em&gt;Delete Volume Group&lt;/em&gt; option, which you should not click.  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2kCKw0B2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/bc5a91bd-9e13-41c1-954c-ffb369728212%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2kCKw0B2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/bc5a91bd-9e13-41c1-954c-ffb369728212%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 11.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for the disk to be erased and click Done. This should only take a few minutes at most. after successfully formatting your hard drive or solid-state drive you should quit the disk utility window, you can do so by clicking on the disk utility button located at the top left corner of your Mac OS pc, near the apple icon/logo itself, simply click on it and then click on the &lt;strong&gt;quit disk utility&lt;/strong&gt; button from the dropdown dialog. &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2OTpjHGA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/ef0062cf-003e-4207-b345-f22383adfb13%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2OTpjHGA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/ef0062cf-003e-4207-b345-f22383adfb13%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 14.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step: 3 Reinstalling Mac OS
&lt;/h3&gt;

&lt;p&gt;After quitting the disk utility window you will find yourself back to the first pop-up window that has 4 buttons, which we first click on the disk utility. Now instead of clicking on the &lt;strong&gt;disk utility&lt;/strong&gt; again just simply click on the second button that says &lt;strong&gt;Reinstall macOS &lt;/strong&gt;, and then click on continue. &lt;strong&gt;preview available below&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XZRHNqwe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/e3723e06-abca-4381-96ef-a0c8bbbd3972%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XZRHNqwe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/e3723e06-abca-4381-96ef-a0c8bbbd3972%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 15.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: that the word &lt;strong&gt;&lt;/strong&gt; should be your current mac OS PC brand name, in my case it was &lt;strong&gt;Big Sur&lt;/strong&gt;, so what i click on was &lt;strong&gt;Reinstall macOS Big Sur&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you stop the process now, your data will be erased, but the next person to handle the computer will have a hard time starting up. So, if you want to make it easy for whoever you give or sell your Mac computer to, you should reinstall macOS on your computer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;after clicking on continue you will probably be asked to click on another &lt;strong&gt;continue&lt;/strong&gt; button again, which should then take you to the software licenses, you will have to click on the &lt;strong&gt;Agree&lt;/strong&gt; button which will then Triga a popup window with another &lt;strong&gt;Agree/Disagree&lt;/strong&gt; button, you will have to click on the &lt;strong&gt;Agree&lt;/strong&gt; button on the pop-up window. &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--squtZ56z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/e4779889-e9b0-4c78-8379-3a4e7413ac6e%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--squtZ56z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/e4779889-e9b0-4c78-8379-3a4e7413ac6e%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 18.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now select your boot disk from the next window (Your boot disk is your main drive, so make sure you don’t select an external hard drive), and click on continue.  &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3G9iCisf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/2472df7a-8c64-45e5-8555-b759abd46774%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3G9iCisf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/2472df7a-8c64-45e5-8555-b759abd46774%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 20.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now see back and wait for the installation process to complete, also note that this installation might take several minutes to complete. After the installation and been completed your Mac PC will restart and another installation process will begin with a countdown timer. This installation will also take several minutes. Here is a preview of both installation process&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0sGQ_LUo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b2473177-9b4e-49d6-ba1d-3190a908b799%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0sGQ_LUo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b2473177-9b4e-49d6-ba1d-3190a908b799%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 21.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6JhvLROE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b4816500-3f21-4a01-86c6-cba05189e049%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6JhvLROE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b4816500-3f21-4a01-86c6-cba05189e049%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 22.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the installation is complete you can choose to power off the Mac book pro, if you want the next user to complete the setup process on their own, making it look like a brand-new Mac book. You will know the installation is complete when you see the screen that says, “Select Your Country or Region.” &lt;em&gt;preview is available below&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vnVIGp4_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/a53238e5-f212-4056-8f1d-72f354b45dfa%3Fwidth%3D1024%26height%3D768" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vnVIGp4_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/a53238e5-f212-4056-8f1d-72f354b45dfa%3Fwidth%3D1024%26height%3D768" alt="How to Factory Reset Mac 23.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can power off the system by pressing the &lt;strong&gt;Command + Q&lt;/strong&gt; keys on your keyboard at the same time and finally clicking on the button that says &lt;strong&gt;shut down&lt;/strong&gt;. &lt;em&gt;preview available below&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kmUGb93G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/d7832012-845a-49c3-9fa7-0e4d1ad2bddd%3Fwidth%3D666%26height%3D417" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kmUGb93G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/d7832012-845a-49c3-9fa7-0e4d1ad2bddd%3Fwidth%3D666%26height%3D417" alt="How to Factory Reset Mac 25 1.jpg" width="666" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you are done, you can unplug the computer or close the laptop. Now, when you give your Mac to someone else, they will be able to start the setup process and enter their own settings and information.&lt;/p&gt;

&lt;p&gt;If you plan on selling your Mac computer, check out how much you could get from &lt;a href="https://www.apple.com/shop/trade-in"&gt;Apple’s Trade-In program&lt;/a&gt; here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;I do believe that in one way or another this article might have helped you achieve what you came here for, if so then do please comment and share this article with your friends and family. Thanks and God bless you 💖.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow ME
&lt;/h3&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc_stephen123"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Best VS Code Extension For Web Developer (Part 1)</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Wed, 17 May 2023 14:33:00 +0000</pubDate>
      <link>https://dev.to/mc-stephen/best-vs-code-extension-for-web-developer-part-1-1pma</link>
      <guid>https://dev.to/mc-stephen/best-vs-code-extension-for-web-developer-part-1-1pma</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this article, I will show some of the best (must-have) vs-code extensions to have as a developer, these extensions can help simplify your coding career. The extensions listed here are for front-end developers though if you are a back-end or full-stack developer this extension can also serve you well. Each extension listed here is sorted randomly and not from good to least good.&lt;/p&gt;

&lt;p&gt;The original source of this article can be found &lt;a href="https://axxellanceblog.com/posts/best-vscode-extension-for-developer-part1"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are Extensions
&lt;/h3&gt;

&lt;p&gt;Extensions are code packages that run inside Visual Studio Code and provide new or improved features. Extensions may be controls, samples, templates, tools, or other components that add functionality to Visual Studio Code, for example, Live Share or Visual Studio IntelliCode.&lt;/p&gt;

&lt;p&gt;In this part of this section, I will list only 10 extensions, maybe if I write another article (part 2) in the future then I will try and list more.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Auto Rename Tag &lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The first one on the list is the auto rename tag, this extension will make coding in HTML/XML more simplify just as the name says, it helps you rename the closing of any HTML/XML tags. here is the preview below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j1EuATId--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/4e097a8a-d205-450a-94c5-431d28ae63d7%3Fwidth%3D1366%26height%3D439" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j1EuATId--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/4e097a8a-d205-450a-94c5-431d28ae63d7%3Fwidth%3D1366%26height%3D439" alt="vs-code-auto-rename-tag" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. ESLint &lt;a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This extension Integrates ESLint JavaScript into VS Code, If you are new to ESLint check the &lt;a href="http://eslint.org/"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KhFMy6XT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/e1c5b473-cf92-48aa-bae1-300b82a2df81%3Fwidth%3D1366%26height%3D430" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KhFMy6XT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/e1c5b473-cf92-48aa-bae1-300b82a2df81%3Fwidth%3D1366%26height%3D430" alt="Eslint-vscode-extension" width="800" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. GitHub Markdown Preview &lt;a href="https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;These extension changes the VS Code's built-in markdown preview to match GitHub markdown rendering in style and content.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9HUVGZU---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/be79e1ce-82aa-410f-b946-0ef45e77a3d1%3Fwidth%3D1365%26height%3D473" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9HUVGZU---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/be79e1ce-82aa-410f-b946-0ef45e77a3d1%3Fwidth%3D1365%26height%3D473" alt="github markdown preview vs-code extension" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Dracula Official &lt;a href="https://marketplace.visualstudio.com/items?itemName=dracula-theme.theme-dracula"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Dracula official is a dark theme extension for Visual Studio Code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CBLfZP5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/54375c7e-a4b8-4767-ac8b-75b0e96e23a9%3Fwidth%3D1365%26height%3D495" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CBLfZP5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/54375c7e-a4b8-4767-ac8b-75b0e96e23a9%3Fwidth%3D1365%26height%3D495" alt="dracula official extension for vs-code" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. JavaScript (ES6) code snippets &lt;a href="https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This extension contains code snippets for JavaScript in ES6 syntax for &lt;a href="https://code.visualstudio.com/"&gt;Vs Code&lt;/a&gt; editor (supports both JavaScript and TypeScript).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ETezR0Dy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b96de6ea-0ede-4b82-8ebf-88d126b1a2f5%3Fwidth%3D1366%26height%3D481" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ETezR0Dy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b96de6ea-0ede-4b82-8ebf-88d126b1a2f5%3Fwidth%3D1366%26height%3D481" alt="javascript (ES6) code snippets vs-code extension" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Live Server &lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;It enables you to right-click an HTML document and runs a server for you and opens a browser window with the file in it. Any changes you make to the file cause the browser to reload and you can immediately see them - hence "live server".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kiRwuSpk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/7b773f83-cc98-47fd-b4f9-dccb166c3e74%3Fwidth%3D1366%26height%3D501" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kiRwuSpk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/7b773f83-cc98-47fd-b4f9-dccb166c3e74%3Fwidth%3D1366%26height%3D501" alt="live server vs-code extension" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Material Icon Theme &lt;a href="https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Material Design Icons for Visual Studio Code&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IFNZh05K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/7d2414cb-1cc9-41f2-a81b-e57e4d5f4d7d%3Fwidth%3D1366%26height%3D515" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IFNZh05K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/7d2414cb-1cc9-41f2-a81b-e57e4d5f4d7d%3Fwidth%3D1366%26height%3D515" alt="material icon theme vs-code extension" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Prettier - Code formatter &lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://prettier.io/"&gt;Prettier&lt;/a&gt; is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--18AzAL0A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/387b3dc7-d358-4e2b-966f-a2eb1f19b868%3Fwidth%3D1366%26height%3D499" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--18AzAL0A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/387b3dc7-d358-4e2b-966f-a2eb1f19b868%3Fwidth%3D1366%26height%3D499" alt="prefttier - code formatter vs-code extension" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Thunder Client &lt;a href="https://marketplace.visualstudio.com/items?itemName=rangav.vscode-thunder-client"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Thunder Client is a lightweight Rest API Client Extension for Visual Studio Code, hand-crafted by &lt;a href="https://twitter.com/ranga_vadhineni"&gt;Ranga Vadhineni&lt;/a&gt; with a simple and clean design.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--clYvxOtG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/fe9eb361-d901-4d17-8784-27e967d8e15a%3Fwidth%3D1366%26height%3D519" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--clYvxOtG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/fe9eb361-d901-4d17-8784-27e967d8e15a%3Fwidth%3D1366%26height%3D519" alt="thunder client vs-code extension" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  10. XML Format &lt;a href="https://marketplace.visualstudio.com/items?itemName=mikeburgh.xml-format"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Format XML documents, without changing the content within elements. This extension uses a modified version of &lt;a href="https://github.com/vkiryukhin/vkBeautify"&gt;vkBeautify&lt;/a&gt; for XML formatting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eZVed6vI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/85e699da-3932-4c2b-a7e2-3e4506d46c32%3Fwidth%3D1366%26height%3D495" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eZVed6vI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/85e699da-3932-4c2b-a7e2-3e4506d46c32%3Fwidth%3D1366%26height%3D495" alt="xml format vs-code extension" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;We have come to the end of this part of the article, I do believe that at least one of these extensions will benefit you in one way or the other. If you find this article worth sharing then do share it with your friends and colleague. Thanks for reading and have a nice day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow ME
&lt;/h3&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc_stephen123"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Different Between string[] and List&lt;string&gt; in C#</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Tue, 16 May 2023 14:29:35 +0000</pubDate>
      <link>https://dev.to/mc-stephen/different-between-string-and-list-in-c-57lc</link>
      <guid>https://dev.to/mc-stephen/different-between-string-and-list-in-c-57lc</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In C#, there are two main ways to store a collection of strings: &lt;code&gt;string[]&lt;/code&gt; and &lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt;. Both of these data structures have their own advantages and disadvantages, so it is important to understand the difference between them before choosing which one to use.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Original source can be found @ &lt;a href="https://axxellanceblog.com/posts/how-to-format-date-and-time-in-flutter"&gt;Different Between string[] and List in C#&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The main difference between &lt;code&gt;string[]&lt;/code&gt; and &lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt; in C# is that &lt;code&gt;string[]&lt;/code&gt; is a fixed-size array, while &lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt; is a dynamic list. This means that you can only add or remove elements from a &lt;code&gt;string[]&lt;/code&gt; at compile time, while you can add or remove elements from a &lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt; at runtime.&lt;/p&gt;

&lt;p&gt;Here is a table that summarizes the key differences between &lt;code&gt;string[]&lt;/code&gt; and &lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;string[]&lt;/th&gt;
&lt;th&gt;List&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;Fixed&lt;/td&gt;
&lt;td&gt;Dynamic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elements&lt;/td&gt;
&lt;td&gt;Can only be added or removed at compile time&lt;/td&gt;
&lt;td&gt;Can be added or removed at runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Faster&lt;/td&gt;
&lt;td&gt;Slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory usage&lt;/td&gt;
&lt;td&gt;Less memory usage&lt;/td&gt;
&lt;td&gt;More memory usage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In general, you should use &lt;code&gt;string[]&lt;/code&gt; when you know the exact size of the array and you don't need to add or remove elements at runtime. You should use &lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt; when you need to add or remove elements at runtime or when you don't know the exact size of the list.&lt;/p&gt;

&lt;p&gt;Here are some examples of when you might use &lt;code&gt;string[]&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Storing a fixed number of strings, such as the names of months or days of the week&lt;/li&gt;
&lt;li&gt;  Storing the results of a calculation, such as the Fibonacci sequence&lt;/li&gt;
&lt;li&gt;  Storing the input or output of a function&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are some examples of when you might use &lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Storing a list of user-entered data&lt;/li&gt;
&lt;li&gt;  Storing a list of files in a directory&lt;/li&gt;
&lt;li&gt;  Storing a list of objects in a game&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The best way to decide which data structure to use is to consider the specific needs of your application. If you need a data structure that is fast and has a fixed size, then you should use &lt;code&gt;string[]&lt;/code&gt;. If you need a data structure that is flexible and can be resized at runtime, then you should use &lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Follow ME
&lt;/h4&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc_stephen123"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>csharp</category>
    </item>
    <item>
      <title>How to Format Date and Time in Flutter</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Wed, 19 Apr 2023 10:45:02 +0000</pubDate>
      <link>https://dev.to/mc-stephen/how-to-format-date-and-time-in-flutter-580l</link>
      <guid>https://dev.to/mc-stephen/how-to-format-date-and-time-in-flutter-580l</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In a Flutter app, it's often necessary to display dates and times to users. However, formatting date and time can be a bit tricky, especially if you're new to the Flutter framework. Fortunately, there are several built-in tools and functions that make it easy to format dates and times in Flutter apps.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Original source of this article can be found in &lt;a href="https://axxellanceblog.com/posts/how-to-format-date-and-time-in-flutter" rel="noopener noreferrer"&gt;Axxellanceblog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this article, we'll explore how to format dates and times in Flutter, step by step. We'll cover the basics of displaying dates and times in your app, including how to use the DateFormat class to format dates and times according to different patterns. We'll also show you how to customize the formatting to meet your specific needs.&lt;/p&gt;

&lt;p&gt;Whether you're building a simple Flutter app or a more complex one, knowing how to format date and time correctly can make a big difference in your app's user experience. So let's get started and learn how to format dates and times in Flutter!&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Install / Add the &lt;a href="https://pub.dev/packages/intl" rel="noopener noreferrer"&gt;intl&lt;/a&gt; Flutter package to your project
&lt;/h4&gt;

&lt;p&gt;Before you can format the Flutter DateTime or dates and times value you will first need to install the intl Flutter package in your project using either&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With Dart:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dart pub add intl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;With Flutter:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter pub add intl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will add a line like this to your package's &lt;em&gt;pubspec.yaml&lt;/em&gt; (and run an implicit &lt;code&gt;dart pub get&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dependencies:
  intl:^0.18.1 // This was the current version at the time of this writing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 2: Importing DateFormat Class from the intl package
&lt;/h4&gt;

&lt;p&gt;The next step is to import the &lt;strong&gt;DateFormat&lt;/strong&gt; class from the &lt;strong&gt;intl&lt;/strong&gt; package. The &lt;strong&gt;DateFormat&lt;/strong&gt; class is a built-in class in the Flutter framework that allows us to format dates and times according to different patterns.&lt;/p&gt;

&lt;p&gt;To import the &lt;strong&gt;DateFormat&lt;/strong&gt; class, add the following code to the top of your file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:intl/intl.dart';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 3: Formatting Date and Time
&lt;/h4&gt;

&lt;p&gt;Once you have imported the DateFormat class, you can use it to format dates and times in your app. To format a date, you can use the &lt;strong&gt;format()&lt;/strong&gt; method of the DateFormat class.&lt;/p&gt;

&lt;p&gt;Here's an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DateTime now = DateTime.now();
String formattedDate = DateFormat('dd/MM/yyyy - HH:mm:ss').format(now);
print(formattedDate); // 19/04/2023 - 11:15:45

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we get the current date and time using the &lt;strong&gt;DateTime.now()&lt;/strong&gt; method, and then we format the date using the DateFormat class. The pattern &lt;strong&gt;'dd/MM/yyyy'&lt;/strong&gt; is used to format the date as &lt;strong&gt;day/month/year&lt;/strong&gt;, while the pattern &lt;strong&gt;'HH:mm:ss'&lt;/strong&gt; is used to format the time as &lt;strong&gt;hour:minute:second&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4: Customizing Date and Time Formatting
&lt;/h4&gt;

&lt;p&gt;The DateFormat class provides a variety of patterns that can be used to format dates and times. You can customize the patterns to meet your specific needs. Here are some common patterns that can be used:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdirectus.axxellanceblog.com%2Fassets%2Fd1d05f49-a80d-4ec6-993a-0d32192b08c9%3Fwidth%3D1024%26height%3D706" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdirectus.axxellanceblog.com%2Fassets%2Fd1d05f49-a80d-4ec6-993a-0d32192b08c9%3Fwidth%3D1024%26height%3D706" alt="Watermark DateTime Custom2x.png"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
(Image gotten from: &lt;a href="https://www.flutterbeads.com/format-datetime-in-flutter" rel="noopener noreferrer"&gt;https://www.flutterbeads.com/format-datetime-in-flutter&lt;/a&gt;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;d&lt;/code&gt;: Day of the month (1-31)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;E&lt;/code&gt;: Day of the week (e.g. Mon, Tue)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;M&lt;/code&gt;: Month (1-12)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;y&lt;/code&gt;: Year (e.g. 2023)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;H&lt;/code&gt;: Hour in 24-hour format (0-23)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;h&lt;/code&gt;: Hour in 12-hour format (1-12)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;m&lt;/code&gt;: Minute (0-59)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;s&lt;/code&gt;: Second (0-59)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;a&lt;/code&gt;: AM/PM marker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, to format the date as &lt;strong&gt;weekday&lt;/strong&gt;, &lt;strong&gt;month day&lt;/strong&gt;, &lt;strong&gt;year&lt;/strong&gt;, you can use the pattern &lt;strong&gt;'EEEE, MMMM d, y'&lt;/strong&gt;. Here's an example:&lt;/p&gt;

&lt;p&gt;DateTime now = DateTime.now(); &lt;br&gt;
String formattedDate = DateFormat('EEEE, MMMM d, y').format(now);&lt;br&gt;
print(formattedDate); // Wednesday, April 19, 2023&lt;/p&gt;
&lt;h3&gt;
  
  
  FAQs
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How to get the current time in Flutter?&lt;/strong&gt;
The &lt;strong&gt;DateTime.now()&lt;/strong&gt; method in Flutter can be used to retrieve the current DateTime data, the current date and time are returned by this method as a DateTime object. The &lt;strong&gt;TimeOfDay.now()&lt;/strong&gt; method, which produces a TimeOfDay object containing the current time, can be used to obtain only the current time. Here's an illustration:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DateTime now = DateTime.now();  
TimeOfDay currentTime = TimeOfDay.now();  
print('Current date and time: $now'); // Current date and time: 2023-04-04 15:23:45.678901  
print('Current time: $currentTime'); // Current time: 3:23 PM  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How to get the only date from DateTime in Flutter?&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In Flutter, you may extract just the date from a DateTime object by setting the DateTime object to the local time zone using the &lt;strong&gt;toLocal()&lt;/strong&gt; method and then using the &lt;strong&gt;toString()&lt;/strong&gt; method with a format string that just contains the date fields. Here's an example:&lt;br&gt;&lt;br&gt;
&lt;code&gt;DateTime now = DateTime.now();  &lt;br&gt;
String formattedDate = DateFormat('yyyy-MM-dd').format(now.toLocal());&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How to get time in Flutter?&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;strong&gt;DateTime.now()&lt;/strong&gt; method in Flutter can be used to retrieve the current time. A DateTime object containing the current date and time will be returned. Using the &lt;strong&gt;hour&lt;/strong&gt;, &lt;strong&gt;minute&lt;/strong&gt;, and &lt;strong&gt;second&lt;/strong&gt; properties of this object, you can get the current time. Here is an example of some code:&lt;br&gt;&lt;br&gt;
&lt;code&gt;DateTime now = DateTime.now();  &lt;br&gt;
int hour = now.hour;  &lt;br&gt;
int minute = now.minute;  &lt;br&gt;
int second = now.second;  &lt;br&gt;
print('$hour $minute $second');&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How to parse a DateTime string or Date string in Flutter?&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To parse a date string in Flutter, you can use the &lt;strong&gt;DateTime.parse()&lt;/strong&gt; method. This method takes a string that represents a date and time in a specific format and returns a DateTime object. Here's an example of how to parse a date string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String dateString = '2022-05-01 14:30:00';  
DateTime dateTime = DateTime.parse(dateString);  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;In conclusion, formatting dates and times in a Flutter app is important for creating a good user experience. By using the &lt;strong&gt;DateFormat&lt;/strong&gt; class, you can easily format dates and times according to your specific needs and handle time zones correctly.&lt;/p&gt;

&lt;p&gt;By following the steps outlined in this article, you can customize date and time formatting in your Flutter app to meet your exact requirements. Whether you need to display dates and times in a specific format or need to handle time zone conversions, you now have the knowledge and tools to do so.&lt;/p&gt;

&lt;p&gt;Incorporating well-formatted dates and times into your app can improve its overall usability and make it more user-friendly. So take the time to master date and time formatting in Flutter and create a better user experience for your app's users.&lt;/p&gt;

&lt;p&gt;Thank you for reading this article on how to format dates and times in Flutter. We hope you found it informative and useful. If you have any questions or feedback, please feel free to leave a comment below.&lt;/p&gt;

&lt;h4&gt;
  
  
  Follow ME
&lt;/h4&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc%5Fstephen123" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>flutter</category>
    </item>
    <item>
      <title>Need tips in setting the right path.</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Mon, 17 Apr 2023 22:22:10 +0000</pubDate>
      <link>https://dev.to/mc-stephen/need-tips-in-setting-the-right-path-2ejl</link>
      <guid>https://dev.to/mc-stephen/need-tips-in-setting-the-right-path-2ejl</guid>
      <description>&lt;p&gt;Hi guys, so for the past few months I have been posting on dev.to frequently, and, surprisingly, I have grown my followers from 5 to 54, though I have stopped posting for like a month now. WHY?&lt;/p&gt;

&lt;p&gt;Well, I am trying to focus on one aspect of programming, as software development has a variety of paths, and I have chosen the path of a front-end software engineer (I am serious, I don't need anything backend).&lt;/p&gt;

&lt;p&gt;So I decided to learn all this stack below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stacks I know and plan on learning:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;HTML5 (just so simple)&lt;/li&gt;
&lt;li&gt;CSS3 (Hmmmmmmm)&lt;/li&gt;
&lt;li&gt;Javascript (for web)&lt;/li&gt;
&lt;li&gt;Typescript (because JS sucks sometimes)&lt;/li&gt;
&lt;li&gt;ReactJs (NextJs) (for web)&lt;/li&gt;
&lt;li&gt;Vue (NuxtJs) (for web)&lt;/li&gt;
&lt;li&gt;Flutter and Dart (for cross-platform)&lt;/li&gt;
&lt;li&gt;React Native (for cross-platform)&lt;/li&gt;
&lt;li&gt;C# (for native Windows platforms using winUI3 or WPF)&lt;/li&gt;
&lt;li&gt;Swift (for native macOS and iOS)&lt;/li&gt;
&lt;li&gt;UI/UX (but just a little bit)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I have chosen the above stack because:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I can find a job easily with that (at least, that is what I believe).&lt;/li&gt;
&lt;li&gt;That is what will make me a full-fledged software (front-end) engineer.&lt;/li&gt;
&lt;li&gt;learning all that successfully will make me so happy as I really find lots of joy in programming (it gives a sense of power).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;My Question&lt;/strong&gt;&lt;br&gt;
Even though I have some experience in these tech things, I don't really know if I am making the right choice, so this is where I need your guys advice for me (it can also help others on the same path).&lt;/p&gt;

&lt;p&gt;You can add or remove what you think does not feel right in that least, but note that I only want to focus on front-end and become a guru in it.&lt;/p&gt;

&lt;p&gt;Your input on this will really be appreciated, and here is a list of stacks I know and have used in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Know Stack:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;HTML5 (My Portfolio: &lt;a href="https://emeka212.github.io/my-portfolio"&gt;https://emeka212.github.io/my-portfolio&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;CSS3&lt;/li&gt;
&lt;li&gt;SCSS (I haven't touched it in 2 years:))&lt;/li&gt;
&lt;li&gt;Javascript&lt;/li&gt;
&lt;li&gt;Typescript (just stated learning it)&lt;/li&gt;
&lt;li&gt;React (NextJs) [build a blog with it: &lt;a href="https://axxellanceblog.com"&gt;https://axxellanceblog.com&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Flutter and Dart (almost a pro)&lt;/li&gt;
&lt;li&gt;C# (just started learning this too)&lt;/li&gt;
&lt;li&gt;UI / UX (a little, though not that little)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Except from all this, I know some other things that are not really into programming, like git, github, and the likes of it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: My portfolio has some of my personal and non-personal projects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Please do not skip this; a word or less will be gladly appreciated.&lt;/p&gt;

&lt;p&gt;Thanks in advance!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>frontend</category>
    </item>
    <item>
      <title>How To Install Easypanel on Ubuntu</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Thu, 23 Mar 2023 11:20:22 +0000</pubDate>
      <link>https://dev.to/mc-stephen/how-to-install-easypanel-on-ubuntu-452</link>
      <guid>https://dev.to/mc-stephen/how-to-install-easypanel-on-ubuntu-452</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you're an Ubuntu user looking to manage your server easily, you might want to consider installing Easypanel. Easypanel is a web-based control panel that allows you to manage your server and websites through a user-friendly interface.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Original source of this article can be found in &lt;a href="https://axxellanceblog.com/posts/how-to-install-easypanel-on-ubuntu" rel="noopener noreferrer"&gt;Axxellanceblog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's a great tool for those who are not familiar with the command line or prefer a GUI-based approach to server management. In this tutorial, we'll walk you through the steps to install Easypanel on Ubuntu, a popular Linux distribution. By the end of this guide, you'll be able to use Easypanel to manage your server and websites with ease.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Easypanel
&lt;/h3&gt;

&lt;p&gt;Easypanel is a user-friendly web hosting control panel that simplifies the management of web servers. It offers a range of features, including website management, domain management, email management, and more, making it a comprehensive solution for managing web hosting tasks. Easypanel's intuitive interface is ideal for beginners, but it also has advanced features that are useful for experienced users.&lt;/p&gt;

&lt;p&gt;The control panel is compatible with various operating systems, including Ubuntu, CentOS, Debian, and others. This means that users can choose the operating system that best suits their needs and still use Easypanel to manage their web hosting tasks. Overall, Easypanel is a powerful and comprehensive solution for web hosting management, suitable for users of all levels of experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Minimum Requirement
&lt;/h3&gt;

&lt;p&gt;Before installing Easypanel, it is essential to ensure that your server meets the minimum requirements. The minimum requirements for Easypanel are as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Operating System: Easypanel is compatible with Ubuntu 16.04 and above, CentOS 7 and above, and Debian 9 and above.&lt;/li&gt;
&lt;li&gt;CPU: A processor with at least 1 GHz clock speed is required.&lt;/li&gt;
&lt;li&gt;RAM: A minimum of 1 GB of RAM is recommended. However, the more RAM your server has, the better it will perform.&lt;/li&gt;
&lt;li&gt;Disk Space: A minimum of 20 GB of free disk space is required. However, the more disk space you have, the better it will be for storing backups and other files.&lt;/li&gt;
&lt;li&gt;Network: Your server should have a stable and reliable internet connection.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ensuring that your server meets these minimum requirements is crucial to the proper functioning of Easypanel. By meeting these requirements, you can ensure that your server runs smoothly and efficiently, allowing you to manage your web hosting tasks with ease.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Easypanel
&lt;/h3&gt;

&lt;p&gt;In this section, we will install the open-source server control panel known asEasypanel, so simple follow this step-by-step process.&lt;/p&gt;

&lt;h3&gt;
  
  
  step 1: Installing docker
&lt;/h3&gt;

&lt;p&gt;Docker is an open-source platform that allows developers to build, package, and deploy applications in containers. It simplifies the process of deploying and managing applications, making it easier for developers to focus on coding instead of infrastructure&lt;/p&gt;

&lt;h4&gt;
  
  
  Update Your Server &lt;strong&gt;:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Before you install Docker, it is essential to ensure that your Ubuntu server is up-to-date. Run the following command in the terminal to update your system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
sudo apt-get upgrade

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Install Docker &lt;strong&gt;:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;To install Docker, you need to add the Docker repository to your system. Run the following commands to add the Docker GPG key and the Docker repository to your Ubuntu server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL [&amp;lt;https://download.docker.com/linux/ubuntu/gpg&amp;gt;](&amp;lt;https://download.docker.com/linux/ubuntu/gpg&amp;gt;) | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] [&amp;lt;https://download.docker.com/linux/ubuntu&amp;gt;](&amp;lt;https://download.docker.com/linux/ubuntu&amp;gt;) $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After adding the Docker repository, update your system again to ensure that the latest Docker packages are available:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you can install Docker by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install docker-ce docker-ce-cli containerd.io

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Verify Docker Installation &lt;strong&gt;:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Once the installation is complete, you can verify that Docker is running by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker run hello-world

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will download a test image and run it in a container. If Docker is installed correctly, you should see the following output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello from Docker!
This message shows that your installation appears to be working correctly.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Manage Docker as a Non-root User :
&lt;/h4&gt;

&lt;p&gt;By default, Docker requires root privileges to run. To avoid running Docker as root, you can add your user to the &lt;strong&gt;&lt;code&gt;docker&lt;/code&gt;&lt;/strong&gt; group, which will allow you to run Docker commands without sudo. To add your user to the &lt;strong&gt;&lt;code&gt;docker&lt;/code&gt;&lt;/strong&gt; group, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo usermod -aG docker ${USER}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Log out and log back in to apply the changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Installing Easypanel
&lt;/h3&gt;

&lt;p&gt;Next, you need to install Easypanel by executing the following command. Make sure you have root (sudo) privileges before running the command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --rm -it \\
-v /etc/easypanel:/etc/easypanel \\
-v /var/run/docker.sock:/var/run/docker.sock:ro \\
easypanel/easypanel setup

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Easypanel will install Docker Swarm and several other tools on your server. You should install it on a fresh server; otherwise, you risk facing unexpected errors.&lt;/p&gt;

&lt;p&gt;Port 80 and 443 must be available and not blocked by your firewall.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 3: Accessing Easypanel
&lt;/h3&gt;

&lt;p&gt;Once you have successfully installed EasyPanel on your Ubuntu server, accessing it is a simple process.&lt;/p&gt;

&lt;h4&gt;
  
  
  Open a Web Browser :
&lt;/h4&gt;

&lt;p&gt;The first step to accessing EasyPanel is to open a web browser on your local computer. Any modern web browser such as Google Chrome, Firefox, or Safari should work.&lt;/p&gt;

&lt;h4&gt;
  
  
  Enter the Server IP Address :
&lt;/h4&gt;

&lt;p&gt;Once your web browser is open, enter the IP address of your Ubuntu server in the address bar. If you're unsure of your server's IP address, you can find it by running the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\\/.*$//'

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Enter the EasyPanel URL :
&lt;/h4&gt;

&lt;p&gt;Next, append the EasyPanel URL to the end of the IP address in the address bar. The URL should look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;http://your-server-ip-address:8888&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to replace your-server-IP-address with the actual IP address of your Ubuntu server. The port number (8888) is the default port number used by EasyPanel. If you changed the port number during installation, make sure to use the correct port number.&lt;/p&gt;

&lt;h4&gt;
  
  
  Log in to EasyPanel :
&lt;/h4&gt;

&lt;p&gt;Once you have entered the EasyPanel URL in the address bar, press Enter. You should be presented with the EasyPanel login screen. Enter the username and password you created during the installation process and click the "Log In" button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdirectus.axxellanceblog.com%2Fassets%2Fee213b2b-f9bb-43c8-a0f4-44e40dae9760%3Fwidth%3D1920%26height%3D972" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdirectus.axxellanceblog.com%2Fassets%2Fee213b2b-f9bb-43c8-a0f4-44e40dae9760%3Fwidth%3D1920%26height%3D972" alt="easypanel-login-screen.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you entered the correct username and password, you should now be logged in to EasyPanel and ready to start managing your server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips for Easypanel
&lt;/h3&gt;

&lt;p&gt;Now I do believe that you must have successfully installed Easypanel on your ubuntu panel, but just in case you encounter some errors, these tips might help you in overcoming them.&lt;/p&gt;

&lt;h4&gt;
  
  
  1: Updating Easypanel
&lt;/h4&gt;

&lt;p&gt;Note that the panel will try to update automatically when there is a new release available. you will see a button in the navigation bar, clicking that button will update your panel to the latest version, but just in case it didn’t display or you want to update manually, then you can run the following command below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stable Version:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker image pull easypanel/easypanel &amp;amp;&amp;amp; docker service update easypanel --force

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Canary version:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker image pull easypanel/easypanel:canary &amp;amp;&amp;amp; docker service update easypanel --force

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2: Resetting Password
&lt;/h4&gt;

&lt;p&gt;You are human, and that means you are not immune to mistake or memory loss, but if you have forgotten your login password or you want to change it without using the panel itself then do run the following command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --rm -it \\
-v /etc/easypanel:/etc/easypanel \\
-v /var/run/docker.sock:/var/run/docker.sock:ro \\
easypanel/easypanel reset-password

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In conclusion, Easypanel is a user-friendly web hosting control panel that simplifies the management of web servers. If you are using Ubuntu as your operating system, installing Easypanel is a straightforward process that can be done in a few simple steps. By following the steps outlined in this guide, you can install Easypanel on your Ubuntu server and start managing your websites with ease.&lt;/p&gt;

&lt;p&gt;To install Easypanel on Ubuntu, you will need to have some technical knowledge and be comfortable using the command line. However, with the right instructions, anyone can install Easypanel and get started with web hosting management.&lt;/p&gt;

&lt;p&gt;If you are looking for an easy way to manage your web server, Easypanel is definitely worth considering. It offers a range of features, including website management, domain management, email management, and more. With Easypanel, you can streamline your web hosting management tasks and save time and effort.&lt;/p&gt;

&lt;p&gt;In summary, if you are an Ubuntu user looking for a simple and effective way to manage your web server, Easypanel is an excellent choice. Follow the steps outlined in this guide to install Easypanel on your Ubuntu server and start managing your websites with ease.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow ME
&lt;/h3&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc%5Fstephen123" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>easypanel</category>
    </item>
    <item>
      <title>How to Parse RSS Feed in Javascript</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Mon, 20 Mar 2023 13:08:59 +0000</pubDate>
      <link>https://dev.to/mc-stephen/how-to-parse-rss-feed-in-javascript-10l2</link>
      <guid>https://dev.to/mc-stephen/how-to-parse-rss-feed-in-javascript-10l2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the world of web development, RSS feeds have become a popular way to distribute and consume content. They allow users to easily stay up-to-date with the latest news, blog posts, podcasts, and more. In this blog post, we will explore how to parse RSS feeds in Javascript, a powerful and versatile programming language commonly used for web development.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Original source of this article can be found in &lt;a href="https://axxellanceblog.com/posts/how-to-parse-rss-feed-in-javascript"&gt;Axxellanceblog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Parsing an RSS feed involves extracting the relevant data from the feed, such as the title, date, and content of each article, and then displaying it on a webpage or app. While there are many libraries and tools available for parsing RSS feeds, in this post, we will focus on using Javascript to parse RSS feeds.&lt;/p&gt;

&lt;p&gt;We will walk through the process step-by-step, explaining each step in detail and providing code examples along the way. By the end of this post, you will have a solid understanding of how to parse RSS feeds in Javascript, and be able to implement it in your own web projects.&lt;/p&gt;

&lt;p&gt;But first, let's talk about why parsing RSS feeds is important for SEO. By adding RSS feeds to your website, you can improve your search engine rankings by providing fresh and relevant content on a regular basis. Additionally, RSS feeds make it easy for other websites to syndicate your content, increasing your visibility and reach online.&lt;/p&gt;

&lt;p&gt;So, whether you're a blogger, content creator, or web developer, learning how to parse RSS feeds in Javascript is a valuable skill that can help you enhance your website's SEO and provide a better user experience for your visitors. Let's get started!&lt;/p&gt;

&lt;h3&gt;
  
  
  What is an RSS Feed
&lt;/h3&gt;

&lt;p&gt;An RSS feed is a format used to distribute and share content online. It allows website owners and content creators to syndicate their content and make it available to a wider audience.&lt;/p&gt;

&lt;p&gt;RSS stands for "Really Simple Syndication" and is often referred to as a "web feed". It's a standard format that's used to publish frequently updated content, such as blog posts, news articles, podcasts, and videos.&lt;/p&gt;

&lt;p&gt;When you subscribe to an RSS feed, you receive updates automatically whenever new content is added. This makes it easy to stay up-to-date with your favorite websites and content creators without having to manually check for updates.&lt;/p&gt;

&lt;p&gt;RSS feeds are usually displayed in a list format, with the title, date, and a brief description of each item. Users can then click on the items to view the full content on the original website.&lt;/p&gt;

&lt;p&gt;From an SEO perspective, RSS feeds are important because they can help improve your website's visibility and reach online. By adding an RSS feed to your website, you can provide fresh and relevant content on a regular basis, which can help to improve your search engine rankings.&lt;/p&gt;

&lt;p&gt;In addition, RSS feeds make it easy for other websites and content creators to syndicate your content, which can increase your visibility and reach online. This can lead to more traffic and backlinks to your website, both of which can improve your SEO.&lt;/p&gt;

&lt;p&gt;In conclusion, an RSS feed is a powerful tool for distributing and syndicating content online. By adding an RSS feed to your website and learning how to parse RSS feeds in Javascript, you can improve your website's SEO and provide a better user experience for your visitors.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Parse an RSS Feed
&lt;/h3&gt;

&lt;p&gt;Imagine you have an RSS feed similar to &lt;a href="https://axxellanceblog.com/rss.xml"&gt;this&lt;/a&gt;. The objective is to obtain that RSS feed, analyze the data it contains, and take action with it. RSS is an XML format, whereas JSON is arguably easier to work with than XML. While many APIs provide JSON results, RSS is less likely to receive them, despite their &lt;a href="https://jsonfeed.org/"&gt;existence&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let's finish this up.&lt;/p&gt;

&lt;p&gt;It's probably a good idea to &lt;a href="https://validator.w3.org/feed/"&gt;validate&lt;/a&gt; the feed first. That way, you can be sure you're using a response that is at least valid (parsing may fail on invalid responses).&lt;/p&gt;

&lt;p&gt;The RSS feed's URL will then need to be requested over the network. The native fetch API of JavaScript will be used since it is the most efficient. It undoubtedly works in browsers, and it appears that Node has a pretty well-liked &lt;a href="https://www.npmjs.com/package/node-fetch"&gt;implementation&lt;/a&gt; of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We'll do as follows&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Call the URL&lt;/li&gt;
&lt;li&gt;First parse the response as text&lt;/li&gt;
&lt;li&gt;Then parse the text with &lt;code&gt;DOMParser()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then use the data like we would if we had a normal DOM reference
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const RSS_URL = `https://codepen.io/picks/feed/`;

fetch(RSS_URL)
    .then(response =&amp;gt; response.text())
    .then(str =&amp;gt; new window.DOMParser().parseFromString(str, "text/xml"))
    .then(data =&amp;gt; console.log(data))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can execute our tasks in that regard. When it comes to nested elements, RSS is somewhat similar to HTML. Our information will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;rss&amp;gt; 
    &amp;lt;channel&amp;gt; 
        &amp;lt;title&amp;gt;Feed Title&amp;lt;/title&amp;gt; 
        &amp;lt;item&amp;gt; 
            &amp;lt;link&amp;gt;https://codepen.io/billgil/pen/ewqWzY&amp;lt;/link&amp;gt;
            &amp;lt;title&amp;gt;A sad rain cloud&amp;lt;/title&amp;gt; 
            &amp;lt;dc:creator&amp;gt;Bill Gilmore&amp;lt;/dc:creator&amp;gt;
        &amp;lt;/item&amp;gt; 
        &amp;lt;!-- a bunch more items --&amp;gt;
    &amp;lt;/channel&amp;gt; 
&amp;lt;/rss&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In order to find those  elements, we can querySelectorAll and then loop over them as needed. Here, I'll create a template for a number of  elements and then put them onto a webpage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fetch(RSS_URL)
  .then(response =&amp;gt; response.text())
  .then(str =&amp;gt; new window.DOMParser().parseFromString(str, "text/xml"))
  .then(data =&amp;gt; {
    console.log(data);
    const items = data.querySelectorAll("item");
    let html = ``;
    items.forEach(el =&amp;gt; {
      html += `
        &amp;lt;article&amp;gt;
          &amp;lt;img src="${el.querySelector("link").innerHTML}/image/large.png" alt=""&amp;gt;
          &amp;lt;h2&amp;gt;
            &amp;lt;a href="${el.querySelector("link").innerHTML}" target="_blank" rel="noopener"&amp;gt;
              ${el.querySelector("title").innerHTML}
            &amp;lt;/a&amp;gt;
          &amp;lt;/h2&amp;gt;
        &amp;lt;/article&amp;gt;
      `;
    });
    document.body.insertAdjacentHTML("beforeend", html);
  });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  JQuery Syntax
&lt;/h3&gt;

&lt;p&gt;I’ve always thought jQuery made for a nice Ajax library, plus it has some helpers all around. This is how you’d do it in jQuery.&lt;/p&gt;

&lt;p&gt;const RSS_URL = &lt;code&gt;https://codepen.io/picks/feed/&lt;/code&gt;;&lt;br&gt;&lt;br&gt;
$.ajax(RSS_URL, {&lt;br&gt;&lt;br&gt;
  accepts: {&lt;br&gt;&lt;br&gt;
    xml: "application/rss+xml"&lt;br&gt;&lt;br&gt;
  },&lt;br&gt;&lt;br&gt;
  dataType: "xml",&lt;br&gt;&lt;br&gt;
  success: function(data) {&lt;br&gt;&lt;br&gt;
    $(data)&lt;br&gt;&lt;br&gt;
      .find("item")&lt;br&gt;&lt;br&gt;
      .each(function() {&lt;br&gt;&lt;br&gt;
        const el = $(this);&lt;br&gt;&lt;br&gt;
        const template = &lt;code&gt;&lt;br&gt;
          &amp;lt;article&amp;gt;  &lt;br&gt;
            &amp;lt;img src="${el.find("link").text()}/image/large.png" alt=""&amp;gt;   &lt;br&gt;
            &amp;lt;h2&amp;gt;  &lt;br&gt;
              &amp;lt;a href="${el.find("link").text()}" target="_blank" rel="noopener"&amp;gt;   &lt;br&gt;
                ${el.find("title").text()}   &lt;br&gt;
              &amp;lt;/a&amp;gt;  &lt;br&gt;
            &amp;lt;/h2&amp;gt;   &lt;br&gt;
          &amp;lt;/article&amp;gt;   &lt;br&gt;
&lt;/code&gt;;&lt;br&gt;&lt;br&gt;
        document.body.insertAdjacentHTML("beforeend", template);&lt;br&gt;&lt;br&gt;
      });&lt;br&gt;&lt;br&gt;
  }&lt;br&gt;&lt;br&gt;
});  &lt;/p&gt;

&lt;p&gt;I'd say it's a little strange to rely on a third-party API (and I consider RSS an API) to render crucial content on your site if you're going to do this in practice on a production site. I would most likely create the request on a server-side timer (CRON), cache it, and then have your front-end use the information from that cache. faster and safer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In conclusion, parsing RSS feeds in JavaScript can be a useful tool for developers looking to integrate dynamic content into their websites. With the right tools and knowledge, parsing RSS feeds can be a relatively simple process that can provide great benefits.&lt;/p&gt;

&lt;p&gt;To parse an RSS feed in JavaScript, developers can use various libraries such as rss-parser, FeedEk, or jFeed. These libraries allow developers to easily retrieve, parse, and manipulate RSS feeds in JavaScript.&lt;/p&gt;

&lt;p&gt;However, it is important to note that some RSS feeds may not be accessible due to CORS (Cross-Origin Resource Sharing) restrictions. In such cases, developers can use server-side solutions such as a proxy server to retrieve the RSS feed data.&lt;/p&gt;

&lt;p&gt;By implementing RSS feeds into their websites, developers can keep their content up-to-date and provide their users with a more dynamic and engaging experience. Moreover, search engines often prioritize websites with fresh, high-quality content, so incorporating RSS feeds into your website can also help improve your website's SEO rankings.&lt;/p&gt;

&lt;p&gt;In conclusion, with the right tools and knowledge, parsing RSS feeds in JavaScript can be a valuable addition to any developer's toolkit. By implementing RSS feeds, developers can provide their users with up-to-date, engaging content while also improving their website's SEO rankings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow ME
&lt;/h3&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc%5Fstephen123"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>windows</category>
    </item>
    <item>
      <title>How to Fix CORS Origin Error in Javascript</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Wed, 15 Mar 2023 16:43:40 +0000</pubDate>
      <link>https://dev.to/mc-stephen/how-to-fix-cors-origin-error-in-javascript-3nd3</link>
      <guid>https://dev.to/mc-stephen/how-to-fix-cors-origin-error-in-javascript-3nd3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Cross-Origin Resource Sharing (CORS) is a security mechanism implemented in web browsers to restrict resource sharing between different domains. While CORS plays an essential role in web security, it can also cause problems when you're trying to access resources from a different domain through JavaScript.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Original source of this article can be found in &lt;a href="https://axxellanceblog.com/posts/how-to-fix-cors-origin-error-in-javascript" rel="noopener noreferrer"&gt;Axxellanceblog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you're a developer working with JavaScript, you've likely encountered a CORS Origin error, which can be frustrating and time-consuming to fix. In this blog post, we'll explore what CORS is, why it's important, and how to fix the CORS Origin error in JavaScript. Whether you're a seasoned developer or just starting with JavaScript, this guide will help you understand CORS and provide you with actionable steps to resolve the CORS Origin error in your projects. So, let's dive in!&lt;/p&gt;

&lt;p&gt;This is an example of a CORS error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdirectus.axxellanceblog.com%2Fassets%2Fb53de654-e78b-42b7-8c30-f35ec225eb1d%3Fwidth%3D1400%26height%3D185" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdirectus.axxellanceblog.com%2Fassets%2Fb53de654-e78b-42b7-8c30-f35ec225eb1d%3Fwidth%3D1400%26height%3D185" alt="0*b I2yx Kryq Jzy Ukud"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is CORS
&lt;/h3&gt;

&lt;p&gt;Cross-Origin Resource Sharing (CORS) is a security feature implemented in web browsers to protect against cross-site attacks by restricting resource sharing between different domains. In this blog post, we'll explore what CORS is and why it's important to understand, especially for web developers.&lt;/p&gt;

&lt;p&gt;CORS works by enforcing the "same-origin” policy, which means that a web page can only access resources from the same domain as the page itself. This policy is in place to prevent malicious scripts on one site from accessing resources on another site. However, there are legitimate reasons why a web application may need to access resources from a different domain. In such cases, CORS allows a server to explicitly grant access to resources from a different domain.&lt;/p&gt;

&lt;p&gt;CORS is crucial for web security as it prevents unauthorized access to sensitive data, such as user credentials or payment information. It also ensures that a web application can only access the resources it needs, preventing malicious scripts from accessing unnecessary resources.&lt;/p&gt;

&lt;p&gt;In summary, CORS is a security feature that restricts resource sharing between different domains, enforcing the same-origin policy. It's essential to understand how CORS works and how to use it properly, especially if you're a web developer. By following best practices and understanding the importance of web security, you can ensure that your web applications are safe and reliable for users to interact with.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 Ways to Fix The CORS Error in Web Browser
&lt;/h3&gt;

&lt;p&gt;You will learn three effective ways to fix the CORS origin error in JavaScript. When you encounter a CORS origin error, it can be frustrating and time-consuming to resolve. However, by following the three methods we will discuss, you can easily fix the issue and ensure that your web application is secure and functional.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Fixed one: Installing a browser extension&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;You can successfully bypass the CORS origin error locally by installing an extension on your local browser called the &lt;a href="https://chrome.google.com/webstore/detail/moesif-orign-cors-changer/digfbfaphojjndkpccljibejjbppifbc?hl=en-US" rel="noopener noreferrer"&gt;Moesif CORS extension&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt; Installing the Moesif CORS extension is the quickest solution. Clicking it in your browser after installation will enable the extension. Ensure that the label of the icon changes from "off" to "on.” Then refresh your application, and your API requests should now work🎉.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yet, the plugin fix is misleading.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why!!! you might ask, Well, the plugin undoubtedly resolves the problem. The only machine that this fix works on is your own. It's okay to have a plugin installed that can assist you in getting around the problem when working on local development.&lt;/p&gt;

&lt;p&gt;Nevertheless, you cannot anticipate that your users will also install the plugin when you publish your application. It wouldn't be a smart business move…&lt;/p&gt;

&lt;p&gt;There must be better options available. In order to get there, let's check out the next two fixes.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Fixed two: Send your request to a proxy&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;You cannot demand that your users install a plugin that applies a header in the front end in order to trick their browsers. Yet, you have control over the backend URL that receives API queries from web applications.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/Rob--W/cors-anywhere/#documentation" rel="noopener noreferrer"&gt;cors-anywhere&lt;/a&gt; server acts as a proxy, inserting CORS headers into requests. A proxy serves as a mediator between a client and a server. The Cors-Anywhere proxy server functions here as a middleman between the frontend web app making the request and the server providing the data. Similar to the Allow-control-allow-origin plugin, it adds the more open &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; header to the response.&lt;/p&gt;

&lt;p&gt;It works like this. Say your frontend is trying to make a GET request to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://joke-api-strict-cors.appspot.com/jokes/random&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;But there is no Access-Control-Allow-Origin value set for this API that would allow the web application domain to access it. So instead, send your GET request to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://cors-anywhere.herokuapp.com/&amp;lt;https://joke-api-strict-cors.appspot.com/jokes/random&lt;/code&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;The proxy server receives the &lt;code&gt;https://joke-api-strict-cors.appspot.com/jokes/random&lt;/code&gt; from the URL above. Then it sends a request to that server to obtain a response. Finally, the proxy updates the original response with the &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; header.&lt;/p&gt;

&lt;p&gt;The fact that this solution functions in both development and production makes it fantastic. In conclusion, you are profiting from the fact that browser-to-server communication is the only scenario in which the same origin policy is used. Thus, it need not be imposed on server-to-server communication!&lt;/p&gt;

&lt;p&gt;The Cors-Anywhere proxy's one drawback is that it can frequently take a while to get a response. Your applications might appear to be running a little slowly because of the high latency.&lt;/p&gt;

&lt;p&gt;This brings us to a final, even better approach.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Fixed three: Build your own proxy&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The solution I suggest in cases like these is to create your own proxy! Like the last technique, you make use of the fact that server-to-server communication does not enforce the same origin policy. You also take care of the latency issue. You can allocate as many resources as you need to your own servers and are not required to share the CORS-anywhere proxy with other users.&lt;/p&gt;

&lt;p&gt;Here is some simple Node.js code that builds a proxy server for the same &lt;code&gt;https://joke-api-strict-cors.appspot.com/&lt;/code&gt; from above using the express web framework:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express');
const request = require('request');

const app = express();
app.use((req, res, next) =&amp;gt; {
  res.header('Access-Control-Allow-Origin', '*');
  next();
});

app.get('/jokes/random', (req, res) =&amp;gt; {
  request(
    { url: '&amp;lt;https://joke-api-strict-cors.appspot.com/jokes/random&amp;gt;' },
    (error, response, body) =&amp;gt; {
      if (error || response.statusCode !== 200) {
        return res.status(500).json({ type: 'error', message: err.message });
      }

      res.json(JSON.parse(body));
    }
  )
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () =&amp;gt; console.log(`listening on ${PORT}`));

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How does that function? Every response from the server receives an &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; header thanks to the proxy's use of express middleware. The proxy requests a random joke from another server at its own jokes/random HTTP endpoint. The request is not blocked by the same-origin policy despite the fact that the domains are distinct. This is a server-to-server request, after all. The resultant data and the &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; header are then created by the proxy and sent back to the original requester (a browser app).&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In conclusion, the CORS Origin error in JavaScript can be a challenging issue to deal with, but understanding what CORS is and how it works can help you overcome it. By implementing the steps we've discussed in this post, you can fix the error and ensure that your website or application is secure and functional. Remember to always consider security when sharing resources between domains, as this is crucial to maintaining a safe and reliable web environment.&lt;/p&gt;

&lt;p&gt;We hope this guide has been helpful in giving you an overview of CORS and how to fix the CORS Origin error in JavaScript. By following these best practices, you can enhance your development skills and create robust web applications that work seamlessly across different domains.&lt;/p&gt;

&lt;p&gt;As you continue to work with JavaScript, keep in mind that there are many other potential issues you may encounter. However, with a solid understanding of web development principles and best practices, you can overcome any obstacle and create amazing web applications that m&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow ME
&lt;/h3&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc%5Fstephen123" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>How To Install Cyberpanel on Ubuntu</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Sun, 12 Mar 2023 10:02:09 +0000</pubDate>
      <link>https://dev.to/mc-stephen/how-to-install-cyberpanel-on-ubuntu-3m4h</link>
      <guid>https://dev.to/mc-stephen/how-to-install-cyberpanel-on-ubuntu-3m4h</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Are you looking for an efficient and user-friendly control panel for your web server? Look no further than CyberPanel! CyberPanel is a powerful web hosting control panel that allows you to easily manage your websites, email accounts, and DNS settings.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Original source of this article can be found on this page at &lt;a href="https://axxellanceblog.com/posts/how-to-install-cyberpanel-on-ubuntu"&gt;Axxellanceblog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the best part? It's completely free and open-source! In this tutorial, we'll guide you step-by-step through the process of installing CyberPanel on Ubuntu. So, whether you're a seasoned web developer or just starting, follow along to learn how to get CyberPanel up and running on your Ubuntu server.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is CyberPanel&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://cyberpanel.net/"&gt;CyberPanel&lt;/a&gt; is a free and open-source web hosting control panel that enables website owners and developers to easily manage their websites, email accounts, and DNS settings. It was designed with speed and security in mind, making it an ideal solution for those who want to create and manage websites quickly and efficiently.&lt;/p&gt;

&lt;p&gt;CyberPanel comes with a user-friendly interface that simplifies website management tasks. With just a few clicks, you can install popular web applications such as WordPress, Joomla, and Drupal, set up email accounts, manage DNS zones, and more.&lt;/p&gt;

&lt;p&gt;One of the standout features of CyberPanel is its integration with the LiteSpeed web server. LiteSpeed is a high-performance web server that is known for its speed, security, and scalability. When combined with CyberPanel, it provides an unbeatable hosting experience for websites of all sizes.&lt;/p&gt;

&lt;p&gt;In addition to LiteSpeed, CyberPanel also includes several other powerful features, such as automatic backups, Let's Encrypt SSL support, and advanced security measures to protect your website from hacking attempts.&lt;/p&gt;

&lt;p&gt;Overall, CyberPanel is an excellent web hosting control panel for anyone who wants to create and manage websites easily and efficiently. Its user-friendly interface, powerful features, and integration with LiteSpeed make it a top choice for website owners and developers alike.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CyberPanel vs CyberPanel E&lt;/strong&gt;nterprise
&lt;/h3&gt;

&lt;p&gt;CyberPanel and CyberPanel Ent are two versions of the same web hosting control panel. While they share many similarities, there are a few key differences between them that you should be aware of before deciding which version to use.&lt;/p&gt;

&lt;p&gt;CyberPanel is the free, open-source version of the control panel. It comes with a range of features that make it a popular choice for website owners and developers. For example, CyberPanel includes an intuitive interface that makes it easy to manage your websites, email accounts, and DNS settings. It also comes with LiteSpeed Web Server integration, which is known for its speed, security, and scalability.&lt;/p&gt;

&lt;p&gt;CyberPanel Ent, on the other hand, is the enterprise version of the control panel. It includes all of the features of the free version, as well as some additional tools and capabilities that are designed to meet the needs of larger organizations. For example, CyberPanel Ent includes advanced backup and restoration options, enhanced security features, and support for multiple server environments.&lt;/p&gt;

&lt;p&gt;Another key difference between the two versions is that CyberPanel Enterprise comes with dedicated support and maintenance services. This means that if you run into any issues while using the enterprise version, you can reach out to the CyberPanel team for assistance.&lt;/p&gt;

&lt;p&gt;Ultimately, the version of CyberPanel that you choose will depend on your specific needs and requirements. If you are a small to medium-sized website owner or developer, the free version of CyberPanel is likely to provide you with everything you need to manage your websites effectively. However, if you are part of a larger organization that requires additional tools and support, CyberPanel Ent may be the better choice for you.&lt;/p&gt;

&lt;p&gt;To learn more about the differences between OpenLiteSpeed and LiteSpeed Web Server Enterprise, please see this &lt;a href="https://www.litespeedtech.com/products/litespeed-web-server/editions"&gt;comprehensive comparison&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Server-side requirements&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Before you can install CyberPanel on your server, you need to ensure that your server meets the necessary requirements. Here are the server-side requirements for CyberPanel:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Operating System: CyberPanel is compatible with a variety of operating systems, including CentOS 7 and 8, Ubuntu 18.04 and 20.04, and Debian 9 and 10.&lt;/li&gt;
&lt;li&gt;RAM: CyberPanel requires a minimum of 1 GB of RAM to operate effectively. However, we recommend at least 2 GB of RAM to ensure optimal performance.&lt;/li&gt;
&lt;li&gt;Disk Space: CyberPanel requires a minimum of 10 GB of free disk space. However, the actual amount of disk space required will depend on the number of websites you plan to host and the amount of traffic they receive.&lt;/li&gt;
&lt;li&gt;Processor: CyberPanel is compatible with both Intel and AMD processors.&lt;/li&gt;
&lt;li&gt;Web Server: CyberPanel requires the LiteSpeed web server to be installed on your server. If you don't have LiteSpeed installed, you can easily install it using the CyberPanel installation script.&lt;/li&gt;
&lt;li&gt;Firewall: CyberPanel requires that port 8090 is open and accessible for communication with the control panel.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is essential to ensure that your server meets these requirements before attempting to install CyberPanel. Failure to meet these requirements may result in installation issues or poor performance. If you are unsure whether your server meets the necessary requirements, consult with your hosting provider or system administrator.&lt;/p&gt;

&lt;h3&gt;
  
  
  What we will talk about
&lt;/h3&gt;

&lt;p&gt;Now let’s talk about what we are going to do in this article in order to successfully install Appwrite on our Ubuntu server.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Updating our ubuntu server #
&lt;/li&gt;
&lt;li&gt;Remove Unnecessary Installations #
&lt;/li&gt;
&lt;li&gt;Install CyberPanel with OpenLiteSpeed #
&lt;/li&gt;
&lt;li&gt;Configure Firewall Rules #
&lt;/li&gt;
&lt;li&gt;Accessing the CyberPanel Web UI #
&lt;/li&gt;
&lt;li&gt;Accessing the OpenLiteSpeed &lt;strong&gt;#&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How to change the password of OpenLiteSpeed and CyberPanel Web Admin &lt;strong&gt;#&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Troubleshooting #
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Updating our ubuntu server:
&lt;/h3&gt;

&lt;p&gt;Updating and upgrading an Ubuntu server is a straightforward process. To update the package list on your server, simply run the command &lt;code&gt;sudo apt-get update&lt;/code&gt; in the terminal. This will download and refresh the package list from the Ubuntu repositories.&lt;/p&gt;

&lt;p&gt;To upgrade the packages on your server to the latest available versions, run the command &lt;code&gt;sudo apt-get upgrade&lt;/code&gt;. This will upgrade all installed packages to their latest available versions. It's recommended to perform these updates regularly to keep your Ubuntu server up to date with the latest security patches and bug fixes.&lt;/p&gt;

&lt;p&gt;The below terminal command will update and upgrade your Ubuntu server simultaneously without having you copy and paste the command twice.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. &lt;strong&gt;Remove Unnecessary Installations&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We need to uninstall the default web server, database server, mail transfer agent, and IMAP and POP3 servers if they are already installed and their services are operational because CyberPanel has its own structure and relies on the OpenLiteSpeed server. Before removing the services, you must first stop them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl stop mysql.service
sudo systemctl stop apache2.service
sudo systemctl stop dovecot.service
sudo systemctl stop postfix.service

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you've stopped them, use the following commands to uninstall the installations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get remove -y mysql-server apache2 dovecot-core postfix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reboot the computer after the unnecessary installations have been removed to make the adjustments effective.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shutdown -r now
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. &lt;strong&gt;Install CyberPanel with OpenLiteSpeed&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Step1. Install wget &amp;amp; curl&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;We require wget and curl tools on our system in order to run the script provided by the Cyberpanel developers to install their hosting control panel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install wget curl -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Step2. Run the installation script&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Run the following command. It will start the automatic installation process, which will ask you a few questions about the LiteSpeed version and add-ons you want to install.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sh &amp;lt;(curl &amp;lt;https://cyberpanel.net/install.sh&amp;gt; || wget -O -&amp;lt;https://cyberpanel.net/install.sh&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use this command if you are unable to log in as root for some reason.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo su - -c "sh &amp;lt;(curl &amp;lt;https://cyberpanel.net/install.sh&amp;gt; || wget -O - &amp;lt;https://cyberpanel.net/install.sh&amp;gt;)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Step 3: Select the version of LiteSpeed that you would like to use&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Choose which LiteSpeed version to install. Please make sure you have a license key before choosing LiteSpeed Enterprise. It is free for 1 domain, but you still need to obtain the key. Go to the &lt;a href="https://cyberpanel.net/cyberpanel-enterprise/"&gt;pricing table&lt;/a&gt; to choose your preferred strategy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CyberPanel Installer v2.1.2

RAMcheck : 184/981MB (18.76%)

Diskcheck : 7/30GB (27%) (Minimal 10GBfree space)

1. Install CyberPanelwith OpenLiteSpeed.

2. Install Cyberpanelwith LiteSpeed Enterprise.

3. Exit.

  Please enter the number[1-3]:

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The prompt below will appear if LiteSpeed Enterprise was your choice. Type in your serial number.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;If you do not have any license, you can also use trial license (if server has not used trial license before), type TRIAL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please enter your LiteSpeed WebServer Enterprise serial number:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Step 4: Select options and add-ons&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;A sequence of prompts for the various options and add-ons will be displayed to you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full Service (default Y):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;* * &lt;a href="https://www.powerdns.com/"&gt;PowerDNS 121&lt;/a&gt; - an open-source DNS server
     * &lt;a href="http://www.postfix.org/"&gt;Postfix 57&lt;/a&gt; - open-source mail transfer agent
     * &lt;a href="https://www.pureftpd.org/project/pure-ftpd/"&gt;Pure-FTPd 33&lt;/a&gt; - open-source FTP server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Remote MySQL (default N):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;* * Allow for your Database to be installed on a remote server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CyberPanel Version (default Latest Version):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;* * Press Enter to install the most recent version of CyberPanel, or choose to install a prior version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Password (default “1234567”):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;* * It is recommended that you use “s” to set your own strong password&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.memcached.org/"&gt;Memcached 32&lt;/a&gt; (default Y):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;* * distributed memory object caching system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://redis.io/"&gt;Redis 14&lt;/a&gt; (default Y):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;* * Data structure store that can be used as a database, cache, and message broker in memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://linuxhint.com/linux-kernel-watchdog-explained/"&gt;Watchdog 46&lt;/a&gt; (default Yes):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A kernel watchdog is used to keep track of whether a system is active. It is intended to automatically restart computers that have become stuck owing to irreparable software faults.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Step 5: Installation&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The installation will take place automatically. Around 5 to 10 minutes, depending on how efficient your server is.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Step 6: Finalize Installation&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;You will see the following screen, which displays crucial details about your configuration after the installation is complete. For future use, select it out and copy it somewhere secure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lOxH2ok5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/df8748d3-ab44-4927-bbaa-92c6c334503a%3Fwidth%3D955%26height%3D576" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lOxH2ok5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/df8748d3-ab44-4927-bbaa-92c6c334503a%3Fwidth%3D955%26height%3D576" alt="Cyberpanel Ports to Be Opened.png" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Step 7: Restart Server&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Enter “y” to restart. Or enter “reboot” later after you have performed other desired operations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Would you like to restart your server now? [y/N]:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Step 8: Access CyberPanel&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The following information (which you should edit) will allow you to access CyberPanel following a successful installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;URL: https://&amp;lt;Your Server's IP Address&amp;gt;:8090
Username: admin
Password: &amp;lt;the password you set during installation&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Configure Firewall Rules
&lt;/h3&gt;

&lt;p&gt;For HTTP and HTTPS on Ubuntu 20.04, we must open ports 80 and 443. Open port 7080 for the WebAdmin and port 8090 for the CyberPanel Panel.&lt;/p&gt;

&lt;p&gt;Install ufw if you haven’t installed it already, by typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install ufw -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check whether UFW is turned on or off before setting up firewall rules by typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If UFW isn't already enabled, do so by typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw enable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When UFW is activated, enter the following commands into your terminal window to configure firewall rules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw allow 8090,80,443,25,587,465,110,143,993,53,21/tcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw allow 443,53/udp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw allow 40110:40210/tcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Instead of using ufw, open the above ports in your service provider's firewall if you are a user of a VPS or cloud server.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To ensure that you haven't made any syntax mistakes that would prohibit you from being able to visit the web server over HTTP/HTTPS after configuring this rule, run the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw status verbose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The following command can be used to check the status of your CyberPanel installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl status lscpd.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Please note that there might be a few warnings at the end of your output, you can ignore those warnings.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you notice failed in red next to the status, your installation is broken. It would be best to look for any errors or cautions in your error logs, which are listed in the terminal window you used to install CyberPanel.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Accessing the CyberPanel Web UI
&lt;/h3&gt;

&lt;p&gt;Depending on whether you're using HTTP or HTTPS, you can access CyberPanel now that you've successfully installed it by using either of the following URLs:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="http://your-server-IP-address:8090"&gt;http://your-server-IP-address:8090&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href="https://your-server-IP-address:8090"&gt;https://your-server-IP-address:8090&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Don't forget to substitute your server IP address for &lt;em&gt;&lt;strong&gt;your-server-IP-address&lt;/strong&gt;&lt;/em&gt;. Similarly, if the port number differs from 8090, make sure you use the correct one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You will be greeted with the login screen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3liAxgN---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/40a675ae-bdbd-4c24-a7a4-0fd555475b51%3Fwidth%3D1366%26height%3D592" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3liAxgN---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/40a675ae-bdbd-4c24-a7a4-0fd555475b51%3Fwidth%3D1366%26height%3D592" alt="Login Cyber Panel Web Admin.png" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the Sign In button after entering your admin login information. Please be patient as the CyberPanel UI may take a few seconds to log you in. The primary dashboard, which displays up-to-date server data, should be visible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GQflPnBq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/8a4111e3-9726-478c-9bd7-5727d1d844f1%3Fwidth%3D1366%26height%3D649" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GQflPnBq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/8a4111e3-9726-478c-9bd7-5727d1d844f1%3Fwidth%3D1366%26height%3D649" alt="Install Cyber Panel on Ubuntu 20.04.png" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can view the system load, memory usage by processes and services, disk utilization, the current users logged in via WebAdmin/User Login or Admin Panel, along with what they are doing at any given time, and other information on this dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;Accessing the OpenLiteSpeed&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The OpenLiteSpeed web interface can be accessed simply by typing the server IP address into a browser once the ports have been opened: &lt;em&gt;&lt;strong&gt;&lt;a href="http://your-server-IP-address:7080"&gt;http://your-server-IP-address:7080&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Don't forget to substitute your server IP address for &lt;em&gt;&lt;strong&gt;your-server-IP-address&lt;/strong&gt;&lt;/em&gt;. Similarly, if the port number differs from 8090, make sure you use the correct one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MoIAe1OI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/8cb41329-6fff-4967-af34-e809aaad49f8%3Fwidth%3D1366%26height%3D649" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MoIAe1OI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/8cb41329-6fff-4967-af34-e809aaad49f8%3Fwidth%3D1366%26height%3D649" alt="Open Lite Speed Web Interface.png" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;strong&gt;How to change the password of OpenLiteSpeed and CyberPanel Web Admin&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is how to update the passwords for the OpenLiteSpeed and CyberPanel Admin web interfaces if you have forgotten them.&lt;/p&gt;

&lt;p&gt;Go to the command prompt on your Ubuntu 20.04 system where Cyberpanel is installed.&lt;/p&gt;

&lt;p&gt;For the CyberPanel backend service using port 8090:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd /usr/bin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo adminPass your-new-password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: replace the &lt;strong&gt;your-new-password&lt;/strong&gt; with the password you want to set for CyberPanel Admin users:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For CyberPanel &lt;strong&gt;OpenLiteSpeed&lt;/strong&gt; Web Admin Interface running at port number 7080:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd /usr/local/lsws/admin/misc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ./admpass.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  8. &lt;strong&gt;Troubleshooting&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Even with a straightforward installation process, you may encounter some issues when installing CyberPanel on Ubuntu. Here are a few common issues and their solutions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Error 503 After Installation&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After installing CyberPanel, you can try one of the following steps if you see a 503 error.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check LSCPD Status&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl status lscpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If LSCPD is not running, start LSCPD using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl start lscpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Manually set up virtualevn&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source /usr/local/CyberCP/bin/activate  pip install --ignore-installed -r /usr/local/CyberCP/requirments.txt  deactivate  virtualenv --system-site-packages /usr/local/CyberCP  systemctl restart lscpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Install Logs&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are still having issues after these steps, you can try to find errors in the install logs, which are located at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/var/log/installLogs.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Submit Bug Report&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If all of the above failed, please submit a &lt;a href="https://community.cyberpanel.net/c/bug-report/46"&gt;bug report&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you are unable to resolve an issue on your own, don't hesitate to reach out to the CyberPanel support team for assistance. With their expertise and guidance, you can quickly overcome any issues and start using CyberPanel to manage your websites with ease.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Installing CyberPanel on Ubuntu is a straightforward process that can be completed in just a few steps. By following the steps outlined in this guide, you can quickly set up a powerful web hosting control panel that will enable you to manage your websites, email accounts, and DNS settings with ease.&lt;/p&gt;

&lt;p&gt;As we have discussed, CyberPanel is an excellent solution for anyone who wants to create and manage websites efficiently. With its user-friendly interface, LiteSpeed web server integration, and advanced security features, CyberPanel provides a top-notch hosting experience that is second to none.&lt;/p&gt;

&lt;p&gt;Remember to ensure that your server meets the necessary requirements before attempting to install CyberPanel. If you encounter any issues during the installation process, don't hesitate to consult the CyberPanel documentation or reach out to the CyberPanel support team for assistance.&lt;/p&gt;

&lt;p&gt;Overall, CyberPanel is a powerful and user-friendly web hosting control panel that is well worth considering for your next web hosting project. Its ease of use, speed, and security make it an excellent choice for website owners and developers alike.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow ME
&lt;/h3&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc%5Fstephen123"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cyberpanel</category>
    </item>
    <item>
      <title>How To Install Appwrite on Ubuntu</title>
      <dc:creator>Stephen Michael</dc:creator>
      <pubDate>Thu, 09 Mar 2023 11:24:33 +0000</pubDate>
      <link>https://dev.to/mc-stephen/how-to-install-appwrite-on-ubuntu-2god</link>
      <guid>https://dev.to/mc-stephen/how-to-install-appwrite-on-ubuntu-2god</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Are you looking for a powerful, open-source backend for your web or mobile application? Look no further than Appwrite! Appwrite offers a suite of features such as authentication, database management, and storage solutions that make it easy to develop and deploy robust applications.&lt;/p&gt;

&lt;p&gt;In this tutorial, we will walk you through the steps to install Appwrite on Ubuntu, a popular Linux operating system. With our step-by-step guide, you can have Appwrite up and running on your Ubuntu machine in no time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Original source of this article can be found on &lt;a href="https://axxellanceblog.com/posts/how-to-install-appwrite-on-ubuntu"&gt;Axxellanceblog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whether you are a seasoned developer or just getting started, this tutorial will provide you with the tools and knowledge needed to get started with Appwrite. So, let's dive in and learn how to install Appwrite on Ubuntu!&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Appwrite
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://appwrite.io/"&gt;Appwrite&lt;/a&gt; is an open-source platform that offers a range of backend solutions for web and mobile applications. With Appwrite, developers can easily add robust features to their applications such as authentication, database management, and storage solutions. This platform is designed to be developer-friendly and offers an intuitive interface that makes it easy to get started.&lt;/p&gt;

&lt;p&gt;One of the unique features of Appwrite is its modular design. This platform is designed to be modular, meaning that developers can easily add or remove features as needed. This modular design allows developers to build custom solutions that meet the specific needs of their applications without having to rely on pre-built solutions that may not be a perfect fit.&lt;/p&gt;

&lt;p&gt;Appwrite is also highly scalable, making it ideal for applications of all sizes. Whether you are building a small prototype or a large-scale application, Appwrite can help you manage your backend needs. Plus, since Appwrite is open-source, you can customize it to meet the specific needs of your application, making it a highly flexible and versatile solution.&lt;/p&gt;

&lt;p&gt;If you are a developer looking for a robust backend solution for your application, Appwrite is definitely worth considering. With its modular design, scalability, and flexibility, Appwrite is a powerful platform that can help you bring your application to the next level.&lt;/p&gt;

&lt;h3&gt;
  
  
  What we will talk about
&lt;/h3&gt;

&lt;p&gt;Now let’s talk about what we are going to do in this article in order to successfully install Appwrite on our Ubuntu server.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Updating our ubuntu server #
&lt;/li&gt;
&lt;li&gt;Installing Docker and Docker Compose Plugin #
&lt;/li&gt;
&lt;li&gt;System requirement for Appwrite #
&lt;/li&gt;
&lt;li&gt;Installing Appwrite #
&lt;/li&gt;
&lt;li&gt;Accessing the Appwrite dashboard #
&lt;/li&gt;
&lt;li&gt;Controlling Appwrite Services #
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Updating our ubuntu server
&lt;/h3&gt;

&lt;p&gt;Updating and upgrading an Ubuntu server is a straightforward process. To update the package list on your server, simply run the command &lt;code&gt;sudo apt-get update&lt;/code&gt; in the terminal. This will download and refresh the package list from the Ubuntu repositories.&lt;/p&gt;

&lt;p&gt;To upgrade the packages on your server to the latest available versions, run the command &lt;code&gt;sudo apt-get upgrade&lt;/code&gt;. This will upgrade all installed packages to their latest available versions. It's recommended to perform these updates regularly to keep your Ubuntu server up to date with the latest security patches and bug fixes.&lt;/p&gt;

&lt;p&gt;The below terminal command will update and upgrade your Ubuntu server simultaneously without having you copy and paste the command twice.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Installing Docker and Docker Compose Plugin
&lt;/h3&gt;

&lt;p&gt;Docker is a popular platform that allows developers to build, package, and deploy applications in a portable and scalable manner. If you are using an Ubuntu server, installing Docker is a simple process that can be completed in just a few steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Docker:
To install Docker, run the following command in the terminal:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install docker.io  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install Docker Compose plugin
To install the Docker Compose plugin, run the following command in the terminal:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install docker-compose-plugin  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Start and enable Docker
Once Docker is installed, you can start the Docker service and enable it to start automatically on boot with the following commands:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl start docker  
sudo systemctl enable docker  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Verify Docker installation
To verify that Docker is installed correctly and running, you can run the following command to check the version:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker --version  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker -v  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command should output the version of Docker installed on your server.&lt;/p&gt;

&lt;p&gt;Congratulations! You have successfully installed Docker on your Ubuntu server. Now you can start building and deploying applications in a portable and scalable manner using Docker.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. System requirement for Appwrite
&lt;/h3&gt;

&lt;p&gt;Appwrite is made to function well on deployments of all sizes. Appwrite can be executed on systems with as low as 1 CPU core, 2GB of Memory, and a Docker-compatible operating system.&lt;/p&gt;

&lt;p&gt;Version 2 of Docker Compos is necessary for Appwrite. Make sure your Docker installation has been upgraded to support Composer V2 before installing Appwrite.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Installing Appwrite
&lt;/h3&gt;

&lt;p&gt;A single Docker command can be used to install Appwrite. In essence, this command causes Docker to download and launch the Appwrite services simultaneously.&lt;/p&gt;

&lt;p&gt;In the current directory, the command creates a new Appwrite directory, which serves as the foundation for your Appwrite instance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -it --rm \\
    --volume /var/run/docker.sock:/var/run/docker.sock \\
    --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \\
    --entrypoint="install" \\
    appwrite/appwrite:1.2.1

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Note: The latest version of Appwrite at the time of writing this article is &lt;strong&gt;1.2.1&lt;/strong&gt;, so please do remember to check the official &lt;a href="https://appwrite.io/"&gt;Appwrite website&lt;/a&gt; for the latest version of Appwrite.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Proceed to the following prompt to configure your Appwrite instance's initial configuration choices. At each prompt, you can press Enter to get the default values.&lt;/p&gt;

&lt;p&gt;After that, Docker executes the Docker compose command to finish the setup. Once this is complete, you should see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Appwrite installed successfully
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Accessing the Appwrite dashboard
&lt;/h3&gt;

&lt;p&gt;Once the Appwrite container is running, you can access the Appwrite dashboard by opening a web browser and navigating to &lt;strong&gt;&lt;code&gt;http://server-ip-address&lt;/code&gt;&lt;/strong&gt;. This will take you to the Appwrite setup wizard, where you can create an account and configure Appwrite for your needs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Appwrite uses port (&lt;code&gt;80&lt;/code&gt;), so you need to ensure the server’s firewall provides external access to the HTTP port (&lt;code&gt;80&lt;/code&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once the port has been opened, go to the server's URL or IP address and you should see the Appwrite sign-up form there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vnYkt05J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/3ee25209-2c57-4eba-a53c-61d4954f4226%3Fwidth%3D1920%26height%3D1092" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vnYkt05J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/3ee25209-2c57-4eba-a53c-61d4954f4226%3Fwidth%3D1920%26height%3D1092" alt="Sign up Appwrite" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The root user, or administrator user, for your Appwrite instance, is created using the user information you supply during this first sign-up.&lt;/p&gt;

&lt;p&gt;As soon as the administrator user has been created, you are sent to the main Appwrite dashboard, where you may begin building Appwrite projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ktDTJute--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b2a6d379-d8e8-49e0-a254-00fc11839039%3Fwidth%3D1920%26height%3D945" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ktDTJute--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://directus.axxellanceblog.com/assets/b2a6d379-d8e8-49e0-a254-00fc11839039%3Fwidth%3D1920%26height%3D945" alt="Organizations Appwrite" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Controlling Appwrite Services
&lt;/h3&gt;

&lt;p&gt;You may manage Appwrite's state by using Docker Compose, which is used to run Appwrite. You must be in the Appwrite directory to accomplish this. The Appwrite services can then be managed using the Docker Compose instructions from there.&lt;/p&gt;

&lt;p&gt;Below are a few illustrations of effective Docker Compose commands for using your Appwrite instance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To restart the Appwrite services:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker compose restart  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;To stop the services:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker compose stop  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;To stop and uninstall the services:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker compose down -v  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This option leaves the Docker Compose files for Appwrite intact, so you can reinstall and restart Appwrite with the next command.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To start the services back up:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker compose up -d  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In conclusion, installing Appwrite on an Ubuntu server is a straightforward process that can be completed in just a few steps. With Appwrite, developers can easily build and deploy applications with powerful backend solutions, all while maintaining a high level of security and scalability.&lt;/p&gt;

&lt;p&gt;To install Appwrite on your Ubuntu server, simply follow the steps outlined in this guide. First, ensure that Docker is installed on your server. Then, pull the latest Appwrite Docker image from the Docker Hub repository and start the container. Finally, access the Appwrite dashboard through your web browser and configure it to your needs.&lt;/p&gt;

&lt;p&gt;By following these steps, you can unleash the full potential of Appwrite on your Ubuntu server and take advantage of its powerful features for building and deploying modern applications.&lt;/p&gt;

&lt;p&gt;So what are you waiting for? Get started with Appwrite today and experience the future of application development.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;More Information&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If you're looking for more information on this subject, you might want to check out the following sources. Please be aware that while we have offered these in the hopes that they would be helpful, we are unable to guarantee their validity or timeliness.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://appwrite.io/docs/installation"&gt;https://appwrite.io/docs/installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appwrite.io/docs/production"&gt;https://appwrite.io/docs/production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appwrite.io/docs/environment-variables"&gt;https://appwrite.io/docs/environment-variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appwrite.io/docs/email-delivery"&gt;https://appwrite.io/docs/email-delivery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Follow ME
&lt;/h3&gt;

&lt;p&gt;Hey there! If you're interested in tech or programming articles, you should definitely give me a follow on any of the social media platforms below. I regularly post articles related to tech and programming, and I share valuable resources and insights. Plus, by following me, you'll be able to stay up to date on all the latest and greatest in the world of tech and programming. So, what do you say? Will you give me a follow?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/emeka212"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://twitter.com/mc%5Fstephen123"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/chukwuemeka-michael-a44301175/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://github.com/Emeka212"&gt;GitHub&lt;/a&gt;, &lt;a href="https://medium.com/@mc-stephen"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.facebook.com/axxellance/"&gt;Facebook&lt;/a&gt;, and my blog's &lt;a href="https://www.facebook.com/profile.php?id=100083784692436"&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>appwrite</category>
    </item>
  </channel>
</rss>
