<?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: LabEx</title>
    <description>The latest articles on DEV Community by LabEx (labex).</description>
    <link>https://dev.to/labex</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.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F8995%2F715cc2d8-2659-45f0-994c-c1c271f135d0.jpg</url>
      <title>DEV Community: LabEx</title>
      <link>https://dev.to/labex</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/labex"/>
    <language>en</language>
    <item>
      <title>Display User and Group Information Challenge Solution</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Thu, 09 Jul 2026 00:56:34 +0000</pubDate>
      <link>https://dev.to/labex/display-user-and-group-information-challenge-solution-3kcf</link>
      <guid>https://dev.to/labex/display-user-and-group-information-challenge-solution-3kcf</guid>
      <description>&lt;p&gt;The LabEx challenge &lt;a href="https://labex.io/labs/linux-display-user-and-group-information-8718" rel="noopener noreferrer"&gt;Display User and Group Information&lt;/a&gt; is short, but it tests an important Linux reflex: before reasoning about permissions, confirm which user the shell is running as and which groups that user belongs to.&lt;/p&gt;

&lt;p&gt;Unlike a guided lab, this is a challenge. The page gives the required outcome, but it expects you to choose the commands yourself. The solution comes from matching each requirement to the Linux command that reports exactly that information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem Summary
&lt;/h2&gt;

&lt;p&gt;The challenge has two tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Display the current user identity.&lt;/li&gt;
&lt;li&gt;Display detailed user and group information, including &lt;code&gt;uid&lt;/code&gt;, &lt;code&gt;gid&lt;/code&gt;, and &lt;code&gt;groups&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means the answer needs two levels of identity information. The first task only wants the username. The second task wants the numeric and named identity fields Linux uses for access decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Print the Current Username
&lt;/h2&gt;

&lt;p&gt;For the first task, use &lt;code&gt;whoami&lt;/code&gt;.&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="nb"&gt;whoami&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expected output is only the current username. In the LabEx environment, it may look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;labex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command answers a narrow question: "Which user am I right now?" It does not show groups, IDs, or permission details. That is why it is the right command for the first requirement, but not enough for the second one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Print User and Group Details
&lt;/h2&gt;

