<?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: Ian Gabriel Oliveira de Sousa</title>
    <description>The latest articles on DEV Community by Ian Gabriel Oliveira de Sousa (@ianoliv).</description>
    <link>https://dev.to/ianoliv</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%2F423063%2Fc590f980-8a81-4e8a-ac29-1046fd2cfe67.jpeg</url>
      <title>DEV Community: Ian Gabriel Oliveira de Sousa</title>
      <link>https://dev.to/ianoliv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ianoliv"/>
    <language>en</language>
    <item>
      <title>How to Create a Web Crawler with Puppeteer and Bun</title>
      <dc:creator>Ian Gabriel Oliveira de Sousa</dc:creator>
      <pubDate>Wed, 05 Jun 2024 17:13:36 +0000</pubDate>
      <link>https://dev.to/ianoliv/how-to-create-a-web-crawler-with-puppeteer-and-bun-4hmh</link>
      <guid>https://dev.to/ianoliv/how-to-create-a-web-crawler-with-puppeteer-and-bun-4hmh</guid>
      <description>&lt;p&gt;Web crawling is a powerful technique used to gather data from websites. Whether you're collecting data for research, monitoring prices, or scraping content, building a web crawler can be incredibly useful. In this post, I'll walk you through the process of creating a web crawler using Puppeteer and Bun, two popular JavaScript tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction to Puppeteer and Bun
&lt;/h3&gt;

&lt;p&gt;Puppeteer is a Node.js library that provides a high-level API to control headless Chrome or Chromium browsers. It's perfect for web scraping and automating browser tasks.&lt;/p&gt;

&lt;p&gt;Bun is a fast, modern JavaScript runtime similar to Node.js but optimized for speed and performance. It's designed to work seamlessly with existing JavaScript libraries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step-by-Step Guide to Building a Web Crawler
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Setting Up Your Environment&lt;br&gt;
First, ensure you have Node.js installed. Then, install Bun by following the instructions on the Bun website.&lt;/p&gt;

&lt;p&gt;Next, create a new project directory and initialize it with Bun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Copy code&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;web-crawler
&lt;span class="nb"&gt;cd &lt;/span&gt;web-crawler
bun init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Installing Puppeteer&lt;br&gt;
Install Puppeteer using Bun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Copy code&lt;/span&gt;
bun add puppeteer
bun node_modules/puppeteer/install.js &lt;span class="c"&gt;# -&amp;gt; the secret sauce &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Writing the Web Crawler Script&lt;br&gt;
Create a new JavaScript file, crawler.js, and start by importing Puppeteer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Copy code&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;puppeteer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;puppeteer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;puppeteer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;newPage&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;goto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Extract data&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;evaluate&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;h1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;innerText&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this script, we launch a headless browser, navigate to a website, and extract the text of an &lt;/p&gt;
&lt;h1&gt; element.

&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Running the Script&lt;br&gt;
Run your script using Bun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;## Copy code&lt;/span&gt;
bun run crawler.js
&lt;span class="c"&gt;## You should see data printed in your terminal.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Creating a web crawler with Puppeteer and Bun is straightforward and efficient. Puppeteer handles the browser automation, while Bun provides a fast and modern runtime for your JavaScript code. This combination makes for a powerful tool in your web scraping toolkit.&lt;/p&gt;

&lt;p&gt;For more advanced use cases, you can extend your script to handle navigation, interact with page elements, and scrape more complex data structures. Happy crawling!&lt;/p&gt;

&lt;h4&gt;
  
  
  About the Author
&lt;/h4&gt;

&lt;p&gt;I am Ian, a practiced computer programmer with a strong interest in website design and automation. I have worked extensively with Web Technologies and always follow the latest in technological advancements enabling me to help others create effective scalable applications.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Create a Web Crawler with Puppeteer and Bun</title>
      <dc:creator>Ian Gabriel Oliveira de Sousa</dc:creator>
      <pubDate>Wed, 05 Jun 2024 17:13:36 +0000</pubDate>
      <link>https://dev.to/ianoliv/how-to-create-a-web-crawler-with-puppeteer-and-bun-357l</link>
      <guid>https://dev.to/ianoliv/how-to-create-a-web-crawler-with-puppeteer-and-bun-357l</guid>
      <description>&lt;p&gt;Web crawling is a powerful technique used to gather data from websites. Whether you're collecting data for research, monitoring prices, or scraping content, building a web crawler can be incredibly useful. In this post, I'll walk you through the process of creating a web crawler using Puppeteer and Bun, two popular JavaScript tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction to Puppeteer and Bun
