<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>安裝筆記 on Tom 除錯中</title><link>https://tomleesm.github.io/tags/%E5%AE%89%E8%A3%9D%E7%AD%86%E8%A8%98/</link><description>Recent content in 安裝筆記 on Tom 除錯中</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 17 Jul 2025 17:50:21 +0800</lastBuildDate><atom:link href="https://tomleesm.github.io/tags/%E5%AE%89%E8%A3%9D%E7%AD%86%E8%A8%98/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 docker 執行 node.js，問 AI 語法</title><link>https://tomleesm.github.io/posts/2025/07/run-node-js-with-docker/</link><pubDate>Thu, 17 Jul 2025 17:50:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2025/07/run-node-js-with-docker/</guid><description>&lt;p&gt;用 docker 執行 node.js 環境，先從 shell 開始，因為需要執行 &lt;code&gt;node file.js&lt;/code&gt;。一般是用 &lt;code&gt;docker run&lt;/code&gt; 如下所示&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --rm -it node:22-alpine /bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;怎麼改用 docker compose 實作呢？&lt;/p&gt;
&lt;p&gt;我平常只用 AI 來翻譯英文，和做一些市場調查，例如問它「網站後端程式語言市占率」，想說問問看「請將 docker run &amp;ndash;rm -it node:22-alpine /bin/sh 改用 docker compose」，結果如下：&lt;/p&gt;
&lt;h2 id="chatgpt"&gt;ChatGPT&lt;/h2&gt;
&lt;p&gt;你可以使用 Docker Compose 來達成等效於 &lt;code&gt;docker run --rm -it node:22-alpine /bin/sh&lt;/code&gt; 的效果。這裡的重點是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;node:22-alpine&lt;/code&gt; 映像&lt;/li&gt;
&lt;li&gt;進入一個互動式 shell&lt;/li&gt;
&lt;li&gt;容器在結束後自動移除（&lt;code&gt;--rm&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;雖然 Docker Compose 本身沒有 &lt;code&gt;--rm&lt;/code&gt; 的選項，但你可以透過 &lt;code&gt;docker compose run&lt;/code&gt; 搭配 &lt;code&gt;--rm&lt;/code&gt; 來達成類似效果。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="方法一使用-docker-composeyml-搭配-docker-compose-run"&gt;方法一：使用 &lt;code&gt;docker-compose.yml&lt;/code&gt; 搭配 &lt;code&gt;docker compose run&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;建立一個 &lt;code&gt;docker-compose.yml&lt;/code&gt; 檔案如下：&lt;/p&gt;</description></item><item><title>memos 安裝到 Debian 9</title><link>https://tomleesm.github.io/posts/2025/01/install-memos-on-debian-9/</link><pubDate>Fri, 03 Jan 2025 19:11:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2025/01/install-memos-on-debian-9/</guid><description>&lt;p&gt;&lt;a href="https://www.usememos.com/"&gt;memos&lt;/a&gt; 官網文件只有寫怎麼用 Docker 安裝，但是產生的 SQlite 檔案是 root 權限，所以試著編譯原始碼產生執行檔&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安裝 Node.js&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install curl build-essential
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sL https://deb.nodesource.com/setup_20.x &lt;span class="p"&gt;|&lt;/span&gt; sudo bash -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install nodejs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;node -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/usememos/memos.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; memos/web
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo corepack &lt;span class="nb"&gt;enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;輸入 Y 和 Enter 安裝 pnpm 和 package.json 所列套件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm i --frozen-lockfile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;編輯 &lt;code&gt;package.json&lt;/code&gt;，加上 &lt;code&gt;NODE_OPTIONS='–max_old_space_size=1024'&lt;/code&gt;
設定使用 1 GB，否則 pnpm build 會丟出 GC exception。假設主機是 2GB VM&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;scripts&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;build&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;NODE_OPTIONS=&amp;#39;–max_old_space_size=1024&amp;#39; tsc &amp;amp;&amp;amp; vite build&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然後執行 &lt;code&gt;pnpm build&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Windows 10 推薦軟體</title><link>https://tomleesm.github.io/posts/2024/12/windows10-recommand/</link><pubDate>Thu, 26 Dec 2024 17:50:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2024/12/windows10-recommand/</guid><description>&lt;h2 id="影片播放"&gt;影片播放&lt;/h2&gt;
&lt;p&gt;Linux 我用 mpv 播放影片，Windows 10 也能用 mpv ，用 &lt;code&gt;scoop&lt;/code&gt; 安裝&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;，不過需要用指令 &lt;code&gt;mpv&lt;/code&gt;，所以推薦用 &lt;a href="https://github.com/stax76/mpv-hero"&gt;mpv-hero&lt;/a&gt;，啟動速度快，還多了許多功能，例如右鍵選單、&lt;a href="https://github.com/tomasklaen/uosc"&gt;實用的圖形界面&lt;/a&gt;、和 YouTube 一樣的影片預覽、最近播放清單&lt;/p&gt;
&lt;p&gt;只是安裝有點麻煩：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 &lt;a href="https://github.com/stax76/mpv-hero/releases"&gt;Releases&lt;/a&gt; 下載壓縮檔&lt;/li&gt;
&lt;li&gt;在 home 目錄新增 apps 資料夾，解壓縮到裡面。因為安裝後會固定尋找當初安裝的路徑，所以放在 apps&lt;/li&gt;
&lt;li&gt;執行資料夾 installer 的 &lt;code&gt;mpv-install.bat&lt;/code&gt; ，需要用系統管理員權限，所以右鍵 Run as administrator。如果沒有，可能是設定成預設用 Notepad++ 打開&lt;/li&gt;
&lt;li&gt;執行完 &lt;code&gt;mpv-install.bat&lt;/code&gt;，依照指示按鍵會出現 Default apps 設定，或是手動打開 Windows 的設定 &amp;gt; Apps &amp;gt; Default apps ，設定用 mpv 做為預設的音樂和影片播放器&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a href="https://mpv.io/installation/"&gt;https://mpv.io/installation/&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Windows Terminal 設定多個字體</title><link>https://tomleesm.github.io/posts/2024/11/windows-terminal-setup-fonts/</link><pubDate>Fri, 22 Nov 2024 17:50:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2024/11/windows-terminal-setup-fonts/</guid><description>&lt;p&gt;點選 Windows Terminal 分頁右邊的向下箭頭，點選後顯示「設定」，再點選左邊清單設定檔 &amp;gt; 預設值 &amp;gt; 其他設定 &amp;gt; 外觀 &amp;gt; 字體，在右邊的輸入框直接輸入字體名稱，名稱最好參考 Windows 設定 &amp;gt; 字型，並用逗號隔開，而不是從選單選擇，如下所示。&lt;/p&gt;
&lt;p&gt;Monaspace Neon, Symbols Nerd Font , Noto Sans TC&lt;/p&gt;
&lt;p&gt;以上設定使用三種字體：&lt;a href="https://monaspace.githubnext.com/"&gt;Github Monaspace Neon&lt;/a&gt;、&lt;a href="https://www.nerdfonts.com/font-downloads"&gt;Symbols Nerd Font&lt;/a&gt; 和 &lt;a href="https://fonts.google.com/noto/specimen/Noto&amp;#43;Sans&amp;#43;TC"&gt;Noto Sans TC&lt;/a&gt;&lt;/p&gt;</description></item><item><title>在 Debian 12 安裝 LEMP 開發環境跑 Laravel 10</title><link>https://tomleesm.github.io/posts/2024/11/install-laravel10-on-debian12/</link><pubDate>Thu, 21 Nov 2024 17:50:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2024/11/install-laravel10-on-debian12/</guid><description>&lt;h2 id="摘要"&gt;摘要&lt;/h2&gt;
&lt;p&gt;這個是在 VirtualBox 7 新增虛擬機器，裝好 Debian 12 後，安裝 LEMP 的過程，最後安裝 Laravel 10 來寫網站後端&lt;/p&gt;
&lt;h2 id="安裝-php-fpm-83"&gt;安裝 PHP-FPM 8.3&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt -y install lsb-release apt-transport-https ca-certificates wget gnupg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb https://packages.sury.org/php/ &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;lsb_release -sc&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; main&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/php.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update&lt;span class="p"&gt;;&lt;/span&gt; sudo apt upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PHP_VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;8.3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install -y php&lt;span class="nv"&gt;$PHP_VERSION&lt;/span&gt;-&lt;span class="o"&gt;{&lt;/span&gt;cli,fpm,common,gd,mbstring,curl,bcmath,opcache&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp /etc/php/&lt;span class="nv"&gt;$PHP_VERSION&lt;/span&gt;/fpm/pool.d/www.conf &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /etc/php/&lt;span class="nv"&gt;$PHP_VERSION&lt;/span&gt;/fpm/pool.d/www.conf.sample
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo vim /etc/php/&lt;span class="nv"&gt;$PHP_VERSION&lt;/span&gt;/fpm/pool.d/www.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;改成以下的設定&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;user = tom
group = tom
listen = 127.0.0.1:9000
listen.owner = tom
listen.group = tom
listen.allowed_clients = 127.0.0.1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;重新啟動 PHP-FPM&lt;/p&gt;</description></item><item><title>使用 Docker Compose 安裝 Laravel 和 Vue.js 環境</title><link>https://tomleesm.github.io/posts/2024/11/install-laravel-vue-with-docker-compose/</link><pubDate>Fri, 15 Nov 2024 17:50:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2024/11/install-laravel-vue-with-docker-compose/</guid><description>&lt;p&gt;想要用 Docker 建立 Laravel 環境，於是 &lt;a href="https://www.google.com/search?q=Docker&amp;#43;LEMP&amp;amp;oq=Docker&amp;#43;LEMP"&gt;Google &amp;ldquo;Docker LEMP&amp;rdquo;&lt;/a&gt;，發現一篇很棒的文章&lt;a href="https://tech.osteel.me/posts/docker-for-local-web-development-introduction-why-should-you-care"&gt;Docker for local web development, introduction: why should you care?&lt;/a&gt;。因為不想每次忘記指令都回去看這一系列文章（英文沒那麼好），於是寫筆記。&lt;/p&gt;
&lt;h2 id="安裝-docker"&gt;安裝 Docker&lt;/h2&gt;
&lt;h3 id="安裝指令"&gt;安裝指令&lt;/h3&gt;
&lt;p&gt;首先安裝 Docker，依照官方文件安裝即可，預設安裝 Docker 和 Docker Compose&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows：參考 &lt;a href="https://docs.docker.com/desktop/windows/install/"&gt;Install Docker Desktop on Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Linux：參考 &lt;a href="https://docs.docker.com/engine/install/debian/"&gt;Install Docker Engine on Debian&lt;/a&gt; 或選擇對應的發行套件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是安裝在 Linux Mint，則用 &lt;a href="https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository"&gt;Install Docker Engine on Ubuntu&lt;/a&gt;，在 Add the repository to Apt sources：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add the repository to Apt sources:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;deb [arch=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;. /etc/os-release &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;UBUNTU_CODENAME&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;$VERSION_CODENAME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; stable&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;)&lt;/code&gt; 在 Linux Mint 是無效的，所以上述的指令改成&lt;/p&gt;</description></item><item><title>從 Vim 到 Neovim</title><link>https://tomleesm.github.io/posts/2024/04/from-vim-to-neovim/</link><pubDate>Mon, 15 Apr 2024 17:50:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2024/04/from-vim-to-neovim/</guid><description>&lt;p&gt;Neovim 是從 Vim 分出去的版本，把 Vim 的程式碼複製後整理一番，並加上想要的新功能，類似兄弟鬧不合，到外面開分店，有各自的特色那樣。說來慚愧，我用 Vim 寫程式十幾年來都不知道怎麼它的正確發音，正巧 &lt;a href="https://neovim.io/"&gt;Neovim 官網首頁&lt;/a&gt;有內嵌一個 &lt;a href="https://www.youtube.com/watch?v=c4OyfL5o7DU"&gt;YouTube 影片介紹&lt;/a&gt;，有 Vi, Vim 和 Neovim 的正確發音。&lt;/p&gt;
&lt;p&gt;為什麼從 Vim 換成 Neovim？因為 &lt;a href="https://github.com/kepano/flexoki"&gt;flexoki 配色&lt;/a&gt; 很好看，而且沒有 Vim 版本。之前想要在 Vim 有語法自動補齊，以及安裝一些外掛時提到有 Neovim 這個程式。雖然 Neovim 有許多新功能，不過我都用不上。最近發現 Neovim 有 0.9.5 版本，已經有3、4 個月沒更新，看起來是穩定下來了，然後發現 flexoki 配色，安裝後一開始還不習慣，和原來 Vim 配色相比覺得不夠好，直到顯示 html&lt;/p&gt;
&lt;p&gt;&lt;img src="https://tomleesm.github.io/images/screenshot-nvim.png" alt="nvim-flexoki"&gt;&lt;/p&gt;
&lt;p&gt;對比原來 Vim 的配色更好看。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://tomleesm.github.io/images/screenshot-vim.png" alt="vim-wombat256mod"&gt;&lt;/p&gt;
&lt;p&gt;也有可能是原來的配色幾年下來已經看膩了？&lt;/p&gt;
&lt;p&gt;Neovim 最好從 GitHub 上抓取最新版本安裝。如果用 &lt;code&gt;apt-get&lt;/code&gt; 或 &lt;code&gt;rpm&lt;/code&gt; 等套件管理安裝，還停留在 0.5 版，許多外掛要求至少 0.8 版。在 Ubuntu/Debian 安裝的指令如下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 瀏覽器連到 https://github.com/neovim/neovim/releases/latest 顯示最新版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 抓取最新版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://github.com/neovim/neovim/releases/download/v0.10.4/nvim-linux-x86_64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 解壓縮&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar xzvf nvim-linux-x86_64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 複製所有檔案到 /opt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp -r ./nvim-linux-x86_64/ /opt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 編輯 ~/.bash_profile，加上 export PATH=&amp;#34;$PATH:/opt/nvim-linux-x86_64/bin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;export PATH=&amp;#34;$PATH:/opt/nvim-linux-x86_64/bin&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bash_profile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 輸入 nvi ，neovim 不套用外掛和設定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;alias nvi=&amp;#34;nvim -u NONE -N&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bash_profile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 重新讀取 ~/.bash_profile 以啟用設定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bash_profile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# root 也做一樣的設定，讓它可以用 neovim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;su root
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 加上 export PATH=&amp;#34;$PATH:/opt/nvim-linux-x86_64/bin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;export PATH=&amp;#34;$PATH:/opt/nvim-linux-x86_64/bin&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; /root/.bash_profile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; /root/.bash_profile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://neovim.io/doc/user/lua-guide.html"&gt;Guide to using Lua in Nvim&lt;/a&gt;說明如何轉移原來的 Vim 設定到 Neovim。例如 &lt;code&gt;vim.o.number = true&lt;/code&gt; 顯示行數，設定放在 &lt;code&gt;~/.config/nvim/init.lua&lt;/code&gt;，改用 Lua 語言設定 Neovim，也可以沿用 Vimscript 語法，只要把 &lt;code&gt;init.lua&lt;/code&gt; 改成 &lt;code&gt;init.vim&lt;/code&gt; 即可，兩個只能選一個。&lt;/p&gt;</description></item><item><title>在 Debian 11 安裝 LEMP 開發環境跑 Laravel 10</title><link>https://tomleesm.github.io/posts/2023/12/install-laravel10-on-debian11/</link><pubDate>Tue, 26 Dec 2023 17:50:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2023/12/install-laravel10-on-debian11/</guid><description>&lt;h2 id="摘要"&gt;摘要&lt;/h2&gt;
&lt;p&gt;這個是在 VirtualBox 6 新增虛擬機器，裝好 Debian 11 後，安裝 LEMP 的過程，最後安裝 Laravel 10 來寫網站後端&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cdimage.debian.org/cdimage/archive/11.8.0/amd64/iso-cd/debian-11.8.0-amd64-netinst.iso"&gt;下載 debian-11.8.0-amd64-netinst.iso&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="安裝-php-fpm-83"&gt;安裝 PHP-FPM 8.3&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt -y install lsb-release apt-transport-https ca-certificates wget gnupg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb https://packages.sury.org/php/ &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;lsb_release -sc&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; main&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/php.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update&lt;span class="p"&gt;;&lt;/span&gt; sudo apt upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PHP_VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;8.3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install -y php&lt;span class="nv"&gt;$PHP_VERSION&lt;/span&gt;-&lt;span class="o"&gt;{&lt;/span&gt;cli,fpm,common,gd,mbstring,curl,bcmath,opcache&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="設定-php-fpm"&gt;設定 PHP-FPM&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 備份 php-fpm 池設定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp /etc/php/&lt;span class="nv"&gt;$PHP_VERSION&lt;/span&gt;/fpm/pool.d/www.conf &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /etc/php/&lt;span class="nv"&gt;$PHP_VERSION&lt;/span&gt;/fpm/pool.d/www.conf.sample
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo vim /etc/php/&lt;span class="nv"&gt;$PHP_VERSION&lt;/span&gt;/fpm/pool.d/www.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;改成以下的設定&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; tom
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;group&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; tom
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;listen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 127.0.0.1:9000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;listen.allowed_clients &lt;span class="o"&gt;=&lt;/span&gt; 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;slowlog&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; /home/tom/apps/logs/slow.log
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;request_slowlog_timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 5s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建立上述設定需要的資料夾和權限&lt;/p&gt;</description></item><item><title>使用 API Blueprint 寫文件</title><link>https://tomleesm.github.io/posts/2023/04/api-blueprint-cheatsheets/</link><pubDate>Mon, 24 Apr 2023 17:50:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2023/04/api-blueprint-cheatsheets/</guid><description>&lt;p&gt;&lt;a href="https://apiblueprint.org"&gt;API Blueprint&lt;/a&gt; 是一種 markdown 語法的擴充，用來寫 RESTful API 文件&lt;/p&gt;
&lt;h2 id="工具"&gt;工具&lt;/h2&gt;
&lt;p&gt;API Blueprint 官網有列出許多工具，推薦網站&lt;a href="https://apiary.io"&gt;Apiary&lt;/a&gt;。免費註冊後就能在線上編輯文件，左右對照 Markdown 和預覽結果，對於屬性有完整支援。&lt;/p&gt;
&lt;p&gt;Aglio 則用來把 Markdown 轉成 HTML，安裝與使用方法如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 在 Debian 11 上安裝&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 先安裝 Node.js&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install curl build-essential
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sL https://deb.nodesource.com/setup_16.x &lt;span class="p"&gt;|&lt;/span&gt; sudo bash -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install nodejs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;node -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 使用 npm 全域安裝&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo npm install -g aglio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 也可以用 yarn 安裝&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安裝 yarn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install curl gnupg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg &lt;span class="p"&gt;|&lt;/span&gt; sudo apt-key add -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb https://dl.yarnpkg.com/debian/ stable main&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/yarn.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install yarn
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yarn --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 使用 yarn 全域安裝&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yarn global add aglio
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接著編輯好 markdown 檔案，例如 example.md，然後執行 &lt;code&gt;aglio -i example.md -o example.html&lt;/code&gt; ，轉換成 example.html。可以執行 &lt;code&gt;aglio&lt;/code&gt; 指令看看參數有哪些。可以使用 &lt;code&gt;aglio -i example.md -s -h 0.0.0.0 -p 8000&lt;/code&gt; 產生即時預覽。&lt;/p&gt;</description></item></channel></rss>