<?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: Shabin-k</title>
    <description>The latest articles on DEV Community by Shabin-k (@shabink).</description>
    <link>https://dev.to/shabink</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%2F794721%2F298734e2-4f50-4db3-a37c-b9fedda003e2.jpg</url>
      <title>DEV Community: Shabin-k</title>
      <link>https://dev.to/shabink</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shabink"/>
    <language>en</language>
    <item>
      <title>The Ultimate Roadmap to Mastering Data Structures</title>
      <dc:creator>Shabin-k</dc:creator>
      <pubDate>Thu, 30 May 2024 09:38:12 +0000</pubDate>
      <link>https://dev.to/shabink/the-ultimate-roadmap-to-mastering-data-structures-1o94</link>
      <guid>https://dev.to/shabink/the-ultimate-roadmap-to-mastering-data-structures-1o94</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Data structures are the building blocks of efficient algorithms and software development. Mastering them is crucial for anyone looking to excel in computer science, software engineering, or any field that involves programming. This roadmap will guide you through the essential steps to learn and master data structures effectively.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Understand the Basics
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1.1 What Are Data Structures?
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Data structures are ways of organizing and storing data in a computer so that it can be accessed and modified efficiently. They are crucial for writing efficient and scalable code.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1.2 Why Learn Data Structures?
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Efficiency: Optimize time and space complexity.&lt;/li&gt;
&lt;li&gt;Problem Solving: Enhance your ability to solve complex problems.&lt;/li&gt;
&lt;li&gt;Interview Preparation: Essential for technical interviews.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Start with Simple Data Structures
&lt;/h3&gt;

&lt;h4&gt;
  
  
  2.1 Arrays
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: A collection of elements identified by index or key.&lt;/li&gt;
&lt;li&gt;Operations: Accessing, inserting, deleting, and iterating.&lt;/li&gt;
&lt;li&gt;Use Cases: Suitable for situations where elements are of the same type.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2.2 Linked Lists
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: A linear collection of data elements where each element points to the next.&lt;/li&gt;
&lt;li&gt;Types: Singly linked list, doubly linked list, circular linked list.&lt;/li&gt;
&lt;li&gt;Use Cases: Better for dynamic memory allocation compared to arrays.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2.3 Stacks
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: A collection of elements that follows Last-In-First-Out (LIFO) principle.&lt;/li&gt;
&lt;li&gt;Operations: Push, pop, peek.&lt;/li&gt;
&lt;li&gt;Use Cases: Undo mechanisms, parsing expressions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2.4 Queues
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: A collection of elements that follows First-In-First-Out (FIFO) principle.&lt;/li&gt;
&lt;li&gt;Operations: Enqueue, dequeue, peek.&lt;/li&gt;
&lt;li&gt;Use Cases: Order processing, task scheduling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Move to Complex Data Structures
&lt;/h3&gt;

&lt;h4&gt;
  
  
  3.1 Trees
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Binary Trees: Each node has at most two children.&lt;/li&gt;
&lt;li&gt;Binary Search Trees (BST): A binary tree with ordered nodes.&lt;/li&gt;
&lt;li&gt;AVL Trees: A self-balancing BST.&lt;/li&gt;
&lt;li&gt;Use Cases: Hierarchical data, database indexing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3.2 Heaps
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Min-Heap: Parent nodes are less than or equal to their children.&lt;/li&gt;
&lt;li&gt;Max-Heap: Parent nodes are greater than or equal to their children.&lt;/li&gt;
&lt;li&gt;Use Cases: Priority queues, heap sort.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3.3 Graphs
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: A collection of nodes (vertices) and edges connecting them.&lt;/li&gt;
&lt;li&gt;Types: Directed, undirected, weighted, unweighted.&lt;/li&gt;
&lt;li&gt;Use Cases: Network routing, social networks, recommendation systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Understand Hashing
&lt;/h3&gt;

