<?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: Francis</title>
    <description>The latest articles on DEV Community by Francis (@lightcity).</description>
    <link>https://dev.to/lightcity</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%2F1233909%2F07415785-aba2-4344-90f0-05305100f69b.png</url>
      <title>DEV Community: Francis</title>
      <link>https://dev.to/lightcity</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lightcity"/>
    <language>en</language>
    <item>
      <title>All About the Const Family in C++</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Mon, 30 Sep 2024 09:01:10 +0000</pubDate>
      <link>https://dev.to/lightcity/all-about-the-const-family-in-c-335n</link>
      <guid>https://dev.to/lightcity/all-about-the-const-family-in-c-335n</guid>
      <description>&lt;p&gt;&lt;strong&gt;Outline&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;const&lt;/li&gt;
&lt;li&gt;constexpr&lt;/li&gt;
&lt;li&gt;consteval&lt;/li&gt;
&lt;li&gt;constinit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding const, constexpr, consteval, and constinit in Modern C++&lt;/p&gt;

&lt;p&gt;more detail: &lt;a href="https://medium.com/gitconnected/all-about-the-const-family-in-c-a87070d602b6" rel="noopener noreferrer"&gt;https://medium.com/gitconnected/all-about-the-const-family-in-c-a87070d602b6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jvorbnw4sllpwapjcib.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%2F6jvorbnw4sllpwapjcib.png" alt="Image description" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>programming</category>
      <category>beginners</category>
      <category>c</category>
    </item>
    <item>
      <title>"Inside DuckDB" series articles</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Wed, 08 May 2024 08:27:00 +0000</pubDate>
      <link>https://dev.to/lightcity/inside-duckdb-series-articles-20in</link>
      <guid>https://dev.to/lightcity/inside-duckdb-series-articles-20in</guid>
      <description>&lt;p&gt;Recently, I’ve been interested in DuckDB’s code. DuckDB is a C++ open-source project, great for beginners to learn, especially those in the database industry.&lt;br&gt;
I will share knowledge about DuckDB kernel-Pipeline&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrdq5ep1kvuret841dfa.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%2Fvrdq5ep1kvuret841dfa.png" alt="Image description" width="800" height="337"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://levelup.gitconnected.com/inside-duckdb-deep-dive-into-duckdb-metapipeline-c9c3c891c2ad"&gt;Inside DuckDB: Deep Dive into DuckDB MetaPipeline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/inside-duckdb-a-comprehensive-guide-to-debugging-multi-threading-pipeline-with-lldb-gdb-fa6fe433f3ee"&gt;Inside DuckDB: A Comprehensive Guide to Debugging Multi-threading Pipeline with lldb/gdb&lt;/a&gt;&lt;/p&gt;

</description>
      <category>duckdb</category>
      <category>database</category>
      <category>programming</category>
      <category>cpp</category>
    </item>
    <item>
      <title>"Inside DuckDB" series articles</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Wed, 08 May 2024 08:27:00 +0000</pubDate>
      <link>https://dev.to/lightcity/inside-duckdb-series-articles-1b85</link>
      <guid>https://dev.to/lightcity/inside-duckdb-series-articles-1b85</guid>
      <description>&lt;p&gt;Recently, I’ve been interested in DuckDB’s code. DuckDB is a C++ open-source project, great for beginners to learn, especially those in the database industry.&lt;br&gt;
I will share knowledge about DuckDB kernel-Pipeline&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrdq5ep1kvuret841dfa.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%2Fvrdq5ep1kvuret841dfa.png" alt="Image description" width="800" height="337"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://levelup.gitconnected.com/inside-duckdb-deep-dive-into-duckdb-metapipeline-c9c3c891c2ad"&gt;Inside DuckDB: Deep Dive into DuckDB MetaPipeline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/inside-duckdb-a-comprehensive-guide-to-debugging-multi-threading-pipeline-with-lldb-gdb-fa6fe433f3ee"&gt;Inside DuckDB: A Comprehensive Guide to Debugging Multi-threading Pipeline with lldb/gdb&lt;/a&gt;&lt;/p&gt;

