<?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>Forem: MINHCT</title>
    <description>The latest articles on Forem by MINHCT (@trinhcamminh).</description>
    <link>https://forem.com/trinhcamminh</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%2F927686%2Fbaea8ded-c25b-495a-a3b0-35e7b0808303.jpeg</url>
      <title>Forem: MINHCT</title>
      <link>https://forem.com/trinhcamminh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/trinhcamminh"/>
    <language>en</language>
    <item>
      <title>Exploring Google’s Gemma-2 Model: The Future of Machine Learning and Application Integration</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Mon, 01 Jul 2024 05:56:59 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/exploring-googles-gemma-2-model-the-future-of-machine-learning-and-application-integration-4pmj</link>
      <guid>https://forem.com/trinhcamminh/exploring-googles-gemma-2-model-the-future-of-machine-learning-and-application-integration-4pmj</guid>
      <description>&lt;p&gt;In recent developments, Google has unveiled the Gemma-2 model, a significant step forward in the field of machine learning. This blog post will define what Gemma is, distinguish it from Google’s previous Gemini model, and explore the practical applications of Gemma in real-world tasks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhucbcxi6nscbdzqgo9bu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhucbcxi6nscbdzqgo9bu.png" alt="Gemma-Google" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 What is the Gemma Model?
&lt;/h2&gt;

&lt;p&gt;The Gemma-2 model is the latest innovation in Google’s suite of machine learning tools. Designed to enhance natural language understanding and generation, Gemma-2 utilizes advanced neural network architectures to deliver highly accurate and contextually relevant outputs. It is built on the principles of deep learning and leverages vast amounts of data to continually improve its performance.&lt;/p&gt;

&lt;p&gt;Gemma is currently available in two sizes: 9B and 27B (parameter sizes), and each model has two variants, base (pre-trained) and instruction-tuned.&lt;/p&gt;

&lt;p&gt;Google has filtered out personal information and other sensitive data from training sets to make the pre-trained models safe and reliable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gwnlsmsjdsdnktycvj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gwnlsmsjdsdnktycvj4.png" alt="Gemma evaluate" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Built for developers and researchers
&lt;/h2&gt;

&lt;p&gt;Getting started with Gemma is straightforward due to its integration with popular tools like Hugging Face Transformers, Kaggle, NVIDIA NeMo, and MaxText. Deployment on Google Cloud is also simple through Vertex AI and Google Kubernetes Engine (GKE). Additionally, Gemma is optimized for AI hardware platforms, including NVIDIA GPUs and Google Cloud TPUs.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Gemma vs. Gemini
&lt;/h2&gt;

&lt;p&gt;Gemini is available to end customers through Web, Android, and iOS apps, while Gemma models are for developers. Developers can access Gemini via APIs or Vertex AI, making it a closed model. Gemma, being open-source, is accessible to developers, researchers, and businesses for experimentation and integration (through HuggingFace, Kaggle, …).&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Additional Information
&lt;/h2&gt;

&lt;p&gt;The company also plans to release more variants in the future as they expand the Gemma family such as CodeGemma, RecurrentGemma and PaliGemma — each offering unique capabilities for different AI tasks and easily accessible through integrations with partners like Hugging Face, NVIDIA and Ollama.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 How to use and fine-tuning Gemma with your own applications
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ Setup
&lt;/h3&gt;

&lt;p&gt;Select the Colab runtime&lt;/p&gt;

&lt;p&gt;To complete this tutorial, you’ll need to have a Colab runtime with sufficient resources to run the Gemma model. In this case, you can use a T4 GPU:&lt;/p&gt;

&lt;p&gt;In the upper-right of the Colab window, select ▾ (Additional connection options).&lt;br&gt;
Select Change runtime type.&lt;br&gt;
Under Hardware accelerator, select T4 GPU.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Gemma setup
&lt;/h3&gt;

&lt;p&gt;Before we dive into the tutorial, let’s get you set up with Gemma:&lt;/p&gt;

&lt;p&gt;Hugging Face Account: If you don’t already have one, you can create a free Hugging Face account by clicking here.&lt;br&gt;
Gemma Model Access: Head over to the Gemma model page and accept the usage conditions.&lt;br&gt;
Colab with Gemma Power: For this tutorial, you’ll need a Colab runtime with enough resources to handle the Gemma 2B model. Choose an appropriate runtime when starting your Colab session.&lt;br&gt;
Hugging Face Token: Generate a Hugging Face access (preferably write permission) token by clicking here. You'll need this token later in the tutorial.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ Configure your HF token
&lt;/h3&gt;

&lt;p&gt;Add your Hugging Face token to the Colab Secrets manager to securely store it.&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ Instantiate and Fine-tuning the model
&lt;/h3&gt;

&lt;p&gt;The code for Instantiate and fine-tuning the model is extensive and is therefore included in this &lt;a href="https://colab.research.google.com/drive/1-gL7j2mORaKRlYnX3zGgTmfFhEDzzb7O?usp=sharing"&gt;notebook&lt;/a&gt;. Please refer to it for detailed instructions and reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Conclusion
&lt;/h2&gt;

&lt;p&gt;The full &lt;a href="https://colab.research.google.com/drive/1-gL7j2mORaKRlYnX3zGgTmfFhEDzzb7O?usp=sharing"&gt;notebook&lt;/a&gt; for this article is available here.&lt;/p&gt;

&lt;p&gt;If you want to find more interesting content like this from me, please don’t hesitate to visit my &lt;a href="https://minhct.netlify.app/"&gt;Portfolio Website&lt;/a&gt; and &lt;a href="https://github.com/TrinhCamMinh"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lastly, if this post helped you stay up-to-date with technology or was useful in anyway, please leave me a 👏. It means a lot to me 🥰.&lt;/p&gt;

&lt;p&gt;Feel free to connect with me on &lt;a href="https://www.linkedin.com/in/tr%E1%BB%8Bnh-c%E1%BA%A9m-minh-34b369274/"&gt;LinkedIn&lt;/a&gt; for more updates and content!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2vwwu8wqxvt6yhc2w3k0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2vwwu8wqxvt6yhc2w3k0.png" alt="TrinhCamMinh's logo" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>model</category>
      <category>ai</category>
      <category>gemma</category>
    </item>
    <item>
      <title>What’s new in CSS and UI: I/O 2023 Edition</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Mon, 15 May 2023 15:57:57 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/whats-new-in-css-and-ui-io-2023-edition-3oe</link>
      <guid>https://forem.com/trinhcamminh/whats-new-in-css-and-ui-io-2023-edition-3oe</guid>
      <description>&lt;p&gt;The past few months have ushered in a golden era for web UI. New platform capabilities have landed with tight cross-browser adoption that support more web capabilities and customization features than ever.&lt;/p&gt;

&lt;p&gt;Here are 5 of the most exciting and impactful features that landed recently or are coming soon that I found most fascinating:&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Style Queries
&lt;/h2&gt;

&lt;p&gt;The container query specification also allows you to query the style values of a parent container. This is currently partially implemented in Chrome 111, where you can use CSS custom properties to apply container styles.&lt;/p&gt;