&lt;/h3&gt;

&lt;p&gt;Puppeteer is a Node.js library that provides a high-level API to control headless Chrome or Chromium browsers. It's perfect for web scraping and automating browser tasks.&lt;/p&gt;

&lt;p&gt;Bun is a fast, modern JavaScript runtime similar to Node.js but optimized for speed and performance. It's designed to work seamlessly with existing JavaScript libraries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step-by-Step Guide to Building a Web Crawler
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Setting Up Your Environment&lt;br&gt;
First, ensure you have Node.js installed. Then, install Bun by following the instructions on the Bun website.&lt;/p&gt;

&lt;p&gt;Next, create a new project directory and initialize it with Bun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Copy code&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;web-crawler
&lt;span class="nb"&gt;cd &lt;/span&gt;web-crawler
bun init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Installing Puppeteer&lt;br&gt;
Install Puppeteer using Bun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Copy code&lt;/span&gt;
bun add puppeteer
bun node_modules/puppeteer/install.js &lt;span class="c"&gt;# -&amp;gt; the secret sauce &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Writing the Web Crawler Script&lt;br&gt;
Create a new JavaScript file, crawler.js, and start by importing Puppeteer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Copy code&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;puppeteer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;puppeteer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;puppeteer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;newPage&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;goto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Extract data&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;evaluate&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;h1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;innerText&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this script, we launch a headless browser, navigate to a website, and extract the text of an &lt;/p&gt;
&lt;h1&gt; element.

&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Running the Script&lt;br&gt;
Run your script using Bun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;## Copy code&lt;/span&gt;
bun run crawler.js
&lt;span class="c"&gt;## You should see data printed in your terminal.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Creating a web crawler with Puppeteer and Bun is straightforward and efficient. Puppeteer handles the browser automation, while Bun provides a fast and modern runtime for your JavaScript code. This combination makes for a powerful tool in your web scraping toolkit.&lt;/p&gt;

&lt;p&gt;For more advanced use cases, you can extend your script to handle navigation, interact with page elements, and scrape more complex data structures. Happy crawling!&lt;/p&gt;

&lt;h4&gt;
  
  
  About the Author
&lt;/h4&gt;

&lt;p&gt;I am Ian, a practiced computer programmer with a strong interest in website design and automation. I have worked extensively with Web Technologies and always follow the latest in technological advancements enabling me to help others create effective scalable applications.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Building a Decentralized Web Application with IPFS: A Step-by-Step Guide</title>
      <dc:creator>Ian Gabriel Oliveira de Sousa</dc:creator>
      <pubDate>Wed, 30 Aug 2023 19:41:57 +0000</pubDate>
      <link>https://dev.to/ianoliv/building-a-decentralized-web-application-with-ipfs-a-step-by-step-guide-3l22</link>
      <guid>https://dev.to/ianoliv/building-a-decentralized-web-application-with-ipfs-a-step-by-step-guide-3l22</guid>
      <description>&lt;p&gt;In an era where data privacy and ownership have become paramount, decentralized technologies are gaining ground. The InterPlanetary File System (IPFS) offers a revolutionary way to build web applications that are not only decentralized but also resilient, efficient, and censorship-resistant. This blog post will delve into IPFS and explore how to build a decentralized web application using this groundbreaking technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding IPFS
&lt;/h2&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%2F87hxjaz9dezuw4dja3xw.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%2F87hxjaz9dezuw4dja3xw.png" alt="HTTPS vs IPFS" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IPFS, or InterPlanetary File System, is a protocol and network designed to create a peer-to-peer method of storing and sharing hypermedia in a distributed file system. Unlike traditional HTTP, IPFS uses content-addressable storage, which means that files are identified by their content, not their location. This eliminates the need for central servers and ensures data integrity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Your Development Environment
&lt;/h2&gt;

