<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>reMarkable 3 Blog</title>
        <link>https://pangpond.github.io/remarkable3/code</link>
        <description>reMarkable 3 Blog</description>
        <lastBuildDate>Wed, 15 Oct 2025 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Github and Friends]]></title>
            <link>https://pangpond.github.io/remarkable3/code/github-and-friends</link>
            <guid>https://pangpond.github.io/remarkable3/code/github-and-friends</guid>
            <pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[- gh]]></description>
            <content:encoded><![CDATA[<ul>
<li>gh</li>
<li>ghq</li>
<li>gq</li>
<li>tmux</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-install-gh-ghq-with-homebrew">1. install gh, ghq with homebrew<a href="https://pangpond.github.io/remarkable3/code/github-and-friends#1-install-gh-ghq-with-homebrew" class="hash-link" aria-label="Direct link to 1. install gh, ghq with homebrew" title="Direct link to 1. install gh, ghq with homebrew">​</a></h4>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew install gh</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew install ghq</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">// make sure gh work</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">gh auth login</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">gh auth status</span><br></span></code></pre></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-create-gqsh">2. create gq.sh<a href="https://pangpond.github.io/remarkable3/code/github-and-friends#2-create-gqsh" class="hash-link" aria-label="Direct link to 2. create gq.sh" title="Direct link to 2. create gq.sh">​</a></h4>
<p>create <code>~/sandbox/scripts/gq.sh</code> by copy content at <a href="https://gist.github.com/pangpond/e65ddd8abc7bc5c11b0babf98dc2cb57" target="_blank" rel="noopener noreferrer">https://gist.github.com/pangpond/e65ddd8abc7bc5c11b0babf98dc2cb57</a></p>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">mkdir </span><span class="token operator" style="color:hsl(221, 87%, 60%)">-</span><span class="token plain">p </span><span class="token operator" style="color:hsl(221, 87%, 60%)">~</span><span class="token operator" style="color:hsl(221, 87%, 60%)">/</span><span class="token plain">sandbox</span><span class="token operator" style="color:hsl(221, 87%, 60%)">/</span><span class="token plain">scripts</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">touch </span><span class="token operator" style="color:hsl(221, 87%, 60%)">~</span><span class="token operator" style="color:hsl(221, 87%, 60%)">/</span><span class="token plain">sandbox</span><span class="token operator" style="color:hsl(221, 87%, 60%)">/</span><span class="token plain">scripts</span><span class="token operator" style="color:hsl(221, 87%, 60%)">/</span><span class="token plain">gq</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token property-access">sh</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-source-the-script">3. source the script<a href="https://pangpond.github.io/remarkable3/code/github-and-friends#3-source-the-script" class="hash-link" aria-label="Direct link to 3. source the script" title="Direct link to 3. source the script">​</a></h4>
<p>in your shell configuration file: Add this line to your ~/.zshrc (or ~/.bashrc if using bash):
<code>source ~/sandbox/scripts/gq.sh</code></p>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">zed </span><span class="token operator" style="color:hsl(221, 87%, 60%)">~</span><span class="token operator" style="color:hsl(221, 87%, 60%)">/</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token property-access">zshrc</span><br></span></code></pre></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="4-reload-your-shell">4. reload your shell:<a href="https://pangpond.github.io/remarkable3/code/github-and-friends#4-reload-your-shell" class="hash-link" aria-label="Direct link to 4. reload your shell:" title="Direct link to 4. reload your shell:">​</a></h4>
<p><code>source ~/.zshrc</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="5-use-the-function">5. use the function:<a href="https://pangpond.github.io/remarkable3/code/github-and-friends#5-use-the-function" class="hash-link" aria-label="Direct link to 5. use the function:" title="Direct link to 5. use the function:">​</a></h4>
<p><code>gq https://github.com/user/repo</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="install-tmux-yq-uvx">install tmux, yq, uvx<a href="https://pangpond.github.io/remarkable3/code/github-and-friends#install-tmux-yq-uvx" class="hash-link" aria-label="Direct link to install tmux, yq, uvx" title="Direct link to install tmux, yq, uvx">​</a></h4>
<p>install uvx</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-LsSf</span><span class="token plain"> https://astral.sh/uv/install.sh </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> </span><span class="token function" style="color:hsl(221, 87%, 60%)">sh</span><br></span></code></pre></div></div>
<p>install tmux, yq</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token extra-cli-commands function" style="color:hsl(221, 87%, 60%)">brew</span><span class="token plain"> </span><span class="token function" style="color:hsl(221, 87%, 60%)">install</span><span class="token plain"> tmux yq</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="init-multi-agent-kit">init multi agent kit<a href="https://pangpond.github.io/remarkable3/code/github-and-friends#init-multi-agent-kit" class="hash-link" aria-label="Direct link to init multi agent kit" title="Direct link to init multi agent kit">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">uvx --no-cache </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--from</span><span class="token plain"> git+https://github.com/Soul-Brews-Studio/multi-agent-workflow-kit.git@v0.5.1 multi-agent-kit init</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>code</category>
            <category>git</category>
        </item>
        <item>
            <title><![CDATA[Left Hook]]></title>
            <link>https://pangpond.github.io/remarkable3/code/left-hool</link>
            <guid>https://pangpond.github.io/remarkable3/code/left-hool</guid>
            <pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Lefthook คือเครื่องมือจัดการ Git hooks ที่รวดเร็วและทรงพลัง ใช้สำหรับรันสคริปต์อัตโนมัติในขั้นตอนต่างๆ ของ Git ช่วยให้ทีมรักษาคุณภาพโค้ดโดยอัตโนมัติก่อนที่จะ commit!]]></description>
            <content:encoded><![CDATA[<p>Lefthook คือเครื่องมือจัดการ Git hooks ที่รวดเร็วและทรงพลัง ใช้สำหรับรันสคริปต์อัตโนมัติในขั้นตอนต่างๆ ของ Git ช่วยให้ทีมรักษาคุณภาพโค้ดโดยอัตโนมัติก่อนที่จะ commit!</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lefthook-for-tsx-project">lefthook for tsx project<a href="https://pangpond.github.io/remarkable3/code/left-hool#lefthook-for-tsx-project" class="hash-link" aria-label="Direct link to lefthook for tsx project" title="Direct link to lefthook for tsx project">​</a></h2>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">pre-commit</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">parallel</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">commands</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">lint</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">glob</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"*.{js,ts,jsx,tsx}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">run</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> npx eslint </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain">staged_files</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">types</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">glob</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"*.{js,ts, jsx, tsx}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">run</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> npx tsc</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">commit-msg</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">parallel</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">commands</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">commitlint</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">run</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> npx commitlint </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">edit</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="สิ่งที่-lefthook-ทำในโปรเจ็กต์นี้">สิ่งที่ Lefthook ทำในโปรเจ็กต์นี้:<a href="https://pangpond.github.io/remarkable3/code/left-hool#%E0%B8%AA%E0%B8%B4%E0%B9%88%E0%B8%87%E0%B8%97%E0%B8%B5%E0%B9%88-lefthook-%E0%B8%97%E0%B8%B3%E0%B9%83%E0%B8%99%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%80%E0%B8%88%E0%B9%87%E0%B8%81%E0%B8%95%E0%B9%8C%E0%B8%99%E0%B8%B5%E0%B9%89" class="hash-link" aria-label="Direct link to สิ่งที่ Lefthook ทำในโปรเจ็กต์นี้:" title="Direct link to สิ่งที่ Lefthook ทำในโปรเจ็กต์นี้:">​</a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="pre-commit-hooks">Pre-commit hooks:<a href="https://pangpond.github.io/remarkable3/code/left-hool#pre-commit-hooks" class="hash-link" aria-label="Direct link to Pre-commit hooks:" title="Direct link to Pre-commit hooks:">​</a></h4>
<ul>
<li>Lint: รัน ESLint กับไฟล์ที่ staged (.js, .ts, .jsx, .tsx)</li>
<li>Types: รัน TypeScript compiler เพื่อตรวจสอบ type errors</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="commit-msg-hooks">Commit-msg hooks:<a href="https://pangpond.github.io/remarkable3/code/left-hool#commit-msg-hooks" class="hash-link" aria-label="Direct link to Commit-msg hooks:" title="Direct link to Commit-msg hooks:">​</a></h4>
<ul>
<li>Commitlint: ตรวจสอบรูปแบบ commit message ตาม Conventional Commits</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="ประโยชน์ของ-lefthook">ประโยชน์ของ Lefthook:<a href="https://pangpond.github.io/remarkable3/code/left-hool#%E0%B8%9B%E0%B8%A3%E0%B8%B0%E0%B9%82%E0%B8%A2%E0%B8%8A%E0%B8%99%E0%B9%8C%E0%B8%82%E0%B8%AD%E0%B8%87-lefthook" class="hash-link" aria-label="Direct link to ประโยชน์ของ Lefthook:" title="Direct link to ประโยชน์ของ Lefthook:">​</a></h3>
<ol>
<li>ความเร็ว: เขียนด้วย Go ทำให้เร็วกว่า Git hooks ปกติ</li>
<li>Parallel execution: รันคำสั่งหลายๆ ตัวพร้อมกันได้</li>
<li>Flexible: กำหนดเงื่อนไขการรันได้ละเอียด (glob patterns)</li>
<li>Easy setup: กำหนดค่าในไฟล์ YAML เดียว</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="การติดตั้ง">การติดตั้ง:<a href="https://pangpond.github.io/remarkable3/code/left-hool#%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87" class="hash-link" aria-label="Direct link to การติดตั้ง:" title="Direct link to การติดตั้ง:">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># ติดตั้ง lefthook</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">npm</span><span class="token plain"> </span><span class="token function" style="color:hsl(221, 87%, 60%)">install</span><span class="token plain"> --save-dev lefthook</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)"># ติดตั้ง git hooks</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token extra-cli-commands function" style="color:hsl(221, 87%, 60%)">npx</span><span class="token plain"> lefthook </span><span class="token function" style="color:hsl(221, 87%, 60%)">install</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lefthook-for-php-project">lefthook for PHP project<a href="https://pangpond.github.io/remarkable3/code/left-hool#lefthook-for-php-project" class="hash-link" aria-label="Direct link to lefthook for PHP project" title="Direct link to lefthook for PHP project">​</a></h2>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">pre-commit</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">parallel</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">commands</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># PHP Syntax Check</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">php-lint</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">glob</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"*.php"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">run</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> php </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">l </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain">staged_files</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># PHP Code Sniffer</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">phpcs</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">glob</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"*.php"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">run</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> vendor/bin/phpcs </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain">staged_files</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># PHP CS Fixer</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">php-cs-fixer</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">glob</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"*.php"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">run</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> vendor/bin/php</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">cs</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">fixer fix </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">dry</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">run </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">diff </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain">staged_files</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># PHPStan (Static Analysis)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">phpstan</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">glob</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"*.php"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">run</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> vendor/bin/phpstan analyse </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain">staged_files</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">commit-msg</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">commands</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Conventional Commits</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">commitlint</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">run</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> npx commitlint </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">edit</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="การติดตั้ง-1">การติดตั้ง:<a href="https://pangpond.github.io/remarkable3/code/left-hool#%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87-1" class="hash-link" aria-label="Direct link to การติดตั้ง:" title="Direct link to การติดตั้ง:">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># ติดตั้ง lefthook</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">vendor/bin/lefthook </span><span class="token function" style="color:hsl(221, 87%, 60%)">install</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>code</category>
            <category>git</category>
        </item>
        <item>
            <title><![CDATA[Awesome AI]]></title>
            <link>https://pangpond.github.io/remarkable3/code/awesome-ai</link>
            <guid>https://pangpond.github.io/remarkable3/code/awesome-ai</guid>
            <pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Cline.bot]]></description>
            <content:encoded><![CDATA[<h3 class="anchor anchorWithStickyNavbar_LWe7" id="clinebot">Cline.bot<a href="https://pangpond.github.io/remarkable3/code/awesome-ai#clinebot" class="hash-link" aria-label="Direct link to Cline.bot" title="Direct link to Cline.bot">​</a></h3>
<p>เป็น Open Source AI coding agent / ผู้ช่วยเขียนโค้ดอัตโนมัติ ที่ทำงานภายใน IDE เป็น “agent” ที่ไปไกลกว่าการเติมข้อความอัตโนมัติ (autocomplete) — Cline สามารถวิเคราะห์โปรเจกต์ทั้งชุด, วางแผน, ทำ refactor, แก้บั๊กหลายไฟล์, รันคำสั่งเทอร์มินอล โค้ดของผู้ใช้จะไม่ถูกส่งผ่าน server กลางของ Cline โดยตรง ผู้ใช้จะใช้คีย์ API ของตนไปเรียกโมเดล AI ตามที่ตั้งไว้เอง ช่วยลดความเสี่ยงด้านความเป็นส่วนตัวและการรั่วไหลของโค้ด</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="zai">Z.ai<a href="https://pangpond.github.io/remarkable3/code/awesome-ai#zai" class="hash-link" aria-label="Direct link to Z.ai" title="Direct link to Z.ai">​</a></h3>
<p>(เดิมชื่อ Zhipu AI) คือบริษัทและแพลตฟอร์มปัญญาประดิษฐ์จากจีน ที่มุ่งพัฒนาโมเดลภาษา (language models) และระบบ “ปัญญาประดิษฐ์เชิงตัวแทน (agentic AI)” โดยมีจุดมุ่งหมายให้ AI สามารถทำ reasoning, เขียนโค้ด, ใช้เครื่องมือ (tool use) ในการแก้ปัญหาหลายขั้นตอนได้อย่างอัตโนมัติ</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="factoryai">Factory.ai<a href="https://pangpond.github.io/remarkable3/code/awesome-ai#factoryai" class="hash-link" aria-label="Direct link to Factory.ai" title="Direct link to Factory.ai">​</a></h3>
<p>แพลตฟอร์มปัญญาประดิษฐ์ที่ออกแบบมาเพื่อช่วย อัปเกรดกระบวนการพัฒนาซอฟต์แวร์ ให้เร็วและอัตโนมัติมากขึ้น โดยใช้ตัวแทน AI ที่เรียกว่า “Droids” ทำงานครอบคลุมตั้งแต่การเขียนโค้ด ทดสอบ ตรวจทาน จัดการบั๊ก ฯลฯ</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="จุดเด่นหลักของ-clinebot">จุดเด่นหลักของ Cline.bot<a href="https://pangpond.github.io/remarkable3/code/awesome-ai#%E0%B8%88%E0%B8%B8%E0%B8%94%E0%B9%80%E0%B8%94%E0%B9%88%E0%B8%99%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81%E0%B8%82%E0%B8%AD%E0%B8%87-clinebot" class="hash-link" aria-label="Direct link to จุดเด่นหลักของ Cline.bot" title="Direct link to จุดเด่นหลักของ Cline.bot">​</a></h3>
<ul>
<li>ความโปร่งใส — ผู้ใช้เห็นทุกการกระทำของ Cline และตัดสินใจเองว่าอนุมัติหรือไม่ ￼</li>
<li>ไม่ล็อกกับโมเดล / แพลตฟอร์มเดียว — ผู้ใช้เลือกโมเดลได้หลากหลายตามที่มีคีย์ API ￼</li>
<li>เหมาะกับการพัฒนาโค้ดจริงจัง — ทำงานกับโปรเจกต์ขนาดใหญ่ได้ (โดยการจัดการบริบท) ￼</li>
<li>รันโค้ด/ทดสอบเพื่อ feedback — ทำให้การแก้ไขโค้ดมีวง Feedback โดยตรงจาก runtime ￼</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="จุดเด่นหลักของ-zai">จุดเด่นหลักของ Z.ai<a href="https://pangpond.github.io/remarkable3/code/awesome-ai#%E0%B8%88%E0%B8%B8%E0%B8%94%E0%B9%80%E0%B8%94%E0%B9%88%E0%B8%99%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81%E0%B8%82%E0%B8%AD%E0%B8%87-zai" class="hash-link" aria-label="Direct link to จุดเด่นหลักของ Z.ai" title="Direct link to จุดเด่นหลักของ Z.ai">​</a></h3>
<ul>
<li>โมเดล GLM-4.5 (และรุ่นย่อย เช่น GLM-4.5-Air) เป็นโมเดลหลักที่ Z.ai ใช้ ซึ่งรองรับ reasoning + coding + agentic tasks ในตัวเดียว ￼</li>
<li>รองรับ “thinking mode” (ใช้สำหรับงานที่ต้องการตรรกะหลายขั้นตอน) และ “non-thinking mode” (ตอบเร็วสำหรับงานทั่วไป) ￼</li>
<li>มี API ที่ออกแบบให้ใช้งานในแบบเดียวกับ OpenAI (RESTful, function / tool calling) เพื่อให้นักพัฒนาสามารถ integrate เข้ากับระบบอื่นได้ง่าย ￼</li>
<li>เป็น โอเพนซอร์ส / เปิดเผยน้ำหนักโมเดล (open weight) ภายใต้สัญญาอนุญาต MIT ในหลายกรณี ทำให้ผู้พัฒนาสามารถใช้งาน ปรับแต่ง หรือโฮสต์ในระบบของตนเองได้ ￼</li>
<li>ราคาถูกกว่าโมเดลบางตัวในตลาด เช่น Z.ai เคลมว่าโมเดล GLM-4.5 มีค่าต้นทุนต่ำกว่าบางโมเดลคู่แข่ง เช่น DeepSeek ￼</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="จุดเด่นหลักของ-factoryai">จุดเด่นหลักของ Factory.ai<a href="https://pangpond.github.io/remarkable3/code/awesome-ai#%E0%B8%88%E0%B8%B8%E0%B8%94%E0%B9%80%E0%B8%94%E0%B9%88%E0%B8%99%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81%E0%B8%82%E0%B8%AD%E0%B8%87-factoryai" class="hash-link" aria-label="Direct link to จุดเด่นหลักของ Factory.ai" title="Direct link to จุดเด่นหลักของ Factory.ai">​</a></h4>
<ul>
<li>Droids: เป็น “เอเจนต์ AI” ที่สามารถรับคำสั่งเป็นภาษา (ticket, prompt ฯลฯ) แล้วสั่งงานต่อ ให้ทำเป็นฟีเจอร์ สมมุติเป็น Dev ที่ช่วยเขียน ตรวจสอบ หรือแก้บั๊ก ให้เสร็จในตัว ￼</li>
<li>บูรณาการเข้ากับเครื่องมือในระบบวิศวกร เช่น GitHub, Slack, ระบบติดตามบั๊ก ฯลฯ เพื่อให้ Droids เข้าใจ “บริบท” ของโปรเจกต์ได้ดี ￼</li>
<li>ครอบคลุมวงจรการพัฒนา (SDLC — Software Development Life Cycle): ไม่ใช่แค่ช่วยเขียนโค้ด แต่รวมถึงการวางแผน ทดสอบ ตรวจสอบ และบำรุงรักษา ￼</li>
<li>ความปลอดภัย &amp; การปฏิบัติตามมาตรฐาน: สำหรับลูกค้าองค์กรมักมีฟีเจอร์เรื่อง SSO, SAML, audit logs ฯลฯ เพื่อให้เหมาะสมกับสภาพแวดล้อมที่ต้องการความปลอดภัยสูง ￼</li>
</ul>]]></content:encoded>
            <category>code</category>
            <category>ai</category>
        </item>
        <item>
            <title><![CDATA[Conventional Commits]]></title>
            <link>https://pangpond.github.io/remarkable3/code/conventional-commits</link>
            <guid>https://pangpond.github.io/remarkable3/code/conventional-commits</guid>
            <pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Conventional Commits คือมาตรฐานการเขียน commit message ที่ช่วยให้ทีมพัฒนาสื่อสารการเปลี่ยนแปลงของโค้ดได้ชัดเจนและเป็นระบบ การยึดรูปแบบนี้ช่วยให้ทีมทำงานสอดคล้องกัน, ค้นหาความเปลี่ยนแปลงย้อนหลังสะดวก และรองรับการสร้างเวอร์ชัน/รีลีสแบบอัตโนมัติได้ง่ายขึ้น.]]></description>
            <content:encoded><![CDATA[<p>Conventional Commits คือมาตรฐานการเขียน commit message ที่ช่วยให้ทีมพัฒนาสื่อสารการเปลี่ยนแปลงของโค้ดได้ชัดเจนและเป็นระบบ การยึดรูปแบบนี้ช่วยให้ทีมทำงานสอดคล้องกัน, ค้นหาความเปลี่ยนแปลงย้อนหลังสะดวก และรองรับการสร้างเวอร์ชัน/รีลีสแบบอัตโนมัติได้ง่ายขึ้น.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="รูปแบบพื้นฐาน">รูปแบบพื้นฐาน:<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#%E0%B8%A3%E0%B8%B9%E0%B8%9B%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%9E%E0%B8%B7%E0%B9%89%E0%B8%99%E0%B8%90%E0%B8%B2%E0%B8%99" class="hash-link" aria-label="Direct link to รูปแบบพื้นฐาน:" title="Direct link to รูปแบบพื้นฐาน:">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token operator" style="color:hsl(221, 87%, 60%)">&lt;</span><span class="token plain">type</span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">[</span><span class="token plain">optional scope</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">]</span><span class="token plain">: </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&lt;</span><span class="token plain">description</span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">[</span><span class="token plain">optional body</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">[</span><span class="token plain">optional footer</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">s</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">]</span><br></span></code></pre></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="ประเภท-ใน-conventional-commits">ประเภท ใน Conventional Commits:<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#%E0%B8%9B%E0%B8%A3%E0%B8%B0%E0%B9%80%E0%B8%A0%E0%B8%97-%E0%B9%83%E0%B8%99-conventional-commits" class="hash-link" aria-label="Direct link to ประเภท ใน Conventional Commits:" title="Direct link to ประเภท ใน Conventional Commits:">​</a></h4>
<ul>
<li><code>feat</code>: ฟีเจอร์ใหม่</li>
<li><code>fix</code>: แก้ไขบัค</li>
<li><code>docs</code>: เอกสาร</li>
<li><code>style</code>: การจัดรูปแบบโค้ด</li>
<li><code>refactor</code>: ปรับปรุงโค้ด</li>
<li><code>test</code>: เพิ่ม/แก้ไขเทส</li>
<li><code>chore</code>: งานบำรุงรักษา, การตั้งค่า, การอัปเดต dependencies</li>
</ul>
<p>การใช้ chore ช่วยให้ทีมเข้าใจได้ทันทีว่าการเปลี่ยนแปลงนั้นเป็นการปรับปรุงที่ไม่ส่งผลต่อฟังก์ชันการทำงานหลักของโปรแกรม</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="ตัวอย่างการใช้-chore">ตัวอย่างการใช้ chore:<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#%E0%B8%95%E0%B8%B1%E0%B8%A7%E0%B8%AD%E0%B8%A2%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89-chore" class="hash-link" aria-label="Direct link to ตัวอย่างการใช้ chore:" title="Direct link to ตัวอย่างการใช้ chore:">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"chore: update .gitignore"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"chore: reorganize folder structure"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"chore: update dependencies"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"chore: configure build tools"</span><span class="token plain">```</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="ประเภทหลัก-types">ประเภทหลัก (Types)<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#%E0%B8%9B%E0%B8%A3%E0%B8%B0%E0%B9%80%E0%B8%A0%E0%B8%97%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81-types" class="hash-link" aria-label="Direct link to ประเภทหลัก (Types)" title="Direct link to ประเภทหลัก (Types)">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="feat---ฟีเจอร์ใหม่"><code>feat</code> - ฟีเจอร์ใหม่<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#feat---%E0%B8%9F%E0%B8%B5%E0%B9%80%E0%B8%88%E0%B8%AD%E0%B8%A3%E0%B9%8C%E0%B9%83%E0%B8%AB%E0%B8%A1%E0%B9%88" class="hash-link" aria-label="Direct link to feat---ฟีเจอร์ใหม่" title="Direct link to feat---ฟีเจอร์ใหม่">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"feat: add user authentication"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"feat(auth): implement OAuth login"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fix---แก้ไขบัค"><code>fix</code> - แก้ไขบัค<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#fix---%E0%B9%81%E0%B8%81%E0%B9%89%E0%B9%84%E0%B8%82%E0%B8%9A%E0%B8%B1%E0%B8%84" class="hash-link" aria-label="Direct link to fix---แก้ไขบัค" title="Direct link to fix---แก้ไขบัค">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"fix: resolve memory leak in image processing"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"fix(api): handle null response properly"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="docs---เอกสาร"><code>docs</code> - เอกสาร<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#docs---%E0%B9%80%E0%B8%AD%E0%B8%81%E0%B8%AA%E0%B8%B2%E0%B8%A3" class="hash-link" aria-label="Direct link to docs---เอกสาร" title="Direct link to docs---เอกสาร">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"docs: update API documentation"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"docs: add installation guide"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="style---การจัดรูปแบบโค้ด"><code>style</code> - การจัดรูปแบบโค้ด<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#style---%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%88%E0%B8%B1%E0%B8%94%E0%B8%A3%E0%B8%B9%E0%B8%9B%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B9%82%E0%B8%84%E0%B9%89%E0%B8%94" class="hash-link" aria-label="Direct link to style---การจัดรูปแบบโค้ด" title="Direct link to style---การจัดรูปแบบโค้ด">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"style: fix indentation in components"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"style: remove unused imports"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="refactor---ปรับปรุงโค้ด"><code>refactor</code> - ปรับปรุงโค้ด<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#refactor---%E0%B8%9B%E0%B8%A3%E0%B8%B1%E0%B8%9A%E0%B8%9B%E0%B8%A3%E0%B8%B8%E0%B8%87%E0%B9%82%E0%B8%84%E0%B9%89%E0%B8%94" class="hash-link" aria-label="Direct link to refactor---ปรับปรุงโค้ด" title="Direct link to refactor---ปรับปรุงโค้ด">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"refactor: extract validation logic"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"refactor(utils): optimize data processing"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="test---เพิ่มแก้ไขเทส"><code>test</code> - เพิ่ม/แก้ไขเทส<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#test---%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B9%81%E0%B8%81%E0%B9%89%E0%B9%84%E0%B8%82%E0%B9%80%E0%B8%97%E0%B8%AA" class="hash-link" aria-label="Direct link to test---เพิ่มแก้ไขเทส" title="Direct link to test---เพิ่มแก้ไขเทส">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"test: add unit tests for user service"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"test: fix flaky integration test"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="chore---งานบำรุงรักษา"><code>chore</code> - งานบำรุงรักษา<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#chore---%E0%B8%87%E0%B8%B2%E0%B8%99%E0%B8%9A%E0%B8%B3%E0%B8%A3%E0%B8%B8%E0%B8%87%E0%B8%A3%E0%B8%B1%E0%B8%81%E0%B8%A9%E0%B8%B2" class="hash-link" aria-label="Direct link to chore---งานบำรุงรักษา" title="Direct link to chore---งานบำรุงรักษา">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"chore: update dependencies"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">git</span><span class="token plain"> commit </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-m</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"chore: configure build tools"</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="ประโยชน์">ประโยชน์<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#%E0%B8%9B%E0%B8%A3%E0%B8%B0%E0%B9%82%E0%B8%A2%E0%B8%8A%E0%B8%99%E0%B9%8C" class="hash-link" aria-label="Direct link to ประโยชน์" title="Direct link to ประโยชน์">​</a></h2>
<ol>
<li><strong>ความชัดเจน</strong>: เข้าใจได้ทันทีว่า commit นี้ทำอะไร</li>
<li><strong>Automation</strong>: ใช้สร้าง changelog อัตโนมัติ</li>
<li><strong>Versioning</strong>: ใช้กำหนด version bumping</li>
<li><strong>Team Communication</strong>: ทีมเข้าใจการเปลี่ยนแปลงได้ง่าย</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="ตัวอย่างครบถ้วน">ตัวอย่างครบถ้วน<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#%E0%B8%95%E0%B8%B1%E0%B8%A7%E0%B8%AD%E0%B8%A2%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B8%84%E0%B8%A3%E0%B8%9A%E0%B8%96%E0%B9%89%E0%B8%A7%E0%B8%99" class="hash-link" aria-label="Direct link to ตัวอย่างครบถ้วน" title="Direct link to ตัวอย่างครบถ้วน">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">feat</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">auth</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain">: </span><span class="token function" style="color:hsl(221, 87%, 60%)">add</span><span class="token plain"> OAuth2 integration</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">- Implement Google OAuth2 login</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">- Add JWT token validation</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">- Update user model </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">for</span><span class="token plain"> OAuth data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">Closes </span><span class="token comment" style="color:hsl(230, 4%, 64%)">#123</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="สรุป">สรุป<a href="https://pangpond.github.io/remarkable3/code/conventional-commits#%E0%B8%AA%E0%B8%A3%E0%B8%B8%E0%B8%9B" class="hash-link" aria-label="Direct link to สรุป" title="Direct link to สรุป">​</a></h2>
<p>Conventional Commits ช่วยให้การจัดการโปรเจ็กต์เป็นระบบและมีประสิทธิภาพมากขึ้น โดยเฉพาะเมื่อใช้ร่วมกับเครื่องมืออย่าง lefthook และ commitlint เพื่อตรวจสอบรูปแบบ commit message อัตโนมัติ</p>]]></content:encoded>
            <category>code</category>
        </item>
    </channel>
</rss>