&lt;p&gt;The following example show us how to use style queries.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfgwj221lp1wzuc58gb2.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfgwj221lp1wzuc58gb2.png" alt="Codepen Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code pen example: &lt;a href="https://codepen.io/web-dot-dev/pen/KKxzYQx" rel="noopener noreferrer"&gt;https://codepen.io/web-dot-dev/pen/KKxzYQx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is just the beginning for style queries. In the future, we’ll have Boolean queries to determine if a custom property value exists and reduce code repetition, and currently in discussion are range queries to apply styles based on a range of values. This would make it possible to apply the styles shown here using a percent value for the chance of rain or cloud cover.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can learn more and see more demos in &lt;a href="https://developer.chrome.com/blog/style-queries/" rel="noopener noreferrer"&gt;blog post on style queries&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  👉 :has()
&lt;/h2&gt;

&lt;p&gt;Speaking of powerful, dynamic features, the :has() selector is one of the most powerful new CSS capabilities landing in modern browsers. With :has(), you can apply styles by checking to see if a parent element contains the presence of specific children, or if those children are in a specific state. This means, we essentially now have a parent selector.&lt;/p&gt;

&lt;p&gt;Building on the container query example, you can use :has() to make the components even more dynamic. In it, an item with a "star" element gets a gray background applied to it, and an item with a checked checkbox a blue background.&lt;/p&gt;

&lt;p&gt;But this API isn’t limited to parent selection. You can also style any children within the parent. For example, the title is bold when the item has the star element present. This is accomplished with .item:has(.star) .title. Using the :has() selector gives you access to parent elements, child elements, and even sibling elements, making this a really flexible API, with new use cases popping up every day.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To prevent rendering performance slowdowns in large DOM trees, we recommend that you scope this selector as closely as possible. For example, using :has() to check for matches on the root html element would be slower than checking for matches in a nav bar or in a card element with a smaller tree.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  👉nth-of syntax
&lt;/h2&gt;

&lt;p&gt;The web platform now has more advanced nth-child selection. The advanced nth-child syntax gives a new keyword (“of”), which lets you use the existing micro syntax of An+B, with a more specific subset within which to search.&lt;/p&gt;

&lt;p&gt;If you use regular nth-child, such as :nth-child(2) on the special class, the browser will select the element that has the class special applied to it, and also is the second child. This is in contrast to :nth-child(2 of .special) which will first pre-filter all .special elements, and then pick the second one from that list.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bfh3pnx1diwhzwcstl9.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bfh3pnx1diwhzwcstl9.png" alt="Codepen Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code pen example: &lt;a href="https://codepen.io/web-dot-dev/pen/oNMRaQq" rel="noopener noreferrer"&gt;https://codepen.io/web-dot-dev/pen/oNMRaQq&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Dynamic viewport units
&lt;/h2&gt;

&lt;p&gt;One common problem web developers face today is accurate and consistent full-viewport sizing, especially on mobile devices. As a developer you want 100vh (100% of the viewport height) to mean “be as tall as the viewport”, but the vh unit doesn’t account for things like retracting navigation bars on mobile, so sometimes it ends up too long and causes scroll.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnn612mt4ei0lao3ujjn.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnn612mt4ei0lao3ujjn.png" alt="Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To resolve this issue, they now have new unit values on the web platform, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small viewport height and width (or svh and svw), which represent the smallest active viewport size.&lt;/li&gt;
&lt;li&gt;Large viewport height and width (lvh and lvw), which represent the largest size.&lt;/li&gt;
&lt;li&gt;Dynamic viewport height and width (dvh and dvw).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dynamic viewport units change in value when the additional dynamic browser toolbars, such as the address at the top or tab bar at the bottom, are visible and when they are not.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffqxxrp7nf9iuyif3g6zj.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffqxxrp7nf9iuyif3g6zj.png" alt="Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Nesting
&lt;/h2&gt;

&lt;p&gt;CSS nesting, something folks love from Sass, and one of the top CSS developer requests for years, is finally landing on the web platform. Nesting allows developers to write in a more succinct, grouped format that reduces redundancy.&lt;/p&gt;

&lt;p&gt;You can also nest Media Queries, which also means you can nest Container Queries. In the following example, a card is changed from a portrait layout to a landscape layout if there’s enough width in it’s container:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx49wg62l0a8iqox9nuby.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx49wg62l0a8iqox9nuby.png" alt="Nesting Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The layout adjustment to flex occurs when the container has more (or equal to) 480px of inline space available. The browser will simply apply that new display style when the conditions are met.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For more information and examples, check out our post on &lt;a href="https://developer.chrome.com/articles/css-nesting/" rel="noopener noreferrer"&gt;CSS nesting&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  👉 Scoped CSS
&lt;/h2&gt;

&lt;p&gt;CSS scoped styles allow developers to specify the boundaries for which specific styles apply, essentially creating native namespacing in CSS. Before, developers relied on 3rd party scripting to rename classes, or specific naming conventions to prevent style collision, but soon, you can use &lt;a class="mentioned-user" href="https://dev.to/scope"&gt;@scope&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here, we’re scoping a .title element to a .card. This would prevent that title element from conflicting with any other .title elements on the page, like a blog post title or other heading.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl308be9bt1atffri886c.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl308be9bt1atffri886c.png" alt="Codepen Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see &lt;a class="mentioned-user" href="https://dev.to/scope"&gt;@scope&lt;/a&gt; with scoping limits together with @layer in this live demo: &lt;a href="https://codepen.io/web-dot-dev/pen/MWPVGPL" rel="noopener noreferrer"&gt;https://codepen.io/web-dot-dev/pen/MWPVGPL&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  😘 Conclusion
&lt;/h2&gt;

&lt;p&gt;Keep up with all the latest landings in CSS and HTML right here on &lt;a href="https://developer.chrome.com/" rel="noopener noreferrer"&gt;developer.chrome.com&lt;/a&gt; and check out the &lt;a href="https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGxIV8Lt8gF_79Z334LQ6h" rel="noopener noreferrer"&gt;I/O videos&lt;/a&gt; for more web landings.&lt;/p&gt;

&lt;p&gt;If you want to find more interesting contents like this from me. Please don’t hesitate to visit my &lt;a href="https://minhct.netlify.app/" rel="noopener noreferrer"&gt;Portfolio Website&lt;/a&gt; and &lt;a href="https://github.com/trinhcamminh" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; link for it.&lt;/p&gt;

&lt;p&gt;And lastly if this post helped you keep up to date with technology or at least helped you a little bit, please leave me a 👏. That means to me a lot 🥰.&lt;/p&gt;

&lt;p&gt;Thank you very much and have a good day😍.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmw51g5fmwb03nbam5aou.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmw51g5fmwb03nbam5aou.png" alt="Logo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Top 4 JavaScript Notification Libraries</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Tue, 11 Apr 2023 13:29:26 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/top-4-javascript-notification-libraries-487</link>
      <guid>https://forem.com/trinhcamminh/top-4-javascript-notification-libraries-487</guid>
      <description>&lt;p&gt;JavaScript notification libraries make developing notifications for web application much simpler. However, choosing one is challenging since each library has unique features.&lt;/p&gt;