&lt;p&gt;Before building your decentralized web application, you must set up your development environment. Install the IPFS software and any necessary libraries for your chosen programming language. Familiarize yourself with the IPFS command-line interface (CLI) to interact with the network.&lt;br&gt;
&lt;a href="https://docs.ipfs.tech/quickstart/publish_cli/#contents"&gt;Install IPFS CLI&lt;/a&gt;&lt;br&gt;
obs: &lt;a href="https://docs.ipfs.tech/install/ipfs-desktop/"&gt;Install IPFS Node&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Designing Your Web Application
&lt;/h2&gt;

&lt;p&gt;Begin by outlining the design and features of your decentralized web application. Consider how you'll break down your application into smaller components and files that can be stored on IPFS. This step is crucial as it will help you determine which files must be stored, shared, and updated on the IPFS network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Storing Data on IPFS
&lt;/h2&gt;

&lt;p&gt;IPFS creates a unique hash for each file based on its content. To store data on IPFS, add your files to the IPFS network using the CLI or libraries available in your programming language. This process generates a hash ,the CID (Content Identifier)  that can be used to retrieve the file from any node on the network.&lt;br&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%2Fwy67xl2cmon39fj2nxpu.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%2Fwy67xl2cmon39fj2nxpu.png" alt="IPFS CID Process" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the User Interface (UI)
&lt;/h2&gt;

&lt;p&gt;Develop the user interface of your web application as you would with any traditional app. However, instead of referencing files by URLs, you'll reference them using their IPFS hashes. This enables your app to fetch data from the IPFS network directly, making it decentralized and reducing reliance on centralized servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing IPFS Integration
&lt;/h2&gt;

&lt;p&gt;Integrate IPFS functionality into your application's code. This involves utilizing the IPFS APIs to interact with the network programmatically. You can upload new files, fetch existing ones, and manage the content seamlessly. Since IPFS is a peer-to-peer network, nodes might come and go, so handle connection and retrieval errors gracefully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing and Debugging
&lt;/h2&gt;

&lt;p&gt;Thoroughly test your decentralized web application. Check if the files are loading correctly from IPFS, and ensure the app behaves as expected. Use IPFS diagnostic tools to identify and address any performance or connectivity issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment and Maintenance
&lt;/h2&gt;

&lt;p&gt;When deploying your application, run your own IPFS node or use a reliable node hosting service to ensure consistent availability of your application's files. Regularly monitor your application and update files as needed. As IPFS is a rapidly evolving technology, staying up-to-date with new releases and best practices is crucial.&lt;/p&gt;

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

&lt;p&gt;Building a decentralized web application with IPFS opens new possibilities for data ownership, privacy, and censorship resistance. By leveraging the power of IPFS, developers can create applications that are both innovative and aligned with the principles of decentralization. Follow the steps outlined in this guide to embark on your journey of crafting a genuinely decentralized web application. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>web3</category>
      <category>ipfs</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Getting Started with Tekton Pipelines: A Comprehensive Guide</title>
      <dc:creator>Ian Gabriel Oliveira de Sousa</dc:creator>
      <pubDate>Sat, 17 Dec 2022 19:53:36 +0000</pubDate>
      <link>https://dev.to/ianoliv/getting-started-with-tekton-pipelines-a-comprehensive-guide-5bog</link>
      <guid>https://dev.to/ianoliv/getting-started-with-tekton-pipelines-a-comprehensive-guide-5bog</guid>
      <description>&lt;p&gt;Tekton Pipelines is an open-source project that provides a cloud-native, Kubernetes-based pipeline system for continuous integration and delivery (CI/CD). In this post, we will explore what Tekton Pipelines is, why it is useful, and how to get started using it for your CI/CD workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Tekton Pipelines?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tekton Pipelines is a flexible and extensible CI/CD system that is designed to run on top of Kubernetes. It is based on the Kubernetes resource model and uses custom resource definitions (CRDs) to define pipeline tasks and workflows.&lt;/p&gt;