</description>
      <category>duckdb</category>
      <category>database</category>
      <category>programming</category>
      <category>cpp</category>
    </item>
    <item>
      <title>Inside DuckDB: Deep Dive into DuckDB MetaPipeline</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Wed, 17 Apr 2024 02:00:15 +0000</pubDate>
      <link>https://dev.to/lightcity/inside-duckdb-deep-dive-into-duckdb-metapipeline-4e9m</link>
      <guid>https://dev.to/lightcity/inside-duckdb-deep-dive-into-duckdb-metapipeline-4e9m</guid>
      <description>&lt;p&gt;Recently, I’ve been interested in DuckDB’s code and decided to take a look. DuckDB is a C++ open-source project, great for beginners to learn, especially those in the database industry.&lt;/p&gt;

&lt;p&gt;This section will delve into the MetaPipeline of DuckDB, using an example of joining two tables.&lt;/p&gt;

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

&lt;p&gt;SELECT name, score FROM student st INNER JOIN score s ON  st.id = s.stu_id;&lt;br&gt;
The final plan for this SQL is:&lt;/p&gt;

&lt;p&gt;➜  debug git:(master) ./duckdb stu&lt;br&gt;
v0.8.1-dev416 9d5158ccd2&lt;br&gt;
Enter ".help" for usage hints.&lt;br&gt;
D EXPLAIN SELECT name, score FROM student st INNER JOIN score s ON  st.id = s.stu_id;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────┐
│┌───────────────────────────┐│
││       Physical Plan       ││
│└───────────────────────────┘│
└─────────────────────────────┘
┌───────────────────────────┐                             
│         PROJECTION        │                             
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │                             
│            name           │                             
│           score           │                             
└─────────────┬─────────────┘                                                          
┌─────────────┴─────────────┐                             
│         HASH_JOIN         │                             
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │                             
│           INNER           │                             
│        stu_id = id        ├──────────────┐              
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │              │              
│           EC: 4           │              │              
│          Cost: 4          │              │              
└─────────────┬─────────────┘              │                                           
┌─────────────┴─────────────┐┌─────────────┴─────────────┐
│         SEQ_SCAN          ││         SEQ_SCAN          │
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   ││   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │
│           score           ││          student          │
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   ││   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │
│           stu_id          ││             id            │
│           score           ││            name           │
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   ││   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │
│           EC: 4           ││           EC: 3           │
└───────────────────────────┘└───────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before diving into this article, let’s ask a few questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What exactly happens with MetaPipeline?&lt;/li&gt;
&lt;li&gt;How many plans are there in the above plan?&lt;/li&gt;
&lt;li&gt;What is a Pipeline?&lt;/li&gt;
&lt;li&gt;What is a MetaPipeline?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, let’s get into the main content.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/gitconnected/inside-duckdb-deep-dive-into-duckdb-metapipeline-c9c3c891c2ad"&gt;Inside DuckDB: Deep Dive into DuckDB MetaPipeline&lt;/a&gt;&lt;/p&gt;

</description>
      <category>duckdb</category>
      <category>beginners</category>
      <category>cpp</category>
      <category>database</category>
    </item>
    <item>
      <title>C++ vs Rust: Crafting an Unwrap-Like Function Inspired by Rust</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Thu, 21 Mar 2024 07:56:42 +0000</pubDate>
      <link>https://dev.to/lightcity/c-vs-rust-crafting-an-unwrap-like-function-inspired-by-rust-1ad1</link>
      <guid>https://dev.to/lightcity/c-vs-rust-crafting-an-unwrap-like-function-inspired-by-rust-1ad1</guid>
      <description>&lt;p&gt;In C++ programming, there are situations where we need to pass references without making copies or use constant objects where references are needed. To address these issues, the C++ standard library provides three useful tools: std::cref, std::ref, and std::reference_wrapper. This article delves into the purposes, distinctions, and practical applications of these tools.&lt;/p&gt;