&lt;p&gt;In this article, I will discuss 4 popular JavaScript notification libraries that you can use to improve use experience and keep users informed about changes in your web app.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. SweetAlert
&lt;/h2&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fczzmiozo274dnuxjxrje.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fczzmiozo274dnuxjxrje.png" alt="SweetAlert"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sweetalert.js.org/" rel="noopener noreferrer"&gt;SweetAlert&lt;/a&gt; is a gorgeous notification library you can use to replace built-in alert function in your JavaScript applications. You can include buttons and icons, alter the text’s color, and even add alerts that adjust in response to user clicks.&lt;/p&gt;

&lt;p&gt;Installation&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install --save sweetalert&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;code&gt;yarn add sweetalert&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. React-Toastify
&lt;/h2&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F332oe1f7amwd2ka1dl7k.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F332oe1f7amwd2ka1dl7k.png" alt="React-Toastify"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/fkhadra/react-toastify#readme" rel="noopener noreferrer"&gt;React-Toastify&lt;/a&gt; is one of the best React toast notification libraries available. You can use it to add toasts to your application within 10 seconds. In addition, it has some amazing features that will attract many developers.&lt;/p&gt;

&lt;p&gt;Installation&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install --save react-toastify&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;code&gt;yarn add react-toastify&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Notie
&lt;/h2&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqntl3aanp87nnpyf37o7.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqntl3aanp87nnpyf37o7.png" alt="Notie"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jaredreich.com/notie/" rel="noopener noreferrer"&gt;Notie&lt;/a&gt; is another widely used JavaScript notification library free of dependencies. You can use it to create alerts, confirmation prompts, input prompts, data selection prompts, and more.&lt;/p&gt;

&lt;p&gt;Installation&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install notie&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Push.js
&lt;/h2&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkvlvevyzs9mkzi1jrjz.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkvlvevyzs9mkzi1jrjz.png" alt="Push.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Installation&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install push.js --save&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion 😘
&lt;/h2&gt;

&lt;p&gt;In this article, I discussed 4 JavaScript notification libraries and their unique features. I hope this list will help you choose the best notification library for your project.&lt;/p&gt;

&lt;p&gt;You can refer to my &lt;a href="https://minhct.netlify.app/" rel="noopener noreferrer"&gt;personal&lt;/a&gt; website and &lt;a href="https://github.com/trinhcamminh" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; repo to find more interesting contents like this.&lt;/p&gt;

&lt;p&gt;Thank you for reading and do not forget to leave me a like 👋 if this article was useful to you, that means to me a lot 💘.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0sgvvqo8nk9n4f7dth6.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0sgvvqo8nk9n4f7dth6.png" alt="MINHCT logo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Spell Check on Your Linux Terminal</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Mon, 23 Jan 2023 15:21:06 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/spell-check-on-your-linux-terminal-5a27</link>
      <guid>https://forem.com/trinhcamminh/spell-check-on-your-linux-terminal-5a27</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hi everyone, it’s me again. In this article, I will guide you guys on how to check spelling right into our Linux terminal. The advantage for this is that we don’t need the internet to use some online tools like Grammarly or google translate… Cool, right? So, let’s jump into it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use spell check in Linux
&lt;/h2&gt;

&lt;p&gt;Well in order to do this, we will use the package name &lt;code&gt;aspell&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Aspell is an interactive spell checker which checks the spelling via standard input or by reading a specific file. Also, it can read and check spelling in markdown or HTML files too.&lt;/p&gt;

&lt;p&gt;To check if your terminal is currently having aspell or not, run this command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aspell --help&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cX3uTiiZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n2065t7l33texhf151zw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cX3uTiiZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n2065t7l33texhf151zw.png" alt="aspell help" width="880" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you encounter some error, then definitely you do not have it at the moment. Don’t worry, run this command to install it to your terminal.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt install aspell -Y&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How To Use Aspell to Check the Spelling of Word one-by-one?
&lt;/h2&gt;

&lt;p&gt;Super straightforward, all you need to do is pass this line of code to your terminal then type the word that need to be checked.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aspell -a&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hsBmHW0O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e976hxot2r1x1sj75rkt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hsBmHW0O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e976hxot2r1x1sj75rkt.png" alt="spell check word" width="880" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, when I type the wrong word helo, aspell automatically recommend for us all the correct word that related to helo. In this case, hello is the correct one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Check the Spelling of a Word from a File
&lt;/h2&gt;

&lt;p&gt;Simply execute this command&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aspell -c [fileName]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example, let spell check a file name index.txt.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aspell -c index.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The following screen will display to your terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v_mpgmIr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1hbmfvb3q88448j0mgoj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v_mpgmIr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1hbmfvb3q88448j0mgoj.png" alt="aspell" width="880" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, each incorrect word will be highlighted by aspell, to correct that wrong word, simply press the number of word that we want to replace. Number 1 is the best choice for this usecase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eYfqxVZE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m90n5x7hhskuz9piu703.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eYfqxVZE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m90n5x7hhskuz9piu703.png" alt="aspell" width="880" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that the second incorrect word will be selected next, and you can do the same with the above example.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Check Spelling on Other Files?
&lt;/h2&gt;

&lt;p&gt;Like I mentioned before, aspell can be used for other files such as HTML or markdown… All you need to do is execute this command line.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aspell check --mode=[mode_type] [file_name]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The supported modes are &lt;code&gt;none&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;email&lt;/code&gt;, &lt;code&gt;markdown&lt;/code&gt;, &lt;code&gt;html&lt;/code&gt;, &lt;code&gt;tex&lt;/code&gt;, &lt;code&gt;texinfo&lt;/code&gt;, and &lt;code&gt;nroff&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Let’s see a quick example of fixing the spelling mistakes on a markdown file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aspell -c --mode=markdown spellcheck.md&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sIbcaWxB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3n23fiet5o5z7ujshir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sIbcaWxB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3n23fiet5o5z7ujshir.png" alt="aspell" width="880" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧡 Conclusion
&lt;/h2&gt;

&lt;p&gt;And that all for this blog, if this was helpful to you, please leave me a like👋 and follow me 😘. That will help me a lot.&lt;/p&gt;

&lt;p&gt;If you want more exciting content like this, then you can refer to my &lt;a href="https://minhct.netlify.app/"&gt;portfolio&lt;/a&gt; website or my &lt;a href="https://github.com/trinhcamminh"&gt;Github&lt;/a&gt; for more detail 😎.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ERCAbeBR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i291ltifo0aaq197sse9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ERCAbeBR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i291ltifo0aaq197sse9.png" alt="my logo" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>linux</category>
      <category>opensource</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Multi-Line Truncation with Tailwind CSS</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Thu, 19 Jan 2023 10:55:15 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/multi-line-truncation-with-tailwind-css-571f</link>
      <guid>https://forem.com/trinhcamminh/multi-line-truncation-with-tailwind-css-571f</guid>
      <description>&lt;p&gt;Hi there, in this article I’ll show you guys how to truncate a text using an official Tailwind CSS plugin named &lt;a href="https://github.com/tailwindlabs/tailwindcss-line-clamp" rel="noopener noreferrer"&gt;line-clamp&lt;/a&gt;. Let jump into it.&lt;/p&gt;