&lt;p&gt;For the second task, use &lt;code&gt;id&lt;/code&gt;.&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="nb"&gt;id&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output should include the user ID, primary group ID, and supplementary groups:&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="nv"&gt;uid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1000&lt;span class="o"&gt;(&lt;/span&gt;labex&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;gid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1000&lt;span class="o"&gt;(&lt;/span&gt;labex&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1000&lt;span class="o"&gt;(&lt;/span&gt;labex&lt;span class="o"&gt;)&lt;/span&gt;,4&lt;span class="o"&gt;(&lt;/span&gt;adm&lt;span class="o"&gt;)&lt;/span&gt;,24&lt;span class="o"&gt;(&lt;/span&gt;cdrom&lt;span class="o"&gt;)&lt;/span&gt;,27&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbbwso2ureld66ocreg62.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbbwso2ureld66ocreg62.png" alt="Terminal showing the whoami and id commands for the challenge solution" width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The exact numbers and group names can differ between environments. What matters is the structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;uid=1000(labex)&lt;/code&gt; means the current user has numeric user ID &lt;code&gt;1000&lt;/code&gt; and username &lt;code&gt;labex&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gid=1000(labex)&lt;/code&gt; means the primary group ID is &lt;code&gt;1000&lt;/code&gt; and the group name is &lt;code&gt;labex&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;groups=...&lt;/code&gt; lists every group membership available to the current user.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why These Commands Solve the Challenge
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;whoami&lt;/code&gt; solves the first requirement because it prints only the current username. If the challenge asks for a single user identity, this is the cleanest output.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;id&lt;/code&gt; solves the second requirement because it includes the fields named in the prompt: &lt;code&gt;uid&lt;/code&gt;, &lt;code&gt;gid&lt;/code&gt;, and &lt;code&gt;groups&lt;/code&gt;. You do not need to inspect &lt;code&gt;/etc/passwd&lt;/code&gt; or &lt;code&gt;/etc/group&lt;/code&gt; for this challenge. Those files can explain account configuration, but the task asks for the identity information of the current session, and &lt;code&gt;id&lt;/code&gt; reports that directly.&lt;/p&gt;

&lt;p&gt;The common mistake is to stop after &lt;code&gt;whoami&lt;/code&gt;. That confirms the username, but it does not prove group membership. In Linux permission checks, group membership can be the difference between access granted and access denied.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Answer
&lt;/h2&gt;

&lt;p&gt;Run these two commands:&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="nb"&gt;whoami
id&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You have completed the challenge when the first command prints the current username and the second command prints identity details containing &lt;code&gt;uid&lt;/code&gt;, &lt;code&gt;gid&lt;/code&gt;, and &lt;code&gt;groups&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>labex</category>
      <category>linux</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Learn Linux Through Operational Challenges</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Wed, 08 Jul 2026 04:15:53 +0000</pubDate>
      <link>https://dev.to/labex/learn-linux-through-operational-challenges-3cij</link>
      <guid>https://dev.to/labex/learn-linux-through-operational-challenges-3cij</guid>
      <description>&lt;p&gt;Many Linux beginners can remember a command before they know where it belongs. They can run &lt;code&gt;touch&lt;/code&gt;, &lt;code&gt;chmod&lt;/code&gt;, &lt;code&gt;ss&lt;/code&gt;, or &lt;code&gt;systemctl&lt;/code&gt;, but still hesitate when a task has a working directory, an existing file, a service that must stay running, and a specific result to verify.&lt;/p&gt;

&lt;p&gt;That gap is where command practice starts to become operational practice.&lt;/p&gt;

&lt;p&gt;The contrast is simple: a command list teaches syntax, while an operational challenge forces the command to answer a real constraint.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Febuydybhdf71ency69bd.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Febuydybhdf71ency69bd.png" alt="Comparison of command lists and operational Linux practice" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/courses/100-days-of-linux-challenges" rel="noopener noreferrer"&gt;100 Days of Linux&lt;/a&gt; is built around that gap. The course is not a list of 100 unrelated commands. It is a sequence of 100 small Linux challenges, each framed as a task with context, scope, a required final state, and acceptance criteria.&lt;/p&gt;

&lt;p&gt;The first challenge is intentionally small. In "Claim the Drop Folder", the learner starts in &lt;code&gt;/home/labex/project&lt;/code&gt;, finds an existing &lt;code&gt;drop-folder/incoming&lt;/code&gt; directory, and creates a &lt;code&gt;ready.flag&lt;/code&gt; file in that exact location. The command may be as simple as &lt;code&gt;touch&lt;/code&gt;, but the real lesson is not the command name. The learner has to confirm the working directory, avoid creating the marker in the wrong place, and leave the existing folder structure intact.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft8u5mcob78kurg5i7s5k.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft8u5mcob78kurg5i7s5k.png" alt="Terminal scene showing a ready flag created in the correct drop folder" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That pattern repeats across the course: a command is useful only when it changes the right thing and leaves the rest of the system alone.&lt;/p&gt;

&lt;p&gt;The syllabus makes the progression visible. The first ten days focus on handoffs: claiming a folder, inventorying a delivery, reading a welcome note, preparing a review folder, and closing the first handoff. The next sections move through reading operational evidence, safe file changes, access boundaries, running work reliably, local app validation, tooling, managed services, recovery, and final operations simulations.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmjcznrmb5zifhjatlw4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmjcznrmb5zifhjatlw4.png" alt="Timeline showing the 100 Days of Linux practice sequence" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That structure gives the command a job. A checklist can tell a learner that &lt;code&gt;chmod 600 file&lt;/code&gt; restricts a file to its owner. A challenge can make that command matter by placing it inside a specific handoff: a private manager note already has the correct content, but its mode is too open. The task is to change the permission while preserving the file and its contents.&lt;/p&gt;

&lt;p&gt;The same approach works for networking and services. In one local app validation challenge, the learner must identify which candidate TCP port is actually listening by inspecting local sockets with a command such as &lt;code&gt;ss -ltn&lt;/code&gt;, then copy only the matching port card into a review folder. The service must remain running. The final state matters as much as the inspection command.&lt;/p&gt;

&lt;p&gt;Later tasks add more moving parts without turning into vague troubleshooting exercises. A maintenance challenge asks the learner to schedule a prepared heartbeat script with cron and confirm that the expected output file appears. A recovery challenge asks them to inspect mounts under &lt;code&gt;/mnt&lt;/code&gt;, locate a staged recovery card, copy it into the project intake folder, and leave the mount available.&lt;/p&gt;

&lt;p&gt;By the final day, the task has become a compact incident. The learner must close a broken local status API by reading service evidence, fixing config access for the &lt;code&gt;labex&lt;/code&gt; service user, clearing stale process state, starting &lt;code&gt;labex-status-api.service&lt;/code&gt;, and verifying that &lt;code&gt;http://127.0.0.1:18200/health&lt;/code&gt; returns the expected status lines. That is still beginner-scoped, but it is no longer isolated command recall.&lt;/p&gt;

&lt;p&gt;Across these examples, the same small loop keeps coming back.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcs2wlrbrsn793f32s6i5.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcs2wlrbrsn793f32s6i5.png" alt="Flow diagram showing command practice moving through scope, evidence, and verification" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The useful habit running through the course is constraint-aware work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Know the current workspace before changing files.&lt;/li&gt;
&lt;li&gt;Read the existing structure instead of recreating it.&lt;/li&gt;
&lt;li&gt;Preserve content when the task is only about permissions or placement.&lt;/li&gt;
&lt;li&gt;Inspect evidence before acting on a service or port.&lt;/li&gt;
&lt;li&gt;Verify the final state with the same precision as the task description.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those habits are hard to build from reference material alone. They come from repeated small tasks where a wrong directory, an extra copy, a deleted file, or an unverified service changes the outcome.&lt;/p&gt;

&lt;p&gt;For someone who has already learned basic commands but still feels slow in a Linux terminal, the first useful step is not another command list. Start with the early handoff challenges in &lt;a href="https://labex.io/courses/100-days-of-linux-challenges" rel="noopener noreferrer"&gt;100 Days of Linux&lt;/a&gt;, then move into the permissions, service, and recovery sections once the basic file tasks feel routine.&lt;/p&gt;

</description>
      <category>labex</category>
      <category>linux</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Linux Journey Is Now Part of LabEx</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Mon, 08 Jun 2026 01:38:17 +0000</pubDate>
      <link>https://dev.to/labex/linux-journey-is-now-part-of-labex-33bc</link>
      <guid>https://dev.to/labex/linux-journey-is-now-part-of-labex-33bc</guid>
      <description>&lt;p&gt;Linux Journey has been one of the most popular free resources for learning Linux since 2015.&lt;/p&gt;

&lt;p&gt;Created by Cindy Quach, the project has helped millions of beginners take their first steps into Linux through simple lessons and quizzes.&lt;/p&gt;

&lt;p&gt;Today, Linux Journey is officially part of LabEx.&lt;/p&gt;

&lt;p&gt;The original Linux Journey website (&lt;a href="https://linuxjourney.com" rel="noopener noreferrer"&gt;https://linuxjourney.com&lt;/a&gt;) now redirects to &lt;a href="https://labex.io/linuxjourney" rel="noopener noreferrer"&gt;https://labex.io/linuxjourney&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our goal is straightforward: keep Linux Journey free, open source, and actively maintained for the next generation of Linux learners.&lt;/p&gt;

&lt;p&gt;We'll continue maintaining existing lessons, fixing issues, improving translations, and adding new beginner-friendly content over time.&lt;/p&gt;

&lt;p&gt;The official repository is now maintained by the LabEx team:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/labex-labs/linuxjourney" rel="noopener noreferrer"&gt;https://github.com/labex-labs/linuxjourney&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've also recently launched the Linux Journey iOS app, making it easier to learn Linux on the go:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/app/linux-journey/id6770861660" rel="noopener noreferrer"&gt;https://apps.apple.com/app/linux-journey/id6770861660&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most importantly, nothing changes about what made Linux Journey special.&lt;/p&gt;

&lt;p&gt;It remains free. It remains open source. It remains community-driven.&lt;/p&gt;

&lt;p&gt;A huge thank you to Cindy Quach and all contributors who helped build Linux Journey into one of the most loved Linux learning resources on the internet.&lt;/p&gt;

&lt;p&gt;We're honored to continue the journey.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>labex</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Master Git: How to Undo Commits, Switch Branches, and Manage Tags Effectively</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Sun, 07 Jun 2026 17:27:55 +0000</pubDate>
      <link>https://dev.to/labex/master-git-how-to-undo-commits-switch-branches-and-manage-tags-effectively-1pb0</link>
      <guid>https://dev.to/labex/master-git-how-to-undo-commits-switch-branches-and-manage-tags-effectively-1pb0</guid>
      <description>&lt;p&gt;Every developer has been there: a messy commit history, confusion over branch switching, or the need to mark a release milestone. Git is the backbone of modern software development, but mastering it requires more than just memorizing commands. This learning path takes you through three practical scenarios that turn Git from a daunting tool into your most reliable project assistant.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Undo and Remove a Specific Git Commit from Current Branch
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fgit-how-to-undo-and-remove-a-specific-git-commit-from-current-branch-392832" 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%2Fog-image.labex.io%2Flabs%2Fgit-how-to-undo-and-remove-a-specific-git-commit-from-current-branch-392832" alt="How to Undo and Remove a Specific Git Commit from Current Branch" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 15 minutes&lt;/p&gt;

&lt;p&gt;Learn how to undo and remove a specific Git commit from the current branch. Discover the best practices for managing Git commit history and restoring removed commits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/git-how-to-undo-and-remove-a-specific-git-commit-from-current-branch-392832" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/git-how-to-undo-and-remove-a-specific-git-commit-from-current-branch-392832" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Switch vs Git Checkout
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fgit-git-switch-vs-git-checkout-391555" 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%2Fog-image.labex.io%2Flabs%2Fgit-git-switch-vs-git-checkout-391555" alt="Git Switch vs Git Checkout" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 30 minutes&lt;/p&gt;

&lt;p&gt;Explore the differences between Git switch and Git checkout commands, learn when to use each, and master your Git workflow. Practical examples and use cases included.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/git-git-switch-vs-git-checkout-391555" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/git-git-switch-vs-git-checkout-391555" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tagging Your Project's History
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fgit-tagging-your-project-s-history-387763" 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%2Fog-image.labex.io%2Flabs%2Fgit-tagging-your-project-s-history-387763" alt="Tagging Your Project's History" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 5 minutes&lt;/p&gt;

&lt;p&gt;Learn how to use Git tags to mark important milestones in your project's history. Practice creating lightweight and annotated tags, and listing tags in a repository using a time machine software project scenario.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/git-tagging-your-project-s-history-387763" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/git-tagging-your-project-s-history-387763" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Git mastery isn't about memorizing every flag in the manual; it is about understanding how to manage your project's evolution. By completing these three labs, you move from simply 'using' Git to 'commanding' it. Ready to level up your version control skills? Dive into these interactive exercises today and start building a cleaner, more professional development history.&lt;/p&gt;

</description>
      <category>git</category>
      <category>versioncontrol</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>4 Wireshark Labs: Master Network Analysis, Nmap Scanning, and Metasploit Exploitation</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Sat, 06 Jun 2026 17:24:35 +0000</pubDate>
      <link>https://dev.to/labex/4-wireshark-labs-master-network-analysis-nmap-scanning-and-metasploit-exploitation-3gip</link>
      <guid>https://dev.to/labex/4-wireshark-labs-master-network-analysis-nmap-scanning-and-metasploit-exploitation-3gip</guid>
      <description>&lt;p&gt;Ready to see what is really happening on your network? Wireshark is the gold standard for packet analysis, and we have built the perfect roadmap to take you from zero to hero. Forget boring videos—our hands-on labs put you in the driver's seat of a real network environment. Let's dive into the packets!&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Nmap and Metasploit for Network Scanning and Vulnerability Analysis
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fnmap-use-nmap-and-metasploit-for-network-scanning-and-vulnerability-analysis-416120" 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%2Fog-image.labex.io%2Flabs%2Fnmap-use-nmap-and-metasploit-for-network-scanning-and-vulnerability-analysis-416120" alt="Use Nmap and Metasploit for Network Scanning and Vulnerability Analysis" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 25 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn how to use Nmap for network scanning and Metasploit for vulnerability analysis. You'll cover basic and advanced Nmap techniques, import scan results into Metasploit, and utilize Metasploit modules to identify and exploit vulnerabilities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/nmap-use-nmap-and-metasploit-for-network-scanning-and-vulnerability-analysis-416120" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/nmap-use-nmap-and-metasploit-for-network-scanning-and-vulnerability-analysis-416120" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Exploit Unreal IRCd Vulnerability with Nmap and Metasploit
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fnmap-exploit-unreal-ircd-vulnerability-with-nmap-and-metasploit-416126" 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%2Fog-image.labex.io%2Flabs%2Fnmap-exploit-unreal-ircd-vulnerability-with-nmap-and-metasploit-416126" alt="Exploit Unreal IRCd Vulnerability with Nmap and Metasploit" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 20 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn how to exploit the Unreal IRCd vulnerability using Nmap for vulnerability scanning and Metasploit for exploitation. You'll understand the vulnerability, scan for it, exploit it, and validate the successful exploitation. This hands-on lab provides practical experience in network security.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/nmap-exploit-unreal-ircd-vulnerability-with-nmap-and-metasploit-416126" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/nmap-exploit-unreal-ircd-vulnerability-with-nmap-and-metasploit-416126" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Network Analysis with Wireshark
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fwireshark-network-analysis-with-wireshark-415958" 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%2Fog-image.labex.io%2Flabs%2Fwireshark-network-analysis-with-wireshark-415958" alt="Network Analysis with Wireshark" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 28 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn how to perform network analysis using Wireshark. You'll install Wireshark, capture network traffic, analyze packet data, and use filters to identify and investigate network issues. This hands-on experience will enhance your cybersecurity skills.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/wireshark-network-analysis-with-wireshark-415958" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/wireshark-network-analysis-with-wireshark-415958" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explore and Customize Wireshark Interface
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fwireshark-explore-and-customize-wireshark-interface-415949" 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%2Fog-image.labex.io%2Flabs%2Fwireshark-explore-and-customize-wireshark-interface-415949" alt="Explore and Customize Wireshark Interface" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 15 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will launch Wireshark and explore its interface. You'll learn how to navigate the various panels and customize the layout to suit your needs. This includes adjusting columns, filters, and display options for efficient network analysis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/wireshark-explore-and-customize-wireshark-interface-415949" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/wireshark-explore-and-customize-wireshark-interface-415949" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Network analysis is a superpower in the cybersecurity world, and these labs are your fast track to gaining it. Whether you are troubleshooting a connection or hunting for intruders, these practical skills will serve you for years to come. Don't just read about it—jump into the playground and start capturing packets today!&lt;/p&gt;

</description>
      <category>wireshark</category>
      <category>cybersecurity</category>
      <category>networking</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Master Java Core: 5 Hands-On Labs for OOP, Threading, and Encryption</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Fri, 05 Jun 2026 17:34:34 +0000</pubDate>
      <link>https://dev.to/labex/master-java-core-5-hands-on-labs-for-oop-threading-and-encryption-44p8</link>
      <guid>https://dev.to/labex/master-java-core-5-hands-on-labs-for-oop-threading-and-encryption-44p8</guid>
      <description>&lt;p&gt;Embarking on your Java journey can feel like staring at a mountain of syntax and abstract concepts. But what if you could master the language by building, breaking, and fixing real code? This curated learning path takes you from the basics of object-oriented design to the thrill of implementing your own encryption algorithms, all within an interactive environment designed for rapid skill acquisition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arranging Classes by Functionality
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fjava-arranging-classes-by-functionality-178550" 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%2Fog-image.labex.io%2Flabs%2Fjava-arranging-classes-by-functionality-178550" alt="Arranging Classes by Functionality" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 5 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn to use packages to arrange for classes according to their functionalities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/java-arranging-classes-by-functionality-178550" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/java-arranging-classes-by-functionality-178550" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Overloading and Overriding
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fjava-overloading-and-overriding-178549" 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%2Fog-image.labex.io%2Flabs%2Fjava-overloading-and-overriding-178549" alt="Overloading and Overriding" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 10 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn method overloading and method overriding. Overriding and overloading are two concepts used in Java programming language. Both the concepts allow programmer to provide different implementations for methods under the same name. Overloading happens at compile-time while overriding happens at runtime. Static methods can be overloaded but cannot be overridden. Overloading is a static bond while overriding is dynamic bond.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/java-overloading-and-overriding-178549" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/java-overloading-and-overriding-178549" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Implement Countdown Timer Thread
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fjava-implement-countdown-timer-thread-179696" 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%2Fog-image.labex.io%2Flabs%2Fjava-implement-countdown-timer-thread-179696" alt="Implement Countdown Timer Thread" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 5 minutes&lt;/p&gt;

&lt;p&gt;In this challenge, we will be implementing a countdown timer. The objective is to create a child thread, handle time calculations using the Thread.sleep() method, and display the countdown effect based on the input number of seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/java-implement-countdown-timer-thread-179696" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/java-implement-countdown-timer-thread-179696" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Class and Object
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fjava-class-and-object-178544" 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%2Fog-image.labex.io%2Flabs%2Fjava-class-and-object-178544" alt="Class and Object" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 5 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you are going to learn a very important programming pattern: the object-oriented-programming. You need to know the difference between class and object. Take more practice to get a better understanding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/java-class-and-object-178544" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/java-class-and-object-178544" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Implement Encryption and Decryption
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fjava-implement-encryption-and-decryption-179698" 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%2Fog-image.labex.io%2Flabs%2Fjava-implement-encryption-and-decryption-179698" alt="Implement Encryption and Decryption" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 5 minutes&lt;/p&gt;

&lt;p&gt;In this challenge, we will be implementing encryption and decryption operations based on a set of encryption rules. The encryption rules involve moving the ASCII code of each character in the plaintext forward by a certain length, reversing the result characters, and then moving the ASCII code backward by another length. Our task is to design a program that can perform these encryption and decryption operations based on the given rules. We have a code template provided, and we need to complete the code in the designated areas to meet the requirements of the challenge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/java-implement-encryption-and-decryption-179698" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/java-implement-encryption-and-decryption-179698" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java is more than just syntax; it is a way of structuring logic to solve complex problems. By completing these five labs, you have moved beyond simple 'Hello World' examples and into the realm of functional application development. Don't just read about code—start building it today and see how quickly your confidence grows.&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>coding</category>
    </item>
    <item>
      <title>Master Linux Command Line: Custom Variables, User Auditing, and File Redirection</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Thu, 04 Jun 2026 17:50:43 +0000</pubDate>
      <link>https://dev.to/labex/master-linux-command-line-custom-variables-user-auditing-and-file-redirection-45k0</link>
      <guid>https://dev.to/labex/master-linux-command-line-custom-variables-user-auditing-and-file-redirection-45k0</guid>
      <description>&lt;p&gt;Stepping into the world of Linux can feel like entering a vast, uncharted territory. Whether you are a developer or an aspiring system administrator, the command line is your most powerful tool. At LabEx, we have curated a structured path that moves you from a curious beginner to a confident Linux user. Forget passive video tutorials; it is time to get your hands dirty in a real, interactive shell environment. Let’s walk through three foundational labs that will transform how you interact with your system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Custom Variables
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Flinux-creating-custom-variables-636067" 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%2Fog-image.labex.io%2Flabs%2Flinux-creating-custom-variables-636067" alt="Creating Custom Variables" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 20 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn how to create, use, and export custom environment variables in Linux. You will understand the difference between local and environment variables and how to pass data to child processes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/linux-creating-custom-variables-636067" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/linux-creating-custom-variables-636067" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Users and Groups Explained
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fusers-and-groups-explained-636080" 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%2Fog-image.labex.io%2Flabs%2Fusers-and-groups-explained-636080" alt="Users and Groups Explained" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 20 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn how to audit system access entities by viewing and understanding user and group information on Linux systems using standard configuration files and commands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/users-and-groups-explained-636080" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/users-and-groups-explained-636080" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Redirection to Files
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fredirection-to-files-636021" 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%2Fog-image.labex.io%2Flabs%2Fredirection-to-files-636021" alt="Redirection to Files" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 15 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn how to manage command output in Linux. You will practice redirecting standard output to files, appending data to existing files, and capturing error messages separately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/redirection-to-files-636021" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/redirection-to-files-636021" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These three labs are more than just exercises; they are the building blocks of your Linux proficiency. By mastering variables, user management, and output redirection, you are laying the groundwork for advanced system administration and shell scripting. Ready to stop watching and start doing? Jump into the LabEx interactive playground today and start building your Linux expertise one command at a time.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>shell</category>
      <category>sysadmin</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Master Docker: Command Quest, Image Organization, and Container Execution Labs</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Wed, 03 Jun 2026 18:26:07 +0000</pubDate>
      <link>https://dev.to/labex/master-docker-command-quest-image-organization-and-container-execution-labs-40c8</link>
      <guid>https://dev.to/labex/master-docker-command-quest-image-organization-and-container-execution-labs-40c8</guid>
      <description>&lt;p&gt;Docker has revolutionized how we build, ship, and run applications, but moving from theory to practice can be daunting. If you are looking to bridge the gap between understanding container concepts and executing them like a pro, this curated learning path is your perfect starting point. We have selected three hands-on labs that focus on the core mechanics of Docker, designed to get you comfortable with the command line and container lifecycle in under 30 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker Arena Command Quest
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fdocker-docker-arena-command-quest-271460" 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%2Fog-image.labex.io%2Flabs%2Fdocker-docker-arena-command-quest-271460" alt="Docker Arena Command Quest" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 10 minutes&lt;/p&gt;

&lt;p&gt;In this challenge, you'll master Docker command execution and container invocation. Test your skills in the Docker Arena and learn to effectively manage and interact with Docker containers through practical exercises.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/docker-docker-arena-command-quest-271460" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/docker-docker-arena-command-quest-271460" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Superpower Image Organization in Docker
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fdocker-superpower-image-organization-in-docker-271462" 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%2Fog-image.labex.io%2Flabs%2Fdocker-superpower-image-organization-in-docker-271462" alt="Superpower Image Organization in Docker" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 5 minutes&lt;/p&gt;

&lt;p&gt;In this challenge, you'll master Docker image organization. Learn to list, filter, and manage your Docker images effectively. Discover powerful techniques for tagging, removing, and optimizing your image library for streamlined development workflows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/docker-superpower-image-organization-in-docker-271462" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/docker-superpower-image-organization-in-docker-271462" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker Execute Command in Container
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fdocker-docker-execute-command-in-container-271461" 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%2Fog-image.labex.io%2Flabs%2Fdocker-docker-execute-command-in-container-271461" alt="Docker Execute Command in Container" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 10 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn how to execute commands inside a running Docker container. You'll explore the 'docker exec' command and its various options to interact with the container's shell and run specific tasks. This hands-on experience will enhance your Docker skills.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/docker-docker-execute-command-in-container-271461" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/docker-docker-execute-command-in-container-271461" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These three labs are more than just exercises; they are the building blocks of professional container orchestration. By practicing these commands in an interactive environment, you are gaining the real-world experience necessary to deploy applications with precision. Don't just read about Docker—start building today and see how these practical skills transform your development workflow.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>containers</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>CKS Training: Master Debugging, API Migration, and Volume Management Labs</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Tue, 02 Jun 2026 18:15:00 +0000</pubDate>
      <link>https://dev.to/labex/cks-training-master-debugging-api-migration-and-volume-management-labs-3j4j</link>
      <guid>https://dev.to/labex/cks-training-master-debugging-api-migration-and-volume-management-labs-3j4j</guid>
      <description>&lt;p&gt;Are you ready to tackle the Certified Kubernetes Security Specialist (CKS) exam? It is a challenging certification, but you do not have to do it alone. We have curated a hands-on learning path at LabEx designed to bridge the gap between theory and real-world security operations. Let’s dive into three foundational labs that will sharpen your cluster management and security skills immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use exec and Port Forwarding for Debugging
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fuse-exec-and-port-forwarding-for-debugging-663625" 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%2Fog-image.labex.io%2Flabs%2Fuse-exec-and-port-forwarding-for-debugging-663625" alt="Use exec and Port Forwarding for Debugging" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 40 minutes&lt;/p&gt;

&lt;p&gt;Deploy a small web application, inspect it with kubectl exec, and test it locally through kubectl port-forward.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/use-exec-and-port-forwarding-for-debugging-663625" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/use-exec-and-port-forwarding-for-debugging-663625" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Update Deprecated API Manifests
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fupdate-deprecated-api-manifests-663623" 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%2Fog-image.labex.io%2Flabs%2Fupdate-deprecated-api-manifests-663623" alt="Update Deprecated API Manifests" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 45 minutes&lt;/p&gt;

&lt;p&gt;Practice recognizing a deprecated Kubernetes API manifest, finding the current API shape, and migrating an Ingress manifest to networking.k8s.io/v1.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/update-deprecated-api-manifests-663623" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/update-deprecated-api-manifests-663623" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Ephemeral and Persistent Volumes in Pods
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fuse-ephemeral-and-persistent-volumes-in-pods-663624" 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%2Fog-image.labex.io%2Flabs%2Fuse-ephemeral-and-persistent-volumes-in-pods-663624" alt="Use Ephemeral and Persistent Volumes in Pods" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 35 minutes&lt;/p&gt;

&lt;p&gt;Use emptyDir for Pod-local temporary data, then use a PersistentVolumeClaim to keep data available after recreating a Pod.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/use-ephemeral-and-persistent-volumes-in-pods-663624" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/use-ephemeral-and-persistent-volumes-in-pods-663624" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These three labs are just the beginning of your CKS preparation. By mastering these practical tasks, you are building the muscle memory needed to pass the exam and excel in real-world cloud-native environments. Head over to the LabEx platform, start these labs today, and take a confident step toward your certification goals!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>cks</category>
      <category>devsecops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Master LFCS Training: 3 Hands-on Labs for Process and Job Management</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Mon, 01 Jun 2026 18:51:59 +0000</pubDate>
      <link>https://dev.to/labex/master-lfcs-training-3-hands-on-labs-for-process-and-job-management-5fb8</link>
      <guid>https://dev.to/labex/master-lfcs-training-3-hands-on-labs-for-process-and-job-management-5fb8</guid>
      <description>&lt;p&gt;Ready to conquer the Linux Foundation Certified System Administrator (LFCS) exam? You are in the right place. Our structured LFCS training path is designed to turn theory into real-world mastery. Forget boring textbooks; we focus on hands-on practice that builds the muscle memory you need for the command line. Let's dive into three foundational labs that will sharpen your system administration game.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set Up Scheduled Tasks
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Flinux-set-up-scheduled-tasks-47" 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%2Fog-image.labex.io%2Flabs%2Flinux-set-up-scheduled-tasks-47" alt="Set Up Scheduled Tasks" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 30 minutes&lt;/p&gt;

&lt;p&gt;Learn how to set up and manage scheduled tasks on Linux using the watch command and crontab. You'll gain hands-on experience with automating recurring tasks and monitoring their execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/linux-set-up-scheduled-tasks-47" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/linux-set-up-scheduled-tasks-47" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Linux Process Management
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Flinux-linux-process-management-46" 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%2Fog-image.labex.io%2Flabs%2Flinux-linux-process-management-46" alt="Linux Process Management" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 25 minutes&lt;/p&gt;

&lt;p&gt;Learn to use essential Linux tools for managing processes and system resources, including ps, top, and free commands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/linux-linux-process-management-46" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/linux-linux-process-management-46" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Background Job Management
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Flinux-background-job-management-43" 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%2Fog-image.labex.io%2Flabs%2Flinux-background-job-management-43" alt="Background Job Management" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 25 minutes&lt;/p&gt;

&lt;p&gt;Learn how to manage background jobs in Linux using the ampersand (&amp;amp;) command, fg, jobs, and kill commands. Practice running commands in the background, monitoring job status, bringing jobs to the foreground, and terminating background processes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/linux-background-job-management-43" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/linux-background-job-management-43" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These three labs are just the beginning of your journey toward LFCS certification. By mastering process control, automation, and job management, you are building a solid foundation for more complex tasks. Don't just read about Linux—get your hands dirty and start practicing today. Your path to becoming a certified system administrator starts with these practical steps!&lt;/p&gt;

</description>
      <category>lfcs</category>
      <category>linux</category>
      <category>automation</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>5 CSS Flexbox Projects: From Responsive Dice to Flexible Card Layouts</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Sun, 31 May 2026 17:22:16 +0000</pubDate>
      <link>https://dev.to/labex/5-css-flexbox-projects-from-responsive-dice-to-flexible-card-layouts-4gb6</link>
      <guid>https://dev.to/labex/5-css-flexbox-projects-from-responsive-dice-to-flexible-card-layouts-4gb6</guid>
      <description>&lt;p&gt;CSS is the backbone of modern web aesthetics, but theory alone won't make you a developer. To truly master layout engines like Flexbox, you need to get your hands dirty. This curated LabEx learning path moves beyond dry documentation, offering five interactive, browser-based challenges designed to sharpen your CSS skills through real-world application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsive Dice Layout with Flexbox
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fcss-responsive-dice-layout-with-flexbox-300064" 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%2Fog-image.labex.io%2Flabs%2Fcss-responsive-dice-layout-with-flexbox-300064" alt="Responsive Dice Layout with Flexbox" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 25 minutes&lt;/p&gt;

&lt;p&gt;In this project, you will learn how to create a responsive dice layout using Flexbox CSS. The goal is to arrange a set of dice with different patterns of dots, following specific layout requirements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/css-responsive-dice-layout-with-flexbox-300064" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/css-responsive-dice-layout-with-flexbox-300064" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Simple and Beautiful Home Page Design
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fcss-simple-and-beautiful-home-page-design-300089" 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%2Fog-image.labex.io%2Flabs%2Fcss-simple-and-beautiful-home-page-design-300089" alt="Simple and Beautiful Home Page Design" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 5 minutes&lt;/p&gt;

&lt;p&gt;In this challenge, we will be working on designing a simple and beautiful homepage for LabEx's knowledge aggregation website. The goal is to complete the homepage layout according to the provided requirements, ensuring that the content is centered and the page has a width of 1024px.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/css-simple-and-beautiful-home-page-design-300089" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/css-simple-and-beautiful-home-page-design-300089" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Give Your Page a Makeover
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fcss-give-your-page-a-makeover-300083" 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%2Fog-image.labex.io%2Flabs%2Fcss-give-your-page-a-makeover-300083" alt="Give Your Page a Makeover" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 5 minutes&lt;/p&gt;

&lt;p&gt;In this challenge, we will be revamping the login page. Our goal is to complete the layout of the login page and make it visually appealing. We will be focusing on modifying the CSS file to achieve the desired style requirements such as form appearance, avatar image style, subtitle style, button style, and input box style.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/css-give-your-page-a-makeover-300083" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/css-give-your-page-a-makeover-300083" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fruit Arrangement with CSS Flexbox
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fcss-fruit-arrangement-with-css-flexbox-300076" 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%2Fog-image.labex.io%2Flabs%2Fcss-fruit-arrangement-with-css-flexbox-300076" alt="Fruit Arrangement with CSS Flexbox" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 10 minutes&lt;/p&gt;

&lt;p&gt;In this project, you will learn how to use CSS Flexbox to create a fruit arrangement layout. You will learn how to use the align-self and order properties to position and arrange the fruits in the bowls.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/css-fruit-arrangement-with-css-flexbox-300076" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/css-fruit-arrangement-with-css-flexbox-300076" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsive Flexible Card Layout
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fcss-responsive-flexible-card-layout-300067" 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%2Fog-image.labex.io%2Flabs%2Fcss-responsive-flexible-card-layout-300067" alt="Responsive Flexible Card Layout" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 10 minutes&lt;/p&gt;

&lt;p&gt;In this project, you will learn how to create a flexible card layout using CSS Flexbox. The flexible card layout is a common design pattern used in web pages and applications, where content is displayed in a responsive and adaptable grid-like structure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/css-responsive-flexible-card-layout-300067" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/css-responsive-flexible-card-layout-300067" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These five labs are more than just exercises; they are the building blocks of your front-end career. By moving from simple dice layouts to complex responsive grids, you will develop the muscle memory needed to tackle any design challenge. Stop reading about CSS and start building—jump into the LabEx playground today and see your code come to life.&lt;/p&gt;

</description>
      <category>css</category>
      <category>flexbox</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Master MySQL Views and Window Functions: Advanced Query Optimization Guide</title>
      <dc:creator>Labby</dc:creator>
      <pubDate>Sat, 30 May 2026 17:22:23 +0000</pubDate>
      <link>https://dev.to/labex/master-mysql-views-and-window-functions-advanced-query-optimization-guide-563</link>
      <guid>https://dev.to/labex/master-mysql-views-and-window-functions-advanced-query-optimization-guide-563</guid>
      <description>&lt;p&gt;Ready to take your database skills to the next level? Whether you are just starting out or looking to sharpen your query game, our MySQL learning path is built for you. Forget boring videos—we believe in learning by doing. Dive into our interactive environment and master the tools that make data management a breeze.&lt;/p&gt;

&lt;h2&gt;
  
  
  MySQL Views and Virtual Tables
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fmysql-mysql-views-and-virtual-tables-550920" 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%2Fog-image.labex.io%2Flabs%2Fmysql-mysql-views-and-virtual-tables-550920" alt="MySQL Views and Virtual Tables" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 20 minutes&lt;/p&gt;

&lt;p&gt;In this lab, you will learn how to work with MySQL views, which are virtual tables based on the result-set of an SQL statement. The lab covers creating, updating, querying, and dropping MySQL views. You'll create a database, populate it with data, and then create and manipulate a view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/mysql-mysql-views-and-virtual-tables-550920" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/mysql-mysql-views-and-virtual-tables-550920" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  MySQL Window Functions
&lt;/h2&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%2Fog-image.labex.io%2Flabs%2Fmysql-mysql-window-functions-550921" 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%2Fog-image.labex.io%2Flabs%2Fmysql-mysql-window-functions-550921" alt="MySQL Window Functions" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Beginner | &lt;strong&gt;Time:&lt;/strong&gt; 20 minutes&lt;/p&gt;

&lt;p&gt;In this lab, we will explore the power of MySQL Window Functions. The goal is to learn how to perform calculations across sets of table rows that are related to the current row. We will use ROW_NUMBER(), SUM OVER, PARTITION BY, and LAG. This lab provides practical examples to understand and apply these window functions effectively.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labex.io/labs/mysql-mysql-window-functions-550921" rel="noopener noreferrer"&gt;Practice on LabEx →&lt;/a&gt; | &lt;a href="https://labex.io/tutorials/mysql-mysql-window-functions-550921" rel="noopener noreferrer"&gt;Tutorial →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learning MySQL does not have to be a chore. With these practical labs, you will gain the confidence to handle real-world data challenges immediately. Stop reading about SQL and start writing it! Jump into the playground today and see how quickly you can master these essential database techniques.&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>sql</category>
      <category>database</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