&lt;p&gt;Additionally, in the Rust language, the Unwrap method is often implemented. How can we achieve this in C++?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/c-vs-rust-crafting-an-unwrap-like-function-inspired-by-rust-6bca9cab32a8"&gt;C++ vs Rust: Crafting an Unwrap-Like Function Inspired by Rust&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>cpp</category>
      <category>functional</category>
      <category>programming</category>
    </item>
    <item>
      <title>Data Structure Visualization: 7 dynamic online visualization websites</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Tue, 19 Mar 2024 11:16:17 +0000</pubDate>
      <link>https://dev.to/lightcity/data-structure-visualization-7-dynamic-online-visualization-websites-dei</link>
      <guid>https://dev.to/lightcity/data-structure-visualization-7-dynamic-online-visualization-websites-dei</guid>
      <description>&lt;p&gt;In the realm of computer science, algorithms and data structures serve as the building blocks for robust software systems. However, understanding and analyzing these concepts can sometimes pose challenges. To aid learners in grasping these concepts more effectively, numerous developers and educators have created a variety of excellent algorithm and data structure visualization websites. In this blog post, I’ll introduce 7 of the most outstanding websites in this category and provide brief overviews of their features and advantages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://light-city.medium.com/data-structure-mastery-unleashed-8-dynamic-online-visualization-platforms-fdc62bcc1225"&gt;Data Structure Visualization: 7 dynamic online visualization websites&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0xk0bg55w27mwvpgkyr2.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%2F0xk0bg55w27mwvpgkyr2.png" alt="Image description" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>datastructures</category>
      <category>cpp</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>Efficient Memory Management: Exploring the pmr Module in C++17</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Tue, 27 Feb 2024 09:06:31 +0000</pubDate>
      <link>https://dev.to/lightcity/efficient-memory-management-exploring-the-pmr-module-in-c17-4mme</link>
      <guid>https://dev.to/lightcity/efficient-memory-management-exploring-the-pmr-module-in-c17-4mme</guid>
      <description>&lt;p&gt;Want to improve the performance of your C++ programs? Want to manage memory more efficiently and reduce memory fragmentation and system call calls? Then, the pmr (Polymorphic Memory Resource) module introduced in C++17 is the key tool you need to know!&lt;/p&gt;

&lt;p&gt;The pmr module provides C++ programmers with a powerful toolset that enables them to manage memory in a more flexible and efficient manner. With the pmr module, you can easily create custom memory resources and leverage the memory pool manager to optimize the performance of memory allocation and release. Not only that, the pmr module also provides you with a unified memory management interface, allowing you to easily and seamlessly integrate with other components of the standard library.&lt;/p&gt;

&lt;p&gt;origin article is:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/efficient-memory-management-exploring-the-pmr-module-in-c-17-adddf6b0d4ef"&gt;https://levelup.gitconnected.com/efficient-memory-management-exploring-the-pmr-module-in-c-17-adddf6b0d4ef&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cpp</category>
      <category>beginners</category>
    </item>
    <item>
      <title>C++ Performance Improvement through final devirtualization</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Fri, 12 Jan 2024 10:16:08 +0000</pubDate>
      <link>https://dev.to/lightcity/c-performance-improvement-through-final-devirtualization-31f1</link>
      <guid>https://dev.to/lightcity/c-performance-improvement-through-final-devirtualization-31f1</guid>
      <description>&lt;p&gt;C++, the final keyword proves to be useful in everyday interviews and work scenarios. When asked about final, you can provide the following information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prevents further inheritance&lt;/li&gt;