&lt;h4&gt;
  
  
  4.1 Hash Tables
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: A data structure that maps keys to values for efficient lookup.&lt;/li&gt;
&lt;li&gt;Operations: Insert, delete, search.&lt;/li&gt;
&lt;li&gt;Use Cases: Implementing dictionaries, caching.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4.2 Hash Functions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: A function that converts input into a fixed-size string of bytes.&lt;/li&gt;
&lt;li&gt;Use Cases: Ensuring efficient data retrieval.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Master Algorithms Related to Data Structures
&lt;/h3&gt;

&lt;h4&gt;
  
  
  5.1 Sorting Algorithms
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Bubble Sort, Insertion Sort, Selection Sort: Basic algorithms with O(n^2) complexity.&lt;/li&gt;
&lt;li&gt;Merge Sort, Quick Sort, Heap Sort: Advanced algorithms with O(n log n) complexity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5.2 Searching Algorithms
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Linear Search: O(n) complexity.&lt;/li&gt;
&lt;li&gt;Binary Search: O(log n) complexity (applicable on sorted arrays).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5.3 Graph Algorithms
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Depth-First Search (DFS): Explores as far as possible along each branch before backtracking.&lt;/li&gt;
&lt;li&gt;Breadth-First Search (BFS): Explores all neighbor nodes at the present depth before moving on to nodes at the next depth level.&lt;/li&gt;
&lt;li&gt;Dijkstra's Algorithm: Finds the shortest path between nodes in a graph.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Practical Application and Projects
&lt;/h3&gt;

&lt;h4&gt;
  
  
  6.1 Practice Problems
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Online Platforms: LeetCode, HackerRank, CodeSignal, and GeeksforGeeks offer a plethora of problems to practice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  6.2 Real-World Projects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Build a Custom Library: Implement your own data structure library in your preferred programming language.&lt;/li&gt;
&lt;li&gt;Contribute to Open Source: Join projects that require optimization and data structure expertise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Advanced Topics
&lt;/h3&gt;

&lt;h4&gt;
  
  
  7.1 Concurrent Data Structures
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: Data structures designed for concurrent access.&lt;/li&gt;
&lt;li&gt;Use Cases: Multithreading and parallel processing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  7.2 Persistent Data Structures
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definition: Data structures that preserve the previous version of -themselves when modified.&lt;/li&gt;
&lt;li&gt;Use Cases: Undo operations, versioned data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8. Resources and Continued Learning
&lt;/h3&gt;

&lt;h4&gt;
  
  
  8.1 Books
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;"Introduction to Algorithms" by Cormen, Leiserson, Rivest, and Stein.&lt;/li&gt;
&lt;li&gt;"Data Structures and Algorithm Analysis in C++" by Mark Allen Weiss.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  8.2 Online Courses
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Coursera: Data Structures and Algorithms Specialization by UC San Diego &amp;amp; National Research University Higher School of Economics.&lt;/li&gt;
&lt;li&gt;edX: Algorithms and Data Structures MicroMasters by University of California, San Diego.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  8.3 Communities and Forums
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Reddit: r/learnprogramming, r/coding.&lt;/li&gt;
&lt;li&gt;Stack Overflow: Participate in discussions and ask questions.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;_Mastering data structures is a journey that involves continuous learning and practice. Follow this roadmap, utilize the resources provided, and keep challenging yourself with new problems and projects. With dedication and persistence, you'll become proficient in data structures and significantly improve your programming skills. Happy learning!&lt;/strong&gt;_&lt;/p&gt;