&lt;p&gt;Let assume we have 3 cards which look like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe55umhrnz898c5wztqyn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe55umhrnz898c5wztqyn.png" alt="card component" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, their text length is not the same which is generally not what we want. So, in order to solve this, we could use the default truncate utility in Tailwind CSS. Let have a look how our card gonna looks like if we use this default property.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypjcltq1d1nh8jmkeqmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypjcltq1d1nh8jmkeqmg.png" alt="card component" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, our text now just has one line, and all the overflow text was hidden. What happened if we want our text show the first 3 lines and then truncate the other lines. Bad news that we cannot do it with the default truncate in Tailwind CSS, but recently Tailwind has introduced to us an official plugin named line-clamp which can help us to achieve what we want above. Now let has a look of how to use it.&lt;/p&gt;

&lt;p&gt;First, we need to install that plugin via &lt;strong&gt;&lt;em&gt;npm&lt;/em&gt;&lt;/strong&gt;, note that your computer must install &lt;strong&gt;&lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;&lt;em&gt;nodejs&lt;/em&gt;&lt;/a&gt;&lt;/strong&gt; to use it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -D @tailwindcss/line-clamp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then add the plugin to your &lt;strong&gt;&lt;em&gt;tailwind.config.js&lt;/em&gt;&lt;/strong&gt; file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fusnjy9yn947s0h4ic3cr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fusnjy9yn947s0h4ic3cr.png" alt="apply plugin to tailwind config file" width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that it, now we can replace the truncate class with &lt;code&gt;line-clamp-{n}&lt;/code&gt;. In our case, we want the text to show its first three line so it must be &lt;code&gt;line-clamp-3&lt;/code&gt;. See the result below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39o4kb14pxiqo3ee1mun.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39o4kb14pxiqo3ee1mun.png" alt="final result" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yup we have done it. In case you guys want to show 5 lines of text then hide it just type &lt;code&gt;line-clamp-5&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  😎 Conclusion
&lt;/h2&gt;

&lt;p&gt;There are many cool plugins left in Tailwind CSS, you can refer to &lt;a href="https://tailwindcss.com/docs/plugins" rel="noopener noreferrer"&gt;here&lt;/a&gt; to have a look at it.&lt;/p&gt;

&lt;p&gt;If this post was useful to you, please leave me a like 👋 and follow me, that help me a lot 😘.&lt;/p&gt;

&lt;p&gt;Thank you so much for reading this, if you want more interesting topic like this you can visit my &lt;a href="https://minhct.netlify.app/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt; website or my &lt;a href="https://github.com/trinhcamminh" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6f6133szyt7aorb8hwo4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6f6133szyt7aorb8hwo4.png" alt="my logo" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>40 Essential Linux Commands That Every Developer Should Know</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Sun, 15 Jan 2023 15:43:36 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/40-essential-linux-commands-that-every-developer-should-know-22hn</link>
      <guid>https://forem.com/trinhcamminh/40-essential-linux-commands-that-every-developer-should-know-22hn</guid>
      <description>&lt;p&gt;Linux is a family of open-source Unix operating systems based on the Linux Kernel. They include Ubuntu, Fedora, Debian, openSUSE, and Red Hat.&lt;/p&gt;

&lt;p&gt;When operating Linux, you need to use a shell — a program that gives you access to the operating system’s services. Most Linux distribution use a graphical user interface (GUI), making them beginner — friendly.&lt;/p&gt;

&lt;p&gt;However, I recommend utilizing the command-line interface (CLI) since it’s quicker and offers more control.&lt;/p&gt;

&lt;p&gt;So, in case you want to utilize Linux, learning the command utilities or commands will go a long way. For that reason, in this article I will discuss the 40 basics commands to help you guys use your own Linux effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤷‍♂️ What is a Linux Command?
&lt;/h2&gt;

&lt;p&gt;A Linux command is a program or utility that runs on the CLI — a console that interacts with the system via texts and processes.&lt;/p&gt;

&lt;p&gt;Here is what Linux command look like&lt;/p&gt;

&lt;p&gt;&lt;code&gt;commandName [option(s)] [parameter(s)]&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🕵️‍♂️ The 40 Most Commonly Used Linux Commands
&lt;/h2&gt;

&lt;h3&gt;
  
  
  👍 sudo command
&lt;/h3&gt;

&lt;p&gt;Short for superuser do, sudo is one of the most widespread basic Linux commands that lets you perform tasks that require administrative or root permission.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo [command]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 pwd command
&lt;/h3&gt;

&lt;p&gt;Use the pwd command to find the path that you are currently working in.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 cd command
&lt;/h3&gt;

&lt;p&gt;To navigate through the Linux files and directories, use the cd command to solve this task. Depending on your current location, it requires either the full path or the directory name.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd [path/directory]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 ls command
&lt;/h3&gt;

&lt;p&gt;The ls command lists all files and directories inside your current path (include all the hidden folder or file if you are using flag -a)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 cat command
&lt;/h3&gt;