&lt;li&gt;Prohibits virtual function overriding&lt;/li&gt;
&lt;li&gt;Enables devirtualization for performance improvement&lt;/li&gt;
&lt;li&gt;Acts as a design constraint, preventing subclass inheritance and avoiding subclass overrides&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/c-performance-improvement-through-final-devirtualization-258e7ae1d2b5"&gt;https://levelup.gitconnected.com/c-performance-improvement-through-final-devirtualization-258e7ae1d2b5&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>performance</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Conan Zero to Hero: A Beginner’s Guide with a Practical Project Example Using gtest</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Mon, 08 Jan 2024 06:43:22 +0000</pubDate>
      <link>https://dev.to/lightcity/conan-zero-to-hero-a-beginners-guide-with-a-practical-project-example-using-gtest-1b9d</link>
      <guid>https://dev.to/lightcity/conan-zero-to-hero-a-beginners-guide-with-a-practical-project-example-using-gtest-1b9d</guid>
      <description>&lt;p&gt;Conan is an open-source, cross-platform package manager designed to simplify the process of managing and distributing C and C++ libraries. It helps developers handle dependencies efficiently by providing a centralized system to package, share, and reuse code. Conan is particularly useful for managing dependencies in C and C++ projects, where manual management can become complex.&lt;/p&gt;

&lt;p&gt;let us use conan to write an actual gtest project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/conan-zero-to-hero-a-beginners-guide-with-a-practical-project-example-using-gtest-1299baac970e"&gt;https://levelup.gitconnected.com/conan-zero-to-hero-a-beginners-guide-with-a-practical-project-example-using-gtest-1299baac970e&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cpp</category>
      <category>conan</category>
      <category>gtest</category>
    </item>
    <item>
      <title>Optimizing C++ Exception Debugging with GDB: Effective Strategies for Troubleshooting</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Sat, 06 Jan 2024 07:44:16 +0000</pubDate>
      <link>https://dev.to/lightcity/optimizing-c-exception-debugging-with-gdb-effective-strategies-for-troubleshooting-4db7</link>
      <guid>https://dev.to/lightcity/optimizing-c-exception-debugging-with-gdb-effective-strategies-for-troubleshooting-4db7</guid>
      <description>&lt;p&gt;In a large project, exceptions may be thrown in various places, and when encountering crashes or exceptions, it’s crucial to address two main issues:&lt;/p&gt;

&lt;p&gt;Exception Source: Determine where the exception is thrown.&lt;br&gt;
Exception Handling: Identify where the exception is caught.&lt;br&gt;
Exceptions can be triggered by custom code or thrown by underlying libraries, making it challenging to pinpoint the exact location.&lt;/p&gt;

&lt;p&gt;Fortunately, GDB provides two essential commands for handling these situations:&lt;/p&gt;

&lt;p&gt;To catch exceptions thrown: catch throw&lt;br&gt;
To catch exceptions caught: catch catch&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G07NFgcE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k7nfj3cq3rq4sxhfu43x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G07NFgcE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k7nfj3cq3rq4sxhfu43x.png" alt="Image description" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More detail: &lt;a href="https://light-city.medium.com/how-to-use-gdb-to-debug-exceptions-with-zero-experience-5d61e4b7d14e"&gt;https://light-city.medium.com/how-to-use-gdb-to-debug-exceptions-with-zero-experience-5d61e4b7d14e&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Coding in the Cloud: Mastering Online Compilers for Efficient Development</title>
      <dc:creator>Francis</dc:creator>
      <pubDate>Fri, 05 Jan 2024 14:45:59 +0000</pubDate>
      <link>https://dev.to/lightcity/coding-in-the-cloud-mastering-online-compilers-for-efficient-development-3il7</link>
      <guid>https://dev.to/lightcity/coding-in-the-cloud-mastering-online-compilers-for-efficient-development-3il7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CfgOWJaj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/luqd5ati9y41q7pqh5ea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CfgOWJaj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/luqd5ati9y41q7pqh5ea.png" alt="Image description" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ww-erapt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k6rt6c9vlgpjkgr48yjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ww-erapt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k6rt6c9vlgpjkgr48yjh.png" alt="Image description" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More Online Compilers: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://light-city.medium.com/coding-in-the-cloud-mastering-online-compilers-for-efficient-development-6fa55fdc9c4e"&gt;https://light-city.medium.com/coding-in-the-cloud-mastering-online-compilers-for-efficient-development-6fa55fdc9c4e&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>cpp</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