&lt;p&gt;One of the key benefits of Tekton Pipelines is that it is designed to be easy to use and integrate with other tools and systems. It has a rich set of pre-built integrations and a plugin system that allows you to extend its functionality with custom components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Use Tekton Pipelines?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are several reasons why you might want to consider using Tekton Pipelines for your CI/CD workflow:&lt;/p&gt;

&lt;p&gt;It is cloud-native and runs natively on Kubernetes, which makes it easy to deploy and scale.&lt;br&gt;
It has a simple, declarative syntax for defining pipelines, which makes it easy to understand and maintain.&lt;br&gt;
It has a rich set of built-in integrations and a plugin system that allows you to extend its functionality with custom components.&lt;br&gt;
It is designed to be flexible and extensible, allowing you to customize and tailor your CI/CD workflow to your specific needs.&lt;br&gt;
Getting Started with Tekton Pipelines&lt;/p&gt;

&lt;p&gt;To get started with Tekton Pipelines, you will need to have a Kubernetes cluster set up and have the kubectl command-line tool installed on your local machine.&lt;/p&gt;

&lt;p&gt;Install Tekton Pipelines: To install Tekton Pipelines, you can use the tkn command-line tool. You can download the tkn binary from the Tekton Pipelines releases page (&lt;a href="https://github.com/tektoncd/pipeline/releases"&gt;https://github.com/tektoncd/pipeline/releases&lt;/a&gt;) and add it to your PATH, or you can install it using a package manager like homebrew (on macOS) or scoop (on Windows).&lt;/p&gt;

&lt;p&gt;Create a pipeline resource: A pipeline resource defines a set of tasks that are executed in a specific order. To create a pipeline resource, you can use the tkn pipeline create command and specify the name of your pipeline and the tasks it should contain.&lt;/p&gt;

&lt;p&gt;Run your pipeline: Once you have created a pipeline resource, you can run it using the tkn pipeline start command. This will trigger the execution of the tasks in your pipeline and provide real-time updates on their progress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tekton Pipelines is a powerful and flexible CI/CD system that is designed to run on top of Kubernetes. By following the steps outlined in this post, you can get started using Tekton Pipelines to automate your CI/CD workflow and streamline your software delivery process.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>tekton</category>
      <category>cicd</category>
      <category>community</category>
    </item>
    <item>
      <title>Deno: how to start use it</title>
      <dc:creator>Ian Gabriel Oliveira de Sousa</dc:creator>
      <pubDate>Sun, 16 Oct 2022 21:08:51 +0000</pubDate>
      <link>https://dev.to/ianoliv/deno-how-to-start-use-it-2n6m</link>
      <guid>https://dev.to/ianoliv/deno-how-to-start-use-it-2n6m</guid>
      <description>&lt;p&gt;Deno is a new JavaScript/TypeScript runtime with secure defaults and a great developer experience. It's built on V8 and Rust.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to install
&lt;/h2&gt;

&lt;p&gt;You can install Deno using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://deno.land/x/install/install.sh | sh

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to use
&lt;/h2&gt;

&lt;p&gt;After installing Deno, you can create a file with the .ts extension and write your code.&lt;/p&gt;

&lt;p&gt;After saving the file, you can run the code by typing the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno run file.ts

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to use a module
&lt;/h2&gt;

&lt;p&gt;You can use a module by typing the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno run &lt;span class="nt"&gt;--allow-net&lt;/span&gt; https://deno.land/std/examples/welcome.ts

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to use a module in your code
&lt;/h2&gt;

&lt;p&gt;You can use a module in your code by typing the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;serve&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://deno.land/std/http/server.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;serve&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:8000/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;respond&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello World&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to install a module
&lt;/h2&gt;

&lt;p&gt;You can install a module by typing the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--allow-net&lt;/span&gt; &lt;span class="nt"&gt;--allow-read&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--allow-write&lt;/span&gt; &lt;span class="nt"&gt;--allow-env&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--allow-run&lt;/span&gt; &lt;span class="nt"&gt;--unstable&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
https://deno.land/x/velociraptor/cli.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to use a package manager in your code
&lt;/h2&gt;

&lt;p&gt;You can use a package manager in your code by typing the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;vpm&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://deno.land/x/vpm/vpm.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;vpm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;install&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://deno.land/x/velociraptor/cli.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

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

&lt;/div&gt;



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