&lt;p&gt;Concatenate, or cat is one of the most frequently used in Linux commands. It lists and writes file to the standard output. In simple term, we print the content inside that file to our terminal.&lt;br&gt;
&lt;code&gt;cat [fileName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 cp command
&lt;/h3&gt;

&lt;p&gt;Cp stand for copy, what is does is copy files or directories and their contents. In this case, it will copy all the contents inside file 1 to file 2.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp file1 file2&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 mv command
&lt;/h3&gt;

&lt;p&gt;The primary use of this command is to move and rename files and directories. In this case, it will rename the file 1 to file 2.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mv [file1] [file2]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 mkdir command
&lt;/h3&gt;

&lt;p&gt;Use the mkdir to create one or multiple directories at once. But note that the use who executes this command must have root or administrative permission.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir [folderName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 rmdir and rm -r command
&lt;/h3&gt;

&lt;p&gt;To permanently delete an empty folder, use the rmdir command to achive this. Now in order to delete a folder which is not empty, we can use the latter command.&lt;br&gt;
rmdir [emptyFolderName]&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rm -r [notEmptyFolderName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 rm command
&lt;/h3&gt;

&lt;p&gt;This command is used to delete a file inside a specific directory.&lt;br&gt;
&lt;code&gt;rm [fileName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 touch command
&lt;/h3&gt;

&lt;p&gt;The touch command allows you to create an empty file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;touch [fileName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 grep command
&lt;/h3&gt;

&lt;p&gt;Locate command can find a file in the database system. In this example, the command will search for blue in note.txt.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep blue note.txt&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 df command
&lt;/h3&gt;

&lt;p&gt;Use the df command to report the system's disk space usage, show in percentage and kilobyte (KB).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;df -h&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 du command
&lt;/h3&gt;

&lt;p&gt;If you want to check how much space a file or directory takes up, use the du command.&lt;br&gt;
&lt;code&gt;du [file/directory]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 head command
&lt;/h3&gt;

&lt;p&gt;The head command allows you to view the first ten lines of a specific file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;head [fileName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 tail command
&lt;/h3&gt;

&lt;p&gt;Opposite to the head command, the tail views the last 10 lines inside a file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tail [fileName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 diff command
&lt;/h3&gt;

&lt;p&gt;Short for different, the diff command compares two contents of a file line by line. After analyzing them, it will display the parts that do not match.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;diff [file1] [file2]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 tar command
&lt;/h3&gt;

&lt;p&gt;The tar command archives multiple files into a TAR file - a common Linux format similar to ZIP.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tar [achiveFile] [fileBeArchived]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 chmod command
&lt;/h3&gt;

&lt;p&gt;chmod is a common command that modifies a file or directory's read (r), write (w), execute (e) permission. In Linux, each file is associated with three user classes - owner, group and others.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod [permission] [fileName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 chown command
&lt;/h3&gt;

&lt;p&gt;The chown command lets you change the ownership of a file, directory to a specified username.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chown [owner]:[group] [fileName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 jobs command
&lt;/h3&gt;

&lt;p&gt;A job is a process that the shell starts. The jobs command will display all the running processes along with their statuses.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;jobs [jobID]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 kill command
&lt;/h3&gt;

&lt;p&gt;Use the kill command to terminate an unresponsive program manually.&lt;br&gt;
To kill a prgram, you must know its process identification number (PID). If you don't know the PID, run the first command to do it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ps ux&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kill [PID]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 ping command
&lt;/h3&gt;

&lt;p&gt;The ping command is one of the most used basic Linux commands for checking whether a network or server is readable.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ping [IP/hostName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 wget command
&lt;/h3&gt;

&lt;p&gt;This command line lets you download the files from the internet using HTTP, HTTPS and FTP protocols.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wget [url]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 uname command
&lt;/h3&gt;

&lt;p&gt;The uname or unix name command will print detailed information about your Linux system and hardware.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;uname&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 top command
&lt;/h3&gt;

&lt;p&gt;The top command in Linux Terminal will display all the running processes and a dynamic real-time view of current system. It sums up the resource utilization, from CPU to memory usage.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;top&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 man command
&lt;/h3&gt;

&lt;p&gt;The man command provides a user manual of any commands or utilities user can use in Terminal, including the name, description and options.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;man [commandName]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 echo command
&lt;/h3&gt;

&lt;p&gt;The echo command is a built-in utility that displays a line of text or string using the standard output.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo [string]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👍 apt-get command
&lt;/h3&gt;

&lt;p&gt;apt-get command line tool for handling Advanced Package Tool (APT) in Linux. It lets you retrieve information and bundles from authenticated sources to manage, update, remove and install software and its dependencies. Think APT like npm in NodeJS.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt-get [command]&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💕 Conclusion
&lt;/h2&gt;

&lt;p&gt;Linux command let you perform basic and administrative tasks quickly and effectively from the Terminal.&lt;br&gt;
Learning Linux basic command is essential to interact with your machine.&lt;/p&gt;

&lt;p&gt;I hope this article has helped you learning Linux command. If you have any question, do not hesitate to drop a comment below 😉.&lt;/p&gt;

&lt;p&gt;Again, thank you very much for giving this blog a read and don't forget to leave me a clap 👏 and follow me for more interesting content like this 😘.&lt;/p&gt;

&lt;p&gt;In case you want to find more information about me, you can visit my &lt;a href="https://minhct.netlify.app/"&gt;portfolio&lt;/a&gt; website or my &lt;a href="https://github.com/trinhcamminh"&gt;GitHub&lt;/a&gt; profile 💛.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ReactJS — Complete roadmap</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Thu, 12 Jan 2023 05:55:16 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/reactjs-complete-roadmap-559i</link>
      <guid>https://forem.com/trinhcamminh/reactjs-complete-roadmap-559i</guid>
      <description>&lt;p&gt;Web development is a fascinating area to explore, learn and understand about. But learning without a specific roadmap can lead to many dangers that lead to bad consequence. That why in this article, I’ll give you a roadmap for learning ReactJS, one of the best UI frameworks. If you are thinking of starting ReactJS and looking to get a step-by-step approach, this article is for you&lt;/p&gt;

&lt;p&gt;ReactJS (aka React) is an open-source JavaScript-based user interface library. It is insanely popular in web development communities today. Also, if you are a ReactJS developer who is wondering what advance topic to tackle next, give this article a read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do you need a roadmap to learn React?
&lt;/h2&gt;

&lt;p&gt;Learning something new does not have to be very difficult. If you have a map or a guide that lets you know where you have to move next, then things much be smoother for you.&lt;/p&gt;

&lt;p&gt;It may also help you decide on alternative routes, how far to get a stretch, and when to pause.&lt;/p&gt;

&lt;p&gt;Keep in mind that you may feel a bit overwhelmed looking at this roadmap the first time. But no worry, you don’t need to learn all of these in a specific time, just take it slow since everything need time to be completed. I have spent a lot of time to know about these concepts so just relax and enjoy yourselves ok, just remember that there is no fast way led to success😁.&lt;/p&gt;

&lt;p&gt;As ReactJS is very popular, you may find some resemblance here many other suggested roadmaps out there. But they aren’t exactly the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking the roadmap down into small phases
&lt;/h2&gt;

&lt;p&gt;You’ll need to be familiar with a few things (other than basic JavaScript knowledge) to accelerate your React learning at full speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✈ Git Version Control
&lt;/h3&gt;

&lt;p&gt;Git is a version control tool that helps you manage your source code better. It doesn’t have a direct relationship with ReactJS or any programming languages. But instead, it helps if you learn its basic so you can leverage of the development ecosystem.&lt;/p&gt;

&lt;p&gt;Git is easy to learn when you focus on a few fundamental things like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to create a repository&lt;/li&gt;
&lt;li&gt;How to stage/unstage your changes&lt;/li&gt;
&lt;li&gt;How to commit your change to a specific repo&lt;/li&gt;
&lt;li&gt;How to push code to the remote repo&lt;/li&gt;
&lt;li&gt;How to resolve when conflict happen&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Along with GIT, you will also need to know how to use a Git-based repository management service like GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚓 HTML
&lt;/h3&gt;

&lt;p&gt;HTML provide the structure of a web page. You will need to use the HTML structure in a new syntax called JSX when you code in ReactJS.&lt;/p&gt;

&lt;p&gt;If you wonder do I need to master all HTML concepts, the answer is you don’t instead all you need to know is just a basic thing about HTML such as all the most-used tags and its purpose and that all.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚍 CSS
&lt;/h3&gt;

&lt;p&gt;When it comes to CSS, the scope is sky-high. However, as HTML you just need to focus on some basic CSS concepts like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Box model&lt;/li&gt;
&lt;li&gt;Flexbox layout&lt;/li&gt;
&lt;li&gt;Grid layout&lt;/li&gt;
&lt;li&gt;Position&lt;/li&gt;
&lt;li&gt;Pseudo-classes&lt;/li&gt;
&lt;li&gt;Basic selector&lt;/li&gt;
&lt;li&gt;Class&lt;/li&gt;
&lt;li&gt;Id&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🏍 JavaScript
&lt;/h3&gt;

&lt;p&gt;I should warn you that this is the biggest obstacle during your learning process :))&lt;/p&gt;

&lt;p&gt;Just kidding, JS is huge but in order to learn ReactJS good you need to know the following concepts from JS:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Variable declaration (let, const, var)&lt;/li&gt;
&lt;li&gt;Template Literals&lt;/li&gt;
&lt;li&gt;Functions &amp;amp; Arrow Functions&lt;/li&gt;
&lt;li&gt;Object Destructuring&lt;/li&gt;
&lt;li&gt;Spread and Rest operators&lt;/li&gt;
&lt;li&gt;Module Import and Export&lt;/li&gt;
&lt;li&gt;A bit of knowledge about asynchronous concept (Promise, Callback or Async/Await)&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🚀 How to Deploy, Host and Make your App Public
&lt;/h3&gt;

&lt;p&gt;It won’t be fun if your cool project just can only be used by you right. So, you should know how to deploy the app and make it visible to the real world.&lt;/p&gt;

&lt;p&gt;Tools like &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; or &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt; make it easy to deploy your project just within a few second.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you want how to use Netlify to host your ReactJS project, then you are welcome to check my &lt;a href="https://dev.to/trinhcamminh/how-to-deploy-a-react-project-to-a-free-web-host-server-2pjp"&gt;article&lt;/a&gt; here 🧡.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What to Learn as a Beginner to React
&lt;/h2&gt;

&lt;p&gt;Let’s now focus on what you need to learn at the minimum to start enjoying React in practice. These are foundational pieces, so make sure to give enough time and hands-on effort to truly understand the concepts.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧨 Understand What React is
&lt;/h3&gt;

&lt;p&gt;You should understand what is so special about ReactJS. Well in my opinion, one of the signatures when using ReactJS is component term.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎁 Learn How to Set Up your Development Environment
&lt;/h3&gt;

&lt;p&gt;There are multiple ways to do it, at first you can use CDN in your script file. But in the long-term, you can use a tool like Create React App or Vite (I recommend using this tool 😋).&lt;/p&gt;

&lt;h3&gt;
  
  
  🎆 Learn about JSX
&lt;/h3&gt;

&lt;p&gt;JSX is a syntax that looks like HTML but also has the power of JavaScript. In general, JSX is the combine between HTML and JavaScript. This syntax helps developers write UI logic with all necessary elements like data fetching, conditions, looping, expression, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎄 Lean about React Components
&lt;/h3&gt;

&lt;p&gt;Components are the heart of ReactJS applications. We create independent components that are completely reusable and isolated.&lt;/p&gt;

&lt;p&gt;In ReactJS, you can create components using JavaScript classes or functions (the latter is more widespread than the first one now a day).&lt;/p&gt;

&lt;h3&gt;
  
  
  👓 State in React
&lt;/h3&gt;

&lt;p&gt;State is the data private to your component. We do not share states across components. The “state” of your component that you use to render information and modify information.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧶 Props in React
&lt;/h3&gt;

&lt;p&gt;In real-world programming, you will need components to interact with each other. States are private to a specific component, but you need to pass that state’s data between different components. That’s where Props come into the picture.&lt;/p&gt;

&lt;p&gt;How to Move from Beginner to Intermediate ReactJS Developer&lt;br&gt;
Let’s now understand what it takes to move from a beginner to intermediate level with React.&lt;/p&gt;

&lt;h3&gt;
  
  
  💄 Styling in React
&lt;/h3&gt;

&lt;p&gt;We have to admit that we all want our application to look fresh and clean right? You can use plain old CSS to style your project, that’s completely okay. Or you can use some popular CSS framework as an alternative such as Bootstrap 5, Tailwind CSS. The choice is entirely yours 😘.&lt;/p&gt;

&lt;h3&gt;
  
  
  😎 Form Handling in React
&lt;/h3&gt;

&lt;p&gt;Handling forms is an essential requirement in web applications. You need to understand how to handle form elements in the ReactJS way.&lt;/p&gt;

&lt;p&gt;For instance, you can use the react-hook-form library to build forms.&lt;/p&gt;

&lt;h3&gt;
  
  
  🍔 Data Handling in React
&lt;/h3&gt;

&lt;p&gt;This is crucial part of application development. You need to learn how to use the fetch API libraries like node-fetch or axios to interact with APIs and handle data in your project.&lt;/p&gt;

&lt;h3&gt;
  
  
  🍿 Virtual DOM concepts in React
&lt;/h3&gt;

&lt;p&gt;ReactJS use the Virtual DOM to decide when and what to update in the actual DOM for rendering. It means that ReactJS is smart enough to know which elements in our DOM is changed and only update that changed part.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧀 React Hooks
&lt;/h3&gt;

&lt;p&gt;Hooks is one the most important definition that you really need to know when learning ReactJS since you will face this concept all the time when playing with React.&lt;/p&gt;

&lt;h3&gt;
  
  
  🍖 How to Move from Intermediate to Advanced React Developer
&lt;/h3&gt;

&lt;p&gt;In this phase, you will deal with a few expert-level topics. You need to know these concepts only when you’re working on more extensive application development using ReactJS.&lt;/p&gt;

&lt;p&gt;Note that, you can learn each of these advance concepts whenever you’re ready. Also, you don’t have to learn them all.&lt;/p&gt;

&lt;h3&gt;
  
  
  😴 Lazy Loading in React
&lt;/h3&gt;

&lt;p&gt;ReactJS support code splitting. It is a way to lazy load what you need by the current use. It also avoid producing a large build bundle. The dynamic import feature is the best way to include code-splitting in a React app.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎢 Routing in React
&lt;/h3&gt;

&lt;p&gt;Routing is required for multi-page applications. It is also helpful to bookmark a particular page or traverse back-and-forth in the application using the browser’s back button.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;react-router&lt;/code&gt; is the most popular routing solution that helps with declarative routing.&lt;/p&gt;

&lt;h2&gt;
  
  
  It’s 2022 — Should I Still Learn React?
&lt;/h2&gt;

&lt;p&gt;Another frequently asked question — and the answer is YES. React is ever-growing, and the community is also growing quickly. There is no reason to stay back.&lt;/p&gt;

&lt;p&gt;Also, ReactJS is a base for many other popular frameworks like Next.js…&lt;/p&gt;

&lt;h2&gt;
  
  
  🎈 Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope you found this post helpful. Please plan to get enough practice as you start your learning process.&lt;/p&gt;

&lt;p&gt;If this post was useful to you, please leave me a like 💛 and follow me, that helps me a lot 😍 😘.&lt;/p&gt;

&lt;p&gt;Also, if you want more interesting content like this from me you can have quick tour to my &lt;a href="https://minhct.netlify.app/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt; and &lt;a href="https://github.com/trinhcamminh" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; 💛💛💛.&lt;/p&gt;

&lt;p&gt;Again, thank you so much for reading this blog and have a good day 😘.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0aehm6ajmpu8y3xztch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0aehm6ajmpu8y3xztch.png" alt="my logo" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How to deploy a React project to a free web host server</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Wed, 11 Jan 2023 12:43:30 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/how-to-deploy-a-react-project-to-a-free-web-host-server-2pjp</link>
      <guid>https://forem.com/trinhcamminh/how-to-deploy-a-react-project-to-a-free-web-host-server-2pjp</guid>
      <description>&lt;p&gt;In this article, we’ll learn how to deploy our ReactJS project to a free web host server which called &lt;a href="https://www.netlify.com/"&gt;Netlify&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you want to create an editor in any of your React project using CKEditor 5 (include image upload with no server-side configuration and many cool features…) then checkout my article &lt;a href="https://dev.to/trinhcamminh/using-ckeditor-5-in-reactjs-include-upload-image-and-many-cool-functionality-38km"&gt;here&lt;/a&gt; ❤.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Drag and Drop the Build Folder in Netlify
&lt;/h2&gt;

&lt;p&gt;The fastest and easy way to deploy a React application is just to drag and drop the builder folder in Netlify.&lt;/p&gt;

&lt;p&gt;To create a builder folder, just execute one of two codes below from the command line from your project folder.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm run build&lt;/code&gt; or &lt;code&gt;yarn build&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once the build folder is created, you just need to drop the folder in the drop area under the sites menu&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oN5ILkUx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ehavlwcudpyc7i7zfaqp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oN5ILkUx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ehavlwcudpyc7i7zfaqp.gif" alt="drag and drop" width="706" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to deploy an App to Netlify from a GitHub repository
&lt;/h2&gt;

&lt;p&gt;This is my favorite way of deploying my React project to server since it super simple and convenience.&lt;/p&gt;

&lt;p&gt;Every time you push any changes to GitHub repository, it will automatically be deployed to Netlify. Also, you can rollback your site if you wish.&lt;/p&gt;

&lt;p&gt;If you already have a repository on GitHub, then all you need to do is just to connect it.&lt;/p&gt;

&lt;p&gt;Login to your Netlify account, access the dashboard page and click on the &lt;code&gt;New site from Git&lt;/code&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Rjyd7gRA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xzeswnj9q7qynfggf143.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rjyd7gRA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xzeswnj9q7qynfggf143.png" alt="netlify home" width="700" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the GitHub button and connect to your GitHub repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8zs5ot89--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l4semcn784kcafox1kzi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8zs5ot89--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l4semcn784kcafox1kzi.png" alt="git provider" width="880" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It will open a new tab, make sure the popup in enabled in your browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KykrUjlF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qfnoxb1ht4bxmd09wq52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KykrUjlF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qfnoxb1ht4bxmd09wq52.png" alt="select repository" width="880" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Search for the GitHub repository in the search box. Once you selected, you will see the following screen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t4-pGdvt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yw2k5t8ij0oxl51k3l0e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t4-pGdvt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yw2k5t8ij0oxl51k3l0e.png" alt="deploy repository" width="710" height="796"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All these configs are fine, you don’t need to change anything.&lt;/p&gt;

&lt;p&gt;Now click on Deploy site button, once clicked you will see the Site deploy in progress message.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G_VyRfDY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a3vifaz9l5vydmw1746v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G_VyRfDY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a3vifaz9l5vydmw1746v.png" alt="deploying process" width="880" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll have to wait a minute until the process done. Once deployed is completed, you will see the following screen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fyzfe1hw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yvvyzx81fnu2bj9uqbtl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fyzfe1hw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yvvyzx81fnu2bj9uqbtl.png" alt="deployed app" width="880" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the link and you will be surprised. Tada, we have done it 😜&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bVgubYf7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkn008dgubbi2jih92zm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bVgubYf7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkn008dgubbi2jih92zm.gif" alt="deployed app" width="706" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Awesome, now anytime you make any change to your repository, Netlify will automatically update your site according to your change, cool right.&lt;/p&gt;

&lt;p&gt;Now the next section will be more excited.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to change your site name in Netlify
&lt;/h2&gt;

&lt;p&gt;At the moment, our domain quite ugly since it’s very hard to remember for anyone, especially when you have a lot of deployed projects. Luckily, Netlify provide us an easy way to solve this problem.&lt;/p&gt;

&lt;p&gt;Click on the &lt;code&gt;Site setting&lt;/code&gt; button displayed on the Site overview section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vM9M6ceL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zn1iltgxvq9rck6xyowb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vM9M6ceL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zn1iltgxvq9rck6xyowb.png" alt="site setting" width="880" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The click on the &lt;code&gt;change site name&lt;/code&gt; button and enter your new name. Save it and now you can access your site with that new changed name.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2h-3lbrt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2kqb3c1qf7ldlnoejse7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2h-3lbrt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2kqb3c1qf7ldlnoejse7.gif" alt="change site name" width="692" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thanks for reading ❤
&lt;/h2&gt;

&lt;p&gt;If this post was useful to you, please leave me a like and follow me that help me a lot 😁.&lt;/p&gt;

&lt;p&gt;Also, if you want to find more interesting content like this from me you can refer to my &lt;a href="https://minhct.netlify.app/"&gt;portfolio&lt;/a&gt; website or my &lt;a href="https://github.com/trinhcamminh"&gt;GitHub&lt;/a&gt; in case you want to see all the project that I have done 💋.&lt;/p&gt;

&lt;p&gt;Again, thank you so much and have a good day 😘😘.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YvZxETx2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xoaqifxb4f4i18k1d16x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YvZxETx2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xoaqifxb4f4i18k1d16x.png" alt="my logo" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>netlify</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to good at studying programming</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Sat, 07 Jan 2023 14:02:18 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/how-to-goot-at-studying-programming-287o</link>
      <guid>https://forem.com/trinhcamminh/how-to-goot-at-studying-programming-287o</guid>
      <description>&lt;p&gt;Studying something new is not always easy for me, especially programming. The first time I went into my university, I have no idea about a thing that we call code, and I thought that university is a good way to help me master at coding and become a quality coder. But over two years studying programming, trust me the only person can help you good at coding is not university, lecturer or friends but &lt;strong&gt;yourself&lt;/strong&gt;. I realized that the best study method that can help you become a high-quality coder is something that we call &lt;strong&gt;self-study&lt;/strong&gt;. But &lt;strong&gt;self-study&lt;/strong&gt; is not easy to have it since it took me 1 year to good at it. That why I decide to write this blog to help you start your &lt;strong&gt;self-study&lt;/strong&gt; journey by specify 5 things that you must have to become a self-study master.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Specify a clear study roadmap
&lt;/h2&gt;

&lt;p&gt;Knowing exactly what we have to learn is the best way to save tons of your time since you know that what are you studying for and know that we are in the right way. You can specify your own roadmap by searching Google, YouTube or just ask your expert. And trust me, make your study plan clearly is helping you become a passionate learner.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Start making your study schedule
&lt;/h2&gt;

&lt;p&gt;Now have a clear understand at what we need to achieve our goal is good, but not enough because right now we need to have a clear self-study schedule. Doing this is a really good way to manage your time properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Choose a quality course, resource
&lt;/h2&gt;

&lt;p&gt;Self-learning doesn't mean that we have to learn anything by your-self, you can self-study by joining an online course or watch a specific online tutorial. And &lt;strong&gt;YouTube&lt;/strong&gt; is one of the best platforms to find such a high-quality online tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Always curious
&lt;/h2&gt;

&lt;p&gt;During the self-study process, remember to always be curious because curious is just help us have a better understanding about it. &lt;em&gt;Never hesitate to ask Google why we have to type this line of code like this but not like that.&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  5.  Practice is the key.
&lt;/h2&gt;

&lt;p&gt;I have seen many of my friends learning a lot but never practice, that why when they meet some practical case, they don't know how to utilize their knowledge into it. So, remember practice is the key, do not studying so much without applying them into any practical project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;That are 5 basic things you need to have if you want to be good at self-study.&lt;/p&gt;

&lt;p&gt;If this post was useful to you, please leave a like and comment below that help me a lot &amp;lt;3.&lt;/p&gt;

&lt;p&gt;Refer to my &lt;a href="https://github.com/trinhcamminh"&gt;GitHub&lt;/a&gt; and &lt;a href="https://minhct.netlify.app/"&gt;portfolio&lt;/a&gt; website for more amazing content just like this &amp;lt;3&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>career</category>
    </item>
    <item>
      <title>Using CKEditor 5 in ReactJS (include upload image and many cool functionalities)</title>
      <dc:creator>MINHCT</dc:creator>
      <pubDate>Tue, 03 Jan 2023 15:36:57 +0000</pubDate>
      <link>https://forem.com/trinhcamminh/using-ckeditor-5-in-reactjs-include-upload-image-and-many-cool-functionality-38km</link>
      <guid>https://forem.com/trinhcamminh/using-ckeditor-5-in-reactjs-include-upload-image-and-many-cool-functionality-38km</guid>
      <description>&lt;p&gt;Hi there, in this article I will guide you guys how to use CKEditor v5 in React project (you can also use this in MERN STACK project). Not only include many cool features in our editor, but I’m also help you guys to make the upload image feature work without any configuration in server-side. So let jump into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create React project
&lt;/h2&gt;

&lt;p&gt;First of all, we’re going to create our React application by using Vite or you can use create-react-app if you want to. In case you don’t know how to setup React project by using &lt;a href="https://vitejs.dev/" rel="noopener noreferrer"&gt;Vite&lt;/a&gt;, all you need to do is going to their documentation and follow the instruction, it quite straightforward.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5mqoavj2y9ymktsro7w.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5mqoavj2y9ymktsro7w.png" alt="Image React Application"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Download CKEditor
&lt;/h2&gt;

&lt;p&gt;The second thing you need to do is download our editor and place it into our project. Go to &lt;a href="https://ckeditor.com/ckeditor-5/online-builder/" rel="noopener noreferrer"&gt;CKEditor online builder page&lt;/a&gt;, choose what type of editor we want to use, in this case we going to pick classic editor as our editor. Pick any plugins that you prefer but in order to make our editor more luxury, I recommend you choose all :))). But note that, if you want to have a change of uploading image to editor from our device, remember to choose a plugin named &lt;strong&gt;&lt;em&gt;Base64 upload adapter&lt;/em&gt;&lt;/strong&gt;. But you will note that the add button did not available for us to choose, so to solve this we have to remove &lt;strong&gt;&lt;em&gt;CKBox&lt;/em&gt;&lt;/strong&gt; plugin from our editor. One you finish set up process, just click next and download editor to our computer. And that all for this second step. Let move into the most important step that we’re waiting for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using CKEditor in React Application
&lt;/h2&gt;

&lt;p&gt;Inside our React project, create a folder name ckeditor5 &lt;strong&gt;next to&lt;/strong&gt; src folder like this&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7nus1mzs0x1co7g4mv6.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7nus1mzs0x1co7g4mv6.png" alt="Image folder structure"&gt;&lt;/a&gt;&lt;br&gt;
Now, extract the .zip folder that we have downloaded before and move all the content inside the &lt;strong&gt;ckeditor5&lt;/strong&gt; folder. Now our folder structure will be look like this&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmro4iq9xf15852zqxnb.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmro4iq9xf15852zqxnb.png" alt="Image folder structure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Great we’re almost there, now according to the documentation, we have to install ckeditor component for React. So let do this by type this line of code in the terminal&lt;br&gt;
&lt;code&gt;npm install @ckeditor/ckeditor5-react @ckeditor/ckeditor5-build-classis&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And also execute this&lt;br&gt;
&lt;code&gt;npm add file:./ckeditor5&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Initialize CKEditor component
&lt;/h2&gt;

&lt;p&gt;Create a folder name &lt;strong&gt;Components&lt;/strong&gt; inside our &lt;strong&gt;src&lt;/strong&gt; folder and create a file name &lt;strong&gt;TextEditor.jsx&lt;/strong&gt; inside it. Import our ckeditor component in this file&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkv02327ar18m9lbvx635.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkv02327ar18m9lbvx635.png" alt="Image Create Editor Component"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Import TextEditor component to file App.jsx and use it
&lt;/h2&gt;

&lt;p&gt;One more step to complete our mission, go to the file &lt;strong&gt;App.jsx&lt;/strong&gt; and import our TextEditor component we have created before&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi09gmcw39f5brnwb85q9.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi09gmcw39f5brnwb85q9.png" alt="Image Import Editor Component"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now open the terminal type&lt;br&gt;
&lt;code&gt;npm run dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or if you’re using create-react-app&lt;br&gt;
&lt;code&gt;npm start&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And here is our final result&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfn1uwuuqhdvsp3g4es2.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfn1uwuuqhdvsp3g4es2.png" alt="Image CKEditor 5 with ReactJS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Thanks for reading my article ❤, if you have any problem just comment below and I will help you.&lt;/p&gt;

&lt;p&gt;If the post was useful to you, leave me a clap 👏 and follow me, it helps me a lot. Thank you ❤️&lt;/p&gt;

&lt;p&gt;Checkout my &lt;a href="https://github.com/trinhcamminh" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; &amp;amp; &lt;a href="https://minhct.netlify.app/" rel="noopener noreferrer"&gt;portfolio website&lt;/a&gt; for more amazing content.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyohsbo06dnwul0xn6r5w.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyohsbo06dnwul0xn6r5w.png" alt="Image MINHCT logo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
