<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software on Kaisekukun</title><link>https://netguide.jp/zh-tw/tags/software/</link><description>Recent content in Software on Kaisekukun</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Kaisekukun</copyright><lastBuildDate>Sun, 12 Jul 2026 00:11:25 +0900</lastBuildDate><atom:link href="https://netguide.jp/zh-tw/tags/software/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting Up a Local Dev Environment with Docker</title><link>https://netguide.jp/zh-tw/software/docker-local-development/</link><pubDate>Sun, 21 Jun 2026 11:00:00 +0900</pubDate><guid>https://netguide.jp/zh-tw/software/docker-local-development/</guid><description>&lt;img src="https://netguide.jp/img/thumbnail/docker-local-development-zh-tw.png" alt="Featured image of post Setting Up a Local Dev Environment with Docker" /&gt;&lt;p&gt;&amp;ldquo;It works on my machine&amp;rdquo; is a phrase every developer knows all too well. Docker solves this by packaging your application and its dependencies into portable containers. This article walks through setting up a local development environment with Docker.&lt;/p&gt;
&lt;h2 id="the-three-core-concepts"&gt;The Three Core Concepts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;: A blueprint for your container — which base image to use and what to install.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;docker-compose.yml&lt;/strong&gt;: A configuration file for managing multiple containers (web server, database, cache, etc.) together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Volume mount&lt;/strong&gt;: Lets the container reference files on your host machine. Essential for hot reload.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="multi-service-setup-with-docker-compose"&gt;Multi-Service Setup with docker-compose
&lt;/h2&gt;&lt;p&gt;A typical frontend + backend + database setup can be defined in a single &lt;code&gt;docker-compose.yml&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Maximize Coding Efficiency: Recommended Lightweight Code Editors and Customization</title><link>https://netguide.jp/zh-tw/software/coding-efficiency-lightweight-editors/</link><pubDate>Thu, 18 Jun 2026 12:40:00 +0900</pubDate><guid>https://netguide.jp/zh-tw/software/coding-efficiency-lightweight-editors/</guid><description>&lt;img src="https://netguide.jp/img/thumbnail/coding-efficiency-lightweight-editors-zh-tw.png" alt="Featured image of post Maximize Coding Efficiency: Recommended Lightweight Code Editors and Customization" /&gt;&lt;p&gt;In modern software development, the comfort of your workspace directly impacts your productivity. While feature-rich Integrated Development Environments (IDEs) are highly convenient, their slow startup times and heavy memory consumption can often be frustrating. This is why many developers are turning to &amp;ldquo;lightweight code editors&amp;rdquo;—tools that run incredibly fast while offering the flexibility to add features as needed.&lt;/p&gt;</description></item><item><title>VS Code Shortcuts to Supercharge Your Productivity</title><link>https://netguide.jp/zh-tw/software/vscode-shortcuts-productivity/</link><pubDate>Tue, 26 May 2026 11:00:00 +0900</pubDate><guid>https://netguide.jp/zh-tw/software/vscode-shortcuts-productivity/</guid><description>&lt;img src="https://netguide.jp/img/thumbnail/vscode-shortcuts-productivity-zh-tw.png" alt="Featured image of post VS Code Shortcuts to Supercharge Your Productivity" /&gt;&lt;p&gt;VS Code is highly customizable, but simply learning its built-in keyboard shortcuts can dramatically speed up your daily coding. This article covers the most essential shortcuts and how to customize them to your liking.&lt;/p&gt;
&lt;h2 id="must-know-basics"&gt;Must-Know Basics
&lt;/h2&gt;&lt;p&gt;Mastering these shortcuts will drastically reduce the number of times you reach for your mouse:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Action&lt;/th&gt;
					&lt;th&gt;Windows / Linux&lt;/th&gt;
					&lt;th&gt;macOS&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Command Palette&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Ctrl+Shift+P&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Cmd+Shift+P&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Quick File Search&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Ctrl+P&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Cmd+P&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Toggle Sidebar&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Ctrl+B&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Cmd+B&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Split Editor&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Ctrl+\&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Cmd+\&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Toggle Terminal&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Ctrl+`&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Ctrl+`&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="start-with-the-command-palette"&gt;Start with the Command Palette
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Ctrl+Shift+P&lt;/code&gt; (or &lt;code&gt;Cmd+Shift+P&lt;/code&gt; on macOS) opens the Command Palette, the gateway to every VS Code feature. You can save files, run formatters, install extensions, and more without ever touching the mouse. Learn this one first.&lt;/p&gt;</description></item><item><title>A Quick Overview of New TypeScript Features</title><link>https://netguide.jp/zh-tw/software/typescript-new-features-summary/</link><pubDate>Sun, 01 Feb 2026 11:00:00 +0900</pubDate><guid>https://netguide.jp/zh-tw/software/typescript-new-features-summary/</guid><description>&lt;img src="https://netguide.jp/img/thumbnail/typescript-new-features-summary-zh-tw.png" alt="Featured image of post A Quick Overview of New TypeScript Features" /&gt;&lt;p&gt;The TypeScript 5.x series has introduced many features that strengthen the type system and improve the developer experience. This article highlights the ones most useful in everyday coding.&lt;/p&gt;
&lt;h2 id="const-type-parameters-50"&gt;Const Type Parameters (5.0)
&lt;/h2&gt;&lt;p&gt;Adding a &lt;code&gt;const&lt;/code&gt; modifier to a function&amp;rsquo;s type parameter preserves literal types when passing values through.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;getConfig&lt;/span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;T&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;extends&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;readonly&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;string&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;[]&lt;/span&gt;&amp;gt;(&lt;span style="color:#a6e22e"&gt;keys&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;T&lt;/span&gt;)&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;T&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;keys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Before: inferred as string[]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;config1&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;getConfig&lt;/span&gt;([&lt;span style="color:#e6db74"&gt;&amp;#39;dev&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;staging&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;prod&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// With const type parameter: inferred as a tuple of literals
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;config2&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;getConfig&lt;/span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;const&lt;/span&gt;&amp;gt;([&lt;span style="color:#e6db74"&gt;&amp;#39;dev&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;staging&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;prod&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// type: readonly [&amp;#34;dev&amp;#34;, &amp;#34;staging&amp;#34;, &amp;#34;prod&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is handy when you want object properties to keep their literal types. No need to write &lt;code&gt;as const&lt;/code&gt; at the call site — the code stays clean.&lt;/p&gt;</description></item><item><title>Getting Started with CI/CD Using GitHub Actions</title><link>https://netguide.jp/zh-tw/software/github-actions-ci-cd-basics/</link><pubDate>Tue, 06 Jan 2026 11:00:00 +0900</pubDate><guid>https://netguide.jp/zh-tw/software/github-actions-ci-cd-basics/</guid><description>&lt;img src="https://netguide.jp/img/thumbnail/github-actions-ci-cd-basics-zh-tw.png" alt="Featured image of post Getting Started with CI/CD Using GitHub Actions" /&gt;&lt;p&gt;If &amp;ldquo;CI/CD&amp;rdquo; sounds like something you should know but don&amp;rsquo;t know where to start, this guide is for you. &lt;strong&gt;GitHub Actions&lt;/strong&gt; makes continuous integration and delivery accessible to everyone with a GitHub repository.&lt;/p&gt;
&lt;h2 id="what-is-github-actions"&gt;What is GitHub Actions?
&lt;/h2&gt;&lt;p&gt;GitHub Actions is a CI/CD platform built directly into GitHub. It lets you automate testing, building, and deploying right from your repository. Workflows trigger on pushes, pull requests, or scheduled events.&lt;/p&gt;
&lt;h2 id="1-workflow-basics"&gt;1. Workflow Basics
&lt;/h2&gt;&lt;p&gt;Place a YAML file inside &lt;code&gt;.github/workflows/&lt;/code&gt; to define your workflow.&lt;/p&gt;</description></item><item><title>Next.js App Router Basics and Migration Tips</title><link>https://netguide.jp/zh-tw/software/nextjs-app-router-basics/</link><pubDate>Sat, 03 Jan 2026 11:00:00 +0900</pubDate><guid>https://netguide.jp/zh-tw/software/nextjs-app-router-basics/</guid><description>&lt;img src="https://netguide.jp/img/thumbnail/nextjs-app-router-basics-zh-tw.png" alt="Featured image of post Next.js App Router Basics and Migration Tips" /&gt;&lt;p&gt;Introduced in Next.js 13, the &lt;strong&gt;App Router&lt;/strong&gt; takes a fundamentally different approach to routing and rendering compared to the traditional Pages Router. Now stable and widely adopted, let&amp;rsquo;s break down the basics for those planning to migrate.&lt;/p&gt;
&lt;h2 id="app-router-vs-pages-router"&gt;App Router vs Pages Router
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Feature&lt;/th&gt;
					&lt;th&gt;Pages Router&lt;/th&gt;
					&lt;th&gt;App Router&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Routing&lt;/td&gt;
					&lt;td&gt;Under &lt;code&gt;pages/&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Under &lt;code&gt;app/&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Components&lt;/td&gt;
					&lt;td&gt;Client Component by default&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Server Component&lt;/strong&gt; by default&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Layouts&lt;/td&gt;
					&lt;td&gt;Manual implementation&lt;/td&gt;
					&lt;td&gt;Nestable &lt;code&gt;layout.js&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Loading&lt;/td&gt;
					&lt;td&gt;Manual implementation&lt;/td&gt;
					&lt;td&gt;Automatic via &lt;code&gt;loading.js&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Data Fetching&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;getServerSideProps&lt;/code&gt;, etc.&lt;/td&gt;
					&lt;td&gt;Direct &lt;code&gt;async&lt;/code&gt; inside components&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="1-file-based-routing"&gt;1. File-Based Routing
&lt;/h2&gt;&lt;p&gt;Folder structure inside &lt;code&gt;app/&lt;/code&gt; maps directly to URL paths.&lt;/p&gt;</description></item></channel></rss>