</description>
      <category>datastructures</category>
      <category>dsa</category>
      <category>algorithms</category>
      <category>programming</category>
    </item>
    <item>
      <title>Making a custom 404 page in Next.js</title>
      <dc:creator>Shabin-k</dc:creator>
      <pubDate>Fri, 13 Oct 2023 16:35:25 +0000</pubDate>
      <link>https://dev.to/shabink/making-a-custom-404-page-in-nextjs-2ajg</link>
      <guid>https://dev.to/shabink/making-a-custom-404-page-in-nextjs-2ajg</guid>
      <description>&lt;h2&gt;
  
  
  Next.js 13.3: Automatic Handling of Unmatched Routes with not-found.js
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;In the fast-paced world of web development, Next.js continues to evolve and improve. With the release of &lt;u&gt;Next.js 13.3&lt;/u&gt;, a new feature has been introduced that simplifies how you handle unmatched routes in your application. This feature makes it even more developer-friendly and streamlines the process of creating a custom 404 page. In this blog post, we'll explore these changes and how you can take advantage of them.&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;&lt;code&gt;callout&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚀 Let’s build something great together. 💡&lt;br&gt;
Email: &lt;a href="mailto:heyshabink@gmail.com"&gt;heyshabink@gmail.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;strong&gt;The Not-Found Page in Next.js&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;With Next.js 13.3, managing custom 404 pages and handling unmatched routes has become remarkably more straightforward. All you need to do is change the file name to &lt;code&gt;not-found.js&lt;/code&gt;. An &lt;code&gt;app/not-found.js&lt;/code&gt; file will now automatically handle visits to a URL that does not have a matching route in your app.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can find detailed information about this file convention in the &lt;a href="https://nextjs.org/docs/app/api-reference/file-conventions/not-found" rel="noopener noreferrer"&gt;Next.js documentation&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This exciting update was officially announced in the &lt;a href="https://nextjs.org/blog/next-13-3" rel="noopener noreferrer"&gt;Next.js 13.3 release notes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important Note:&lt;/strong&gt; &lt;em&gt;While Next.js 13.3 simplifies the process of handling unmatched routes, there's a crucial detail to be aware of. The &lt;code&gt;not-found.js&lt;/code&gt; file currently only renders when triggered by the &lt;code&gt;notFound&lt;/code&gt; function. However, the Next.js team is actively working on adding support for automatically catching unmatched routes, making it even more seamless. To take advantage of the current functionality, ensure that your custom 404 page is named &lt;code&gt;not-found.js&lt;/code&gt; instead of &lt;code&gt;404.js&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;em&gt;In the meantime, as it looks like dynamic routes are resolved after static routes, you can solve it by creating a &lt;a href="https://beta.nextjs.org/docs/routing/defining-routes#catch-all-segments" rel="noopener noreferrer"&gt;dynamic catch-all route&lt;/a&gt; using a &lt;code&gt;[...not_found]&lt;/code&gt; folder and add it to your app folder.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's how you can do it:&lt;/strong&gt;&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%2Fv4ee28487p9oiycj6srr.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%2Fv4ee28487p9oiycj6srr.png" alt="folder structure" width="334" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Inside the dynamic route folder add a &lt;code&gt;page.js&lt;/code&gt; file that calls the &lt;code&gt;notFound()&lt;/code&gt; function.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;app/[...not_found]/page.js&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import {notFound} from "next/navigation"

export default function NotFoundCatchAll() {
  notFound()
}

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

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;And inside the &lt;code&gt;not-found.js&lt;/code&gt; file in the root of your app folder you can add your custom 404 page.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;app/not-found.js&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Link from 'next/link'

export default function NotFound() {
  return &amp;lt;div&amp;gt;
      &amp;lt;h1&amp;gt;Not found – 404!&amp;lt;/h1&amp;gt;
      &amp;lt;div&amp;gt;
        &amp;lt;Link href="/"&amp;gt;Go back to Home&amp;lt;/Link&amp;gt;
      &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Please note that this approach can potentially create problems if you have multiple dynamic routes in your app folder. However, if you have dynamic routes in another static folder, you should be able to use this approach without issues.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Happy coding with Next.js!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>404</category>
      <category>react</category>
      <category>custompag</category>
    </item>
    <item>
      <title>Hello developers</title>
      <dc:creator>Shabin-k</dc:creator>
      <pubDate>Wed, 25 May 2022 13:46:22 +0000</pubDate>
      <link>https://dev.to/shabink/hello-developers-1bg5</link>
      <guid>https://dev.to/shabink/hello-developers-1bg5</guid>
      <description></description>
    </item>
  </channel>
</rss>
