<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Posts on 卡螺絲</title>
        <link>https://caloskao.org/post/</link>
        <description>Recent content in Posts on 卡螺絲</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-Hant</language>
        <lastBuildDate>Mon, 17 Nov 2025 14:02:52 +0800</lastBuildDate><atom:link href="https://caloskao.org/post/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>[開箱] 白化背插板 - 技嘉 B850 AORUS STEALTH ICE</title>
        <link>https://caloskao.org/unbox-gigabyte-b850-aorus-stealth-ice/</link>
        <pubDate>Fri, 15 Aug 2025 16:21:21 +0800</pubDate>
        
        <guid>https://caloskao.org/unbox-gigabyte-b850-aorus-stealth-ice/</guid>
        <description>&lt;img src="https://caloskao.org/unbox-gigabyte-b850-aorus-stealth-ice/20250722_211015.jpg" alt="Featured image of post [開箱] 白化背插板 - 技嘉 B850 AORUS STEALTH ICE" /&gt;&lt;p&gt;本來五月初已經計畫好要拿 B650E AORUS STEALTH ICE 組新機，規格抓好都準備要下訂時，看到了技嘉發表 X870/B850 背插板的消息，雖然一樣是都是白化稅，但從官網圖跟規格看上去和 B650E AORUS STEALTH ICE 相比還是有一定的差異：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;記憶體插槽白化&lt;/li&gt;
&lt;li&gt;多一條 PCIe 插槽 (插槽是全白的，但飾板多開了一個孔，對部分玩家來說應該是個扣分項目)&lt;/li&gt;
&lt;li&gt;取消右上角的飾蓋，新增了 EZ-Debug Zone (帶 Q-Code LED)&lt;/li&gt;
&lt;li&gt;主機板本體拿掉了 RGB LED&lt;/li&gt;
&lt;li&gt;CPU EPS 12V 從 8 PIN 升級為 8 + 4 PIN &lt;del&gt;(好欸！超到冒煙！)&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;SATA Port 減少至 2 個 (B650E 有 4 個)&lt;/li&gt;
&lt;li&gt;多一個 M.2 插槽 (PCIe 4.0，走晶片組)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;整體上沒有到差異巨大，雖然消息出來後 B650E 開始降價促銷又更香了 (7990 -&amp;gt; 6990)，但白化稅納稅人很簡單，選最白的，所以不拿 B650E 繼續等 B850 AORUS STEALTH ICE 開賣。&lt;/p&gt;
&lt;p&gt;(計畫有變.jpg)&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_ce425e6938cc_hu_a879050bcebb73db.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2626&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_ce425e6938cc_hu_a879050bcebb73db.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;73&#34;
        data-flex-basis=&#34;175px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;開箱&#34;&gt;開箱
&lt;/h2&gt;&lt;h3 id=&#34;外包裝--內容物&#34;&gt;外包裝 / 內容物
&lt;/h3&gt;&lt;p&gt;新設計的包裝，不是常見的經典飛機盒；拿貨時店員確認店裡有庫存，但在放滿主機板的貨架上翻了快三分鐘才翻出來，笑著跟我說原來外盒換新包裝了想說奇怪怎麼找不到 (因為盒子更大塞不進貨架了，跟其他旗艦級主機板一起放在另一邊更大的貨架上 XD)。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_dd7ac739c1d2_hu_4ff6469d965b27c2.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1081&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_dd7ac739c1d2_hu_4ff6469d965b27c2.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;外盒正面，簡單樸素。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_fc23c97d917f_hu_9213fe09ae22f41.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_fc23c97d917f_hu_9213fe09ae22f41.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;外盒背面為規格簡述、特色重點、I/O Ports 示意圖等資訊，左側小鵰立繪不錯看，感覺放到正面會更加分。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_deecfd587d1a_hu_a9ec0fff50008cf0.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_deecfd587d1a_hu_a9ec0fff50008cf0.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;盒身側面。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_72aa77af58bb_hu_ca3be3d8ba7de35.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1081&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_72aa77af58bb_hu_ca3be3d8ba7de35.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_4f49d8595b5b_hu_5580b6eddef53528.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1081&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_4f49d8595b5b_hu_5580b6eddef53528.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_67b51884ee58_hu_41d5f8a10d83e5fa.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1081&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_67b51884ee58_hu_41d5f8a10d83e5fa.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_322a139b707f_hu_b7b9daf924a02022.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1081&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_322a139b707f_hu_b7b9daf924a02022.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;移除封箱貼紙，原來是防拆的，留下了醜醜的痕跡，晚點再來處理你。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_8b22e451975d_hu_a65e56fcf87bb5e1.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_8b22e451975d_hu_a65e56fcf87bb5e1.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;開盒，依序看看裡面裝了啥。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_01b444579e0c_hu_33e0bf2ed5d3b69b.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_01b444579e0c_hu_33e0bf2ed5d3b69b.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_8fb34fe17995_hu_1ffcf8ecda4a1e51.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_8fb34fe17995_hu_1ffcf8ecda4a1e51.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;盒裝下層針對背插板特別設計四邊凹槽，為主機板背面插槽突出部分所預留的空間。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b6dbc7207a7d_hu_ffb4209904b60dd4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b6dbc7207a7d_hu_ffb4209904b60dd4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_c8f1dcea3c73_hu_27f29b4bec9f1098.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_c8f1dcea3c73_hu_27f29b4bec9f1098.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_f4cd68e5d5d0_hu_be8864dd16c3e7ca.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_f4cd68e5d5d0_hu_be8864dd16c3e7ca.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;全部內容物如下圖，共有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主機板本體&lt;/li&gt;
&lt;li&gt;產品保證書&lt;/li&gt;
&lt;li&gt;說明書 x2&lt;/li&gt;
&lt;li&gt;Wi-Fi / BT 天線&lt;/li&gt;
&lt;li&gt;SATA 訊號線 x2&lt;/li&gt;
&lt;li&gt;機殼面板快速接頭&lt;/li&gt;
&lt;li&gt;M.2 槽軟墊 x3&lt;/li&gt;
&lt;li&gt;AORUS 銘牌&lt;/li&gt;
&lt;li&gt;AORUS 貼紙&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_5a16b69fd237_hu_473deca8811867a1.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_5a16b69fd237_hu_473deca8811867a1.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;主機板本體&#34;&gt;主機板本體
&lt;/h3&gt;&lt;p&gt;接著來看主機板本體，正面全身照。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_97116c7e59e6_hu_3a461d173bd222d8.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_97116c7e59e6_hu_3a461d173bd222d8.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;記憶體插槽白化。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_e28a3e8e61a1_hu_b31ae950eae7fd43.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_e28a3e8e61a1_hu_b31ae950eae7fd43.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;帶 Q-Code LED 的完全體 EZ Debug Zone，通常只有大鵰系列（AORUS TACHYON/XTREME/MASTER/PRO）或 AI TOP 系列才有 Q-Code LED。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_3b2edecd2de7_hu_b06a1c0992371e34.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_3b2edecd2de7_hu_b06a1c0992371e34.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;下半身，大面積飾板兼 M.2 SSD 散熱器，實物比官方的照片看上去還要白上許多。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_4f1a596d09f6_hu_cf7ba91e915ce2fe.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_4f1a596d09f6_hu_cf7ba91e915ce2fe.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;卸下正面的 M.2 散熱器：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;散熱器本體和 M.2 插槽都是快拆設計，很方便。&lt;/li&gt;
&lt;li&gt;第一個 PCIe Gen 5 (M2A_CPU) 有比較厚的獨立散熱器，沒有背部導熱墊。&lt;/li&gt;
&lt;li&gt;第二個 PCIe Gen 5 (M2B_CPU) 和另外兩個 Gen 4 插槽 (M2C_SB、M2D_SB) 共用一個大片散熱器，但有背面導熱墊加強散熱。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b278c460c7f0_hu_fe16a3923f7317fe.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b278c460c7f0_hu_fe16a3923f7317fe.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;南橋散熱器上的小鵰立繪被蓋了海帶條真的是醜到哭，還好飾板蓋上去就看不到了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b927b16e7044_hu_757e6d5e9517bf56.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2143&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b927b16e7044_hu_757e6d5e9517bf56.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;89&#34;
        data-flex-basis=&#34;215px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;M2B_CPU 插槽背面導熱墊的離型膜上有貼一塊不知道是做什麼用的軟墊。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b43bafc6d582_hu_480d767624e5036d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1081&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b43bafc6d582_hu_480d767624e5036d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;VRM 散熱器，一根熱管。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_ed078333e1eb_hu_a35359422872386a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_ed078333e1eb_hu_a35359422872386a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_335c1c334c78_hu_f759a58af4a71ef4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_335c1c334c78_hu_f759a58af4a71ef4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;一體式 I/O。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_782252584c5e_hu_bd9a7487ad029356.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1081&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_782252584c5e_hu_bd9a7487ad029356.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;背面全身照，背板上有一層保護膜，裝機前記得移除。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b78e25516c3c_hu_d926ccb488ded8ef.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_b78e25516c3c_hu_d926ccb488ded8ef.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;組裝上機&#34;&gt;組裝上機
&lt;/h2&gt;&lt;h3 id=&#34;裝機過程&#34;&gt;裝機過程
&lt;/h3&gt;&lt;p&gt;背插板開箱文沒有裝機過程才是正常發揮 (X&lt;/p&gt;
&lt;p&gt;但這邊特別提一下，在 M2B_CPU 槽背面導熱墊的厚度應該是對應單面顆粒 SSD，安裝雙面顆粒的 SSD 時可能會像下圖那樣受擠壓造成些微彎曲 (圖中的 SSD 是 ACER Predator GM7000 2 TB)。&lt;/p&gt;
&lt;p&gt;不過上層飾板蓋上去，正面的導熱墊也會擠回去，問題不大。(應該&amp;hellip;吧&amp;hellip;?)&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_456871a4cb40_hu_a2725b30c850ad0.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1081&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_456871a4cb40_hu_a2725b30c850ad0.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;其他的就沒什麼需要特別留意的地方，直接開機過電。&lt;/p&gt;
&lt;p&gt;&lt;del&gt;(B2！99！成功點亮！)&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_c5222794d5ff_hu_20fbb70d02729b17.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_c5222794d5ff_hu_20fbb70d02729b17.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;VRM 散熱器上沒有了 RGB LED，對比 B650E AORUS STEALTH ICE 就略顯單調。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_35b82c1f57c2_hu_60332353c840196d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_35b82c1f57c2_hu_60332353c840196d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;不過沒上水冷就還好，空冷裝上去基本上都遮住了看不到，體感上差異只有右下角少一塊發光區域。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_7822ddd4162d_hu_b3d354404883ced1.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_7822ddd4162d_hu_b3d354404883ced1.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;剩下的全部裝上去，中間不合群的傢伙是因為 618 盈通油卡缺貨買不到。&lt;/p&gt;
&lt;p&gt;雖然隔一個月後有補貨，但換換病發作完了，等下次發病再說吧。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_9d00e823586b_hu_b5407a23af31d5d6.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_9d00e823586b_hu_b5407a23af31d5d6.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;bios&#34;&gt;BIOS
&lt;/h3&gt;&lt;p&gt;首次開機到螢幕亮起耗時約 20 秒出頭，進 BIOS 啟用 EXPO Profile 後重開機也是一樣。&lt;/p&gt;
&lt;p&gt;初次進入 BIOS 如果是安裝 X3D CPU 的話會提示是否要開啟 X3D TURBO MODE (忘記截圖)。&lt;/p&gt;
&lt;p&gt;BIOS 預設佈景主題為 STEALTH，覺得太亮不舒服的話可以切換為 AORUS 或 GrayScale 深色佈景主題。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_d2caa67981b6_hu_dadb990e9635bfa4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_d2caa67981b6_hu_dadb990e9635bfa4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;懶人福音 ——— Precision Boost Overdrive(PBO) Enhancement，15 種設定檔一鍵快速優化 CPU 性能，實際上是針對 CPU 做這兩個設定：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;TjMAX Temperature&lt;/li&gt;
&lt;li&gt;Curve Optimizer (CO)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;設定檔分為 3 個溫度牆 (90/80/70)，每個溫度牆有 5 檔性能等級，5 檔分別對應到 CO -10 ~ -50，能否正常運作得看 CPU 體質。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_d62cc647400d_hu_9ba9d66f52705e65.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_d62cc647400d_hu_9ba9d66f52705e65.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;挑幾個 profile 簡單測一下 (CineBench R23，9800X3D，室溫 28 度，CPU 散熱器風扇全速運轉)：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;全預設: Single Core: 2102 pts / Multi Core: 23201 pts&lt;/li&gt;
&lt;li&gt;90 Level 5: BIOS POST 通過，載入 OS 時 Windows BSOD (很正常，CO -50 能過測的都是天選之人)&lt;/li&gt;
&lt;li&gt;90 Level 4: Single Core: 2109 pts / Multi Core: 23570 pts&lt;/li&gt;
&lt;li&gt;90 Level 3: Single Core: 2109 pts / Multi Core: 23390 pts&lt;/li&gt;
&lt;li&gt;70 Level 2: Single Core: 2108 pts / Multi Core: 22959 pts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_56e657674588_hu_a0301b7b7e388e7.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_56e657674588_hu_a0301b7b7e388e7.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;全預設&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_e678a77b7545_hu_a1ee8e7f698441be.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_e678a77b7545_hu_a1ee8e7f698441be.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;90 Level 4&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_a00714da2e1c_hu_5f204fdb5ad29958.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_a00714da2e1c_hu_5f204fdb5ad29958.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;90 Level 3&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_c8d72508d851_hu_79216b7b872aa09b.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_c8d72508d851_hu_79216b7b872aa09b.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;70 Level 2&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;BIOS 其他功能介紹可參考技嘉官網。&lt;/p&gt;
&lt;p&gt;傳送門：&lt;a class=&#34;link&#34; href=&#34;https://download.gigabyte.com/FileList/Manual/mb_manual_amd800-bios_c.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BIOS 組態設定(AMD 800系列)&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;心得&#34;&gt;心得
&lt;/h2&gt;&lt;p&gt;個人主觀感受上，相較於 B650E AORUS STEALTH ICE 的優點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;真正的全白 (記憶體插槽白化)&lt;/li&gt;
&lt;li&gt;完全體 EZ Debug Zone&lt;/li&gt;
&lt;li&gt;多一個 M.2 SSD 插槽 (總共 4 個)&lt;/li&gt;
&lt;li&gt;新設計盒裝&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相較於 B650E AORUS STEALTH ICE 的缺點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主機板本體 RGB LED 拿掉了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其他缺點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;M2A_CPU 插槽沒給背面導熱墊&lt;/li&gt;
&lt;li&gt;6 層 PCB (這個價位其他廠牌的部分型號有給到 8 層)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上，開箱完畢。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_39272f81e1c4_hu_2e9a64cad039ee90.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-gigabyte-b850-aorus-stealth-ice/img_39272f81e1c4_hu_2e9a64cad039ee90.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
</description>
        </item>
        <item>
        <title>透過 esxcli 為 VMware vSphere ESXi 升版</title>
        <link>https://caloskao.org/upgrade-vmware-vsphere-esxi-through-esxcli/</link>
        <pubDate>Thu, 11 Jul 2024 17:25:42 +0800</pubDate>
        
        <guid>https://caloskao.org/upgrade-vmware-vsphere-esxi-through-esxcli/</guid>
        <description>&lt;h2 id=&#34;本文實作版本&#34;&gt;本文實作版本
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;目前版本：VMware vSphere ESXi &lt;strong&gt;8.0U3c&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;升級目標：VMware vSphere ESXi &lt;strong&gt;8.0U3f&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;重要提示&#34;&gt;重要提示
&lt;/h2&gt;&lt;p&gt;如果是跨版本升級，先到 &lt;a class=&#34;link&#34; href=&#34;https://interopmatrix.vmware.com/Upgrade?productId=1&amp;amp;isHidePatch=false&amp;amp;isHideLegacyReleases=false&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VMware Product Interoperability Matrix&lt;/a&gt; 查詢 upgrade path，照著上面的路線逐版升級。&lt;/p&gt;
&lt;h2 id=&#34;正文&#34;&gt;正文
&lt;/h2&gt;&lt;p&gt;首先，先去非常囉嗦的 &lt;a class=&#34;link&#34; href=&#34;https://support.broadcom.com/group/ecx/productdownloads?subfamily=VMware%20vSphere&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Broadcom Support Portal&lt;/a&gt; 下載需要的 patch，然後上傳到 ESXi 主機上的 datastore。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Broadcom 成功的讓 patch 的取得方式變得更複雜，偉哉 Broadcom。&lt;/p&gt;
&lt;p&gt;偶然在&lt;a class=&#34;link&#34; href=&#34;https://nyaners.com/2024/06/esxi%E5%9C%A8%E7%BA%BF%E6%9B%B4%E6%96%B0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這篇&lt;/a&gt;文章得知可以透過第三方鏡像進行更新，&amp;gt; 在 &lt;a class=&#34;link&#34; href=&#34;https://esxi-patches.v-front.de/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VMware ESXi Patch Tracker&lt;/a&gt; 這個網站可以很直觀的看到各種 patch，而 &lt;a class=&#34;link&#34; href=&#34;https://vmware.digiboy.ir/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vmware.digiboy.ir&lt;/a&gt; 這個網站提供了 patch 直連下載。&lt;/p&gt;
&lt;p&gt;將 &lt;code&gt;esxcli&lt;/code&gt; 相關指令的 &lt;code&gt;-d&lt;/code&gt;/&lt;code&gt;--depot&lt;/code&gt; 參數用 URL 替換掉檔案路徑的話就是以在線升級模型執行。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;esxcli software profile update -d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;esxcli software profile install -d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;esxcli software sources profile list -d&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;透過 &lt;code&gt;esxcli software sources profile list&lt;/code&gt; 指令查看 patch 內容。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;root@localhost&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; esxcli software sources profile list -d /vmfs/volumes/64fb4bdd-d7814c2f-9e46-c4cbe1a6b654/esxi_patches/VMware-ESXi-8.0U3f-24784735-depot.zip
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Name                           Vendor        Acceptance Level  Creation Time        Modification Time
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-----------------------------  ------------  ----------------  -------------------  -----------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ESXi-8.0U3f-24784735-no-tools  VMware, Inc.  PartnerSupported  2025-07-15T00:00:00  2025-07-15T00:00:00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ESXi-8.0U3f-24784735-standard  VMware, Inc.  PartnerSupported  2025-07-15T00:00:00  2025-07-15T00:00:00
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;確認過沒問題後，透過 &lt;code&gt;esxcli software profile update&lt;/code&gt; 指令，帶 &lt;code&gt;--dry-run&lt;/code&gt; 參數模擬升級，預覽升級結果。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;root@localhost&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; esxcli software profile update --dry-run &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;    -d /vmfs/volumes/64fb4bdd-d7814c2f-9e46-c4cbe1a6b654/esxi_patches/VMware-ESXi-8.0U3f-24784735-depot.zip &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;    -p ESXi-8.0U3f-24784735-standard
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Update Result
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Message: Dryrun only, host not changed. The following installers will be applied: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;BootBankInstaller, LockerInstaller&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   VIBs Installed: VMW_bootbank_iavmd_3.0.0.1010-12vmw.803.0.70.24674464, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   VIBs Removed: VMW_bootbank_iavmd_3.0.0.1010-11vmw.803.0.0.24022510, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   VIBs Skipped: VMW_bootbank_atlantic_1.0.3.0-13vmw.803.0.0.24022510, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Reboot Required: &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   DPU Results:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模擬升級結果看起來沒問題的話就可以拿掉 &lt;code&gt;--dry-run&lt;/code&gt; 參數執行升級 (注意第二行 &lt;code&gt;Message&lt;/code&gt; 的變化)。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Update Result
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Message: The update completed successfully, but the system needs to be rebooted &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; the changes to be effective.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   VIBs Installed: VMW_bootbank_iavmd_3.0.0.1010-12vmw.803.0.70.24674464, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   VIBs Removed: VMW_bootbank_iavmd_3.0.0.1010-11vmw.803.0.0.24022510, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   VIBs Skipped: VMW_bootbank_atlantic_1.0.3.0-13vmw.803.0.0.24022510, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Reboot Required: &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   DPU Results:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行完畢後重新啟動系統，收工。&lt;/p&gt;
&lt;h2 id=&#34;補充說明-update-vs-install&#34;&gt;補充說明: &lt;code&gt;update&lt;/code&gt; vs &lt;code&gt;install&lt;/code&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;esxcli software profile update&lt;/code&gt;: 只更新已存在的 VIB。
&lt;ul&gt;
&lt;li&gt;主機上不存在的 VIB 不會安裝。&lt;/li&gt;
&lt;li&gt;使用時機：適合在已有映像架構中，做小幅版本升級、安全性修補，或微幅改動。尤其 VMware 只支援這種方式來套用官方 ZIP 映像更新。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;esxcli software profile install&lt;/code&gt;: 將 depot 內所有的 VIB 完全安裝（覆蓋）到主機上。
&lt;ul&gt;
&lt;li&gt;主機上不存在的 VIB 會全部安裝。&lt;/li&gt;
&lt;li&gt;主機上已存在，但&lt;strong&gt;不存在 depot 內的 VIB 會被移除（清除舊有元件）&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可能會導致降級或移除原有驅動／套件。需謹慎使用。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;使用時機：當你要重置主機的完整映像版本，或確保主機與某個映像完全一致時使用。不適合僅做 patch update 的場景。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update History&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2025-07-31
&lt;ul&gt;
&lt;li&gt;增加在線模式升級方式說明。&lt;/li&gt;
&lt;li&gt;實作版本 7.0 -&amp;gt; 8.0。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.dell.com/support/kbdoc/en-us/000218007/upgrading-esxi-with-dell-customized-image-via-command-line-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Upgrading ESXi with Dell Customized Image via Command Line (CLI) | Dell US&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nyaners.com/2024/06/esxi%E5%9C%A8%E7%BA%BF%E6%9B%B4%E6%96%B0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;不需要镜像，ESXi在线升级更新 – 魔女之家&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>Systemd Log Flood Run Docker Runtime X2drunc Moby Runc Mount</title>
        <link>https://caloskao.org/systemd-log-flood-run-docker-runtime-x2drunc-moby-runc-mount/</link>
        <pubDate>Fri, 28 Jun 2024 15:04:24 +0800</pubDate>
        
        <guid>https://caloskao.org/systemd-log-flood-run-docker-runtime-x2drunc-moby-runc-mount/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/docker.webp" alt="Featured image of post Systemd Log Flood Run Docker Runtime X2drunc Moby Runc Mount" /&gt;&lt;p&gt;發現 &lt;code&gt;/var/log/system&lt;/code&gt; 裡頭大量重複的 log:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:30:03 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.BHxFRm.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:30:23 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.KWS2zz.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:30:33 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.Vb7E7L.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:30:53 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.1B05S3.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:31:03 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.uUSsuO.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:31:13 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.s3gTlw.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:31:33 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.hDy9ZF.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:31:43 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.YYXMI6.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:32:03 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.5k0cuM.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:32:13 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.QLn6f8.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:32:23 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.EdwPh7.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:32:33 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.gf4O7U.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:33:03 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.gqYRNZ.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:33:34 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.w4IFzY.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:33:44 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.tK3r5m.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:33:54 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.Uh0uVh.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:34:14 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.y6wojs.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:34:24 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.bYEpi5.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:34:34 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.VKiHNk.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:34:54 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.D2KiyQ.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:35:24 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.wEaYsv.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Jun 28 14:35:44 container-clone systemd[1]: run-docker-runtime\x2drunc-moby-1f61c727cb8dac371d3e3a00274ad37599bbf550473c55481a8f1bcb8e9aef70-runc.8vjJQq.mount: Deactivated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;經過一番調查後，關鍵情報在 &lt;a class=&#34;link&#34; href=&#34;https://github.com/docker/for-linux/issues/679&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docker/for-linux issues #679&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;找到 container #1f61c727 下 &lt;code&gt;docker inspect&lt;/code&gt; 後，確實發現有啟用 health check。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;err&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;Health&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;Status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;healthy&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;FailingStreak&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;Log&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:09:54.506723522+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;End&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:09:54.549099001+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;ExitCode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Output&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;{\&amp;#34;cluster_id\&amp;#34;:\&amp;#34;dae76c58-321c-4c55-981d-a6fcf2b94720\&amp;#34;,\&amp;#34;node_id\&amp;#34;:\&amp;#34;9e5ff5c9-e40d-4744-ad20-074bd7d25fd8\&amp;#34;,\&amp;#34;version\&amp;#34;:\&amp;#34;6.0.3+eb761c5\&amp;#34;,\&amp;#34;tagline\&amp;#34;:\&amp;#34;Manage your logs in the dark and have lasers going and make it look like you&amp;#39;re from space!\&amp;#34;}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:10:04.551047607+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;End&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:10:04.593694092+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;ExitCode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Output&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;{\&amp;#34;cluster_id\&amp;#34;:\&amp;#34;dae76c58-321c-4c55-981d-a6fcf2b94720\&amp;#34;,\&amp;#34;node_id\&amp;#34;:\&amp;#34;9e5ff5c9-e40d-4744-ad20-074bd7d25fd8\&amp;#34;,\&amp;#34;version\&amp;#34;:\&amp;#34;6.0.3+eb761c5\&amp;#34;,\&amp;#34;tagline\&amp;#34;:\&amp;#34;Manage your logs in the dark and have lasers going and make it look like you&amp;#39;re from space!\&amp;#34;}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:10:14.596051024+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;End&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:10:14.641753851+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;ExitCode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Output&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;{\&amp;#34;cluster_id\&amp;#34;:\&amp;#34;dae76c58-321c-4c55-981d-a6fcf2b94720\&amp;#34;,\&amp;#34;node_id\&amp;#34;:\&amp;#34;9e5ff5c9-e40d-4744-ad20-074bd7d25fd8\&amp;#34;,\&amp;#34;version\&amp;#34;:\&amp;#34;6.0.3+eb761c5\&amp;#34;,\&amp;#34;tagline\&amp;#34;:\&amp;#34;Manage your logs in the dark and have lasers going and make it look like you&amp;#39;re from space!\&amp;#34;}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:10:24.64357778+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;End&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:10:24.685984565+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;ExitCode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Output&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;{\&amp;#34;cluster_id\&amp;#34;:\&amp;#34;dae76c58-321c-4c55-981d-a6fcf2b94720\&amp;#34;,\&amp;#34;node_id\&amp;#34;:\&amp;#34;9e5ff5c9-e40d-4744-ad20-074bd7d25fd8\&amp;#34;,\&amp;#34;version\&amp;#34;:\&amp;#34;6.0.3+eb761c5\&amp;#34;,\&amp;#34;tagline\&amp;#34;:\&amp;#34;Manage your logs in the dark and have lasers going and make it look like you&amp;#39;re from space!\&amp;#34;}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Start&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:10:34.688235952+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;End&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-06-28T15:10:34.730117272+08:00&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;ExitCode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;Output&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;{\&amp;#34;cluster_id\&amp;#34;:\&amp;#34;dae76c58-321c-4c55-981d-a6fcf2b94720\&amp;#34;,\&amp;#34;node_id\&amp;#34;:\&amp;#34;9e5ff5c9-e40d-4744-ad20-074bd7d25fd8\&amp;#34;,\&amp;#34;version\&amp;#34;:\&amp;#34;6.0.3+eb761c5\&amp;#34;,\&amp;#34;tagline\&amp;#34;:\&amp;#34;Manage your logs in the dark and have lasers going and make it look like you&amp;#39;re from space!\&amp;#34;}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;err&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;Healthcheck&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;Test&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;CMD-SHELL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;/health_check.sh&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;Interval&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10000000000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;Timeout&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000000000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;Retries&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;err&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;目前沒有正確的的解決方式，緩解措施有兩種：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/docker/for-linux/issues/679#issuecomment-509159724&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;在 rsyslog 對符合特定條件的 log 進行排除&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/docker/for-linux/issues/679#issuecomment-1004955357&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;在 systemd 透過 LogLevelMax 選項控制&lt;/a&gt; (從 v249 版開始支援)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;rsyslog 的方法可能只解了一半，&lt;a class=&#34;link&#34; href=&#34;https://github.com/docker/for-linux/issues/679#issuecomment-648293209&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;有人提到僅阻止了 rsyslog，但是 log 還是會寫到 journald&lt;/a&gt;，因此我採用的是 &lt;a class=&#34;link&#34; href=&#34;https://github.com/docker/for-linux/issues/679#issuecomment-1004955357&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;systemd 的方法&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;稍微改寫後如下 3 個指令&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir -p /etc/systemd/system/run-docker-.mount.d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[Mount]\nLogLevelMax=notice&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee 10-silence.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;暫時沒必要記錄這種 log，就先這樣做了。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/docker/for-linux/issues/679&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;systemd logs filled with mount unit entries if healtcheck is enabled · Issue #679 · docker/for-linux · GitHub&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>Upgrade Docker Graylog From 5.2 to 6.0</title>
        <link>https://caloskao.org/upgrade-docker-graylog-from-5.2-to-6.0/</link>
        <pubDate>Wed, 26 Jun 2024 16:04:13 +0800</pubDate>
        
        <guid>https://caloskao.org/upgrade-docker-graylog-from-5.2-to-6.0/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/graylog.svg" alt="Featured image of post Upgrade Docker Graylog From 5.2 to 6.0" /&gt;&lt;h2 id=&#34;升級概要&#34;&gt;升級概要
&lt;/h2&gt;&lt;p&gt;首先，簡單描述升級方式的重點:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mongo DB: &lt;code&gt;mongo:5.0&lt;/code&gt; -&amp;gt; &lt;code&gt;mongo:6.0&lt;/code&gt;&lt;br&gt;
根據官方自己寫的 &lt;a class=&#34;link&#34; href=&#34;https://go2docs.graylog.org/current/upgrading_graylog/upgrading_graylog.html#Version&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Version Compatibility&lt;/a&gt;，Graylog 6.0.x 版可支援的 Mongo DB 版本為 &lt;code&gt;5.0.7&lt;/code&gt; ~ &lt;code&gt;7.x&lt;/code&gt;，秉持著有新不用舊的心態，一開始我是升 &lt;code&gt;7.0&lt;/code&gt;，結果大暴死，Mongo DB container 陷入一個無限重啟的循環，看 log 好幾遍連怎麼死的都不知道，最後改成 &lt;code&gt;6.0&lt;/code&gt;，啥也沒幹就啟動了。&lt;/li&gt;
&lt;li&gt;Graylog Datanode: &lt;code&gt;graylog/graylog-datanode:5.0&lt;/code&gt; -&amp;gt; &lt;code&gt;graylog/graylog-datanode:6.0&lt;/code&gt;&lt;br&gt;
最一開始直接拿了官方給的 docker-compose 版本直接跑起來，現在要升級時，突然發現 compose file 裡面是跑 datanode，而不 ES 或是 OS，&lt;a class=&#34;link&#34; href=&#34;https://go2docs.graylog.org/current/upgrading_graylog/upgrading_graylog.html#Version&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Version Compatibility&lt;/a&gt; 對於 datanode 也隻字未提。&lt;/li&gt;
&lt;li&gt;Graylog: &lt;code&gt;graylog/graylog:5.0&lt;/code&gt; -&amp;gt; &lt;code&gt;graylog/graylog:6.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datanode&lt;/code&gt; 的 ENV VAR &lt;code&gt;GRAYLOG_DATANODE_NODE_ID_FILE&lt;/code&gt; 似乎沒用處，可以刪掉或註解&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;升級前的-docker-composeyml&#34;&gt;升級前的 &lt;code&gt;docker-compose.yml&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;目前的 &lt;code&gt;docker-compose.yml&lt;/code&gt; 內容如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3.8&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# For DataNode setup, graylog starts with a preflight UI, this is a change from just using OpenSearch/Elasticsearch.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Please take a look at the README at the top of this repo or the regular docs for more info.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mongodb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mongo:5.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Asia/Taipei&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;mongodb_data:/data/db&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;on-failure&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# For DataNode setup, graylog starts with a preflight UI, this is a change from just using OpenSearch/Elasticsearch.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Please take a look at the README at the top of this repo or the regular docs for more info.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;datanode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${DATANODE_IMAGE:-graylog/graylog-datanode:5.2}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;datanode&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Asia/Taipei&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_DATANODE_NODE_ID_FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/lib/graylog-datanode/node-id&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_DATANODE_PASSWORD_SECRET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_DATANODE_ROOT_PASSWORD_SHA2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_DATANODE_MONGODB_URI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mongodb://mongodb:27017/graylog&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ulimits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;memlock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hard&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;soft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;nofile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;soft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;65536&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hard&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;65536&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:8999:8999/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# DataNode API&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:9200:9200/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:9300:9300/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;graylog-datanode:/var/lib/graylog-datanode&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;on-failure&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;server&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_IMAGE:-graylog/graylog:5.2}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;depends_on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mongodb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;condition&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;service_started&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;entrypoint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/bin/tini --  /docker-entrypoint.sh&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Asia/Taipei&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_NODE_ID_FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/share/graylog/data/data/node-id&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_PASSWORD_SECRET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_ROOT_PASSWORD_SHA2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_HTTP_BIND_ADDRESS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0.0.0.0:9000&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_HTTP_EXTERNAL_URI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:9000/&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_MONGODB_URI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mongodb://mongodb:27017/graylog&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5044:5044/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Beats&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5140:5140/udp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Syslog UDP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5140:5140/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Syslog TCP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5555:5555/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# RAW TCP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5555:5555/udp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# RAW UDP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:9000:9000/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Server API&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:12201:12201/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# GELF TCP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:12201:12201/udp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# GELF UDP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#- &amp;#34;${IP_ADDRESS}:10000:10000/tcp&amp;#34; # Custom TCP port&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#- &amp;#34;${IP_ADDRESS}:10000:10000/udp&amp;#34; # Custom UDP port&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:13301:13301/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Forwarder data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:13302:13302/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Forwarder config&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;##### temp perserve #####&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;172.16.1.72:12201:12201/udp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# GELF UDP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;##### temp perserve #####&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;graylog_data:/usr/share/graylog/data/data&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;graylog_journal:/usr/share/graylog/data/journal&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;graylog_plugin:/usr/share/graylog/plugin&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;on-failure&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mongodb_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog-datanode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog_journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog_plugin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;注意如果有使用到第三方外掛套件&#34;&gt;注意：如果有使用到第三方外掛套件
&lt;/h2&gt;&lt;p&gt;這邊要特別注意，如果有使用到第三方外掛套件，要特別注意是否相容於 Graylog 6.0。&lt;/p&gt;
&lt;p&gt;如果需要升級外掛版本的話，請先準備好相應的外掛版本，在升級過程中替換掉，否則 Graylog 升級後會陷入無限重啟的死循環內。&lt;/p&gt;
&lt;p&gt;以這邊的例子，我有使用 &lt;a class=&#34;link&#34; href=&#34;https://github.com/wizecore/graylog2-output-syslog/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;wizecore/graylog2-output-syslog&lt;/a&gt; 這個 Syslog Output 外掛。&lt;/p&gt;
&lt;p&gt;在 Graylog 5.2 時使用的外掛版本是 v4.2.6，對應 Graylog 6.0 的外掛版本是 v6.0.0。&lt;/p&gt;
&lt;p&gt;因為外掛程式載入錯誤而陷入無限重啟的死循環時，log 大概長得像這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2024&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;55&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;286&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;INFO&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mongodb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;driver&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cluster&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Waiting&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;become&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;available&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;operation&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ID&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;11.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Remaining&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30000&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ms&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Selector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ReadPreferenceServerSelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;readPreference&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;topology&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UNKNOWN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;servers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mongodb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;27017&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UNKNOWN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CONNECTING&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2024&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;55&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;015&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;INFO&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preflight&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SearchDbPreflightCheck&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Connected&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Elastic&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Search&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OpenSearch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;2.12&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2024&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;55&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;095&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;INFO&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hibernate&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;validator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;util&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Version&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HV000001&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Hibernate&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Validator&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2024&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;56&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;00&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;376&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ERROR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;error&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;more&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;detail&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;level&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;No&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;injectable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constructor&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wizecore&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;plugin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2024&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;56&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;00&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;376&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ERROR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;error&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;more&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;detail&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;level&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;No&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;implementation&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wizecore&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;plugin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Factory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;was&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bound&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2024&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;56&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;00&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;376&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ERROR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Startup&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CreationException&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Unable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;create&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;injector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;see&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;following&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;errors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MissingConstructor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;No&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;injectable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constructor&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;does&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;have&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Inject&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;annotated&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constructor&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;no&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arg&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constructor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Requested&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;43&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;locating&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;thread&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;main&amp;#34;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CreationException&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Unable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;create&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;injector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;see&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;following&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;errors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Factory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;271&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MissingConstructor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;No&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;injectable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constructor&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Learn&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;more&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;does&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;have&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Inject&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;annotated&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constructor&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;no&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arg&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constructor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;github&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wiki&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MISSING_CONSTRUCTOR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Requested&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MissingImplementation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;No&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;implementation&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Factory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;was&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bound&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;43&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;locating&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Factory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;271&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Learn&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;more&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;github&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wiki&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MISSING_CONSTRUCTOR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Requested&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MissingImplementation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;No&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;implementation&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Factory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;was&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bound&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Graylog2Module&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;installOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Graylog2Module&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;267&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Requested&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      \&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;installed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PluginBindings&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutputModule&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Graylog2Module&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;installOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Graylog2Module&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;267&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Learn&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;more&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      \&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;installed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PluginBindings&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SyslogOutputModule&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;github&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wiki&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MISSING_IMPLEMENTATION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Learn&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;more&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;errors&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;======================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;github&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wiki&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MISSING_IMPLEMENTATION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;errors&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;======================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Full&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;classname&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;legend&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Full&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;classname&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;legend&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;======================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;======================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Graylog2Module&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;       &lt;span class=&#34;s2&#34;&gt;&amp;#34;org.graylog2.plugin.inject.Graylog2Module&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Graylog2Module&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;       &lt;span class=&#34;s2&#34;&gt;&amp;#34;org.graylog2.plugin.inject.Graylog2Module&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;PluginBindings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;       &lt;span class=&#34;s2&#34;&gt;&amp;#34;org.graylog2.shared.bindings.PluginBindings&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;PluginBindings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;       &lt;span class=&#34;s2&#34;&gt;&amp;#34;org.graylog2.shared.bindings.PluginBindings&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;         &lt;span class=&#34;s2&#34;&gt;&amp;#34;com.wizecore.graylog2.plugin.SyslogOutput&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;         &lt;span class=&#34;s2&#34;&gt;&amp;#34;com.wizecore.graylog2.plugin.SyslogOutput&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Factory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;com.wizecore.graylog2.plugin.SyslogOutput$Factory&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutput&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Factory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;com.wizecore.graylog2.plugin.SyslogOutput$Factory&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutputModule&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;   &lt;span class=&#34;s2&#34;&gt;&amp;#34;com.wizecore.graylog2.plugin.SyslogOutputModule&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;========================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;End&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;classname&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;legend&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;========================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Errors&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;throwCreationExceptionIfErrorsExist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Errors&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;589&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;SyslogOutputModule&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;   &lt;span class=&#34;s2&#34;&gt;&amp;#34;com.wizecore.graylog2.plugin.SyslogOutputModule&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;========================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;End&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;classname&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;legend&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;========================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Errors&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;throwCreationExceptionIfErrorsExist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Errors&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;589&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InternalInjectorCreator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;initializeStatically&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InternalInjectorCreator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;163&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InternalInjectorCreator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InternalInjectorCreator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;110&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;createInjector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shared&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bindings&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GuiceInjectorHolder&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;createInjector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GuiceInjectorHolder&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;34&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;setupInjector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;530&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;doRun&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;317&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;267&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Main&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Main&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;55&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InternalInjectorCreator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;initializeStatically&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InternalInjectorCreator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;163&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InternalInjectorCreator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InternalInjectorCreator&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;110&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;createInjector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Guice&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;87&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shared&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bindings&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GuiceInjectorHolder&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;createInjector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GuiceInjectorHolder&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;34&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;setupInjector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;530&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;doRun&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;317&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CmdLineTool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;267&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Main&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Main&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;55&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;開始升級&#34;&gt;開始升級
&lt;/h2&gt;&lt;h3 id=&#34;step1-升級-mongodb&#34;&gt;Step.1 升級 MongoDB
&lt;/h3&gt;&lt;p&gt;第一步先單獨升級 MongoDB 到 6.0，升級時不會影響另外兩個 container 運作。&lt;/p&gt;
&lt;p&gt;將 &lt;code&gt;docker-compose.yml&lt;/code&gt; 內 MongoDB 的版本改成 6.0 後執行 &lt;code&gt;docker-compose up -d&lt;/code&gt;，container 啟動後透過以下指令升級功能相容性版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; mongodb mongosh --eval &lt;span class=&#34;s1&#34;&gt;&amp;#39;db.adminCommand( { setFeatureCompatibilityVersion: &amp;#34;6.0&amp;#34; } )&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;正常情況得到的輸出：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;ok:&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;step2-升級第三方外掛套件版本-沒有使用的話可直接略過此步驟&#34;&gt;Step.2 升級第三方外掛套件版本 (沒有使用的話可直接略過此步驟)
&lt;/h3&gt;&lt;p&gt;需要升級第三方外掛套件的話，不需要停止 container，直接將新版本第三方外掛套件複製到 plugin volume，並移除舊版本即可。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker cp ./graylog-output-syslog-6.0.0.jar graylog-graylog-1:/usr/share/graylog/plugin/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; graylog-graylog-1 rm -f /usr/share/graylog/plugin/graylog-output-syslog-4.2.6.jar
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;此步驟不需要先停止 container 再進行，如果是在停止的狀態下，需要透過其他 running container 掛載 volume 後才能將舊版外掛套件刪除。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;，下載後丟到 &lt;code&gt;graylog_plugin&lt;/code&gt; volume 裡即可，舊版本先留著，升級完成後再刪除。&lt;/p&gt;
&lt;h3 id=&#34;step3-升級-graylog-和-datanode-image&#34;&gt;Step.3 升級 Graylog 和 Datanode Image
&lt;/h3&gt;&lt;p&gt;把 &lt;code&gt;docker-compose.yml&lt;/code&gt; 內的 &lt;code&gt;graylog/graylog:5.2&lt;/code&gt; 與 &lt;code&gt;graylog/graylog-datanode:5.2&lt;/code&gt; 版號改成 &lt;code&gt;6.0&lt;/code&gt; 即可。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果要將 Community Edition 轉換為 Enterprise Edition 的話，也可以把 &lt;code&gt;graylog/graylog:5.2&lt;/code&gt; 直接改成 &lt;code&gt;graylog/graylog-enterprise:6.0&lt;/code&gt;，我自己測試同時升級 Major Version 與轉換到 Enterprise Edition 是沒問題，不過升級前一律建議完整備份再升級，中間會不會出什麼差錯誰也說不準。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;感謝 &lt;a class=&#34;link&#34; href=&#34;https://community.graylog.org/t/update-graylog-docker-stack-from-5-2-to-6-0-1-incl-change-from-elasticsearch-to-opensearch-and-upgrade-mongodb/32411&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Chris 的紀錄&lt;/a&gt;，照著&lt;a class=&#34;link&#34; href=&#34;https://go2docs.graylog.org/current/upgrading_graylog/upgrading_graylog_in_docker.htm?tocpath=Upgrading%20Graylog%7C_____4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方的指引&lt;/a&gt;走到 step.7 就會卡關，不得不說 Graylog 東西好，但是文件真的有點糟糕 = =。&lt;/p&gt;
&lt;p&gt;最後檢視環境大部分都正常，除了 Elasticsearch cluster 狀態有警告：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Elasticsearch cluster datanode-cluster is yellow. Shards: 42 active, 0 initializing, 0 relocating, 2 unassigned, &lt;a class=&#34;link&#34; href=&#34;https://docs.graylog.org/docs/elasticsearch#cluster-status-explained&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What does this mean&lt;/a&gt;?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;看了一下官方說明，可以手動介入也可以試著放置 play，在放置兩天後它自己修復了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Elasticsearch cluster datanode-cluster is green. Shards: 47 active, 0 initializing, 0 relocating, 0 unassigned, &lt;a class=&#34;link&#34; href=&#34;https://docs.graylog.org/docs/elasticsearch#cluster-status-explained&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What does this mean&lt;/a&gt;?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;以下為升級完成後的完整 &lt;code&gt;docker-compose.yml&lt;/code&gt; 檔案內容&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3.8&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# For DataNode setup, graylog starts with a preflight UI, this is a change from just using OpenSearch/Elasticsearch.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Please take a look at the README at the top of this repo or the regular docs for more info.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mongodb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mongo:6.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Asia/Taipei&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;mongodb_data:/data/db&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;on-failure&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# For DataNode setup, graylog starts with a preflight UI, this is a change from just using OpenSearch/Elasticsearch.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Please take a look at the README at the top of this repo or the regular docs for more info.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;datanode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${DATANODE_IMAGE:-graylog/graylog-datanode:6.0}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;datanode&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Asia/Taipei&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# deprecated on 6.0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# GRAYLOG_DATANODE_NODE_ID_FILE: &amp;#34;/var/lib/graylog-datanode/node-id&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_DATANODE_PASSWORD_SECRET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_DATANODE_ROOT_PASSWORD_SHA2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_DATANODE_MONGODB_URI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mongodb://mongodb:27017/graylog&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ulimits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;memlock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hard&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;soft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;nofile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;soft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;65536&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hard&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;65536&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:8999:8999/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Graylog Data Node REST API&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:9200:9200/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# OpenSearch REST API&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:9300:9300/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# OpenSearch Transport API&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;graylog-datanode:/var/lib/graylog-datanode&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;on-failure&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;server&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_IMAGE:-graylog/graylog:6.0}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;depends_on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mongodb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;condition&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;service_started&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;entrypoint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/bin/tini --  /docker-entrypoint.sh&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Asia/Taipei&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_NODE_ID_FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/share/graylog/data/data/node-id&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_PASSWORD_SECRET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_ROOT_PASSWORD_SHA2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file}&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_HTTP_BIND_ADDRESS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0.0.0.0:9000&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_HTTP_EXTERNAL_URI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:9000/&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GRAYLOG_MONGODB_URI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mongodb://mongodb:27017/graylog&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5044:5044/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Beats&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5140:5140/udp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Syslog UDP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5140:5140/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Syslog TCP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5555:5555/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# RAW TCP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:5555:5555/udp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# RAW UDP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:9000:9000/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Server API&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:12201:12201/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# GELF TCP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:12201:12201/udp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# GELF UDP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#- &amp;#34;${IP_ADDRESS}:10000:10000/tcp&amp;#34; # Custom TCP port&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#- &amp;#34;${IP_ADDRESS}:10000:10000/udp&amp;#34; # Custom UDP port&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:13301:13301/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Forwarder data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;${IP_ADDRESS}:13302:13302/tcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Forwarder config&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;graylog_data:/usr/share/graylog/data/data&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;graylog_journal:/usr/share/graylog/data/journal&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;graylog_plugin:/usr/share/graylog/plugin&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;on-failure&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mongodb_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog-datanode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog_journal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;graylog_plugin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>Veeam Backup and Replication - Rescan of Agent Backup Failed</title>
        <link>https://caloskao.org/veeam-backup-and-replication-rescan-of-agent-backup-failed/</link>
        <pubDate>Fri, 21 Jun 2024 15:02:36 +0800</pubDate>
        
        <guid>https://caloskao.org/veeam-backup-and-replication-rescan-of-agent-backup-failed/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/veeam.svg" alt="Featured image of post Veeam Backup and Replication - Rescan of Agent Backup Failed" /&gt;&lt;p&gt;透過 Veeam Backup and Replication 新增 Windows 主機後執行備份，在進行 rescan 時失敗。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/veeam-backup-and-replication-rescan-of-agent-backup-failed/img_ad8a1106024d_hu_c4c152d23b9a790c.png&#34;
    width=&#34;1920&#34;
    height=&#34;1216&#34;
    srcset=&#34;https://caloskao.org/post/veeam-backup-and-replication-rescan-of-agent-backup-failed/img_ad8a1106024d_hu_c4c152d23b9a790c.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;157&#34;
        data-flex-basis=&#34;379px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;查看相關 log (路徑: &lt;code&gt;C:\ProgramData\Veeam\Backup\Rescan\Rescan_of_Agent_Backup_-_win11-pro-4&lt;/code&gt;)，一些關鍵訊息如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:00.454]    &amp;lt;01&amp;gt;    Info (3)    Starting discovery for Windows host &amp;#39;192.168.18.133&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:00.554]    &amp;lt;01&amp;gt;    Info (3)    [STcpPing] Trying invoke (AddressFamily: &amp;#39;InterNetwork&amp;#39;) IP addresses: [&amp;#39;192.168.18.133&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:15.655]    &amp;lt;01&amp;gt;    Info (3)    [192.168.18.133] Installing Installer service. Account: &amp;#39;user&amp;#39;. IP addresses: [192.168.18.133, 192.168.18.133]. Port: &amp;#39;6160&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:15.671]    &amp;lt;01&amp;gt;    Info (3)    Fixing credentials to down-level format.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:15.687]    &amp;lt;01&amp;gt;    Info (3)    [SNetworkAddressResolver] Host not joined to domain. Using NTLM only strategy.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:15.702]    &amp;lt;01&amp;gt;    Info (3)    [SHostNameResolver] Using hostnames resolving policy: UseOnlyOriginalHostNames
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:15.702]    &amp;lt;01&amp;gt;    Info (3)    [SNetworkAddressResolver] Resolved [&amp;#39;192.168.18.133&amp;#39;] by NTLM strategy IP addresses and host names. IPAddressKind: [All]. Result: [&amp;#39;192.168.18.133&amp;#39;].
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:15.702]    &amp;lt;01&amp;gt;    Info (3)    [192.168.18.133] Trying to install Installer service on 192.168.18.133:6160.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:36.817]    &amp;lt;01&amp;gt;   Error (3)    Native method execution failed: install service ex - Access is denied.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:36.817]    &amp;lt;01&amp;gt;   Error (3)    Failed to connect to share &amp;#39;\\192.168.18.133\ADMIN$&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:36.817]    &amp;lt;01&amp;gt;   Error (3)    --tr:Error code: 0x00000005
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:36.817]    &amp;lt;01&amp;gt;   Error (3)    --tr:Failed to create persistent connection to ADMIN$ shared folder on host [192.168.18.133].
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:36.817]    &amp;lt;01&amp;gt;   Error (3)    --tr:Failed to install service [VeeamDeploySvc] was not installed on the host [192.168.18.133].
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;問題出在這條：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[20.06.2024 18:20:36.817]    &amp;lt;01&amp;gt;   Error (3)    Failed to connect to share &amp;#39;\\192.168.18.133\ADMIN$&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;摘錄&lt;a class=&#34;link&#34; href=&#34;https://www.veeam.com/kb4185&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方知識庫相關條目&lt;/a&gt;敘述如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When a Windows Server is added as a &lt;a class=&#34;link&#34; href=&#34;https://helpcenter.veeam.com/docs/backup/vsphere/add_windows_server.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Managed Server&lt;/a&gt; or added to a &lt;a class=&#34;link&#34; href=&#34;https://helpcenter.veeam.com/docs/backup/agents/protection_group_add.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Protection Group&lt;/a&gt;, Veeam Backup &amp;amp; Replication checks if the &lt;em&gt;Veeam Installer Service (VeeamDeploySvc)&lt;/em&gt; is present on the server. If the service is not accessible Veeam Backup &amp;amp; Replication will attempt to connect to the machine via the &lt;code&gt;admin$&lt;/code&gt; share to deploy the service.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;code&gt; \\localhost\**admin$**&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;Access is Denied&amp;rdquo; error occurs because the user account specified is a local account, and &lt;a class=&#34;link&#34; href=&#34;https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;UAC restricts remote access&lt;/a&gt; for local accounts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For Veeam Backup &amp;amp; Replication to add a remote Windows machine as a managed server or as part of a Protection Group, the user account used to connect to that remote machine must work with the &lt;a class=&#34;link&#34; href=&#34;https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;UAC remote restrictions&lt;/a&gt;. The account must be either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A domain account that is a member of the Local Administrators group.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The built-in account named Administrator.&lt;/p&gt;
&lt;p&gt;Note: The built-in Administrator account may fail if the &amp;ldquo;&lt;a class=&#34;link&#34; href=&#34;https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/user-account-control-admin-approval-mode-for-the-built-in-administrator-account&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;User Account Control: Admin Approval Mode for the Built-in Administrator account&lt;/a&gt;&amp;rdquo; policy is enabled on the remote machine.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;簡單來說，是因為新增至 VBR 用於驗證 Windows 主機的帳戶是本機帳戶，被 UAC 限制了遠端存取導致失敗，儘管帳戶的身分組是 &lt;code&gt;Administrators&lt;/code&gt; 也不例外。&lt;/p&gt;
&lt;p&gt;官方給出三種解決辦法，分別應對三種不同的情況。&lt;/p&gt;
&lt;p&gt;這邊的 case 是未加入 AD 的非 Windows Server 系統，所以啟用內建的 Administrator 帳戶並設定密碼，再讓 VBR 使用 Administrator 驗證即可解決。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/veeam-backup-and-replication-rescan-of-agent-backup-failed/img_c96e74e03931_hu_6d038f6dd58f7b3a.png&#34;
    width=&#34;1920&#34;
    height=&#34;1316&#34;
    srcset=&#34;https://caloskao.org/post/veeam-backup-and-replication-rescan-of-agent-backup-failed/img_c96e74e03931_hu_6d038f6dd58f7b3a.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;145&#34;
        data-flex-basis=&#34;350px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;Rescan 成功後，VBR 就會自動在目標主機上安裝 Veeam Agent for Windows，並將備份任務的設定佈署上去。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/veeam-backup-and-replication-rescan-of-agent-backup-failed/img_45bdef5298cf_hu_5e487c6b22ce8ab2.png&#34;
    width=&#34;1920&#34;
    height=&#34;1715&#34;
    srcset=&#34;https://caloskao.org/post/veeam-backup-and-replication-rescan-of-agent-backup-failed/img_45bdef5298cf_hu_5e487c6b22ce8ab2.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;111&#34;
        data-flex-basis=&#34;268px&#34;
    
&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;備份對象為 Windows Server 時，必須先設定防火牆，允許 VBR 主機存取 TCP/UDP 135, 137-139, 445, 6160, 11731&lt;/p&gt;
&lt;p&gt;以下為相對應的 powershell 指令&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 允許 TCP 通訊埠&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;New-NetFirewallRule&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DisplayName&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;VBR - TCP&amp;#34;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Direction&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Inbound&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Protocol&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TCP&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-LocalPort&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;135&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;137&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;139&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;445&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;6160&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;11731&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Action&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Allow&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-RemoteAddress&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;131&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# 允許 UDP 通訊埠&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;New-NetFirewallRule&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DisplayName&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;VBR - UDP&amp;#34;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Direction&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Inbound&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Protocol&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UDP&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-LocalPort&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;135&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;137&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;139&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;445&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;6160&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;11731&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Action&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Allow&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-RemoteAddress&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;131&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這邊的 VBR 主機 IP 為 192.168.18.131，請自行替換。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.veeam.com/kb4185&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;KB4185: &amp;ldquo;Access is Denied.&amp;rdquo; When Using a Local Account to Add a Windows Machine to Veeam Backup &amp;amp; Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://helpcenter.veeam.com/docs/backup/agents/used_ports.html?ver=120#communication-between-veeam-backup---replication-components&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ports - Veeam Agent Management Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>使用 DNS-01 Challenge 取得 Let&#39;s Encrypt SSL 憑證</title>
        <link>https://caloskao.org/certbot-dns-01-challenge/</link>
        <pubDate>Thu, 02 May 2024 16:41:03 +0800</pubDate>
        
        <guid>https://caloskao.org/certbot-dns-01-challenge/</guid>
        <description>&lt;p&gt;使用 Certbot 取得 Let&amp;rsquo;s Encrypt SSL 憑證常見的驗證方式為 HTTP-01 challenge ，如果無法使用此驗證方式時，仍有其他的選擇可以使用。目前 Let&amp;rsquo;s Encrypt 支援以下 4 種驗證方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP-01 challenge&lt;/li&gt;
&lt;li&gt;DNS-01 challenge&lt;/li&gt;
&lt;li&gt;TLS-SNI-01&lt;/li&gt;
&lt;li&gt;TLS-ALPN-01&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工作原理及優缺點可以參考 &lt;a class=&#34;link&#34; href=&#34;https://letsencrypt.org/docs/challenge-types/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Let&amp;rsquo;s Encrypt 官方網站的說明&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;本篇使用 Certbot 的 DNS-Cloudflare 外掛進行註冊憑證。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;操作環境: Ubuntu Server 22.04 LTS (Jammy Jellyfish)&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;step1---取得-dns-服務供應商的-api-token&#34;&gt;Step.1 - 取得 DNS 服務供應商的 API token
&lt;/h2&gt;&lt;p&gt;先到 &lt;a class=&#34;link&#34; href=&#34;https://dash.cloudflare.com/profile/api-tokens&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare&lt;/a&gt; 建立一組 API token。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/certbot-dns-01-challenge/img_72e246cc428c_hu_341e09a1bb3401d6.png&#34;
    width=&#34;1920&#34;
    height=&#34;2583&#34;
    srcset=&#34;https://caloskao.org/post/certbot-dns-01-challenge/img_72e246cc428c_hu_341e09a1bb3401d6.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;178px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;建議限縮至 specific zone，送出後就可以獲得 token，複製起來。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/certbot-dns-01-challenge/img_34bc24bbc357_hu_851d2a9b1285595a.png&#34;
    width=&#34;1920&#34;
    height=&#34;2030&#34;
    srcset=&#34;https://caloskao.org/post/certbot-dns-01-challenge/img_34bc24bbc357_hu_851d2a9b1285595a.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;94&#34;
        data-flex-basis=&#34;227px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;建立 token 檔，內容自行替換。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p ~/.secrets/certbot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;# Cloudflare API token used by Certbot
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567&amp;#39;&lt;/span&gt; &amp;gt; ~/.secrets/certbot/cloudflare.ini
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;600&lt;/span&gt; ~/.secrets/certbot/cloudflare.ini
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;step2---安裝套件&#34;&gt;Step.2 - 安裝套件
&lt;/h2&gt;&lt;p&gt;安裝 &lt;code&gt;certbot&lt;/code&gt; 與 Cloudflare 用的 plugin &lt;code&gt;python3-certbot-dns-cloudflare&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y certbot python3-certbot-dns-cloudflare
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行憑證註冊&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo certbot certonly &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --dns-cloudflare &lt;span class=&#34;c1&#34;&gt;# 使用 certbot-dns-cloudflare plugin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini &lt;span class=&#34;se&#34;&gt;\ &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# API token 檔案路徑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d test-dns-challenge.caloskao.org &lt;span class=&#34;c1&#34;&gt;# 憑證核發網域&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;註冊成功。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Saving debug log to /var/log/letsencrypt/letsencrypt.log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Requesting a certificate &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; test-dns-challenge.caloskao.org
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Unsafe permissions on credentials configuration file: /home/calos/.secrets/certbot/cloudflare.ini
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Waiting &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt; seconds &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; DNS changes to propagate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Successfully received certificate.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Certificate is saved at: /etc/letsencrypt/live/test-dns-challenge.caloskao.org/fullchain.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Key is saved at:         /etc/letsencrypt/live/test-dns-challenge.caloskao.org/privkey.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This certificate expires on 2024-05-01.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;These files will be updated when the certificate renews.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Certbot has &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; up a scheduled task to automatically renew this certificate in the background.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;If you like Certbot, please consider supporting our work by:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; * Donating to ISRG / Let&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;s Encrypt:   https://letsencrypt.org/donate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; * Donating to EFF:                    https://eff.org/donate-le
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://eff-certbot.readthedocs.io/en/latest/using.html#dns-plugins&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;User Guide — Certbot 2.7.0.dev0 documentation&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Ubuntu] 快速設定臨時 IP</title>
        <link>https://caloskao.org/ubuntu-assign-a-temporary-ip-address-quickly/</link>
        <pubDate>Thu, 15 Feb 2024 12:10:11 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-assign-a-temporary-ip-address-quickly/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/ubuntu.png" alt="Featured image of post [Ubuntu] 快速設定臨時 IP" /&gt;&lt;p&gt;登入系統後，輸入 &lt;code&gt;ip addr&lt;/code&gt; 查詢網路卡名稱&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu-focal-fossa:~$ ip addr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu &lt;span class=&#34;m&#34;&gt;65536&lt;/span&gt; qdisc noqueue state UNKNOWN group default qlen &lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 127.0.0.1/8 scope host lo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 ::1/128 scope host
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2: ens33: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu &lt;span class=&#34;m&#34;&gt;1500&lt;/span&gt; qdisc fq_codel state UNKNOWN group default qlen &lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/ether 00:0c:29:75:ec:4a brd ff:ff:ff:ff:ff:ff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 10.240.0.101/24 brd 10.240.0.255 scope global dynamic ens33
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft 86372sec preferred_lft 86372sec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 fe80::20c:29ff:fe75:ec4a/64 scope link
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以看到有 &lt;code&gt;lo&lt;/code&gt; 和 &lt;code&gt;ens33&lt;/code&gt; 兩張網路卡，&lt;code&gt;lo&lt;/code&gt; 是一個 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Loopback&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Loopback 介面&lt;/a&gt;，&lt;code&gt;ens33&lt;/code&gt; 就是我們要設定的網卡。&lt;/p&gt;
&lt;p&gt;網路卡的名稱會因為機器的類型或其他原因導致每台電腦顯示的名稱不盡相同，複製設定範例前要先查好。&lt;/p&gt;
&lt;p&gt;使用下列指令在網路卡 &lt;code&gt;ens33&lt;/code&gt; 上設定一個臨時 IP:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ip addr add 192.168.1.220/24 dev ens33
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動網路卡:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ip link &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; ens33 up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接下來開啟一般的 SSH client，這時候應該就可以透過 &lt;code&gt;ssh username@192.168.1.220&lt;/code&gt; 以 SSH 登入機器，之後操作就比較方便了。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>使用 openssl 自簽 SSL/TLS 憑證</title>
        <link>https://caloskao.org/create-a-self-signed-certificate-using-openssl/</link>
        <pubDate>Tue, 30 Jan 2024 17:57:19 +0800</pubDate>
        
        <guid>https://caloskao.org/create-a-self-signed-certificate-using-openssl/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/linux.jpg" alt="Featured image of post 使用 openssl 自簽 SSL/TLS 憑證" /&gt;&lt;p&gt;寫在前面: 自簽憑證建議只拿來測試用，其他情境請使用簡單又方便的 &lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/ubuntu-use-certbot-to-automatically-update-lets-encrypt-certificate-authority/&#34; &gt;Let&amp;rsquo;s Encrypt / Certbot&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 定義欄位資訊&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENSSL_COUNTRY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;TW&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENSSL_STATE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Taiwan&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENSSL_LOCATION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Kaohsiung City&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENSSL_ORGANIZATION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Calos&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENSSL_ORGANIZATION_UNIT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Blog&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENSSL_HOST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;caloskao.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 產生 subject&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENSSL_SUBJ&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/C=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENSSL_COUNTRY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/ST=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENSSL_STATE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/L=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENSSL_LOCATION&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/O=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENSSL_ORGANIZATION&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/OU=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENSSL_ORGANIZATION_UNIT&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/CN=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENSSL_HOST&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 產生憑證&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openssl req -new -newkey rsa:4096 -days &lt;span class=&#34;m&#34;&gt;3650&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;    -nodes -x509 -subj &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPENSSL_SUBJ&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;    -keyout &lt;span class=&#34;nv&#34;&gt;$OPENSSL_HOST&lt;/span&gt;.key -out &lt;span class=&#34;nv&#34;&gt;$OPENSSL_HOST&lt;/span&gt;.pem
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;將 pem 轉 crt 的指令&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openssl x509 -outform der -in your-cert.pem -out your-cert.crt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;: &lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/ubuntu-use-certbot-to-automatically-update-lets-encrypt-certificate-authority/&#34; &gt;Create a self-signed certificate using OpenSSL | by Allan Sun | 隨筆雜記&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>如何修復 WSL 錯誤: read-only file system</title>
        <link>https://caloskao.org/how-to-fix-wsl-error-read-only-file-system/</link>
        <pubDate>Fri, 26 Jan 2024 15:43:51 +0800</pubDate>
        
        <guid>https://caloskao.org/how-to-fix-wsl-error-read-only-file-system/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/linux.jpg" alt="Featured image of post 如何修復 WSL 錯誤: read-only file system" /&gt;&lt;h2 id=&#34;故障原因推測&#34;&gt;故障原因推測
&lt;/h2&gt;&lt;p&gt;這個狀況出現不少次，但只出現在一台電腦上，而且是在我執行這兩種動作時：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;啟動 VScode 連線到 WSL 環境 (IDE 初始化時會掃描程式碼)&lt;/li&gt;
&lt;li&gt;使用 NPM build assets&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這兩個動作的共同點在於執行時會有大量的 I/O 動作，最後造成 WSL 檔案系統進入唯讀狀態&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error: read-only file system
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但是這種狀況沒有發生在其他設備上，而跟其他設備的儲存體不同的是，只有這台的 SSD 是 QLC + Dramless 的組合。&lt;/p&gt;
&lt;p&gt;個人感覺問題是出在這邊，打算要把這條 SSD 換掉再觀察看看，無奈還有東西需要跑在上面，所以才有了這篇。&lt;/p&gt;
&lt;h2 id=&#34;修復方式&#34;&gt;修復方式
&lt;/h2&gt;&lt;p&gt;由於 WSL 2 是使用 VHD (虛擬硬碟) 檔案，不同於 VM 的部分，VM 啟動時可以選擇進入修復模式執行 &lt;code&gt;e2fsck&lt;/code&gt; 就完事，但是 WSL 無法這樣做，而 &lt;code&gt;e2fsck&lt;/code&gt; 無法對已掛載 / 使用中的磁區進行修復。&lt;/p&gt;
&lt;p&gt;爬了一下文，也測試過幾種方法，只有&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/WSL/issues/8340#issuecomment-1113401933&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;將 VHD 掛到其他 WSL 進行修復&lt;/a&gt;這個方式才有效。&lt;/p&gt;
&lt;h3 id=&#34;step-1-安裝修復用的-wsl-distro&#34;&gt;Step 1: 安裝修復用的 WSL Distro
&lt;/h3&gt;&lt;p&gt;目前故障的 WSL distro 是 Ubuntu，由於只是要執行 &lt;code&gt;e2fsck&lt;/code&gt;，因此只需要有基本功能的 distro 即可，這邊推薦輕量好用的 &lt;a class=&#34;link&#34; href=&#34;https://www.alpinelinux.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alpine Linux&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;至 Alpine Linux 的 &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/store/productId/9P804CRF0395?ocid=pdpshare&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MS Store 頁面進行安裝&lt;/a&gt;，照著畫面導引完成即可。&lt;/p&gt;
&lt;h3 id=&#34;step-2-確認故障的-wsl-distro-使用的-vhd-代號&#34;&gt;Step 2: 確認故障的 WSL Distro 使用的 VHD 代號
&lt;/h3&gt;&lt;p&gt;WSL 所有執行個體彼此互相看的到各自的虛擬硬碟，也可以互相掛載，在任意 WSL 執行 &lt;code&gt;blkid&lt;/code&gt; 就可以看到了：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sdd: &lt;span class=&#34;nv&#34;&gt;UUID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;4825c63e-64b4-4bdf-a2d2-5810d052c462&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;BLOCK_SIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;4096&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ext4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sdb: &lt;span class=&#34;nv&#34;&gt;UUID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;f3dfd593-63b2-45c3-a96c-83cda120004b&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;BLOCK_SIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;4096&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ext4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sde: &lt;span class=&#34;nv&#34;&gt;UUID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;c4eb02d2-9723-4437-af08-ba92cd8b6385&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;BLOCK_SIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;4096&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ext4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sdc: &lt;span class=&#34;nv&#34;&gt;UUID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;44199e16-30c9-411c-b823-370b1e33107e&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;BLOCK_SIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;4096&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ext4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sda: &lt;span class=&#34;nv&#34;&gt;BLOCK_SIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;4096&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ext4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這一步，要確認故障的 WSL distro 是使用哪一個 VHD，在故障的 WSL distro 內執行指令: &lt;code&gt;mount | grep ext4&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep ext4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sdb on / &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; ext4 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;rw,relatime,discard,errors&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;remount-ro,data&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ordered&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sdb on /snap &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; ext4 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;rw,relatime,discard,errors&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;remount-ro,data&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ordered&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這邊得知故障的 WSL distro 使用的是 &lt;code&gt;/dev/sdb&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;step-3-停止故障的-wsl-distro-執行個體並執行修復&#34;&gt;Step 3: 停止故障的 WSL Distro 執行個體，並執行修復
&lt;/h3&gt;&lt;p&gt;這邊要注意的是，因為 Windows 的 &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/previous-versions/windows/desktop/cmdline/wsl-architectural-overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LXSS Manager service&lt;/a&gt; 會把預設的 WSL Distro 掛到 Windows 檔案總管，而本篇故障的 WSL Distro 為預設值，所以將 WSL 執行個體停止後，LXSS 會馬上重新啟動 WSL Distro。&lt;/p&gt;
&lt;p&gt;不過在啟動前會有幾秒的等待時間，只要搶在 LXSS 把 WSL 啟動前執行 &lt;code&gt;e2fsck&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;首先，先在 Alpine 內切換為 root:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;su
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後先把這個指令打好，先不要按下執行:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;e2fsck -y /dev/sdb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接著以系統管理員權限開啟 CMD 或 PowerShell，執行 &lt;code&gt;wsl -l -v&lt;/code&gt;，確認 WSL Distro 的名稱，然後使用 &lt;code&gt;wsl -t 名稱&lt;/code&gt; 停止執行個體。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;C:\Users\calos&amp;gt;wsl -l -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  NAME                   STATE           VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;* Ubuntu                 Running         2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  docker-desktop-data    Stopped         2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Alpine                 Running         2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  docker-desktop         Stopped         2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;C:\Users\calos&amp;gt;wsl -t Ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;操作順利完成。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接著馬上在 Alpine 內送出剛剛打好的指令，就會開始修復。&lt;/p&gt;
&lt;p&gt;如果速度不夠快的話就會出現裝置使用中，停止修復的錯誤:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;e2fsck 1.46.6 (1-Feb-2023)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sdb is in use.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;e2fsck: Cannot continue, aborting.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這種情況，就再次停止 WSL 執行個體並馬上執行 &lt;code&gt;e2fsck&lt;/code&gt; 即可，手速要快一點，多試幾次一定可以成功。&lt;/p&gt;
&lt;h3 id=&#34;step-4-確認修復結果&#34;&gt;Step 4: 確認修復結果
&lt;/h3&gt;&lt;p&gt;啟動修復後的 WSL distro，確認一下受損狀況。&lt;/p&gt;
&lt;p&gt;會使檔案系統進入 read-only 狀態的觸發條件大多數情況如同實體儲存體，與磁區錯誤有關，有可能在修復後會發現某些東西還是壞的。&lt;/p&gt;
&lt;p&gt;我自己有檢查到的情況只有 &lt;code&gt;~/.zsh_history&lt;/code&gt; 有部分的錯誤，裡面有一行紀錄是亂碼，刪掉就可以了，算是滿幸運。&lt;/p&gt;
&lt;p&gt;如果是重要的東西，平日請勤做備份。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;References&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/questions/73317185/wsl2-read-only-file-system-while-building-chromium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linux - WSL2 &amp;ldquo;read-only&amp;rdquo; file system while building chromium - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/WSL/issues/8340#issuecomment-1113401933&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WSL2 File System Goes Into Read Only Mode Without Warning · Issue #8340 · microsoft/WSL · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[PHP] 升級 PHP 8.2 後出現警告訊息: Using ${expr} (variable variables) in strings is deprecated</title>
        <link>https://caloskao.org/php8-2-using-variable-variables-in-strings-is-deprecated/</link>
        <pubDate>Thu, 06 Apr 2023 17:08:14 +0800</pubDate>
        
        <guid>https://caloskao.org/php8-2-using-variable-variables-in-strings-is-deprecated/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/php.png" alt="Featured image of post [PHP] 升級 PHP 8.2 後出現警告訊息: Using ${expr} (variable variables) in strings is deprecated" /&gt;&lt;p&gt;PHP 升級到 8.2 版後開始大量出現 warning logs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Using&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;variable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;variables&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;strings&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deprecated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;use&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}}&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;instead&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;home&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;calos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;projects&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;laravel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;User&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;764&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原因是 &lt;a class=&#34;link&#34; href=&#34;https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PHP RFC: Deprecate ${} string interpolation&lt;/a&gt; 已在 PHP 8.2 實施，所以會開始看到這類訊息。&lt;/p&gt;
&lt;p&gt;這個 RFC 是關於字串內指定變數的使用方式，目前有四種使用方式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Directly embedding variables (&lt;code&gt;&amp;quot;$foo&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Braces outside the variable (&lt;code&gt;&amp;quot;{$foo}&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Braces after the dollar sign (&lt;code&gt;&amp;quot;${foo}&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Variable variables (&lt;code&gt;&amp;quot;${expr}&amp;quot;&lt;/code&gt;, equivalent to (string) ${expr})&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;RFC 提議刪除較容易混淆的第 3 種與第 4 種使用方式，目前在 PHP 8.2 開始會看到 warning logs，在 PHP 9.0 版正式移除，如果有使用到的話在 PHP 9.0 正式釋出並且升級之前需要做修正。&lt;/p&gt;
&lt;p&gt;我個人早期學習 PHP 是使用第一種方法 (&lt;code&gt;&amp;quot;$foo&amp;quot;&lt;/code&gt;)，後期開始使用 VScode 作為主要的開發用 IDE 後，因為 VScode 預設會為第二種方法 (&lt;code&gt;&amp;quot;{$foo}&amp;quot;&lt;/code&gt;) 做 highlight。&lt;/p&gt;
&lt;p&gt;至於為什麼我會遇到這個東西？其實我不知道可以使用第 3 種和第 4 種方法，看到這個資訊我也是一頭霧水，因為我不記得我有這樣用過，程式也沒有問題。&lt;/p&gt;
&lt;p&gt;多看了幾遍程式碼之後終於發現問題所在&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                           here
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                             |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                             v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gd&#34;&gt;- throw new Exception(&amp;#34;Algorithm for column &amp;#39;${$column}&amp;#39; not defined.&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gd&#34;&gt;&lt;/span&gt;&lt;span class=&#34;gi&#34;&gt;+ throw new Exception(&amp;#34;Algorithm for column &amp;#39;{$column}&amp;#39; not defined.&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原來是我不小心多打一個錢號，笑死。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.gslin.org/archives/2022/05/06/10692/php-8-2-%E9%A0%90%E8%A8%88%E8%A6%81%E5%B0%87%E4%B8%80%E4%BA%9B%E5%AD%97%E4%B8%B2%E5%85%A7%E6%8C%87%E5%AE%9A%E8%AE%8A%E6%95%B8%E7%9A%84%E6%96%B9%E6%B3%95%E6%A8%99%E7%82%BA-deprecated%EF%BC%8C%E5%9C%A8/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PHP 8.2 預計要將一些字串內指定變數的方法標為 Deprecated，在 9.0 移除 – Gea-Suan Lin&amp;rsquo;s BLOG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://php.watch/versions/8.2/$%7Bvar%7D-string-interpolation-deprecated&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;${var}&lt;/code&gt; string interpolation deprecated - PHP 8.2 • PHP.Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PHP: rfc:deprecate_dollar_brace_string_interpolation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Docker] 簡單的 Docker Volume 備份、還原或複製方法</title>
        <link>https://caloskao.org/docker-simple-docker-volume-backup-restore-or-clone-method/</link>
        <pubDate>Fri, 17 Mar 2023 10:56:55 +0800</pubDate>
        
        <guid>https://caloskao.org/docker-simple-docker-volume-backup-restore-or-clone-method/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/docker.webp" alt="Featured image of post [Docker] 簡單的 Docker Volume 備份、還原或複製方法" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;&lt;p&gt;Container (容器) 是現代應用程式部署的主要形式之一，container 主要分為 Stateful Container（有狀態容器）和 Stateless Container（無狀態容器）這兩種主要類型。&lt;/p&gt;
&lt;p&gt;Stateful Container 可以保存應用程式的狀態和數據，但因為持久化數據需要確保數據一致性，且維運上需要考慮的面向也更多，使用上較複雜。&lt;/p&gt;
&lt;p&gt;而 Stateless Container 因為不需要維護狀態和數據的一致性，因此擴充性、高可用性和容錯能力非常優秀，但實際上需要持久化數據的應用場景不在少數，因此 Stateful Container 還是很重要的。&lt;/p&gt;
&lt;p&gt;Docker 目前是市面上最好用的容器部屬工具之一，但在 Stateful Container 使用上仍會有一定的複雜性存在，&lt;/p&gt;
&lt;p&gt;在 volume 的備份方式有很多種，&lt;/p&gt;
&lt;p&gt;loomchild/volume-backup 是一個 Docker volume 備份與還原工具，相較於其他工具程式，它簡單、輕量又快速&lt;/p&gt;
&lt;h2 id=&#34;備份指令&#34;&gt;備份指令
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;volume-name&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;:/volume --rm --log-driver none loomchild/volume-backup backup &amp;gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;archive-path&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;參數說明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[volume-name]：需備份的 volume 名稱&lt;/li&gt;
&lt;li&gt;[archive-path]：備份檔案存放的路徑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v some_volume:/volume -v /tmp:/backup --rm loomchild/volume-backup backup some_archive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;還原指令&#34;&gt;還原指令
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -i -v &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;volume-name&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;:/volume --rm loomchild/volume-backup restore &amp;lt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;archive-path&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;參數說明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[volume-name]：指定還原的 volume 名稱，可視實際需求更改，不一定要跟備份前的相同&lt;/li&gt;
&lt;li&gt;[archive-path]：備份檔案存放的路徑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -i -v some_volume:/volume --rm loomchild/volume-backup restore &amp;lt; some_archive.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;使用情境範例&#34;&gt;使用情境範例
&lt;/h2&gt;&lt;p&gt;我最常拿來 clone volume，用來測試對 stateful container 的 image 版本進行升級，確保升級後沒有問題才去動 production。&lt;/p&gt;
&lt;p&gt;這邊以升級 SonarCube v8 -&amp;gt; v9 為例。首先，先查看 container 掛載了哪些 volume (container name: &lt;code&gt;sonarqube_230307&lt;/code&gt;)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker container inspect sonarqube_230307
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;Mounts&lt;/code&gt; 的部分輸出如下，共掛載了 3 個 volumes&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;Mounts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;volume&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sonarqube_logs&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Source&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/lib/docker/volumes/sonarqube_logs/_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Destination&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/opt/sonarqube/logs&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Driver&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Mode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;RW&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Propagation&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;volume&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sonarqube_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Source&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/lib/docker/volumes/sonarqube_data/_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Destination&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/opt/sonarqube/data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Driver&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Mode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;RW&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Propagation&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;volume&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sonarqube_extensions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Source&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/lib/docker/volumes/sonarqube_extensions/_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Destination&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/opt/sonarqube/extensions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Driver&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Mode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;RW&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;Propagation&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行備份&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v sonarqube_data:/volume --rm --log-driver none loomchild/volume-backup backup -v &amp;gt; sonarqube_data.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v sonarqube_extensions:/volume --rm --log-driver none loomchild/volume-backup backup -v &amp;gt; sonarqube_extensions.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v sonarqube_logs:/volume --rm --log-driver none loomchild/volume-backup backup -v &amp;gt; sonarqube_logs.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行復原，&lt;code&gt;volume name&lt;/code&gt; 的部分後面加上 &lt;code&gt;_v9_test&lt;/code&gt; 尾綴，做完後等於 clone 了 3 個 volumes&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -i -v sonarqube_data_v9_test:/volume --rm loomchild/volume-backup restore &amp;lt; sonarqube_data.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -i -v sonarqube_extensions_v9_test:/volume --rm loomchild/volume-backup restore &amp;lt; sonarqube_extensions.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -i -v sonarqube_logs_v9_test:/volume --rm loomchild/volume-backup restore &amp;lt; sonarqube_logs.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用測試用的 volumes 與新版 image 執行 &lt;code&gt;docker run&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d --name sonarqube_test_upgrade_to_v9 &lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -p 9000:9000 &lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -v sonarqube_data_v9:/opt/sonarqube/data &lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -v sonarqube_extensions_v9:/opt/sonarqube/extensions &lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -v sonarqube_logs_v9:/opt/sonarqube/logs &lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    sonarqube:9-community
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[Docker volume backup and restore the easy way. – kenops][https://www.kenops.io/2022/08/docker-volume-backup-and-restore-the-easy-way/]&lt;/li&gt;
&lt;li&gt;[Backup &amp;amp; Restore Docker Named Volumes | by Jarek Lipski | Medium][https://jareklipski.medium.com/backup-restore-docker-named-volumes-350397b8e362]&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/loomchild/volume-backup&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;loomchild/volume-backup: docker volume backup &amp;amp; restore utility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[測試] Intel Core i7-13700K 空冷 &amp; 降壓超頻</title>
        <link>https://caloskao.org/intel-core-i7-13700k-air-cooling-overclock-undervolt/</link>
        <pubDate>Thu, 09 Mar 2023 02:09:36 +0800</pubDate>
        
        <guid>https://caloskao.org/intel-core-i7-13700k-air-cooling-overclock-undervolt/</guid>
        <description>&lt;img src="https://caloskao.org/intel-core-i7-13700k-air-cooling-overclock-undervolt/i7-13700k_cinebench-r23-multi-core-32027.jpg" alt="Featured image of post [測試] Intel Core i7-13700K 空冷 &amp; 降壓超頻" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;&lt;p&gt;先談談撰寫這篇測試文的契機，入手 i7-13700K 後約有 5 個月左右的時間，這段時間內有一陣沒一陣的爬文，希望能&lt;del&gt;跟資優生借筆記本抄答案&lt;/del&gt;向各路大神學習交流，但不知道 i7-13700K 是不是真的太冷門，跟 13900K/13600K 相較之下，討論熱度真的差滿多的，實在是找不到滿意參數，才終於認命自己動手。&lt;/p&gt;
&lt;p&gt;因為已經太久沒玩 Intel CPU 超頻，很多東西都很陌生，上一顆使用的 Intel CPU 是鎖倍頻的 Xeon E3-1231v3，拉外頻也沒戲 (103 Mhz 就開不了機)，上一顆成功超頻的 Intel CPU 已經是 775 時代的 Core 2 Duo E5300 了，間隔了十幾年有，需要注意的眉角也是天差地別，儘管中間跳槽玩 AMD Ryzen 5 3600X -&amp;gt; 3600 -&amp;gt; 5600X 時技能樹稍微有點成長，但也沒有起到多大的作用，真的是在一次又一次的 BSOD 重開機時間中懷疑人生。&lt;/p&gt;
&lt;p&gt;如同&lt;a class=&#34;link&#34; href=&#34;#%e5%bb%b6%e4%bc%b8%e9%96%b1%e8%ae%80&#34; &gt;開箱篇&lt;/a&gt;所說的，目前沒有玩水冷，所以第一部分會是以空冷壓制並且不會撞溫度牆的條件下測試最大效能；第二部分是對 CPU 進行降壓，試著找出在不會明顯讓效能大打折扣的前提下大幅減少功耗，讓日常使用更加安定。&lt;/p&gt;
&lt;h2 id=&#34;平台配置&#34;&gt;平台配置
&lt;/h2&gt;&lt;p&gt;除了 CPU 以外，與&lt;a class=&#34;link&#34; href=&#34;#%e5%bb%b6%e4%bc%b8%e9%96%b1%e8%ae%80&#34; &gt;開箱篇&lt;/a&gt;僅有 2 處不同：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;RAM 的部分因為 4 條插滿只能超到 3400Mhz，拔掉 2 條後超上 3600Mhz-CL17&lt;/li&gt;
&lt;li&gt;主機板 BIOS 更新至 ver 2204&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;完整配置如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;CPU: Intel Core i7-13700k
&lt;ul&gt;
&lt;li&gt;P-Core: 5.3 Ghz @ 1.41V (OC 5.4 Ghz @ 1.36V)&lt;/li&gt;
&lt;li&gt;E-Core: 4.2 Ghz @ 1.40V (OC 4.4 Ghz @ 1.36V)&lt;/li&gt;
&lt;li&gt;Bus/Cache Freq: 100 Mhz / 4800 Mhz (OC 100 Mhz / 4500 Mhz)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;CPU Cooler: Thermalright Peerless Assassin 120 White ARGB&lt;/li&gt;
&lt;li&gt;CPU Thermal Paste: Thermalright TF8&lt;/li&gt;
&lt;li&gt;RAM: Micron Crucial Ballistix DDR4-3200 32GB Kit (16GBx2 dual channel)
&lt;ul&gt;
&lt;li&gt;OC 3600Mhz, CL17-19-19-36 1T - RFC: 630, Gear Mode 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Motherboard: ASUS ROG STRIX Z690-A GAMING WIFI D4 (BIOS Ver: 2204)&lt;/li&gt;
&lt;li&gt;GPU: MSI Geforce RTX 3090 SUPRIM X 24G&lt;/li&gt;
&lt;li&gt;PSU: EVGA Supernova 1000 G5&lt;/li&gt;
&lt;li&gt;Case: Montech Air 1000 Premium White
&lt;ul&gt;
&lt;li&gt;Front Panel: Montech 140mm ARGB *3 (stock/pre-installed)&lt;/li&gt;
&lt;li&gt;Back Panel: Montech 120mm ARGB *1 (stock/pre-installed)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OS: Windows 11 22H2 (build 10.0.22621, 64 bit)&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;空冷超頻&#34;&gt;空冷超頻
&lt;/h2&gt;&lt;p&gt;測試環境室溫約攝氏 25 度，剛入手 i7-13700K 時已試過全預設跑 Cinebench R23，利民 PA120 完全壓不住原廠的 PL2 253W，不到 5 秒內就撞上溫度牆；這次看到觸發過熱保護就直接中斷並下修 PL2，藉此先找出空冷的極限在哪；調整數次後，在 225W 左右的功耗下跑完 Cinebench R23 20 分鐘壓力測試，同時未觸發過熱保護。PL2 固定在 225W 後嘗試拉高核心頻率，結果也是沒有什麼成長，幾乎跟原廠設定沒差。微幅調降 Processor Cache Freq 到 4.5 Ghz 後，P-Core 只多 0.1 Ghz，E-Core 多 0.2 Ghz，滿載功耗落在 220W 上下。&lt;/p&gt;
&lt;h3 id=&#34;cinebench-r23&#34;&gt;Cinebench R23
&lt;/h3&gt;&lt;p&gt;Cinebench R23 多核成績得到 32027 pts，P-Core 最大溫度攝氏 92度，最大功耗測得 219W。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/intel-core-i7-13700k-air-cooling-overclock-undervolt/img_acd0da7dd173_hu_4e7b30ec59b5e04d.jpg&#34;
    width=&#34;1280&#34;
    height=&#34;720&#34;
    srcset=&#34;https://caloskao.org/post/intel-core-i7-13700k-air-cooling-overclock-undervolt/img_acd0da7dd173_hu_4e7b30ec59b5e04d.jpg 1280w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;!-- ![](i7-13700k_cinebench-r23-single-core-2272.jpg) --&gt;
&lt;h3 id=&#34;cinebench-r20&#34;&gt;Cinebench R20
&lt;/h3&gt;&lt;p&gt;Cinebench R20 多核成績得到 12228 pts，P-Core 最大溫度攝氏 93 度，最大功耗測得 221W。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/intel-core-i7-13700k-air-cooling-overclock-undervolt/img_344d0d4bb842_hu_295cd5309a2db6df.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/intel-core-i7-13700k-air-cooling-overclock-undervolt/img_344d0d4bb842_hu_295cd5309a2db6df.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;降壓超頻&#34;&gt;降壓超頻
&lt;/h2&gt;&lt;p&gt;近年 CPU 與顯示卡的發展趨勢皆為&lt;strong&gt;出廠即灰燼&lt;/strong&gt;，新產品除了效能提升，功耗與溫度也大幅增長。硬體玩過後終究是要回到日常用途，雖然滿載的情況並不常發生，原廠規格的正常工作溫度範圍也很廣，但如果能在不影響體感的情況下，溫度/功耗本來就是越低越好，所以降壓的玩法也漸漸的流行起來。&lt;/p&gt;
&lt;p&gt;Intel 13 代 CPU 上市五個月了，也不知道是真的銷售遠不如預期，還是只有 i7-13700K 的客群較小，一直找不到滿意的降壓超頻配置可以偷懶照抄，只好動動手花點時間自己找。&lt;/p&gt;
&lt;h3 id=&#34;步驟一-關閉-undervolt-protection&#34;&gt;步驟一: 關閉 Undervolt Protection
&lt;/h3&gt;&lt;p&gt;BIOS 中預設會啟用 &lt;code&gt;Undervolt Protection&lt;/code&gt;，這項設定會導致無法將核心電壓設成比原廠還要低，在啟用的情況下只能透過 PL2 控制總功耗，因此要先進 BIOS 關閉它。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Intel XTU 軟體內也有 &lt;code&gt;Undervolt Protection&lt;/code&gt; 的選項，但是在軟體內是沒辦法切換的，一定要進 BIOS 關閉。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;步驟二-測試-cpu-在不同-power-limit-下的效能表現&#34;&gt;步驟二: 測試 CPU 在不同 Power Limit 下的效能表現
&lt;/h3&gt;&lt;p&gt;這一步若透過在 BIOS 中進行調整後要反覆重開機會變得很繁瑣與耗時，建議使用 Intel 原廠的超頻軟體 - &lt;a class=&#34;link&#34; href=&#34;https://www.intel.com.tw/content/www/tw/zh/download/17881/intel-extreme-tuning-utility-intel-xtu.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;XTU (Intel Extreme Tuning Utility)&lt;/a&gt; 進行調整。&lt;/p&gt;
&lt;p&gt;在全原廠設定下，只調整 PL2 (&lt;code&gt;Turbo Boost Short Power Max&lt;/code&gt;) 去測試不同功耗下的表現。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/intel-core-i7-13700k-air-cooling-overclock-undervolt/img_cbf8ba7d15dc_hu_4802f5ece63e59ca.png&#34;
    width=&#34;1920&#34;
    height=&#34;1420&#34;
    srcset=&#34;https://caloskao.org/post/intel-core-i7-13700k-air-cooling-overclock-undervolt/img_cbf8ba7d15dc_hu_4802f5ece63e59ca.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;135&#34;
        data-flex-basis=&#34;324px&#34;
    
&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;理論上將 &lt;code&gt;Turbo Boost Short Power Max Enable&lt;/code&gt; 設為 &lt;code&gt;Disable&lt;/code&gt; 時應該就只要調整 PL1 (XTU 的 &lt;code&gt;Turbo Boost Short Power Max&lt;/code&gt; 選項會被停用)，但不知為何當我這樣設置時，CPU Package Power 還是衝上原廠 PL2 值 (253W)。&lt;/li&gt;
&lt;li&gt;當 PL2 (&lt;code&gt;Turbo Boost Short Power Max&lt;/code&gt;) 小於 PL1 (&lt;code&gt;Turbo Boost Power Max&lt;/code&gt;) 時，XTU 會自動修正 PL1 = PL2。&lt;/li&gt;
&lt;li&gt;基於以上原因，調整時只動 PL2，實際上是 PL1 與 PL2 一起連動。&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;將前面的 CPU 相關設定還原成預設值後，從 220W 開始進行測試，每次降 20W 跑 Cinebench R23。&lt;/p&gt;
&lt;p&gt;因為預設功耗吃滿 253W 會因為過熱降頻導致成績較差，這邊以空冷測試能壓住的 220W 功耗為基準進行比較。在 100W ~ 140W 區間下的節省功耗/效能損失比例較佳，再以 5~10W 的差距進行測試，測得最佳比例為 120W。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;PL&lt;/th&gt;
          &lt;th&gt;R23 得分&lt;/th&gt;
          &lt;th&gt;溫度&lt;/th&gt;
          &lt;th&gt;每瓦效能&lt;/th&gt;
          &lt;th&gt;效能損失 (%)&lt;/th&gt;
          &lt;th&gt;節省功耗 (%)&lt;/th&gt;
          &lt;th&gt;節省功耗/效能損失比例&lt;br&gt;(越高越好)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;253&lt;/td&gt;
          &lt;td&gt;30679&lt;/td&gt;
          &lt;td&gt;100&lt;/td&gt;
          &lt;td&gt;121.2608696&lt;/td&gt;
          &lt;td&gt;3.53%&lt;/td&gt;
          &lt;td&gt;-15.00%&lt;/td&gt;
          &lt;td&gt;-4.2551&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;220&lt;/td&gt;
          &lt;td&gt;31800&lt;/td&gt;
          &lt;td&gt;95&lt;/td&gt;
          &lt;td&gt;144.5454545&lt;/td&gt;
          &lt;td&gt;0.00%&lt;/td&gt;
          &lt;td&gt;0.00%&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;200&lt;/td&gt;
          &lt;td&gt;29409&lt;/td&gt;
          &lt;td&gt;91&lt;/td&gt;
          &lt;td&gt;147.045&lt;/td&gt;
          &lt;td&gt;7.52%&lt;/td&gt;
          &lt;td&gt;9.09%&lt;/td&gt;
          &lt;td&gt;1.2091&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;180&lt;/td&gt;
          &lt;td&gt;28514&lt;/td&gt;
          &lt;td&gt;84&lt;/td&gt;
          &lt;td&gt;158.4111111&lt;/td&gt;
          &lt;td&gt;10.33%&lt;/td&gt;
          &lt;td&gt;18.18%&lt;/td&gt;
          &lt;td&gt;1.7595&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;160&lt;/td&gt;
          &lt;td&gt;27684&lt;/td&gt;
          &lt;td&gt;78&lt;/td&gt;
          &lt;td&gt;173.025&lt;/td&gt;
          &lt;td&gt;12.94%&lt;/td&gt;
          &lt;td&gt;27.27%&lt;/td&gt;
          &lt;td&gt;2.1071&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;140&lt;/td&gt;
          &lt;td&gt;26612&lt;/td&gt;
          &lt;td&gt;75&lt;/td&gt;
          &lt;td&gt;190.0857143&lt;/td&gt;
          &lt;td&gt;16.31%&lt;/td&gt;
          &lt;td&gt;36.36%&lt;/td&gt;
          &lt;td&gt;2.2289&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;130&lt;/td&gt;
          &lt;td&gt;26150&lt;/td&gt;
          &lt;td&gt;70&lt;/td&gt;
          &lt;td&gt;201.1538462&lt;/td&gt;
          &lt;td&gt;17.77%&lt;/td&gt;
          &lt;td&gt;40.91%&lt;/td&gt;
          &lt;td&gt;2.3025&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;125&lt;/td&gt;
          &lt;td&gt;25698&lt;/td&gt;
          &lt;td&gt;69&lt;/td&gt;
          &lt;td&gt;205.584&lt;/td&gt;
          &lt;td&gt;19.19%&lt;/td&gt;
          &lt;td&gt;43.18%&lt;/td&gt;
          &lt;td&gt;2.2504&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;120&lt;/td&gt;
          &lt;td&gt;25534&lt;/td&gt;
          &lt;td&gt;68&lt;/td&gt;
          &lt;td&gt;212.7833333&lt;/td&gt;
          &lt;td&gt;19.70%&lt;/td&gt;
          &lt;td&gt;45.45%&lt;/td&gt;
          &lt;td&gt;2.3068&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;115&lt;/td&gt;
          &lt;td&gt;24808&lt;/td&gt;
          &lt;td&gt;68&lt;/td&gt;
          &lt;td&gt;215.7217391&lt;/td&gt;
          &lt;td&gt;21.99%&lt;/td&gt;
          &lt;td&gt;47.73%&lt;/td&gt;
          &lt;td&gt;2.1707&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;110&lt;/td&gt;
          &lt;td&gt;24506&lt;/td&gt;
          &lt;td&gt;66&lt;/td&gt;
          &lt;td&gt;222.7818182&lt;/td&gt;
          &lt;td&gt;22.94%&lt;/td&gt;
          &lt;td&gt;50.00%&lt;/td&gt;
          &lt;td&gt;2.1799&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;100&lt;/td&gt;
          &lt;td&gt;23647&lt;/td&gt;
          &lt;td&gt;65&lt;/td&gt;
          &lt;td&gt;236.47&lt;/td&gt;
          &lt;td&gt;25.64%&lt;/td&gt;
          &lt;td&gt;54.55%&lt;/td&gt;
          &lt;td&gt;2.1275&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;80&lt;/td&gt;
          &lt;td&gt;21591&lt;/td&gt;
          &lt;td&gt;59&lt;/td&gt;
          &lt;td&gt;269.8875&lt;/td&gt;
          &lt;td&gt;32.10%&lt;/td&gt;
          &lt;td&gt;63.64%&lt;/td&gt;
          &lt;td&gt;1.9822&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;60&lt;/td&gt;
          &lt;td&gt;18542&lt;/td&gt;
          &lt;td&gt;57&lt;/td&gt;
          &lt;td&gt;309.0333333&lt;/td&gt;
          &lt;td&gt;41.69%&lt;/td&gt;
          &lt;td&gt;72.73%&lt;/td&gt;
          &lt;td&gt;1.7444&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;40&lt;/td&gt;
          &lt;td&gt;13929&lt;/td&gt;
          &lt;td&gt;53&lt;/td&gt;
          &lt;td&gt;348.225&lt;/td&gt;
          &lt;td&gt;56.20%&lt;/td&gt;
          &lt;td&gt;81.82%&lt;/td&gt;
          &lt;td&gt;1.4559&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;PL 253W 為開箱時簡單測試，記憶體僅為 DDR4-3200-C16 16G*4，也未在乾淨的系統下進行測試，因此 R23 跑分看起來低了不少。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;步驟三---調整其他參數以對應最佳比例的功耗區間&#34;&gt;步驟三 - 調整其他參數，以對應最佳比例的功耗區間
&lt;/h3&gt;&lt;p&gt;130W 的比例與 120W 只差 0.0043，在 120W ~ 130W 的區間下，觀測到核心自動調整 P-Core ratio 與 E-Core ratio 的值分別是 46x / 36x，核心電壓約在 1.1V 左右，接下來修改 XTU 的設定:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Turbo Boost Short Power Max: 130&lt;/li&gt;
&lt;li&gt;Turbo Boost Power Max: 130&lt;/li&gt;
&lt;li&gt;Core Voltage: 1.100&lt;/li&gt;
&lt;li&gt;Core Voltage Mode: Static&lt;/li&gt;
&lt;li&gt;Active Performance Cores Ratio (1-8): 46x/46x/46x/46x/46x/46x/46x/46x&lt;/li&gt;
&lt;li&gt;Active Efficient Cores Ratio (1-8): 36x/36x/36x/36x/36x/36x/36x/36x&lt;/li&gt;
&lt;li&gt;Performance Core Ratio (0-7): 46x&lt;/li&gt;
&lt;li&gt;Performance Core Voltage Override (0-7): 1.100 V&lt;/li&gt;
&lt;li&gt;Performance Core Voltage Mode (0-7): Static&lt;/li&gt;
&lt;li&gt;Efficient Core Ratio (0-7): 36x&lt;/li&gt;
&lt;li&gt;Efficient Core Voltage Override (0-7): 1.100 V&lt;/li&gt;
&lt;li&gt;Efficient Core Voltage Mode (0-7): Static&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;測試後確定功耗也是落在 120W ~ 130W 的區間，並能夠跑完 Cinebench R23，就可以進行下一步。&lt;/p&gt;
&lt;h3 id=&#34;步驟四---微調倍頻&#34;&gt;步驟四 - 微調倍頻
&lt;/h3&gt;&lt;p&gt;最後嘗試一點一點的增加 P-Core ratio 與 E-Core ratio，直到當機或是軟體 crash。&lt;/p&gt;
&lt;p&gt;另外，CPU Cache 的頻率對於效能沒有明顯的影響，但是會分走一些電，適度的降低頻率可以增加系統穩定性，甚至多偷一點 P-Core 效能出來。&lt;/p&gt;
&lt;h3 id=&#34;步驟五---微幅增加-active-core-頻率&#34;&gt;步驟五 - 微幅增加 active core 頻率
&lt;/h3&gt;&lt;p&gt;因為 CPU 的所有核心並不是隨時處於活躍/滿載的狀態，前面調整的 P-Core ratio 是 46x，但假設系統當下只有 2 個核心在使用中，可以透過 Active Core Ratio 設定，讓 CPU 依照當下的負載動態調節最大頻率，在部份情境下可以稍微增加一點單核性能。&lt;/p&gt;
&lt;p&gt;原廠的設定也是如此，i7-13700K 原廠設定的 Active P-Core Ratio 為 54x/54x/53x/53x/53x/53x/53x/53x，前面我們調整的 48x 為全核最大頻率，在這時候就可以多測試一下可以拉到多少，ratio 的部分建議範圍增加 0.1 ~ 0.4 Ghz，核心數量 2 ~ 4 個（E-Core 也適用）。&lt;/p&gt;
&lt;h3 id=&#34;完整參數&#34;&gt;完整參數
&lt;/h3&gt;&lt;p&gt;做完前面五個步驟，並穩定跑完 Cinebench R23 20 分鐘壓力測試，因為忘記截圖了，只有保存文字數據，Cinebench R23 Multi Core 得分為 27371，最大功耗測得 128W，最高溫攝氏 70 度。&lt;/p&gt;
&lt;p&gt;以下是我最終調整好的完整參數設定:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Turbo Boost Short Power Max: 200&lt;/li&gt;
&lt;li&gt;Turbo Boost Power Max: 150&lt;/li&gt;
&lt;li&gt;Processor Cache Ratio: 42x&lt;/li&gt;
&lt;li&gt;Processor Cache Voltage: 0.900 V&lt;/li&gt;
&lt;li&gt;Processor Cache Voltage Mode: Static&lt;/li&gt;
&lt;li&gt;Core Voltage: 1.050&lt;/li&gt;
&lt;li&gt;Core Voltage Mode: Static&lt;/li&gt;
&lt;li&gt;Active Performance Cores Ratio (1-8): 50x/50x/49x/48x/48x/48x/48x/48x&lt;/li&gt;
&lt;li&gt;Active Efficient Cores Ratio (1-8): 40x/39x/38x/37x/36x/36x/36x/36x&lt;/li&gt;
&lt;li&gt;Performance Core Ratio (0-7): 50x&lt;/li&gt;
&lt;li&gt;Performance Core Voltage Override (0-7): 1.050 V&lt;/li&gt;
&lt;li&gt;Performance Core Voltage Mode (0-7): Static&lt;/li&gt;
&lt;li&gt;Efficient Core Ratio (0-7): 40x&lt;/li&gt;
&lt;li&gt;Efficient Core Voltage Override (0-7): 1.050 V&lt;/li&gt;
&lt;li&gt;Efficient Core Voltage Mode (0-7): Static&lt;/li&gt;
&lt;li&gt;Efficient Cores Cache Voltage Mode: Static&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;額外設定了 PL1 與 PL2 只是預防有奇怪的情況讓功耗爆走的一道保險，實際上在各種使用情境下最大功耗未超過 128W。&lt;/p&gt;
&lt;p&gt;對比 PL 220 下，溫度減少 25 度，效能損失 13.93%，功耗節省了 41.82%。&lt;/p&gt;
&lt;p&gt;若是對比 PL 253 的話，溫度減少 30 度，效能損失 10.78%，功耗節省了 49.41%，用接近十分之一的效能換取節省近一半的功耗。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;PL&lt;/th&gt;
          &lt;th&gt;R23 得分&lt;/th&gt;
          &lt;th&gt;溫度&lt;/th&gt;
          &lt;th&gt;每瓦效能&lt;/th&gt;
          &lt;th&gt;效能損失 (%)&lt;/th&gt;
          &lt;th&gt;節省功耗 (%)&lt;/th&gt;
          &lt;th&gt;節省功耗/效能損失比例&lt;br&gt;(越高越好)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;253&lt;/td&gt;
          &lt;td&gt;30679&lt;/td&gt;
          &lt;td&gt;100&lt;/td&gt;
          &lt;td&gt;121.2608696&lt;/td&gt;
          &lt;td&gt;3.53%&lt;/td&gt;
          &lt;td&gt;-15.00%&lt;/td&gt;
          &lt;td&gt;-4.2551&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;220&lt;/td&gt;
          &lt;td&gt;31800&lt;/td&gt;
          &lt;td&gt;95&lt;/td&gt;
          &lt;td&gt;144.5454545&lt;/td&gt;
          &lt;td&gt;0.00%&lt;/td&gt;
          &lt;td&gt;0.00%&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;128&lt;/td&gt;
          &lt;td&gt;27371&lt;/td&gt;
          &lt;td&gt;70&lt;/td&gt;
          &lt;td&gt;213.8359375&lt;/td&gt;
          &lt;td&gt;13.93%&lt;/td&gt;
          &lt;td&gt;41.82%&lt;/td&gt;
          &lt;td&gt;3.0025&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;補充：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;雖然上面的設定跑各種測試軟體都沒問題，但之後的一個月在日常使用上有遇到 2 次 BSOD，trace memory dump file 看起來不是軟體引起的問題，試著微調更保守一點的超頻設定後就再也沒有遇到 BSOD，以下是調整後的完整設定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turbo Boost Short Power Max: 200&lt;/li&gt;
&lt;li&gt;Turbo Boost Power Max: 150&lt;/li&gt;
&lt;li&gt;Processor Cache Ratio: &lt;code&gt;40x&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Processor Cache Voltage: &lt;code&gt;1.000 V&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Processor Cache Voltage Mode: Static&lt;/li&gt;
&lt;li&gt;Core Voltage: 1.050&lt;/li&gt;
&lt;li&gt;Core Voltage Mode: Static&lt;/li&gt;
&lt;li&gt;Active Performance Cores Ratio (1-8): 50x/50x/49x/48x/48x/48x/48x/48x&lt;/li&gt;
&lt;li&gt;Active Efficient Cores Ratio (1-8): &lt;code&gt;36x/36x/36x/36x/36x/36x/36x/36x&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Performance Core Ratio (0-7): 50x&lt;/li&gt;
&lt;li&gt;Performance Core Voltage Override (0-7): 1.050 V&lt;/li&gt;
&lt;li&gt;Performance Core Voltage Mode (0-7): Static&lt;/li&gt;
&lt;li&gt;Efficient Core Ratio (0-7): &lt;code&gt;36x&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Efficient Core Voltage Override (0-7): 1.050 V&lt;/li&gt;
&lt;li&gt;Efficient Core Voltage Mode (0-7): Static&lt;/li&gt;
&lt;li&gt;Efficient Cores Cache Voltage: &lt;code&gt;1.000 V&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Efficient Cores Cache Voltage Mode: Static&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Intel 12 代與 13 代 CPU 不只再次將效能天花板推高，各種意義上都到達了新的高度（功耗，溫度，以及價格）。&lt;/p&gt;
&lt;p&gt;水冷派的玩家應該可以得到更多的樂趣，而空冷派的玩家也不必擔心，空冷是足夠的，除非是拿來用在專業用途/生產用途，否則是極少會在全原廠設定的情況下吃滿 253W。而吃滿 253W 也不必太擔心，過熱保護機制會好好的保護 CPU，但強烈建議 CPU 經常飆上 80 ~ 90 度的話還是花點時間調整設定，長時間高溫多少都是有負面影響的。&lt;/p&gt;
&lt;p&gt;雖然空冷派沒辦法體驗極限效能，但是在空冷的守備範圍內可玩性也很夠，而且相較於極限超頻，降壓超頻的難度也不會遜色太多，作為一個精神時光屋的玩具，不管是水冷還是空冷，都能夠&lt;del&gt;在一次又一次的 BSOD 重開機時間中懷疑人生&lt;/del&gt;很好的打發時間，但經過這輪折騰後，就算有人送我 13900KS 寫測試文，我大概會選擇先不要 XDDD。&lt;/p&gt;
&lt;h2 id=&#34;xtu-profile-下載&#34;&gt;XTU Profile 下載
&lt;/h2&gt;&lt;p&gt;這邊釋出 3 個 XTU Profile，可自行下載套用。使用方式與下載連結請前往：&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/download/xtu-profile-for-intel-core-i7-13700k/&#34; &gt;XTU Profile for Intel Core i7-13700K&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;延伸閱讀&#34;&gt;延伸閱讀
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/unbox-intel-core-i7-13700k/&#34; &gt;[開箱] Intel Core I7 13700K&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/&#34; &gt;[開箱] ASUS ROG STRIX Z690-A GAMING WIFI D4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        <item>
        <title>[開箱] Intel Core I7 13700K</title>
        <link>https://caloskao.org/unbox-intel-core-i7-13700k/</link>
        <pubDate>Mon, 20 Feb 2023 18:04:13 +0800</pubDate>
        
        <guid>https://caloskao.org/unbox-intel-core-i7-13700k/</guid>
        <description>&lt;img src="https://caloskao.org/unbox-intel-core-i7-13700k/PXL_20221030_065054155.jpg" alt="Featured image of post [開箱] Intel Core I7 13700K" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;&lt;p&gt;Intel 繼 12 代 Alder Lake 大擠牙膏後，13 代 Reptor Lake 再次將牙膏擠爆，幾顆代表性的 CPU 系列直接對標前一代的上階型號，13600K 贏過 12700K，13700K 打掉 12900K，13900K / 13900KS 直接飛天。&lt;/p&gt;
&lt;p&gt;台灣時間 10 月 20 日晚上 9 點解禁開賣，10 月初就先買好 &lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/&#34; &gt;ASUS ROG STRIX Z690-A GAMING WIFI D4&lt;/a&gt; 準備衝一發首購。結果上市售價台幣 $15690，匯率實在是太精美了手剁不下去，多忍耐了幾天等看看有沒有促銷。意外的只等了 5 天，等到順發滿 16000 折 1800。加一支美光 DDR4-3200 8G 湊滿額手刀下單，約等於折 1000 再送一支記憶體的概念，不到特別香，但至少不錯了。&lt;/p&gt;
&lt;p&gt;謝謝順發，&lt;strong&gt;順發我大哥！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_0bf5267f23f8_hu_8390212248444f90.png&#34;
    width=&#34;1920&#34;
    height=&#34;1299&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_0bf5267f23f8_hu_8390212248444f90.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;147&#34;
        data-flex-basis=&#34;354px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;開箱&#34;&gt;開箱
&lt;/h2&gt;&lt;p&gt;盒裝正面，一如既往的樸素包裝，還有一張標籤，順發我大哥。&lt;/p&gt;
&lt;p&gt;為了聊表謝意，我會多等幾天之後再馬上你撕掉 XD。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_a08913470311_hu_daeffc6e53a14120.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_a08913470311_hu_daeffc6e53a14120.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;盒裝背面，捷元代理，可以透過開孔處看到實體正面。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_3863abbb3348_hu_aa339f479f5cca89.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_3863abbb3348_hu_aa339f479f5cca89.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;盒裝側面，包含 CPU 序號的各種代號與條碼。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_318693f0f7c4_hu_fc34711f6169c415.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_318693f0f7c4_hu_fc34711f6169c415.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;拆開盒裝，盒裝內容就只有 CPU 本體、說明書與信仰貼紙。&lt;/p&gt;
&lt;p&gt;K 版不附原廠散熱器，所以整個很單薄；當然是會希望有如同 i9 那尊爵不凡的感受，但口袋不深就該認命點 QQ&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_7818e8fafd7b_hu_1f631804bb3e6381.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_7818e8fafd7b_hu_1f631804bb3e6381.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;上機&#34;&gt;上機
&lt;/h2&gt;&lt;p&gt;沿用在 i7-12700 與 i5-12400 用過的利民 Peerless Assassin 120 ARGB 與利民 Intel 12th Gen CPU 防彎座，拆掉主機板上的原廠扣具，先放上 CPU。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_e458481f96fb_hu_21a24cb73b1e37d8.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_e458481f96fb_hu_21a24cb73b1e37d8.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;鎖上防彎扣具。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_af8bc5ce65e2_hu_df08f44db40a490d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_af8bc5ce65e2_hu_df08f44db40a490d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;鎖上散熱器扣具底座。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_6e9b5acbf77d_hu_b2be1f3a7734c78d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_6e9b5acbf77d_hu_b2be1f3a7734c78d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;本次使用的散熱膏是利民 TF8，在玩 i7-12700 時已經試過經典的一米粒大小點中央，以及塗滿整面後刮刀抹勻的方式；前陣子看到有文章說擠長條形狀的塗法更加有效導熱，這次就來試試看。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_63ff16266f62_hu_6530db4aacd7c090.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_63ff16266f62_hu_6530db4aacd7c090.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;上塔散。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_b46a80e78911_hu_4b335f26cb98fb2e.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_b46a80e78911_hu_4b335f26cb98fb2e.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;上風扇。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_d9ebccdd218d_hu_55fe5b8533a852b3.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_d9ebccdd218d_hu_55fe5b8533a852b3.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;在等待 i7-13700K 時主機板已經和 i5-12400 先上機了，EPS 12V 只接了一條，玩超頻需要兩條插好插滿。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_1831776c431e_hu_fe1487a6eff8269.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_1831776c431e_hu_fe1487a6eff8269.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;電源供應器是 EVGA Supernove 1000 G5，每條模組線頭尾都有束線帶固定，有個缺點是不易彎折。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_855f175e9cea_hu_3ea516b376c4474f.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_855f175e9cea_hu_3ea516b376c4474f.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;每條線的束線帶都被我剪掉了，新的也不例外，剪！&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_e93dbb7d5b16_hu_92ea7c6385d2695f.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_e93dbb7d5b16_hu_92ea7c6385d2695f.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;好彎多了，也不用擔心彎折造成的接觸不良，而剪破的地方很醜，全部塞到背面眼不見為淨即可，已解決（？&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_aa28022715da_hu_96deb478fe9f7124.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_aa28022715da_hu_96deb478fe9f7124.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;開機，正確偵測！&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_8b0d7b012e8d_hu_a85895edf3c92879.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_8b0d7b012e8d_hu_a85895edf3c92879.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;ASUS ROG AI Feature 回報的數值如下圖所示：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_9d4038b87d3d_hu_b2e749bbb0c47147.png&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_9d4038b87d3d_hu_b2e749bbb0c47147.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_5c2288fe8682_hu_bc8766011b515e1.png&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_5c2288fe8682_hu_bc8766011b515e1.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;其中，SP 體質預測 (Silicon Prediction, SP) 回報值為:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;P-Core SP: 89&lt;/li&gt;
&lt;li&gt;E-Core SP: 57&lt;/li&gt;
&lt;li&gt;Overall SP: 79&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對比 &lt;a class=&#34;link&#34; href=&#34;https://www.igorslab.de/en/intel-13th-gen-raptor-lake-binning-auch-klein-kann-fein-teil-2-i7-13700k-kf-und-i5-13600k-kf-2/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Igor&#39;s LAB 整理的 i7-13700K/KF SP 統計報告&lt;/a&gt;，我的運氣實在不太好，是個比平均值還要差的體質，衝首發買的東西幾乎都是如此，中後期製造的 CPU 在體質上時通常都會比前期還要好，早買早享受，晚買不只享折扣。&lt;/p&gt;
&lt;h2 id=&#34;測試---cinebench-r23&#34;&gt;測試 - Cinebench R23
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;平台配置&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: Intel Core i7-13700K
&lt;ul&gt;
&lt;li&gt;P-Core: 5.3 Ghz @ 1.41V&lt;/li&gt;
&lt;li&gt;E-Core: 4.2 Ghz @ 1.40V&lt;/li&gt;
&lt;li&gt;Bus/Cache Freq: 100 Mhz / 4800 Mhz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;CPU Cooler: Thermalright Peerless Assassin 120 White ARGB&lt;/li&gt;
&lt;li&gt;CPU Thermal Paste: Thermalright TF8&lt;/li&gt;
&lt;li&gt;RAM: Micron Crucial Ballistix DDR4-3200 64GB (16GBx4, dual channel x2)
&lt;ul&gt;
&lt;li&gt;XMP-II enabled, 3200Mhz, CL16-18-18-36 2T - RFC: 560, Gear Mode 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Motherboard: ASUS ROG STRIX Z690-A GAMING WIFI D4 (BIOS Ver: 2103)&lt;/li&gt;
&lt;li&gt;GPU: MSI Geforce RTX 3090 SUPRIM X 24G&lt;/li&gt;
&lt;li&gt;PSU: EVGA Supernova 1000 G5&lt;/li&gt;
&lt;li&gt;OS: Windows 11 22H2 (build 10.0.22621, 64 bit)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;※P-Core Ratio 很奇怪，原廠規格應該是 54x，但是在 BIOS 重設原廠設定後開機總是設定在 53x，原因不明，但是這邊選擇不手動指定到 54x。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;全預設簡單跑 Cinebench R23，得分 30679，與 &lt;a class=&#34;link&#34; href=&#34;https://www.techpowerup.com/review/intel-core-i7-13700k/6.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechPowerUp 測試在 DDR5-6000 平台的結果&lt;/a&gt; 差不多 (30781 pts)，但實際上應該可以得到更高的分數，原因在於 PA120 完全壓不住，大概不到 5 秒鐘就看到主機板上的 Debug LED 直接亮紅燈 (CPU 溫度過高)，直接撞上溫度牆導致降頻。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_1ebddcc29528_hu_a48070bec9227509.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_1ebddcc29528_hu_a48070bec9227509.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;規格上 i7-13700K 滿載功耗為 253W，偵測到最大功耗 241W，最大溫度攝氏 99 度，Core TjMAX 歸零後 CPU 會觸發過熱保護 (TjMAX 歸零時核心溫度為攝氏 100 度)。&lt;/p&gt;
&lt;p&gt;如果換上水冷，應該可保持不觸發過熱保護的情況下跑完測試，得到 31000 ~ 32000 分應該是沒問題的，不過目前手邊沒有水冷，就不再測試下去了。&lt;/p&gt;
&lt;p&gt;如果要讓 i7-13700K 搭配空冷使用，建議是降一點電壓使用，當然不調整也不是不行，因為日常使用很少會有出現功耗超過 200W 的時候，不過空冷的挑選上也不能馬虎，入門款的 3~4 導管肯定還是會很熱的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;開箱的當下只做了簡單快速的測試，所以跑分上其實算是低於正常值，如果記憶體不僅開啟 XMP，還超上更高的頻率，以及在乾淨的 Windows 系統下進行跑分，得分應該是可以輕鬆超過 31000 的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;簡單總結&#34;&gt;簡單總結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;優點
&lt;ul&gt;
&lt;li&gt;強大效能: 承襲 12 代的 10nm 新製程，進一步拉高效能&lt;/li&gt;
&lt;li&gt;不鎖倍頻: 自由超頻&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;缺點
&lt;ul&gt;
&lt;li&gt;貴: 不全然是 Intel 的鍋，但美金匯率高漲更加劇精美匯率飆高&lt;/li&gt;
&lt;li&gt;熱: 儘管製程改良，但能耗比並不在設計考量內，長期重載的話需考慮上水冷或限制瓦數去壓低核心溫度&lt;/li&gt;
&lt;li&gt;大小核工作調度目前支援度不佳: 常有工作全部丟到 E-core，結果 P-core 在旁邊納涼的情形&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很久沒有買 Intel 的新產品，因為過去一直在 14nm+++++++++ 打轉擠牙膏，中間曾一度跳槽 AMD，到了 12 代製程改良才又再度回鍋，還是一樣「謝謝 AMD 讓我有強大的 Intel CPU 可以用」XD。&lt;/p&gt;
&lt;p&gt;最後，CP 值之王 i5-12400 與盤子價 i7-13700K 紀念合影。謝謝 i5-12400，親民價格體驗製程紅利。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_43207b0db967_hu_5f05db4bfc3a807c.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-intel-core-i7-13700k/img_43207b0db967_hu_5f05db4bfc3a807c.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;開箱篇就到這邊，預計會再寫一篇超頻篇，前面有提到目前不玩水冷，因此會是針對空冷的降壓超頻。但許久沒超 Intel CPU，BIOS 的東西實在多到眼花撩亂，大概要好一陣子才會再更新了。&lt;/p&gt;</description>
        </item>
        <item>
        <title>Ubuntu - APT install 或 update 時出現 /var/lib/dpkg/lock-frontend 的解決方法</title>
        <link>https://caloskao.org/ubuntu-how-to-solve-os-prompt-var-lib-dpkg-lock-frontend-when-run-apt-install-or-update/</link>
        <pubDate>Mon, 20 Feb 2023 16:45:25 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-how-to-solve-os-prompt-var-lib-dpkg-lock-frontend-when-run-apt-install-or-update/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/ubuntu.png" alt="Featured image of post Ubuntu - APT install 或 update 時出現 /var/lib/dpkg/lock-frontend 的解決方法" /&gt;&lt;blockquote&gt;
&lt;p&gt;五年前有寫過一篇類似的文章，不過錯誤訊息稍微有些不同，印像中當時執行的 Ubuntu 版本是 16 或是 18。&lt;/p&gt;
&lt;p&gt;本篇適用於 Ubuntu 20 以後的版本，舊版文章請參考&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/ubuntu-apt-install-error-could-not-get-lock-var-lib-dpkg-lock-unable-to-lock-the-administration-directory-var-lib-dpkg/&#34; &gt;這邊&lt;/a&gt;。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在 Ubuntu 上安裝或更新套件時有時會遇到 APT 套件管理器被鎖定的情況&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Waiting&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cache&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Could&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lock&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;frontend&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;It&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;held&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;process&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2734&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jammy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;建議是找出程序並正常結束它，而不是本文的強制結束，因為其他程序可能正在安裝套件，中斷的話會破壞套件完整性，使系統某個功能損壞，而需要透過其他方法介入修補。&lt;/p&gt;
&lt;p&gt;因為這種情況最常發生在桌面板的 GUI 介面下，套件管理器會跳出提示通知更新，但本身會一直卡在 GUI 的確認對話框；如果是使用 SSH 遠端機器的話是沒辦法介入 GUI 介面的，所以這種情況就適用本文的解法。&lt;/p&gt;
&lt;p&gt;前面的訊息結尾有顯示是 PID 2734 使用中，但可能不只一個 PID 佔住，可以透過 &lt;code&gt;lsof&lt;/code&gt; 查詢所有使用中的 PID&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo lsof /var/lib/dpkg/lock-frontend
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;輸出如下，可以看到有兩個處理程序佔用&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;lsof&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WARNING&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;can&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;t stat() fuse.gvfsd-fuse file system /run/user/125/gvfs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;Output&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;information&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;may&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;incomplete&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;lsof&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WARNING&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;can&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;Output&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;information&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;may&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;incomplete&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;COMMAND&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;PID&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;USER&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;FD&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;TYPE&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DEVICE&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OFF&lt;/span&gt;    &lt;span class=&#34;n&#34;&gt;NODE&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NAME&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jammy&lt;/span&gt;   &lt;span class=&#34;mi&#34;&gt;2734&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;    &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uW&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;REG&lt;/span&gt;    &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;        &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2621854&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;frontend&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jammy&lt;/span&gt;   &lt;span class=&#34;mi&#34;&gt;9282&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;    &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;u&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;REG&lt;/span&gt;    &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;        &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2621854&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;frontend&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用 &lt;code&gt;sudo kill -9 &amp;lt;PID&amp;gt;&lt;/code&gt; 強制結束&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -9 2734&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -9 9282&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再次執行套件管理程式，應該就可以正常執行了。&lt;/p&gt;
&lt;p&gt;如果不行的話，就重複上面的步驟 (使用 &lt;code&gt;lsof&lt;/code&gt; 查找佔用 lock file 的處理程序)，直到可以執行為止。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;https://learningsky.io/var-lib-dpkg-lock/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;【 Solutions 】解決更新套件或安裝套件遇到 - 無法將 /var/lib/dpkg/lock 鎖定&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>為 Ubuntu 快速設定一組臨時固定 IP</title>
        <link>https://caloskao.org/quickly-set-a-temporary-static-ip-for-ubuntu/</link>
        <pubDate>Mon, 20 Feb 2023 14:14:39 +0800</pubDate>
        
        <guid>https://caloskao.org/quickly-set-a-temporary-static-ip-for-ubuntu/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/ubuntu.png" alt="Featured image of post 為 Ubuntu 快速設定一組臨時固定 IP" /&gt;&lt;p&gt;這是一個簡單快速的設定方式，但這不是永久設定，只要重開機後就會消失，&lt;/p&gt;
&lt;p&gt;我通常只會在安裝新機器時可以讓我方便用 SSH 進行後續設定作業，&lt;/p&gt;
&lt;p&gt;永久設定方式請參考&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/using-netplan-to-configure-ubuntu-nic/&#34; &gt;這篇文章&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;登入系統後，輸入 &lt;code&gt;ip addr&lt;/code&gt; 查詢網路卡名稱&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu-focal-fossa:~$ ip addr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu &lt;span class=&#34;m&#34;&gt;65536&lt;/span&gt; qdisc noqueue state UNKNOWN group default qlen &lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 127.0.0.1/8 scope host lo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 ::1/128 scope host
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2: ens33: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu &lt;span class=&#34;m&#34;&gt;1500&lt;/span&gt; qdisc fq_codel state UNKNOWN group default qlen &lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/ether 00:0c:29:75:ec:4a brd ff:ff:ff:ff:ff:ff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 10.240.0.101/24 brd 10.240.0.255 scope global dynamic ens33
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft 86372sec preferred_lft 86372sec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 fe80::20c:29ff:fe75:ec4a/64 scope link
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以看到有 &lt;code&gt;lo&lt;/code&gt; 和 &lt;code&gt;ens33&lt;/code&gt; 兩張網路卡，&lt;code&gt;lo&lt;/code&gt; 是一個 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Loopback&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Loopback 介面&lt;/a&gt;，&lt;code&gt;ens33&lt;/code&gt; 就是我們要設定的網卡。&lt;/p&gt;
&lt;p&gt;網路卡的名稱會因為機器的類型或其他原因導致每台電腦顯示的名稱不盡相同，複製設定範例前要先查好。&lt;/p&gt;
&lt;p&gt;使用下列指令在網路卡 &lt;code&gt;ens33&lt;/code&gt; 上設定一個臨時 IP:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ip addr add 192.168.1.220/24 dev ens33
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動網路卡，這時候應該就可以正常連線了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ip link &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; ens33 up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[開箱] EVGA GeForce RTX 3090 XC3 ULTRA GAMING (24G-P5-3975-KR)</title>
        <link>https://caloskao.org/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/</link>
        <pubDate>Sat, 18 Feb 2023 15:27:36 +0800</pubDate>
        
        <guid>https://caloskao.org/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/</guid>
        <description>&lt;img src="https://caloskao.org/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/PXL_20210719_081926183.jpg" alt="Featured image of post [開箱] EVGA GeForce RTX 3090 XC3 ULTRA GAMING (24G-P5-3975-KR)" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;&lt;p&gt;這是一個純開箱文，重點在開箱，開什麼不是重點。&lt;/p&gt;
&lt;p&gt;沒有上機、沒有測試，沒有高級相機，沒有美照。&lt;/p&gt;
&lt;p&gt;國內外很多專業的評測與美照可以看，請多加利用。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這次開箱的是 EVGA GeForce RTX 3090 XC3 ULTRA GAMING (24G-P5-3975-KR)&lt;/p&gt;
&lt;p&gt;Nvidia 30 系列唯二沒有 LHR 版本的顯示卡 (另一張是 3090 Ti)&lt;/p&gt;
&lt;p&gt;滿血版 3090 Ti 拖了很久才上市 (2022-05)&lt;/p&gt;
&lt;p&gt;因此 3090 保持著當代卡皇的地位長達近兩年，算是很長壽的卡皇&lt;/p&gt;
&lt;p&gt;以下正文&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;外包裝&#34;&gt;外包裝
&lt;/h2&gt;&lt;p&gt;盒裝正面，一貫的設計&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_c6be4277afd8_hu_cdfb01e899705ec8.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_c6be4277afd8_hu_cdfb01e899705ec8.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;盒裝背面，各種產品特點說明&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_2a35bb8b8f39_hu_5075a792adb45b0d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_2a35bb8b8f39_hu_5075a792adb45b0d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;內容物&#34;&gt;內容物
&lt;/h2&gt;&lt;p&gt;內裝、顯示卡本體、銘牌、簡易說明書與直立式支架&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_1f5cf75a05ec_hu_12948f91db8b42ec.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_1f5cf75a05ec_hu_12948f91db8b42ec.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;顯示卡外觀&#34;&gt;顯示卡外觀
&lt;/h2&gt;&lt;h3 id=&#34;正面&#34;&gt;正面
&lt;/h3&gt;&lt;p&gt;顯示卡本體正面，保護膜貼好貼滿，大哥卡的優點之一&lt;/p&gt;
&lt;p&gt;但一如既往的 eeeeeeeeeeeeeeeeeeeeeee 扇葉 醜翻天，見一次嘴一次 XD&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_bb5fb6a05087_hu_89ceea7e69d599c0.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_bb5fb6a05087_hu_89ceea7e69d599c0.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;移除膠膜後的樣子&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_b6cc2be3a39c_hu_93cb109a5c83ce01.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_b6cc2be3a39c_hu_93cb109a5c83ce01.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;側面&#34;&gt;側面
&lt;/h3&gt;&lt;p&gt;顯卡側面，膠膜已移除&lt;/p&gt;
&lt;p&gt;散熱鰭片設計工整，兩組 PCI-e 8 pin 外部電源輸入&lt;/p&gt;
&lt;p&gt;SLI 有保留，30 系列僅有 3090 與 3090 Ti 還可以玩 SLI&lt;/p&gt;
&lt;p&gt;左側 EVGA Logo 字的部分帶有 RGB LED，可下載官網軟體進行樣式調整&lt;/p&gt;
&lt;p&gt;而 FTW3 版本是一整條大型 RGB LED，相較之下 XC3 的設計低調許多&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_538722e1b9df_hu_d9f6b24f282749c4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_538722e1b9df_hu_d9f6b24f282749c4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;金手指側的視角&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_6e73f94bd6fa_hu_679fbaeee598dff3.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_6e73f94bd6fa_hu_679fbaeee598dff3.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;背板&#34;&gt;背板
&lt;/h3&gt;&lt;p&gt;背板也有膠膜保護著&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_32c7bd754633_hu_4707c8ac52b852f0.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_32c7bd754633_hu_4707c8ac52b852f0.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;移除膠膜，密集的六角形佔滿整個背板，同樣密集，不過看起來比風扇的 eeeeeee 要好得多 XD&lt;/p&gt;
&lt;p&gt;右側的 EVGA Logo 也是 RGB LED。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_564613d84428_hu_e2db1a7c0c18fc95.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_564613d84428_hu_e2db1a7c0c18fc95.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;後擋板&#34;&gt;後擋板
&lt;/h3&gt;&lt;p&gt;一樣有膠膜與鎖點膠套保護著，好評！&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_f9df47770870_hu_ebe8a392aaee28f1.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_f9df47770870_hu_ebe8a392aaee28f1.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;與 FTW3 版無異，標準 DP*3 / HDMI*1 輸出設計&lt;/p&gt;
&lt;p&gt;一如既往的沒給防塵塞，也看不出是不是防氧化電鍍表面，差評！&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_64de48b6a557_hu_b6f39a874a5e96c6.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_64de48b6a557_hu_b6f39a874a5e96c6.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;尾部&#34;&gt;尾部
&lt;/h3&gt;&lt;p&gt;一樣有膠膜保護著，好評！&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_e95b6c733dd1_hu_8e9da5708512a79a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_e95b6c733dd1_hu_8e9da5708512a79a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;一共使用六根熱導管&lt;/p&gt;
&lt;p&gt;我拿到的是經典迷純姊設計，笑死&lt;/p&gt;
&lt;p&gt;後面生產的版本好像沒有紅唇設計了&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_ac08ace9bb63_hu_e653eaaf35e228fe.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-xc3-ultra-gaming-24g-p5-3975-kr/img_ac08ace9bb63_hu_e653eaaf35e228fe.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;簡單評論&#34;&gt;簡單評論
&lt;/h2&gt;&lt;p&gt;XC3 定位上是標準產品線，價格較便宜，相對來說時脈 / 散熱設計也自然比較弱一點。&lt;/p&gt;
&lt;p&gt;與 3090 FTW3，或其他 GDDR6X 的顯示卡一樣，記憶體溫度是硬傷&lt;/p&gt;
&lt;p&gt;FTW3 勉強壓得住，雖然 XC3 的熱導管數量與 FTW3 相同，但是在散熱器的厚度與面積上有明顯差距，印象中 core 與 VRAM 溫度足足高 FTW3 有 10 度以上，hotspot 則差不多快 10 度。&lt;/p&gt;
&lt;p&gt;個人建議可以適度的降低核心電壓，讓 VRAM 再涼一點。&lt;/p&gt;
&lt;p&gt;另外一點，早期生產的卡片 VRAM 溫度都比較高，2022 年 9 月以後生產的顯卡，溫度上都比較低了一些，拆開來看一樣是 Laird，外觀上看不出來是否有換其他等級的導熱泥，貼的位置也沒有不同，但我後面取得 3070 Ti 以上的 EVGA 顯示卡，只要是 2022 年 9 月以後生產溫度普遍都是更涼的。&lt;/p&gt;
&lt;p&gt;現在買到的應該都是如此，二手購入的朋友也不用擔心，只要正常使用下溫度偏高，都是可以出保固請原廠免費更換耗材的。&lt;/p&gt;
&lt;p&gt;以上，純開箱完畢，感謝收看。&lt;/p&gt;</description>
        </item>
        <item>
        <title>[開箱] ASUS ROG STRIX Z690-A GAMING WIFI D4</title>
        <link>https://caloskao.org/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/</link>
        <pubDate>Wed, 12 Oct 2022 17:57:42 +0800</pubDate>
        
        <guid>https://caloskao.org/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/</guid>
        <description>&lt;img src="https://caloskao.org/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/PXL_20221021_081416259.jpg" alt="Featured image of post [開箱] ASUS ROG STRIX Z690-A GAMING WIFI D4" /&gt;&lt;h2 id=&#34;前言&#34;&gt;前言
&lt;/h2&gt;&lt;p&gt;Intel 13 代還沒正式上市，被各種消息燒到換換病發作，但傳出 700 系列主機板沒有大升級，價格倒是一樣貴得感人，DDR5 的效能與價格優勢距離 DDR4 還有不小的距離，因此先趁 Z690 價格還不錯時先入手備著了。&lt;/p&gt;
&lt;p&gt;2022 年前後分別入手了 i7-12700 與 i5-12400，因不是買 K 版玩超頻所以選 B660，當時購入的是是 ASUS ROG STRIX B660-A GAMING WIFI D4，挑選上基本就是 80% 外觀 20% 其它，因為是白色控，看來看去這片比較順眼就入手了。&lt;/p&gt;
&lt;p&gt;而這次是為了玩 i7-13700k，超頻需要選 Z 版，就還是選一樣系列的 Z690 了。&lt;/p&gt;
&lt;h2 id=&#34;主機板規格&#34;&gt;主機板規格
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;CPU&lt;/td&gt;
          &lt;td&gt;Intel® Socket LGA1700 for 13th  Gen Intel® Core™ &amp;amp; 12th Gen Intel® Core™, Pentium® Gold and Celeron®  Processors&lt;br /&gt;Supports Intel® Turbo Boost Technology 2.0 and Intel® Turbo Boost Max  Technology 3.0**&lt;br /&gt;* Refer to &lt;a class=&#34;link&#34; href=&#34;https://www.asus.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;www.asus.com&lt;/a&gt; for CPU support list.&lt;br /&gt;** Intel® Turbo Boost Max Technology 3.0 support depends on the CPU types.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;晶片組&lt;/td&gt;
          &lt;td&gt;Z690&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;記憶體&lt;/td&gt;
          &lt;td&gt;4 x DIMM, Max. 128GB, DDR4&lt;br /&gt;5333(OC)/5000(OC)/4800(OC)/4700(OC)/4600(OC)/4500(OC)/4400(OC)/4266(OC)/4133(OC)/4000(OC)/3866(OC)/3733(OC)/3600(OC)/3466(OC)/3400(OC)/3333(OC)/3300(OC)/3200/3000/2933/2800/2666/2400/2133  Non-ECC, Un-buffered Memory*&lt;br /&gt;Dual Channel Memory Architecture&lt;br /&gt;Supports Intel® Extreme Memory Profile (XMP)&lt;br /&gt;OptiMem III&lt;br /&gt;*Actual Memory frequency support depends on the CPU types and DRAM modules,  for more information refer to &lt;a class=&#34;link&#34; href=&#34;https://www.asus.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;www.asus.com&lt;/a&gt; for the Memory QVL (Qualified  Vendors Lists).&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;顯示晶片&lt;/td&gt;
          &lt;td&gt;1 x DisplayPort**&lt;br /&gt;1 x HDMI® port***&lt;br /&gt;&lt;br /&gt;*Graphics specifications may vary between CPU types. Please refer to  &lt;a class=&#34;link&#34; href=&#34;https://www.intel.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;www.intel.com&lt;/a&gt; for any updates.&lt;br /&gt;** Support 8K@60Hz as specified in DisplayPort 1.4.&lt;br /&gt;***Support 4K@60Hz as specified in HDMI® 2.1.&lt;br /&gt;**** VGA resolution support depends on processors&amp;rsquo; or graphic cards&amp;rsquo;  resolution.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;擴充槽&lt;/td&gt;
          &lt;td&gt;1 x PCIe 5.0 x16 + 1 x PCIe 3.0  x16 (x4 or x4/x4)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Intel® 13th &amp;amp; 12th Gen Processors&lt;/strong&gt;&lt;br /&gt;1 x PCIe 5.0/4.0/3.0 x16 slot*&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Intel® Z690 Chipset&lt;/strong&gt;&lt;br /&gt;1 x PCIe 3.0 x16 slot (supports x4 mode)*&lt;br /&gt;1 x PCIe 3.0 x1 slot&lt;br /&gt;&lt;br /&gt;* Please check PCIe bifurcation table in User Guide Chapter 1&lt;br /&gt;// support  site.&lt;br /&gt;** Supports Intel® Optane Memory H Series on PCH-attached PCIe slot&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;資料儲存應用&lt;/td&gt;
          &lt;td&gt;Supports 4 x M.2 slots and 6 x  SATA 6Gb/s ports&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Intel® 12th Gen Processors&lt;/strong&gt;&lt;br /&gt;M.2_1 slot (Key M), type 2242/2260/2280/22110&lt;br /&gt;- Intel® 12th Gen processors support PCIe 4.0 x4 mode.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Intel® Z690 Chipset&lt;/strong&gt;&lt;br /&gt;M.2_2 slot (Key M), type 2242/2260/2280 (supports PCIe 4.0 x4 mode)&lt;br /&gt;M.2_3 slot (Key M), type 2242/2260/2280/22110 (supports PCIe 4.0 x4 mode)&lt;br /&gt;M.2_4 slot (Key M), type 2242/2260/2280 (supports PCIe 4.0 x4 &amp;amp; SATA  modes)&lt;br /&gt;6 x SATA 6Gb/s ports***&lt;br /&gt;&lt;br /&gt;* Intel® Rapid Storage Technology supports NVMe RAID 0/1/5, SATA RAID  0/1/5/10.&lt;br /&gt;*** RAID configuration is not supported on the SATA6G_E1-2 ports.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;區域網路&lt;/td&gt;
          &lt;td&gt;1 x Intel® 2.5Gb Ethernet&lt;br /&gt;ASUS LANGuard&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;無線資料網路&lt;/td&gt;
          &lt;td&gt;2x2 Wi-Fi 6 (802.11  a/b/g/n/ac/ax)&lt;br /&gt;Supports 2.4/5GHz frequency band&lt;br /&gt;Bluetooth v5.2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;USB連接埠&lt;/td&gt;
          &lt;td&gt;Rear USB:&lt;br /&gt;Total 10 ports&lt;br /&gt;1 x USB 3.2 Gen 2x2 port (1 x USB Type-C®)&lt;br /&gt;3 x USB 3.2 Gen 2 ports (2 x Type-A + 1 x USB Type-C®)&lt;br /&gt;4 x USB 3.2 Gen 1 ports (4 x Type-A)&lt;br /&gt;2 x USB 2.0 ports (2 x Type-A)&lt;br /&gt;&lt;br /&gt;Front USB:&lt;br /&gt;Total 7 ports&lt;br /&gt;1 x USB 3.2 Gen 2x2 connector (supports USB Type-C®)&lt;br /&gt;1 x USB 3.2 Gen 1 header support(s) additional 2 USB 3.2 Gen 1 ports&lt;br /&gt;2 x USB 2.0 headers support additional 4 USB 2.0 ports&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;音效&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;ROG SupremeFX 7.1 Surround Sound  High Definition Audio CODEC ALC4080&lt;/strong&gt;&lt;br /&gt;- Impedance sense for front and rear headphone outputs&lt;br /&gt;- Supports: Jack-detection, Multi-streaming, Front Panel  Jack-retasking&lt;br /&gt;- High quality 120 dB SNR stereo playback output and 113 dB SNR recording  input&lt;br /&gt;- Supports up to 32-Bit/384 kHz playback&lt;br /&gt;&lt;br /&gt;Audio Features&lt;br /&gt;- SupremeFX Shielding Technology&lt;br /&gt;- Savitech SV3H712 AMP&lt;br /&gt;- Premium audio capacitors&lt;br /&gt;- Audio cover&lt;br /&gt;&lt;br /&gt;* Due to limitations in HDA bandwidth, 32-Bit/192 kHz is not supported for  7.1 Surround Sound audio.&lt;br /&gt;**The rear panel Line out port does not support spatial audio. If you wish  to use spatial audio make sure to connect your audio output device to the  audio jack on the front panel of your chassis.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Back Panel I/O Ports&lt;/td&gt;
          &lt;td&gt;1 x USB 3.2 Gen 2x2 port (1 x  USB Type-C®)&lt;br /&gt;3 x USB 3.2 Gen 2 ports (2 x Type-A, 1 x USB Type-C®)&lt;br /&gt;4 x USB 3.2 Gen 1 ports (4 x Type-A)&lt;br /&gt;2 x USB 2.0 ports (2 x Type-A)&lt;br /&gt;1 x DisplayPort&lt;br /&gt;1 x HDMI® port&lt;br /&gt;1 x Wi-Fi Module&lt;br /&gt;1 x Intel® 2.5Gb Ethernet port&lt;br /&gt;5 x Audio jacks&lt;br /&gt;1 x BIOS FlashBack™ button&lt;br /&gt;1 x Clear CMOS button&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Internal I/O Connectors&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Fan and cooling related&lt;/strong&gt;&lt;br /&gt;1 x 4-pin CPU Fan header&lt;br /&gt;1 x 4-pin CPU OPT Fan header&lt;br /&gt;1 x 4-pin AIO Pump header&lt;br /&gt;5 x 4-pin Chassis Fan headers&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Power related&lt;/strong&gt;&lt;br /&gt;1 x 24-pin Main Power connector&lt;br /&gt;2 x 8-pin +12V Power connectors&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Storage related&lt;/strong&gt;&lt;br /&gt;4 x M.2 slots (Key M)&lt;br /&gt;6 x SATA 6Gb/s ports&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;USB&lt;/strong&gt;&lt;br /&gt;1 x USB 3.2 Gen 2x2 connector (support USB Type-C®)&lt;br /&gt;1 x USB 3.2 Gen 1 header supports additional 2 USB 3.2 Gen 1 ports&lt;br /&gt;2 x USB 2.0 headers support additional 4 USB 2.0 ports&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Miscellaneous&lt;/strong&gt;&lt;br /&gt;3 x Addressable Gen 2 headers&lt;br /&gt;1 x AURA RGB header&lt;br /&gt;1 x Clear CMOS header&lt;br /&gt;1 x CPU Over Voltage jumper&lt;br /&gt;1 x 12-1 pin Front Panel Audio header (AAFP)&lt;br /&gt;1 x S/PDIF Out header&lt;br /&gt;1 x SPI TPM header (14-1pin)&lt;br /&gt;1 x 20-3 pin System Panel header with Chassis intrude function&lt;br /&gt;1 x Thermal Sensor header&lt;br /&gt;1 x Thunderbolt™ header&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Special Features&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Y&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Extreme Engine Digi+&lt;/strong&gt;&lt;br /&gt;-5K Black Metallic Capacitors&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ASUS Q-Design&lt;/strong&gt;&lt;br /&gt;- M.2 Q-Latch&lt;br /&gt;- PCIe Slot Q-Release&lt;br /&gt;- Q-DIMM&lt;br /&gt;- Q-LED (CPU [red], DRAM [yellow], VGA [white], Boot Device [yellow green])&lt;br /&gt;- Q-Slot&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ASUS Thermal Solution&lt;/strong&gt;&lt;br /&gt;- M.2 heatsink backplate&lt;br /&gt;- M.2 heatsink&lt;br /&gt;- VRM heatsink design&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ASUS EZ DIY&lt;/strong&gt;&lt;br /&gt;- BIOS FlashBack™ button&lt;br /&gt;- BIOS FlashBack™ LED&lt;br /&gt;- Clear CMOS button&lt;br /&gt;- CPU Socket lever protector&lt;br /&gt;- ProCool II&lt;br /&gt;- Pre-mounted I/O shield&lt;br /&gt;- SafeSlot&lt;br /&gt;- SafeDIMM&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;AURA Sync&lt;/strong&gt;&lt;br /&gt;- AURA RGB header&lt;br /&gt;- Addressable Gen 2 headers&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ASUS HYDRANODE&lt;/strong&gt;&lt;br /&gt;- 1 x 12-1 pin Front Panel Audio header (AAFP)&lt;br /&gt;- 1 x Chassis fan support* (CHA_FAN1P)&lt;br /&gt;&lt;br /&gt;* Visit ASUS Website for the latest compatibility list.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Software  Features&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;ROG Exclusive Software&lt;/strong&gt;&lt;br /&gt;- GameFirst VI&lt;br /&gt;- ROG CPU-Z&lt;br /&gt;- Sonic Studio III + Sonic Studio Virtual Mixer + Sonic Suite  Companion&lt;br /&gt;- Sonic Radar III&lt;br /&gt;- DTS® Sound Unbound&lt;br /&gt;- Anti-virus software&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ASUS Exclusive Software&lt;/strong&gt;&lt;br /&gt;Armoury Crate&lt;br /&gt;- AIDA64 Extreme (60 days free trial)&lt;br /&gt;- AURA Creator&lt;br /&gt;- AURA Sync&lt;br /&gt;- Fan Xpert 4&lt;br /&gt;- Two-Way AI Noise Cancelation&lt;br /&gt;AI Suite 3&lt;br /&gt;- Easy Optimization with AI Overclocking&lt;br /&gt;  TPU&lt;br /&gt;  EPU&lt;br /&gt;  DIGI+ VRM&lt;br /&gt;  Turbo app&lt;br /&gt;MyAsus&lt;br /&gt;WinRAR&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UEFI BIOS&lt;/strong&gt;&lt;br /&gt;AI Overclocking Guide&lt;br /&gt;ASUS EZ DIY&lt;br /&gt;- ASUS CrashFree BIOS 3&lt;br /&gt;- ASUS EZ Flash 3&lt;br /&gt;- ASUS UEFI BIOS EZ Mode&lt;br /&gt;FlexKey&lt;br /&gt;MemTest86&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;BIOS&lt;/td&gt;
          &lt;td&gt;256 Mb Flash ROM, UEFI AMI BIOS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Manageability&lt;/td&gt;
          &lt;td&gt;WOL by PME, PXE&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Accessories&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Cables&lt;/strong&gt;&lt;br /&gt;4 x SATA 6Gb/s cables&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Miscellaneous&lt;/strong&gt;&lt;br /&gt;1 x ASUS Wi-Fi moving antennas&lt;br /&gt;1 x Cable ties pack&lt;br /&gt;1 x M.2 Rubber Package&lt;br /&gt;1 x M.2 Q-Latch package&lt;br /&gt;1 x ROG key chain&lt;br /&gt;1 x ROG Strix stickers&lt;br /&gt;1 x ROG Strix thank you card&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Installation Media&lt;/strong&gt;&lt;br /&gt;1 x Support DVD&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;br /&gt;1 x User guide&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;作業系統&lt;/td&gt;
          &lt;td&gt;Windows® 11, Windows® 10 64-bit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主機板尺寸&lt;/td&gt;
          &lt;td&gt;ATX&lt;br /&gt;30.5公分 x 24.4公分&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;資料來源：&lt;a class=&#34;link&#34; href=&#34;https://rog.asus.com/tw/motherboards/rog-strix/rog-strix-z690-a-gaming-wifi-d4-model/spec/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ROG STRIX Z690-A GAMING WIFI D4 | ROG 台灣官方網站&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;開箱&#34;&gt;開箱
&lt;/h2&gt;&lt;h3 id=&#34;外盒包裝&#34;&gt;外盒包裝
&lt;/h3&gt;&lt;p&gt;外盒正面，基本與 ROG B660-A 無異，個人很喜歡。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_1b08091a1502_hu_a4b3ba0dc99e35ad.jpg&#34;
    width=&#34;1280&#34;
    height=&#34;960&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_1b08091a1502_hu_a4b3ba0dc99e35ad.jpg 1280w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;外盒背面，一些重點特色介紹。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_fa0d65492d28_hu_4d8c3e1dd1975767.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_fa0d65492d28_hu_4d8c3e1dd1975767.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;側面視角，高識別度的完整型號以及產品標籤貼紙。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_9177c86c0aff_hu_b0af05f493a1611.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_9177c86c0aff_hu_b0af05f493a1611.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;內容物&#34;&gt;內容物
&lt;/h3&gt;&lt;p&gt;打開盒裝第一眼，標準的包裝形式。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_d439834f5f3b_hu_50c706a584597fd9.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_d439834f5f3b_hu_50c706a584597fd9.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;其他配件放在下層&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_e7b1819afea7_hu_fa25917b302faa75.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_e7b1819afea7_hu_fa25917b302faa75.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;內容物大合照&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_b43927723959_hu_bcd55bd5c89618d5.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_b43927723959_hu_bcd55bd5c89618d5.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;內容物清單：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主機板&lt;/li&gt;
&lt;li&gt;SATA 傳輸線 *4 (平頭/90度頭各 2 條)&lt;/li&gt;
&lt;li&gt;M.2 橡膠墊 *3&lt;/li&gt;
&lt;li&gt;M.2 Q-Latch *2 (標準 *1 / M.2 背板專用 *1)&lt;/li&gt;
&lt;li&gt;束線帶 1 包&lt;/li&gt;
&lt;li&gt;Wi-Fi 天線 (線長約 80cm，SMA 連接器)&lt;/li&gt;
&lt;li&gt;ROG 鑰匙圈&lt;/li&gt;
&lt;li&gt;ROG STRIX 感謝卡&lt;/li&gt;
&lt;li&gt;使用手冊&lt;/li&gt;
&lt;li&gt;驅動 / 公用程式光碟&lt;/li&gt;
&lt;li&gt;ROG STRIX 裝飾貼紙&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;主機板本體&#34;&gt;主機板本體
&lt;/h3&gt;&lt;p&gt;正面照，檔板、VRM 散熱為一體式設計。&lt;/p&gt;
&lt;p&gt;Z690 的 VRM 散熱器較高，我使用的利民 Peerless Assassin 120 ARGB 塔式散熱器其中一邊會卡到 CPU 正上方的 VRM 散熱器部分，需要轉 180 度才可以安裝。&lt;/p&gt;
&lt;p&gt;挑選散熱器時需要注意散熱器會不會卡到上方的部分。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_d1cea281d61c_hu_6bc4058e540a780.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_d1cea281d61c_hu_6bc4058e540a780.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;一體式擋板設計，上面銀色的部分有 RGB LED，有貼上塑膠膜保護。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_ef75899e9d48_hu_9b1dd7df8c51e31b.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_ef75899e9d48_hu_9b1dd7df8c51e31b.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;M.2 Shield 有三條，可幫助 M.2 SSD 散熱。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_d66a544f4795_hu_1f7c6116578a9470.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_d66a544f4795_hu_1f7c6116578a9470.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;將全部的 M.2 Shield 卸除後如下圖所示。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;總共可安裝 4 條 M.2 SSD。&lt;/li&gt;
&lt;li&gt;其中最上面的 M.2 插槽是走 CPU PCI-E 5.0 通道，理論效能最好，但 SSD 越高速相對發熱量也越大，因此在 M.2 Shield 與主機板上分別各有一條導熱墊做成雙面導熱，散熱較果更好。&lt;/li&gt;
&lt;li&gt;其他三組插槽由 PCH 提供，速率是 PCI-E 4.0，規格低一階，只有單面散熱，導熱墊貼在 M.2 Shield 上。&lt;/li&gt;
&lt;li&gt;全部皆採用 Q-LATCH 快拆設計，好評！&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;右側晶片組的散熱器上有造型魔鬼氈，可協助固定線材（雖然幾乎用不到，線都藏到其他地方去了）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_37a4149c0fb6_hu_18a32a7ff613b984.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_37a4149c0fb6_hu_18a32a7ff613b984.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;移除造型魔鬼氈，底下的晶片組散熱片有 &lt;code&gt;ZDRAVLJICA&lt;/code&gt; 與 &lt;code&gt;GOEMON CITY&lt;/code&gt; 字樣，皆為 &lt;a class=&#34;link&#34; href=&#34;https://rog.asus.com/rog-saga/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ROG SAGA&lt;/a&gt; 虛擬世界相關的詞彙。&lt;/p&gt;
&lt;p&gt;個人是不太了解，花了一點時間逛了 ROG SAGA 網站，這兩個詞彙意思應該分別是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://rog.asus.com/rog-saga/gov/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ZDRAVLJICA&lt;/a&gt;: 代表的是一間名為 Gigacorp ZDRAVLJICA] 的企業，沒有企業相關介紹，只知道有投資政府設立軍用太空站。&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://rog.asus.com/rog-saga/goemon-city/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GOEMON CITY&lt;/a&gt;: 一座地下都市，設定上是位於日本神奈川山區箱根的廢墟附近，以傳說中的義警石川五右衛門命名，是東京歌舞伎町區的擴大娛樂區。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_6d33fc7c3d0c_hu_46cb2a5b6fc57859.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_6d33fc7c3d0c_hu_46cb2a5b6fc57859.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;記憶體插槽右下角有一個 Q-RELEASE 按鈕，為 PCI-E 插槽的快拆設計，現在的顯示卡一個比一個還要大，安裝了顯示卡又安裝了 CPU 塔式散熱器的話，要拆下顯卡時幾乎沒有空間可以將手伸進去，我都要拿一把尺去慢慢的撬開卡扣。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_7704b2235416_hu_78ef7cf4dab82e29.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_7704b2235416_hu_78ef7cf4dab82e29.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;現在只要輕輕壓下 Q-RELEASE 按鈕，卡扣就打開了，好評！&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_d718a4d0c31b_hu_bde1feeacf6f4b3a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_d718a4d0c31b_hu_bde1feeacf6f4b3a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;簡單總結&#34;&gt;簡單總結
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;優點&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;漂亮的外觀&lt;/li&gt;
&lt;li&gt;一體式擋板&lt;/li&gt;
&lt;li&gt;Wi-Fi 6&lt;/li&gt;
&lt;li&gt;Q-LATCH 快拆設計&lt;/li&gt;
&lt;li&gt;Q-RELEASE 快拆設計&lt;/li&gt;
&lt;li&gt;BIOS 可調項目豐富&lt;/li&gt;
&lt;li&gt;內建 MemTest86&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;缺點&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU_OPT 風扇轉速無法控制&lt;/li&gt;
&lt;li&gt;Armoury Crate 相容性極差，風扇轉速設定無法控制&lt;/li&gt;
&lt;li&gt;Sonic Studio 軟體常出現 &lt;code&gt;無法偵測到硬體&lt;/code&gt; 而無法調整設定，需重新開機&lt;/li&gt;
&lt;li&gt;使用藍芽耳機有底噪聲&lt;/li&gt;
&lt;li&gt;價格偏高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最後一張與 ROG STRIX B660-A GAMING WIFI D4 的合照，服役 10 個月後正式交棒。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_5c855f0adc41_hu_188a2f3958191629.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-asus-rog-strix-z690-a-gaming-wifi-d4/img_5c855f0adc41_hu_188a2f3958191629.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;部分項目新增於 2023-02-21，使用約 4 個月。&lt;/li&gt;
&lt;li&gt;筆者是個休閒玩家，文章以純開箱為主，深度專業評測的部分，個人推薦參考狼大的文章：
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wolflsi.pixnet.net/blog/post/69863136&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ROG STRIX Z690-A GAMING WIFI D4簡單開箱(硬體篇) @ 港都狼窩 WolfLSI&amp;rsquo;s Den&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wolflsi.pixnet.net/blog/post/69886566&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ROG STRIX Z690-A GAMING WIFI D4 UEFI及上機測試篇 @ 港都狼窩 WolfLSI&amp;rsquo;s Den&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[開箱] EVGA Geforce RTX 3090 FTW3 ULTRA GAMING (24G-P5-3987-KR)</title>
        <link>https://caloskao.org/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/</link>
        <pubDate>Mon, 29 Aug 2022 16:32:41 +0000</pubDate>
        
        <guid>https://caloskao.org/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/</guid>
        <description>&lt;img src="https://caloskao.org/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/PXL_20211009_181425200.jpg" alt="Featured image of post [開箱] EVGA Geforce RTX 3090 FTW3 ULTRA GAMING (24G-P5-3987-KR)" /&gt;&lt;p&gt;這是一個純開箱文，重點在開箱，開什麼不是重點。&lt;/p&gt;
&lt;p&gt;沒有上機、沒有測試，沒有高級相機，沒有美照。&lt;/p&gt;
&lt;p&gt;國內外很多專業的評測與美照可以看，請多加利用。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這次開箱的是 EVGA Geforce RTX 3090 FTW3 ULTRA GAMING (24G-P5-3987-KR)&lt;/p&gt;
&lt;p&gt;Nvidia 30 系列唯二沒有 LHR 版本的顯示卡 (另一張是 3090 Ti)&lt;/p&gt;
&lt;p&gt;滿血版 3090 Ti 拖了很久才上市 (2022-05)&lt;/p&gt;
&lt;p&gt;因此 3090 保持著當代卡皇的地位長達近兩年，算是很長壽的卡皇&lt;/p&gt;
&lt;p&gt;以下正文&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;EVGA 官網貨，一如既往堅實的外箱，與貼在外箱上的發票信封&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_348dccaa0bdf_hu_ed118ea64b484364.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_348dccaa0bdf_hu_ed118ea64b484364.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  內裝物型號與序號標籤貼於側邊&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_4f68fdee44ff_hu_bd5df8cc3bc65331.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_4f68fdee44ff_hu_bd5df8cc3bc65331.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  緩衝材塞好塞滿塞整齊，EVGA 在網路購物這一塊是少數在包裝上很用心的廠商之一&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_a1880edece41_hu_6bc894cb13fb8d1d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_a1880edece41_hu_6bc894cb13fb8d1d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  盒裝正面，一貫的設計&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_c5ce743d26f3_hu_aa9ce68add40e64.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;3413&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_c5ce743d26f3_hu_aa9ce68add40e64.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;56&#34;
        data-flex-basis=&#34;135px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  盒裝背面，各種產品特點說明&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_59b3ff9cd0a7_hu_e98acbbd873bdd93.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;3413&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_59b3ff9cd0a7_hu_e98acbbd873bdd93.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;56&#34;
        data-flex-basis=&#34;135px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  內裝、顯示卡本體、銘牌、簡易說明書與直立式支架&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_6f8770277b9b_hu_20ec13d0a665cfaf.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_6f8770277b9b_hu_20ec13d0a665cfaf.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  顯示卡本體正面，保護膜貼好貼滿，大哥卡的優點之一 但一如既往的 eeeeeeeeeeeeeeeeeeeeeee 扇葉 醜翻天，見一次嘴一次 XD&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_541491988b14_hu_cbc2497ae6d1799f.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_541491988b14_hu_cbc2497ae6d1799f.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  顯卡外側，散熱鰭片設計工整，三組 PCI-e 8 pin 外部電源輸入 SLI 有保留，30 系列僅有 3090 與 3090 Ti 還可以玩 SLI&lt;/p&gt;
&lt;p&gt;不同於 XC3 版本，FTW3 版本為一整條大型 RGB LED 視覺效果不錯，可下載官網軟體進行樣式調整&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_34b4da4511eb_hu_aef22a2cca033825.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_34b4da4511eb_hu_aef22a2cca033825.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  稍微翻轉一下角度，3090 是有 24 GB GDDR6X 大容量 VRAM 的顯示卡 每顆 VRAM 顆粒大小為 1GB，總共有 24 顆 VRAM 因此部分顆粒焊接到背面去，仔細看可以發現背面還有貼 VRAM 導熱墊&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_3b5774431012_hu_7b4add4e25ca020b.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_3b5774431012_hu_7b4add4e25ca020b.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;56&#34;
        data-flex-basis=&#34;135px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  另一側視角 
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_4c57ac2518ae_hu_672912d0ff7b1e92.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_4c57ac2518ae_hu_672912d0ff7b1e92.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  拉近一點看，正反面都貼上許多導熱墊 而 GDDR6X 又特別高溫，可想而知 3090 有多熱情 而散熱的部分又只有正面的導熱墊有接觸散熱鰭片，導熱效率比較高 背面的顆粒雖然比正面少，但是沒有風扇協助主動散熱 且 VRAM 溫度 sensor 的讀數是取最高溫的顆粒作為讀數 因此在軟體讀取 VRAM 溫度 sensor 回報的數字都會偏高 有鑑於這一特性，有不少玩家在背板上黏散熱銅塊或是綁上風扇協助散熱 雖然醜了點，但效果是有的&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_36f9fb2505a7_hu_5f960aa106104279.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_36f9fb2505a7_hu_5f960aa106104279.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  後擋板，標準 DP*3 HDMI*1 輸出設計 一如既往的沒給防塵塞，一樣很有信心輸出孔不會氧化 但我看不出是不是防氧化電鍍表面，因此這部分是扣分&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_4f0fab7b88a4_hu_24609e39fa8e6229.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_4f0fab7b88a4_hu_24609e39fa8e6229.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  顯卡尾部，一共使用六根熱導管 散熱器正面有兩道凹溝，可增加散熱效率&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_b881f5558388_hu_eadfa75bce40c067.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3090-ftw3-ultra-gaming-24g-p5-3987-kr/img_b881f5558388_hu_eadfa75bce40c067.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  忘記拍背板照，不過 FTW3 系列除了 3060 Ti 以外 其他型號的背板都長得差不多，不需要特別再說明&lt;/p&gt;
&lt;p&gt;以上，純開箱完畢，感謝收看。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[開箱] EVGA Geforce RTX 3060 Ti FTW3 ULTRA GAMING (08G-P5-3667-KL)</title>
        <link>https://caloskao.org/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/</link>
        <pubDate>Wed, 09 Mar 2022 09:57:37 +0000</pubDate>
        
        <guid>https://caloskao.org/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/</guid>
        <description>&lt;img src="https://caloskao.org/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/PXL_20210921_180130298.jpg" alt="Featured image of post [開箱] EVGA Geforce RTX 3060 Ti FTW3 ULTRA GAMING (08G-P5-3667-KL)" /&gt;&lt;p&gt;這是一個純開箱文，重點在開箱，開什麼不是重點。&lt;/p&gt;
&lt;p&gt;沒有上機、沒有測試，沒有高級相機，沒有美照。&lt;/p&gt;
&lt;p&gt;國內外很多專業的評測與美照可以看，請多加利用。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這次開箱的是 EVGA Geforce RTX 3060 Ti FTW3 ULTRA GAMING (08G-P5-3667-KL)&lt;/p&gt;
&lt;p&gt;雖然是 FTW3，但散熱方案是共用 3070 Ti ~ 3090 XC3 的設計&lt;/p&gt;
&lt;p&gt;也是 EVGA 30 系列顯卡唯一一張沒有大燈條的 FTW3&lt;/p&gt;
&lt;p&gt;以下正文&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;大哥官網貨，堅實的外箱、保護性充足的緩衝材 一如既往的發票信封&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_7fa21846ef17_hu_15970d5db8423c94.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_7fa21846ef17_hu_15970d5db8423c94.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  盒裝正面，一貫的設計，沒有什麼特別之處&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_f13050c8964d_hu_99d091c25c487838.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;3067&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_f13050c8964d_hu_99d091c25c487838.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;62&#34;
        data-flex-basis=&#34;150px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  盒裝背面，各種產品特點說明&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_60666d836dbf_hu_5f19445ba5e22f77.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;3067&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_60666d836dbf_hu_5f19445ba5e22f77.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;62&#34;
        data-flex-basis=&#34;150px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  內裝、顯卡本體與說明書，內包裝一樣是 3070Ti ~ 3090 XC3 等級的設計 顯卡本體保護膜貼好貼滿，大哥卡的優點之一&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_b7603696d913_hu_cdd0277766f4dd66.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_b7603696d913_hu_cdd0277766f4dd66.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  撕掉保護膜，顯卡本體正面 一如既往的 eeeeeeeeeeeeeeeeeeeeeee 扇葉 見怪不怪了，醜翻天，笑死 
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_6401e37d06a1_hu_28af209ead36c8a9.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_6401e37d06a1_hu_28af209ead36c8a9.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  顯卡本體背面，金屬背板充斥一大堆六角形圖案 有一些開孔幫助散熱 右側 EVGA Logo 為 RGB LED，通電時會發亮，可下載官網軟體進行調色&lt;/p&gt;
&lt;p&gt;正面 eeeeeeeeeee 背面一堆六角形 設計師肯定是密集上癮症 
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_aaf14cc7c776_hu_9e59560b661366e.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_aaf14cc7c776_hu_9e59560b661366e.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  顯卡外側，散熱鰭片設計工整，雙 PCI-e 8 pin 外部電源輸入 左側 EVGA Logo 為 RGB LED，通電時會發亮，可下載官網軟體進行調色 
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_ab4bc7f11fe9_hu_ee7daba0a87813fb.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_ab4bc7f11fe9_hu_ee7daba0a87813fb.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  顯卡內側，沒什麼特別的 
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_f1306fc97642_hu_3ed707ccf3fb8685.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_f1306fc97642_hu_3ed707ccf3fb8685.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  後擋板，螺絲孔處有塑膠套保護 標準 DP*3 HDMI*1 輸出設計 一如既往的沒給防塵塞 大哥一樣很有信心輸出孔不會氧化 但我看不出是不是防氧化電鍍表面 
&lt;img src=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_b3139a0d6fae_hu_f4f863146f2f7bb4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/unbox-evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-08g-p5-3667-kl/img_b3139a0d6fae_hu_f4f863146f2f7bb4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;  以上，純開箱完畢，感謝收看。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Fortigate - 過濾 Syslog 一般流量紀錄</title>
        <link>https://caloskao.org/fortigate-filter-syslog-normal-traffic/</link>
        <pubDate>Mon, 28 Sep 2020 09:43:23 +0000</pubDate>
        
        <guid>https://caloskao.org/fortigate-filter-syslog-normal-traffic/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/fortinet.jpg" alt="Featured image of post Fortigate - 過濾 Syslog 一般流量紀錄" /&gt;&lt;p&gt;Fortigate 的 log 很大一部分是在流量，如果運作在流量大的地方，log 量會非常可怕。&lt;/p&gt;
&lt;p&gt;因此我們需要把一般的流量紀錄排除掉，只留下重要的紀錄，同時不影響其他類型的 log。&lt;/p&gt;
&lt;h2 id=&#34;前置作業&#34;&gt;前置作業
&lt;/h2&gt;&lt;p&gt;首先，先確保 syslogd 已經設定好，並可以正常傳輸&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config global
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config log syslogd setting
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    set status enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    set server &amp;#34;192.168.10.254&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    set port 1514
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;end
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;log-types&#34;&gt;Log Types
&lt;/h2&gt;&lt;p&gt;取得目前 syslogd 的設定&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config global
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get log syslogd filter
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;輸出如下&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;severity            : information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;forward-traffic     : enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;local-traffic       : enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;multicast-traffic   : enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sniffer-traffic     : enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;anomaly             : enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;voip                : enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dns                 : enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;filter              : 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;filter-type         : include
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;因為防火牆沒有做什麼設定，上面的值為防火牆出廠預設值。&lt;/p&gt;
&lt;p&gt;我們需要過濾的 log 類型有兩種:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;本機流量 &lt;strong&gt;(&lt;code&gt;logid&lt;/code&gt;: 0001000013)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;type: traffic&lt;/li&gt;
&lt;li&gt;subtype: local&lt;/li&gt;
&lt;li&gt;severity: notice&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;NAT 流量 &lt;strong&gt;(&lt;code&gt;logid&lt;/code&gt;: 0001000014)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;type: traffic&lt;/li&gt;
&lt;li&gt;subtype: forward&lt;/li&gt;
&lt;li&gt;severity: notice&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;每一種 log 類型都有一個對應的 &lt;code&gt;logid&lt;/code&gt;，根據官方資料，這兩種流量的 &lt;code&gt;logid&lt;/code&gt; 分別為 &lt;strong&gt;0001000013&lt;/strong&gt; 與 &lt;strong&gt;0001000014&lt;/strong&gt;，針對 &lt;code&gt;logid&lt;/code&gt; 去過濾，即可過濾掉不要的紀錄，只保留重要的，同時不影響其他類型的 log。&lt;/p&gt;
&lt;h2 id=&#34;過濾指定類型的-log&#34;&gt;過濾指定類型的 log
&lt;/h2&gt;&lt;p&gt;進入 syslogd filter 設定&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config log syslogd filter
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;將 &lt;code&gt;filter-type&lt;/code&gt; 設為 &lt;code&gt;exclude&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set filter-type exclude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;設定過濾條件&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set filter &amp;#34;logid(0001000013,0001000014)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最後輸入 &lt;code&gt;end&lt;/code&gt; 退出設定，防火牆將自動套用並儲存設定，接著觀察收到的 logs，這時候 log server 應該乾淨許多。&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果有更改預設的設定檔儲存方式，請記得手動儲存。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;除了 logid，還可以針對不同條件設定，輸入 &lt;code&gt;set filter&lt;/code&gt; 後按下 ? 會顯示設定範例:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fg-100e # set filter
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please input the logid list or level (or both) as filters.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[logid(...)] [traffic-level(...)] [event-level(...)] [virus-level(...)] [webfilter-level(...)] [ips-level(...)] [emailfilter-level(...)] [anomaly-level(...)] [voip-level(...)] [dlp-level(...)] [app-ctrl-level(...)] [waf-level(...)] [dns-level(...)]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;See the following 2 examples.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;example 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set filter &amp;#34;logid(40704,32042)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;example 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set filter &amp;#34;event-level(information)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The available levels are as the following:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;emergency,alert,critical,error,warning,notice,information,debug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更多的設定方式可以參考官方或其他文件。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;完整設定如下&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config log syslogd filter
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    set status enable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    set server &amp;#34;192.168.10.254&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    set port 1514
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;end
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config log syslogd filter
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    set filter &amp;#34;logid(0001000013,0001000014)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    set filter-type exclude
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;end
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.fortinet.com/document/fortigate/6.0.0/cli-reference&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CLI Reference | FortiGate / FortiOS 6.0.0 | Fortinet Documentation Library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>Laravel API Token 使用方式</title>
        <link>https://caloskao.org/laravel-api-token-usage/</link>
        <pubDate>Thu, 24 Sep 2020 10:43:59 +0800</pubDate>
        
        <guid>https://caloskao.org/laravel-api-token-usage/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/laravel.jpg" alt="Featured image of post Laravel API Token 使用方式" /&gt;&lt;h2 id=&#34;資料庫設定&#34;&gt;資料庫設定
&lt;/h2&gt;&lt;p&gt;使用 &lt;code&gt;make:migration&lt;/code&gt; 建立新的 migration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan make:migration --table&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;users add_api_token
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;加入 &lt;code&gt;api_token&lt;/code&gt; 欄位:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;up&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;Schema&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;table&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;users&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Blueprint&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;api_token&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;after&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;password&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;unique&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;nullable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行遷移:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan migrate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;產生-token&#34;&gt;產生 token
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://laravel.com/docs/5.8/api-authentication#generating-tokens&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方的範例&lt;/a&gt;是在使用者註冊時同時產生 token，但如果沒有另外實作更新機制的話可能不是很安全，這邊選擇的實作方式是在使用者登入時重新產生一組 token，這樣使用者不用自己管理 token，也不會永遠使用同一組 token。&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;make:listener&lt;/code&gt; 建立一個 listener:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan make:listener SuccessfulLogin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;修改 &lt;code&gt;app/Listeners/SuccessfulLogin.php&lt;/code&gt;，加入以下內容，讓事件觸發時更新 API token。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$user&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Auth&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$user&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;api_token&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Str&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$user&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最後修改 &lt;code&gt;app/Providers/EventServiceProvider.php&lt;/code&gt;，將我們剛剛新增的 listener 綁定到使用者登入的事件:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;protected&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$listen&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;s1&#34;&gt;&amp;#39;Illuminate\Auth\Events\Login&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;App\Listeners\SuccessfulLogin&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Illuminate\Auth\Events\Login&lt;/code&gt; 是 Laravel 內建的事件類型。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這時候進行登入，可以發現 &lt;code&gt;api_token&lt;/code&gt; 在登入後會自動更新。&lt;/p&gt;
&lt;h2 id=&#34;更新路由&#34;&gt;更新路由
&lt;/h2&gt;&lt;p&gt;只要對指定的路由增加 &lt;code&gt;auth:api&lt;/code&gt; 的 middleware，即可讓 Laravel 收到 HTTP request 時自動驗證使用者端的 token。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;routes/api.php&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Route&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;middleware&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;auth:api&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Request&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;群組路由也行:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Route&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;middleware&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;auth:api&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;group&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;Route&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Request&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;設定-ajax-request-時自動加入-api-token&#34;&gt;設定 AJAX request 時自動加入 API token
&lt;/h2&gt;&lt;p&gt;預設情況下，只要在將 API token 塞進 query string 或 HTML form 就可以正常運作，可以參考&lt;a class=&#34;link&#34; href=&#34;https://laravel.com/docs/5.8/api-authentication#passing-tokens-in-requests&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方的範例&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;但我自己比較喜歡將 token 放到 HTTP request header，而另一種使用方式為 Bearer Token，實作方式是將 &lt;code&gt;Bearer&lt;/code&gt; 這個關鍵字與 API token 一起放進 &lt;code&gt;Authorization&lt;/code&gt; 這組 HTTP request header，並且以一個空白字元做為區隔，長得像這樣子:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;POST&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/api/user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s1&#34;&gt;&amp;#39;headers&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;Authorization&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Bearer &amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;Accept&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;application/json&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡使用 &lt;a class=&#34;link&#34; href=&#34;https://github.com/axios/axios&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;axios&lt;/a&gt; 作為範例。首先，將 API token 以 HTML meta 的形式置入模板的 head 區塊&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;api-token&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;{{ Auth::user()-&amp;gt;api_token }}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;csrf-token&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;{{ csrf_token() }}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;修改 &lt;code&gt;resources/js/bootstrap.js&lt;/code&gt;，在 CSRF token 這段，Laravel 預設是長這樣子:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;token&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;querySelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;meta[name=&amp;#34;csrf-token&amp;#34;]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;axios&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;common&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;X-CSRF-TOKEN&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;仿照一樣的形式，加入 API token，並將 CSRF token 的變數名稱修改為 &lt;code&gt;$csrfToken&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiToken&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;querySelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;meta[name=&amp;#34;api-token&amp;#34;]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;csrfToken&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;querySelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;meta[name=&amp;#34;csrf-token&amp;#34;]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;apiToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;axios&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;common&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Authorization&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`Bearer &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;apiToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;API token not found.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;csrfToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;axios&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;common&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;X-CSRF-TOKEN&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;csrfToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最後使用 &lt;code&gt;npm&lt;/code&gt; 重新編譯，全部就大功告成了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;觀察 HTTP request header，API token 已被塞進 &lt;code&gt;Authorization&lt;/code&gt; 一併發送給後端:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Host: localhost:8000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection: keep-alive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Accept: application/json, text/plain, */*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DNT: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;X-XSRF-TOKEN: ed5uK2VqekJMaWxuVXoRVlIjoib2M4zVL01iTEZ4TU1ISlZjYFqVHJclwvZkxpT1wvTTBNI6IjlmODVmZIyZDU4NjZjZTY1Y2ZkYjFiZTFjNlYTVhNmE3Zjc3ZDifQ==
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;X-CSRF-TOKEN: L2Y5uUsKlz0JBQO6t4fNcUWw9dfRKNkGGhqVBRrW
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;X-Requested-With: XMLHttpRequest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Authorization: Bearer EjzimAAL6is1lgZZhczQGOdDbtjQyRaJTphPW2jj7cVhDhva8GhJNsU5GI94bkQKWqYLG9vjkXKstKfs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sec-Fetch-Site: same-origin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sec-Fetch-Mode: cors
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sec-Fetch-Dest: empty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Referer: http://localhost:8000/check-benchmark
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Accept-Encoding: gzip, deflate, br
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Accept-Language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cookie: jweToken=%7B%22protected%22%3A%22eyJhbGciOiJSU0EiOiJBMjU2R0NNIn0%22%2C%22aad%22%3A%22eyJleHAiOiIyMDIwLTtMTdUMDY6NDU6MjVaIn0%22%2C%22encrypteEV_HYsAkuV5blzfi5CQ8VPbhvz_83xI1jokmRMOqSlQUcYsMfxjJkUkBu-HEGwY76qDrfzxxbBf5qj3ZN1okrBx6KCNq183SJ9hjQbdg9BYx2POPwDC1OjiaX0QiONJCFiMZVVeNdYPn7obBs%22%2C%22tag%22%3A%22JJ7EWL54bTIdR0Y6tgxyhg%2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://laravel.com/docs/5.8/api-authentication&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;API Authentication - Laravel - The PHP Framework For Web Artisans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://learnku.com/articles/11006/detailed-explanation-of-laravels-own-api-guard-drive-token&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Laravel 自带的 API 守卫驱动 token 使用详解 | Laravel China 社区&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>MySQL 執行 flush privileges 後設定消失</title>
        <link>https://caloskao.org/mysql-mariadb-empty-password-after-flush-privileges/</link>
        <pubDate>Sun, 26 Jul 2020 09:26:43 +0000</pubDate>
        
        <guid>https://caloskao.org/mysql-mariadb-empty-password-after-flush-privileges/</guid>
        <description>&lt;p&gt;今天在做 DB 權限設定，看起來一切正常&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;../../assets/images/2020/07/screenshot_2020-05-20_18-01-29_001.png&#34; &gt;
&lt;img src=&#34;https://caloskao.org/post/img_940f171e608b_hu_5555ce1d5cf927b2.png&#34;
    width=&#34;1920&#34;
    height=&#34;1873&#34;
    srcset=&#34;https://caloskao.org/post/img_940f171e608b_hu_5555ce1d5cf927b2.png 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;1&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;102&#34;
        data-flex-basis=&#34;245px&#34;
    
&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;結果執行 &lt;code&gt;flush privileges&lt;/code&gt; 後，密碼與權限設置都消失。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;../../assets/images/2020/07/screenshot_2020-05-20_18-01-55_001.png&#34; &gt;
&lt;img src=&#34;https://caloskao.org/post/img_83170d4ec828_hu_e4cf57654662fc50.png&#34;
    width=&#34;1920&#34;
    height=&#34;1648&#34;
    srcset=&#34;https://caloskao.org/post/img_83170d4ec828_hu_e4cf57654662fc50.png 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;2&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;116&#34;
        data-flex-basis=&#34;279px&#34;
    
&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;重試過幾次都沒有用，結果使用 &lt;code&gt;%&lt;/code&gt; 或是特定的 IP 位址結果正常。&lt;/p&gt;
&lt;p&gt;檢查一下設定，發現有 &lt;code&gt;skip-name-resolve&lt;/code&gt; 這個設定。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[mysqld]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;skip-name-resolve
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;skip-external-locking
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bind-address = 0.0.0.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查詢 MariaDB 官方文件，這個功能是跳過名稱解析，可以加快連線速度。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;skip_name_resolve&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Description&lt;/strong&gt;: If set to 1 (0 is the default), only IP addresses are used for connections. Host names are not resolved. All host values in the GRANT tables must be IP addresses (or localhost).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commandline&lt;/strong&gt;: &amp;ndash;skip-name-resolve&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scope&lt;/strong&gt;: Global&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic&lt;/strong&gt;: No&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Type&lt;/strong&gt;: boolean&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Default Value&lt;/strong&gt;: 0&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;這個設定在連線數量少，頻率低的地方幾乎是沒作用，而且當開啟了這個設定，就算是寫在 &lt;code&gt;/etc/hosts&lt;/code&gt; 設定他也不會解析，這樣會產生一些問題，為了管理方便拿掉比較好。&lt;/p&gt;
&lt;p&gt;拿掉後重新啟動 Server 就解決了。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Rclone 在不使用本機頻寬的條件下進行跨雲端硬碟傳輸</title>
        <link>https://caloskao.org/rclone-across-transfer-each-cloud-drive-without-local-machine-bandwidth/</link>
        <pubDate>Sun, 26 Jul 2020 08:48:40 +0000</pubDate>
        
        <guid>https://caloskao.org/rclone-across-transfer-each-cloud-drive-without-local-machine-bandwidth/</guid>
        <description>&lt;p&gt;Rclone 在 Google 雲端硬碟有支援一項&lt;a class=&#34;link&#34; href=&#34;https://rclone.org/drive/#drive-server-side-across-configs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;特殊的設定&lt;/a&gt;，可以直接在伺服器端進行傳輸：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;--drive-server-side-across-configs&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Allow server side operations (eg copy) to work across different drive configs.&lt;/p&gt;
&lt;p&gt;This can be useful if you wish to do a server side copy between two different Google drives. Note that this isn’t enabled by default because it isn’t easy to tell if it will work between any two configurations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Config: server_side_across_configs&lt;/li&gt;
&lt;li&gt;Env Var: RCLONE_DRIVE_SERVER_SIDE_ACROSS_CONFIGS&lt;/li&gt;
&lt;li&gt;Type: bool&lt;/li&gt;
&lt;li&gt;Default: false&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;編輯 &lt;code&gt;~/.config/rclone/rclone.conf&lt;/code&gt;，加入 &lt;code&gt;server_side_across_configs = true&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[calos-google-personal-drive]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;type = drive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scope = drive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server_side_across_configs = true
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root_folder_id = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[calos-google-team-drive]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;type = drive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scope = drive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server_side_across_configs = true
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;team_drive = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接著進行傳輸，同時透過 &lt;code&gt;iftop&lt;/code&gt; 觀察網路頻寬，可以發現到 &lt;code&gt;rclone&lt;/code&gt; 回報的速度約莫在 1.3 GBps 左右，但是 &lt;code&gt;iftop&lt;/code&gt; 回報的流量只有數十 kbps，代表成功的直接在伺服器端進行傳輸，而不消耗本機頻寬，而且速度快多了。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;../../assets/images/2020/07/screenshot_2020-01-20_09-56-59_001.png&#34; &gt;
&lt;img src=&#34;https://caloskao.org/post/img_72ee85becbdd_hu_ec89d1db4d7fcb6d.png&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_72ee85becbdd_hu_ec89d1db4d7fcb6d.png 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;image&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Reference:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://rclone.org/drive/#drive-server-side-across-configs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;--drive-server-side-across-configs - Rclone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://forum.rclone.org/t/migrate-from-teamdrive-to-another-teamdrive/11953/10&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Migrate from TeamDrive to Another TeamDrive - question - rclone forum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>使用 Netplan 進行 Ubuntu 的網路卡設定</title>
        <link>https://caloskao.org/using-netplan-to-configure-ubuntu-nic/</link>
        <pubDate>Sun, 19 Jul 2020 02:42:00 +0800</pubDate>
        
        <guid>https://caloskao.org/using-netplan-to-configure-ubuntu-nic/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/ubuntu.png" alt="Featured image of post 使用 Netplan 進行 Ubuntu 的網路卡設定" /&gt;&lt;p&gt;以往在 Ubuntu 下設定 IP 的方式為修改 &lt;code&gt;/etc/network/interfaces&lt;/code&gt;，而 Ubuntu 從 17.10 版開始使用 &lt;a class=&#34;link&#34; href=&#34;https://netplan.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Netplan&lt;/a&gt; 作為系統預設的網路設定方式，設定上較容易理解，而管理性也相對地提升了不少（尤其是在雲端環境）。&lt;/p&gt;
&lt;p&gt;首先執行 &lt;code&gt;ls -al /etc/netplan&lt;/code&gt; 看看是否已有設定檔存在。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu-focal-fossa:~$ ls -al /etc/netplan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x  &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; root root &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; May  &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; 08:50 ./
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;95&lt;/span&gt; root root &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; May &lt;span class=&#34;m&#34;&gt;29&lt;/span&gt; 00:15 ../
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root root  &lt;span class=&#34;m&#34;&gt;116&lt;/span&gt; May  &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; 08:50 00-installer-config.yam
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;確認一下內容，通常在安裝時沒有特別設定的話會產生一個 DHCP 的設定檔，其內容如下:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu-focal-fossa:~$ cat /etc/netplan/00-installer-config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# This is the network config written by &amp;#39;subiquity&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;network:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ethernets:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ens33:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      dhcp4: &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  version: &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;直接以新的內容取代它，要設定的固定 IP 為 192.168.1.220，閘道 (分享器、路由器、小烏龜等) 為 192.168.1.1，DNS 直接套用閘道的設定，因此給相同的 IP。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;network:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  version: 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  ethernets:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    ens33:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      addresses:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        - 192.168.1.220/24
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      gateway4: 192.168.1.1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      nameservers:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        addresses:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;          - 192.168.1.1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/netplan/00-installer-config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行 &lt;code&gt;sudo netplan try&lt;/code&gt; 套用設定，這時候通常會斷線個幾秒鐘，之後終端機上就會出現一個倒數計時，代表設定正確。這時候再按下 &lt;kbd&gt;Enter&lt;/kbd&gt; 就會保存設定。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu-focal-fossa:~$ sudo netplan try
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Warning: Stopping systemd-networkd.service, but it can still be activated by:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  systemd-networkd.socket
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do you want to keep these settings?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Press ENTER before the timeout to accept the new configuration
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Changes will revert in &lt;span class=&#34;m&#34;&gt;118&lt;/span&gt; seconds
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Configuration accepted.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu-focal-fossa:~$
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;如果設定錯誤的話就會斷線，但是不用擔心，倒數 120 秒後如果沒有按下 &lt;kbd&gt;Enter&lt;/kbd&gt;，系統就知道設定錯誤，導致你無法做最後的確認動作，系統就會恢復套用前的網路設定。這時候可以再登入進去修正。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://netplan.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Netplan | Backend-agnostic network configuration in YAML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/blog/ubuntu-bionic-netplan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu Bionic: Netplan | Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>在 Ubuntu 20.04 Focal Fossa 上安裝 Docker</title>
        <link>https://caloskao.org/install-docker-on-ubuntu-20-04-focal-fossa/</link>
        <pubDate>Tue, 28 Apr 2020 17:30:24 +0800</pubDate>
        
        <guid>https://caloskao.org/install-docker-on-ubuntu-20-04-focal-fossa/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/docker.webp" alt="Featured image of post 在 Ubuntu 20.04 Focal Fossa 上安裝 Docker" /&gt;&lt;p&gt;Ubuntu 20.04 在 4 月 23 日&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/blog/ubuntu-20-04-lts-arrives&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;正式發行&lt;/a&gt;，發行版代號為 Focal Fossa，Linux Kernel 為 5.4。這次除了在安全性與性能上再次提升外，在檔案系統的部分，這次原生支援了 exFAT，並改善 ZFS 檔案系統的相容性。&lt;/p&gt;
&lt;p&gt;現在使用 container 的需求量很大，安裝完後的第一件事情就是馬上來裝個 Docker，follow 官方的標準安裝流程：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get remove -y docker docker-engine docker.io containerd runc&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;sudo apt-get update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo apt-key add - &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;sudo add-apt-repository &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;   &lt;span class=&#34;s2&#34;&gt;&amp;#34;deb [arch=amd64] https://download.docker.com/linux/ubuntu \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;lsb_release -cs&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;   stable&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;sudo apt-get update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;sudo apt-get install -y docker-ce docker-ce-cli containerd.io
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這時候問題來了，做到 &lt;code&gt;add-apt-repository&lt;/code&gt; 這段的時候會出錯：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;archive&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;archive&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;updates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;archive&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;backports&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;archive&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;security&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Ign&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;download&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;linux&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Err&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;download&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;linux&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Release&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;404&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;Not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Found&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;IP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;13.35&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;153.117&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Reading&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;E&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;repository&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;https://download.docker.com/linux/ubuntu focal Release&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;does&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;have&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Release&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;N&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Updating&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;such&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;repository&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;can&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;t be done securely, and is therefore disabled by default.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;N&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;See&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;secure&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;manpage&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;repository&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;creation&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;configuration&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;details&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;為什麼呢？因為 20.04 才剛發布，Docker repository 還沒這麼快更新。直接到 &lt;a class=&#34;link&#34; href=&#34;https://download.docker.com/linux/ubuntu/dists&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mirror 的網頁目錄&lt;/a&gt;看，focal 並沒有出現。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_e742b1ae15d8_hu_a9a9d155b644b7ff.png&#34;
    width=&#34;1920&#34;
    height=&#34;1553&#34;
    srcset=&#34;https://caloskao.org/post/img_e742b1ae15d8_hu_a9a9d155b644b7ff.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;123&#34;
        data-flex-basis=&#34;296px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;但是不用擔心，因為新版發布時，內建的 packages info 中收錄的絕大多數軟體都非常的新，基本上跟你自己抓的差不了多少。&lt;/p&gt;
&lt;p&gt;執行 &lt;code&gt;apt show docker.io&lt;/code&gt; 查看 Docker 版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;io&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;19.03&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Built&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Using&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;glibc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2.31&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Priority&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Section&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;universe&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;admin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Origin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Maintainer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Developers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;devel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;discuss&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Original&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Maintainer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Paul&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Tagliamonte&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;paultag&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;debian&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Bugs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bugs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;launchpad&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filebug&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Installed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;192&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Depends&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;adduser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;containerd&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;iptables&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;debconf&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;debconf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;2.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libc6&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2.8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libdevmapper1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;02.1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;1.02&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;97&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libseccomp2&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2.1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libsystemd0&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;209&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Recommends&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ca&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;certificates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cgroupfs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cgroup&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lite&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;git&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pigz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xz&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;utils&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apparmor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Suggests&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;aufs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;btrfs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;progs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;debootstrap&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;doc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rinse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;zfs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fuse&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;zfsutils&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Breaks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Replaces&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Homepage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;www&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;community&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;edition&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Download&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;38.9&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;APT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Manual&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Installed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;APT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sources&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;free&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nchc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;universe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;amd64&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Packages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Linux&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;container&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;runtime&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;complements&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kernel&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;namespacing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;high&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;level&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;API&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;which&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;operates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;at&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;process&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;level&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;It&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;runs&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unix&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;processes&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;strong&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;guarantees&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isolation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;repeatability&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;across&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;servers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;great&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;building&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;block&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;automating&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;distributed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systems&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;large&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scale&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;web&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deployments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;database&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clusters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;continuous&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deployment&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systems&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PaaS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;service&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;oriented&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;architectures&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;This&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;contains&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;daemon&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Using&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;io&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;non&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;amd64&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hosts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;supported&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;this&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Please&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;careful&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;anything&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;besides&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;amd64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Also&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;note&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;that&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kernel&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;3.8&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;above&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;required&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;proper&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;operation&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;daemon&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;that&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;any&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;versions&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;may&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;have&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subtle&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;glaring&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;issues&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;目前的最新發行版也是 19.03.8&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_66869d9fc773_hu_b0469ab0dc92e502.png&#34;
    width=&#34;1920&#34;
    height=&#34;1154&#34;
    srcset=&#34;https://caloskao.org/post/img_66869d9fc773_hu_b0469ab0dc92e502.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;166&#34;
        data-flex-basis=&#34;399px&#34;
    
&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;執行 &lt;code&gt;apt show docker-compose&lt;/code&gt; 查看 Docker Compose 版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.25&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Priority&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Section&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;universe&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;admin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Origin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Maintainer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Developers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;devel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;discuss&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Original&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Maintainer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Compose&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Team&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;team&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tracker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;debian&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Bugs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bugs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;launchpad&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filebug&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Installed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;667&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Depends&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cached&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;4.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dockerpty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docopt&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.6&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jsonschema&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2.20&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;six&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;six&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;texttable&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.9&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;websocket&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.32&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yaml&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;3.10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;any&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;3.6&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;distutils&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Recommends&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;io&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.9&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Homepage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Download&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;92.7&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;APT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Manual&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Installed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;APT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sources&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;free&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nchc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;universe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;amd64&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Packages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Punctual&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lightweight&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;development&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;environments&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;management&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;software&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;built&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;top&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Define&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;your&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;services&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;their&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;relationships&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;simple&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;YAML&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker Compose 不是最新版，但其實也就只有 patch 版號有差而已，minor 是一樣的，不構成問題。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_29aad82b2dbc_hu_e7ff0d36e444b635.png&#34;
    width=&#34;1920&#34;
    height=&#34;1287&#34;
    srcset=&#34;https://caloskao.org/post/img_29aad82b2dbc_hu_e7ff0d36e444b635.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;149&#34;
        data-flex-basis=&#34;358px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;所以就放心的直接安裝系統自帶的版本就可以了~&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y docker.io docker-compose
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;檢查狀態，一切正常&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;calos&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~$&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Debug&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Containers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Running&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Paused&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Stopped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Images&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Server&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;19.03&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Storage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Driver&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;overlay2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Backing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Filesystem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unknown&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Supports&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;d_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Native&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Overlay&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Diff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Logging&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Driver&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Cgroup&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Driver&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cgroupfs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Plugins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Volume&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Network&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bridge&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;host&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ipvlan&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;macvlan&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;null&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;overlay&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;awslogs&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fluentd&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;gcplogs&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;gelf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;journald&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;logentries&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;splunk&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;syslog&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Swarm&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inactive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Runtimes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;runc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Default&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Runtime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;runc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Init&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Binary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;init&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;containerd&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;runc&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;init&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Security&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Options&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;apparmor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;seccomp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;Profile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Kernel&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;5.4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Operating&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;20.04&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;LTS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;OSType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Architecture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x86_64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;CPUs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Total&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Memory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;3.817&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GiB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C6PM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ZCVS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NXVA&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SBG&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;P373&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SZJ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FJB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;C7XF&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HC6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;QUE2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AJYW&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MQGG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Root&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Debug&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Registry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;io&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Labels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Experimental&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Insecure&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Registries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Live&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Restore&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Enabled&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;WARNING&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;No&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;swap&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;limit&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;support&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;calos&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;focal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~$&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.25&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unknown&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[PHP] 使用兩個問號 (Null Coalescing Operator) 簡易判斷並賦值</title>
        <link>https://caloskao.org/php-null-coalescing-operator/</link>
        <pubDate>Sat, 04 Jan 2020 13:47:30 +0800</pubDate>
        
        <guid>https://caloskao.org/php-null-coalescing-operator/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/php.png" alt="Featured image of post [PHP] 使用兩個問號 (Null Coalescing Operator) 簡易判斷並賦值" /&gt;&lt;p&gt;在 PHP 5.3 可以透過 &lt;code&gt;?:&lt;/code&gt; 運算子簡單的判斷並賦值&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$foo&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$bar&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?:&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$baz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;上面的運算式等同：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$foo&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$bar&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$bar&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$baz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但是在沒有宣告變數之前仍然會出現錯誤訊息。而 PHP 7.0 開始支援兩個問號 (&lt;code&gt;??&lt;/code&gt;) 判斷並賦值，而且不用事先使用 &lt;code&gt;isset()&lt;/code&gt; 判斷變數是否存在：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$username&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_GET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;??&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;nobody&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;上面的運算式等同：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$username&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_GET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_GET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;nobody&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;而且可以串一個以上的判斷：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$username&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_GET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;??&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_POST&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;??&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;nobody&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/a/36796941/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;php - Best way to give a variable a default value (simulate Perl ||, ||= ) - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/a/4696621/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PHP: Assign if not empty? - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PHP: New features - Manual&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>Google 雲端硬碟同步免安裝版 Backup and Sync from Google Portable</title>
        <link>https://caloskao.org/backup-and-sync-from-google-portable/</link>
        <pubDate>Thu, 17 Oct 2019 03:43:23 +0800</pubDate>
        
        <guid>https://caloskao.org/backup-and-sync-from-google-portable/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Google 備份與同步處理&lt;/strong&gt; 是由 Google 開發的一個檔案備份與同步軟體，可以將電腦、手機、相機和 SD 卡等裝置的資料夾中的檔案上傳並儲存在 Google 雲端硬碟，也可以在多部設備進行同步，保持檔案的一致性。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;軟體名稱：Google 備份與同步處理 (原 Google 雲端硬碟桌面版)| Backup and Sync from Google 版本：3.46.7395.1225&lt;/p&gt;
&lt;p&gt;官方網站：&lt;a class=&#34;link&#34; href=&#34;https://www.google.com/intl/zh-TW_ALL/drive/download/backup-and-sync/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.google.com/intl/zh-TW_ALL/drive/download/backup-and-sync/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;軟體下載：&lt;a class=&#34;link&#34; href=&#34;https://ouo.io/XUqC0N&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows 64-Bit 免安裝版&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://www.google.com/intl/zh-TW_ALL/drive/download/backup-and-sync/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方線上安裝版&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>使用 EaseUS Data Recovery Wizard Free 進行資料救援</title>
        <link>https://caloskao.org/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/</link>
        <pubDate>Mon, 30 Sep 2019 16:00:23 +0800</pubDate>
        
        <guid>https://caloskao.org/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/</guid>
        <description>&lt;p&gt;硬碟發展至今已有 63 年的歷史，史上第一顆硬碟是出現在西元 1956 年，由 IBM 製造的 350RAMAC，體積有兩個冰箱這麼大，但容量只有 5MB，而現在的硬碟容量已經遠遠超過這個數字，當今主流硬碟體積也只有 3.5 吋或 2.5 吋大，甚至也有基於快閃記憶體 (NAND Flash) 為主儲存媒介的產品誕生。儘管儲存技術已經非常進步，但我們仍無法完全避免資料遺失，如果只是不小心誤刪，有不少簡單的方法可以輕鬆復原；但如果是因為儲存裝置的壽命、分割區損毀等問題造成資料無法讀取，對於一般人來說可能就必須尋求專業資料救援業者的幫助，而且資料救援的費用通常都不會太便宜。如果很不幸的你剛好碰到了這個問題，建議可以先試試看 &lt;a class=&#34;link&#34; href=&#34;https://tw.easeus.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EaseUS 易我科技&lt;/a&gt;所開發的&lt;a class=&#34;link&#34; href=&#34;https://tw.easeus.com/data-recovery-software/data-recovery-wizard-free.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;免費資料救援軟體&lt;/a&gt; - Data Recovery Wizard。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;軟體名稱：EaseUS Data Recovery Wizard Free 開發商：EaseUS 易我科技 軟體下載：&lt;a class=&#34;link&#34; href=&#34;http://down.easeus.com/product/drw_free&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows版&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;http://download.easeus.com/free/mac_drw.dmg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mac 版&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;簡介&#34;&gt;簡介
&lt;/h2&gt;&lt;p&gt;EaseUS Data Recovery Wizard 主要功能是可協助一般使用者從 PC、筆記型電腦、硬碟、SSD、USB、記憶卡、數位相機等儲存裝置中輕鬆救回因為誤刪除、格式化、分區遺失、作業系統當機、受到病毒攻擊或在其他情境下丟失的檔案、圖片、文件、影片等資料。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_f1e46db60dce_hu_f04d405c364da0c8.png&#34;
    width=&#34;1920&#34;
    height=&#34;1302&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_f1e46db60dce_hu_f04d405c364da0c8.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;147&#34;
        data-flex-basis=&#34;353px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;官方宣稱可恢復超過 1000 種檔案類型，基本上你看過的檔案類型都會有。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4e451ac5bda6_hu_bc92d4f150c6ec6c.png&#34;
    width=&#34;1920&#34;
    height=&#34;1237&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4e451ac5bda6_hu_bc92d4f150c6ec6c.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;155&#34;
        data-flex-basis=&#34;372px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;版本總共有四種，分別是 Free、Pro、Pro+Winpe、Technician 四種，主要差異是可恢復的數據量，付費版本沒有限制，而免費版的限制則是 2GB；而三種付費版的主要差異為 Pro+Winpe 支援在系統無法啟動時進行救援，Technician 版的授權數量為多台，可以用於商業用途，提供你的客戶技術上的服務。如果需要救援的資料量不大，或許免費版即可完成，如果需要恢復的資料量大，那可能就需要購買付費版本，雖然要價 2000 起，但是跟資料救援業者相比還是便宜許多。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_9c42d088e0d1_hu_e72ad93086e314ac.png&#34;
    width=&#34;1920&#34;
    height=&#34;1075&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_9c42d088e0d1_hu_e72ad93086e314ac.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;178&#34;
        data-flex-basis=&#34;428px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;注意事項&#34;&gt;注意事項
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;在開始進行資料救援前，請切記&lt;strong&gt;不要對儲存裝置進行任何修改&lt;/strong&gt;，因為寫入時是有機會覆蓋掉需要救援的檔案區。當檔案被覆蓋，可能會造成檔案毀損或是完全消失。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要對儲存裝置進行格式化&lt;/strong&gt;，因為格式化會對硬碟進行寫入，不管是不是快速格式化都會。&lt;/li&gt;
&lt;li&gt;如果檔案在系統分割區，建議使用外接系統或是另一台電腦進行資料救援，因為系統的背景程序會時不時對硬碟進行寫入。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;安裝步驟&#34;&gt;安裝步驟
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;至官網下載安裝檔 
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4f0fa6019407_hu_1bd07e68d8bfb776.png&#34;
    width=&#34;1920&#34;
    height=&#34;1151&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4f0fa6019407_hu_1bd07e68d8bfb776.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;166&#34;
        data-flex-basis=&#34;400px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;執行安裝檔，點選立即安裝。如果需要安裝至非預設路徑，點選右下角紅框處展開自訂選項，及可以自行選擇安裝路徑。 
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_bb95d6658c55_hu_529afcc6d4dbc294.png&#34;
    width=&#34;1920&#34;
    height=&#34;1560&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_bb95d6658c55_hu_529afcc6d4dbc294.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;123&#34;
        data-flex-basis=&#34;295px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接著靜候一段時間即可，沒有過多的選項，對於一般使用者來說非常友善。 
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_f10e81eef6e9_hu_b63a4efc432a3650.png&#34;
    width=&#34;1920&#34;
    height=&#34;1200&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_f10e81eef6e9_hu_b63a4efc432a3650.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;160&#34;
        data-flex-basis=&#34;384px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;點選立即啟動以結束安裝程式並開始進行資料救援。 
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4e25af2426f5_hu_fe126f44a56ce54d.png&#34;
    width=&#34;1920&#34;
    height=&#34;1200&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4e25af2426f5_hu_fe126f44a56ce54d.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;160&#34;
        data-flex-basis=&#34;384px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;掃描遺失的檔案&#34;&gt;掃描遺失的檔案
&lt;/h2&gt;&lt;p&gt;啟動後可看到電腦上的硬碟分區與外接設備，選擇要救援的儲存裝置或路徑後點選 &lt;code&gt;掃描&lt;/code&gt;（本篇使用 USB 隨身碟進行示範）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_209f26cf6464_hu_7ebd73b27df8254a.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_209f26cf6464_hu_7ebd73b27df8254a.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;掃描途中就會把已發現的檔案直接顯示在視窗上，如果你已經看到所有你遺失的檔案，也可以直接點選畫面左下角的按鈕直接停止掃描。這邊要注意的是掃描中出現的檔案不一定是可以復原的，像是下圖中出現的 3 個檔案名稱不太正常，有可能是檔案已經被覆寫但是沒有被完全覆蓋過去的殘留片段。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4560e530bb72_hu_946235546fac3fd5.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4560e530bb72_hu_946235546fac3fd5.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;但是通常一開始最初的幾秒就會出現一些檔案，而且會顯示掃描已完成，但過沒幾秒狀態又變成繼續掃描，原因是掃描會有兩個階段，第一階段會先快速掃描表層資料，這時候被偵測出來的檔案基本上應該都還算完整，而第二階段會逐一對每一個磁碟區塊做深度掃描，有機會挖掘出更多的檔案。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4e42bd312630_hu_9e818a04cf07949a.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4e42bd312630_hu_9e818a04cf07949a.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;恢復檔案&#34;&gt;恢復檔案
&lt;/h2&gt;&lt;p&gt;當掃描完成或是自行停止後，就可以開始進行恢復檔案了。畫面右上角可以切換資料檢視，分別是縮圖、清單，預覽窗格。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_cdbf3f5e756a_hu_8b3771b560c44155.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_cdbf3f5e756a_hu_8b3771b560c44155.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
 
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_63c8bb0e656f_hu_9759fa94e04c3aa3.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_63c8bb0e656f_hu_9759fa94e04c3aa3.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
 
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_5064e505e70f_hu_12ceedd6b3f538de.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_5064e505e70f_hu_12ceedd6b3f538de.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;而紅框處是直接打開預覽視窗，可以更方便的切換預覽檔案。而檔案類型如果是影像檔或影片檔，甚至可以先預覽後再決定要不要復原。在進行&lt;a class=&#34;link&#34; href=&#34;https://tw.easeus.com/photo-recovery/sd-card-video-recovery.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;影片救援&lt;/a&gt;時，預覽視窗也自帶播放器，可以直接觀看影片內容。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_af2096bbc44d_hu_be612bf7b0cbd044.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_af2096bbc44d_hu_be612bf7b0cbd044.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;單一檔案可以直接透過滑鼠右鍵進行恢復，多個檔案可利用勾選的方式先進行選擇，再點選右下角的 &lt;code&gt;{恢復}&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_cf6e84eb368a_hu_2799edc4d13b772.png&#34;
    width=&#34;1920&#34;
    height=&#34;1339&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_cf6e84eb368a_hu_2799edc4d13b772.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;143&#34;
        data-flex-basis=&#34;344px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;接著選擇保存恢復檔案的路徑，切記不要把檔案回復到救援的裝置，因為有可能會造成覆寫，結果本來可以救回來的檔案就被弄壞了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_306dfff99252_hu_ea7568f82fbbc7aa.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_306dfff99252_hu_ea7568f82fbbc7aa.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;選擇完畢後，EaseUS Data Recovery Wizard 就會將遺失的檔案複製到你選擇的目錄並開啟。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_8c0566b92fb0_hu_6ff8ee609526d108.png&#34;
    width=&#34;1920&#34;
    height=&#34;1017&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_8c0566b92fb0_hu_6ff8ee609526d108.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;188&#34;
        data-flex-basis=&#34;453px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;如果還無法決定要恢復哪些檔案，也可以選擇匯出掃描結果，之後就可以不用再重新掃描一次。而你離開掃描結果頁面時，如果沒有恢復檔案，系統也會進行提示。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_989f54674808_hu_7ebc03f5e692a546.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_989f54674808_hu_7ebc03f5e692a546.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;下一次開啟 EaseUS Data Recovery Wizard 時，可直接點選右上角按鈕，直接匯入先前的掃描結果。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_93165c38cbcd_hu_f9b7cd32f875d561.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_93165c38cbcd_hu_f9b7cd32f875d561.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;不小心格式化或是分割區無法讀取還能救嗎&#34;&gt;不小心格式化，或是分割區無法讀取，還能救嗎？
&lt;/h2&gt;&lt;p&gt;前面有提到如果不小心格式化，有可能會救不回來。但如果&lt;strong&gt;不是深度格式化，且沒有對硬碟多做寫入的動作&lt;/strong&gt;，資料能救回來的可能性還是很高的。&lt;/p&gt;
&lt;p&gt;這次放一個較大的影片檔，然後將隨身碟快速格式化。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_c795c600753d_hu_8ae4bf8573d35932.png&#34;
    width=&#34;1920&#34;
    height=&#34;1586&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_c795c600753d_hu_8ae4bf8573d35932.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;121&#34;
        data-flex-basis=&#34;290px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;再加碼將整個分割區砍掉，模擬分割區遺失的情況。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_198255384f92_hu_a935e9ab01bec30b.png&#34;
    width=&#34;1920&#34;
    height=&#34;1428&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_198255384f92_hu_a935e9ab01bec30b.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;134&#34;
        data-flex-basis=&#34;322px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;這時候在軟體首頁就可以看到磁碟被標示為遺失的分割。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_0e59f228e07b_hu_33f1502c1c4f057f.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_0e59f228e07b_hu_33f1502c1c4f057f.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;接著進行掃描，通常在表層掃描就可以找到遺失的檔案了。不過這次檔案是出現在**「更多檔案」**這個分頁，因為這個檔案沒有被刪除，而是在格式化的時候被清除，而且原始檔名也不見了，但仍然可以救回來。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4204916185ba_hu_c6e0d3d2da4d2de2.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_4204916185ba_hu_c6e0d3d2da4d2de2.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;深度格式化&#34;&gt;深度格式化
&lt;/h3&gt;&lt;p&gt;現在將隨身碟再度格式化，並且將快速格式化取消，然後進行掃描。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_fade77f1c542_hu_7f4fd776f1995846.png&#34;
    width=&#34;1920&#34;
    height=&#34;1545&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_fade77f1c542_hu_7f4fd776f1995846.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;124&#34;
        data-flex-basis=&#34;298px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;可以看到最後的結果是空空如也，因為深度格式化是破壞性寫入，會將所有區塊覆寫，所以如果是這種情況，可能就需要找資料救援業者了，但是救回來的機率也很小。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_eb9013ad19db_hu_65948aa482a0cab.png&#34;
    width=&#34;1920&#34;
    height=&#34;1344&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_eb9013ad19db_hu_65948aa482a0cab.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;免費版恢復數據量限制&#34;&gt;免費版恢復數據量限制
&lt;/h2&gt;&lt;p&gt;免費版的起始額度為 500 MB，只要分享到 Facebook 或 Twitter，就可以額外獲得 1.5 GB。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_9f741379b123_hu_1ae3cc703c426579.png&#34;
    width=&#34;1920&#34;
    height=&#34;1197&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_9f741379b123_hu_1ae3cc703c426579.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;160&#34;
        data-flex-basis=&#34;385px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;分享完成後，點選右上角選單 -&amp;gt; 關於，就可以看到免費額度提升了 （1.99 GB 是因為前面的步驟已經有消耗掉一點額度）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_3c39559ffd1e_hu_f04edbc2262b122b.png&#34;
    width=&#34;1920&#34;
    height=&#34;1345&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/how-to-use-easeus-data-recovery-wizard-free-to-recovery-data/img_3c39559ffd1e_hu_f04edbc2262b122b.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;142&#34;
        data-flex-basis=&#34;342px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;EaseUS Data Recovery Wizard 的操作流程簡單，介面設計清楚明瞭，這樣的好處是對於大多數使用者來說是非常友善的，不需要事做功課就可以上手這套軟體。經過實測也能確實可以有效救回遺失的資料。而 EaseUS Data Recovery Wizard 也同時推出免費與付費版，免費版的 2 GB 額度也足以評估是否符合需求。如果您需要資料救援，不仿試試 EaseUS Data Recovery Wizard。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;本文由 EaseUS 易我科技贊助&lt;/em&gt;&lt;/p&gt;</description>
        </item>
        <item>
        <title>在 MySQL 指令列模式下不輸入帳號密碼直接登入伺服器</title>
        <link>https://caloskao.org/how-to-use-mysql-command-without-account-and-password/</link>
        <pubDate>Tue, 17 Sep 2019 03:42:54 +0800</pubDate>
        
        <guid>https://caloskao.org/how-to-use-mysql-command-without-account-and-password/</guid>
        <description>&lt;p&gt;在指令列模式下使用 &lt;code&gt;mysql&lt;/code&gt; 指令登入伺服器時，正常情況下需要輸入帳號密碼進行登入，在安全考量上是很合情合理的事情；但是如果頻繁的進行相關作業（例如使用 &lt;code&gt;mysqldump&lt;/code&gt; 個別匯出不同資料庫時），每一次都要輸入帳號密碼，會是一件令人困擾的事情。雖然在複製貼上的方法的情況下參數後面接上帳號與密碼就可以只輸入一次，但這種方式會讓帳號密碼曝光在 process monitor；在這種情況下，我們可以直接在家目錄建立一個 &lt;code&gt;.my.cnf&lt;/code&gt; 檔進行一次性設定，之後無須輸入帳號密碼就可以登入伺服器。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[mysql]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;calos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;password&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;123456&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[mysqldump]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;calos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;password&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;123456&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中，&lt;code&gt;[mysql]&lt;/code&gt; 這一節的設定是用在使用 &lt;code&gt;mysql&lt;/code&gt; 指令，而 &lt;code&gt;[mysqldump]&lt;/code&gt; 則是在使用 &lt;code&gt;mysqldump&lt;/code&gt; 時使用的。更多的設定可以參考 &lt;a class=&#34;link&#34; href=&#34;https://dev.mysql.com/doc/refman/8.0/en/option-files.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MySQL 官方說明文件&lt;/a&gt; 。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果是將設定檔置於多人共用伺服器時，基於安全性考量，建議在作業完成後移除設定檔，或是使用 GnuPG 這類加密工具將設定檔進行加密，需要使用時再進行解密。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://tecadmin.net/mysql-commands-without-password-prompt/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How To Use MySQL Commands without Password Prompt – TecAdmin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dev.mysql.com/doc/refman/8.0/en/option-files.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MySQL :: MySQL 8.0 Reference Manual :: 4.2.2.2 Using Option Files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        <item>
        <title>使用 GnuPG 對檔案加密與解密</title>
        <link>https://caloskao.org/how-to-use-gnupg-encrypt-and-decrypt-files/</link>
        <pubDate>Tue, 17 Sep 2019 03:39:21 +0800</pubDate>
        
        <guid>https://caloskao.org/how-to-use-gnupg-encrypt-and-decrypt-files/</guid>
        <description>&lt;p&gt;使用多人共用的伺服器時不應該將機敏性檔案長置在上面，但是每次需要使用時都要重新上傳的話又有點麻煩。如果需要多次使用機敏性檔案，將檔案加密後供日後使用不失為一個好方法。能夠實現的工具非常多種，這邊使用 &lt;a class=&#34;link&#34; href=&#34;https://gnupg.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GnuPG&lt;/a&gt; 作為例子。&lt;/p&gt;
&lt;h1 id=&#34;安裝&#34;&gt;安裝
&lt;/h1&gt;&lt;p&gt;GnuPG 在 Ubuntu 為預設安裝，如果未安裝的話執行以下安裝指令即可。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install gnupg -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h1 id=&#34;加密&#34;&gt;加密
&lt;/h1&gt;&lt;p&gt;使用 &lt;code&gt;gpg -c&lt;/code&gt; 進行加密，會跳出提示輸入密碼&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 新增一個文字檔
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;echo &amp;#39;caloskao.org&amp;#39; &amp;gt; my-file.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 對文字檔加密
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg -c my-file.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: gpg-agent is not available in this session
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enter passphrase:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;輸入兩次密碼後會產生額外一個加密後的檔案，檔名以 &lt;code&gt;.gpg&lt;/code&gt; 結尾&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-rw-r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; calos calos  &lt;span class=&#34;m&#34;&gt;13&lt;/span&gt; 2019-09-17 11:05:02 my-file.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-rw-r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; calos calos  &lt;span class=&#34;m&#34;&gt;94&lt;/span&gt; 2019-09-17 11:05:12 my-file.txt.gpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h1 id=&#34;解密&#34;&gt;解密
&lt;/h1&gt;&lt;p&gt;使用 &lt;code&gt;gpg -d&lt;/code&gt; 進行解密&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg -d my-file.txt.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: AES encrypted data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: gpg-agent is not available in this session
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enter passphrase:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解密完成後會提示檔案已解密，並顯示解密後的檔案內容&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: encrypted with &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; passphrase
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;caloskao.org
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以搭配參數 &lt;code&gt;-o&lt;/code&gt; 直接將解密後的內容輸出至檔案&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg -o my-file.txt.decryped my-file.txt.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: AES encrypted data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: gpg-agent is not available in this session
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: encrypted with 1 passphrase
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat my-file.txt.decryped
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;caloskao.org
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;參數 &lt;code&gt;-c&lt;/code&gt; 與 &lt;code&gt;-d&lt;/code&gt; 為 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Symmetric-key_algorithm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;對稱式加解密&lt;/a&gt;，如需追求更強的加密強度，請使用 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Public-key_cryptography&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;非對稱式加密&lt;/a&gt;（亦稱為公開金鑰加密）。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://gnupg.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The GNU Privacy Guard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.gtwang.org/linux/how-to-encrypt-data-in-linux-using-gpg-and-open-ssl/2/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;使用 OpenSSL 或 GnuPG 加密檔案與目錄，用密碼上鎖保護機密資料 - G. T. Wang&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        <item>
        <title>WSL Ubuntu 透過 APT 安裝軟體時出現 IPC connect call failed 與 NO_PUBKEY</title>
        <link>https://caloskao.org/ipc-connect-call-failed-and-no_pubkey-appear-when-wsl-ubuntu-installs-software-via-apt/</link>
        <pubDate>Fri, 21 Jun 2019 04:34:52 +0800</pubDate>
        
        <guid>https://caloskao.org/ipc-connect-call-failed-and-no_pubkey-appear-when-wsl-ubuntu-installs-software-via-apt/</guid>
        <description>&lt;p&gt;安裝 MariaDB 時，官方貼心的提供了一個 &lt;a class=&#34;link&#34; href=&#34;https://downloads.mariadb.org/mariadb/repositories/&#34;  title=&#34;Repository&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Repository Configuration Tool&lt;/a&gt;，可以選好自己的作業系統與想要安裝的發行版後產生相對應的指令碼，直接複製貼上就可以透過套件管理員進行安裝。 這兩天在摸索 &lt;a class=&#34;link&#34; href=&#34;https://docs.microsoft.com/windows/wsl&#34;  title=&#34;Windows&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WSL (Windows Subsystem Linux&lt;/a&gt;)，使用的發行版是 Ubuntu，而今天在 WLS 內安裝 MariaDB 10.4 時卻出現一些錯誤：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;get&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;software&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;properties&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;common&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Reading&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Building&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dependency&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;tree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Reading&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;state&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;information&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;software&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;properties&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;common&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;already&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;newest&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.96.24.32.9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;following&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;packages&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;were&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;automatically&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;are&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;longer&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;required&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;gyp&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;javascript&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;common&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libhttp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;parser2&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;.7.1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;inherits&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;jquery&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;underscore&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libuv1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dev&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;nodejs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;doc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Use&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;autoremove&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;remove&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;them&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;upgraded&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;newly&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;remove&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;21&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;upgraded&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;adv&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;keys&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;keyserver&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hkp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//keyserver.ubuntu.com:80 0xF1656F24C74CD1D8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Executing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gpghome&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;jVRLtzEDLC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gpg&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sh&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;keys&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;keyserver&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hkp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//keyserver.ubuntu.com:80 0xF1656F24C74CD1D8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;gpg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;connecting&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dirmngr&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gpghome&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;jVRLtzEDLC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;S&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dirmngr&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;failed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;IPC&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;connect&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;call&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;failed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;gpg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;keyserver&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;receive&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;failed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;No&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dirmngr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;repository&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;deb&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;amd64&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arm64&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ppc64el&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic main&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//free.nchc.org.tw/ubuntu bionic InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//free.nchc.org.tw/ubuntu bionic-updates InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease [3901 B]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//deb.nodesource.com/node_10.x bionic InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//security.ubuntu.com/ubuntu bionic-security InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Err&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;following&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;signatures&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;couldn&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;verified&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;because&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;available&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;NO_PUBKEY&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;F1656F24C74CD1D8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Reading&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;W&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;GPG&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease: The following signatures couldn&amp;#39;t be verified because the public key is not available: NO_PUBKEY F1656F24C74CD1D8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;E&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;repository&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease&amp;#39; is not signed.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;N&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Updating&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;such&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;repository&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;can&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;done&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;securely&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;therefore&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;disabled&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;N&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;See&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;secure&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;manpage&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;repository&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;creation&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;configuration&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;details&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;有兩個關鍵字：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;IPC connect call failed&lt;/code&gt; (Line 12)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NO_PUBKEY&lt;/code&gt; (Line 25)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;找了一下，發現是 &lt;a class=&#34;link&#34; href=&#34;https://github.com/Microsoft/WSL/issues/3286&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WSL 自己的問題&lt;/a&gt;，跟 Ubuntu 沒有太大的關係；&lt;a class=&#34;link&#34; href=&#34;https://github.com/Microsoft/WSL/issues/3286#issuecomment-395980867&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;開發者 Ghost&lt;/a&gt; 表示是 WSL 下的 Ubuntu Bionic 第一版的問題，改用 &lt;code&gt;curl&lt;/code&gt; 去把 key 抓下來後透過 &lt;code&gt;sudo apt-key add&lt;/code&gt; 就可以解決：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It&amp;rsquo;s Bugging Since The First Bionics in wsl. But the temporary to pass this problems is using apt-key add instead adv options through wget or curl : &lt;code&gt;curl -sL http://keyserver.ubuntu.com/pks/lookup?op=get&amp;amp;search=0xA6A19B38D3D831EF | sudo apt-key add&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但是在 issue closed 後隔沒幾天有&lt;a class=&#34;link&#34; href=&#34;https://github.com/Microsoft/WSL/issues/3286#issuecomment-396653804&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;其他人表示&lt;/a&gt;說問題依然存在，並沒有被解決，最後發現只是各個軟體的 key 不一樣而已，&lt;a class=&#34;link&#34; href=&#34;https://github.com/Microsoft/WSL/issues/3286#issuecomment-402594992&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;開發者 foxliu&lt;/a&gt; 提醒依照安裝軟體的不同，要自己更換 key，以 MariaDB 來說，官方提供的 key 為 &lt;code&gt;0xF1656F24C74CD1D8&lt;/code&gt;, 所以把指令改成這樣就好：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -sL http://keyserver.ubuntu.com/pks/lookup?op&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;get&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;search&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0xF1656F24C74CD1D8 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo apt-key add
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最後重新執行一次 &lt;code&gt;sudo apt update&lt;/code&gt;，就可以把套件資訊抓回來了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;update&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//free.nchc.org.tw/ubuntu bionic InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//free.nchc.org.tw/ubuntu bionic-updates InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//deb.nodesource.com/node_10.x bionic InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease [3901 B]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Hit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//security.ubuntu.com/ubuntu bionic-security InRelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic/main arm64 Packages [7787 B]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic/main amd64 Packages [8008 B]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic/main ppc64el Packages [7793 B]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Fetched&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;27.5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;kB&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6549&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Reading&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Building&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dependency&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;tree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Reading&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;state&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;information&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;packages&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;can&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;upgraded&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Run&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;apt&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;upgradable&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;see&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;them&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;檢查一下套件資訊：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;apt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;show&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mariadb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mariadb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;10.4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;maria&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bionic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Priority&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Section&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;database&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mariadb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;10.4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Maintainer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MariaDB&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Developers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;maria&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;developers&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;launchpad&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Installed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;10.2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Depends&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mariadb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;10.4&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;10.4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;maria&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bionic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Homepage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mariadb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Download&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3180&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;APT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sources&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ftp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mirror&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mariadb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;repo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;10.4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bionic&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;amd64&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Packages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MariaDB&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;database&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;metapackage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;depending&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;latest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;This&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;an&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;empty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;that&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;depends&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;best&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;mariadb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mariadb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;10.4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;determined&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MariaDB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;maintainers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;this&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;doubt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;about&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;which&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MariaDB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;you&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;need&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;That&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;will&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recommended&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;maintainers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;MariaDB&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stable&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;multi&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;multi&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;threaded&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SQL&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;database&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SQL&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Structured&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Query&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Language&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;most&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;popular&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;database&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;language&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;world&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;goals&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MariaDB&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;are&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;speed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;robustness&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;nb&#34;&gt;ease&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;use&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;N&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;There&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;are&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;additional&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;records&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Please&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;use&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;-a&amp;#39;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;switch&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;see&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;them&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果安裝其他套件時出現類似的錯誤，把 key 替換應該都能解決。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Microsoft/WSL/issues/3286&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu 18.04 gpg dirmngr IPC connect call failed #3286&lt;/a&gt;&lt;/p&gt;</description>
        </item>
        <item>
        <title>GIT 遺失 commit 後的恢復方法</title>
        <link>https://caloskao.org/git-recovery-lost-commit/</link>
        <pubDate>Mon, 27 May 2019 07:20:23 +0800</pubDate>
        
        <guid>https://caloskao.org/git-recovery-lost-commit/</guid>
        <description>&lt;p&gt;Git 可透過 &lt;code&gt;reset&lt;/code&gt; 或 &lt;code&gt;revert&lt;/code&gt; 來恢復前一個版本，在 commit 沒有 push 之前的話我通常都會使用 &lt;code&gt;reset&lt;/code&gt; 來進行，而這次因為操作不熟悉而造成還沒 push 的 commit 遺失了，這時候要怎麼恢復?&lt;/p&gt;
&lt;h1 id=&#34;git-會把所有的操作紀錄都保留下來&#34;&gt;Git 會把所有的操作紀錄都保留下來
&lt;/h1&gt;&lt;p&gt;Git 所有的操作都是在原先的紀錄上做修改，而且所有的紀錄都會留存下來。換句話說，你不管進行任何一種操作，Git 都有辦法讓你進行回滾。&lt;/p&gt;
&lt;p&gt;執行 &lt;code&gt;git reflog&lt;/code&gt; 即可看到所有操作紀錄&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git reflog
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9688fed HEAD@{0}: reset: moving to 9688fed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9688fed HEAD@{1}: reset: moving to HEAD
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9688fed HEAD@{2}: reset: moving to HEAD^1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;912851c (origin/develop, develop) HEAD@{3}: reset: moving to HEAD^1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;※你可以加上參數 &lt;code&gt;--stat&lt;/code&gt; 顯示異動的檔案。可支援的參數很多，如果想要獲得其他資訊，可以讀一下官方文件。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;恢復被刪除的-commit&#34;&gt;恢復被刪除的 commit
&lt;/h1&gt;&lt;p&gt;使用 &lt;code&gt;git reset --hard &amp;lt;commit-id|HEAD&amp;gt;&lt;/code&gt; 可以將分支重設為指定的 commit 或是 HEAD（預設為最近一次的 commit）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：如果當下有未儲存的異動要先處理掉，不然會消失。（建議先用 &lt;code&gt;git stash&lt;/code&gt; 先暫存起來）&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在 &lt;code&gt;git reflog&lt;/code&gt; 找到你想恢復的 commit id 後，執行下列指令即可恢復：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git reset --hard 551c724
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HEAD is now at 551c724 tmp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;https://www.jianshu.com/p/8b4c95677ee0&#34;  title=&#34;找回Git中丢失的Commit - 简书&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;找回Git中丢失的Commit - 简书&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>Refused to apply style from &#39;style.css&#39; because its MIME type (&#39;text/html&#39;) is not a supported stylesheet MIME type, and strict MIME checking is enabled.</title>
        <link>https://caloskao.org/refused-to-apply-style-from-style-css-because-its-mime-type-text-html-is-not-a-supported-stylesheet-mime-type-and-strict-mime-checking-is-enabled/</link>
        <pubDate>Wed, 01 May 2019 09:32:02 +0800</pubDate>
        
        <guid>https://caloskao.org/refused-to-apply-style-from-style-css-because-its-mime-type-text-html-is-not-a-supported-stylesheet-mime-type-and-strict-mime-checking-is-enabled/</guid>
        <description>&lt;p&gt;今天把 Laravel 專案放到新建的 server 跑，出現了這個錯誤：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Refused to apply style from &amp;lsquo;&lt;a class=&#34;link&#34; href=&#34;http://localhost:8080/assets/styles/style.css&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:8080/assets/styles/style.css&lt;/a&gt;&amp;rsquo; because its MIME type (&amp;rsquo;text/html&amp;rsquo;) is not a supported stylesheet MIME type, and strict MIME checking is enabled.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;找了很久都沒有找到原因，同時伴隨著部分頁面會出現 404。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/questions/48248832/stylesheet-not-loaded-because-of-mime-type&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stackoverflow 這篇&lt;/a&gt;講了很多，但實際上我遇到的倒沒有這麼複雜，而且也不是因為因為 lib 引起的問題，最後在&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/a/22757991/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這篇&lt;/a&gt;找到解答，原來我只是忘記設定 Apache 的 &lt;code&gt;Allow Override&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-apacheconf&#34; data-lang=&#34;apacheconf&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/var/www/sitefolder/public&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ServerName&lt;/span&gt; site.domain.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;Directory&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/var/www/sitefolder/public&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;AllowOverride&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;All&lt;/span&gt; # 加上這行就可以了
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;Allow&lt;/span&gt; from &lt;span class=&#34;k&#34;&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;Options&lt;/span&gt; +Indexes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最後執行 &lt;code&gt;sudo systemctl reload apache2&lt;/code&gt; 就正常了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/questions/48248832/stylesheet-not-loaded-because-of-mime-type&#34;  title=&#34;html - Stylesheet not loaded because of MIME-type - Stack Overflow&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html - Stylesheet not loaded because of MIME-type - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/questions/22757749/laravel-redirects-to-a-route-but-then-apache-gives-404-error&#34;  title=&#34;php - Laravel redirects to a route but then apache gives 404 error - Stack Overflow&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;php - Laravel redirects to a route but then apache gives 404 error - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>SQL 語法中的「不等於」應使用「&lt;&gt;」還是「!=」?</title>
        <link>https://caloskao.org/should-we-use-less-greater-symbol-or-exclamation-mark-for-not-equal-in-the-sql/</link>
        <pubDate>Wed, 01 May 2019 02:07:04 +0800</pubDate>
        
        <guid>https://caloskao.org/should-we-use-less-greater-symbol-or-exclamation-mark-for-not-equal-in-the-sql/</guid>
        <description>&lt;p&gt;大部分軟體開發者都至少會使用過一種以上的資料庫系統，我們在程式內寫判斷式時，如果運算子是使用「不等於（Not equal）」時，通常都是用 &lt;code&gt;!=&lt;/code&gt; 表示。在 SQL 中雖然也可以使用 &lt;code&gt;!=&lt;/code&gt; 表示，但實際上 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/SQL-92&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ANSI SQL-92&lt;/a&gt; 標準中使用的是以 &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt; 表示。&lt;/p&gt;
&lt;p&gt;實際上在工作方式、效能或其他方面都沒有差異，唯一有差異的只有語法上的不同而已。&lt;/p&gt;
&lt;p&gt;那麼問題來了，應該使用哪一種語法表示才比較好？&lt;/p&gt;
&lt;p&gt;以技術層面來說，其實兩者都沒問題，端看個人喜好即可，因為大部分資料系統都支援這兩種表示法，而僅支援 ANSI SQL-92 的資料庫系統幾乎已經停止維護。&lt;/p&gt;
&lt;p&gt;以下資料庫系統同時支援 &lt;code&gt;!=&lt;/code&gt; 與 &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MySQL 5.1: &lt;a class=&#34;link&#34; href=&#34;http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html#operator_not-equal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PostgreSQL 8.3: &lt;a class=&#34;link&#34; href=&#34;http://www.postgresql.org/docs/current/static/functions-comparison.html#FUNCTIONS-COMPARISON-TABLE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SQLite: &lt;a class=&#34;link&#34; href=&#34;http://www.sqlite.org/lang_expr.html#binaryops&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Oracle 10g: &lt;a class=&#34;link&#34; href=&#34;http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/conditions002.htm#CJAGAABC&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server 2000/2005/2008/2012/2016: &lt;a class=&#34;link&#34; href=&#34;http://msdn.microsoft.com/en-us/library/ms190296.aspx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt;&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;http://msdn.microsoft.com/en-us/library/ms176020.aspx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;IBM Informix Dynamic Server 10: &lt;a class=&#34;link&#34; href=&#34;http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqlt.doc/sqltmst46.htm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;InterBase/Firebird: &lt;a class=&#34;link&#34; href=&#34;http://www.ibphoenix.com/main.nfs?a=ibphoenix&amp;amp;s=1239054922:316459&amp;amp;page=ibp_60_sqlref&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apache Derby 10.6: &lt;a class=&#34;link&#34; href=&#34;http://db.apache.org/derby/docs/10.6/ref/rrefsqlj23075.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sybase Adaptive Server Enterprise 11.0: &lt;a class=&#34;link&#34; href=&#34;http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.sqlanywhere.11.0.0/dbreference_en11/coco.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;!=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下資料庫系統&lt;strong&gt;只支援 ANSI SQL-92 標準&lt;/strong&gt;（&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IBM DB2 UDB 9.5: &lt;a class=&#34;link&#34; href=&#34;http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/db2/rbafzmstch2pred.htm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft Access 2010: &lt;a class=&#34;link&#34; href=&#34;http://office.microsoft.com/en-us/access-help/table-of-operators-HA010235862.aspx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/questions/723195/should-i-use-or-for-not-equal-in-t-sql&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sql server - Should I use != or &amp;lt;&amp;gt; for not equal in T-SQL? - Stack Overflow&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>/etc/netplan/50-cloud-init.yaml not found</title>
        <link>https://caloskao.org/etc-netplan-50-cloud-init-yaml-not-found/</link>
        <pubDate>Fri, 26 Apr 2019 03:43:44 +0800</pubDate>
        
        <guid>https://caloskao.org/etc-netplan-50-cloud-init-yaml-not-found/</guid>
        <description>&lt;h1 id=&#34;前言&#34;&gt;前言
&lt;/h1&gt;&lt;p&gt;以前 Ubuntu 修改網路卡設定時大部分都是透過修改 &lt;code&gt;/etc/network/interfaces&lt;/code&gt; 後執行 &lt;code&gt;ifdownup&lt;/code&gt; 即可，Ubuntu 自 17.10 版後將預設的網路卡管理工具變更為 &lt;a class=&#34;link&#34; href=&#34;https://netplan.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Netplan&lt;/a&gt;，設定檔內容採用 YAML 格式進行設定，風格上其實並沒有差太多，轉換過程中沒有什麼太大的問題，如果需要開發自動化管理系統，有 Netplan 的話應該是可以省下一些時間，Netplan 的導入個人是樂見其成。&lt;/p&gt;
&lt;h1 id=&#34;系統升級後設定檔遺失&#34;&gt;系統升級後設定檔遺失
&lt;/h1&gt;&lt;p&gt;今天在工作時將一台 Ubuntu Server 從 16.04 升級到 18.04 後發現無法連線，估計是升級時不小心全部覆蓋，而系統升級後將舊的網路卡管理套件直接幹掉並切換到 Netplan，記得先前升級其他台 server 時系統會保留舊的設定，並不會自動切換過去，其實也還好就重新設定，但是系統有把 &lt;code&gt;/etc/netplan&lt;/code&gt; 建好了，但是並沒有出現預設的 &lt;code&gt;50-cloud-init.yaml&lt;/code&gt; 設定檔。&lt;/p&gt;
&lt;h1 id=&#34;解決方式&#34;&gt;解決方式
&lt;/h1&gt;&lt;p&gt;把關鍵字餵狗後竟然找不到相關的文章（教學倒是一堆），除了照著網路上的範例設定照著 key 之外，還有一個方法可以嘗試。大部分套件在安裝時一定會有說明文件一同安裝進系統，透過 &lt;code&gt;dpkg -L {套件名稱}&lt;/code&gt; 可以列出與套件有關的所有目錄與檔案路徑。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;dpkg -L netplan.io&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/etc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/etc/netplan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/lib
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/lib/netplan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/lib/netplan/generate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/lib/systemd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/lib/systemd/system
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/lib/systemd/system/netplan-wpa@.service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/lib/systemd/system-generators
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/sbin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/bash-completion
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/bash-completion/completions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/bash-completion/completions/netplan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/changelog.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/copyright
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/bonding.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/bonding_router.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/bridge.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/bridge_vlan.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/dhcp.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/direct_connect_gateway.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/loopback_interface.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/network_manager.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/source_routing.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/static.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/static_multiaddress.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/static_singlenic_multiip_multigateway.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/vlan.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/windows_dhcp_server.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/examples/wireless.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/doc/netplan.io/netplan.html
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/man
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/man/man5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/man/man5/netplan.5.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/man/man8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/man/man8/netplan-apply.8.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/man/man8/netplan-generate.8.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/man/man8/netplan-try.8.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/__init__.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/__init__.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/commands
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/commands/__init__.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/commands/apply.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/commands/generate.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/commands/ip.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/commands/migrate.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/commands/try_command.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/core.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/cli/utils.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/configmanager.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan/terminal.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/share/netplan/netplan.script
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/lib/systemd/system-generators/netplan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/sbin/netplan
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以看到在 &lt;code&gt;/usr/share/doc/netplan.io/examples/&lt;/code&gt; 下有範例設定檔，直接 copy 一份比較符合需求的設定檔到 &lt;code&gt;/etc/netplan&lt;/code&gt; 並修改即可。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo cp /usr/share/doc/netplan.io/examples/static.yaml /etc/netplan/50-cloud-init.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;記得先查詢你的網路卡介面名稱，然後修改範例設定檔中的網路卡名稱。查詢方式有三種&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ip a&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 127.0.0.1/8 scope host lo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 ::1/128 scope host
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft forever preferred_lft forever
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2: ens160:  mtu 1500 qdisc mq state UP group default qlen 1000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/ether 00:0c:29:16:d4:1b brd ff:ff:ff:ff:ff:ff
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;networkctl&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;IDX LINK             TYPE               OPERATIONAL SETUP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  1 lo               loopback           n/a         unmanaged
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  2 ens160           ether              n/a         unmanaged
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ifconfig -a&lt;/code&gt; 最廣為人知的指令，如果是舊系統升級應該都還可以使用，但如果是全新安裝的 Ubuntu 18 預設是沒有自帶的，這點需要注意。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ens160: flags=4098  mtu 1500
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ether 00:0c:29:16:d4:1b  txqueuelen 1000  (Ethernet)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        RX packets 0  bytes 0 (0.0 B)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        RX errors 0  dropped 0  overruns 0  frame 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        TX packets 0  bytes 0 (0.0 B)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lo: flags=73  mtu 65536
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        inet 127.0.0.1  netmask 255.0.0.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        inet6 ::1  prefixlen 128  scopeid 0x10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        loop  txqueuelen 1000  (Local Loopback)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        RX packets 416  bytes 26296 (26.2 KB)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        RX errors 0  dropped 0  overruns 0  frame 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        TX packets 416  bytes 26296 (26.2 KB)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;改完後大概像這樣&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;network&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;renderer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;networkd&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ethernets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ens160&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;addresses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;192.168.2.160&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/24&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;gateway4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;192.168.2.1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;nameservers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;addresses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1.1.1.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8.8.8.8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最後執行 &lt;code&gt;sudo netplan apply&lt;/code&gt; 套用即可。&lt;/p&gt;</description>
        </item>
        <item>
        <title>讓 Visual Studio Code 在關閉工作區時保留未儲存的檔案</title>
        <link>https://caloskao.org/visual-studio-code-keep-unsaved-files-when-close-workspace/</link>
        <pubDate>Thu, 18 Apr 2019 06:02:40 +0800</pubDate>
        
        <guid>https://caloskao.org/visual-studio-code-keep-unsaved-files-when-close-workspace/</guid>
        <description>&lt;p&gt;Visual Studio Code 在預設情況下，關閉工作區時如果有未儲存的檔案，就會詢問要不要儲存，而沒辦法暫存起來於下次開啟時載入（Sublime Text 預設是可以的）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_6bffdcb62f96_hu_fac2bcfb014c698d.png&#34;
    width=&#34;1920&#34;
    height=&#34;865&#34;
    srcset=&#34;https://caloskao.org/post/img_6bffdcb62f96_hu_fac2bcfb014c698d.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;222&#34;
        data-flex-basis=&#34;533px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;其實 Visual Studio Code 也支援，只是預設值為在關閉整個 Visual Studio Code 才會有用，如果要支援關閉工作區的話，將 &lt;code&gt;files.hotExit&lt;/code&gt; 這個設定值修改為 &lt;code&gt;onExitAndWindowClose&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_85ea24fc960e_hu_a6360b32bea1739c.png&#34;
    width=&#34;1920&#34;
    height=&#34;895&#34;
    srcset=&#34;https://caloskao.org/post/img_85ea24fc960e_hu_a6360b32bea1739c.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;214&#34;
        data-flex-basis=&#34;514px&#34;
    
&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/a/48482272/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vscode settings - How to keep unsaved file into vs code workspace? - Stack Overflow&lt;/a&gt;&lt;/p&gt;</description>
        </item>
        <item>
        <title>[Git] 將檔案加到上一次的 commit</title>
        <link>https://caloskao.org/git-add-files-to-last-commit/</link>
        <pubDate>Thu, 03 Jan 2019 01:52:33 +0800</pubDate>
        
        <guid>https://caloskao.org/git-add-files-to-last-commit/</guid>
        <description>&lt;p&gt;使用 git 的開發者大部分都知道如果要修正上一次的 commit message 只要執行 &lt;code&gt;git commit --amend&lt;/code&gt; 就可以了，但是如果是不小心漏掉某些需要一併 commit 的檔案，也可以透過 &lt;code&gt;git commit --amend&lt;/code&gt; 將檔案補進去。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add file-1 file-2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit --amend -m &lt;span class=&#34;s1&#34;&gt;&amp;#39;New commit message&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果不修改 commit message，可以增加 &lt;code&gt;--no-edit&lt;/code&gt; 參數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit --amend --no-edit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;http://blog.jobbole.com/114551/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;学会这两件事，让你成为 Git 老司机 - 文章 - 伯乐在线&lt;/a&gt;&lt;/p&gt;</description>
        </item>
        <item>
        <title>TCP BBR 壅塞控制演算法</title>
        <link>https://caloskao.org/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/</link>
        <pubDate>Tue, 18 Dec 2018 04:33:34 +0800</pubDate>
        
        <guid>https://caloskao.org/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/</guid>
        <description>&lt;p&gt;繼 google.com 與 YouTube 之後，Google 宣布其雲端平台將一併使用新演算法 TCP BBR。相對於目前的演算法，在 10Gb 的網路頻寬下，網路傳輸率最高可提升 2700 倍。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_afe17088b963_hu_9d75220ac666df5a.gif&#34;
    width=&#34;1920&#34;
    height=&#34;960&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_afe17088b963_hu_9d75220ac666df5a.gif 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;200&#34;
        data-flex-basis=&#34;480px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;（圖片來源：&lt;a class=&#34;link&#34; href=&#34;https://cloud.google.com/blog/products/gcp/tcp-bbr-congestion-control-comes-to-gcp-your-internet-just-got-faster&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Cloud Platform Blog&lt;/a&gt;）&lt;/p&gt;
&lt;h2 id=&#34;什麼是-tcp-bbr&#34;&gt;什麼是 TCP BBR？
&lt;/h2&gt;&lt;p&gt;TCP BBR 的全名為 TCP Bottleneck Bandwidth and Round-trip propagation time，是 Google 在 2017 年所提出的新型 TCP 壅塞控制演算法，在具有連網能力的電腦或行動裝置中運行，可決定資料傳輸的速度，目的在於解決網路壅塞問題。在 TCP BBR 問世前，TCP/IP 的演算法大多都是先觀測傳輸時封包是否有丟失狀況，如果有丟失則判定此為網路壅塞，而處理方式是全面降速，直到丟失的封包成功傳送為止。此舉會導致緩衝區不斷擴大，在傳輸大量資料時速度越來越慢、最後卡死。&lt;/p&gt;
&lt;p&gt;而 BBR 主要是估計頻寬和延遲狀況，透過不斷偵測封包傳輸的錯誤率，根據總傳輸量和錯誤量的比例來決定要以多大的頻寬傳輸，降低緩衝區堵塞的狀況，進而提高傳輸速度。Google 將 BBR 應用在 YouTube 上，使全球網路平均傳輸量提升 4%，最高更達到 14%，封包往返時間減少約 33%，重新緩衝平均時間增加約 11%。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_7dfdfc545dfa_hu_f11e1b364d1fd767.png&#34;
    width=&#34;1920&#34;
    height=&#34;1146&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_7dfdfc545dfa_hu_f11e1b364d1fd767.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;167&#34;
        data-flex-basis=&#34;402px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;各國 Youtube 影音服務使用 TCP BBR 壅塞控制演算法後提升的網路吞吐量比較（圖片來源：&lt;a class=&#34;link&#34; href=&#34;https://cloud.google.com/blog/products/gcp/tcp-bbr-congestion-control-comes-to-gcp-your-internet-just-got-faster&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Cloud Platform Blog&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_59a6bea3acf0_hu_9b329f32f578b460.png&#34;
    width=&#34;1920&#34;
    height=&#34;1195&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_59a6bea3acf0_hu_9b329f32f578b460.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;160&#34;
        data-flex-basis=&#34;385px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;各國 Youtube 影音服務使用 TCP BBR 壅塞控制演算法後提升的重新緩衝時間比較（圖片來源：&lt;a class=&#34;link&#34; href=&#34;https://cloud.google.com/blog/products/gcp/tcp-bbr-congestion-control-comes-to-gcp-your-internet-just-got-faster&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Cloud Platform Blog&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_2f97cc0c7c47_hu_23f068d84809ff2a.png&#34;
    width=&#34;1920&#34;
    height=&#34;1194&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_2f97cc0c7c47_hu_23f068d84809ff2a.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;160&#34;
        data-flex-basis=&#34;385px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;各國 Youtube 影音服務使用 BBR 壅塞控制演算法後降低的封包往返時間比較（圖片來源：&lt;a class=&#34;link&#34; href=&#34;https://cloud.google.com/blog/products/gcp/tcp-bbr-congestion-control-comes-to-gcp-your-internet-just-got-faster&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Cloud Platform Blog&lt;/a&gt;）&lt;/p&gt;
&lt;h2 id=&#34;如何使用-tcp-bbr&#34;&gt;如何使用 TCP BBR？
&lt;/h2&gt;&lt;p&gt;目前 TCP BBR 已整合進 Linux Kernel 4.9 以後的版本，所有基於 Linux 核心的發行版本只要透過更新 Linux Kernel 後即可使用。&lt;/p&gt;
&lt;p&gt;輸入指令 &lt;code&gt;uname -srm&lt;/code&gt;，查詢 Linux 核心版本是否高於 4.9。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -srm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Linux 4.15.0-22-generic x86_64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;輸入指令&lt;code&gt;lsmod | grep bbr&lt;/code&gt;，如果輸出結果沒有 &lt;code&gt;tcp_bbr&lt;/code&gt; 的話，執行下面的指令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;modprobe tcp_bbr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tcp_bbr&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/modules-load.d/modules.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;net.core.default_qdisc=fq&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;net.ipv4.tcp_congestion_control=bbr&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl -p
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net.core.default_qdisc &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; fq
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net.ipv4.tcp_congestion_control &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; bbr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行下面兩行指令，且執行結果都有顯示 tcp_bbr 時代表 BBR 已啟動。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl net.ipv4.tcp_available_congestion_control
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net.ipv4.tcp_available_congestion_control &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; reno cubic bbr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl net.ipv4.tcp_congestion_control
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net.ipv4.tcp_congestion_control &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; bbr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;實機測試&#34;&gt;實機測試
&lt;/h2&gt;&lt;p&gt;這裡使用 DigitalOcean VPS 建立兩台 Ubuntu 18.04（Linux Kernel: 4.15），將TCP 壅塞控制演算法分別設為 BBR 與 CUBIC 來進行檔案傳輸測試。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Platform: DigitalOcean Cloud VPS (2 Hosts)&lt;br&gt;
Datacenter region: Singapore&lt;br&gt;
CPU: Intel Xeon E5-2650 v4 @ 2.20GHz (1C2T)&lt;br&gt;
RAM: 2GB&lt;br&gt;
Storage: 25GB SSD&lt;br&gt;
OS: Ubuntu 18.04 LTS x64&lt;br&gt;
Linux Kernel Version: 4.15.0-22-generic&lt;br&gt;
HTTP Server: Apache HTTP Server 2.4.29&lt;br&gt;
TCP Congestion Method: BBR, CUBIC&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Client&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CPU: Intel Core i5-3230M @ 2.60GHz (2C4T)&lt;br&gt;
RAM: 4GB&lt;br&gt;
OS: Ubuntu 16.04 LTS x64&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;icmp-ping&#34;&gt;ICMP Ping
&lt;/h3&gt;&lt;p&gt;除了第 150 ~ 250 回測試時 LAN 似乎有點小狀況，其餘時段並沒有太大的差異。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_f8317f10883e_hu_bad3a61d42ca5b0e.png&#34;
    width=&#34;1920&#34;
    height=&#34;1107&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_f8317f10883e_hu_bad3a61d42ca5b0e.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;173&#34;
        data-flex-basis=&#34;416px&#34;
    
&gt;
&lt;/p&gt;
&lt;h3 id=&#34;http-download-test&#34;&gt;HTTP Download Test
&lt;/h3&gt;&lt;p&gt;傳輸速度方面所有時段幾乎是有提升的，最佳情況下可以提升約 80%。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_f3ffbaf26c50_hu_b1c2e84326300e16.png&#34;
    width=&#34;1920&#34;
    height=&#34;1106&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_f3ffbaf26c50_hu_b1c2e84326300e16.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;173&#34;
        data-flex-basis=&#34;416px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;下圖總結一下平均表現，ICMP Ping 平均只差 1.02 ms，而下行速度平均差 52.02 Mbps（約 55.49%）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_af04b698b10e_hu_b1782de35cb1080f.png&#34;
    width=&#34;1920&#34;
    height=&#34;1102&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/tcp-bottleneck-bandwidth-and-round-trip-propagation-time/img_af04b698b10e_hu_b1782de35cb1080f.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;174&#34;
        data-flex-basis=&#34;418px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;後記&#34;&gt;後記
&lt;/h2&gt;&lt;p&gt;TCP BBR 不光是帶來顯著的速度提升，重要的是僅需要透過內核升級即可使用，完全不用更動現有網路架構，若系統不需要使用特定內核版本，幾乎等於無痛升級！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cloud.google.com/blog/products/gcp/tcp-bbr-congestion-control-comes-to-gcp-your-internet-just-got-faster&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TCP BBR congestion control comes to GCP – your Internet just got faster | Google Cloud Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://xiaozhou.net/enable-bbr-for-vps-2017-06-10.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;为VPS开启BBR拥塞控制算法 | iTimothy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://my.oschina.net/piorcn/blog/806990&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google&amp;rsquo;s BBR拥塞控制算法模型解析 - pior的个人空间 - 开源中国&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://shazi.info/ubuntu-16-04-%E7%94%A8-speedtest-cli-%E6%B8%AC%E8%A9%A6-tcp-bbr-%E6%95%88%E8%83%BD/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu 16.04 用 speedtest-cli 測試 TCP BBR 效能 | Mr. 沙先生&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>SSH 連線警示「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」</title>
        <link>https://caloskao.org/ssh-warning-remote-host-identification-has-changed/</link>
        <pubDate>Wed, 31 Oct 2018 03:50:34 +0800</pubDate>
        
        <guid>https://caloskao.org/ssh-warning-remote-host-identification-has-changed/</guid>
        <description>&lt;p&gt;偶爾會碰到這種錯誤，但是每次都會忘記怎麼用指令去解決，又不喜歡修改 &lt;code&gt;~/.ssh/known_hosts&lt;/code&gt;，記錄一下解決方式 &lt;/p&gt;
&lt;p&gt;在透過 SSH 連線目標主機時，如果是第一次連線，會出現以下訊息，詢問是否要繼續連線：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The authenticity of host &amp;#39;x230.ttc.caloskao.org (10.10.3.68)&amp;#39; can&amp;#39;t be established.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ECDSA key fingerprint is SHA256:OhTNCCfw+ymd0iRXL/ZEwU9q/uJCNRKHu534yuJCxQI.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Are you sure you want to continue connecting (yes/no)?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;預設情況下，SSH 在和目標主機進行交涉時，目標主機會傳送 public key fingerprint 給 client 進行比對，這個動作是防禦 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Man-in-the-middle_attack&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;中間人攻擊 (MITM)&lt;/a&gt; 的一種手段。第一次連線時因為 client 並沒有先前的 public key 記錄，所以就會出現這樣的訊息。輸入 yes 後，便會將 public key 儲存在 &lt;code&gt;~/.ssh/known_hosts&lt;/code&gt;，並繼續進行驗證。下一次連線時，就會知道這台主機已經驗證過身份，可以直接跳到 client 身份驗證的步驟。&lt;/p&gt;
&lt;p&gt;如果主機重灌系統、有人進行中間人攻擊或是其它原因，使目標主機的公鑰發生變化，會出現以下訊息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Someone could be eavesdropping on you right now (man-in-the-middle attack)!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;It is also possible that a host key has just been changed.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The fingerprint for the ECDSA key sent by the remote host is
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SHA256:OhTNCCfw+ymd0iRXL/ZEwU9q/uJCNRKHu534yuJCxQI.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please contact your system administrator.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add correct host key in /home/Calos/.ssh/known_hosts to get rid of this message.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Offending ECDSA key in /home/Calos/.ssh/known_hosts:52
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ECDSA host key for 10.0.0.16 has changed and you have requested strict checking.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Host key verification failed.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;基於安全考量下，SSH 會直接終止連線。&lt;/p&gt;
&lt;p&gt;在排除安全性疑慮後，我們需要更新 public key，才可以連線到目標主機。使用 &lt;code&gt;ssh-keygen&lt;/code&gt; 移除舊的 public key，之後重新走一次認證流程就行了。（舊的 public key 會被轉存到 &lt;code&gt;~/.ssh/known_hosts.old&lt;/code&gt;）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-keygen -R 10.0.0.16
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Host 10.0.0.16 found: line 52
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/home/Calos/.ssh/known_hosts updated.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Original contents retained as /home/Calos/.ssh/known_hosts.old
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;直接透過文字編輯器修改 &lt;code&gt;~/.ssh/known_hosts&lt;/code&gt;，或是整個砍掉也不是不行，但一個麻煩，另一個會砍掉其它主機的 public key，所以比較推薦使用 &lt;code&gt;ssk-keygen&lt;/code&gt; 來處理。&lt;/p&gt;</description>
        </item>
        <item>
        <title>[Laravel] 使用 MigrateSpecific 遷移指定檔案到資料庫</title>
        <link>https://caloskao.org/laravel-migrate-specific-files-to-database/</link>
        <pubDate>Thu, 25 Oct 2018 10:11:49 +0800</pubDate>
        
        <guid>https://caloskao.org/laravel-migrate-specific-files-to-database/</guid>
        <description>&lt;p&gt;當我們將 migration file 遷移到資料庫後，日後想要直接修改原先的 migration file 而不是新增一個去做結構變更時，可以透過 &lt;code&gt;migrate:refresh&lt;/code&gt; 重新遷移，但是如果前一次遷移包含多個檔案時，這些資料表都會受到影響；若想要修改的資料表不屬於上一個批次（batch），透過 &lt;code&gt;--step&lt;/code&gt; 選項去做遷移，影響範圍就會更大。&lt;/p&gt;
&lt;p&gt;常見的做法是建立一個臨時目錄，將 migration file 放進去後執行遷移，但是這個做法僅適用於第一次遷移；另一種方式是修改資料表 migrations 的批次號碼，讓指定的 migration file 成為上一個批次。&lt;/p&gt;
&lt;p&gt;這些都是臨時性做法，若是有很多批要修改就會很麻煩，所以我就寫了一個小工具，之後用一行指令就可以解決這個問題。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Package Name: MigrateSpecific&lt;br&gt;
Version: 1.2.1&lt;br&gt;
Site: &lt;a class=&#34;link&#34; href=&#34;https://github.com/caloskao/migrate-specific&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/caloskao/migrate-specific&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;安裝&#34;&gt;安裝
&lt;/h2&gt;&lt;p&gt;在 Laravel 專案目錄下執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;composer require caloskao/migrate-specific
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;修改 &lt;code&gt;app/Console/Kernel.php&lt;/code&gt;，註冊套件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;protected&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$commands&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;\CalosKao\MigrateSpecific&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;執行 &lt;code&gt;php artisan&lt;/code&gt;，如果有看到 &lt;code&gt;migrate:specific&lt;/code&gt; 代表註冊成功：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate:fresh Drop all tables and re-run all migrations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate:install Create the migration repository
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate:refresh Reset and re-run all migrations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate:reset Rollback all database migrations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate:rollback Rollback the last database migration
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate:specific Migrate, refresh or reset for specific database migration files.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate:status Show the status of each migration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;執行&#34;&gt;執行
&lt;/h2&gt;&lt;p&gt;執行 &lt;code&gt;php artisan help migrate:specific&lt;/code&gt; 可以查看詳細用法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Description:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Easily execute database migration of specific files in the Laravel framework.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Usage:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;migrate:specific [options] [--] &amp;lt;files&amp;gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Arguments:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;files File path, support multiple file (Sperate by space).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Options:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m, --mode[=MODE] Set migrate exection mode, supported mode have: default, refresh, rollback, new-batch [default: &amp;#34;default&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-y, --assume-yes Automatic yes to prompts; assume &amp;#34;yes&amp;#34; as answer to all prompts and run non-interactively. The process will be automatic assume yes as answer when you used option &amp;#34;-n&amp;#34; or &amp;#34;-q&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h, --help Display this help message
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-q, --quiet Do not output any message
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-V, --version Display this application version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ansi Force ANSI output
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--no-ansi Disable ANSI output
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-n, --no-interaction Do not ask any interactive question
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--env[=ENV] The environment the command should run under
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;基本操作&lt;/p&gt;
&lt;p&gt;遷移指定檔案&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan migrate:specific database/migrations/table.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;也可以同時遷移多個&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan migrate:specific database/migrations/2014_10_12_000000_create_users_table.php /home/caloskao/2018*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;輸出大概長這樣&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MigrateSpecific v1.2.1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Copyright (C) 2018 by CalosKao
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;If you have any problem or bug about the use, please come to Github to open the question.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://github.com/caloskao/migrate-specific
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The following migration files will be migrated:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2014_10_12_000000_create_users_table.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2018_07_31_174401_create_jobs_table.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2018_07_31_185911_create_failed_jobs_table.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Is this correct? (yes/no) [no]:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; yes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Migrating: 2014_10_12_000000_create_users_table
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Migrated: 2014_10_12_000000_create_users_table
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Migrating: 2018_07_31_174401_create_jobs_table
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Migrated: 2018_07_31_174401_create_jobs_table
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Migrating: 2018_07_31_185911_create_failed_jobs_table
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Migrated: 2018_07_31_185911_create_failed_jobs_table
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;遷移模式&#34;&gt;遷移模式
&lt;/h2&gt;&lt;p&gt;可以透過參數 -m 指定要怎麼進行遷移，目前可以支援 &lt;code&gt;migrate:refresh&lt;/code&gt; 和 &lt;code&gt;migrate:reset&lt;/code&gt; 兩種，執行上跟 Laravel 預設的行為相同，差別指在於可以指定檔案。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Refresh 模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan migrate:specific -m refresh /path/to/migration.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Reset 模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan migrate:specific -m reset /path/to/migration.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;非互動式遷移&#34;&gt;非互動式遷移
&lt;/h2&gt;&lt;p&gt;有時我們需要執行多次遷移，或者需要把指令部署到自動化流程中。 這時候我們可以使用選項 &lt;code&gt;-y&lt;/code&gt; 直接執行遷移而無需確認。（使用選項 &lt;code&gt;-n&lt;/code&gt; 或選項 &lt;code&gt;-q&lt;/code&gt; 也會觸發選項 &lt;code&gt;-y&lt;/code&gt;）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan migrate:specific -y /path/to/migration.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>將 GoDaddy 網域移轉至 Google Domain</title>
        <link>https://caloskao.org/migrate-domain-from-godaddy-to-google-domain/</link>
        <pubDate>Sat, 06 Oct 2018 15:45:34 +0800</pubDate>
        
        <guid>https://caloskao.org/migrate-domain-from-godaddy-to-google-domain/</guid>
        <description>&lt;p&gt;Google 推出了新的服務 &lt;a class=&#34;link&#34; href=&#34;https://domains.google&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Domain&lt;/a&gt;，讓需要購買網域的人多了一項新選擇，雖然訂價不會是最便宜的，但是有額外免費提供 WHOIS Privacy 資料隱藏、簡易轉址、Email 轉寄等功能，且 Google 的資料中心遍佈世界各地，服務的穩定性與速度自然是不須質疑。雖然目前仍為測試版，但實際上該有的功能都已可以正常使用。本篇將以 GoDaddy 為例，說明如何將網域轉入 Google Domain。&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;登入 GoDaddy 後，找到你要轉出的網域，點選「網域設定」&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_c4a417525c5f_hu_907935beb8a96f29.png&#34;
    width=&#34;1920&#34;
    height=&#34;1020&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_c4a417525c5f_hu_907935beb8a96f29.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;188&#34;
        data-flex-basis=&#34;451px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;這裡的步驟忘了截圖，簡單說明一下：進入畫面後，將「網域鎖定」關閉，如果有開啟域名註冊保護，也要一起關閉。之後點選「從 GoDaddy 轉移域名」。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下一個畫面，GoDaddy 會列出一些注意事項，並請你填寫轉移原因，填寫完成後送出，GoDaddy 就會將網域移轉授權碼寄到你的 Email。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_89514adfa77a_hu_8a34b93250f0d1f1.png&#34;
    width=&#34;1920&#34;
    height=&#34;1063&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_89514adfa77a_hu_8a34b93250f0d1f1.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;180&#34;
        data-flex-basis=&#34;433px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GoDaddy 寄來的域名轉出授權碼通知信大概長這樣，等一下會用到。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_283272f9e71c_hu_ed47d1e9bd2d8454.png&#34;
    width=&#34;1920&#34;
    height=&#34;1749&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_283272f9e71c_hu_ed47d1e9bd2d8454.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;109&#34;
        data-flex-basis=&#34;263px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;進入 Google Domain，點選左側選單的「轉入」。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_fefa0b46f0e9_hu_a405e2c91b00b48f.png&#34;
    width=&#34;1920&#34;
    height=&#34;1079&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_fefa0b46f0e9_hu_a405e2c91b00b48f.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;輸入要轉入的域名，然後點選「轉移」按鈕。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_fd602673fc6a_hu_10fbc9616fa6eb2f.png&#34;
    width=&#34;1920&#34;
    height=&#34;1079&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_fd602673fc6a_hu_10fbc9616fa6eb2f.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;將剛剛 GoDaddy 給的授權碼填入後，點選「繼續」。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_bf0bd217fdc7_hu_8cfc50e36f91e377.png&#34;
    width=&#34;1920&#34;
    height=&#34;895&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_bf0bd217fdc7_hu_8cfc50e36f91e377.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;214&#34;
        data-flex-basis=&#34;514px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接著要匯入 DNS 設定，一般情況下直接下一步就行了，Google Domain 會向 GoDaddy 取得目前網域的 DNS 設定。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_6753011fa686_hu_be4a9b374a922e96.png&#34;
    width=&#34;1920&#34;
    height=&#34;895&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_6753011fa686_hu_be4a9b374a922e96.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;214&#34;
        data-flex-basis=&#34;514px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;這裡 Google Domain 會提醒你要預先收取續約一年的費用，直接下一步進行結帳。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_bd7d8f3af399_hu_a66efe170902edf9.png&#34;
    width=&#34;1920&#34;
    height=&#34;895&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_bd7d8f3af399_hu_a66efe170902edf9.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;214&#34;
        data-flex-basis=&#34;514px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;填寫聯絡資訊，當時 Beta 版的時候還沒辦法填寫台灣地址，不過現在已經可以填寫了，參考下一張圖。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_183223bb04c0_hu_30cbf407931cb7cf.png&#34;
    width=&#34;1920&#34;
    height=&#34;1424&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_183223bb04c0_hu_30cbf407931cb7cf.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;134&#34;
        data-flex-basis=&#34;323px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;目前 Google Domain 可支援台灣中文地址，「國家」欄位選擇台灣，「城市」欄位填入鄉鎮區名，「州/省」欄位填入縣市名，就可以通過驗證了。
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_291737ef495b_hu_59d1094f883969f9.png&#34;
    width=&#34;1920&#34;
    height=&#34;2141&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_291737ef495b_hu_59d1094f883969f9.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;89&#34;
        data-flex-basis=&#34;215px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接下來要進行付款，已經有在 Google Pay 新增過信用卡就可以直接結帳，還沒新增的話也可以在畫面內直接填寫信用卡資料。
&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_81d2cecb793d_hu_6fd36f53824bd566.png&#34;
    width=&#34;1920&#34;
    height=&#34;1236&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_81d2cecb793d_hu_6fd36f53824bd566.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;155&#34;
        data-flex-basis=&#34;372px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;結帳完成後會收到一封 Google Domain 的通知信，點選信中的連結後會開啟一份說明，直接捲到底，點選「轉移」。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_7ac70560a232_hu_6bef6f742b96154d.png&#34;
    width=&#34;1920&#34;
    height=&#34;1148&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_7ac70560a232_hu_6bef6f742b96154d.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;167&#34;
        data-flex-basis=&#34;401px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;到這邊 Google Domain 的操作就全部完成了，5 天之後若沒有取消轉移，網域就會正式移入 Google Domain。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_a0341655359d_hu_e26426d219939f4e.png&#34;
    width=&#34;1920&#34;
    height=&#34;824&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_a0341655359d_hu_e26426d219939f4e.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;233&#34;
        data-flex-basis=&#34;559px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接下來是加速轉移手續的操作，如果不想要等 5 天的話可以這樣做。回到 GoDaddy 的網域管理介面，點選「檢視詳細資訊」。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_ba48c5555636_hu_fc5082574afa3938.png&#34;
    width=&#34;1920&#34;
    height=&#34;1019&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_ba48c5555636_hu_fc5082574afa3938.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;188&#34;
        data-flex-basis=&#34;452px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;畫面中可以看到轉移程序還沒啟動，點選「接受或拒絕」啟動轉移成序。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_64c4e254637e_hu_252eb9a8caba529f.png&#34;
    width=&#34;1920&#34;
    height=&#34;1204&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_64c4e254637e_hu_252eb9a8caba529f.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;159&#34;
        data-flex-basis=&#34;382px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接著 GoDaddy 會再跟你做最後確認，雖然那個「接受取消」的翻譯有點混淆，但是請忽略掉「取消」兩個字，點選「確定」，就會馬上開始進行轉移。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_6ce550a0c7f0_hu_bdabbe48ef4e80dc.png&#34;
    width=&#34;1920&#34;
    height=&#34;1335&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_6ce550a0c7f0_hu_bdabbe48ef4e80dc.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;143&#34;
        data-flex-basis=&#34;345px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;等待一段時間過後，回去 Google Domain 就可以看到網域已經轉過去，大功告成！&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_2ffaf8159343_hu_e827345d60c50ab2.png&#34;
    width=&#34;1920&#34;
    height=&#34;1110&#34;
    srcset=&#34;https://caloskao.org/post/__watermark-processed/migrate-domain-from-godaddy-to-google-domain/img_2ffaf8159343_hu_e827345d60c50ab2.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;172&#34;
        data-flex-basis=&#34;415px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
        </item>
        <item>
        <title>[PHP] 提升 json_encode() 資料可讀性</title>
        <link>https://caloskao.org/php-improve-json_encode-readability/</link>
        <pubDate>Tue, 04 Sep 2018 07:44:31 +0800</pubDate>
        
        <guid>https://caloskao.org/php-improve-json_encode-readability/</guid>
        <description>&lt;p&gt;PHP 可藉由 &lt;code&gt;json_encode()&lt;/code&gt; 與 &lt;code&gt;json_decode()&lt;/code&gt; 來編碼與解碼 JSON 格式的資料，在一般情況下不需要特別給予任何參數，但如果將 JSON 格式資料直接儲存的話，預設是儲存一行文，在不靠任何工具的前提下僅以肉眼辨識會顯得有點吃力。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s1&#34;&gt;&amp;#39;5b8e2e456106f8.12710761&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;id&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;5b8e2e456106f8.12710761&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;description&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;options&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;size&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1243916&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;create_at&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;2018-09-04 15:04:02&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;json_encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;輸出如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;5b8e2e456106f8.12710761&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;5b8e2e456106f8.12710761&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:[],&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;size&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1243916&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;create_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2018-09-04 15:04:02&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如果想要提升 JSON 格式資料的可讀性，只需要將 &lt;code&gt;json_encode()&lt;/code&gt; 的第二個參數設為 &lt;code&gt;JSON_PRETTY_PRINT&lt;/code&gt; 即可。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;json_encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON_PRETTY_PRINT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;輸出：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;5b8e2e456106f8.12710761&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;5b8e2e456106f8.12710761&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;size&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1243916&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;create_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2018-09-04 15:04:02&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PHP 5.6.6 以上可選擇的參數共有 11 個，詳細說明可見 PHP 官網&lt;/p&gt;</description>
        </item>
        <item>
        <title>HTTPS 網頁出現「blocked mixed content in browser」</title>
        <link>https://caloskao.org/blocked-mixed-content-in-browser/</link>
        <pubDate>Mon, 03 Sep 2018 02:56:57 +0800</pubDate>
        
        <guid>https://caloskao.org/blocked-mixed-content-in-browser/</guid>
        <description>&lt;p&gt;當瀏覽器連線到一個 HTTPS 網站，但是瀏覽器網址旁邊出現了不安全的警告訊息，或是有部分內容被隱藏，可能是因為頁面裡面引用了未加密的 HTTP 外部資源，例如：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;腳本（&lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; 標籤）&lt;/li&gt;
&lt;li&gt;樣式表（&lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; 標籤）&lt;/li&gt;
&lt;li&gt;圖片（&lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;figure&amp;gt;&lt;/code&gt; 標籤）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這種情況在將網站從 HTTP 升級到 HTTPS 的時候經常出現，因為大多數時候我們都只升級 HTTP Server，但忘記 HTML 也要將所有 HTTP 連線改成 HTTPS。&lt;/p&gt;
&lt;p&gt;一個簡單的做法是在 HTML &lt;code&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;/code&gt; 標籤中加入下面這行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;meta http-equiv=&amp;#34;Content-Security-Policy&amp;#34; content=&amp;#34;upgrade-insecure-requests&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這一行的意思是將頁面內所有 HTTP 外部資源的連線自動升級為 HTTPS，但如果引用其它網域的外部資源，且該網域本身不支援 HTTPS 的話問題還是會存在的。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/a/45842420/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How can I allow Mixed contents (http with https) using content-security-policy meta tag? - Stack Overflow&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>關閉 Facebook 的「你有一則新交友建議」或其它類型通知的方法</title>
        <link>https://caloskao.org/disable-facebook-you-have-new-friend-suggestions-or-other-types-of-notifications-you-dont-want-to-receive/</link>
        <pubDate>Thu, 30 Aug 2018 02:55:17 +0800</pubDate>
        
        <guid>https://caloskao.org/disable-facebook-you-have-new-friend-suggestions-or-other-types-of-notifications-you-dont-want-to-receive/</guid>
        <description>&lt;p&gt;Facebook 的通知類型越來越多樣，甚至開始會主動推送使用者會想點閱的通知，但是通知氾濫的情況越來越嚴重，尤其是冒出一堆「你有一則新交友建議」，讓整個通知列裡面佔滿一堆雜亂的訊息。最簡單的方式當然是直接不再使用 Facebook，雖然可以取代 Facebook 的應用程式不少，但有些服務綁定 Facebook 帳號連動時，就還是得需要使用。本篇將以網頁版 Facebook 說明如何關閉不想收到的通知類型。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;開啟 Facebook 網頁版後，點選右上角的向下箭頭 &amp;gt; 設定。進到設定頁後，點選左側選單的「通知」，再點選頁中的「桌面版和行動版」，具體步驟如下圖的所示。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_ecb7d0c76293_hu_ada14f982ccf87e9.png&#34;
    width=&#34;1920&#34;
    height=&#34;1023&#34;
    srcset=&#34;https://caloskao.org/post/img_ecb7d0c76293_hu_ada14f982ccf87e9.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;187&#34;
        data-flex-basis=&#34;450px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;點選「桌面版和行動版」後，頁面會顯示類似通知選單的畫面，將你不想看到的通知類型右邊點選關閉。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_85fccef30443_hu_b3a6c2dc1fdbe0eb.png&#34;
    width=&#34;1920&#34;
    height=&#34;1023&#34;
    srcset=&#34;https://caloskao.org/post/img_85fccef30443_hu_b3a6c2dc1fdbe0eb.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;187&#34;
        data-flex-basis=&#34;450px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在你看到的通知類型右邊點選關閉後，該類型的通知即會顯示「&lt;strong&gt;你不會再收到XXX的通知&lt;/strong&gt;」，但是相同類型的通知再次點選後系統不會有反應，沒關係這是正常的，因為每次開啟這個頁面時系統只會顯示部分通知，這時候我們先重新整理頁面（畫面左上角按鈕）。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_482d9d1ce30b_hu_8ccada352670febb.png&#34;
    width=&#34;1920&#34;
    height=&#34;1023&#34;
    srcset=&#34;https://caloskao.org/post/img_482d9d1ce30b_hu_8ccada352670febb.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;187&#34;
        data-flex-basis=&#34;450px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重新整理後，新的通知類型就會被載入進來，重複上一個步驟關掉剩下想要忽略的通知類型後，再重新整理一次頁面，直到所有通知類型都被設定。通常重新整理 2 ~ 3 次就可以設定到全部的通知類型。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_6fa472dc0ac2_hu_b86737a42953a79e.png&#34;
    width=&#34;1920&#34;
    height=&#34;1023&#34;
    srcset=&#34;https://caloskao.org/post/img_6fa472dc0ac2_hu_b86737a42953a79e.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;187&#34;
        data-flex-basis=&#34;450px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;將所有不想收到的通知類型都關閉後，畫面大概長的像下圖，系統會顯示關閉了哪些類型的通知，以及顯示目前仍開啟的通知類型。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_5a02bac2c49d_hu_b2266aa83abd1390.png&#34;
    width=&#34;1920&#34;
    height=&#34;1023&#34;
    srcset=&#34;https://caloskao.org/post/img_5a02bac2c49d_hu_b2266aa83abd1390.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;187&#34;
        data-flex-basis=&#34;450px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://tw.answers.yahoo.com/question/index?qid=20121025000010KK01515&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;不想收到臉書「你可能認識的人」通知郵件 | Yahoo奇摩知識+&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Python] 判斷是否有來自標準輸入的內容傳入</title>
        <link>https://caloskao.org/python-determine-if-python-has-content-from-stdin-passed-in/</link>
        <pubDate>Wed, 08 Aug 2018 06:44:26 +0800</pubDate>
        
        <guid>https://caloskao.org/python-determine-if-python-has-content-from-stdin-passed-in/</guid>
        <description>&lt;p&gt;一個處理資料的 CLI command 一定會有資料輸入，而輸入來源可以是檔案，也可以是從標準輸入（Standard Input, STDIN）而來，若需要同時支援標準輸入與指定參數（檔案路徑），則需要判斷輸入來源為何。參數判斷的部分，若是使用 &lt;a class=&#34;link&#34; href=&#34;https://docs.python.org/3.7/library/argparse.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;argparse&lt;/a&gt; 開發的話，則在呼叫 &lt;code&gt;argparse.add_argument()&lt;/code&gt; 時就可以設定好參數，最後呼叫 &lt;code&gt;argparse.parse_args()&lt;/code&gt; 時即可得知是否有參數輸入，那標準輸入要如何判斷？&lt;/p&gt;
&lt;h2 id=&#34;io-redirection-與-tty&#34;&gt;I/O Redirection 與 TTY
&lt;/h2&gt;&lt;p&gt;一個標準的 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Tty_%28unix%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux TTY&lt;/a&gt; 是可以透過指令與機器互動的（Interactive），而當我們透過 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Redirection_%28computing%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;I/O Redirection&lt;/a&gt; 將輸出接到另一個程式的標準輸入時，則另一個程式並不是在 TTY 下執行，因為該程式不能夠透過指令進行互動。&lt;/p&gt;
&lt;p&gt;因此，只要判斷 Python 是不是在 TTY 下執行，就可以判斷 Python 在執行時是否有標準輸入。我們可以簡單地透過 &lt;a class=&#34;link&#34; href=&#34;https://docs.python.org/3.7/library/sys.html?highlight=isatty#sys.stdin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sys.stdin.isatty()&lt;/a&gt; 來達成這件事情。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ python -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;import sys; print(sys.stdin.isatty())&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;True
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; python -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;import sys; print(sys.stdin.isatty())&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;False
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ python -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;import sys; print(sys.stdin.isatty())&amp;#39;&lt;/span&gt; &amp;lt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;False
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/699390/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What&#39;s the best way to tell if a Python program has anything to read from stdin? - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.python.org/3.7/library/sys.html?highlight=isatty#sys.stdin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;30.1. sys — System-specific parameters and functions — Python 3.7.0 documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[PHP] 如何判斷關聯式陣列與循序式陣列?</title>
        <link>https://caloskao.org/how-to-check-if-php-array-is-associative-or-sequential/</link>
        <pubDate>Tue, 07 Aug 2018 06:15:15 +0800</pubDate>
        
        <guid>https://caloskao.org/how-to-check-if-php-array-is-associative-or-sequential/</guid>
        <description>&lt;p&gt;PHP 陣列索引預設為由 0 開始遞增的循序數列，同時也支援自行設定索引值。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 序列式
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$sequentialArray&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;C&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Array
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;    [0] =&amp;gt; A
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;    [1] =&amp;gt; B
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;    [2] =&amp;gt; C
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 關聯式
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$associativeArray&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;C&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Array
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;    [a] =&amp;gt; A
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;    [b] =&amp;gt; B
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;    [c] =&amp;gt; C
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;判斷兩者的方式為檢查陣列索引是否為一公差為 1 的循序數列。先利用 array_keys() 取得所有陣列索引值後，再利用 range() 產生一個循序整數陣列，比對兩者內容即可判斷：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;is_assoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;array&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$array&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$array&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;array_keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;var_dump&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is_assoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;var_dump&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is_assoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;var_dump&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is_assoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;var_dump&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is_assoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/173400/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How to check if PHP array is associative or sequential? - Stack Overflow&lt;/a&gt;&lt;/p&gt;</description>
        </item>
        <item>
        <title>[Python] 標準串流控制（STD-IN、STD-OUT、STD-ERR）</title>
        <link>https://caloskao.org/python-standard-streams-control-stdin-stdout-stderr/</link>
        <pubDate>Sun, 05 Aug 2018 10:09:15 +0800</pubDate>
        
        <guid>https://caloskao.org/python-standard-streams-control-stdin-stdout-stderr/</guid>
        <description>&lt;p&gt;標準串流（Standard Streams） 是作業系統底層的一個資料交換機制，各個 process 處理資料時皆需要透過它進行輸入與輸出資料，舉凡讀取檔案、寫入檔案或鍵盤輸入等都是。在程式開發上雖然各種語言都已經把這層的處理給包裝起來，已經可以應付日常大部分的用途，但有些需求下還是需要直接操作標準串流才能達成（尤其是開發 CLI Utility）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 操作標準串流需要透過 sys package，在程式的開頭先 import 進來&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;sys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 讀取單行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stdin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;readline&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 讀取多行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stdin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;readlines&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 迴圈讀取&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stdin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 將標準輸出從 console 轉到 stdout.log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;fh_stdout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;stdout.log&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stdout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fh_stdout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 輸出字串，但是不會在 console 顯示，而是被寫到 stdout.log 這個檔案&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Test output to ./stdout.log&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 將標準輸出從 console 轉到 stderr.log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;fh_stderr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;stderr.log&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fh_stderr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 使用 raise 拋出一個 RuntimeError，錯誤訊息會被寫入到 stderr.log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;test stderr&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.python.org/3/library/sys.html#sys.stdin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;30.1. sys — System-specific parameters and functions — Python 3.7.0 documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/1450393/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How do you read from stdin in Python? - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Linux] dig/nslookup/nsupdate 指令安裝</title>
        <link>https://caloskao.org/linux-dig-nslookup-nsupdate-installation/</link>
        <pubDate>Thu, 26 Jul 2018 05:48:53 +0800</pubDate>
        
        <guid>https://caloskao.org/linux-dig-nslookup-nsupdate-installation/</guid>
        <description>&lt;p&gt;&lt;code&gt;dig&lt;/code&gt;、&lt;code&gt;nslookup&lt;/code&gt;、&lt;code&gt;nsupdate&lt;/code&gt; 是在進行域名解析除錯時常用到的工具，這三個指令是隸屬於 &lt;a class=&#34;link&#34; href=&#34;https://www.isc.org/downloads/bind/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BIND DNS Server&lt;/a&gt; 的 Utility，如果安裝套件時直接搜尋指令，應該是看不到套件名稱上會有指令名稱的，應該會是 &lt;code&gt;bind-utils&lt;/code&gt; 或 &lt;code&gt;dnsutils&lt;/code&gt;。&lt;/p&gt;
&lt;h1 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h1&gt;&lt;h2 id=&#34;debianubuntu&#34;&gt;Debian/Ubuntu:
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y dnsutils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;red-hat-centosfedorarhel&#34;&gt;Red Hat (CentOS/Fedora/RHEL):
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo yum install bind-utils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;cygwin&#34;&gt;Cygwin
&lt;/h2&gt;&lt;p&gt;可透過 EXE 安裝檔安裝 bind-utils，有 &lt;a class=&#34;link&#34; href=&#34;use-apt-cyg-to-manage-cygwin-packages&#34; &gt;apt-cyg&lt;/a&gt; 可以使用下列指令安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-cyg install bind-utils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.isc.org/bind/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BIND 9 | Internet Systems Consortium&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Cygwin] 使用 apt-cyg 管理 Cygwin 的套件</title>
        <link>https://caloskao.org/use-apt-cyg-to-manage-cygwin-packages/</link>
        <pubDate>Tue, 24 Jul 2018 06:26:32 +0800</pubDate>
        
        <guid>https://caloskao.org/use-apt-cyg-to-manage-cygwin-packages/</guid>
        <description>&lt;p&gt;Cygwin 可以安裝許多套件，不過都需要透過 EXE 安裝檔來進行安裝，如果想要直接在 Cygwin CLI 內進行安裝，可以使用 &lt;a class=&#34;link&#34; href=&#34;https://github.com/transcode-open/apt-cyg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;apt-cyg&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;將 &lt;code&gt;apt-cyg&lt;/code&gt; 安裝到 &lt;code&gt;/usr/local/bin&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg -O /usr/local/bin/apt-cyg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x /usr/local/bin/apt-cyg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這裡列出常用的指令，完整指令說明可參考 &lt;a class=&#34;link&#34; href=&#34;https://github.com/transcode-open/apt-cyg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;apt-cyg&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在已安裝的套件中搜尋與 dns 相關的套件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-cyg search dns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 線上搜尋(cygwin.com)與 dns 相關的套件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-cyg searchall dns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝 bind-utils 套件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-cyg install bind-utils
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 移除 bind-utils 套件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-cyg remove bind-utils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>在 Cygwin 中安裝 NodeJS 與 NPM</title>
        <link>https://caloskao.org/how-to-install-nodejs-and-npm-in-cygwin/</link>
        <pubDate>Wed, 18 Jul 2018 02:46:57 +0800</pubDate>
        
        <guid>https://caloskao.org/how-to-install-nodejs-and-npm-in-cygwin/</guid>
        <description>&lt;p&gt;Cygwin 的套件中並沒有 NodeJS 可以選用安裝，但 Windows 平台的 NodeJS 是可以直接在 Cygwin 內使用的，只需要先依照 Windows 的安裝流程完成後，在 Cygwin 內將安裝路徑 export 到 &lt;code&gt;$PATH&lt;/code&gt; 就可以了。&lt;/p&gt;
&lt;p&gt;先到 &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/en/download/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NodeJS 官方網站&lt;/a&gt; 下載 NodeJS，使用 Windows 標準安裝程式的話下載第一個 &lt;strong&gt;Windows Installer (.msi)&lt;/strong&gt;，如果想要使用免安裝版則下載第二個 &lt;strong&gt;Windows Binary Package (.zip)&lt;/strong&gt;，依照自己的作業系統版本選擇 32 位元或 64 位元。本篇使用免安裝版進行。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_ca2e5d2063b4_hu_9564d7d5d7800960.png&#34;
    width=&#34;1920&#34;
    height=&#34;927&#34;
    srcset=&#34;https://caloskao.org/post/img_ca2e5d2063b4_hu_9564d7d5d7800960.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;207&#34;
        data-flex-basis=&#34;497px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;將下載回來的檔案解壓縮，並記下安裝位置，下一步會用到。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_0abb434e0cd3_hu_c3f73229043d7baf.png&#34;
    width=&#34;1920&#34;
    height=&#34;1171&#34;
    srcset=&#34;https://caloskao.org/post/img_0abb434e0cd3_hu_c3f73229043d7baf.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;164&#34;
        data-flex-basis=&#34;393px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;開啟 Cygwin，將 NodeJS 路徑加到 &lt;code&gt;$PATH&lt;/code&gt;。指令直接加入 &lt;code&gt;~/.bashrc&lt;/code&gt; 就不需要每次重開 Cygwin 都要 &lt;code&gt;export&lt;/code&gt; 一次。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 加入指令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export PATH=$PATH&amp;#34;:/cygdrive/d/Program Files/node-v8.11.3-win-x64&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 免重開 Cygwin，直接使新的 .bashrc 設定生效&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;測試 &lt;code&gt;node&lt;/code&gt; 與 &lt;code&gt;npm&lt;/code&gt; 指令，如果皆正常顯示版本代表安裝成功。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;v8.11.3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6.1.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Ubuntu] 如何使電腦進入休眠與睡眠模式?</title>
        <link>https://caloskao.org/ubuntu-hibernate-and-sleep-mode/</link>
        <pubDate>Wed, 11 Jul 2018 06:10:16 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-hibernate-and-sleep-mode/</guid>
        <description>&lt;p&gt;在 Windows 系統下，電腦閒置時可以透過休眠模式或睡眠模式讓電腦省電，在 Ubuntu 可以透過下面兩個指令達到相同的效果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sudo systemctl hibernate&lt;/code&gt;：Hibernate 模式，將記憶體內容寫入硬碟後完全關閉電源，等同 Windows 的休眠模式。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo systemctl hybrid-sleep&lt;/code&gt;：Hybird Sleep 模式，只供應電源給記憶體，其餘零件全部切斷電源供給，等同 Windows 的睡眠模式。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/a/781957/656527&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How do I use pm-suspend-hybrid by default instead of pm-suspend? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.archlinux.org/index.php/Power_management#Suspend_and_hibernate&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Power management - ArchWiki&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[PHP] 序列化資料線上編輯器</title>
        <link>https://caloskao.org/php-serialized-data-online-editor/</link>
        <pubDate>Mon, 09 Jul 2018 07:18:22 +0800</pubDate>
        
        <guid>https://caloskao.org/php-serialized-data-online-editor/</guid>
        <description>&lt;p&gt;PHP 可以透過 &lt;a class=&#34;link&#34; href=&#34;http://php.net/manual/en/function.serialize.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;serialize()&lt;/code&gt;&lt;/a&gt; 將物件轉換成序列化文字資料後儲存在任何地方，需要使用的時候再透過 &lt;a class=&#34;link&#34; href=&#34;http://php.net/manual/en/function.unserialize.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;unserialize()&lt;/code&gt;&lt;/a&gt; 進行反序列化後得到原始物件，但因為序列化資料會記錄資料長度，因此如果想直接修改序列化資料的內容，需要連同資料長度也一起算進去，手動修改時麻煩且容易出錯。這時候可以透過 &lt;a class=&#34;link&#34; href=&#34;http://sciactive.com/phpserialeditor.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Serialized PHP Editor&lt;/a&gt; 這個 PHP 序列化資料線上編輯器進行修改就會方便很多。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Serialized PHP Editor 連結：&lt;a class=&#34;link&#34; href=&#34;http://sciactive.com/phpserialeditor.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://sciactive.com/phpserialeditor.php&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如下圖，介面上可以看到有四大區塊，把序列化資料貼在第一個區塊後就可以開始在第二區塊進行編輯，介面提供 YAML 與 JSON 兩種編輯語法，可以在畫面左上角進行切換。而新舊差異也會即時在右下角顯示（綠色為新增，紅色為刪減）。編輯完成後即可複製右上角區塊編輯後的序列化資料做使用。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_26b8a0f198d9_hu_1a20f145598b7a4e.png&#34;
    width=&#34;1920&#34;
    height=&#34;1393&#34;
    srcset=&#34;https://caloskao.org/post/img_26b8a0f198d9_hu_1a20f145598b7a4e.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;137&#34;
        data-flex-basis=&#34;330px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;另外，作者也公開了原始碼在 &lt;a class=&#34;link&#34; href=&#34;https://github.com/sciactive/2be-extras/blob/master/phpserialeditor.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Github&lt;/a&gt; 上，直接下載放在 HTTP Server 目錄下執行即可。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# /var/www/html 是 Apache 預設的文件根目錄，請根據自身環境去修改路徑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://raw.githubusercontent.com/sciactive/2be-extras/master/phpserialeditor.php -O /var/www/html/phpserialeditor.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;也可以用 PHP Built-In Server 在本機上執行（複製以下指令後，以瀏覽器打開 &lt;code&gt;localhost:9000&lt;/code&gt;）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /var/tmp/phpserialeditor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://raw.githubusercontent.com/sciactive/2be-extras/master/phpserialeditor.php -O /var/tmp/phpserialeditor/index.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php -S localhost:9000 -t /var/tmp/phpserialeditor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://sciactive.com/phpserialeditor.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Serialized PHP Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/sciactive/2be-extras&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sciactive/2be-extras: Various scripts, utilities, and documentation for 2be.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Cygwin] watch: command not found</title>
        <link>https://caloskao.org/cygwin-watch-command-not-found/</link>
        <pubDate>Mon, 02 Jul 2018 06:55:20 +0800</pubDate>
        
        <guid>https://caloskao.org/cygwin-watch-command-not-found/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/linux-watch-use-watch-to-execute-a-command-periodically&#34; &gt;watch&lt;/a&gt; 是一個可以定期執行指令的實用工具，在於臨時需要定時執行指令時特別有用，多數 Linux 發行版預設就可以使用這個指令，但 Cygwin 預設並不會安裝，直接輸入則會出現 &lt;code&gt;watch: command not found&lt;/code&gt; ，需要安裝 &lt;code&gt;prpcps-ng: procps&lt;/code&gt; 這個套件才能使用 &lt;code&gt;watch&lt;/code&gt; 指令。&lt;/p&gt;
&lt;p&gt;執行 Cygwin 的安裝檔，執行到套件選擇這個步驟時搜尋 procps 就可以找到套件，選擇後執行下一步進行安裝，不需要重新啟動 Cygwin 即可使用。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_ac3bf201d0aa_hu_24d006d317cfbf71.png&#34;
    width=&#34;1920&#34;
    height=&#34;1324&#34;
    srcset=&#34;https://caloskao.org/post/img_ac3bf201d0aa_hu_24d006d317cfbf71.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;144&#34;
        data-flex-basis=&#34;347px&#34;
    
&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/linux-watch-use-watch-to-execute-a-command-periodically&#34; &gt;[Linux] 使用 watch 定期執行指令 | Calos&amp;rsquo;s Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://unix.stackexchange.com/q/38910/331501&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cygwin has no watch command? - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Linux] 使用 watch 定期執行指令</title>
        <link>https://caloskao.org/linux-watch-use-watch-to-execute-a-command-periodically/</link>
        <pubDate>Mon, 02 Jul 2018 06:30:59 +0800</pubDate>
        
        <guid>https://caloskao.org/linux-watch-use-watch-to-execute-a-command-periodically/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Watch_%28Unix%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;watch&lt;/a&gt; 是一個可以定期執行指令的實用工具，臨時需要定期執行指令時特別有用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Usage:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; watch [options] command
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Options:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -b, --beep             beep if command has a non-zero exit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c, --color            interpret ANSI color and style sequences
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d, --differences[=&amp;lt;permanent&amp;gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                         highlight changes between updates
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e, --errexit          exit if command has a non-zero exit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -g, --chgexit          exit when output from command changes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -n, --interval &amp;lt;secs&amp;gt;  seconds to wait between updates
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p, --precise          attempt run command in precise intervals
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -t, --no-title         turn off header
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -x, --exec             pass command to exec instead of &amp;#34;sh -c&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -h, --help     display this help and exit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -v, --version  output version information and exit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h1 id=&#34;安裝-watch&#34;&gt;安裝 watch
&lt;/h1&gt;&lt;p&gt;watch 是 &lt;a class=&#34;link&#34; href=&#34;https://gitlab.com/procps-ng/procps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;procps&lt;/a&gt; 套件內的其中一個指令，基本上現在多數的 Linux 發行版預設的系統套件就包含了 procps。如果系統預設並沒有安裝的話，可以利用套件管理工具安裝，或是到 procps 的 &lt;a class=&#34;link&#34; href=&#34;https://gitlab.com/procps-ng/procps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitLab&lt;/a&gt; 下載原始碼編譯安裝。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Ubuntu 下可輸入 &lt;code&gt;sudo apt install procps&lt;/code&gt; 進行安裝。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h1 id=&#34;使用方式&#34;&gt;使用方式
&lt;/h1&gt;&lt;p&gt;這裡簡單說明兩個常用的參數：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-n&lt;/code&gt;：更新間隔時間，時間精細度可支援到 0.1 秒。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d&lt;/code&gt;：每次畫面更新時，將產生差異的部分輸出反白顯示。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;範例：&lt;code&gt;watch -n 5 netstat&lt;/code&gt; / 每 5 秒執行一次 &lt;code&gt;netstat&lt;/code&gt;，監控連線狀態：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Every 5.0s: netstat -atpun                                                                                                                                                                 Mon Jul  2 13:54:51 2018
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(Not all processes could be identified, non-owned process info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; will not be shown, you would have to be root to see it all.)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Active Internet connections (servers and established)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp        0      0 0.0.0.0:4000            0.0.0.0:*               LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp        0      0 10.10.3.63:22           10.10.3.46:52454        ESTABLISHED -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp6       0      0 :::21                   :::*                    LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp6       0      0 :::22                   :::*                    LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp6       0      0 ::1:631                 :::*                    LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp6       0      0 :::3306                 :::*                    LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcp6       0      0 :::80                   :::*                    LISTEN      -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udp        0      0 0.0.0.0:631             0.0.0.0:*                           -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udp        0      0 127.0.0.1:50197         127.0.0.1:9995          ESTABLISHED -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udp        0      0 0.0.0.0:33833           0.0.0.0:*                           -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udp        0      0 0.0.0.0:5353            0.0.0.0:*                           -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udp        0      0 0.0.0.0:68              0.0.0.0:*                           -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udp6       0      0 :::5353                 :::*                                -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udp6       0      0 :::44286                :::*                                -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://gitlab.com/procps-ng/procps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;procps-ng / procps · GitLab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Watch_%28Unix%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;watch (Unix) - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Linux] 查詢發行版本與核心版本</title>
        <link>https://caloskao.org/linux-unix-get-distribution-and-kernel-version/</link>
        <pubDate>Fri, 29 Jun 2018 05:56:41 +0800</pubDate>
        
        <guid>https://caloskao.org/linux-unix-get-distribution-and-kernel-version/</guid>
        <description>&lt;p&gt;Unix Like 作業系統的分支發行版眾多，如果是圖形介面可能還勉強可以猜出是什麼發行版，但是如果是在 CLI 底下就無法直接得知。這裡整理針對 Linux 與 BSD 兩大分支的五種查看發行版本與核心版本的指令。&lt;/p&gt;
&lt;h2 id=&#34;uname--mrslinux--bsd&#34;&gt;&lt;code&gt;uname -mrs&lt;/code&gt; (Linux / BSD)
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;uname&lt;/code&gt; 在 Linux 與 BSD 的發行版都可使用，在 BSD 系統底下可直接查看發行版本與核心版本，而在 Linux 系統底下僅能查看核心版本，發行版本需透過其它指令得知。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Linux 4.15.0-23-generic x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FreeBSD 11.1-RELEASE amd64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;cat-etcos-release-linux&#34;&gt;&lt;code&gt;cat /etc/os-release&lt;/code&gt; (Linux)
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cat /etc/os-release&lt;/code&gt; 僅能在 Linux 發行版下使用，帶出的發行版資訊很完整，但不含核心版本資訊。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAME=&amp;#34;Ubuntu&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;VERSION=&amp;#34;18.04 LTS (Bionic Beaver)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ID=ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ID_LIKE=debian
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PRETTY_NAME=&amp;#34;Ubuntu 18.04 LTS&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;VERSION_ID=&amp;#34;18.04&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HOME_URL=&amp;#34;https://www.ubuntu.com/&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SUPPORT_URL=&amp;#34;https://help.ubuntu.com/&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BUG_REPORT_URL=&amp;#34;https://bugs.launchpad.net/ubuntu/&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PRIVACY_POLICY_URL=&amp;#34;https://www.ubuntu.com/legal/terms-and-policies/privacy-policy&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;VERSION_CODENAME=bionic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UBUNTU_CODENAME=bionic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;hostnamectl-linux&#34;&gt;&lt;code&gt;hostnamectl&lt;/code&gt; (Linux)
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;hostnamectl&lt;/code&gt; 這個指令是用來修改主機名稱的，但不帶入任何參數時除了會列出主機名稱外，還會列出發行版本與核心版本資訊。這個指令一樣僅能在 Linux 發行版下使用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Static hostname: ubuntu-bionic-x64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Icon name: computer-vm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         Chassis: vm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Machine ID: 4d6eaab693a3412bbdba34d61ffb349f
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         Boot ID: 30b8c0a43b3d4e6490bfadf7c795d0ca
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Virtualization: kvm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Operating System: Ubuntu 18.04 LTS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Kernel: Linux 4.15.0-23-generic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Architecture: x86-64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;lsb_release--a-debian--ubuntu&#34;&gt;&lt;code&gt;lsb_release -a&lt;/code&gt; (Debian / Ubuntu)
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;lsb_release&lt;/code&gt; 會列出發行版名稱、版本與代號，在 Debian 與 Ubuntu 系統下預設就有支援，而其它發行版如 CentOS 或 Fedora 等則要另外安裝 &lt;code&gt;redhat-lsb-core&lt;/code&gt; 套件才可以使用。BSD 發行版則沒有支援。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;No LSB modules are available.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Distributor ID: Ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Description: Ubuntu 18.04 LTS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Release: 18.04
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Codename: bionic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;freebsd-version--ku-freebsd&#34;&gt;&lt;code&gt;freebsd-version -ku&lt;/code&gt; (FreeBSD)
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;freebsd-version&lt;/code&gt; 是 FreeBSD 專用的核心版本查詢，特別的是 FreeBSD 下有區分核心版本 (Kernel Version) 與使用者層級版本 (Userland Version)，分別對應到參數 &lt;code&gt;-k&lt;/code&gt; 與參數 &lt;code&gt;-u&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;11.0-RELEASE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;11.1-RELEASE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;下表整理各個指令對應的作業系統：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;OS / Command&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Debian&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Ubuntu&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Fedora&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;CentOS&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;FreeBSD&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;uname -mrs&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;cat /os-release&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;hostnamectl&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;lsb_release -a&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;freebsd-version -ku&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;v&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.linuxpilot.com/linux_ver&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;如何得知正在使用的是什麼Linux版本 – Linuxpilot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cyberciti.biz/faq/how-to-find-out-freebsd-version-and-patch-level-number/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How To Find Out FreeBSD Version and Patch Level Number - nixCraft&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 使用 Certbot 自動更新 Let&#39;s Encrypt 憑證</title>
        <link>https://caloskao.org/ubuntu-use-certbot-to-automatically-update-lets-encrypt-certificate-authority/</link>
        <pubDate>Wed, 27 Jun 2018 06:45:02 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-use-certbot-to-automatically-update-lets-encrypt-certificate-authority/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.sslforfree.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SSL For Free&lt;/a&gt; 是一個可以申請免費 SSL 憑證的網站，只需要準備自己的網域名稱就可以申請為期三個月的免費 SSL 憑證，小小的缺點是憑證過期後需要重新申請憑證，並且更換伺服器的舊憑證。而 &lt;a class=&#34;link&#34; href=&#34;https://github.com/certbot/certbot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Certbot&lt;/a&gt; 是一個可以簡化申請流程，又可以在憑證過期之前自動更新憑證的超方便工具。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;透過certbotefforg-快速安裝&#34;&gt;透過 certbot.eff.org 快速安裝
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://certbot.eff.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Certbot 官方網站&lt;/a&gt; 很貼心的做了一個快速指引，只需要選擇你現在使用的 OS 與 HTTP Server，就會列出安裝指令讓你直接複製貼上輕鬆安裝，不過比較新一點版本的 OS 可能還不支援。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_4a62237be073_hu_86c99e4d782a31b4.png&#34;
    width=&#34;1920&#34;
    height=&#34;1869&#34;
    srcset=&#34;https://caloskao.org/post/img_4a62237be073_hu_86c99e4d782a31b4.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;102&#34;
        data-flex-basis=&#34;246px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;選擇好 OS 與 HTTP Server 後，就一步一步複製指令開始安裝吧！本文以 Ubuntu 16.04 + Apache HTTP Server 實作。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 安裝軟體管理套件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y software-properties-common
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 加入 certbot ppa repository，並透過 apt-get update 取得套件資訊
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo add-apt-repository ppa:certbot/certbot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 安裝 certbot for apache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y python-certbot-apache 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 開始進行 Apache 的憑證安裝
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo certbot --apache
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;如果執行時出現類似這種訊息 (例如走 nginx 安裝):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Saving&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;debug&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requested&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;plugin&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;does&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;appear&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要另外安裝外掛程式，可以使用 &lt;code&gt;apt search python-certbot&lt;/code&gt; 或 &lt;code&gt;apt search python3-certbot&lt;/code&gt; 查詢相關套件名稱並安裝。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;當輸入到 sudo certbot &amp;ndash;apache 時，系統會進入對談式的安裝程序，Certbot 會掃描 HTTP Server 的設定，根據掃描結果列出主機上所擁有的網域，並且詢問要為哪些網域安裝憑證。可以同時選擇多個網域，每個網域以空白或是逗號分隔。如果直接 Enter，就會替所有網域都安裝憑證。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Saving&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;debug&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Plugins&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;selected&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Authenticator&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apache&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Installer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Which&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;names&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;would&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;you&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;like&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;activate&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HTTPS&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;caloskao&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;blog&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;caloskao&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;www&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;caloskao&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;example&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;caloskao&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Select&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;appropriate&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;numbers&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;separated&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;commas&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;spaces&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;leave&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;input&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;blank&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;select&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;all&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;options&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;shown&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Enter&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cancel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;選擇安裝網域後，接下來 Certbot 會複製原始設定檔並加入 SSL 相關設定後，同時幫你啟用新的設定檔。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Obtaining a new certificate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Performing the following challenges:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tls-sni-01 challenge caloskao.org
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Waiting for verification...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cleaning up challenges
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Created an SSL vhost at /etc/apache2/sites-available/caloskao.org-le-ssl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Deploying Certificate for caloskao.org to VirtualHost /etc/apache2/sites-available/caloskao.org-le-ssl.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enabling available site: /etc/apache2/sites-available/caloskao.org-le-ssl.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;第二個問題是要不要將所有的 HTTP Request 全部重導向到 HTTPS，建議如果沒有特殊需求，就選擇 2 全部都轉過去吧。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1: No redirect - Make no further changes to the webserver configuration.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;new sites, or if you&amp;#39;re confident your site works on HTTPS. You can undo this
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;change by editing your web server&amp;#39;s configuration.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Select the appropriate number [1-2] then [enter] (press &amp;#39;c&amp;#39; to cancel):
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;最後就是恭喜你設定完成，現在你可以使用 HTTPS 開啟你的網站試試看。並且顯示憑證檔案的系統路徑以及逾期時間。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Congratulations! You have successfully enabled https://caloskao.org
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You should test your configuration at:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.ssllabs.com/ssltest/analyze.html?d=caloskao.org
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;IMPORTANT NOTES:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - Congratulations! Your certificate and chain have been saved at:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   /etc/letsencrypt/live/caloskao.org/fullchain.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Your key file has been saved at:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   /etc/letsencrypt/live/caloskao.org/privkey.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Your cert will expire on 2018-03-22. To obtain a new or tweaked
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   version of this certificate in the future, simply run certbot again
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   with the &amp;#34;certonly&amp;#34; option. To non-interactively renew *all* of
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   your certificates, run &amp;#34;certbot renew&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - If you like Certbot, please consider supporting our work by:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Donating to ISRG / Let&amp;#39;s Encrypt:   https://letsencrypt.org/donate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Donating to EFF:                    https://eff.org/donate-le
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;安裝後的確認工作&#34;&gt;安裝後的確認工作
&lt;/h2&gt;&lt;p&gt;前面的訊息同時也提醒你可以利用 SSL Labs 的 &lt;a class=&#34;link&#34; href=&#34;https://www.ssllabs.com/ssltest/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SSL Test&lt;/a&gt; 測試你的網站是否正確安裝了 SSL 憑證，用瀏覽器開啟 Certbot 提供的網址，就可以看到測試結果。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_c9364cd99c41_hu_e9fdb3a2da53111e.png&#34;
    width=&#34;1920&#34;
    height=&#34;1195&#34;
    srcset=&#34;https://caloskao.org/post/img_c9364cd99c41_hu_e9fdb3a2da53111e.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;160&#34;
        data-flex-basis=&#34;385px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Certbot 預設會啟動自動更新，輸入 &lt;code&gt;sudo systemctl status certbot.timer&lt;/code&gt; 確認自動更新有沒有正常執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systemctl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;status&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certbot&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;●&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certbot&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Run&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certbot&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;twice&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;daily&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;Loaded&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loaded&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;systemd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;system&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;certbot&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vendor&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;Active&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;active&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;waiting&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;since&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Thu&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2018&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;21&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;09&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;02&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CST&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;days&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ago&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Jun&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;21&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;09&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;02&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apps&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;csie&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systemd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Started&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Run&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certbot&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;twice&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;daily&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;你可以透過 &lt;code&gt;sudo certbot renew --dry-run&lt;/code&gt; 指令測試 Cerbot 是否能夠正常執行憑證更新。移除參數 &lt;code&gt;--dry-run&lt;/code&gt; 就會正常執行，會覆蓋舊憑證。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certbot&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;renew&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Saving&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;debug&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Processing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;renewal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;caloskao&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Cert&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;due&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;renewal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;but&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;simulating&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;renewal&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dry&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Plugins&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;selected&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Authenticator&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apache&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Installer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Renewing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;an&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;existing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certificate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Performing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;following&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;challenges&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tls&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sni&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;01&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;challenge&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;caloskao&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Waiting&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;verification&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Cleaning&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;up&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;challenges&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certificate&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deployed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;without&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reload&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fullchain&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;live&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;caloskao&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fullchain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DRY&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;RUN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;simulating&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;certbot renew&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cert&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expiry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;test&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certificates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;below&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;have&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;been&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;saved&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Congratulations&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;all&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;renewals&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;succeeded&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;following&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certs&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;have&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;been&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;renewed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;letsencrypt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;live&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;caloskao&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fullchain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pem&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;success&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DRY&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;RUN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;simulating&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;certbot renew&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cert&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expiry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;The&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;test&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certificates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;above&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;have&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;been&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;saved&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;-------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;references&#34;&gt;References:
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://certbot.eff.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Certbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://g23988.blogspot.com/2017/08/ssl-certbot-lets-encrypt.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;超猴崽工作日誌: 【SSL 憑證】利用 certbot 自動更新 Let&amp;rsquo;s Encrypt 憑證&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://blog.xuite.net/tolarku/blog/505095331-%E4%BD%BF%E7%94%A8&amp;#43;Let%27s&amp;#43;Encrypt&amp;#43;%E4%BE%86%E5%B9%AB%E4%BD%A0%E7%9A%84%E7%B6%B2%E9%A0%81%E4%B8%BB%E6%A9%9F&amp;#43;Apache%2C&amp;#43;Nginx&amp;#43;%E5%AE%89%E8%A3%9D&amp;#43;SSL&amp;#43;%E6%86%91%E8%AD%89&amp;#43;-&amp;#43;CentOS&amp;#43;6%2F7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;使用 Let&amp;rsquo;s Encrypt 來幫你的網頁主機 Apache, Nginx 安裝 SSL 憑證 - CentOS 6/7 @ 黃昏的甘蔗 :: 隨意窩 Xuite日誌&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 使用 hostnamectl 修改主機名稱</title>
        <link>https://caloskao.org/ubuntu-use-hostnamectl-to-change-the-host-name/</link>
        <pubDate>Tue, 26 Jun 2018 02:53:39 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-use-hostnamectl-to-change-the-host-name/</guid>
        <description>&lt;p&gt;早期 Ubuntu 修改主機名稱需要透過修改 &lt;code&gt;/etc/hostname&lt;/code&gt; + 使用 &lt;code&gt;hostname&lt;/code&gt; 指令才能完成，在某些情況下甚至需要重新啟動系統。而在 Ubuntu 13 以後的版本可以透過 &lt;code&gt;hostnamectl&lt;/code&gt; 一個指令完成這件事情，且不需要重新啟動系統。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;hostnamectl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;OPTIONS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;COMMAND&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Query&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;change&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;system&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;h&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;help&lt;/span&gt;              &lt;span class=&#34;nx&#34;&gt;Show&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;this&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;help&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;version&lt;/span&gt;           &lt;span class=&#34;nx&#34;&gt;Show&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ask&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;password&lt;/span&gt;   &lt;span class=&#34;nx&#34;&gt;Do&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;prompt&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;H&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;USER&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;HOST&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;Operate&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;remote&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;M&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;machine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;CONTAINER&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Operate&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;container&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;transient&lt;/span&gt;         &lt;span class=&#34;nx&#34;&gt;Only&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;transient&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;static&lt;/span&gt;            &lt;span class=&#34;nx&#34;&gt;Only&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pretty&lt;/span&gt;            &lt;span class=&#34;nx&#34;&gt;Only&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pretty&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Commands&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;status&lt;/span&gt;                 &lt;span class=&#34;nx&#34;&gt;Show&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hostname&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;hostname&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;NAME&lt;/span&gt;      &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;system&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;icon&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;NAME&lt;/span&gt;     &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;icon&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;chassis&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;NAME&lt;/span&gt;       &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;chassis&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;deployment&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;NAME&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;deployment&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;environment&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;NAME&lt;/span&gt;      &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;例如，把主機名稱修改成 &lt;strong&gt;ubuntu-bionic-x64&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo hostnamectl set-hostname ubuntu-bionic-x64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這時候終端機還看不出變化，我們可以用 &lt;code&gt;hostnamectl status&lt;/code&gt; 檢查有沒有修改成功：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Static hostname: ubuntu-bionic-x64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         Icon name: computer-vm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           Chassis: vm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Machine ID: 4d6eaab693a3412bbdba34d61ffb349f
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           Boot ID: afb830841693441eb38129033ae2afbc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Virtualization: kvm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Operating System: Ubuntu 18.04 LTS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Kernel: Linux 4.15.0-23-generic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Architecture: x86-64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;檢查結果是有修改過的，登出後重新登入主機就可以看到終端機的主機名稱修改成功，完整過程如下圖。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_de0c037c4c27_hu_a97db53bd16faf04.png&#34;
    width=&#34;1920&#34;
    height=&#34;2061&#34;
    srcset=&#34;https://caloskao.org/post/img_de0c037c4c27_hu_a97db53bd16faf04.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;93&#34;
        data-flex-basis=&#34;223px&#34;
    
&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/questions/9540/how-do-i-change-the-computer-name&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hostname - How do I change the computer name? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/questions/87665/how-do-i-change-the-hostname-without-a-restart/516898#516898&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How do I change the hostname without a restart? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 套件安裝錯誤: Could not get lock /var/lib/dpkg/lock / Unable to lock the administration directory (/var/lib/dpkg/)</title>
        <link>https://caloskao.org/ubuntu-apt-install-error-could-not-get-lock-var-lib-dpkg-lock-unable-to-lock-the-administration-directory-var-lib-dpkg/</link>
        <pubDate>Tue, 19 Jun 2018 04:29:44 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-apt-install-error-could-not-get-lock-var-lib-dpkg-lock-unable-to-lock-the-administration-directory-var-lib-dpkg/</guid>
        <description>&lt;img src="https://caloskao.org/images/logo/ubuntu.png" alt="Featured image of post [Ubuntu] 套件安裝錯誤: Could not get lock /var/lib/dpkg/lock / Unable to lock the administration directory (/var/lib/dpkg/)" /&gt;&lt;blockquote&gt;
&lt;p&gt;印象中本篇的 Ubuntu 版本是 16 或是 18，新版 Ubuntu 出現的錯誤訊息有些不同。&lt;/p&gt;
&lt;p&gt;如果錯誤訊息中包含的是 &lt;code&gt;/var/lib/dpkg/lock-frontend&lt;/code&gt;，請參考&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/ubuntu-how-to-solve-os-prompt-var-lib-dpkg-lock-frontend-when-run-apt-install-or-update/&#34; &gt;這一篇文章&lt;/a&gt;。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;如題，在使用 APT 安裝套件時，如果當下有其它的 APT process 執行中，便會出現下列錯誤訊息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;E&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Could&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lock&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lock&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;Resource&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;temporarily&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unavailable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;E&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Unable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lock&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;administration&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;another&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;process&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;首先，先查看是不是有其它 APT process 在執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep apt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Calos      &lt;span class=&#34;m&#34;&gt;18343&lt;/span&gt;  0.0  0.0  &lt;span class=&#34;m&#34;&gt;12948&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;904&lt;/span&gt; pts/9    S+   10:32   0:00 grep --color&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;auto apt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;指令列中出現的是 &lt;code&gt;grep&lt;/code&gt; 的參數，並不是 APT process，如果有出現其它的 process，建議先嘗試以正常方式去結束掉它，不要輕易的執接 kill process，因為有可能會導致系統損毀。&lt;/p&gt;
&lt;p&gt;這邊的例子是沒有出現，代表可能前一次在執行 APT 時因為某些因素導致意外結束，我們可以透過 &lt;code&gt;find&lt;/code&gt; 指令搜尋 &lt;code&gt;/var/cache/apt/archives/lock&lt;/code&gt;、&lt;code&gt;/var/lib/apt&lt;/code&gt; 與 &lt;code&gt;/var/lib/dpkg&lt;/code&gt; 這三個目錄下是否存在 lock file：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo find /var/cache/apt /var/lib/apt /var/lib/dpkg -name lock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/cache/apt/archives/lock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/lib/apt/lists/lock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/lib/dpkg/lock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;三個目錄分別出現一個 lock file，但是卻沒有 APT process 在執行，前一次執行 APT 沒有正常結束時就會有這個情況發生。至於為什麼錯誤訊息顯示的錯誤路徑是 &lt;code&gt;/var/lib/dpkg&lt;/code&gt;？簡單來說，&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/APT_%28Debian%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;APT&lt;/a&gt; 是一個套件管理工具，而實際上將套件安裝到系統的任務是由 &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Dpkg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dpkg&lt;/a&gt; 負責，而出現錯誤時我們通常都是看到 dpkg 跳警告而不是 APT。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;處理這種情況，先刪除 lock file 後，再重新執行 APT，大多時候通常只要這樣就可以了。但如果運氣非常好，就會有個&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/ubuntu-dpkg-warning-files-list-file-for-package-missing-assuming-package-has-no-files-currently-installed/&#34; &gt;大坑&lt;/a&gt;出現。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm /var/cache/apt/archives/lock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm /var/lib/apt/lists/lock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm /var/lib/dpkg/lock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/questions/15433/unable-to-lock-the-administration-directory-var-lib-dpkg-is-another-process&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;apt - Unable to lock the administration directory (/var/lib/dpkg/) is another process using it? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Dpkg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dpkg - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/APT_%28Debian%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;APT (Debian) - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/questions/309113/what-is-the-difference-between-dpkg-and-aptitude-apt-get&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What is the difference between dpkg and aptitude/apt-get? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Python] Django - &#34;no module named django.core.management&#34;</title>
        <link>https://caloskao.org/python-django-no-module-named-django-core-management/</link>
        <pubDate>Sun, 17 Jun 2018 16:55:56 +0800</pubDate>
        
        <guid>https://caloskao.org/python-django-no-module-named-django-core-management/</guid>
        <description>&lt;p&gt;利用 &lt;code&gt;django-admin.py&lt;/code&gt; 建立一個新專案後，準備要在專案目錄底下用 &lt;code&gt;manage.py&lt;/code&gt; 開始做事情時，出現了詭異的錯誤訊息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python manage.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Traceback (most recent call last):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  File &amp;#34;manage.py&amp;#34;, line 8, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    from django.core.management import execute_from_command_line
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ImportError: No module named django.core.management
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;錯誤訊息中的大意是找不到 &lt;code&gt;django.core.management&lt;/code&gt; 這個 module，利用下面的指令檢查一下 module source：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -c &amp;#34;from distutils.sysconfig import get_python_lib; print get_python_lib()&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/lib/python2.7/site-packages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看起來很正常，但是我安裝 Django 時是利用 Python 3 的 &lt;code&gt;pip&lt;/code&gt; 裝的，這時候就會有問題了！&lt;/p&gt;
&lt;p&gt;以我目前碰過的系統環境，大部分都會預載 Python 2，而 Python 2 與 Python 3 同時存在時，通常 python 指令都是指到 Python 2。&lt;/p&gt;
&lt;p&gt;可以輸入 &lt;code&gt;python -V&lt;/code&gt; 或是 &lt;code&gt;which python&lt;/code&gt; 去確認這件事情：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ python -V
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Python 2.7.14
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which python
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/bin/python
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -l /usr/bin/python
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lrwxrwxrwx 1 Calos None 16 Jun 18 00:21 /usr/bin/python -&amp;gt; /usr/bin/python2.7
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這時候換個方式去使用 &lt;code&gt;manage.py&lt;/code&gt;，使用 &lt;code&gt;python3&lt;/code&gt; 後就正常：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;python3&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;manage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Type&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;manage.py help &amp;lt;subcommand&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;specific&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subcommand&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Available&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subcommands&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;changepassword&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;createsuperuser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;django&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;check&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;compilemessages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;createcachetable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dbshell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;diffsettings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dumpdata&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;flush&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;inspectdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;loaddata&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;makemessages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;makemigrations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;migrate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;runfcgi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;shell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;showmigrations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sql&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sqlall&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sqlclear&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sqlcustom&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sqldropindexes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sqlflush&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sqlindexes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sqlmigrate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sqlsequencereset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;squashmigrations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;startapp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;startproject&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;syncdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;testserver&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;validate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sessions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;clearsessions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;staticfiles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;collectstatic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;findstatic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;runserver&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這時候我們可以確定是版本造成的問題，那如果想要變更 python 指令使用的版本，只要將現有的 &lt;code&gt;/usr/bin/python&lt;/code&gt; 刪掉後，重建連結指到 &lt;code&gt;python3&lt;/code&gt; 去即可：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -f /usr/bin/python
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /usr/bin/python3 /usr/bin/python
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這時候確認版本可以看到 python 指令執行的是 python 3&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -V
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Python 3.6.4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/14013728/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;python - Django - no module named django.core.management - Stack Overflow&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[MariaDB/MySQL] 建立連線帳號與指派權限</title>
        <link>https://caloskao.org/mariadb-mysql-create-account-and-grant-access-in-cli/</link>
        <pubDate>Thu, 14 Jun 2018 05:26:26 +0800</pubDate>
        
        <guid>https://caloskao.org/mariadb-mysql-create-account-and-grant-access-in-cli/</guid>
        <description>&lt;p&gt;建立帳號，其中「myaccount」是帳號，「mypassword」是密碼，主機為 localhost。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CREATE USER &amp;#39;myaccount&amp;#39;@&amp;#39;localhost&amp;#39; IDENTIFIED BY &amp;#39;mypassword&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;權限設定的指令結構如下（MariaDB 10.2）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GRANT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    priv_type [(column_list)]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      [, priv_type [(column_list)]] ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ON [object_type] priv_level
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    TO user  [IDENTIFIED [BY [PASSWORD] &amp;#39;password&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        |{VIA|WITH} plugin_name 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           [{USING|AS} &amp;#39;plugin_option&amp;#39;]]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        [, user [IDENTIFIED [BY [PASSWORD] &amp;#39;password&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        |{VIA|WITH} plugin_name] 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           [{USING|AS} &amp;#39;plugin_option&amp;#39;]]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    user_options...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GRANT PROXY ON user_specification
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    TO user_specification [, user_specification] ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    [WITH GRANT OPTION]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;user_options:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    [WITH with_option [with_option] ...]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;object_type:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    TABLE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | FUNCTION
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | PROCEDURE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;priv_level:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    *
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | *.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | db_name.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | db_name.tbl_name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | tbl_name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | db_name.routine_name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;with_option:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    GRANT OPTION
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | MAX_QUERIES_PER_HOUR count
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | MAX_UPDATES_PER_HOUR count
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | MAX_CONNECTIONS_PER_HOUR count
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | MAX_USER_CONNECTIONS count
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | MAX_STATEMENT_TIME time
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tls_option:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    SSL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | X509
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | CIPHER &amp;#39;cipher&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | ISSUER &amp;#39;issuer&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  | SUBJECT &amp;#39;subject&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡列出五種較常用的權限設定指令：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;給予使用者 &lt;code&gt;myaccount@localhost&lt;/code&gt; 全域最高權限&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIVILEGES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;myaccount&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WITH&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;OPTION&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;給予使用者 &lt;code&gt;myaccount@localhost&lt;/code&gt; 存取資料庫 &lt;code&gt;mydb&lt;/code&gt; 的所有權限（不含管理權限）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIVILEGES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mydb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;myaccount&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;給予 &lt;code&gt;myaccount@localhost&lt;/code&gt; 存取資料庫 &lt;code&gt;mydb&lt;/code&gt; 的 &lt;code&gt;SELECT&lt;/code&gt;、&lt;code&gt;INSERT&lt;/code&gt;、&lt;code&gt;UPDATE&lt;/code&gt;、&lt;code&gt;DELETE&lt;/code&gt; 權限：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;UPDATE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DELETE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mydb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;myaccount&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;移除使用者 &lt;code&gt;myaccount@localhost&lt;/code&gt; 在資料庫 &lt;code&gt;mydb&lt;/code&gt; 的所有權限（含管理權限）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;REVOKE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIVILEGES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mydb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;myaccount&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WITH&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;OPTION&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修改使用者 &lt;code&gt;myaccount@localhost&lt;/code&gt; 在資料庫 &lt;code&gt;mydb&lt;/code&gt; 僅能執行 &lt;code&gt;SELECT&lt;/code&gt;（具體作法為先移除所有權限後再 GRANT 指定權限）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;REVOKE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIVILEGES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mydb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;myaccount&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WITH&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;OPTION&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mydb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;myaccount&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;權限修改完畢後，記得輸入 &lt;code&gt;FLUSH PRIVILEGES;&lt;/code&gt; 重新載入權限，剛剛所做的異動才會生效。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;[References: &lt;a class=&#34;link&#34; href=&#34;https://mariadb.com/kb/en/library/create-user/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CREATE USER - MariaDB Knowledge Base&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://mariadb.com/kb/en/library/grant/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GRANT - MariaDB Knowledge Base&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Linux] 在 Bash 的自動完成中忽略英文字母大小寫</title>
        <link>https://caloskao.org/linux-make-tab-auto-completion-case-insensitive-in-the-terminal/</link>
        <pubDate>Tue, 05 Jun 2018 05:33:48 +0800</pubDate>
        
        <guid>https://caloskao.org/linux-make-tab-auto-completion-case-insensitive-in-the-terminal/</guid>
        <description>&lt;p&gt;Bash 在做自動完成（Auto Completion）的預設情況下，對於鍵入的文字大小寫是有區分的，自身平常鍵盤輸入是維持小寫，在碰到有大寫的情況下，要按著 Shift 鍵或是利用 CapsLock 切換成大寫，我自己會稍嫌麻煩，因此我把 Auto Completion 設定為忽略大小寫，這樣可以讓我在輸入指令時比較方便。&lt;/p&gt;
&lt;p&gt;設定的方式也非常簡單，在使用者家目錄下新增一個 &lt;code&gt;.inputrc&lt;/code&gt; 檔案，並將 &lt;code&gt;set completion-ignore-case On&lt;/code&gt; 加進去即可。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;echo &amp;#39;set completion-ignore-case On&amp;#39; &amp;gt;&amp;gt; ~/.inputrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/questions/87061/can-i-make-tab-auto-completion-case-insensitive-in-the-terminal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;command line - Can I make Tab auto-completion case-insensitive in the terminal? - Ask Ubuntu&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[MariaDB/MySQL] 在 Update 子查詢中使用 Limit 限制影響範圍</title>
        <link>https://caloskao.org/mariadb-mysql-use-limit-syntax-in-update-sub-query/</link>
        <pubDate>Thu, 31 May 2018 03:28:03 +0800</pubDate>
        
        <guid>https://caloskao.org/mariadb-mysql-use-limit-syntax-in-update-sub-query/</guid>
        <description>&lt;p&gt;一般情況下，我們可以很簡單的利用 &lt;code&gt;Limit&lt;/code&gt; 語法在進行資料異動中限制影響範圍。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;UPDATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;my_table&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;my_col&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但是涉及使用子查詢的情境時，這招便不管用了。&lt;/p&gt;
&lt;p&gt;例如今天資料長這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+--------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| number | my_col |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+--------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|      1 | a      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|      1 | a      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|      2 | b      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|      2 | b      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|      3 | c      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|      3 | c      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+--------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我想要更新前面兩種資料，也就是要下 &lt;code&gt;Limit 2&lt;/code&gt;，但是 number 一樣的話就要一起更新，所以 number 為 1 和 2 的資料應該都要 update，所以預期應該要有 4 筆記錄被更新。第一直覺是利用 子查詢應該可以做到：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;UPDATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;my_table&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;my_col&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;number&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DISTINCT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;number&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;my_table&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但是如果在 MariaDB/MySQL 5.5 或之後的版本執行時應該會得到 &lt;code&gt;[Err] 1235 - This version of MariaDB doesn&#39;t yet support &#39;LIMIT &amp;amp; IN/ALL/ANY/SOME subquery&#39;&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;那這樣要怎麼辦呢？工具是死的，人是活的，&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/a/12620023/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;StackOverflow 就有人想到辦法繞過去了&lt;/a&gt;。我們把 &lt;code&gt;Limit&lt;/code&gt; 語法放到第三層子查詢（子查詢中的子查詢）就好了！&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;UPDATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;my_table&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;my_col&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;number&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;number&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DISTINCT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;number&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;my_table&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;as&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sub_query_2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/6289729/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MySQL - UPDATE query with LIMIT - Stack Overflow&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 關閉圖形化介面</title>
        <link>https://caloskao.org/ubuntu-disable-gui/</link>
        <pubDate>Mon, 21 May 2018 05:18:56 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-disable-gui/</guid>
        <description>&lt;p&gt;有時候在進行 Server 安裝設定時會想要短暫用一下 GUI 偷懶一下，但是完成後就會需要把 GUI 拿掉，把 GUI 使用的系統資源保留給其它服務，但是日後有時候又有臨時需求，也不想要反覆安裝與移除 GUI 軟體，這時候就可以透過 systemctl 去做切換。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;使用下列指令後重新啟動系統，即可關閉 GUI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl set-default multi-user.target
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;使用下列指令後重新啟動系統，即可重新啟用 GUI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl set-default graphical.target
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;此方法適用於大部分的主流 GUI，如 GNOME、KDE 等。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;https://unix.stackexchange.com/questions/264393/how-to-disable-x-server-autostart-in-debian-jessie&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;systemd - How to disable X server autostart in Debian Jessie? - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 網路卡功能正常，但是在圖形介面上無法顯示</title>
        <link>https://caloskao.org/ubuntu-the-nic-is-normal-but-can-not-show-on-gui/</link>
        <pubDate>Thu, 03 May 2018 08:28:12 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-the-nic-is-normal-but-can-not-show-on-gui/</guid>
        <description>&lt;p&gt;今天在 Ubuntu 上進行系統更新，&lt;/p&gt;
&lt;p&gt;重新啟動後發現網路卡都消失了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_550177d83638_hu_40607f6ab15279ff.png&#34;
    width=&#34;1920&#34;
    height=&#34;1079&#34;
    srcset=&#34;https://caloskao.org/post/img_550177d83638_hu_40607f6ab15279ff.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;雖然選單看得到 Wi-Fi，但是在網路管理下一樣是沒有顯示，也掃描不到東西。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_3944312ce49f_hu_da5e2d531eb68d4f.png&#34;
    width=&#34;1920&#34;
    height=&#34;1079&#34;
    srcset=&#34;https://caloskao.org/post/img_3944312ce49f_hu_da5e2d531eb68d4f.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;先查看 &lt;code&gt;syslog&lt;/code&gt;，沒有出現任何錯誤訊息，使用其它指令如 &lt;code&gt;ifconfig&lt;/code&gt;、&lt;code&gt;iwconfig&lt;/code&gt;、&lt;code&gt;iwlist&lt;/code&gt; 等指令操作都是正常的，轉而查看設定檔 (&lt;code&gt;/etc/NetworkManager/NetworkManager.conf&lt;/code&gt;)，發現 &lt;code&gt;ifupdown&lt;/code&gt; 下的 &lt;code&gt;managed&lt;/code&gt; 值是 &lt;code&gt;false&lt;/code&gt;，直覺感受到是這個值引起的。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[main]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;plugins=ifupdown,keyfile,ofono
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dns=dnsmasq
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ifupdown]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;managed=false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;查看了一下 Debain 官網的 manpages，看起來確實有關係，節錄描述如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;IFUPDOWN SECTION This section contains ifupdown-specific options and thus only has effect when using the ifupdown plugin. managed&lt;/p&gt;
&lt;p&gt;If set to true, then interfaces listed in /etc/network/interfaces are managed by NetworkManager. If set to false, then any interface listed in /etc/network/interfaces will be ignored by NetworkManager. Remember that NetworkManager controls the default route, so because the interface is ignored, NetworkManager may assign the default route to some other interface.&lt;/p&gt;
&lt;p&gt;The default value is false.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;大意是指如果這個值設為 false，則在 &lt;code&gt;/etc/network/interfaces&lt;/code&gt; 下所設定的 NIC 全部都會被忽略，所以理論上將這個值設為 true 後，NetworkManager 應該就會把 &lt;code&gt;/etc/network/interfaces&lt;/code&gt; 的設定直接套進來用，這樣應該就能解決。&lt;/p&gt;
&lt;p&gt;若想要瞭解詳細的設定，可以參考 &lt;a class=&#34;link&#34; href=&#34;http://benjr.tw/94990&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Benjr 的文章&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;把值改為 &lt;code&gt;true&lt;/code&gt; 後，使用 &lt;code&gt;sudo service NetworkManager restart&lt;/code&gt; 重新啟動服務後，就恢復正常了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_a71a9b09e2c8_hu_dd358627f754a789.png&#34;
    width=&#34;1920&#34;
    height=&#34;1079&#34;
    srcset=&#34;https://caloskao.org/post/img_a71a9b09e2c8_hu_dd358627f754a789.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://manpages.debian.org/jessie/network-manager/NetworkManager.conf.5.en.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NetworkManager.conf(5) — network-manager — Debian jessie — Debian Manpages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://benjr.tw/94990&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux – NetworkManager 設定檔 – Benjr.tw&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Linux] 在指令模式下查看ZIP壓縮檔內的檔案</title>
        <link>https://caloskao.org/linux-show-zip-archive-files-in-cli/</link>
        <pubDate>Tue, 06 Mar 2018 03:12:36 +0800</pubDate>
        
        <guid>https://caloskao.org/linux-show-zip-archive-files-in-cli/</guid>
        <description>&lt;p&gt;在眾多的壓縮檔格式中&lt;/p&gt;
&lt;p&gt;ZIP 是歷史悠久且擁有良好跨平台相容性的壓縮檔格式&lt;/p&gt;
&lt;p&gt;在 Linux 指令模式下有數種不同的方法&lt;/p&gt;
&lt;p&gt;這邊整理四種常見的方法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Less&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;less&lt;/code&gt; 指令常用於查看文字檔，也可以説是「支援頁面捲動的 &lt;code&gt;cat&lt;/code&gt; 指令」，&lt;code&gt;less&lt;/code&gt; 指令也支援查看 ZIP 壓縮檔資訊，包含壓縮檔內的檔案清單。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_459271717251_hu_4ffa460d38ea6d46.png&#34;
    width=&#34;1920&#34;
    height=&#34;1426&#34;
    srcset=&#34;https://caloskao.org/post/img_459271717251_hu_4ffa460d38ea6d46.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;134&#34;
        data-flex-basis=&#34;323px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;UNZIP&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;unzip&lt;/code&gt; 是用於解開 ZIP 壓縮檔的指令，而參數 &lt;code&gt;-l&lt;/code&gt; 為列出壓縮檔內的檔案清單而不進行解壓縮。&lt;br&gt;
使用這個指令需要先安裝 &lt;a class=&#34;link&#34; href=&#34;http://www.info-zip.org/UnZip.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unzip&lt;/a&gt; 套件，大部分 Linux 作業系統會內建安裝。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_e17bf7f1d191_hu_c9172521a91ea6c9.png&#34;
    width=&#34;1920&#34;
    height=&#34;1422&#34;
    srcset=&#34;https://caloskao.org/post/img_e17bf7f1d191_hu_c9172521a91ea6c9.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;135&#34;
        data-flex-basis=&#34;324px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;zipinfo&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;zipinfo&lt;/code&gt; 為 &lt;code&gt;unzip&lt;/code&gt; 套件附帶的指令，與 &lt;code&gt;unzip -l&lt;/code&gt; 的差異只有輸出資訊的格式。&lt;br&gt;
與 &lt;code&gt;unzip&lt;/code&gt; 相同，使用這個指令需要先安裝 &lt;a class=&#34;link&#34; href=&#34;http://www.info-zip.org/UnZip.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unzip&lt;/a&gt; 套件，大部分 Linux 作業系統會內建安裝。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_3a9f779f32d6_hu_b046e88ec1aaa7bd.png&#34;
    width=&#34;1920&#34;
    height=&#34;1287&#34;
    srcset=&#34;https://caloskao.org/post/img_3a9f779f32d6_hu_b046e88ec1aaa7bd.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;149&#34;
        data-flex-basis=&#34;358px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;VIM&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;vim&lt;/code&gt; 是一套流行於程式開發的文字編輯器，內建 ZIP 檔案瀏覽功能，需要查看 ZIP 壓縮檔內某個檔案的內容的話，筆者較推薦使用 VIM，因為在 VIM 的 ZIP 瀏覽模式下可以藉由移動光標到你想要查看的檔案後按一下 Enter，就可以顯示檔案內容，而不用先解壓縮。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_f98560203abf_hu_23275ae23aba920e.png&#34;
    width=&#34;1920&#34;
    height=&#34;1410&#34;
    srcset=&#34;https://caloskao.org/post/img_f98560203abf_hu_23275ae23aba920e.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;136&#34;
        data-flex-basis=&#34;326px&#34;
    
&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://superuser.com/questions/216617/view-list-of-files-in-zip-archive-on-linux&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View list of files in ZIP archive on Linux - Super User&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 顯示 Welcome Message</title>
        <link>https://caloskao.org/ubuntu-%E9%A1%AF%E7%A4%BA-welcome-message/</link>
        <pubDate>Wed, 21 Feb 2018 03:05:30 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-%E9%A1%AF%E7%A4%BA-welcome-message/</guid>
        <description>&lt;p&gt;登入 Linux 時會執行 &lt;code&gt;/etc/update-motd.d&lt;/code&gt; 下的腳本&lt;/p&gt;
&lt;p&gt;所以想要觀看的話除了重新登入以外，以迴圈執行即可&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; i in /etc/update-motd.d/*&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; sudo &lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;或是用 &lt;code&gt;find&lt;/code&gt; 指令結合其 &lt;code&gt;-exec&lt;/code&gt; 參數也可以達到相同效果&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo find /etc/update-motd.d -type f -exec &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;有些版本的 Ubuntu 會自帶 &lt;code&gt;landscape-sysinfo&lt;/code&gt; 的資訊&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;  &lt;span class=&#34;mf&#34;&gt;0.01&lt;/span&gt;              &lt;span class=&#34;n&#34;&gt;Processes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;           &lt;span class=&#34;mi&#34;&gt;186&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Usage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;   &lt;span class=&#34;mf&#34;&gt;38.7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.33&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TB&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;logged&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;     &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Memory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;usage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt;               &lt;span class=&#34;ne&#34;&gt;IP&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;address&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;eth0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Swap&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;usage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;   &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt;                &lt;span class=&#34;ne&#34;&gt;IP&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;address&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tun0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;10.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Graph&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;this&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;manage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;this&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;system&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;at&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;landscape&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canonical&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如果需要這些資訊，安裝 &lt;code&gt;landscape-common&lt;/code&gt; 套件即可&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y landscape-common
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;使用前面所說的走訪 &lt;code&gt;/etc/update-motd.d&lt;/code&gt; 的方式可以看到全部的資訊&lt;/p&gt;
&lt;p&gt;僅需顯示 &lt;code&gt;landscape-sysinfo&lt;/code&gt; 的資訊的話，直接下 &lt;code&gt;landscape-sysinfo&lt;/code&gt; 指令即可&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/a/319532/656527&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;command line - How to see the details which Ubuntu shows at the time of login anytime? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Motd_%28Unix%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;motd (Unix) - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://manpages.ubuntu.com/manpages/xenial/man1/landscape-sysinfo.1.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu Manpage: landscape-sysinfo - Display a summary of the current system status&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 顯示使用中的 DNS Server 列表</title>
        <link>https://caloskao.org/ubuntu-show-dns-server-list/</link>
        <pubDate>Fri, 16 Feb 2018 14:11:22 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-show-dns-server-list/</guid>
        <description>&lt;p&gt;顯示使用中的 DNS Server 列表&lt;/p&gt;
&lt;p&gt;個人覺得最快也最簡單的方式就是直接 &lt;code&gt;cat /etc/resolv.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;執行後畫面輸出如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nameserver 192.168.1.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如果有設定多個 DNS Server&lt;/p&gt;
&lt;p&gt;則會出現多行 &lt;code&gt;nameserver x.x.x.x&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;雖然網路上有不少人給的答案是利用 &lt;code&gt;nmcli&lt;/code&gt; 去取得&lt;/p&gt;
&lt;p&gt;但筆者測試固定 IP 或 DHCP Client 都沒有顯示 &lt;code&gt;IP4.DNS&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;手邊的系統版本為 16.04.3 LTS (Xenial)&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/questions/152593/command-line-to-list-dns-servers-used-by-my-system&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Command-line to list DNS servers used by my system - Ask Ubuntu&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://unix.stackexchange.com/questions/28941/what-dns-servers-am-i-using&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;networking - What DNS servers am I using? - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[CentOS] 加入第三方套件庫</title>
        <link>https://caloskao.org/centos-add-third-party-package-repositories/</link>
        <pubDate>Fri, 26 Jan 2018 09:50:36 +0800</pubDate>
        
        <guid>https://caloskao.org/centos-add-third-party-package-repositories/</guid>
        <description>&lt;p&gt;如果想要安裝一個套件&lt;/p&gt;
&lt;p&gt;不想透過自行編譯或是手動下載 RPM 套件包進行安裝的話&lt;/p&gt;
&lt;p&gt;但是系統預設的套件庫又找不到想要安裝的套件時&lt;/p&gt;
&lt;p&gt;可以透過加入第三方套件庫來解決這個問題&lt;/p&gt;
&lt;!-- More --&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;在 &lt;a class=&#34;link&#34; href=&#34;https://wiki.centos.org/zh-tw/AdditionalResources/Repositories&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CentOS 官方 WIKI&lt;/a&gt; 可以找到一些可信任的第三方套件庫&lt;/p&gt;
&lt;p&gt;本文以 &lt;a class=&#34;link&#34; href=&#34;http://fedoraproject.org/wiki/EPEL&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Extra Packages for Enterprise Linux (EPEL)&lt;/a&gt; 作為範例實作。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;首先，確認自己的作業系統版本。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cat /etc/redhat-release
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CentOS release 6.9 (Final)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;可以看到作業系統版本為 6.9&lt;/p&gt;
&lt;p&gt;接著到 &lt;a class=&#34;link&#34; href=&#34;http://dl.fedoraproject.org/pub/epel/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://dl.fedoraproject.org/pub/epel/&lt;/a&gt; 找自己的版本號&lt;/p&gt;
&lt;p&gt;CentOS 6 目前最新的 EPEL 是對應到 6.8 版&lt;/p&gt;
&lt;p&gt;所以選擇最新的就可以了&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;複製好下載連結後，到系統開始著手新增套件庫&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 利用 wget 指令下載 EPEL 6.8 RPM 套件包
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 安裝套件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpm -ivh epel-release-6-8.noarch.rpm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 啟用套件庫
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo yum-config-manager --enable epel.repo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 清除套件快取資料
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo yum clean -y all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 更新套件清單
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo yum update -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;http://blog.itist.tw/2015/03/add-3rd-party-repository-on-centos.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;找不到可靠的套件來源嗎？幫 CentOS 6 加入可靠的第三方的套件庫 | IT 技術家&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://wiki.centos.org/zh-tw/AdditionalResources/Repositories&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;zh-tw/AdditionalResources/Repositories - CentOS Wiki&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;http://fedoraproject.org/wiki/EPEL&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EPEL - Fedora Project Wiki&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] dpkg: warning: files list file for package * missing; assuming package has no files currently installed</title>
        <link>https://caloskao.org/ubuntu-dpkg-warning-files-list-file-for-package-missing-assuming-package-has-no-files-currently-installed/</link>
        <pubDate>Fri, 26 Jan 2018 08:15:36 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-dpkg-warning-files-list-file-for-package-missing-assuming-package-has-no-files-currently-installed/</guid>
        <description>&lt;p&gt;某天在 Ubuntu 上使用 &lt;code&gt;apt-get install&lt;/code&gt; 安裝套件時狂噴 warning &amp;hellip;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lockfile&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;libhtml&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tagset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;perl&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;normalize&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;update&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;inetd&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x11proto&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dri2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dev&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;npmlog&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;liblockfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bin&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;liblzma5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;amd64&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;liblzma5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i386&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gnupginterface&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;libhttp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;perl&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pdksh&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;missing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;assuming&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;has&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;no&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currently&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;族繁不及備載&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;但是檢查套件狀態顯示滿正常的&amp;hellip;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;grep&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;ii&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt;    &lt;span class=&#34;mf&#34;&gt;1.4.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;simple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fast&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;generation&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;RFC4122&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;UUIDs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JavaScript&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;library&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;dpkg&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;status&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;libjs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ok&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Priority&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Section&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;web&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Installed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Maintainer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Ubuntu&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Developers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;devel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;discuss&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Architecture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.4.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Recommends&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;javascript&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;common&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Breaks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;uuid&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.3.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;20111202&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;~)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;simple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fast&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;generation&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;RFC4122&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;UUIDs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JavaScript&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;library&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;nx&#34;&gt;Node&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;an&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;event&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;based&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;side&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JavaScript&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;engine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;nx&#34;&gt;Node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;UUID&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;library&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;usable&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;either&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;directly&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;web&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browsers&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;nx&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Node&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;module&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Generate&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;RFC4122&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;UUIDs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Runs&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;js&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browsers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Cryptographically&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strong&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;generation&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;supporting&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;platforms&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.1&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;K&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minified&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;gzip&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;nx&#34;&gt;This&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;contains&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;uuid&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;usable&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;directly&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;web&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browsers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Original&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Maintainer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Debian&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Javascript&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Maintainers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pkg&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;javascript&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;devel&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;alioth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;debian&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Homepage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//github.com/broofa/node-uuid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;而且你使用套件的時候還真的不能用&amp;hellip;&lt;/p&gt;
&lt;p&gt;研究了好一陣子&lt;/p&gt;
&lt;p&gt;其中一種可能性是套件損壞&lt;/p&gt;
&lt;p&gt;但是可以突然壞一狗票套件也是很神奇&lt;/p&gt;
&lt;p&gt;而且執行 &lt;code&gt;apt-get -f install&lt;/code&gt; 去修復也無效&lt;/p&gt;
&lt;p&gt;只好試試看重新安裝套件&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install --reinstall -y libjs-node-uuid
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;重新安裝後，執行 &lt;code&gt;apt-get install&lt;/code&gt; 進行任何操作後會發現 libjs-node-uuid 從 warming 名單上消失了&lt;/p&gt;
&lt;p&gt;因為壞掉的套件多達 100 多個&lt;/p&gt;
&lt;p&gt;所以先執行一次 &lt;code&gt;apt-get install&lt;/code&gt;，然後把 output 存下來&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y rsyslog &amp;gt; apt.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接著使用 vim 或其他編輯器，將 dpkg warning 以外的文字全部移除後存檔&lt;/p&gt;
&lt;p&gt;然後執行以下指令重新安裝損壞的套件（先使用 &lt;code&gt;sudo su -&lt;/code&gt; 切換為 root）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat apt.log | awk &amp;#39;{print substr($8, 2, length($8)-2)}&amp;#39; | xargs apt-get install --reinstall -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;當然，你也可以在修復套件前&lt;/p&gt;
&lt;p&gt;先把不需要的套件挑出來，以 &lt;code&gt;apt-get --purge remove&lt;/code&gt; 先移除&lt;/p&gt;
&lt;p&gt;再修復剩下的套件&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Git] Unable to find remote helper for &#39;https&#39;</title>
        <link>https://caloskao.org/git-unable-to-find-remote-helper-for-https/</link>
        <pubDate>Fri, 26 Jan 2018 07:44:23 +0800</pubDate>
        
        <guid>https://caloskao.org/git-unable-to-find-remote-helper-for-https/</guid>
        <description>&lt;p&gt;當使用 git 以 HTTPS 連線 clone repository 時出現 &amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unable to find remote helper for &amp;lsquo;https&amp;rsquo;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;可能是在安裝 git 時因為缺少 libcurl 套件所導致 但是環境沒有 libcurl 時一樣可以安裝，只是會不能走 HTTPS 通道而已 若要修復這個問題，只需安裝 libcurl 後重新編譯安裝 git 就好：&lt;/p&gt;
&lt;p&gt;Ubuntu 或 Debian，先安裝 &lt;code&gt;libcurl4-openssl-dev&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y libcurl4-openssl-dev 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CentOS/RedHat/Fedora，安裝 &lt;code&gt;libcurl-devel.x86_64&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo yum install -y libcurl-devel.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;回到 git 原始碼目錄重新編譯並安裝 git&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/git-2.8.16
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./configure
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/8329485/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linux - Unable to find remote helper for &amp;lsquo;https&amp;rsquo; during git clone - Stack Overflow&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 變更網路介面卡名稱</title>
        <link>https://caloskao.org/ubuntu-nic-rename/</link>
        <pubDate>Fri, 19 Jan 2018 03:39:07 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-nic-rename/</guid>
        <description>&lt;p&gt;有時候新增網路卡後，看系統預設的名稱會不知道哪一張網路卡是做什麼用的&lt;/p&gt;
&lt;p&gt;又或者是網路卡會跳號，龜毛人如我看了就會不舒服&lt;/p&gt;
&lt;p&gt;就像這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ifconfig -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;enp0s3    Link encap:Ethernet  HWaddr 08:00:27:51:3c:5b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          inet6 addr: fe80::a00:27ff:fe51:3c5b/64 Scope:Link
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX packets:51 errors:0 dropped:0 overruns:0 frame:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          collisions:0 txqueuelen:1000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX bytes:7787 (7.7 KB)  TX bytes:9395 (9.3 KB)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;enp0s8    Link encap:Ethernet  HWaddr 08:00:27:f4:06:a1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          BROADCAST MULTICAST  MTU:1500  Metric:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          collisions:0 txqueuelen:1000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;enp0s9    Link encap:Ethernet  HWaddr 08:00:27:7d:4c:81
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          BROADCAST MULTICAST  MTU:1500  Metric:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          collisions:0 txqueuelen:1000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lo        Link encap:Local Loopback
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          inet addr:127.0.0.1  Mask:255.0.0.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          inet6 addr: ::1/128 Scope:Host
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          UP LOOPBACK RUNNING  MTU:65536  Metric:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          collisions:0 txqueuelen:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;我們可以藉由 &lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/udev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux udev&lt;/a&gt; 將網路卡名稱更改成自己喜歡的名稱&lt;/p&gt;
&lt;p&gt;首先，使用 &lt;code&gt;sudo vim /etc/udev/rules.d/75-persistent-net-generator.rules&lt;/code&gt; 指令建立一個規則檔案，將新名稱與網路卡 MAC 位址寫入 (MAC 在前面的 &lt;code&gt;ifconfig -a&lt;/code&gt; 指令有列出 )&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 格式: SUBSYSTEM==&amp;#34;net&amp;#34;, ACTION==&amp;#34;add&amp;#34;, ATTR{address}==&amp;#34;網路卡MAC位址&amp;#34;, NAME=&amp;#34;網路卡新名稱&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SUBSYSTEM==&amp;#34;net&amp;#34;, ACTION==&amp;#34;add&amp;#34;, ATTR{address}==&amp;#34;08:00:27:51:3c:5b&amp;#34;, NAME=&amp;#34;eth0&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SUBSYSTEM==&amp;#34;net&amp;#34;, ACTION==&amp;#34;add&amp;#34;, ATTR{address}==&amp;#34;08:00:27:f4:06:a1&amp;#34;, NAME=&amp;#34;eth1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SUBSYSTEM==&amp;#34;net&amp;#34;, ACTION==&amp;#34;add&amp;#34;, ATTR{address}==&amp;#34;08:00:27:7d:4c:81&amp;#34;, NAME=&amp;#34;eth2&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;存檔後重新啟動系統，就可以將新的網路卡名稱套用至系統了&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/a/464842/656527&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;networking - How to rename an Ethernet interface? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://kolmogolovi.blogspot.tw/2011/11/linux-udev-1.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;random notes: Linux 的 udev 是個有趣又有用的玩具（1）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/udev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;udev - Debian Wiki&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>Ubuntu 網路卡設定</title>
        <link>https://caloskao.org/ubuntu-nic-configure/</link>
        <pubDate>Thu, 18 Jan 2018 09:29:53 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-nic-configure/</guid>
        <description>&lt;blockquote&gt;
&lt;p&gt;Ubuntu 從 17.10 版開始使用 &lt;a class=&#34;link&#34; href=&#34;https://netplan.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Netplan&lt;/a&gt; 作為系統預設的網路設定方式。如果您使用的 Ubuntu 為 17.10 以後的版本，建議參考&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/using-netplan-to-configure-ubuntu-nic/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這篇文章&lt;/a&gt;進行設定。&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;使用 &lt;code&gt;ifconfig&lt;/code&gt; 指令查看網路卡狀態&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;eth0      Link encap:Ethernet  HWaddr 08:00:27:51:3c:5b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          inet6 addr: fe80::a00:27ff:fe51:3c5b/64 Scope:Link
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX packets:1460 errors:0 dropped:0 overruns:0 frame:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          TX packets:1406 errors:0 dropped:0 overruns:0 carrier:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          collisions:0 txqueuelen:1000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX bytes:127041 (127.0 KB)  TX bytes:299866 (299.8 KB)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lo        Link encap:Local Loopback
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          inet addr:127.0.0.1  Mask:255.0.0.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          inet6 addr: ::1/128 Scope:Host
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          UP LOOPBACK RUNNING  MTU:65536  Metric:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          collisions:0 txqueuelen:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;網路卡設定在 &lt;code&gt;/etc/network/interfaces&lt;/code&gt;，以編輯器開啟 (e.g. vim, nano &amp;hellip; etc)，預設應該長的像這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# This file describes the network interfaces available on your system&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# and how to activate them. For more information, see interfaces(5).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; /etc/network/interfaces.d/*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# The loopback network interface&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;auto lo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iface lo inet loopback
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# The primary network interface&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;auto eth0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iface eth0 inet dhcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;針對幾個設定檔中出現的關鍵字簡單說明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;auto&lt;/code&gt;：網路介面卡應該在系統啟動時自動套用設定並啟用，這個設定就是來自於 &lt;code&gt;/etc/network/interfaces&lt;/code&gt; 這個檔案&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lo&lt;/code&gt; / &lt;code&gt;eth0&lt;/code&gt;：網路卡介面名稱&lt;/li&gt;
&lt;li&gt;&lt;code&gt;iface&lt;/code&gt;：介面 (interface) 的簡稱&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inet&lt;/code&gt;：在介面上使用 TCP/IP 網路&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loopback&lt;/code&gt;：回送，此類型介面為虛擬介面，經由此介面送出的封包會直接傳給自己，通常作業系統都預設有一個 loopback 介面，其 IP 為 127.0.0.1，一種簡單的網路卡功能檢測方式為 ping 127.0.0.1，這個動作就是在網路卡上藉由測試傳送與接收 ping 封包是否正常來驗證網路卡功能是否出問題&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dhcp&lt;/code&gt;：使用 DHCP 自動取得網路設定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;依照關鍵字說明，解讀上面的設定檔具有：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;有2個介面 (網路介面卡)，一個是實體網路卡 &lt;code&gt;eth0&lt;/code&gt;，一個是虛擬網路卡 &lt;code&gt;lo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;實體網路卡 &lt;code&gt;eth0&lt;/code&gt; 為自動取得網路設定，若區域網路內有 DHCP Server，則網路卡啟用後應該要能自動向 DHCP Server 取得一組 IP&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;若需要將網路卡設定為固定 IP，設定大概是長這樣 (以 eth0 為例)：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iface eth0 inet static
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    address 192.168.0.100
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    netmask 255.255.255.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    gateway 192.168.0.254
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    dns-nameservers 192.168.0.254 168.95.1.1 8.8.8.8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;針對新出現的關鍵字做簡單說明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;static&lt;/code&gt;：使用固定 IP 設定&lt;/li&gt;
&lt;li&gt;&lt;code&gt;address&lt;/code&gt;：固定 IP 位址&lt;/li&gt;
&lt;li&gt;&lt;code&gt;netmask&lt;/code&gt;：&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Subnetwork&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;網路遮罩&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gateway&lt;/code&gt;：&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Gateway_%28telecommunications%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;網路閘道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dns-nameservers&lt;/code&gt;：DNS 伺服器，若要使用多個 DNS，則使用空格區隔&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;其他更進階的設定，可以參考 Debain Wiki：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/NetworkConfiguration&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NetworkConfiguration - Debian Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/BridgeNetworkConnections&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BridgeNetworkConnections - Debian Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/DebianIPv6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DebianIPv6 - Debian Wiki&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;修改完網路設定後，需要使用以下指令重新讀取網路設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /etc/init.d/networking restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;上面的指令是 for all interface，可能會造成部分連線中斷&lt;/p&gt;
&lt;p&gt;也可以透過 &lt;code&gt;ifdown&lt;/code&gt; 與 &lt;code&gt;ifup&lt;/code&gt; 指令關閉與開啟網路卡來套用新設定&lt;/p&gt;
&lt;p&gt;避免其他沒有進行異動的介面卡網路中斷&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ifdown eth0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; ifup eth0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.longwin.com.tw/2011/02/linux-network-set-example-2011/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Debian / Ubuntu Linux 網路設定範例 - Tsung&amp;rsquo;s Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://askubuntu.com/questions/431682/how-do-i-use-etc-network-interfaces-instead-of-network-manager&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;networking - How do I use /etc/network/interfaces instead of network-manager - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>[Cygwin] 啟用 Ctrl &#43; 鍵盤方向鍵在單字間快速移動</title>
        <link>https://caloskao.org/cygwin-%E5%95%9F%E7%94%A8-ctrl-%E9%8D%B5%E7%9B%A4%E6%96%B9%E5%90%91%E9%8D%B5%E5%9C%A8%E5%96%AE%E5%AD%97%E9%96%93%E5%BF%AB%E9%80%9F%E7%A7%BB%E5%8B%95/</link>
        <pubDate>Fri, 24 Nov 2017 06:51:39 +0800</pubDate>
        
        <guid>https://caloskao.org/cygwin-%E5%95%9F%E7%94%A8-ctrl-%E9%8D%B5%E7%9B%A4%E6%96%B9%E5%90%91%E9%8D%B5%E5%9C%A8%E5%96%AE%E5%AD%97%E9%96%93%E5%BF%AB%E9%80%9F%E7%A7%BB%E5%8B%95/</guid>
        <description>&lt;p&gt;在預設情況下，想要使用 &lt;code&gt;Ctrl&lt;/code&gt; + 左右方向鍵在指令列中的單字間快速移動光標時會無法移動，且出現一些字元&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;;5C # ctrl + right arrow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;;5D # ctrl + left arrow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如果想要啟用這個功能，可以在使用者家目錄下新增一個 &lt;code&gt;.inputrc&lt;/code&gt; 檔案，並加入以下內容&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# ctrl + right arrow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;\e[1;5C&amp;#34;: forward-word
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# ctrl + left arrow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;\e[1;5D&amp;#34;: backward-word
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;新增完成後&lt;/p&gt;
&lt;p&gt;鍵入指令 &lt;code&gt;bind -f ~/.inputrc&lt;/code&gt; 使 &lt;code&gt;.inputrc&lt;/code&gt; 設定生效&lt;/p&gt;
&lt;p&gt;這時候就可以使用 &lt;code&gt;Ctrl&lt;/code&gt; + 左右鍵去移動光標了&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://superuser.com/questions/488157/how-do-i-make-ctrl-arrow-keys-move-forward-backward-a-word-at-a-time-in-cygwin-b&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;How do I make ctrl-arrow keys move forward/backward a word at a time in Cygwin bash? - StackExchange&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://trumaze.blogspot.tw/2011/04/how-to-configure-cygwin-to-use-ctrl.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TruMaze: How to configure cygwin to use ctrl + arrow to move cursor forward / backward&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>Yamaha Force 155 - 空濾填隙片安裝</title>
        <link>https://caloskao.org/yamaha-force-155-air-filter-baffle-installation/</link>
        <pubDate>Thu, 09 Nov 2017 15:25:45 +0800</pubDate>
        
        <guid>https://caloskao.org/yamaha-force-155-air-filter-baffle-installation/</guid>
        <description>&lt;p&gt;Force 與 SMAX 傳動箱上方的空濾盒設計是一致的，而進氣口旁邊的間隙過大（如下圖中紅框處所示），行進中後輪會帶起沙塵，這些沙塵之後從進氣口被吸進去，造成空濾海綿的壽命非常短。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_8e577a5ff533_hu_323f80e261d88fe4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_8e577a5ff533_hu_323f80e261d88fe4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;為了有效延長空濾海綿的壽命，在網路上買了一個現成的空濾填隙片來安裝。&lt;/p&gt;
&lt;p&gt;商品是二手的，網路上有很多類似的，需要的話請自行上各大網拍搜尋「&lt;strong&gt;空濾填隙片&lt;/strong&gt;」或是「&lt;strong&gt;空濾擋片&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;正面印有 Force 字樣。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_6359d2935f2a_hu_9f77c0a61e6d3dab.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_6359d2935f2a_hu_9f77c0a61e6d3dab.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;背面空空如也，有一些刮痕，但外觀不是重點，沒差。 
&lt;img src=&#34;https://caloskao.org/post/img_d1db763aa42e_hu_95da7ea343bac04c.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_d1db763aa42e_hu_95da7ea343bac04c.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;將空濾盒外蓋與空濾海綿本體卸下後直接卡上去即可，非常簡單。&lt;/p&gt;
&lt;p&gt;裝上去後雖然不到完全貼合，不過也能遮掉大部分的間隙了。（空濾盒拆卸步驟可參考&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/yamaha-force-155-change-air-filter/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這篇文章&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_ac89419d52b6_hu_d289ed3831c24e99.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_ac89419d52b6_hu_d289ed3831c24e99.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;安裝後行駛 1000 公里，查看一下空濾海綿狀況，跟新的一樣。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_b77581223b4b_hu_9b5fd5211600891f.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_b77581223b4b_hu_9b5fd5211600891f.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;來一張特寫，可以看到還是會沾一點點塵土，不過無大礙。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_34e5005fdd04_hu_5b6631b3124cfa6b.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_34e5005fdd04_hu_5b6631b3124cfa6b.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;行駛 2000 公里後的狀況，相機色調雖然忘記特別調整，但是一樣看得出來根本沒什麼變化。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_83bfad020206_hu_4f069e43345a9ec6.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_83bfad020206_hu_4f069e43345a9ec6.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;一樣把距離拉近來看，其實也只多了一點點塵土，效果很不錯。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_f7e9534ef167_hu_15c4982ebd009c24.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_f7e9534ef167_hu_15c4982ebd009c24.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;放一張沒有安裝空濾擋片時的照片當對照組（里程 2000 公里），我想差異就不用多說了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_c562bdad0ad9_hu_9daa2af2a122d008.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_c562bdad0ad9_hu_9daa2af2a122d008.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;至於價格的部分，如果不要求質感的話，大概跟一個原廠空濾海綿的價格差不了多少，想要延長空濾海綿壽命的話，這是一個很值得購入的小部件，推薦給大家。&lt;/p&gt;</description>
        </item>
        <item>
        <title>Yamaha Force 155 - 10000 公里大保養</title>
        <link>https://caloskao.org/yamaha-force-155-10000-km-maintenance/</link>
        <pubDate>Fri, 20 Oct 2017 05:24:02 +0800</pubDate>
        
        <guid>https://caloskao.org/yamaha-force-155-10000-km-maintenance/</guid>
        <description>&lt;p&gt;車子牽到現在歷經 8 個月，里程突破了 10000 公里，按照原廠保養手冊的說明，每 10000 公里/每半年，或是發聲明顯的點火異常、引擎熄火、過熱等情況，就需要進行點火系統的保養。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_38c9a1ee9bf2_hu_4ea26f0fd2fd1e0b.png&#34;
    width=&#34;1920&#34;
    height=&#34;1247&#34;
    srcset=&#34;https://caloskao.org/post/img_38c9a1ee9bf2_hu_4ea26f0fd2fd1e0b.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;153&#34;
        data-flex-basis=&#34;369px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;雖然覺得對於新車來說，在 10000 公里保養好像有點多餘，但不是多大的花費，也可以來瞭解一萬大保養究竟是不是必要的。&lt;/p&gt;
&lt;p&gt;在這邊先簡單描述這 10000 公里的使用狀況，車輛無改全原廠，平日通勤里程約 40 公里，而騎乘習慣是時速 50 ~ 80 公里居多，起步時油門會帶多一點但鮮少一敗，未添加過汽油精。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;首先，先把節流閥取下來。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_624d2d078bd0_hu_f796b5f2e27b0652.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_624d2d078bd0_hu_f796b5f2e27b0652.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;節流閥內部特寫，不是非常髒，狀況屬於正常的。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_104aad8caca4_hu_e35d9c86ba697dbb.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_104aad8caca4_hu_e35d9c86ba697dbb.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;使用福士節氣門清潔劑清潔。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_6c80ebe67b30_hu_d7a8814d30bbdd6.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_6c80ebe67b30_hu_d7a8814d30bbdd6.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;拆下火星塞，從火星塞座噴入泡沫清潔劑，讓內部積碳軟化，可以讓積碳更好排出來。而火星塞並不是在這時候順便換，要等後面油路系統清潔完後才會更換。結果拆下來後忘記拍火星塞狀況，只記得呈現局部褐色，從外觀判斷燃燒狀況很好，還可以繼續用，但這次還是做預防性更換。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_d47d4694bd6d_hu_27596d8724c8fe88.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_d47d4694bd6d_hu_27596d8724c8fe88.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;熟識的車行沒有超音波清洗機，這次使用的是俗稱「吊點滴」的方式，用藥水去清潔車輛的油路。因為藥水對油箱內的零件比較不好，因此需要外接鋼瓶去頂替換油箱的位置，讓車子吸入藥水，對整個油路系統做清潔。使用的是福士油路系統清潔劑。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_16e4d78f7805_hu_8daf5472f133630e.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_16e4d78f7805_hu_8daf5472f133630e.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;將鋼瓶吊上車。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_eb0a318eac40_hu_dab07164fcd3459a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_eb0a318eac40_hu_dab07164fcd3459a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接上高壓氣瓶，發動車輛。因為原先吸入的汽油被換成藥水，車輛需要發動一陣子才會發起來，這是正常情況。接著就等藥水用完就完成了，這個過程大概需要 2 ~ 3 個小時。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_b51d4f6e6793_hu_8ed396bf604cc490.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_b51d4f6e6793_hu_8ed396bf604cc490.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;中間跑去其他地方辦事，回來的時候車輛都已經復原了，傳動箱也檢查完了沒拍到，不過老闆表示零件都正常，只做簡單的高壓氣體噴槍把傳動鄉內部的粉塵噴掉。&lt;/p&gt;
&lt;p&gt;機油還沒更換，平常換機油都是拆車輛右側的機油尺與左側的機油孔，這次為了檢查機油濾網，於是這次從油底殼這邊拆。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_c0ce648fc62c_hu_e2b7be90676a01ab.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_c0ce648fc62c_hu_e2b7be90676a01ab.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;油底殼的孔比較大，自行拆卸的話建議先從機油孔把機油漏掉，不然一次噴下來很容易濺出。這機油一樣還是很黑，不管騎到 2000 還是超過 2500 都一樣，但拉轉還是很順暢，覺得有機會還是應該要硬撐著看里程需要多長才會感受到衰退。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_5a90bc19e1b2_hu_34966a7620d5a5de.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_5a90bc19e1b2_hu_34966a7620d5a5de.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;機油濾網本體，狀況很正常，繼續沿用。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_ade15523d9ad_hu_fc0ad697a41477a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_ade15523d9ad_hu_fc0ad697a41477a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;進氣空濾是自行更換，更換方式可參考&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/yamaha-force-155-change-air-filter/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這篇&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;總結一下這次保養的內容如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;項目&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;規格&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;價格&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;點火系統保養&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;節流閥、噴油嘴、油路清潔&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;1200&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;傳動系統檢查&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;100&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;火星塞&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;NGK CPR8EA-9&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;350&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;機油&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;ZeroMoto ZeroSports Ester-Base 5W-50&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;650&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;齒輪油&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Mageter 85W-140 (180 cc)&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;進氣空濾 (副廠，自行更換)&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;52S-E4451-00&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;109&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;小計&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2409&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;至於整個大保養完後有什麼差異，說實在話還真的沒有什麼特別的感覺，但車子騎起來比較順暢一點倒也是真的，不過大保養並不會讓車子的馬力增加，只是讓引擎恢復該有的動力輸出水準而已，所以不是很在意那一點點馬力的車主，我會建議可以累積多一點里程再保養，或是等到油耗明顯下降或是動力明顯衰退也可以，下一次我也會把里程再拉長一點再進行保養看看。&lt;/p&gt;</description>
        </item>
        <item>
        <title>Yamaha Force 155 - 10000 公里心得</title>
        <link>https://caloskao.org/yamaha-force-155-experience-of-10000-km/</link>
        <pubDate>Sun, 08 Oct 2017 14:27:08 +0800</pubDate>
        
        <guid>https://caloskao.org/yamaha-force-155-experience-of-10000-km/</guid>
        <description>&lt;p&gt;自從去年 11月底牽車後&lt;/p&gt;
&lt;p&gt;經過了 7 多個月，里程終於來到了 10000 公里（現在 PO 文已經是 3 個月後了）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_beb61c2ba319_hu_d1e540c1762749d2.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_beb61c2ba319_hu_d1e540c1762749d2.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;在正文開始前先講講入手 Force 的原因&lt;/p&gt;
&lt;p&gt;時間回到去年 11 月時參加試乘活動（延伸閱讀：&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/test-ride-yamaha-force-155/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;新車試駕 - Yamaha Force 155 &lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_4c0fb30d83ba_hu_f6585ce977dd7afc.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2559&#34;
    srcset=&#34;https://caloskao.org/post/img_4c0fb30d83ba_hu_f6585ce977dd7afc.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這不試還好，一試就變車主&lt;/p&gt;
&lt;p&gt;試完車後過兩週跟車行訂車&lt;/p&gt;
&lt;p&gt;第三週就領牌上路了（二代鵝掰掰）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_86582e9f0163_hu_3e7c4439070c3fcc.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_86582e9f0163_hu_3e7c4439070c3fcc.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這個故事告訴我們 不要亂試車(X) 好車值得入手(O)&lt;/p&gt;
&lt;p&gt;所以就有了後續一系列的文&lt;/p&gt;
&lt;p&gt;心得分為五個部分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;部品：加裝或改裝部品的價位與心得&lt;/li&gt;
&lt;li&gt;日常保養：保養方式與選用的耗材&lt;/li&gt;
&lt;li&gt;油耗：Force 在這 10000 公里內的油耗表現&lt;/li&gt;
&lt;li&gt;騎乘感受&lt;/li&gt;
&lt;li&gt;總結&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;部品&#34;&gt;部品
&lt;/h2&gt;&lt;h3 id=&#34;椅墊--263km--2100-含施工&#34;&gt;椅墊 / 263KM / $2100 (含施工)
&lt;/h3&gt;&lt;p&gt;Force 不愧為 SMAX 的雙生車種，&lt;strong&gt;椅墊也是一樣的難坐&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;這點在試乘活動時已充分的體驗到了&lt;/p&gt;
&lt;p&gt;所以剛牽到車後沒多久就去知名的台南新洽興做修改&lt;/p&gt;
&lt;p&gt;把中間隆起的地方直接削掉&lt;/p&gt;
&lt;p&gt;雖然這樣安全帽就不能放車箱內了&lt;/p&gt;
&lt;p&gt;但就算不削，全罩帽也是得硬塞才塞的下去&lt;/p&gt;
&lt;p&gt;不如削去，換取更好的乘坐感&lt;/p&gt;
&lt;p&gt;也順便換了止滑效果較好的坐墊外皮&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_69d2b34f44b2_hu_84fd2a161b88c5b4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_69d2b34f44b2_hu_84fd2a161b88c5b4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;ybsmax-三點式避震器上座強化支架--596km--800&#34;&gt;Y.B.S.MAX 三點式避震器上座強化支架 / 596KM / $800
&lt;/h3&gt;&lt;p&gt;SMAX 曾有發生過避震器上座銲點強度不足導致鎖點斷裂的問題&lt;/p&gt;
&lt;p&gt;在後面的年度改款車與 Force 都已做出銲點強化&lt;/p&gt;
&lt;p&gt;但強度上大概也是堪用而已&lt;/p&gt;
&lt;p&gt;雙載時車架可能會歪一邊&lt;/p&gt;
&lt;p&gt;安裝後明顯可以感受到路感清晰許多，過彎時也更加安心&lt;/p&gt;
&lt;p&gt;也不用擔心長期雙載車架會歪掉&lt;/p&gt;
&lt;p&gt;但是原廠後避震的設定比較運動化些&lt;/p&gt;
&lt;p&gt;日常通勤時間如果比較長，可能會比較容易疲累&lt;/p&gt;
&lt;p&gt;如果有預算，建議上一組改裝後避震&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_19c9ea1a609f_hu_1d2f567ed1f3047c.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_19c9ea1a609f_hu_1d2f567ed1f3047c.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;mos-水箱護網--1100km--250&#34;&gt;MOS 水箱護網 / 1100KM / $250
&lt;/h3&gt;&lt;p&gt;Force 的冷排鰭片很薄&lt;/p&gt;
&lt;p&gt;路上的碎石或是洗車時水柱力道過大都很容易讓冷排鰭片變形&lt;/p&gt;
&lt;p&gt;冷排鰭片變形太嚴重，散熱效果也會影響到&lt;/p&gt;
&lt;p&gt;因此安裝 MOS 的水箱護網來保護冷排鰭片&lt;/p&gt;
&lt;p&gt;或多或少應該都會減少一點進氣量&lt;/p&gt;
&lt;p&gt;但儀表上的水溫警示燈倒是沒亮過&lt;/p&gt;
&lt;p&gt;具體對進氣量影響有多大&lt;/p&gt;
&lt;p&gt;以後有加裝水溫表話再寫一篇測試文來驗證&lt;/p&gt;
&lt;p&gt;(延伸閱讀：&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/yamaha-force-155-mos-%e6%b0%b4%e7%ae%b1%e8%ad%b7%e7%b6%b2%e6%94%b9%e8%a3%9d/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yamaha Force 155 – MOS 水箱護網改裝&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_0dfb570adaa4_hu_e715fba81d81448.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_0dfb570adaa4_hu_e715fba81d81448.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;force-155-彩貼--560-km--1200&#34;&gt;Force 155 彩貼 / 560 KM / $1200
&lt;/h3&gt;&lt;p&gt;當初準備牽車時本來要牽黑色&lt;/p&gt;
&lt;p&gt;剛好在訂車前看到有岀這款彩貼&lt;/p&gt;
&lt;p&gt;整個有燒到，所以訂車時才選了藍白色&lt;/p&gt;
&lt;p&gt;不然白色車殼的部分讓我有種單調的感覺&lt;/p&gt;
&lt;p&gt;貼上去後反而比全黑更深得我心&lt;/p&gt;
&lt;p&gt;而一個月後洗車沒注意到水槍力道過強&lt;/p&gt;
&lt;p&gt;讓機車美容變機車毀容，又是另一個故事了QQ&lt;/p&gt;
&lt;p&gt;號稱貼了心靈馬力會增加 0.1P (X)&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_57ffb1a61282_hu_b21270c21830ffe4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_57ffb1a61282_hu_b21270c21830ffe4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;astro-gemini-行車記錄器--8001-km--7500&#34;&gt;Astro Gemini 行車記錄器 / 8001 KM / $7500
&lt;/h3&gt;&lt;p&gt;馬路三寶無所不在&lt;/p&gt;
&lt;p&gt;一定要裝個三寶記錄器預防事故時吃虧&lt;/p&gt;
&lt;p&gt;使用了快半年，機子穩定度不錯，沒發生過熱當&lt;/p&gt;
&lt;p&gt;曾有一次前鏡頭進水與一次記憶卡壞掉&lt;/p&gt;
&lt;p&gt;原廠保固不囉嗦，處理速度也很快&lt;/p&gt;
&lt;p&gt;若使用的是原廠加購的記憶卡，保固期間記憶卡壞掉原廠也會負責處理&lt;/p&gt;
&lt;p&gt;價位上相較其他家產品或許偏高了&lt;/p&gt;
&lt;p&gt;但產品本身的品質與原廠的態度&lt;/p&gt;
&lt;p&gt;這價位我是能接受的&lt;/p&gt;
&lt;p&gt;(延伸閱讀：&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/yamaha-force-155-astro-gemini-installation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yamaha Force 155 – Astro Gemini 行車記錄器安裝 &lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_18c7380cf078_hu_28d08a98428448e7.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_18c7380cf078_hu_28d08a98428448e7.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;cbp-motor-車本舖-yamaha-force-155-遠近同亮轉接線組--8001-km--500&#34;&gt;CBP-Motor 車本舖 Yamaha Force 155 遠近同亮轉接線組 / 8001 KM / $500
&lt;/h3&gt;&lt;p&gt;遠燈只亮單邊時，近燈原本照射的區域會變得滿暗的&lt;/p&gt;
&lt;p&gt;因此使用轉接線讓切遠燈時可以近燈一起亮&lt;/p&gt;
&lt;p&gt;原廠鹵素燈泡 55 瓦，兩邊一起亮的話對原廠線組負擔可能較大&lt;/p&gt;
&lt;p&gt;建議不要長時間亮遠燈&lt;/p&gt;
&lt;p&gt;如果通勤經過的道路會需要長時間使用的話&lt;/p&gt;
&lt;p&gt;建議不要使用轉接線，或是改成低瓦數的 LED 燈泡&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_63182dd0df83_hu_fa9515575670f412.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/img_63182dd0df83_hu_fa9515575670f412.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;車本舖-cbp-motor-三輸出鎖頭電門正電-acc-引出線組--8001-km--399&#34;&gt;車本舖 CBP-Motor 三輸出鎖頭電門正電 ACC 引出線組 / 8001 KM / $399
&lt;/h3&gt;&lt;p&gt;為了裝行車記錄器與車充用的&lt;/p&gt;
&lt;p&gt;不想破壞原廠線組，所以買了這組直接對插直上&lt;/p&gt;
&lt;p&gt;車充的點菸器插孔我沒在用&lt;/p&gt;
&lt;p&gt;行車記錄器與 USB 的瓦數加起來最大不過 18W&lt;/p&gt;
&lt;p&gt;延伸出來對原廠線組的負載倒不是很大&lt;/p&gt;
&lt;p&gt;不用擔心車子會燒了&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/images/placeholder.jpg&#34;
    width=&#34;400&#34;
    height=&#34;300&#34;
    
    loading=&#34;lazy&#34;
    
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;8+9. 三代鷹爪手機架 &amp;amp; 車本舖 CBP-Motor 防水車充 / 400KM &amp;amp; 8001 KM / $290 &amp;amp; $499&lt;/p&gt;
&lt;p&gt;手機架與 USB 充電算是騎車出遊必備的東西了&lt;/p&gt;
&lt;p&gt;選車本舖這款的充電座原因是我自己偏好&lt;strong&gt;非破壞式改裝&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所以能直接鎖在手把上的充電座滿符合我的需求&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_0bb9fba34df0_hu_b2572a6311ee13e4.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/img_0bb9fba34df0_hu_b2572a6311ee13e4.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;日常保養&#34;&gt;日常保養
&lt;/h2&gt;&lt;p&gt;這裡只列機油、齒輪油與空濾，其他的尚未更換，大概就說明一下使用狀況&lt;/p&gt;
&lt;h3 id=&#34;機油&#34;&gt;機油
&lt;/h3&gt;&lt;p&gt;目前在這台車用過的機油有：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Yamalube 4-R / 246KM&lt;/li&gt;
&lt;li&gt;Fleet 4T MA80 / 837KM (網路上找不到)&lt;/li&gt;
&lt;li&gt;Zero Sports - ZERO MOTO 10W-40 / 1622KM&lt;/li&gt;
&lt;li&gt;Zero Sports - ZERO MOTO 10W-40 (Ester Base) / 2813KM&lt;/li&gt;
&lt;li&gt;Zero Sports - ZERO MOTO 5W-50 (Ester Base) / 4814, 7132, 9184, 11099 KM&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;從第 4 罐機油開始就是每 2000 公里左右換一次&lt;/p&gt;
&lt;p&gt;應該還是有不少車主會被建議 1000 換一次&lt;/p&gt;
&lt;p&gt;個人認為現在的造車工藝相較過去進步很多&lt;/p&gt;
&lt;p&gt;而且這台車是水冷車，有冷卻劑協助降溫&lt;/p&gt;
&lt;p&gt;機油溫度也就應該比空冷車要低一些&lt;/p&gt;
&lt;p&gt;劣化的速度也就更慢一點&lt;/p&gt;
&lt;p&gt;且保養手冊上面寫的是 2000 換一次&lt;/p&gt;
&lt;p&gt;目前騎破萬公里是也不覺得車子有什麼問題，或是性能下降&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;在機油種類方面的話就沒辦法分享很多&lt;/p&gt;
&lt;p&gt;Zero Sports 是固定去的車行推薦的&lt;/p&gt;
&lt;p&gt;想說現在 2000 公里換一次油&lt;/p&gt;
&lt;p&gt;用高檔一點的也不會比舊車花更多&lt;/p&gt;
&lt;p&gt;結果就從 10W-40 全合成開始用到 5W-50 全酯類&lt;/p&gt;
&lt;p&gt;一用就回不去 （跟試乘 Force 有 87 分像）&lt;/p&gt;
&lt;p&gt;10W-40 全合成騎起來的感覺已經忘了&lt;/p&gt;
&lt;p&gt;而 10W-40 全酯類熱車完騎起來也很順&lt;/p&gt;
&lt;p&gt;不過大概騎到 1700 ~ 1800 公里左右就會明顯感受到機油衰退&lt;/p&gt;
&lt;p&gt;而且是很明顯的那種，拉轉不順、車子比較震&lt;/p&gt;
&lt;p&gt;後來就換 5W-50 全酯類這罐（被推坑），冷車上路不用熱車就很順&lt;/p&gt;
&lt;p&gt;拉轉和抑震的效果也更出色，最長一輪騎到 2300 公里&lt;/p&gt;
&lt;p&gt;還是非常的順，但是不太喜歡發生類似 10W-40 突然出現衰退感的情況&lt;/p&gt;
&lt;p&gt;就還是回車行換新油了&lt;/p&gt;
&lt;p&gt;而以上機油不管是哪罐，換下來都是非常的黑，我自己也是不解&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_ccee5052b721_hu_b206f81df99d4cac.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_ccee5052b721_hu_b206f81df99d4cac.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;齒輪油&#34;&gt;齒輪油
&lt;/h3&gt;&lt;p&gt;齒輪油的部分則是從第 4 罐機油後&lt;/p&gt;
&lt;p&gt;固定每換兩次機油換一次齒輪油&lt;/p&gt;
&lt;p&gt;使用的一直都是 Mageter 85W-140&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_4326cd108120_hu_7f178fa4aa726ddb.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/img_4326cd108120_hu_7f178fa4aa726ddb.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;空氣濾清器&#34;&gt;空氣濾清器
&lt;/h3&gt;&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_83d6fe402c7c_hu_1a929d0c4e39e345.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_83d6fe402c7c_hu_1a929d0c4e39e345.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;被忽略掉，結果超級黑&lt;/p&gt;
&lt;p&gt;拖到了 8200 才換掉&lt;/p&gt;
&lt;p&gt;（延伸閱讀：&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/yamaha-force-155-change-air-filter/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yamaha Force 155 空濾海綿更換 &lt;/a&gt;）&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;輪胎--剎車片&#34;&gt;輪胎 &amp;amp; 剎車片
&lt;/h3&gt;&lt;p&gt;尚未更換，平常都順順騎，剎車片都還厚厚的，前後輪胎紋也都還夠&lt;/p&gt;
&lt;p&gt;後輪預計大概 15000 差不多，前輪應該可以用到 20000吧&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_1ba0a3972e31_hu_c63c083828b2d46e.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2567&#34;
    srcset=&#34;https://caloskao.org/post/img_1ba0a3972e31_hu_c63c083828b2d46e.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;179px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_5fc3d4a8fd5b_hu_94788ee0d6251156.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2567&#34;
    srcset=&#34;https://caloskao.org/post/img_5fc3d4a8fd5b_hu_94788ee0d6251156.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;179px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;水箱冷卻液&#34;&gt;水箱冷卻液
&lt;/h3&gt;&lt;p&gt;也是沒換，水箱過熱燈沒亮過，水位依然是滿的沒下降，想等改裝水溫表時再換。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;油耗&#34;&gt;油耗
&lt;/h2&gt;&lt;p&gt;固定加中油 92，未使用汽油精&lt;/p&gt;
&lt;p&gt;每次加油後使用 &lt;a class=&#34;link&#34; href=&#34;//iknow99.com&#34; &gt;iknow99&lt;/a&gt; 記錄加油量&lt;/p&gt;
&lt;p&gt;以月份為單位呈現油耗數據&lt;/p&gt;
&lt;p&gt;綜合所有月份統計：&lt;strong&gt;最小 30.74 KM/L，最大 40.07 KM/L，平均 35.45 KM/L&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;大概有七到八成的里程是雙載市區通勤（約 110 公斤）&lt;/p&gt;
&lt;p&gt;以 150 級距的表現來說不算亮眼&lt;/p&gt;
&lt;p&gt;但以淨重 132 公斤、整備重量 141 公斤的車輛來說&lt;/p&gt;
&lt;p&gt;我覺得可以&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_487169e1b95d_hu_de762a16a91247da.png&#34;
    width=&#34;1920&#34;
    height=&#34;1886&#34;
    srcset=&#34;https://caloskao.org/post/img_487169e1b95d_hu_de762a16a91247da.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;101&#34;
        data-flex-basis=&#34;244px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;騎乘感受&#34;&gt;騎乘感受
&lt;/h2&gt;&lt;h3 id=&#34;動力&#34;&gt;動力
&lt;/h3&gt;&lt;p&gt;起步比 SMAX 來得有力，但因車重的關係&lt;/p&gt;
&lt;p&gt;與他牌 150 c.c 車款相較下起步相對較沒力些&lt;/p&gt;
&lt;p&gt;但是&lt;strong&gt;高速巡航下絕對是 150 級距中的佼佼者&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;且中速域的再加速能力是滿優異的&lt;/p&gt;
&lt;p&gt;而過了 10000 公里後倒也不覺得動力有下降的感覺&lt;/p&gt;
&lt;p&gt;做完 10000 公里大保養後也沒有更有力些&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;懸吊&#34;&gt;懸吊
&lt;/h3&gt;&lt;p&gt;前叉的部分我認為有點偏死硬，壓縮不夠快&lt;/p&gt;
&lt;p&gt;路面稍為顛簸一點手把就有感覺了&lt;/p&gt;
&lt;p&gt;但支撐性還夠，唯一一次觸底是自己在測試前剎極限時才發生&lt;/p&gt;
&lt;p&gt;後避震我覺得是屬於運動取向&lt;/p&gt;
&lt;p&gt;路感明顯，支撐性夠，過彎很讓人放心&lt;/p&gt;
&lt;p&gt;但跑長途比較容易感到疲累&lt;/p&gt;
&lt;p&gt;相對的長期長距通勤就比較辛苦些&lt;/p&gt;
&lt;p&gt;不適合偏好舒適取向的人&lt;/p&gt;
&lt;p&gt;後輪胎壓從 38 psi 放到 32 psi 也無法改善&lt;/p&gt;
&lt;p&gt;想要舒適的話唯有改裝一途&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;制動&#34;&gt;制動
&lt;/h3&gt;&lt;p&gt;前一台二代鵝前剎車使用的是 Frando HF-4&lt;/p&gt;
&lt;p&gt;起初剛換車時很不適應，剎車力道差距滿大的&lt;/p&gt;
&lt;p&gt;但漸漸適應後倒是還好&lt;/p&gt;
&lt;p&gt;前輪單向雙活塞卡鉗在一般騎乘下是足夠的&lt;/p&gt;
&lt;p&gt;後輪單向單活塞卡鉗我覺得制動力也足夠了（要讓後輪鎖死不難）&lt;/p&gt;
&lt;p&gt;只是剎車力道無法比較細膩的控制&lt;/p&gt;
&lt;p&gt;若要升級制動系統的話，大概就是「&lt;strong&gt;想要大於需要&lt;/strong&gt;」了&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;照明&#34;&gt;照明
&lt;/h3&gt;&lt;p&gt;起初覺得原廠配鹵素燈泡真的超沒誠意的&lt;/p&gt;
&lt;p&gt;但是實際去感受夜間照明的情況&lt;/p&gt;
&lt;p&gt;可以發現 Yamaha 在燈具上下足的功夫&lt;/p&gt;
&lt;p&gt;就算配鹵素燈泡，夜間辨識度其實滿夠的&lt;/p&gt;
&lt;p&gt;不過燈泡壞了我還是會改 LED 的&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;整體來說，Force 的缺點多於優點&lt;/p&gt;
&lt;p&gt;但 Force 這 10000 公里的表現倒是沒有讓我失望就是&lt;/p&gt;
&lt;p&gt;相信會騎 Force 的車主大部分看上的大概都是外形 XDD&lt;/p&gt;
&lt;p&gt;只要自己看得順眼，任何車子對自己來說都是好車&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;del&gt;缺點什麼的有愛就能克服的&lt;/del&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;針對性能或配備不足的部分&lt;/p&gt;
&lt;p&gt;其實很想直接給他落地改&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但如果落地改，便無法透徹的瞭解車子的性能表現&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;唯有真正的瞭解車子的特性，才能知道要針對不足的地方做升級&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所以除了針對椅墊與雙燈這兩個我覺得比較需要早點解決的部分先改裝&lt;/p&gt;
&lt;p&gt;其他部位都先觀望到騎滿 10000 公里再做決定了&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;至於後續想要改裝的部分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;懸吊系統：平日通勤希望以舒適為主，但是也想保留運動性能去跑跑山，因此希望前後避震都可調。目前預定了一支 Dj1 後避震還不知道什麼時候到，前叉的話預計是用原廠前叉改長野 Z1 內管與阻泥調整器，改裝的方向是追求 C/P 值（口袋不深QQ）。&lt;/li&gt;
&lt;li&gt;後檔泥板：Force 後輪遇雨絕對噴的你不要不要的，其實早就想裝了，只是還沒找到真正能防噴又便宜的產品。&lt;/li&gt;
&lt;li&gt;空濾擋片：進氣箱設計不良是真的，空濾實在是髒很快，想買擋片把原本的進氣口擋住看看能不能延長空濾的壽命。&lt;/li&gt;
&lt;li&gt;風鏡：這裡不是指搞笑用的原廠小風鏡，有稍微做了一點功課，比較好的通常還是不免要破壞大盾，而鎖在後照鏡上的則不考慮，高速行駛感覺會因為鎖在後照鏡而上龍頭不穩。&lt;/li&gt;
&lt;li&gt;水溫表：沒意外大概是 KOSO 的三通版，我覺得等到儀表上的過熱指示燈亮了不夠讓人放心。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;以上不專業騎乘心得，謝謝收看，我們 20000 公里再見。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_91fa8ca440d0_hu_dc1b0cb7c388c58.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1283&#34;
    srcset=&#34;https://caloskao.org/post/img_91fa8ca440d0_hu_dc1b0cb7c388c58.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;149&#34;
        data-flex-basis=&#34;359px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;10000 公里大保養，請見「&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/yamaha-force-155-10000-km-maintenance/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yamaha Force 155 - 10000 公里大保養&lt;/a&gt;」。&lt;/p&gt;&lt;/blockquote&gt;</description>
        </item>
        <item>
        <title>Yamaha Force 155 - Astro Gemini 行車記錄器安裝</title>
        <link>https://caloskao.org/yamaha-force-155-astro-gemini-installation/</link>
        <pubDate>Thu, 24 Aug 2017 16:44:40 +0800</pubDate>
        
        <guid>https://caloskao.org/yamaha-force-155-astro-gemini-installation/</guid>
        <description>&lt;p&gt;在去年剛牽 Force 之後，便一直在挑選行車記錄器，雖然黏在安全帽上的行車記錄器感覺比較理想，但是不想要常常充電或是騎車時接著車充(不自在)，因此主要的目標就放在裝在車身+車電供電。&lt;/p&gt;
&lt;p&gt;當時在 &lt;a class=&#34;link&#34; href=&#34;https://www.sgha.com.tw/products_detail/1.htm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SGH D720&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;http://www.astrofamily.com.tw/product_d.php?lang=tw&amp;amp;tb=2&amp;amp;cid=8&amp;amp;id=83&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Astro Gemini&lt;/a&gt; 間挑選。前者便宜，但畫質比較差些，而 Astro Gemini 價格貴上快1倍，但是畫質較好、主機防水，也有 GPS 模組可以加裝。當時剛好官方活動有免費升級 32G 記憶卡，就怒衝一波買下來。&lt;/p&gt;
&lt;p&gt;而身為一個沒有 DIY 改裝經驗的菜鳥，手邊沒有拆車工具也是很正常的事情，挑選工具 + 自身平時比較忙的關係，2016年底買了行車記錄器，結果一直拖到今年5月底才裝上車。裝完後又為了準備研究所口試，一轉眼又是2個多月過去，現在終於有時間好好寫開箱文了。&lt;/p&gt;
&lt;p&gt;(部分照片因為拆裝的當下沒有拍，所以照片中如果有場景不一的情況，代表是事後補拍的照片)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;先來看看行車記錄器外包裝：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2115c0ee0918_hu_7f331ebdb841228f.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2115c0ee0918_hu_7f331ebdb841228f.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;包裝側面簡單的標示產品特色：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_55ebf261a6ed_hu_408106c02bcafa33.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_55ebf261a6ed_hu_408106c02bcafa33.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;另一側則為比較詳細的說明：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_635b69395a56_hu_12ba0d3170ab7556.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_635b69395a56_hu_12ba0d3170ab7556.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;背面則是產品外觀與規格說明：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_4f375b4aa66b_hu_57747fe6b24df47.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_4f375b4aa66b_hu_57747fe6b24df47.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;打開包裝盒，由左置右分別是主機、線控、雙鏡頭。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_578b56e37079_hu_f309d1c4a092b793.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_578b56e37079_hu_f309d1c4a092b793.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;主機本體，沒有小螢幕，但是裝在車廂內，個人認為也不需要就是了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_f76739eaa02f_hu_51ce8dcb830fee5d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_f76739eaa02f_hu_51ce8dcb830fee5d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;打開防水蓋，最上側與最下側兩個黑色插槽為記憶卡插槽。中間銀色插槽為 Micro USB，左側黑色按鈕是格式化記憶卡，右側黑色按鈕是重置。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2e2bff766b55_hu_b02c60bea808714d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2e2bff766b55_hu_b02c60bea808714d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;雙鏡頭特寫，有腳座可以調整鏡頭角度。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_9dbd9f6dd5de_hu_af01b72b6593959f.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_9dbd9f6dd5de_hu_af01b72b6593959f.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;內附一條 Micro USB 線(約半公尺)，以及安裝用的束線帶。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_949d329b4eea_hu_df566f6f806eae62.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_949d329b4eea_hu_df566f6f806eae62.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;線控組特寫，中間為鎖檔按鈕，按鈕上下方為前後鏡頭指示燈，過電時為快速閃爍的藍燈(GPS 定位中)，定位完成後則會變成慢速閃爍的藍燈，Front 指示燈右下角的凹洞是收音孔。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_413cba41201c_hu_32b12cb6a4f71a2d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_413cba41201c_hu_32b12cb6a4f71a2d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;主機電源線特寫：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_92c60946a8a7_hu_1475e3ce24822e0f.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_92c60946a8a7_hu_1475e3ce24822e0f.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;抗干擾磁環與主機用的 3M 子母扣：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_454521065614_hu_4cf65291ef3cd4b7.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_454521065614_hu_4cf65291ef3cd4b7.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;GPS 模組：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_b1a6ed996bf8_hu_a7e7b6569e4ab9d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_b1a6ed996bf8_hu_a7e7b6569e4ab9d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;附贈的記憶卡2張，Strontium Nitro 466X 32G：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_5c5ea068b587_hu_70513159de8a0c4a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_5c5ea068b587_hu_70513159de8a0c4a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;最後來張大合照：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_38b4b210c641_hu_dec47df590d530e7.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_38b4b210c641_hu_dec47df590d530e7.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這是今天的主角：Yamaha Force 155&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_e3f94f40856d_hu_d1598ce23780c041.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_e3f94f40856d_hu_d1598ce23780c041.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;首先，拆下龍頭座左右側四顆螺絲（大盾鎖點與龍頭座殼鎖點，規格是T10梅花）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_b5cef7de55f2_hu_b841120353b88df6.png&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_b5cef7de55f2_hu_b841120353b88df6.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;先把大盾上方的卡榫小心的弄開，建議可以買個拆殼工具來用比較方便，且比較能避免傷車殼。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_61c4073f3cb8_hu_7403d433dbbf2042.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1435&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_61c4073f3cb8_hu_7403d433dbbf2042.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;321px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接著是 H 殼與大盾間的卡榫，小弟這邊偷懶直接用小一字撬開，偷懶的結果就是傷了車殼（雖然面積不大就是）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_6eaec49ff5ca_hu_8a90bccc6a401397.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1280&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_6eaec49ff5ca_hu_8a90bccc6a401397.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;150&#34;
        data-flex-basis=&#34;360px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;撬開後的樣子：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_6dfaec7b34d3_hu_19eca127b34e1f8a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_6dfaec7b34d3_hu_19eca127b34e1f8a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;最後握著大盾左上角與右上角下向拉，大盾就拆下來了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_a8a31d953629_hu_4b34d65d6e6661b5.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2567&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_a8a31d953629_hu_4b34d65d6e6661b5.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;179px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接下來要把燈具連同 H 殼一起拆下來，先把大燈底下的一顆塑膠螺絲卸下來，拿小起子往螺絲中間戳一下即可取下。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_ced878b820c9_hu_248554516074f9a5.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_ced878b820c9_hu_248554516074f9a5.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;再來，使用 T10 梅花起子把油箱蓋左下方與鎖頭右下方的兩顆螺絲退下：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_bc6dc471b5d0_hu_7fa03f232ca4005.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_bc6dc471b5d0_hu_7fa03f232ca4005.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;最後用10號套筒卸下固定喇叭座與H殼的2顆螺帽，即可把 H 殼連同大燈一起拿起來，拿起來的時候近燈座旁邊有燈具的線組，記得拔掉（忘記拍了）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_a0abfe2f904c_hu_6897a03f60e52964.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_a0abfe2f904c_hu_6897a03f60e52964.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;卸下大燈後的樣子：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_f17243209749_hu_281a4f41b42c5e03.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2567&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_f17243209749_hu_281a4f41b42c5e03.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;179px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;由於不想要破壞原廠線組，所以購入了鎖頭電門引出線組直接對插直上，先把鎖頭電門接頭拔開：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_00a8af4de531_hu_b8024eee7df81c8d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_00a8af4de531_hu_b8024eee7df81c8d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;然後把引出線組裝上去&lt;/p&gt;
&lt;p&gt;（黑色接頭是請廠商先幫我把其中一組接頭改為 USB 車充的接頭）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_b09bfd445b13_hu_725bcdce15fc0474.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_b09bfd445b13_hu_725bcdce15fc0474.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;取一組引出線組接頭和行車記錄器電源接頭連接起來，這裡我是拿銲錫做連接，接完後用電火布包起來。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/images/placeholder.jpg&#34;
    width=&#34;400&#34;
    height=&#34;300&#34;
    
    loading=&#34;lazy&#34;
    
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接下來拆車廂吧，用10號套筒把兩顆外六角螺帽取下，然後先把椅墊弄下來：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_54985ab8c8f6_hu_bd1ff3f835ab579a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_54985ab8c8f6_hu_bd1ff3f835ab579a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接下來用十字起子把電瓶蓋拆下：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_6079e43fd0ac_hu_52a557142e475ad.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_6079e43fd0ac_hu_52a557142e475ad.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;電瓶蓋拆下後即可看到電瓶，右邊套著紅色塑膠套的是正極螺絲，輕輕往後拉就可以看到螺絲本體。&lt;/p&gt;
&lt;p&gt;電瓶螺絲為六角十字，如果用十字起子轉不動的話不要硬轉，可以改用8號套筒轉下來。&lt;/p&gt;
&lt;p&gt;先拆負極螺絲後，再拆正極螺絲。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_dd4d3b36a4e5_hu_19447393a10414b6.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_dd4d3b36a4e5_hu_19447393a10414b6.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;拆下電瓶後可以看到電瓶座底下有兩顆外六角螺絲，使用10號套筒取下。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_61c51b784903_hu_d9f25a8a84528420.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_61c51b784903_hu_d9f25a8a84528420.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;車廂後面還有兩顆，也要取下。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_386d1b4157f7_hu_2df0449905f05a68.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_386d1b4157f7_hu_2df0449905f05a68.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;然後就可以把車廂拿起來了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_4047e0f77c6a_hu_3c0bae6ec2236db1.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_4047e0f77c6a_hu_3c0bae6ec2236db1.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;為了方便等一下比較容易把線拉上來，所以要把引擎胸蓋拆下，先拆下腳踏上的兩顆十字螺絲（右邊被我先拆下來了）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_56b2b819f8a6_hu_6b9ed32d8fd6d87d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_56b2b819f8a6_hu_6b9ed32d8fd6d87d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;再取下左右側殼上緣的螺絲（十字），然後就可以把胸蓋取下了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2c69325f26b1_hu_13ea44d289dd1d2c.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2c69325f26b1_hu_13ea44d289dd1d2c.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;因為車廂電瓶的線是從右側出去，所以選擇從右側拉線，用十字起子把右側斜腳踏的螺絲取下。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_a15371919f8e_hu_8b5fafe6fd5b380a.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_a15371919f8e_hu_8b5fafe6fd5b380a.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;前輪旁邊的車殼內側有個塑膠螺絲，也是用十字螺絲取下。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_858f295d0179_hu_2ec6bb84524766c2.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_858f295d0179_hu_2ec6bb84524766c2.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;螺絲特寫&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_40ea6aac105b_hu_e3b78a3357fab12d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_40ea6aac105b_hu_e3b78a3357fab12d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;底下還有一顆與側殼鎖在一起的 T10 梅花，一併取下。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_f2c730f4e4d7_hu_c4dd0c4669d8a7d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2567&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_f2c730f4e4d7_hu_c4dd0c4669d8a7d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;179px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接著準備把側條殼取下，建議可以往右邊拉出去會比較好取下。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_0da1f8bb8cfb_hu_c16e00100556fbf9.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_0da1f8bb8cfb_hu_c16e00100556fbf9.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接著就可以先拉線控組和前鏡頭的線，可以拿一兩條束線帶把線跟油管固定在一起，多餘的線也可以選擇收在這裡。&lt;/p&gt;
&lt;p&gt;處理完後把線頭拉到車廂側殼放著，接著就可以把側條殼和引擎胸蓋先裝回去。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_5ec58984fe05_hu_94e854f043e9d083.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_5ec58984fe05_hu_94e854f043e9d083.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;車頭這邊我是將兩條線直接穿過圖中紅框的位置，然後跟油箱蓋鐵管固定在一起。&lt;/p&gt;
&lt;p&gt;（圖中黑白線是 USB 車充的線，跟它綁在一起就可以了）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2c708334a1a0_hu_e33f2c71abd66d06.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2569&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2c708334a1a0_hu_e33f2c71abd66d06.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;179px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;線控組個人是選擇固定在鎖頭上方的空間，使用尖嘴鉗在鎖頭右上角的殼開一個小洞，讓線控組的線可以穿出來。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_7c049eae1e19_hu_6901cbc21ef8f660.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_7c049eae1e19_hu_6901cbc21ef8f660.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;裝回去後的樣子&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_6283e81b3692_hu_35687bd7c3e8c17c.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_6283e81b3692_hu_35687bd7c3e8c17c.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;319px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;大盾喇叭口內側的藍色殼為可拆式，要將前鏡頭穿過大盾口需要將裡面的藍色殼拆下，這部分忘記拍到QQ，不過藍色殼上只有一個十字螺絲，所以可以很輕易的拆卸下來。要注意的是鏡頭本身體積不小，所以穿過去之前要先用小支的十字起子將鏡頭座的兩個螺絲拆下，將角座與鏡頭分離，才能穿過大盾口。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;穿過去後如果不將腳座鎖回去的話可以將鏡頭藏得更裡面，不過要自己想辦法去固定。保留腳座雖然會讓鏡頭比較顯眼，不過可以保留仰角的調整空間，看個人喜好去做選擇，我個人是選擇保留腳座。&lt;/p&gt;
&lt;p&gt;腳座黏上去後可以拿一字起子去稍微壓一下腳座與大盾的黏接點，讓腳座稍微變形，可以更貼緊大盾。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_79c0acf6ffc8_hu_9879c6290979012b.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_79c0acf6ffc8_hu_9879c6290979012b.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;鏡頭線組上需要扣上抗磁環防止干擾，靠近鏡頭與靠近主機兩端各一顆，鏡頭上的膠膜也要撕掉，不然錄製的畫面會模糊。而鏡頭本身有鍍膜，不用太擔心雨天畫面整個糊掉。&lt;/p&gt;
&lt;p&gt;到這邊車頭的部分就結束了，接下來開始處理車尾的部分。&lt;/p&gt;
&lt;p&gt;先把車牌架拆下來，使用10號套筒拆下圖中的2顆外六角螺絲（位置靠近尾燈內側）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_c5c1cff912d1_hu_e636a9e71f70055c.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_c5c1cff912d1_hu_e636a9e71f70055c.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;背面還有兩顆外六角螺絲和4顆十字螺絲，通通拆下來（請忽略中間那條線，這張是補拍的 XD）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_ce9011bf0e77_hu_2be6a8cefcd78041.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_ce9011bf0e77_hu_2be6a8cefcd78041.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;8顆螺絲都拆下後就可以順利分離車牌架了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_a6168e7a1ad5_hu_2f1188e6c16e6d04.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_a6168e7a1ad5_hu_2f1188e6c16e6d04.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;把車牌架翻過來，用斜口鉗把這邊的孔弄大一點，讓線頭可以穿過去。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_f9328ed6f32c_hu_a31404e4fb1a9a0e.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_f9328ed6f32c_hu_a31404e4fb1a9a0e.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;我們要利用檔泥板本身的開孔將後鏡頭線穿過去，因此圖中車牌架紅圈處的地方也要剪一小角，不需要很大。&lt;/p&gt;
&lt;p&gt;剪完後將線頭穿過去，然後壓壓看會不會過度擠壓，調整好適當的大小後就可以將車牌架鎖回去了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_d61a531a4bcc_hu_3198951efcb8e80e.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_d61a531a4bcc_hu_3198951efcb8e80e.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;另一側的視角&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2b81d20c75be_hu_73607e6a69cd6b63.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_2b81d20c75be_hu_73607e6a69cd6b63.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接著固定後鏡頭，個人選擇黏在尾燈下方而不是車牌架上，黏完後就可以把多餘的線往車廂內收，鏡頭膠膜與抗磁環比照前鏡頭處理。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_fe1944f7cf11_hu_ef3543454fe0a1bc.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2569&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_fe1944f7cf11_hu_ef3543454fe0a1bc.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;179px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接下來順便處理 GPS 模組的線路。GPS 模組上方不可以有遮蔽物，否則容易造成定位失敗，所以這邊選擇放置於尾燈上方，在尾燈蓋上面用斜口鉗剪出一個小洞，GPS 模組黏上去後將線壓進去後即可。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_8a2e3b4c45e8_hu_e7e8f3e07f28df3.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_8a2e3b4c45e8_hu_e7e8f3e07f28df3.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;完成圖，車廂裝回去不會卡線。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_568f69d64011_hu_6f924de71c01f551.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_568f69d64011_hu_6f924de71c01f551.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;319px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;多出來的線可以用束線帶固定在車台上（束線帶尾巴記得剪掉）。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_4ef2971c7542_hu_74332cb18f5a70a8.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_4ef2971c7542_hu_74332cb18f5a70a8.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接著把所有的線組與連接電瓶的電線一起穿過車廂的進線口，然後將車廂與電瓶裝回去，依照原廠手冊的指示，先鎖正極再鎖負極。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_5db49d2e9315_hu_274c0eda9ef3a9d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_5db49d2e9315_hu_274c0eda9ef3a9d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;近距離特寫，線頭要從哪裡出去隨個人喜好即可，這裡我把線組放在電瓶線底下，然後併排從側邊穿過去，最後鎖上電瓶蓋。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_09e8b6c49d05_hu_31738a8174814354.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_09e8b6c49d05_hu_31738a8174814354.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接線、黏上子母扣，完工&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_7dfc61bc6ec4_hu_b7019cfb30f675f6.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/yamaha-force-155-astro-gemini-installation/img_7dfc61bc6ec4_hu_b7019cfb30f675f6.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;道路實測&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;目前沒有適合的雨天夜晚記錄，所以只放上白天、夜晚、雨天白天的實拍，未來有拍到再更新進來。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白天&lt;/strong&gt;：可以注意 2:40 左右通過高速公路橋下時行車記錄器對曝光的修正，效果不錯。&lt;/p&gt;
&lt;iframe src=&#34;https://www.youtube.com/embed/uCOgAF8PvKk?list=PLZymK0abPmz8MFvDGrc7AAyvNhmRAN50F&#34; width=&#34;640&#34; height=&#34;360&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;allowfullscreen&#34;&gt;&lt;/iframe&gt;
&lt;iframe src=&#34;https://www.youtube.com/embed/Ez1JRCNSWyM?list=PLZymK0abPmz8MFvDGrc7AAyvNhmRAN50F&#34; width=&#34;640&#34; height=&#34;360&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;allowfullscreen&#34;&gt;&lt;/iframe&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;夜晚&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src=&#34;https://www.youtube.com/embed/qiO4qhuYd0w?list=PLZymK0abPmz8MFvDGrc7AAyvNhmRAN50F&#34; width=&#34;640&#34; height=&#34;360&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;allowfullscreen&#34;&gt;&lt;/iframe&gt;
&lt;iframe src=&#34;https://www.youtube.com/embed/SQIdKh8yjig?list=PLZymK0abPmz8MFvDGrc7AAyvNhmRAN50F&#34; width=&#34;640&#34; height=&#34;360&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;allowfullscreen&#34;&gt;&lt;/iframe&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;雨天(白天)&lt;/strong&gt;：原廠在鏡頭上有鍍膜，不過雨勢不大較難看出鍍膜效果，未來拍到大雨路況後再分享。&lt;/p&gt;
&lt;iframe src=&#34;https://www.youtube.com/embed/BzNW9Nc1UG4?list=PLZymK0abPmz8MFvDGrc7AAyvNhmRAN50F&#34; width=&#34;640&#34; height=&#34;360&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;allowfullscreen&#34;&gt;&lt;/iframe&gt;
&lt;iframe src=&#34;https://www.youtube.com/embed/htBhIF9iqQg?list=PLZymK0abPmz8MFvDGrc7AAyvNhmRAN50F&#34; width=&#34;640&#34; height=&#34;360&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;allowfullscreen&#34;&gt;&lt;/iframe&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;心得&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;看過很多 DIY 的分享，電系改裝的學習門檻真的不高，需要的拆車工具也不需要很多，不銲接的話也才用到十字起子、一字起子、T10 梅花、8號與10號外六角套筒而已，所以才會連機油都沒自己換過就敢直接挑戰安裝行車記錄器 XD。雖然把車殼弄出幾處小小的傷，但是 DIY 的經驗與樂趣，無價。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;至於這次安裝的 Astro Gemini 行車記錄器，前後有發生兩次問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在剛收到貨時鏡頭 Logo 印反&lt;/li&gt;
&lt;li&gt;安裝上車後發現鏡頭進水導致畫面模糊&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Logo 瑕疵的部分是客服主動通知並更換新品，進水問題附上影片與圖片後客服也直接先寄出鏡頭給我做更換，原廠客服處理的速度與態度都很棒。而新版的 Astro Gemini Plus 的鏡頭有兩段接頭，需要單換鏡頭時很方便，但是與舊版鏡頭的接線是不通用的，所以我又花了一個下午的時間換鏡頭。（大熱天真的有點痛苦QQ）&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;主機本身還滿燙的，原廠說明書上寫的工作溫度為 -20 ~ 75 度，不會熱當。從安裝上車到現在也有3個月左右了，也確實沒發生過熱當的問題，只是偶爾會發生錄製的畫面突然卡頓一兩秒後又正常，但頻率很低，目前為止僅看到2次。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;總結一下 Astro Gemini 個人認為的優缺點：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;優點：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;穩定運作不熱當&lt;/li&gt;
&lt;li&gt;全機 IP66 防水（包含主機本身）&lt;/li&gt;
&lt;li&gt;支援 GPS 自動定時定位，同時記錄行車軌跡&lt;/li&gt;
&lt;li&gt;售後服務好&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;缺點：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;價格較其他品牌競爭對手高&lt;/li&gt;
&lt;li&gt;鏡頭比較大顆，無法收進喇叭孔內&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;開箱完畢，感謝收看。&lt;/p&gt;</description>
        </item>
        <item>
        <title>[MariaDB/MySQL] ERROR 1118 (42000): Row size too large (&gt; 8126)</title>
        <link>https://caloskao.org/mariadb-mysql-error-1118-42000-row-size-too-large-8126/</link>
        <pubDate>Mon, 21 Aug 2017 07:30:34 +0800</pubDate>
        
        <guid>https://caloskao.org/mariadb-mysql-error-1118-42000-row-size-too-large-8126/</guid>
        <description>&lt;p&gt;今天在匯入資料庫時出現錯誤，導致匯入中斷&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ERROR 1118 (42000) at line 437: Row size too large (&amp;gt; 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;造成的主因是設定檔中啟用了 &lt;a class=&#34;link&#34; href=&#34;https://mariadb.com/kb/en/mariadb/xtradbinnodb-server-system-variables/#innodb_strict_mode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;innodb_strict_mode&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;在 MariaDB 10.2.2，或是 MySQL 5.7.7 以上的版本預設會開啟，這裡使用的伺服器是 MariaDB 10.2.8，所以在匯入的 SQL 檔單中有單行超過 8126 個字元的話，在 &lt;code&gt;innodb_strict_mode&lt;/code&gt; 開啟的情況下會觸發錯誤，並中斷執行。&lt;/p&gt;
&lt;p&gt;一般情況下建議是開啟的，因為相較之下 run-time error 會更頭痛，不過這裡只是單純要匯入資料，所以暫時先關閉後再開啟。&lt;/p&gt;
&lt;p&gt;編輯 &lt;code&gt;/etc/mysql/my.cnf&lt;/code&gt;，並將 &lt;code&gt;innodb_strict_mode&lt;/code&gt; 設為 0，重新啟動服務後即可。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/22637733/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stack Overflow: MySQL: Error Code: 1118 Row size too large (&amp;gt; 8126). Changing some columns to TEXT or BLOB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/15585602/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stack Overflow: Change limit for “Mysql Row size too large&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mariadb.com/kb/en/mariadb/xtradbinnodb-strict-mode/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MariaDB: XtraDB/InnoDB Strict Mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_strict_mode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MySQL: MySQL Glossary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 安裝 Apache HTTP Server 2.4 &#43; PHP 7.1 &#43; PHP-FPM</title>
        <link>https://caloskao.org/ubuntu-apache-http-server-2-4-php-7-1-php-fpm-installation/</link>
        <pubDate>Mon, 21 Aug 2017 05:00:07 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-apache-http-server-2-4-php-7-1-php-fpm-installation/</guid>
        <description>&lt;blockquote&gt;
&lt;p&gt;操作環境：&lt;/p&gt;
&lt;p&gt;OS: Ubuntu Server 16.04.3 LTS amd64 Apache Version: 2.4.27 PHP Version: 7.1.8&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;step-1-更新-apt-source取得最新版套件資訊&#34;&gt;Step 1. 更新 APT Source，取得最新版套件資訊
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 安裝software-properties-common (已安裝者可跳過此步驟)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y software-properties-common
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 加入 Apache PPA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo add-apt-repository -y ppa:ondrej/apache2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 加入 PHP PPA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo add-apt-repository -y ppa:ondrej/php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 更新套件清單
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;step-2-安裝套件&#34;&gt;Step 2. 安裝套件
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 安裝 Apache HTTP Server
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y apache2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 安裝 PHP、PHP-FPM 與OPcache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y php7.1 php7.1-fpm php7.1-opcache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 安裝所需的 PHP Extensions (依照自身需求增加)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y php7.1-cli php7.1-dev php7.1-phpdbg php7.1-bz2 php7.1-common php7.1-curl php7.1-gd php7.1-json php7.1-ldap php7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-readline php7.1-snmp php7.1-tidy php7.1-xml php7.1-xmlrpc php7.1-zip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;step-3-設定以-apache-event-mpm--php-fpm-運作&#34;&gt;Step 3. 設定以 Apache Event MPM + PHP-FPM 運作
&lt;/h2&gt;&lt;p&gt;預設情況下 Apache 會以 Prefork Mode 運作&lt;/p&gt;
&lt;p&gt;相容性好，但是消耗的資源多&lt;/p&gt;
&lt;p&gt;在 High Concurrency 的環境下效能不理想&lt;/p&gt;
&lt;p&gt;使用 Apache 官方 PHP Module (libapache2-mod-php)&lt;/p&gt;
&lt;p&gt;只能在 Prefork mode 下運作&lt;/p&gt;
&lt;p&gt;若要提升伺服器的負載量&lt;/p&gt;
&lt;p&gt;一是使用其他的 Web Server (如Nginx)&lt;/p&gt;
&lt;p&gt;二是將 Apache 切換成 Worker 或是 Event Mode 運作&lt;/p&gt;
&lt;p&gt;並搭配 PHP-FPM 來處理連線請求&lt;/p&gt;
&lt;p&gt;本文以 Event Mode 實作&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 將 Apache MPM 由 Prefork 切換為 Event&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a2dismod&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mpm_prefork&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a2enmod&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;mpm_event&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 啟用 PHP-FPM 與 proxy_fcgi (安裝 php7.1-fpm 後會在 /etc/apache2/conf-available 下多出一個 php7.1-fpm.conf，proxy_fcgi 的用途是將 HTTP Request 以 proxy 的方式轉交給 PHP-FPM 處理 )&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a2enmod&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;proxy_fcgi&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setenvif&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a2enconf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fpm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 重新啟動 Apache Service (切換 MPM 時無法以 reload 套用新設定)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;service&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apache2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;restart&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;phpinfo()&lt;/code&gt; 檢查 PHP 環境&lt;/p&gt;
&lt;p&gt;Server API 顯示為 &lt;code&gt;FPM/FastCGI&lt;/code&gt; 時代表設定成功&lt;/p&gt;
&lt;p&gt;同時 &lt;code&gt;php.ini&lt;/code&gt; 與 Extensions INI 檔案都會顯示由 &lt;code&gt;/etc/php/7.1/fpm&lt;/code&gt; 下載入&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_9139bf8316d8_hu_aa094ee2f25ee542.png&#34;
    width=&#34;1920&#34;
    height=&#34;946&#34;
    srcset=&#34;https://caloskao.org/post/img_9139bf8316d8_hu_aa094ee2f25ee542.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;203&#34;
        data-flex-basis=&#34;487px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;備註&lt;/p&gt;
&lt;p&gt;使用 PHP-FPM 可能會讓 &lt;code&gt;userdir&lt;/code&gt; 模組對 PHP 的處理失效&lt;/p&gt;
&lt;p&gt;直接將 &lt;code&gt;/etc/apache2/mods-available/userdir.conf&lt;/code&gt; 的 &lt;code&gt;FilesMatch&lt;/code&gt; Directive 上註解即可&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 這些通通上註解
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# &amp;lt;FilesMatch &amp;#34;\.ph(p3?|tml)$&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#     SetHandler application/x-httpd-php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# &amp;lt;/FilesMatch&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# &amp;lt;FilesMatch &amp;#34;.+\.ph(p[345]?|t|tml)$&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#     SetHandler application/x-httpd-php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# &amp;lt;/FilesMatch&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# &amp;lt;FilesMatch &amp;#34;\.phps$&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#     SetHandler application/x-httpd-php-source
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# &amp;lt;/FilesMatch&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Netflow] NFSen install</title>
        <link>https://caloskao.org/nfsen-install/</link>
        <pubDate>Mon, 07 Aug 2017 03:24:03 +0800</pubDate>
        
        <guid>https://caloskao.org/nfsen-install/</guid>
        <description>&lt;p&gt;安裝必要的套件&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;gcc&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;flex&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;librrd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dev&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;make&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libglib2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dev&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libxml2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dev&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apache2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libapache2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mod&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fpm&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cli&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;common&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;curl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gd&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mbstring&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mysql&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tidy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xml&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;php7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;zip&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     &lt;span class=&#34;n&#34;&gt;nfdump&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rrdtool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;librrds&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;perl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;librrdp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;perl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;librrd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dev&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libmailtools&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;perl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libio&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ssl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;perl&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;安裝 perl 的 Socket6 套件&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo perl -MCPAN -e &amp;#39;install Socket6&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;下載並解壓縮 nfsen&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget http://sourceforge.net/projects/nfsen/files/stable/nfsen-1.3.6p1/nfsen-1.3.6p1.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar -zxvf nfsen-1.3.6p1.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;複製設定檔，並建立 nfsen 目錄&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo cp nfsen-1.3.6p1/etc/nfsen-dist.conf /etc/nfsen.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir -p /data/nfsen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;修改設定 ( /etc/nfsen.conf )&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$PREFIX  = &amp;#39;/usr/bin&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$USER = &amp;#34;www-data&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$WWWUSER = &amp;#34;www-data&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$WWWGROUP = &amp;#34;www-data&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;%sources = (
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#39;data-source&amp;#39; =&amp;gt; { &amp;#39;port&amp;#39; =&amp;gt; &amp;#39;9995&amp;#39;, &amp;#39;col&amp;#39; =&amp;gt; &amp;#39;#0000ff&amp;#39;, &amp;#39;type&amp;#39; =&amp;gt; &amp;#39;netflow&amp;#39; },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;設定修改完畢後，執行 install.pl&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ./install.pl /etc/nfsen.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;啟動服務&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /data/nfsen/bin/nfsen start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;設定開機自動啟動&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ln -s /data/nfsen/bin/nfsen /etc/init.d/nfsen
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-rc.d nfsen defaults 20
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;http://terraltech.com/installation-and-configuration-of-nfdump-and-nfsen-on-ubuntu/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt; Installation and configuration of NFDUMP and NfSen on Ubuntu | TerralTech&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Nginx] Nginx install</title>
        <link>https://caloskao.org/nginx-nginx-install/</link>
        <pubDate>Mon, 07 Aug 2017 03:09:34 +0800</pubDate>
        
        <guid>https://caloskao.org/nginx-nginx-install/</guid>
        <description>&lt;p&gt;透過官方 Mirror  來安裝最新版&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;wget&lt;/code&gt; 取得與新增 APT-Key&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -qO - https://nginx.org/keys/nginx_signing.key | sudo apt-key add
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;利用 &lt;code&gt;add-apt-repository&lt;/code&gt; 將 Nginx Repo 加到 &lt;code&gt;/etc/apt/sources.list&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo add-apt-repository &amp;#39;http://nginx.org/packages/ubuntu/ nginx&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;更新套件列表，取回 Nginx 的最新版本後，進行安裝&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install nginx -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>Yamaha Force 155 - 空濾海綿更換</title>
        <link>https://caloskao.org/yamaha-force-155-change-air-filter/</link>
        <pubDate>Sat, 03 Jun 2017 10:46:03 +0800</pubDate>
        
        <guid>https://caloskao.org/yamaha-force-155-change-air-filter/</guid>
        <description>&lt;p&gt;Force 作為 SMAX 的雙生兄弟車種&lt;/p&gt;
&lt;p&gt;雖然外觀上有著截然不同的風格&lt;/p&gt;
&lt;p&gt;但大部分的車體結構還是滿相似的&lt;/p&gt;
&lt;p&gt;進氣空濾設計問題的部分也完整的承襲了 SMAX&lt;/p&gt;
&lt;p&gt;與 SMAX 一樣，Force 的進氣箱空濾海綿一樣很快就會髒了&lt;/p&gt;
&lt;p&gt;這是新車行駛約 1100 公里時的狀況&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_3b2c0f15d0d4_hu_9daa2af2a122d008.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_3b2c0f15d0d4_hu_9daa2af2a122d008.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;因為進氣空濾箱與傳動箱中間的間隙有點大&lt;/p&gt;
&lt;p&gt;以及進氣口剛好落在這個間隙附近&lt;/p&gt;
&lt;p&gt;行駛中容易將後輪帶起的髒空氣吸進來&lt;/p&gt;
&lt;p&gt;因此進氣箱空濾海綿會髒得很快&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;之後中間 7 個月都忘記去檢查它&lt;/p&gt;
&lt;p&gt;這時候里程來到 8200 公里（增加 7000 KM）&lt;/p&gt;
&lt;p&gt;待會就可以看到它變成什麼樣子&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;首先，先準備好新的進氣箱空濾海綿（長形，料號 &lt;code&gt;52S-E4451-00&lt;/code&gt;）與傳動箱空濾海綿（圓形，料號 &lt;code&gt;52S-E5408-00&lt;/code&gt;）&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_98ec1727b9ab_hu_b118e39c24ed3d97.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_98ec1727b9ab_hu_b118e39c24ed3d97.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_412bf2c95a71_hu_239f482ebb112822.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_412bf2c95a71_hu_239f482ebb112822.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;拆下進氣空濾箱外蓋時&lt;/p&gt;
&lt;p&gt;外蓋左下角有個軟蓋&lt;/p&gt;
&lt;p&gt;直接用手往裡面按後取下&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_2aecde09cc1a_hu_bdeda05c15c4bc95.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_2aecde09cc1a_hu_bdeda05c15c4bc95.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接下來用十字螺絲起子將六顆外蓋螺絲轉開後，即可取下外蓋&lt;/p&gt;
&lt;p&gt;沒有十字螺絲起子的話可以在車箱內的隨車工具組湊合著用&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_e6981dac74cc_hu_cdf45eec194d592d.png&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_e6981dac74cc_hu_cdf45eec194d592d.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這時候就可以看到髒兮兮的進氣箱空濾海綿了&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_8865e9a4ef65_hu_14905644c0bd2e29.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_8865e9a4ef65_hu_14905644c0bd2e29.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;拿下來新舊比一比&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_83d6fe402c7c_hu_1a929d0c4e39e345.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_83d6fe402c7c_hu_1a929d0c4e39e345.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;進氣空濾箱底下或多或少會有一點廢油，建議先擦乾淨後再裝上新的進氣箱空濾海綿&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_790460fe9f65_hu_4d6307aa1b398579.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_790460fe9f65_hu_4d6307aa1b398579.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;尾端有個廢油收集軟管&lt;/p&gt;
&lt;p&gt;如果廢油量太多便會流入這個管子內&lt;/p&gt;
&lt;p&gt;若發現裡面有廢油的話就順便拆下來清理&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_3d75beefcc01_hu_6b08270f1fc432cc.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_3d75beefcc01_hu_6b08270f1fc432cc.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;都清理完畢後，就可以裝上新的進氣箱空濾海綿，並鎖上外蓋&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_18f40e121756_hu_ffd223c0ae4366f2.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_18f40e121756_hu_ffd223c0ae4366f2.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接下來是傳動箱空濾海綿的部分&lt;/p&gt;
&lt;p&gt;取下傳動空濾箱外蓋的四顆螺絲，規格是外六角 T8&lt;/p&gt;
&lt;p&gt;上方的軟管不需要分離&lt;/p&gt;
&lt;p&gt;外蓋的接合處似乎有點公差&lt;/p&gt;
&lt;p&gt;拆下時需要用點力扳下來，不用太擔心弄壞它&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_dbd7233ee7fb_hu_74fe5a9f4bf2bed0.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_dbd7233ee7fb_hu_74fe5a9f4bf2bed0.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;移開外蓋，更換傳動箱空濾海綿，就可以鎖回去了&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_8bb3d56debac_hu_15778f88a58673df.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2567&#34;
    srcset=&#34;https://caloskao.org/post/img_8bb3d56debac_hu_15778f88a58673df.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;74&#34;
        data-flex-basis=&#34;179px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;新舊比一比，傳動箱空濾海綿也是差不多髒&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_71f2c44eb7a3_hu_dc83d9c8c85a2143.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_71f2c44eb7a3_hu_dc83d9c8c85a2143.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;花費的部分&lt;/p&gt;
&lt;p&gt;進氣箱空濾海綿 $149&lt;/p&gt;
&lt;p&gt;傳動箱空濾海綿 $169&lt;/p&gt;
&lt;p&gt;問過幾家車行，兩種空濾海綿完工價大概在 300~400 這個區間&lt;/p&gt;
&lt;p&gt;不怕麻煩與手髒的話，不仿自行更換吧&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;而有關如何解決進氣箱空濾海綿壽命短的問題，&lt;/p&gt;
&lt;p&gt;可參考 &lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/yamaha-force-155-air-filter-baffle-installation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這篇文章&lt;/a&gt;&lt;/p&gt;</description>
        </item>
        <item>
        <title>[PHP] Failed loading php_xdebug.dll</title>
        <link>https://caloskao.org/php-failed-loading-php_xdebug-dll/</link>
        <pubDate>Tue, 09 May 2017 04:40:03 +0800</pubDate>
        
        <guid>https://caloskao.org/php-failed-loading-php_xdebug-dll/</guid>
        <description>&lt;p&gt;試用 &lt;a class=&#34;link&#34; href=&#34;https://www.jetbrains.com/phpstorm/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PHPStorm&lt;/a&gt; 要設定 PHP Interpreter 時總是偵測不到 Xdebug，下指令時才發現載入發生錯誤&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;grep&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xdebug&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Failed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loading&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Bitnami&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wampstack&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;7.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ext&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php_xdebug&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dll&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;WAMP 懶人包貌似沒裝好，懶得重新安裝，從 &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/10019966/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stack Overflow&lt;/a&gt; 爬到了 Xdebug 官方有線上分析工具，可以幫忙進行 Xdebug 的除錯，並提供修正方法&lt;/p&gt;
&lt;p&gt;連結： &lt;a class=&#34;link&#34; href=&#34;https://xdebug.org/wizard.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://xdebug.org/wizard.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;使用方法很簡單 只需要在終端機下執行 &lt;code&gt;php -i&lt;/code&gt;，將輸出的 PHP Information 貼上即可&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_a8c3836f34cb_hu_b965e5bdd9edb4ca.png&#34;
    width=&#34;1920&#34;
    height=&#34;1986&#34;
    srcset=&#34;https://caloskao.org/post/img_a8c3836f34cb_hu_b965e5bdd9edb4ca.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;96&#34;
        data-flex-basis=&#34;232px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt;以此圖為例，網站直接提供了對應到 PHP 7.0.7 的 Xdebug extension DLL 檔，也會告知你應該放在哪個目錄下，php.ini 要做哪些修正，照著做後重新啟動服務，就解決了&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/q/10019966/7521686&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stack Overflow: XDebug not loading on Windows 7 64 bit PHP 5.4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://xdebug.org/wizard.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Xdebug: Support; Tailored Installation Instructions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>[MariaDB/MySQL] mysqldump include/exclude (ignore) specific table</title>
        <link>https://caloskao.org/mariadbmysql-mysqldump-includeexclude-ignore-specific-table/</link>
        <pubDate>Mon, 06 Feb 2017 03:27:01 +0800</pubDate>
        
        <guid>https://caloskao.org/mariadbmysql-mysqldump-includeexclude-ignore-specific-table/</guid>
        <description>&lt;p&gt;備份資料庫其中一種方式是使用 &lt;code&gt;mysqldump&lt;/code&gt; 指令，例如我要備份一個名為db1的資料庫：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mysqldump -u admin -p db1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 參數說明&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# -u: 使用者名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# -p: 密碼，指令enter後會要求輸入密碼，也可以直接將密碼連接在後面，如密碼為123456的話，參數改成 &amp;#39;-p123456&amp;#39; 後指令會直接執行，不會再次要求輸入密碼&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若只要備份特定的資料表時，有三種方式&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;排除/忽略特定資料表 (Exclude / Ignore)&lt;/strong&gt; 使用參數 &lt;code&gt;--ignore-table&lt;/code&gt; 去排除，需完整名稱 (即 database**.**table)；多個 table 無法使用逗點 (comma) 串接，需個別指定。適用於排除少數資料表&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mysqldump -u root -p123456 myDB --ignore-table&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;myDB.logs --ignore-table&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;myDB.users &amp;gt; dump.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;指定資料表名稱 (Include)&lt;/strong&gt; 在資料庫名稱後面指定資料表名稱，可指定多個資料表；無法使用 * 去指定特殊的 prefix / suffix；適用於匯出少數資料表。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mysqldump -u root -p123456 myDB table_1 table_2 table_3 &amp;gt; dump.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;包含特定資料表前綴/後綴或特定 pattern 的資料表 (Include prefix / suffix / pattern)&lt;/strong&gt; 利用 sub command 在內層執行 SQL 先取得指定資料表名稱後，再執行外層的 &lt;code&gt;mysqldump&lt;/code&gt; ，適用於資料表數量眾多，需匯出指定資料表也較多的資料庫。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mysqldump -u root -p123456 myDB  &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;mysql -u root -p123456 myDB -Bse SHOW TABLES LIKE &lt;span class=&#34;s1&#34;&gt;&amp;#39;my_table_%&amp;#39;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; &amp;gt; dump.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一般情況下用 &lt;code&gt;LIKE&lt;/code&gt; 語法就夠了，若情況特殊，用 &lt;code&gt;REGEXP&lt;/code&gt; 語法去撈也是可行的，需注意 &lt;code&gt;WHERE&lt;/code&gt; 的欄位是 &lt;code&gt;Tables_in_資料庫名稱&lt;/code&gt; 。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[PHP] 強制清除所有 session</title>
        <link>https://caloskao.org/php-%E5%BC%B7%E5%88%B6%E6%B8%85%E9%99%A4%E6%89%80%E6%9C%89session/</link>
        <pubDate>Wed, 11 Jan 2017 07:15:53 +0800</pubDate>
        
        <guid>https://caloskao.org/php-%E5%BC%B7%E5%88%B6%E6%B8%85%E9%99%A4%E6%89%80%E6%9C%89session/</guid>
        <description>&lt;p&gt;透過調整以下三種參數去清除不太即時，且還要改回設定&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;session.gc_probability&lt;/li&gt;
&lt;li&gt;session.gc_divisor&lt;/li&gt;
&lt;li&gt;session.gc_maxlifetime&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Session 預設是以檔案的形式存放在檔案系統中&lt;/p&gt;
&lt;p&gt;透過刪除 Session File 也可以達到效果，且非常即時&lt;/p&gt;
&lt;p&gt;缺點是無差別地圖砲，Server 上所有網站的 session 都會被清掉&lt;/p&gt;
&lt;p&gt;至於檔案是存放在 &lt;code&gt;/var/lib/php5&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@localhost &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;/var/lib/php5&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;15:09&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; ls
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;148&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; root     root        &lt;span class=&#34;m&#34;&gt;55&lt;/span&gt; Mar &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2016&lt;/span&gt; modules
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:03 sess_0ds3e4m3r7lgjooltl9a3l55c5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:05 sess_0pdn79vvlmk49pocsog0lm1s04
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data    &lt;span class=&#34;m&#34;&gt;21&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 14:52 sess_181m0vk41kg4jpbptqqkomvu45
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:03 sess_22hv9nrcie1dgklni03ici5rg1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:07 sess_2jf0i4ld55pvov4d24s103rjh3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data    &lt;span class=&#34;m&#34;&gt;21&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 14:50 sess_2u8fsfnkp9a1fanfa7qnemlpf5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:04 sess_43511pnkfu8vmmjk5uk5fa53f4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data    &lt;span class=&#34;m&#34;&gt;21&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 14:45 sess_45a6khgkcq4irmvsg43ok8k766
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data   &lt;span class=&#34;m&#34;&gt;593&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:05 sess_4tpqknfnmt5k8mqq6g0ompmda5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:05 sess_6kdp8fepotp0v1krkv41dcqeu0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data   &lt;span class=&#34;m&#34;&gt;512&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 14:52 sess_78h12laa6erhi4gsfa3l4s0h06
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data   &lt;span class=&#34;m&#34;&gt;488&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:07 sess_7u31csrpr889ubarhitom72ij6
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data    &lt;span class=&#34;m&#34;&gt;21&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 14:50 sess_8f2s5i1fb6v59t4rb0eenet682
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw------- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; www-data www-data     &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; 15:04 sess_8m5mov1o5mkjt7vuf0td0ilv53
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;其中有個 modules 目錄是存放一些 PHP 的元件&lt;/p&gt;
&lt;p&gt;記得不要手誤去刪到&lt;/p&gt;
&lt;p&gt;刪掉所有 Session Files&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@locahost &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;/var/lib/php5&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;15:09&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; rm -f sess_*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@locahost &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;/var/lib/php5&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;15:09&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; ls
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; root     root        &lt;span class=&#34;m&#34;&gt;55&lt;/span&gt; Mar &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2016&lt;/span&gt; modules
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;重整網站後就會發現 session 全部都刷新了&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Yamaha Force 155 - MOS 水箱護網改裝</title>
        <link>https://caloskao.org/yamaha-force-155-mos-%E6%B0%B4%E7%AE%B1%E8%AD%B7%E7%B6%B2%E6%94%B9%E8%A3%9D/</link>
        <pubDate>Tue, 10 Jan 2017 15:38:50 +0800</pubDate>
        
        <guid>https://caloskao.org/yamaha-force-155-mos-%E6%B0%B4%E7%AE%B1%E8%AD%B7%E7%B6%B2%E6%94%B9%E8%A3%9D/</guid>
        <description>&lt;p&gt;Force 的冷排鰭片很薄&lt;/p&gt;
&lt;p&gt;路上的碎石或是洗車時水柱力道過大都很容易讓冷排鰭片變形&lt;/p&gt;
&lt;p&gt;冷排鰭片變形太嚴重，散熱效果也會影響到&lt;/p&gt;
&lt;p&gt;因此決定找個護網來保護冷排鰭片&lt;/p&gt;
&lt;p&gt;挑選的是 MOS 的水箱護網&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_dc277751df43_hu_4b429883bb35f256.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2560&#34;
    srcset=&#34;https://caloskao.org/post/img_dc277751df43_hu_4b429883bb35f256.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;對應的車種是 SMAX 或 Majesty-S&lt;/p&gt;
&lt;p&gt;都是同一台車，只是在台灣日本兩地正式名稱不同&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_d3a80ec43db8_hu_128ee9bf0d473dd6.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_d3a80ec43db8_hu_128ee9bf0d473dd6.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;因為護網很薄，包裝內附一組墊片&lt;/p&gt;
&lt;p&gt;不想要護網放上去後會內外晃動的話可以貼一下&lt;/p&gt;
&lt;p&gt;雖然我不認為這種程度的晃動會傷到就是了&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_21dc6df2a740_hu_62ebf60c13f10718.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_21dc6df2a740_hu_62ebf60c13f10718.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;把墊片貼在背面&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_fd5cda2a8b63_hu_7542e03fc9cc5c01.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_fd5cda2a8b63_hu_7542e03fc9cc5c01.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接下來拆冷排外蓋，共有三顆螺絲，規格是 8mm 外六角&lt;/p&gt;
&lt;p&gt;其中一顆螺絲被左邊一小片蓋子遮住&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_b02adaefc8e6_hu_ced6c39d1ba33997.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_b02adaefc8e6_hu_ced6c39d1ba33997.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;拆下來後就可以看到螺絲孔&lt;/p&gt;
&lt;p&gt;將所有螺絲取下後，水箱上方的水管會勾到外蓋&lt;/p&gt;
&lt;p&gt;稍微扳一下就可以拿下外蓋&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_bb1d6ab9f61a_hu_83dc53eef0f9ca15.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_bb1d6ab9f61a_hu_83dc53eef0f9ca15.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;取下外蓋後就可以看到冷排本體&lt;/p&gt;
&lt;p&gt;可以看到有一小部分的冷排鰭片已經變形&lt;/p&gt;
&lt;p&gt;才上路 1100 公里而已&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_f4bf71ddd817_hu_5d3f1a79fcf7a735.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_f4bf71ddd817_hu_5d3f1a79fcf7a735.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;安裝護網，輕輕凹一下就可以卡進冷排中間的凹槽&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_baf15382731f_hu_32d4843c93f21e66.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_baf15382731f_hu_32d4843c93f21e66.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;最後裝回外蓋就大功告成了&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_ca5bb3e19fda_hu_eb47bfdc9cc873d6.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1440&#34;
    srcset=&#34;https://caloskao.org/post/img_ca5bb3e19fda_hu_eb47bfdc9cc873d6.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;133&#34;
        data-flex-basis=&#34;320px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;MOS 的護網雖然很密集，但孔與孔之間的距離也是非常貼近&lt;/p&gt;
&lt;p&gt;或多或少應該都會減少一點進氣量&lt;/p&gt;
&lt;p&gt;會不會導致水箱過熱，儀表上的水溫警示燈倒是沒亮過&lt;/p&gt;
&lt;p&gt;但是水溫警示燈是在水溫達到 120 度時才會亮&lt;/p&gt;
&lt;p&gt;水溫超過 100 度時對車子其實就不是很好了&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;至於具體對進氣量影響有多大&lt;/p&gt;
&lt;p&gt;若以後有加裝水溫表話再寫一篇測試文來驗證吧&lt;/p&gt;</description>
        </item>
        <item>
        <title>[Chrome] 清除快取的三種方法</title>
        <link>https://caloskao.org/chrome-%E6%B8%85%E9%99%A4%E5%BF%AB%E5%8F%96%E7%9A%84%E4%B8%89%E7%A8%AE%E6%96%B9%E6%B3%95/</link>
        <pubDate>Tue, 20 Dec 2016 05:02:28 +0800</pubDate>
        
        <guid>https://caloskao.org/chrome-%E6%B8%85%E9%99%A4%E5%BF%AB%E5%8F%96%E7%9A%84%E4%B8%89%E7%A8%AE%E6%96%B9%E6%B3%95/</guid>
        <description>&lt;h3 id=&#34;一全域清除&#34;&gt;一、全域清除
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;滑鼠點選右上角展開選單，選擇「設定」。&lt;/li&gt;
&lt;li&gt;找到隱私權區塊，點選「清除瀏覽資料」。&lt;/li&gt;
&lt;li&gt;自行指定要清除的類型與時間。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_84fc61476eb8_hu_e8a81e56ed578be0.png&#34;
    width=&#34;1920&#34;
    height=&#34;1624&#34;
    srcset=&#34;https://caloskao.org/post/img_84fc61476eb8_hu_e8a81e56ed578be0.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;118&#34;
        data-flex-basis=&#34;283px&#34;
    
&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;二單一網站&#34;&gt;二、單一網站
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;開啟 Chrome Developer Tool 介面。(快速鍵：&lt;code&gt;F12&lt;/code&gt;、&lt;code&gt;Ctrl+Shift+I&lt;/code&gt;，MAC 使用者按 &lt;code&gt;Command+Shift+I&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;切換到介面上的「Application」分頁。&lt;/li&gt;
&lt;li&gt;點選介面左側選單「Clear storage」，勾選要清除的類型後，按下「Clear site data」。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_034db25d44e9_hu_a4a596c0c5d5b18f.png&#34;
    width=&#34;1920&#34;
    height=&#34;1583&#34;
    srcset=&#34;https://caloskao.org/post/img_034db25d44e9_hu_a4a596c0c5d5b18f.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;121&#34;
        data-flex-basis=&#34;291px&#34;
    
&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;三單一頁面最快最方便推薦&#34;&gt;三、單一頁面 &lt;strong&gt;(最快最方便，推薦)&lt;/strong&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;開啟 Chrome Developer Tool 介面。(快速鍵：&lt;code&gt;F12&lt;/code&gt;、&lt;code&gt;Ctrl+Shift+I&lt;/code&gt;，MAC 使用者按 &lt;code&gt;Command+Shift+I&lt;/code&gt; )&lt;/li&gt;
&lt;li&gt;滑鼠右鍵點選左上角 Reload 按鈕，在 Developer Tool 介面下會出現三種不同的 Reload 方式。&lt;/li&gt;
&lt;li&gt;點選第三種「清除快取並強制重新載入」。&lt;br&gt;

&lt;img src=&#34;https://caloskao.org/post/img_f37c1f20ec8a_hu_9851957c83d8a293.png&#34;
    width=&#34;1920&#34;
    height=&#34;1587&#34;
    srcset=&#34;https://caloskao.org/post/img_f37c1f20ec8a_hu_9851957c83d8a293.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;121&#34;
        data-flex-basis=&#34;290px&#34;
    
&gt;
&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>[SublimeText] 正規表示式搜尋與取代</title>
        <link>https://caloskao.org/sublimetext-%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F%E6%90%9C%E5%B0%8B%E8%88%87%E5%8F%96%E4%BB%A3/</link>
        <pubDate>Thu, 01 Dec 2016 13:20:16 +0800</pubDate>
        
        <guid>https://caloskao.org/sublimetext-%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F%E6%90%9C%E5%B0%8B%E8%88%87%E5%8F%96%E4%BB%A3/</guid>
        <description>&lt;p&gt;在搜尋/取代模式下&lt;/p&gt;
&lt;p&gt;點選下圖紅框處，即可使用 regex 模式&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_2b844a29e033_hu_d8b7e9b1d0283c90.png&#34;
    width=&#34;1920&#34;
    height=&#34;420&#34;
    srcset=&#34;https://caloskao.org/post/img_2b844a29e033_hu_d8b7e9b1d0283c90.png 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;161201_1&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;457&#34;
        data-flex-basis=&#34;1097px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如果想要保留 match pattern 內容&lt;/p&gt;
&lt;p&gt;在 Replace With 這欄如上圖使用錢號 + 數字即可&lt;/p&gt;
&lt;p&gt;如果有一段內容如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$b&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;照圖中使用的Replace pattern&lt;/p&gt;
&lt;p&gt;就會變成如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$b&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;PS：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;錢號是特殊符號，所以要當作純文字的話要加反斜線。&lt;/li&gt;
&lt;li&gt;使用 $1 或是 \1 在 Sublime Text 中兩者皆具有保留 match pattern 的效果。&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>新車試駕 - Yamaha Force 155</title>
        <link>https://caloskao.org/test-ride-yamaha-force-155/</link>
        <pubDate>Tue, 08 Nov 2016 14:32:19 +0800</pubDate>
        
        <guid>https://caloskao.org/test-ride-yamaha-force-155/</guid>
        <description>&lt;p&gt;年中的時候剛好有想換車，本來 SMAX 要給他買下去了，結果看到像是 SMAX 改款的測試車身影，就先忍住看看年底或明年初會不會正式發表，果然在 10 月發表了。雖然不叫  SMAX 2，但車頭雙燈一整個很上火，也剛好有 24HR 試乘活動，就給他報名了。&lt;/p&gt;
&lt;p&gt;由於平常秉持著假日就是要睡飽飽的好習慣，所以規劃的試乘路線本來是預定下午再出發，然後就先劃了這樣：&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_9f2dfe16836d_hu_12babc507465c42b.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1125&#34;
    srcset=&#34;https://caloskao.org/post/img_9f2dfe16836d_hu_12babc507465c42b.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;170&#34;
        data-flex-basis=&#34;409px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;但是想了一下，把一桶油騎光應該才能得到比較準確的油耗，也很久沒有跑長途，結果里程直接近乎 double&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_f1aac5f1db6e_hu_3fd181dc85c25eff.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1741&#34;
    srcset=&#34;https://caloskao.org/post/img_f1aac5f1db6e_hu_3fd181dc85c25eff.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;110&#34;
        data-flex-basis=&#34;264px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這個里程應該夠騎一桶油了，於是就沒有再加長行程，隔天一早吃飽喝足，就準備上路啦。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_4c0fb30d83ba_hu_f6585ce977dd7afc.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;2559&#34;
    srcset=&#34;https://caloskao.org/post/img_4c0fb30d83ba_hu_f6585ce977dd7afc.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;75&#34;
        data-flex-basis=&#34;180px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;由於牽車的時候油表是見底的，所以離開早餐店後先到附近加油站加滿油，先確認一下車子的總里程數。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_b8f73c412dc4_hu_2dc09dd5c73e37b5.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_b8f73c412dc4_hu_2dc09dd5c73e37b5.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;1081KM，確認完畢，就直奔東山妙咖啡。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_5fb4eb21724d_hu_efa3d9b565f022d.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_5fb4eb21724d_hu_efa3d9b565f022d.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這段騎了 86.9 公里，油表掉了一格。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_24b158d9b400_hu_ad6010f8396f3b07.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1078&#34;
    srcset=&#34;https://caloskao.org/post/img_24b158d9b400_hu_ad6010f8396f3b07.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;178&#34;
        data-flex-basis=&#34;427px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;很蠢的是後面因為有點趕時間，結果到定點都忘記拍里程，所以其他段就沒得參考了 QQ。&lt;/p&gt;
&lt;p&gt;這裡先抱怨一下，原廠坐墊超級難坐的，上路後大概 30 公里左右屁股就感受到不適，但受惠於平常就愛亂跑，屁股也是有稍微被訓練到，耐受度還能多撐一些，就一路直接騎到定點。&lt;/p&gt;
&lt;p&gt;喝完咖啡後就移動到附近的水火同源走走看看。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_a0fc3b8556c6_hu_5fbf545e42beef82.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;3413&#34;
    srcset=&#34;https://caloskao.org/post/img_a0fc3b8556c6_hu_5fbf545e42beef82.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;56&#34;
        data-flex-basis=&#34;135px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;而下山時意外發生小插曲，因為我是勁戰車主，沒注意到 Force 傾角會比較小，在髮夾彎傾角用了過頭，就不小心磨到中柱了。還車的時候有告知老闆娘，老闆娘說如果需要賠償會再聯絡我，不過兩天過去了車行沒打來，應該是不用賠了XD。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_6e343ecf9ad4_hu_b5969f8ce180c1c8.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_6e343ecf9ad4_hu_b5969f8ce180c1c8.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;因為時間沒抓好，就跳過了 172 中間的天鵝湖公園，直奔北門水晶教堂。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_91d53a4d9ad0_hu_4f738ef4ce892b12.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_91d53a4d9ad0_hu_4f738ef4ce892b12.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;為了趕上觀夕平台的日落，井仔腳和七股鹽山也跳過了。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_fba13a92a9b1_hu_6ac79151deba977b.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_fba13a92a9b1_hu_6ac79151deba977b.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;日落後氣溫有點偏涼，到了花園夜市來一碗麻辣煲暖暖身子。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_f516cb3a3635_hu_53c8af545f6e8673.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1296&#34;
    srcset=&#34;https://caloskao.org/post/img_f516cb3a3635_hu_53c8af545f6e8673.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;148&#34;
        data-flex-basis=&#34;355px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;在花園夜市吃吃喝喝，時間也快到了約定的還車時間，於是直接回車行。&lt;/p&gt;
&lt;p&gt;大概在進入路竹區後油表開始閃了，依照 Yamaha 的設定，油表開始閃的時候通常至少還會有 20% 左右的油，所以也沒有急著找加油站，順路繼續騎到橋頭火車站旁的中油，加油量為 5.91 公升。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_90969f4e94c5_hu_e6377b4817a467da.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;3413&#34;
    srcset=&#34;https://caloskao.org/post/img_90969f4e94c5_hu_e6377b4817a467da.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;56&#34;
        data-flex-basis=&#34;135px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;配合計算油耗，把起點和終點改成起訖加油站 （大社靖海站&amp;amp;橋頭站），以及移除三個沒有去的景點，總里程從 234 公里縮減為 222 公里外，路線上沒有太大的變化，只有台 61 改走台 17。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_c3e377831318_hu_37beb33d2d65c539.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1693&#34;
    srcset=&#34;https://caloskao.org/post/img_c3e377831318_hu_37beb33d2d65c539.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;113&#34;
        data-flex-basis=&#34;272px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;再加上途中騎錯路的時候多出來的里程，實際里程為 231 公里。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_a40e80dd210f_hu_d6676d5b24cf2ea.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_a40e80dd210f_hu_d6676d5b24cf2ea.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;得出油耗值約為 39.09&lt;/p&gt;
&lt;p&gt;全程兩人雙載，重量合計約 110 公斤，174、175、台南市區均速 60 公里左右，其他路段約 80~90，騎乘習慣為起步半油門。&lt;/p&gt;
&lt;p&gt;最後再聊一聊車子本身：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;外型：&lt;/strong&gt; 好不好看很主觀，但我相信有車體外觀會是很吸引人的一大原因。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;動力：&lt;/strong&gt; 起步有感，雖然 SMAX 起步也很快，但相較之下 Force 又更快一點點，是不是受益於車重輕量 6KG 的關係，由於小弟不是專業的，所以我也不敢斷言。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;制動：&lt;/strong&gt; 前後都夠用，但前煞車拉桿行程覺得太長，拉過半後才開始有減速的感覺。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;夜間照明：&lt;/strong&gt; 全車鹵素燈應該是比較常被提到的部分，亮度、面積以我自己來說都夠用，有些人不喜歡，但我個人不是很 care，畢竟有反應在車價上，但是切遠燈熄近燈的部分個人就很不解了，儘管改線組就可以解決了，但也是一筆額外花費。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;油耗：&lt;/strong&gt; 以 150 級距的速克達來說表現還不錯，不過市區通勤油耗表現就不知道了，需要等待其他車友分享囉。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;騎乘感受：&lt;/strong&gt; 踏板面積變小，小弟身高 180，置腳空間雖然小了，但還不至於會卡到腳。原廠椅墊完全不及格，不過後座的部分根據女友大人說法是沒什麼感覺（回到車行他坐上勁戰說勁戰比較舒服XD）。而彎道中承襲 SMAX 的穩定，車身其實也很靈活，不會因為車重與軸距的關係就比較差，高速巡航車身也很穩定的，大概快破百的時候才會因為風壓而意識到該減速了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;總體來說，對於這台車的表現個人覺得滿意，每年 800 的牌照稅其實也沒什麼，真的有愛的話這點完全無感，我想過不久後我就會成為車主了。&lt;/p&gt;
&lt;p&gt;以上不專業試乘心得，謝謝收看。&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_8012d644c307_hu_521daaa3626098be.jpg&#34;
    width=&#34;1920&#34;
    height=&#34;1080&#34;
    srcset=&#34;https://caloskao.org/post/img_8012d644c307_hu_521daaa3626098be.jpg 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;177&#34;
        data-flex-basis=&#34;426px&#34;
    
&gt;
&lt;/p&gt;</description>
        </item>
        <item>
        <title>Cloc - 快速計算程式碼行數</title>
        <link>https://caloskao.org/cloc-%E5%BF%AB%E9%80%9F%E8%A8%88%E7%AE%97%E7%A8%8B%E5%BC%8F%E7%A2%BC%E8%A1%8C%E6%95%B8/</link>
        <pubDate>Fri, 15 Jul 2016 07:05:07 +0800</pubDate>
        
        <guid>https://caloskao.org/cloc-%E5%BF%AB%E9%80%9F%E8%A8%88%E7%AE%97%E7%A8%8B%E5%BC%8F%E7%A2%BC%E8%A1%8C%E6%95%B8/</guid>
        <description>&lt;p&gt;最近剛好一個閒來無事&lt;/p&gt;
&lt;p&gt;想看看專案規模成長到多大&lt;/p&gt;
&lt;p&gt;雖然以程式碼行數來去看是不太準&lt;/p&gt;
&lt;p&gt;但起碼依然是指標的一種&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AlDanial/cloc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Cloc&lt;/strong&gt;&lt;/a&gt;不但計算快速&lt;/p&gt;
&lt;p&gt;且除了程式碼行數，還會列出檔案總數、空行數和註解行數&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;[icon name=&amp;ldquo;github&amp;rdquo; class=&amp;quot;&amp;quot; unprefixed_class=&amp;quot;&amp;quot;]GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/AlDanial/cloc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/AlDanial/cloc&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;安裝&#34;&gt;&lt;strong&gt;安裝&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;Cloc可以透過多種Package manager安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g cloc                    # https://www.npmjs.com/package/cloc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install cloc              # Debian, Ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo yum install cloc                  # Red Hat, Fedora
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dnf install cloc                  # Fedora 22 or later
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pacman -S cloc                    # Arch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pkg install cloc                  # FreeBSD
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo port install cloc                 # Mac OS X with MacPorts
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install cloc                      # Mac OS X with Homebrew
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;choco install cloc                     # Windows with Chocolatey
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接下載Released package進行安裝 (&lt;a class=&#34;link&#34; href=&#34;https://github.com/AlDanial/cloc/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;下載頁面&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;操作&#34;&gt;&lt;strong&gt;操作&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;指令：cloc [options] &amp;lt;file(s)/dir(s)&amp;gt; | &amp;lt;set 1&amp;gt; &amp;lt;set 2&amp;gt; | &lt;report files&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Calos@Workstation:~/project/my-project$ cloc .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     538 text files.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     520 unique files.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     154 files ignored.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://github.com/AlDanial/cloc v 1.66  T=2.61 s (182.4 files/s, 38389.0 lines/s)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Language                     files          blank        comment           code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PHP                            299           3141           1457          35339
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;JavaScript                      97           5996           5308          30628
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CSS                             44            386            207          11262
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SQL                              2             25             54           2732
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HTML                            14            423             98           2699
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;JSON                            10              1              0            282
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bourne Shell                     8             21              2             77
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make                             1             12             13             28
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;YAML                             1              0              0             10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SUM:                           476          10005           7139          83057
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;個人常用的參數有三種：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;--exclude-dir: 排除特定目錄，以逗號隔開&lt;/li&gt;
&lt;li&gt;--exclude-lang: 排除特定語言，以逗號隔開&lt;/li&gt;
&lt;li&gt;--exclude-ext: 排除特定副檔名，以逗號隔開&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;完整參數說明請參考&lt;a class=&#34;link&#34; href=&#34;https://github.com/AlDanial/cloc/blob/master/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方文件&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;以下範例為:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;排除plugins、makefiles、storage三個特定目錄下所有檔案&lt;/li&gt;
&lt;li&gt;排除make語言的所有檔案&lt;/li&gt;
&lt;li&gt;排除副檔名為html的所有檔案&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Calos@Workstation:~/project/my-project$ cloc . --exclude-dir=plugins,makefiles,storage --exclude-lang=make --exclude-ext=html
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     372 text files.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     364 unique files.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      63 files ignored.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://github.com/AlDanial/cloc v 1.66  T=0.44 s (808.6 files/s, 102809.6 lines/s)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Language                     files          blank        comment           code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PHP                            286           2986           1390          34250
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;JavaScript                      39            604            286           4056
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CSS                             28            230             23           1055
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SUM:                           353           3820           1699          39361
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[PHP] 利用 flush()、ob_flush() 強制輸出網頁內容</title>
        <link>https://caloskao.org/php-%E5%88%A9%E7%94%A8flush%E3%80%81ob_flush%E5%BC%B7%E5%88%B6%E8%BC%B8%E5%87%BA%E7%B6%B2%E9%A0%81%E5%85%A7%E5%AE%B9/</link>
        <pubDate>Fri, 24 Jun 2016 07:33:21 +0800</pubDate>
        
        <guid>https://caloskao.org/php-%E5%88%A9%E7%94%A8flush%E3%80%81ob_flush%E5%BC%B7%E5%88%B6%E8%BC%B8%E5%87%BA%E7%B6%B2%E9%A0%81%E5%85%A7%E5%AE%B9/</guid>
        <description>&lt;p&gt;正常情況下，執行中的 PHP 過程中輸出的內容會先進到緩衝區 (output_buffer)&lt;/p&gt;
&lt;p&gt;PHP Script 全部執行完畢後，產生的資料才會從 output_buffer 一次輸出到瀏覽器上&lt;/p&gt;
&lt;p&gt;但是若程式要跑一段時間，想要看到執行過程中輸出的內容，可以透過 &lt;code&gt;ob_flush()&lt;/code&gt; + &lt;code&gt;flush()&lt;/code&gt; 達成&lt;/p&gt;
&lt;p&gt;雖然看起來名稱很像，但是做的事情不太一樣：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;ob_flush()&lt;/code&gt;：把 PHP output_buffer (假設有打開)的東西輸出，但並不是立刻輸出到終端 &lt;code&gt;flush()&lt;/code&gt;：把非 PHP output_buffer，伺服器上準備輸出的資料輸出到瀏覽器上&amp;quot;顯示出來&amp;quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;寫一小段測試 code&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;header&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Content-type: text/html; charset=utf-8&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;br&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;flush&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ob_flush&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;usleep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;20000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 20ms
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;HTTP Server 設定也會影響到 function&lt;/p&gt;
&lt;p&gt;Apache 預設值不影響，不過 Nginx 會&lt;/p&gt;
&lt;p&gt;所以如果 HTTP Server 使用 Nginx&lt;/p&gt;
&lt;p&gt;需要針對 PHP 類型額外做設定：&lt;/p&gt;
&lt;p&gt;編輯 &lt;code&gt;/etc/nginx/site-available/default&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 找到針對PHP的directive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;^/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/|$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;fastcgi_split_path_info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.+&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/.*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;document_root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fastcgi_script_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;404&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fastcgi_params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;fastcgi_index&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;fastcgi_param&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SCRIPT_FILENAME&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;document_root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fastcgi_script_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;fastcgi_pass&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fpm&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;fastcgi_read_timeout&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;300&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 加入這三行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;fastcgi_keep_conn&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# fastcgi保持連線&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;proxy_buffering&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 如果沒使用proxy的話這行可以不加&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;gzip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 關閉gzip壓縮&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;值得注意的是 &lt;code&gt;fastcgi_keep_conn&lt;/code&gt; 在 Nginx 下預設是 off 的&lt;/p&gt;
&lt;p&gt;雖然啟用後理論上效能能得到提升 (Connection TIME_WAIT 數量會明顯下降)&lt;/p&gt;
&lt;p&gt;不過在某些特殊情況下可能會發生異常&lt;/p&gt;
&lt;p&gt;所以預設情況下是關閉的&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;https://forum.nginx.org/read.php?2,256371,256376&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt; Re: Why does fastcgi_keep_conn default to off?&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Linux] iptables ip/port forwarding</title>
        <link>https://caloskao.org/linux-iptables-ipport-forwarding/</link>
        <pubDate>Sat, 28 May 2016 14:42:23 +0800</pubDate>
        
        <guid>https://caloskao.org/linux-iptables-ipport-forwarding/</guid>
        <description>&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;OS: Ubuntu-14.04.4-server-amd64&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;本機-port-a-轉送到本機-port-b&#34;&gt;本機 Port A 轉送到本機 Port B
&lt;/h2&gt;&lt;p&gt;為了方便操作，先切換為 root&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo su -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;將 tcp port 20022 的封包轉送到本機的 port 22&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo iptables -t nat -A PREROUTING -p tcp --dport &lt;span class=&#34;m&#34;&gt;20022&lt;/span&gt; -j REDIRECT --to-port &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以使用 &lt;code&gt;-i&lt;/code&gt; 參數指定網路卡 (interface)，指定網路卡 &lt;code&gt;eth0&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport &lt;span class=&#34;m&#34;&gt;20022&lt;/span&gt; -j REDIRECT --to-port &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;本機-port-轉送到其他主機-port&#34;&gt;本機 Port 轉送到其他主機 Port
&lt;/h2&gt;&lt;p&gt;此操作類型&lt;strong&gt;必須先開啟 ip forward。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;情境設定&#34;&gt;情境設定
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;主機 A IP: 192.168.0.253 (設定將 port 20022 封包轉送到主機 B 的 port 22)&lt;/li&gt;
&lt;li&gt;主機 B IP: 192.168.0.1 (SSH server 執行中，監聽 port 22)&lt;/li&gt;
&lt;li&gt;主機 C IP: 192.168.0.2 (測試轉送結果用的主機)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;主機-a-操作&#34;&gt;主機 A 操作
&lt;/h3&gt;&lt;p&gt;一樣為了方便操作，先切換為 root&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo su -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟用 ip forward&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 啟用 ip forward，立刻生效 (重開機會消失)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl net.ipv4.ip_forward&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定網路卡啟動時時自動啟用 ip forward，重開機就不是問題&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;pre-up sysctl net.ipv4.ip_forward=1&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; /etc/network/interfaces
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;直接 &lt;code&gt;echo 1&lt;/code&gt; 到 &lt;code&gt;/proc/sys/net/ipv4/ip_forward&lt;/code&gt; 也是一種立刻啟用的方式，個人習慣用 &lt;code&gt;systemctl&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &amp;gt; /proc/sys/net/ipv4/ip_forward
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;轉送 tcp port 20022 收到的封包到主機 B 的 port 22&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iptables -t nat -A PREROUTING -p tcp --dport &lt;span class=&#34;m&#34;&gt;20022&lt;/span&gt; -j DNAT --to 192.168.0.1:22
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iptables -t nat -A POSTROUTING -p tcp --dport &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt; --dst 192.168.0.1 -j MASQUERADE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;主機-c-操作&#34;&gt;主機 C 操作
&lt;/h3&gt;&lt;p&gt;使用 &lt;a class=&#34;link&#34; href=&#34;https://zh.wikipedia.org/zh-tw/Netcat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Netcat&lt;/a&gt; 的 &lt;code&gt;nc&lt;/code&gt; 指令測試主機 A 的 port 20022 是否為啟用中的狀態:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -zv 192.168.0.253 &lt;span class=&#34;m&#34;&gt;20022&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果設定沒問題的話應該會得到回應:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection to 192.168.0.253 20022 port [tcp/*] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這時候使用 SSH 指定連線到連線主機 A 的 port 20022，實際會登入到主機 B。&lt;/p&gt;
&lt;p&gt;實際上主機 A 沒有服務在使用 port 20022，但是因為我們設定了 iptables 做 port forward，所以這個封包並沒有進到 server，而是直接被轉送到 主機 B。同時主機 B 回傳的封包也會透過主機 A 傳到主機 C。主機 A 透過 POSTROUTING 的規則，把封包傳回主機 A。&lt;/p&gt;
&lt;h3 id=&#34;開機後重新載入設定&#34;&gt;開機後重新載入設定
&lt;/h3&gt;&lt;p&gt;因為自定義的 iptables rules 在重開機之後就會消失，所以要使用以下指令保存設定。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iptables-save &amp;gt; /etc/network/iptables.rules
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重開機後設定消失，可以透過以下指令復原規則:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iptables-restore &amp;lt; /etc/network/iptables.rules
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要設定為開機時自動復原的話，把上面的指令加入 &lt;code&gt;/etc/network/interfaces&lt;/code&gt; 這個檔案:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;pre-up iptables-restore &amp;lt; /etc/network/iptables.rules&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; /etc/network/interfaces
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣一來重開機時，轉送設定會在網路卡啟動時一併載入&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 掛載 VirtualBox 共享目錄</title>
        <link>https://caloskao.org/ubuntu-%E6%8E%9B%E8%BC%89-virtualbox-%E5%85%B1%E4%BA%AB%E7%9B%AE%E9%8C%84/</link>
        <pubDate>Fri, 27 May 2016 14:56:24 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-%E6%8E%9B%E8%BC%89-virtualbox-%E5%85%B1%E4%BA%AB%E7%9B%AE%E9%8C%84/</guid>
        <description>&lt;p&gt;※在進行之前，要先把 VirtualBOX Guest Additions 安裝過 (在 VirtualBox 上排選單 &amp;gt; Devices &amp;gt; Insert Guest Additions CD image)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;首先，先把自己加進 vboxsf 群組 (VirtualBox)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo usermod -a -G vboxsf &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;whoami&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;編輯 &lt;code&gt;/etc/fstab&lt;/code&gt; 檔&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# share_folder: 在 VirtualBox 設定的共享資料夾名稱
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# /srv/share_folder: Ubuntu 上的掛載點
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;share_folder    /srv/share_folder   defaults    0 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;執行 &lt;code&gt;sudo mount -a&lt;/code&gt;，就會看共享目錄被掛到 &lt;code&gt;/srv/share_folder&lt;/code&gt; 了&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[VIM] 安裝第三方 Color Scheme</title>
        <link>https://caloskao.org/vim-%E5%AE%89%E8%A3%9D%E7%AC%AC%E4%B8%89%E6%96%B9color-scheme/</link>
        <pubDate>Tue, 17 May 2016 22:59:55 +0800</pubDate>
        
        <guid>https://caloskao.org/vim-%E5%AE%89%E8%A3%9D%E7%AC%AC%E4%B8%89%E6%96%B9color-scheme/</guid>
        <description>&lt;p&gt;如果家目錄沒有 &lt;code&gt;.vim/colors&lt;/code&gt; 資料夾，就先創一個&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p ~/.vim/colors
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這裡直接 &lt;code&gt;git clone&lt;/code&gt; 第三方 color scheme，以 &lt;a class=&#34;link&#34; href=&#34;https://github.com/jacoborus/tender&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;jacoborus/tender&lt;/a&gt; 為例&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@github.com:jacoborus/tender.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;code&gt;tender/colors/tender.vim&lt;/code&gt; 這個就是 color scheme 檔，把這個檔案丟到 &lt;code&gt;~/.vim/colors/&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp tender/colors/tender.vim ~/.vim/colors/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;修改 vimrc 檔案，加入底下這行&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-vimrc&#34; data-lang=&#34;vimrc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;colorscheme&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;tender&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;重新啟動 vim，就會自動套用新的 color scheme 了&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Bootstrap] Modal 自動設定最大高度</title>
        <link>https://caloskao.org/bootstrap-modal-%E8%87%AA%E5%8B%95%E8%A8%AD%E5%AE%9A%E6%9C%80%E5%A4%A7%E9%AB%98%E5%BA%A6/</link>
        <pubDate>Sun, 15 May 2016 23:14:53 +0800</pubDate>
        
        <guid>https://caloskao.org/bootstrap-modal-%E8%87%AA%E5%8B%95%E8%A8%AD%E5%AE%9A%E6%9C%80%E5%A4%A7%E9%AB%98%E5%BA%A6/</guid>
        <description>&lt;p&gt;Bootstrap 有個 modal 懸浮窗&lt;/p&gt;
&lt;p&gt;如果裡面內容過多，bootstrap 並不會把內容限縮在 modal-body 裡&lt;/p&gt;
&lt;p&gt;為了美觀，所以需要 CSS 的 &lt;code&gt;max-height&lt;/code&gt; 屬性套用至 modal-body 上&lt;/p&gt;
&lt;p&gt;如此一來內容過長造成溢出時，modal-body 會顯示捲動欄&lt;/p&gt;
&lt;p&gt;同時 modal-header 與 modal-footer 的內容亦會固定在視窗上&lt;/p&gt;
&lt;p&gt;網站上可能會用到多個 modal ，一個一個設定的話要自己去抓數字，很麻煩&lt;/p&gt;
&lt;p&gt;所幸 bootstrap modal 有 &lt;code&gt;shown.bs.modal&lt;/code&gt; 這個 event 可以使用&lt;/p&gt;
&lt;p&gt;所以寫了一段全部 modal 都適用的 code&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;.modal&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;shown.bs.modal&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;margin_vertical&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parseInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;.modal-dialog&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;css&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;margin-top&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parseInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;.modal-dialog&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;css&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;margin-bottom&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height_header&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parseInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;.modal-header&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;css&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;height&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height_footer&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parseInt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;.modal-footer&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;css&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;height&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height_body&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;innerHeight&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height_header&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height_footer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;margin_vertical&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;px&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;.modal-body&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;css&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;max-height&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height_body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;css&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;overflow&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;auto&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;關於多扣 10px 的部分，因為有其他誤差值，造成 body 的捲動欄會出現&lt;/p&gt;
&lt;p&gt;個人猜想可能是因為其他部分 box-model 的關係導致 (border-width 等 blahblah)&lt;/p&gt;
&lt;p&gt;不過我也抓不到就是了QQ，所以就偷懶多扣 10px 混過去 XD&lt;/p&gt;
&lt;p&gt;至於為什麼會用 &lt;code&gt;shown.bs.modal&lt;/code&gt; 這個event，而不是 &lt;code&gt;show.bs.modal&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;是因為 modal 顯示前的的 css height 是 0&lt;/p&gt;
&lt;p&gt;&lt;code&gt;show.bs.modal&lt;/code&gt; 觸發的時機是顯示前，而 &lt;code&gt;shown.bs.modal&lt;/code&gt; 則是顯示後&lt;/p&gt;
&lt;p&gt;因此要等modal顯示時，偵測到的css height才是正確的&lt;/p&gt;
&lt;p&gt;而這裡又有一個小小的缺點&lt;/p&gt;
&lt;p&gt;就是當你使用 fade-in &amp;amp; fade-out 效果時&lt;/p&gt;
&lt;p&gt;在動畫結束前，body 的捲動欄會出現&lt;/p&gt;
&lt;p&gt;直到動畫結束後觸發了 &lt;code&gt;shown.bs.modal&lt;/code&gt; event&lt;/p&gt;
&lt;p&gt;才會顯示成正常的樣子&lt;/p&gt;
&lt;p&gt;小弟才疏學淺，這個問題還不知道要怎麼解決&lt;/p&gt;
&lt;p&gt;或許加快 css animation speed 做為障眼法混過去勉強可行&lt;/p&gt;
&lt;p&gt;不過因為這種情況只會在該 modal 第一次顯示時才會出現&lt;/p&gt;
&lt;p&gt;之後只要 browser inner height 沒有變，都不會出現&lt;/p&gt;
&lt;p&gt;所以就將就一下囉~&lt;/p&gt;
&lt;p&gt;順帶一提，如果你想要能限制最大高度，又能固定佔滿版，只要將第六行的「max-height」改成「height」即可。如下所示&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$(this).find(&amp;#39;.modal-body&amp;#39;).css(&amp;#39;height&amp;#39;, height_body).css(&amp;#39;overflow&amp;#39;, &amp;#39;auto&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update: 2017-05-10: 利用 &lt;code&gt;|| 0&lt;/code&gt; 預防取回高度值為 nan 的情況下出錯。&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[CSS] 元素翻轉</title>
        <link>https://caloskao.org/css-%E5%85%83%E7%B4%A0%E7%BF%BB%E8%BD%89/</link>
        <pubDate>Wed, 04 May 2016 23:53:30 +0800</pubDate>
        
        <guid>https://caloskao.org/css-%E5%85%83%E7%B4%A0%E7%BF%BB%E8%BD%89/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;/* 水平翻轉 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;flip-horizontal&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kp&#34;&gt;-moz-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kp&#34;&gt;-webkit-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kp&#34;&gt;-o-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kp&#34;&gt;-ms-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;/* 垂直翻轉 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;flip-vertical&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kp&#34;&gt;-moz-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kp&#34;&gt;-webkit-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kp&#34;&gt;-o-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kp&#34;&gt;-ms-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;transform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[jQuery] 重設 HTML Select Box</title>
        <link>https://caloskao.org/jquery-%E9%87%8D%E8%A8%ADhtml-select-box/</link>
        <pubDate>Tue, 23 Feb 2016 00:54:13 +0800</pubDate>
        
        <guid>https://caloskao.org/jquery-%E9%87%8D%E8%A8%ADhtml-select-box/</guid>
        <description>&lt;p&gt;舊式做法是將 &lt;code&gt;selectedIndex&lt;/code&gt; 設為 &lt;code&gt;0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;自 jQuery 1.6 開始支援使用 &lt;code&gt;.prop()&lt;/code&gt; 這支 API 來操作 &lt;code&gt;selectedIndex&lt;/code&gt; HTML&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;select&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;option&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;select all&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;option&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;option&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Text 1&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;option&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;option&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Text 2&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;option&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;option&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Text 3&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;option&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;select&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;jQuery&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#name&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;prop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;selectedIndex&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Ubuntu] 增加服務 Listening Ports</title>
        <link>https://caloskao.org/ubuntu-%E5%A2%9E%E5%8A%A0%E6%9C%8D%E5%8B%99-listening-ports/</link>
        <pubDate>Sun, 27 Dec 2015 05:33:13 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-%E5%A2%9E%E5%8A%A0%E6%9C%8D%E5%8B%99-listening-ports/</guid>
        <description>&lt;p&gt;今天碰到外部網路無法存取 MySQL，調查原因發現是 firewall 把 port 3306 擋住了&lt;/p&gt;
&lt;p&gt;考慮到安全性的問題，在 firewall 擋確實是一個有效的方法，但是如果直接改 MySQL listening port，內部服務要改動的幅度有點大&lt;/p&gt;
&lt;p&gt;而 MySQL 也不支援同一服務對應多個 port&lt;/p&gt;
&lt;p&gt;靈光一閃想到直接用 iptables 做 port forwarding，如此一來就能讓同一個 MySQL 服務同時監聽多個 port&lt;/p&gt;
&lt;p&gt;此方法不限定 MySQL，也適用於只能指定一個 listening port 的服務&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# OS: Ubuntu 14.04 Server LTS x64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# User: root&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 將網路卡介面eth0上port 20000的封包轉送到port 3306&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iptables -t nat -A PREROUTING -i eth0 -p tcp --dport &lt;span class=&#34;m&#34;&gt;20000&lt;/span&gt; -j REDIRECT --to-port &lt;span class=&#34;m&#34;&gt;3306&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這時候用 port scanner 工具掃描 port 20000，state 是 open&lt;/p&gt;
&lt;p&gt;但因為不是常見的 service listening port，所以會顯示為 unknown&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PORT     STATE SERVICE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;20000/tcp open  unknown
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;因為自定義的 iptables rules 在重開機之後就會消失，所以我們要在重開機後能自動復原 rules&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 先保存現在已經設定好的 rules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iptables-save &amp;gt; /etc/network/iptables.rules
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 以 vim 開啟網路介面設定檔，當網路卡啟用時同時載入自訂的rules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /etc/network/interfaces
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在設定尾端加入下列這行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pre-up iptables-restore &amp;lt; /etc/network/iptables.rules
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這時候外部網路就能以 port 20000 連線到 MySQL&lt;/p&gt;
&lt;p&gt;而內部網路一樣可以用預設的 port 3306，也可以用新加入的 port 20000&lt;/p&gt;
&lt;p&gt;最後還是要提醒一下直接改 service port 是比較好的&lt;/p&gt;
&lt;p&gt;不過因為內部網路的服務有點多了怕麻煩只好偷吃步 XD&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Juniper] EX-2200 Drop MAC-Address</title>
        <link>https://caloskao.org/juniper-ex-2200-drop-mac-address/</link>
        <pubDate>Mon, 05 Oct 2015 23:44:43 +0800</pubDate>
        
        <guid>https://caloskao.org/juniper-ex-2200-drop-mac-address/</guid>
        <description>&lt;p&gt;先建立防火牆規則，並設定要阻擋的MAC-Address&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;admin@EX2200# set firewall family ethernet-switching filter mac-filter43 term term1 from source-mac-address 00:11:22:aa:bb:cc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;admin@EX2200# set firewall family ethernet-switching filter mac-filter43 term term1 then discard
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;admin@EX2200# set firewall family ethernet-switching filter mac-filter43 term accept-all then accept
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;接下來設定一個名為allport的interface-range，用來把filter input到各個interface上&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;admin@EX2200# set interfaces interface-range allport member-range ge-0/0/0 to ge-0/0/23
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;admin@EX2200# set interfaces interface-range allport unit 0 family ethernet-switching vlan members vlan43
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;最後把filter input到interface-range上，並儲存設定&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;admin@EX2200# set interfaces interface-range allport unit 0 family ethernet-switching filter input mac-filter43
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;admin@EX2200# commit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;收工&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Laravel] 移除不要的 Migrations</title>
        <link>https://caloskao.org/laravel-%E7%A7%BB%E9%99%A4%E4%B8%8D%E8%A6%81%E7%9A%84migrations/</link>
        <pubDate>Tue, 11 Aug 2015 23:21:21 +0800</pubDate>
        
        <guid>https://caloskao.org/laravel-%E7%A7%BB%E9%99%A4%E4%B8%8D%E8%A6%81%E7%9A%84migrations/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 移除上一次的migration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php artisan migrate:rollback
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 刪除不要的migration file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -f my_migration_file_name.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 重置 composer autoload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;composer dump-autoload
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 最後再進去資料庫drop要捨棄的table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[PHP] 啟用 php_snmp 後出現「Cannot find module」</title>
        <link>https://caloskao.org/php-%E5%95%9F%E7%94%A8php_snmp%E5%BE%8C%E5%87%BA%E7%8F%BE%E3%80%8Ccannot-find-module%E3%80%8D/</link>
        <pubDate>Tue, 11 Aug 2015 00:26:56 +0800</pubDate>
        
        <guid>https://caloskao.org/php-%E5%95%9F%E7%94%A8php_snmp%E5%BE%8C%E5%87%BA%E7%8F%BE%E3%80%8Ccannot-find-module%E3%80%8D/</guid>
        <description>&lt;p&gt;最近因為專案需要使用snmp和網路硬體設備做通訊，所以使用了php_snmp這個模組&lt;/p&gt;
&lt;p&gt;修改完php.ini重新啟動服務後出現了許多錯誤訊息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MIB search path: c:/usr/share/snmp/mibs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (IP-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (IF-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (TCP-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (UDP-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (HOST-RESOURCES-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMPv2-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMPv2-SMI): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (NOTIFICATION-LOG-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (UCD-SNMP-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (UCD-DEMO-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMP-TARGET-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (NET-SNMP-AGENT-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (DISMAN-EVENT-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMP-MPD-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMP-NOTIFICATION-MIB): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot find module (SNMPv2-TM): At line 0 in (none)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;原因是因為沒有安裝 SNMP MIB，解法當然是安裝 SNMP MIB，個人是找了 &lt;a class=&#34;link&#34; href=&#34;http://www.net-snmp.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Net-SNMP&lt;/a&gt; 這套安裝，安裝完後基本上就可以直接使用了。&lt;/p&gt;
&lt;p&gt;如果安裝完後還是不能用的話就自己手動加一個環境變數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Variable Name：mibdirs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Variable Value：{Path to Net-SNMP install folder}\share\snmp\mibs (Default Install Path：C:\usr\share\snmp\mibs)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Juniper] EX4500 DHCP Settings</title>
        <link>https://caloskao.org/juniper-ex4500-dhcp-settings/</link>
        <pubDate>Sun, 09 Aug 2015 23:27:38 +0800</pubDate>
        
        <guid>https://caloskao.org/juniper-ex4500-dhcp-settings/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set  access address-assignment pool vlan204 family inet network 192.168.204.0/24
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set access address-assignment pool vlan204 family inet range vlan204 low 192.168.204.1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set access address-assignment pool vlan204 family inet range vlan204 high 192.168.204.250
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set access address-assignment pool vlan204 family inet dhcp-attributes maximum-lease-time 86400
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set access address-assignment pool vlan204 family inet dhcp-attributes domain-name example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set access address-assignment pool vlan204 family inet dhcp-attributes name-server 8.8.8.8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set access address-assignment pool vlan204 family inet dhcp-attributes router 192.168.204.254
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set system services dhcp-local-server group vlan204 interface vlan.204
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set vlans vlan204 description Area-A_5F
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set vlans vlan204 vlan-id 204
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set vlans vlan204 l3-interface vlan.204
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set interfaces ge-0/0/12 description Area-A_5F
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set interfaces ge-0/0/12 unit 0 family ethernet-switching port-mode trunk
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set interfaces ge-0/0/12 unit 0 family ethernet-switching vlan members all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set interfaces vlan unit 204 description Area-A_5F
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set interfaces vlan unit 204 family inet address 192.168.204.254/24
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[MySQL] 在同一張資料表進行複製資料的操作</title>
        <link>https://caloskao.org/mysql-%E5%9C%A8%E5%90%8C%E4%B8%80%E5%BC%B5%E8%B3%87%E6%96%99%E8%A1%A8%E9%80%B2%E8%A1%8C%E8%A4%87%E8%A3%BD%E8%B3%87%E6%96%99%E7%9A%84%E6%93%8D%E4%BD%9C/</link>
        <pubDate>Thu, 14 May 2015 22:53:00 +0800</pubDate>
        
        <guid>https://caloskao.org/mysql-%E5%9C%A8%E5%90%8C%E4%B8%80%E5%BC%B5%E8%B3%87%E6%96%99%E8%A1%A8%E9%80%B2%E8%A1%8C%E8%A4%87%E8%A3%BD%E8%B3%87%E6%96%99%E7%9A%84%E6%93%8D%E4%BD%9C/</guid>
        <description>&lt;p&gt;最近剛好碰到需要在同一個table內copy資料的情況 由於先dump出來再操作實在是覺得有點麻煩又有點蠢 想到應該可以直接下SQL來完成這件事情 於是稍微研究了一下 基本上只要避開primary column即可完成 例如：有一張資料表叫做table_1，表結構有三個欄位，分別是col_1, col_2, col_3，其中col_1為primary column，然後使用下列SQL語法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;INSERT INTO table_1(col_2, col_3) SELECT (col_2, col_3) FROM table_1 WHERE col_2 &amp;gt; 100
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;下了這行SQL後，會在資料表複製並寫入現在col_2值大於100的資料&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[jQuery] textarea 自動調整高度</title>
        <link>https://caloskao.org/jquery-textarea%E8%87%AA%E5%8B%95%E8%AA%BF%E6%95%B4%E9%AB%98%E5%BA%A6/</link>
        <pubDate>Fri, 01 May 2015 03:20:20 +0800</pubDate>
        
        <guid>https://caloskao.org/jquery-textarea%E8%87%AA%E5%8B%95%E8%AA%BF%E6%95%B4%E9%AB%98%E5%BA%A6/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;http-equiv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Content-Type&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;text/html; charset=UTF-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;textarea auto height&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;style&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;text/css&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;textarea&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;resize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;none&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ready&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;textarea.auto-height&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;css&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;overflow&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;hidden&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;keydown keyup&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;0px&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;prop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;scrollHeight&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;px&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;keydown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;textarea&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;auto-height&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;textarea&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[PHP] 使用 str_pad() 做字串填充</title>
        <link>https://caloskao.org/php-%E4%BD%BF%E7%94%A8str_pad%E5%81%9A%E5%AD%97%E4%B8%B2%E5%A1%AB%E5%85%85/</link>
        <pubDate>Thu, 08 Jan 2015 23:21:06 +0800</pubDate>
        
        <guid>https://caloskao.org/php-%E4%BD%BF%E7%94%A8str_pad%E5%81%9A%E5%AD%97%E4%B8%B2%E5%A1%AB%E5%85%85/</guid>
        <description>&lt;p&gt;為了使用讓輸出看起來整齊一點，需要讓字串自己補位 這時候可以使用 &lt;code&gt;str_pad()&lt;/code&gt; 來完成這件事情&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str_pad&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$pad_length&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$pad_string&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$pad_type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;STR_PAD_RIGHT&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明一下參數：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$input：目標字串 (required)&lt;/li&gt;
&lt;li&gt;$pad_length：需要補齊的目標長度 (required)&lt;/li&gt;
&lt;li&gt;$pad_string：補齊的字元 (optional, Default：space)&lt;/li&gt;
&lt;li&gt;$pad_type：補齊的類型 (optional, Default：STR_PAD_RIGHT)
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;STR_PAD_LEFT&lt;/code&gt;: 補在左邊&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STR_PAD_RIGHT&lt;/code&gt;: 補在右邊&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STR_PAD_BOTH&lt;/code&gt;: 兩邊都補&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Calos&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str_pad&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;                      &lt;span class=&#34;c1&#34;&gt;// produces &amp;#34;Calos     &amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str_pad&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-=&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;STR_PAD_LEFT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// produces &amp;#34;-=-=-Calos&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str_pad&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;STR_PAD_BOTH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// produces &amp;#34;__Calos___&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;str_pad&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;___&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;               &lt;span class=&#34;c1&#34;&gt;// produces &amp;#34;Calos_&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;http://php.net/manual/en/function.str-pad.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://php.net/manual/en/function.str-pad.php&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[CSS] 以 CSS Media Requires 實作瀏覽器大小偵測</title>
        <link>https://caloskao.org/css-%E4%BB%A5css-media-requires%E5%AF%A6%E4%BD%9C%E7%80%8F%E8%A6%BD%E5%99%A8%E5%A4%A7%E5%B0%8F%E5%81%B5%E6%B8%AC/</link>
        <pubDate>Wed, 07 Jan 2015 22:29:11 +0800</pubDate>
        
        <guid>https://caloskao.org/css-%E4%BB%A5css-media-requires%E5%AF%A6%E4%BD%9C%E7%80%8F%E8%A6%BD%E5%99%A8%E5%A4%A7%E5%B0%8F%E5%81%B5%E6%B8%AC/</guid>
        <description>&lt;p&gt;網頁排版時，考慮不同終端設備瀏覽大小是很重要的一環 解析度過小造成跑版，過大時把一些區塊size寫死又會造成頁面太空曠 &lt;a class=&#34;link&#34; href=&#34;http://en.wikipedia.org/wiki/Responsive_web_design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RWD(Responsive web design)&lt;/a&gt;的第一步，便從這開始&lt;/p&gt;
&lt;p&gt;CSS 的媒體查詢 (Media Requires) 語法&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;media&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c&#34;&gt;/* CSS Rules used when query matches */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;可以查詢的項目很多，不過 RWD 最常用的是 &lt;code&gt;min-width&lt;/code&gt;、&lt;code&gt;max-width&lt;/code&gt;、&lt;code&gt;min-height&lt;/code&gt; 和 &lt;code&gt;max-height&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;min-width&lt;/code&gt;：任何超過查詢中指定寬度的瀏覽器都會套用規則。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max-width&lt;/code&gt;：任何未超過查詢中指定寬度的瀏覽器都會套用規則。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;min-height&lt;/code&gt;：任何超過查詢中指定高度的瀏覽器都會套用規則。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max-height&lt;/code&gt;：任何未超過查詢中指定高度的瀏覽器都會套用規則。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有涉獵過的人應該也知道還有 &lt;code&gt;device-width&lt;/code&gt; 這個東西，但是 &lt;code&gt;device-width&lt;/code&gt; 是針測裝置的螢幕的大小，而非檢視區的大小，通常只用在行動裝置上，建議還是以上面列舉的四項屬性為主。&lt;/p&gt;
&lt;p&gt;下面列舉三種不同大小，更換不同背景顏色：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;media&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;min-height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;1024px&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;min-height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;768px&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;background-color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;red&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;/* 1024 x 768 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;media&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;min-height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;1440px&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;min-height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;900px&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;background-color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;blue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;/* 1440 x 900 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;media&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;min-height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;1920px&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;min-height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;1080px&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;background-color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;green&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;/* 1920 x 1080 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;也可以在 link tag 的 media attribute 寫入規則，來引入不同的樣式表&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;media&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(max-width: 1024px)&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;max-1024px.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;media&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(max-width: 1440px)&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;max-1440px.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;media&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(max-width: 1920px)&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;max-1920px.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這裡有一些可以參考的例子：：&lt;a class=&#34;link&#34; href=&#34;http://mediaqueri.es/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://mediaqueri.es/&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://fundesigner.net/responsive-web-design-explain/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://fundesigner.net/responsive-web-design-explain/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://fundesigner.net/css3-media-queries/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://fundesigner.net/css3-media-queries/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/use-media-queries?hl=zh-tw#section&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/use-media-queries?hl=zh-tw#section&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[FreeBSD] Update ports by Portsnap</title>
        <link>https://caloskao.org/freebsd-update-ports-by-portsnap/</link>
        <pubDate>Sun, 14 Dec 2014 23:58:59 +0800</pubDate>
        
        <guid>https://caloskao.org/freebsd-update-ports-by-portsnap/</guid>
        <description>&lt;p&gt;先修改設定檔，把mirror site改成比較近的地方 修改/etc/portsnap.conf 的SERVERNAME&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SERVERNAME=portsnap.tw.freebsd.org
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;更新指令&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 第一次使用 Portsnap 時需要先下這條指令，以取得 Ports System Snapshot 並解開
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;portsnap fetch extract
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 日後更新Port Tree時只需執行這條指令即可
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;portsnap fetch update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;※更新日誌在/usr/ports/UPDATING&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] Ubuntu 12.04 升級後 phpmyadmin 爛掉</title>
        <link>https://caloskao.org/ubuntu-ubuntu-12-04-%E5%8D%87%E7%B4%9A%E5%BE%8Cphpmyadmin%E7%88%9B%E6%8E%89/</link>
        <pubDate>Wed, 15 Oct 2014 00:15:43 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-ubuntu-12-04-%E5%8D%87%E7%B4%9A%E5%BE%8Cphpmyadmin%E7%88%9B%E6%8E%89/</guid>
        <description>&lt;p&gt;今天把 Ubuntu 升級至 14.04 時&lt;/p&gt;
&lt;p&gt;發現 phpmyadmin 沒有起來&lt;/p&gt;
&lt;p&gt;查一下 log 發現：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Wed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Oct&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;05.971530&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2014&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pid&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2129&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;224.179&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;64325&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PHP&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Warning&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;is_readable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;open_basedir&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;restriction&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;effect&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;js&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;codemirror&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;codemirror&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;js&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;within&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;allowed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;share&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;phpmyadmin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;phpmyadmin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;phpmyadmin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;share&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;phpmyadmin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;js&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get_scripts&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;js&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;31&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;referer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;myhost&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pma&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;看起來像是路徑沒設好&lt;/p&gt;
&lt;p&gt;但是目錄下確實是有東西&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -al /usr/share/phpmyadmin/libraries/php-gettext
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;24&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x  &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; root root  &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; Oct &lt;span class=&#34;m&#34;&gt;15&lt;/span&gt; 16:08 ./
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;17&lt;/span&gt; root root &lt;span class=&#34;m&#34;&gt;20480&lt;/span&gt; Oct &lt;span class=&#34;m&#34;&gt;15&lt;/span&gt; 16:25 ../
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lrwxrwxrwx  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root root    &lt;span class=&#34;m&#34;&gt;36&lt;/span&gt; Dec &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2013&lt;/span&gt; gettext.inc -&amp;gt; ../../../php/php-gettext/gettext.inc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lrwxrwxrwx  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root root    &lt;span class=&#34;m&#34;&gt;36&lt;/span&gt; Dec &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2013&lt;/span&gt; gettext.php -&amp;gt; ../../../php/php-gettext/gettext.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lrwxrwxrwx  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root root    &lt;span class=&#34;m&#34;&gt;36&lt;/span&gt; Dec &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2013&lt;/span&gt; streams.php -&amp;gt; ../../../php/php-gettext/streams.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不過東西是link過來的&lt;/p&gt;
&lt;p&gt;神奇的是解法竟然是 copy 過來，竟然不吃 link&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /usr/share/phpmyadmin/libraries/php-gettext
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -f ./*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ln /usr/share/php/php-gettext/* .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;不知道中間有什麼誤會&lt;/p&gt;
&lt;p&gt;只能先這樣了~&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Apache] Apache 2.2 升級至 2.4 版 conf 修復</title>
        <link>https://caloskao.org/apache-apache-2-2%E5%8D%87%E7%B4%9A%E8%87%B32-4%E7%89%88conf%E4%BF%AE%E5%BE%A9/</link>
        <pubDate>Fri, 10 Oct 2014 05:33:28 +0800</pubDate>
        
        <guid>https://caloskao.org/apache-apache-2-2%E5%8D%87%E7%B4%9A%E8%87%B32-4%E7%89%88conf%E4%BF%AE%E5%BE%A9/</guid>
        <description>&lt;p&gt;Apache Server 2.4 與 2.2 版有一些設定上的差異，若升級時設定檔沒有修正將無法啟動。Tsung Hao 大神的 &lt;a class=&#34;link&#34; href=&#34;https://blog.longwin.com.tw/2014/03/apache-22-24-upgrade-conf-2014/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這篇文章&lt;/a&gt; 有整理了一些，可直接參考。本文只記錄一些額外的東西。&lt;/p&gt;
&lt;p&gt;這篇的狀況是做完升級後 Apache 服務沒有起來，啟動服務時出現這段訊息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;* Starting web server apache2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;* The apache2 configtest failed.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Output of config test was:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AH00526: Syntax error on line 60 of /etc/apache2/sites-enabled/000-default.conf:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Either all Options must start with + or -, or no Option may.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Action &amp;#39;configtest&amp;#39; failed.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The Apache error log may have more information.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意思就是說關於 &lt;code&gt;Options&lt;/code&gt; 這行的設定後面接的每一個 option value 你要全部上 &lt;code&gt;+&lt;/code&gt; 或是 &lt;code&gt;-&lt;/code&gt;，又或是全部都不加，不然在 config test 時就無法通過。解法就如同字面意思，要嘛全加，要嘛都不加。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;www&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Options&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Indexes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FollowSymLinks&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MultiViews&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;AllowOverride&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FileInfo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Order&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;allow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deny&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;allow&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;Directory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果原設定檔的 option value 有點多，也可以把 value 獨立寫一行，像這樣&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;www&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Options&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FollowSymLinks&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MultiViews&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 需要 +- 號的 value 獨立出來&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Options&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Indexes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;AllowOverride&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FileInfo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Order&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;allow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;deny&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;allow&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;Directory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;而 &lt;code&gt;apachectl configtest&lt;/code&gt; 只會偵測到一個錯誤點就停下，不會一次全部列出，所以要一步一步找出所有還沒修改到的地方，直到出現 &lt;code&gt;Syntax OK&lt;/code&gt;後，就可以啟動了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apachectl configtest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Syntax OK
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo service apache2 start
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;* Starting web server apache2 ... done.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Ubuntu] Oracle JAVA JDK Install</title>
        <link>https://caloskao.org/ubuntu-oracle-java-jdk-install/</link>
        <pubDate>Tue, 02 Sep 2014 23:33:37 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-oracle-java-jdk-install/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 加入套件庫
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo add-apt-repository ppa:webupd8team/java
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 更新套件清單
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 安裝
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install oracle-java8-installer -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如果沒有 &lt;code&gt;add-apt-repository&lt;/code&gt; 這個指令請先參考&lt;a class=&#34;link&#34; href=&#34;https://caloskao.org/ubuntu-add-apt-repository-command-not-found/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;這篇&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] add-apt-repository</title>
        <link>https://caloskao.org/ubuntu-add-apt-repository/</link>
        <pubDate>Sun, 31 Aug 2014 23:38:10 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-add-apt-repository/</guid>
        <description>&lt;p&gt;有些特定軟體需要新增 PPA source 才可以安裝&lt;/p&gt;
&lt;p&gt;要新增 PPA source 端就要使用 &lt;code&gt;add-apt-repository&lt;/code&gt; 這個指令&lt;/p&gt;
&lt;p&gt;要使用這個指令必須安裝 &lt;code&gt;python-software-properties&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install python-software-properties -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Ubuntu 13 以上的版本請改安裝 &lt;code&gt;software-properties-common&lt;/code&gt; 這個套件&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install software-properties-common -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[FreeBSD] VMtools 安裝</title>
        <link>https://caloskao.org/freebsd-vmtools-%E5%AE%89%E8%A3%9D/</link>
        <pubDate>Mon, 11 Aug 2014 00:07:39 +0800</pubDate>
        
        <guid>https://caloskao.org/freebsd-vmtools-%E5%AE%89%E8%A3%9D/</guid>
        <description>&lt;p&gt;前置作業一：環境設定&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝perl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /usr/ports/lang/perl5.18
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install clean
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝compat6x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /usr/ports/misc/compat6x/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install clean
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;取得安裝檔，如果你手邊有準備好的檔案請跳過這步驟。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在 vSphere 上掛載 iso 後 mount 進去，並把安裝檔拉出來 (拉完後記得卸載)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount -t cd9660 /dev/cd0 /media
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp /media/vmware-freebsd-tools.tar.gz /tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;umount /media
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 解壓縮&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar -zxvf vmware-freebsd-tools.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;下載 ogris 提供的 patch 進行修正，請放到 &lt;code&gt;/tmp&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fetch http://ogris.de/vmware/vmware-tools-distrib.diff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fetch http://ogris.de/vmware/vmblock-only.diff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 如果你是 ESXI5.5，請 fetch vmmemctl-only55.diff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fetch http://ogris.de/vmware/vmmemctl-only.diff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fetch http://ogris.de/vmware/vmmemctl-only55.diff
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;開始進行修正 (可以寫成 shell script 來跑，注意路徑問題)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /tmp/vmware-tools-distrib
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;patch -p1 &amp;lt; /tmp/vmware-tools-distrib.diff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; lib/modules/source/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar xf vmblock.tar
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar xf vmmemctl.tar
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; vmblock-only
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;patch -p1 &amp;lt; /tmp/vmblock-only.diff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ../vmmemctl-only
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ESXI 版本注意，請自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;patch -p1 &amp;lt; /tmp/vmmemctl-only.diff &lt;span class=&#34;c1&#34;&gt;# ESXi5: /tmp/vmmemctl-only55.diff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ../../../../
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;前置作業準備就緒，執行安裝&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/tmp/vmware-tools-distrib/vmware-install.pl
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference：&lt;a class=&#34;link&#34; href=&#34;http://ogris.de/vmware/freebsd10.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ogris: VMware Tools on FreeBSD 10.0&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[FreeBSD] 檔案系統架構</title>
        <link>https://caloskao.org/freebsd-%E6%AA%94%E6%A1%88%E7%B3%BB%E7%B5%B1%E6%9E%B6%E6%A7%8B/</link>
        <pubDate>Tue, 05 Aug 2014 19:53:54 +0800</pubDate>
        
        <guid>https://caloskao.org/freebsd-%E6%AA%94%E6%A1%88%E7%B3%BB%E7%B5%B1%E6%9E%B6%E6%A7%8B/</guid>
        <description>&lt;p&gt;做個筆記&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;../../assets/images/2014/08/1407302518-928700446.png&#34; &gt;
&lt;img src=&#34;https://caloskao.org/post/img_a847ebfe4b9f_hu_e460ca27976d39f.png&#34;
    width=&#34;1920&#34;
    height=&#34;2313&#34;
    srcset=&#34;https://caloskao.org/post/img_a847ebfe4b9f_hu_e460ca27976d39f.png 1920w&#34;
    loading=&#34;lazy&#34;
    alt=&#34;1407302518-928700446&#34;
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;83&#34;
        data-flex-basis=&#34;199px&#34;
    
&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;解說一下幾個比較常用到的地方，裡面放了哪些東西&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;/bin &amp;amp; /usr/bin : 系統內建指令&lt;/li&gt;
&lt;li&gt;/dev : 儲存裝置對映檔&lt;/li&gt;
&lt;li&gt;/etc : 系統用程式與設定檔&lt;/li&gt;
&lt;li&gt;/home : 使用者家目錄&lt;/li&gt;
&lt;li&gt;/mnt : 臨時掛載點&lt;/li&gt;
&lt;li&gt;/root : root帳號家目錄&lt;/li&gt;
&lt;li&gt;/tmp : 暫存區，編譯軟體所產生的暫存檔會放置在這裡&lt;/li&gt;
&lt;li&gt;/usr : 使用者所安裝的工具&amp;amp;應用程式存放區&lt;/li&gt;
&lt;li&gt;/usr/local : 額外安裝執行檔、函式庫會在這裡，也是Ports預設安裝目錄&lt;/li&gt;
&lt;li&gt;/var : log檔存放區或memory-based檔案系統的掛載點&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;切割過程： &lt;a class=&#34;link&#34; href=&#34;http://www.freebsd.org/doc/en/books/handbook/install-steps.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://www.freebsd.org/doc/en/books/handbook/install-steps.html&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Git] 環境初始設定</title>
        <link>https://caloskao.org/git-%E7%92%B0%E5%A2%83%E5%88%9D%E5%A7%8B%E8%A8%AD%E5%AE%9A/</link>
        <pubDate>Tue, 08 Jul 2014 19:56:10 +0800</pubDate>
        
        <guid>https://caloskao.org/git-%E7%92%B0%E5%A2%83%E5%88%9D%E5%A7%8B%E8%A8%AD%E5%AE%9A/</guid>
        <description>&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Git 安裝完之後調整一些小設定協助日常工作&lt;/p&gt;
&lt;p&gt;直接在shell內執行即可&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定user name與email，以後下commit時Author information會套用這裡的設定值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global user.name &lt;span class=&#34;s2&#34;&gt;&amp;#34;Calos&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global user.email &lt;span class=&#34;s2&#34;&gt;&amp;#34;username@email.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 讓git在顯示這四種指令的output時顯示顏色&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global color.diff auto
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global color.status auto
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global color.branch auto
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global color.log auto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;http://blog.longwin.com.tw/2009/05/git-initial-env-setup-2009/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Git 基礎設定 (帳號的環境參數設定) - Tsung&amp;rsquo;s Blog &lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Git] 設定 editor</title>
        <link>https://caloskao.org/git-%E8%A8%AD%E5%AE%9Aeditor/</link>
        <pubDate>Tue, 20 May 2014 02:34:55 +0800</pubDate>
        
        <guid>https://caloskao.org/git-%E8%A8%AD%E5%AE%9Aeditor/</guid>
        <description>&lt;p&gt;有時候單 commit 修改幅度不小，或是需要做長一點的說明時，直接在 command line 打會有點不舒服&lt;/p&gt;
&lt;p&gt;個人會習慣叫出 editor 來編輯&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -e
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;今天在新環境時剛好需要用到 &lt;code&gt;commit -e&lt;/code&gt;，指令下去之後噴了兩行 error&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;Calos.Calos-PC&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; git commit -e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;error: cannot run vi: No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;error: There was a problem with the editor &lt;span class=&#34;s1&#34;&gt;&amp;#39;vi&amp;#39;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;core.editor&lt;/code&gt; 沒設定，在使用到需要利用 editor 進行的指令時就會出現這種錯誤&lt;/p&gt;
&lt;p&gt;把 &lt;code&gt;core.editor&lt;/code&gt; 設為 vim&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global core.editor vim
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;搞定&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Cisco] Drop mac address</title>
        <link>https://caloskao.org/cisco-drop-mac-address/</link>
        <pubDate>Wed, 07 May 2014 01:24:05 +0800</pubDate>
        
        <guid>https://caloskao.org/cisco-drop-mac-address/</guid>
        <description>&lt;p&gt;在管理網路有時會發現有人接了不知名的設備在網路上 設了同樣的IP而發生IP衝突 這時候要先讓原本的機器恢復正常的話就先把未知MAC鎖起來 查ARP找出佔用IP的MAC&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cisco-3750G#sh arp | inc 49.19
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Internet  192.168.49.19           0   9c10.7699.8f00  ARPA   Vlan49
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;鎖MAC&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cisco-3750G#conf t
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cisco-3750G(config)#mac address-table static 9c10.7699.8f00 vlan 49 drop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;有些機器指令有點不一樣，像6503前面mac與address-table中間是用「-」連起來的&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cisco-6503(config)#mac-address-table static 9c10.7699.8f00 vlan 49 drop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Ubuntu] 使用 rename 大量修改檔案副檔名</title>
        <link>https://caloskao.org/ubuntu-%E4%BD%BF%E7%94%A8rename%E5%A4%A7%E9%87%8F%E4%BF%AE%E6%94%B9%E6%AA%94%E6%A1%88%E5%89%AF%E6%AA%94%E5%90%8D/</link>
        <pubDate>Wed, 23 Apr 2014 02:53:06 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-%E4%BD%BF%E7%94%A8rename%E5%A4%A7%E9%87%8F%E4%BF%AE%E6%94%B9%E6%AA%94%E6%A1%88%E5%89%AF%E6%AA%94%E5%90%8D/</guid>
        <description>&lt;p&gt;將目錄下副檔名為 foo 的檔案全部修改副檔名為 bar&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rename &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\.foo$/\.bar/&amp;#39;&lt;/span&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[HTML] IE 相容性檢視問題</title>
        <link>https://caloskao.org/html-ie-%E7%9B%B8%E5%AE%B9%E6%80%A7%E6%AA%A2%E8%A6%96%E5%95%8F%E9%A1%8C/</link>
        <pubDate>Wed, 23 Apr 2014 01:28:28 +0800</pubDate>
        
        <guid>https://caloskao.org/html-ie-%E7%9B%B8%E5%AE%B9%E6%80%A7%E6%AA%A2%E8%A6%96%E5%95%8F%E9%A1%8C/</guid>
        <description>&lt;p&gt;今天收到客戶反應 IE 有問題&lt;/p&gt;
&lt;p&gt;檢查一下發現是瀏覽器判斷內容後自動選擇 IE 舊版本模式下去做相容性檢視&lt;/p&gt;
&lt;p&gt;大部分情況下在 html head 區塊宣告 X-UA-Compatible 指定 IE 瀏覽模式即可解決：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;http-equiv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;X-UA-Compatible&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;IE=11&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[jQuery] 轉換與使用 JSON Object</title>
        <link>https://caloskao.org/jquery-%E8%BD%89%E6%8F%9B%E8%88%87%E4%BD%BF%E7%94%A8json-object/</link>
        <pubDate>Sun, 30 Mar 2014 21:23:34 +0800</pubDate>
        
        <guid>https://caloskao.org/jquery-%E8%BD%89%E6%8F%9B%E8%88%87%E4%BD%BF%E7%94%A8json-object/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;json_str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;{ &amp;#34;name&amp;#34;: &amp;#34;Calos&amp;#34; }&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;parseJSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;json_str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;//轉換成json object
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;alert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;//讀取物件元素
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[ZendFramework 2] 頁面接值</title>
        <link>https://caloskao.org/zendframework-2-%E9%A0%81%E9%9D%A2%E6%8E%A5%E5%80%BC/</link>
        <pubDate>Thu, 06 Mar 2014 01:11:24 +0800</pubDate>
        
        <guid>https://caloskao.org/zendframework-2-%E9%A0%81%E9%9D%A2%E6%8E%A5%E5%80%BC/</guid>
        <description>&lt;p&gt;在 Zend Framework 2 頁面接值可使用 &lt;code&gt;Zend\Mvc\Controller\Plugin\Params&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Controller Plugins 預設會被預先載入，所以不需要額外用 use 宣告。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$this&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;fromRoute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Route Match
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$this&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;fromHeader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Header
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$this&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;fromQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Get
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$this&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;fromPost&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Post
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$this&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;fromFiles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Files
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;http://framework.zend.com/manual/2.0/en/modules/zend.mvc.plugins.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zend Controller Plugins&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[PHP] 判斷json格式資料</title>
        <link>https://caloskao.org/php-%E5%88%A4%E6%96%B7json%E6%A0%BC%E5%BC%8F%E8%B3%87%E6%96%99/</link>
        <pubDate>Fri, 14 Feb 2014 18:55:15 +0800</pubDate>
        
        <guid>https://caloskao.org/php-%E5%88%A4%E6%96%B7json%E6%A0%BC%E5%BC%8F%E8%B3%87%E6%96%99/</guid>
        <description>&lt;p&gt;直接利用 &lt;code&gt;json_decode()&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$str_1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;number&amp;#34;:&amp;#34;21&amp;#34;,&amp;#34;data&amp;#34;:&amp;#34;abc&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$str_2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;status&amp;gt;inherit&amp;lt;/status&amp;gt;&amp;lt;parent&amp;gt;113&amp;lt;/parent&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// output: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;json_decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$str_1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;true&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;false&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// output: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;json_decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$str_2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;true&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;false&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Git] tag 操作</title>
        <link>https://caloskao.org/git-tag-operations/</link>
        <pubDate>Sun, 19 Jan 2014 18:29:29 +0800</pubDate>
        
        <guid>https://caloskao.org/git-tag-operations/</guid>
        <description>&lt;p&gt;一個專案如果 commit 了 N 次，就算 commit message 寫得很完整，如果要很快的找到特定版本也是有點困難。&lt;/p&gt;
&lt;p&gt;利用 git tag 幫 commit 加入標籤，操作上就更方便迅速。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 列出所有標籤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 新增一個標籤，名稱為 my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 如果要自訂註解，可以利用參數 -m，沒有加 -m 的話預設會以 HEAD (當前版本) commit message 為標籤的 message
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag my-tag -m &amp;#34;My tag message.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 如果要寫多行註解，可以利用參數 -a 開啟編輯器編寫
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag -a my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 從指定標籤開一個新 branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch new-branch my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 查看標籤詳細資料
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git show my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 針對指定 commit 做標籤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag my-tag d3a0dcb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# push 指定標籤 (多個標籤以空白隔開)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# push 所有 tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push --tags
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 刪除本機端指定標籤 (多個標籤以空白隔開)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag -d my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 刪除本機端所有標籤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag | xargs git tag -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 刪除遠端指定標籤 (多個標籤以空白隔開，但是每個標籤前面都要加上 :refs/tags/)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin :refs/tags/my-tag
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有關 Tag update：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在更新本機標籤時需要使用 &lt;code&gt;git fetch&lt;/code&gt;，而不是 &lt;code&gt;git pull&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git remote update&lt;/code&gt; 雖然會把新的標籤拉下來&lt;/p&gt;
&lt;p&gt;但是若兩端皆存在相同名稱的標籤，且遠端版本較新時&lt;/p&gt;
&lt;p&gt;用 &lt;code&gt;git remote update&lt;/code&gt; 並不會更新本機標籤&lt;/p&gt;
&lt;p&gt;由於標籤和 branch 性質不相同，如果要更新標籤，需要在強制模式 (參數 &lt;code&gt;--force&lt;/code&gt;) 下執行 (除了 &lt;code&gt;fetch&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;以下為更新標籤的操作方式&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 覆寫標籤 (以當前 branch 最後一次的 commit 寫入)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag -f my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 覆寫遠端指定標籤 (多個標籤以空白隔開)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push -f --follow-tags origin my-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 覆寫遠端所有標籤 (本機端不存在的標籤不會覆寫上去)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push -f --tags
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 從遠端覆寫本機端所有標籤 (遠端不存在的標籤不會被覆寫)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git fetch --tags
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;為標籤重新命名：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Git 本身並沒有辦法讓標籤直接重新命名&lt;/p&gt;
&lt;p&gt;因此需要用建立新標籤 + 移除舊標籤的方式達成&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 使用 old-tag 的 commit 建立新標籤 new-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag new-tag old-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 刪除本機端舊標籤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag -d old-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 刪除遠端舊標籤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin :refs/tags/old-tag
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 上傳新標籤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin new-tag
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如果專案有多人協作&lt;/p&gt;
&lt;p&gt;請通知你的夥伴們執行 &lt;code&gt;git pull --prune --tags&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;否則舊標籤仍然會存在於他們的電腦上&lt;/p&gt;
&lt;p&gt;且他們在 push 時就很有可能又把舊標籤 push 上去&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: git tag - How do you rename a Git tag? - Stack Overflow&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[Git] WARNING: UNPROTECTED PRIVATE KEY FILE!</title>
        <link>https://caloskao.org/git-warning-unprotected-private-key-file/</link>
        <pubDate>Thu, 26 Dec 2013 23:19:07 +0800</pubDate>
        
        <guid>https://caloskao.org/git-warning-unprotected-private-key-file/</guid>
        <description>&lt;p&gt;今天在一部機器上 clone project 的時候噴了這些東西&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_365323954253_hu_a05077793f293da8.png&#34;
    width=&#34;1920&#34;
    height=&#34;499&#34;
    srcset=&#34;https://caloskao.org/post/img_365323954253_hu_a05077793f293da8.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;384&#34;
        data-flex-basis=&#34;923px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;在 copy key 的時候忘記權限會變了&lt;/p&gt;
&lt;p&gt;沒有保護自己的 private key 的話就不讓你做事情XDD&lt;/p&gt;
&lt;p&gt;把 private key 權限設為 600 就恢復正常了&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod 600 ~/.ssh/id_rsa
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Git] Gitolite install</title>
        <link>https://caloskao.org/git-gitolite-install/</link>
        <pubDate>Sun, 22 Dec 2013 19:38:26 +0800</pubDate>
        
        <guid>https://caloskao.org/git-gitolite-install/</guid>
        <description>&lt;p&gt;利用apt-get安裝(已安裝git-core時可不用鍵入git-core)：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;sudo apt-get install git-core gitolite
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;建立gitolite的系統使用者帳號：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;sudo adduser --system --group --shell /bin//bash --disabled-password git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;如果沒有ssh-key，需產生一組來使用，並且複製一份到git的家目錄，供稍後安裝使用(為了區分各種key，將id_rsa.pub更名)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-keygen -t rsa -C &amp;#34;account@example.org&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo cp .ssh/id_rsa.pub /home/git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mv /home/git/id_rsa.pub /home/git/calos.pub
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo chmod 777 /home/git/calos.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;切換帳號到git&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;sudo su - git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;使用gl-setup進行安裝，此動作需要匯入管理者的ssh-key&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;gl-setup ./calos.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;gitolite是利用git repository的模式下去管理專案與使用者，第一次設定專案或使用者時需clone gitolite-admin這個repository&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;git clone git@gitolite-server-address:gitolite-admin.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;切換到gitolite-admin這個目錄時，可以看到底下有conf與keydir這兩個目錄&lt;/p&gt;
&lt;p&gt;若要將他人加入到git的使用者，只需將他人的ssh-key複製一份到keydir這個目錄下，並git add&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;cp /path/to/chuchu/id_rsa.pub ~/gitolite-admin/keydir/chuchu.pub
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add ~/gitolite-admin//keydir/chuchu.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;建立專案與設定權限在conf/gitolite.conf這個檔案裡&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;vim ~/gitolite-admin/conf/gitolite.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo gitolite-admin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RW+ = calos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo testing
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RW+ @all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;權限劃分如下：&lt;/p&gt;
&lt;p&gt;R：只能讀取&lt;/p&gt;
&lt;p&gt;RW：可覆寫或新增參照點&lt;/p&gt;
&lt;p&gt;RW+：可強制覆寫(push -f)或刪除參照點&lt;/p&gt;
&lt;p&gt;-：據絕存取 群組設定，在設定名稱前面加上「@」，後面可設定隸屬於該群組的User或Repository，下列為範例&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;# Users group
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@group_1 Calos Chuchu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@group_2 KYKY Johnson
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#Repositories group
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@group_3 project_2 project_3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo gitolite-admin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RW+  Calos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 在project_1，Calos可強制覆寫參照，Chuchu可建立或刪除參照，Johnson與KYKY只可讀取
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo project_1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RW+  Calos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RW    @group_1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;R       @group_2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 在project_2與project_3，Johnson與KYKY可以強制覆寫參照，Calos與Chuchu只可讀取
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo @group_3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RW+ @group_2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;R      @group_1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;做任何更動後需push，才會生效&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;git add ~/gitolite-admin/conf/gitolite.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &amp;#34;Change gitolite config&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[MySQL] 字串取代與連接 (REPLACE、CONCAT)</title>
        <link>https://caloskao.org/mysql-string-replace-concat/</link>
        <pubDate>Thu, 19 Dec 2013 19:13:14 +0800</pubDate>
        
        <guid>https://caloskao.org/mysql-string-replace-concat/</guid>
        <description>&lt;p&gt;取代字串：&lt;code&gt;REPLACE(`欄位名稱`, &#39;欲取代的字串&#39;, &#39;取代後的字串&#39;)&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 將efg開頭的字串取代
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UPDATE table SET column = REPLACE(column, &amp;#39;efg&amp;#39;, &amp;#39;zzz&amp;#39;) WHERE column LIKE &amp;#39;efg%&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;將efg結尾的字串取代
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UPDATE table SET column = REPLACE(column, &amp;#39;efg&amp;#39;, &amp;#39;zzz&amp;#39;) WHERE column LIKE &amp;#39;%efg&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;將欄位column_2含有efg字串取代成zzz，不過將取代後的結果覆寫於column_1，不更動column_2原有的內容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UPDATE table SET column_1 = REPLACE(column_2, &amp;#39;efg&amp;#39;, &amp;#39;zzz&amp;#39;) WHERE column_2 LIKE &amp;#39;%efg%&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;連接字串：&lt;code&gt;CONCAT(&#39;字串1&#39;, &#39;字串2&#39;, ... &#39;字串n&#39;)&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 於column值為456的資料行首插入字串123
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UPDATE table SET column = CONCAT(&amp;#39;123&amp;#39;, column) WHERE column=&amp;#39;456&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(Result: 123456)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 於column值為456的資料行尾插入字串123
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UPDATE table SET column = CONCAT(column, &amp;#39;123&amp;#39;) WHERE column=&amp;#39;456&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(Result: 456123)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 於column值為456的資料行首插入字串123，行尾插入789
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UPDATE table SET column = CONCAT(&amp;#39;123&amp;#39;, column, &amp;#39;789&amp;#39;) WHERE column=&amp;#39;456&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(Result: 123456789)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;於column值為456的資料行首行尾各插入原值，使其值為重覆三次的字串
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UPDATE table SET column = CONCAT(column, column, column) WHERE column=&amp;#39;456&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(Result: 456456456)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[MySQL] root密碼重設</title>
        <link>https://caloskao.org/mysql-root%E5%AF%86%E7%A2%BC%E9%87%8D%E8%A8%AD/</link>
        <pubDate>Tue, 10 Dec 2013 01:47:24 +0800</pubDate>
        
        <guid>https://caloskao.org/mysql-root%E5%AF%86%E7%A2%BC%E9%87%8D%E8%A8%AD/</guid>
        <description>&lt;p&gt;如果忘記root密碼可以這樣重設&lt;/p&gt;
&lt;p&gt;停止服務&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# sudo /usr/local/etc/rc.d/mysql-server stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以安全模式啟動mysql，並跳過檢查&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# sudo mysqld_safe --skip-grant-tables
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這時候登入不需要密碼&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# mysql -u root
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接著修改DB記錄，把root密碼設成123456，並重新載入權限&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mysql&amp;gt; USE mysql;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mysql&amp;gt; UPDATE user SET Password=PASSWORD(&amp;#34;123456&amp;#34;) WHERE User=&amp;#39;root&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mysql&amp;gt; flush privileges;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mysql&amp;gt; exit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最後重新啟動MySQL，大功告成&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# sudo /usr/local/etc/rc.d/mysql-server restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[ZendFramework] ZendFramework 2 安裝</title>
        <link>https://caloskao.org/zendframework-zendframework-2-%E5%AE%89%E8%A3%9D/</link>
        <pubDate>Mon, 02 Dec 2013 01:16:20 +0800</pubDate>
        
        <guid>https://caloskao.org/zendframework-zendframework-2-%E5%AE%89%E8%A3%9D/</guid>
        <description>&lt;p&gt;取得 ZF2 的 libs 有兩個方式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;composer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git clone&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安裝-zendframework-2&#34;&gt;安裝 ZendFramework 2
&lt;/h2&gt;&lt;h3 id=&#34;使用-composer-安裝&#34;&gt;使用 &lt;code&gt;composer&lt;/code&gt; 安裝
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;※注意，若以下任何指令失敗並出現「Permission Denied」，請配合 &lt;code&gt;sudo&lt;/code&gt; 操作。&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 先用 curl 取得 composer.phar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -sS https://getcomposer.org/installer &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 用 composer 建立專案 (專案名稱以 zf2-test 為例)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php composer.phar create-project --repository-url&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://packages.zendframework.com&amp;#34;&lt;/span&gt; -s dev zendframework/skeleton-application ./zf2-test
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; zf-test/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php composer.phar update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;若出現執行逾時的狀況，可加長執行時間&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 出現執行逾時會出現以下訊息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;RuntimeException&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The process timed out.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定執行時間上限為3600秒&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;COMPOSER_PROCESS_TIMEOUT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3600&lt;/span&gt; php composer.phar install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;COMPOSER_PROCESS_TIMEOUT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3600&lt;/span&gt; php composer.phar update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&#34;使用-git-clone-安裝&#34;&gt;使用 &lt;code&gt;git clone&lt;/code&gt; 安裝
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Windows 平台建議使用此方法安裝 (雖然 Composer 官方有 Windows 的 installer，但直接從 GitHub 拉回來比較省事)&lt;/li&gt;
&lt;li&gt;Windows 使用者請記得將 &lt;code&gt;php.exe&lt;/code&gt; 的路徑加入系統環境變數內，否則你的 cmd 會不認識 &lt;code&gt;php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Windows 使用者若沒有 bash 環境可用，請自行將第二行的 mv 視為 rename&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/zendframework/ZendSkeletonApplication.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mv ZendSkeletonApplication zf2-test
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; zf2-test
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php composer.phar self-update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php composer.phar install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;php composer.phar update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;設定網頁伺服器&#34;&gt;設定網頁伺服器
&lt;/h2&gt;&lt;p&gt;這邊使用 Apache Server&lt;/p&gt;
&lt;p&gt;在設定檔中加入以下內容，將 DNS 指到 &lt;code&gt;zf2-test/public&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;VirtualHost *:80&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ServerName zf-test.localhost
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    DocumentRoot /path/to/zf2-test/public
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;Directory /path/to/zf-test/public&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        DirectoryIndex index.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        AllowOverride All
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;IfVersion &amp;lt; 2.3 &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Order allow,deny
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Allow from all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;/IfVersion&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;IfVersion &amp;gt;= 2.3 &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Require all granted
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;/IfVersion&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;/Directory&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;/VirtualHost&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;打開瀏覽器輸入 &lt;a class=&#34;link&#34; href=&#34;zf-test.localhost&#34; &gt;zf-test.localhost&lt;/a&gt;，即可看到 default page&lt;/p&gt;
&lt;p&gt;若沒有 DNS 的話，也可以開一個 port 指過去 &lt;code&gt;zf2-test/public&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NameVirtualHost *:8080
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Listen 8080
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;VirtualHost *:8080&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    DocumentRoot /path/to/zf2-test/public
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;Directory /path/to/zf2-test/public&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        DirectoryIndex index.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        AllowOverride All
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;IfVersion &amp;lt; 2.3 &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Order allow,deny
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Allow from all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;/IfVersion&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;IfVersion &amp;gt;= 2.3 &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Require all granted
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;lt;/IfVersion&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;/Directory&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;/VirtualHost&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;打開瀏覽器輸入 &lt;a class=&#34;link&#34; href=&#34;localhost:8080&#34; &gt;localhost:8080&lt;/a&gt;，即可看到 default page&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[WordPress] 在單一站台架設多個網誌 (WordPress Multi-Site)</title>
        <link>https://caloskao.org/wordpress-%E5%9C%A8%E5%96%AE%E4%B8%80%E7%AB%99%E5%8F%B0%E6%9E%B6%E8%A8%AD%E5%A4%9A%E5%80%8B%E7%B6%B2%E8%AA%8C-wordpress-multi-site/</link>
        <pubDate>Thu, 14 Nov 2013 02:13:05 +0800</pubDate>
        
        <guid>https://caloskao.org/wordpress-%E5%9C%A8%E5%96%AE%E4%B8%80%E7%AB%99%E5%8F%B0%E6%9E%B6%E8%A8%AD%E5%A4%9A%E5%80%8B%E7%B6%B2%E8%AA%8C-wordpress-multi-site/</guid>
        <description>&lt;p&gt;開啟 WordPress 主目錄下的 &lt;code&gt;wp-config.php&lt;/code&gt;，並把 &lt;code&gt;WP_ALLOW_MULTISITE&lt;/code&gt; 註解去掉並將值改為 &lt;code&gt;true&lt;/code&gt;，以啟用 WPMU (3.7.1 版約在 106 行)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;define&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;WP_ALLOW_MULTISITE&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重新整理網頁，於後台左側選單點選工具 -&amp;gt; 網誌網路安裝，檢查沒問題後，點選安裝&lt;/p&gt;
&lt;p&gt;下一個畫面會提示把一些設定複製到 &lt;code&gt;wp-config.php&lt;/code&gt; 與 &lt;code&gt;.htaccess&lt;/code&gt; 裡，特別注意到 **&lt;code&gt;wp-config.php&lt;/code&gt;的設定要貼在 &lt;code&gt;define(&#39;ABSPATH&#39;)&lt;/code&gt; 之前 **。&lt;/p&gt;
&lt;p&gt;完成動作後並儲存，重新整理畫面後左上角我的網誌裡面有出現網誌網路管理，收工。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Linux] 用 ln 建立檔案或目錄連結</title>
        <link>https://caloskao.org/linux-use-ln-command-to-link-files-or-folders/</link>
        <pubDate>Thu, 14 Nov 2013 01:35:20 +0800</pubDate>
        
        <guid>https://caloskao.org/linux-use-ln-command-to-link-files-or-folders/</guid>
        <description>&lt;p&gt;使用方式為 &lt;code&gt;ln [-hs] &amp;lt;來源&amp;gt; &amp;lt;目標&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;EX: 在 &lt;code&gt;/var/www&lt;/code&gt; 下建立一個名為 &lt;code&gt;wpmu&lt;/code&gt; 的 Synbolic Link，來源端為 &lt;code&gt;/home/wordpress&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ln&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;home&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wordpress&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;www&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wpmu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這裡只說明參數 &lt;code&gt;-h&lt;/code&gt; 與 &lt;code&gt;-s&lt;/code&gt; 的差異，詳細請見 &lt;a class=&#34;link&#34; href=&#34;http://www.freebsd.org/cgi/man.cgi?query=ln&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD&amp;#43;Ports&amp;#43;9.0-RELEASE&amp;amp;arch=default&amp;amp;format=html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方文件 &lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;code&gt;-h&lt;/code&gt; 為 Hard Link，讀取方式為一層一層取得檔案相關的關聯資料，再到對應的 inode 取得檔案的屬性，以及檔案內容資料所在的 block ， 最後到 block area 取得檔案的資料。&lt;/p&gt;
&lt;p&gt;不管在哪個目錄底下叫出檔案並修改，因為 Hard Link 只是在目錄下建立一個檔案關聯紀錄，因此修改檔案時皆會修改到同一個檔案，而刪除檔案時只是刪除一個檔案關聯紀錄，並不是刪除檔案本身，因此不會變動到檔案本身的 inode 與 block area，好處為較安全。&lt;/p&gt;
&lt;p&gt;由於 Hard Link 是在同一個 partition 上建立檔案關聯，因此 Hard Link 有兩項限制：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不能跨 File System&lt;/li&gt;
&lt;li&gt;不能對目錄做 link&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;而參數 &lt;code&gt;-s&lt;/code&gt; 為 Synbolic Link，這就好理解多了，Synbolic Link 會建立一個新檔案，指向 link 到的檔案或目錄，所以&lt;strong&gt;原檔案或目錄被砍掉時，這個 link 就會失效&lt;/strong&gt;。而因為 link 的建立方式是建立新檔案，因此會有獨立的 inode 與 block 佔用磁碟空間 (建立及運作方式雷同 Windows 的捷徑)。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference：&lt;a class=&#34;link&#34; href=&#34;http://tw.myblog.yahoo.com/up-station/article?mid=-2&amp;amp;next=123&amp;amp;l=f&amp;amp;fid=24&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;宅男的電腦筆記 &lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[WordPress] 解決不支援 utf-8 環境下中文檔名異常問題</title>
        <link>https://caloskao.org/wordpress-%E8%A7%A3%E6%B1%BA%E4%B8%8D%E6%94%AF%E6%8F%B4utf-8%E7%92%B0%E5%A2%83%E4%B8%8B%E4%B8%AD%E6%96%87%E6%AA%94%E5%90%8D%E7%95%B0%E5%B8%B8%E5%95%8F%E9%A1%8C/</link>
        <pubDate>Mon, 11 Nov 2013 04:48:25 +0800</pubDate>
        
        <guid>https://caloskao.org/wordpress-%E8%A7%A3%E6%B1%BA%E4%B8%8D%E6%94%AF%E6%8F%B4utf-8%E7%92%B0%E5%A2%83%E4%B8%8B%E4%B8%AD%E6%96%87%E6%AA%94%E5%90%8D%E7%95%B0%E5%B8%B8%E5%95%8F%E9%A1%8C/</guid>
        <description>&lt;p&gt;修改 &lt;code&gt;wp-admin/includes/file.php&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 找到這行程式碼(約在306行)，並加入iconv
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$new_file&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$uploads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;path&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;$filename&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$new_file&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;iconv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;big5//ignore&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$new_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 把這行註解掉(約在322行)，以下列程式碼取代
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// return apply_filters( &amp;#39;wp_handle_upload&amp;#39;, array( &amp;#39;file&amp;#39; =&amp;gt; $new_file, &amp;#39;url&amp;#39; =&amp;gt; $url, &amp;#39;type&amp;#39; =&amp;gt; $type ), &amp;#39;upload&amp;#39; );
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apply_filters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;wp_handle_upload&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;file&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$uploads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;path&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;$filename&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;url&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;type&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$type&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;upload&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;修改 &lt;code&gt;wp-admin/includes/media.php&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 把這行註解掉(約在2334行)，以下列程式碼取代
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// $filename = esc_html( basename( $post-&amp;gt;guid ) );
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$filename&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;substr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;guid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;strrpos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;guid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;存檔後即生效&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a class=&#34;link&#34; href=&#34;http://www.xyduan.net/modification-three-sentences-chinese-code-in-wordpress-upload-file-name-picture/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://www.xyduan.net/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>[WordPress] qTranslate enable at WordPress 3.7.1</title>
        <link>https://caloskao.org/wordpress-qtranslate-enable-at-wordpress-3-7-1/</link>
        <pubDate>Mon, 11 Nov 2013 02:04:14 +0800</pubDate>
        
        <guid>https://caloskao.org/wordpress-qtranslate-enable-at-wordpress-3-7-1/</guid>
        <description>&lt;p&gt;最近WordPress更新了3.7.1 更新後發現qTranslate出現版本不相融情況 要使用plugin的功能要手動去啟用 不過預設還是disable 外掛作者也還沒更新對應3.7.1的版本 懶得每次發文要點一次enable 索性直接先改支援版本&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;define(&amp;#39;QT_SUPPORTED_WP_VERSION&amp;#39;, &amp;#39;3.7.1&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;利用這種方式強制enable也沒有發生衝突 在作者release新版本前就先暫時這樣頂替吧&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] 於指令列顯示 screen 的視窗編號</title>
        <link>https://caloskao.org/ubuntu-show-window-number-of-gun-screen/</link>
        <pubDate>Mon, 28 Oct 2013 23:05:24 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-show-window-number-of-gun-screen/</guid>
        <description>&lt;p&gt;編輯 &lt;code&gt;~/.bashrc&lt;/code&gt; 這支檔案，並看到這一段(約在56~60行)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;if [ &amp;#34;$color_prompt&amp;#34; = yes ]; then
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PS1=&amp;#39;${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w[\033[00m\]\$ &amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;else
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PS1=&amp;#39;${debian_chroot:+($debian_chroot)}\u@\h:\w\$ &amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這段是判斷有無開啟彩色 Terminal 顯示模式&lt;/p&gt;
&lt;p&gt;第二行為預設的顯示設定，顯示的樣子大概像這樣&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_df2d14ddf8ab_hu_e654c387276d3970.png&#34;
    width=&#34;1920&#34;
    height=&#34;181&#34;
    srcset=&#34;https://caloskao.org/post/img_df2d14ddf8ab_hu_e654c387276d3970.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;1062&#34;
        data-flex-basis=&#34;2550px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;要顯示視窗則改成下列內容&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;if [ &amp;#34;$color_prompt&amp;#34; = yes ]; then
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;if [ &amp;#34;$WINDOW&amp;#34; = &amp;#34;&amp;#34; ]; then
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PS1=&amp;#39;${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ &amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;else
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PS1=&amp;#39;${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;35m\][W$WINDOW]\[\033[00m\]\$ &amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fi
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;else
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;在彩色 Terminal 顯示模式裡面再加一個判斷 &lt;code&gt;GNU Screen&lt;/code&gt; 是否啟用，沒有的話顯示預設樣式，有的話則顯示成有加入視窗編號的樣式&lt;/p&gt;
&lt;p&gt;簡單說明一下 PS1 修改的內容區分為兩部分&lt;/p&gt;
&lt;p&gt;&lt;code&gt;\[\033[01;35m\]&lt;/code&gt; 這段是宣告文字顏色(這裡用亮紫色當示範)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[W$WINDOW]&lt;/code&gt; 圖片中顯示 &lt;code&gt;[W6]&lt;/code&gt;，&lt;code&gt;$WINDOW&lt;/code&gt; 這個變數是視窗編號&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;修改儲存後輸入 &lt;code&gt;screen&lt;/code&gt; 指令開新視窗後顯示的樣子就像這樣&lt;/p&gt;
&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_3206ec61033e_hu_371c819359e0ed6d.png&#34;
    width=&#34;1920&#34;
    height=&#34;169&#34;
    srcset=&#34;https://caloskao.org/post/img_3206ec61033e_hu_371c819359e0ed6d.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;1133&#34;
        data-flex-basis=&#34;2720px&#34;
    
&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;完成收工!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[PHP] IE 下載檔案無法辨識檔名與檔案類型</title>
        <link>https://caloskao.org/php-ie%E4%B8%8B%E8%BC%89%E6%AA%94%E6%A1%88%E7%84%A1%E6%B3%95%E8%BE%A8%E8%AD%98%E6%AA%94%E5%90%8D%E8%88%87%E6%AA%94%E6%A1%88%E9%A1%9E%E5%9E%8B/</link>
        <pubDate>Thu, 24 Oct 2013 04:42:53 +0800</pubDate>
        
        <guid>https://caloskao.org/php-ie%E4%B8%8B%E8%BC%89%E6%AA%94%E6%A1%88%E7%84%A1%E6%B3%95%E8%BE%A8%E8%AD%98%E6%AA%94%E5%90%8D%E8%88%87%E6%AA%94%E6%A1%88%E9%A1%9E%E5%9E%8B/</guid>
        <description>&lt;p&gt;今天碰到網站利用IE下載檔案時發生無法辨識檔名與檔案類型&lt;/p&gt;
&lt;p&gt;花了一點時間找問題來源，原來是IE讀 http header 讀到uft-8的編碼時會有問題&lt;/p&gt;
&lt;p&gt;只好針對IE多寫一個判斷，讓程式偵測到瀏覽器為IE時把檔名轉碼&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;function dl_file( $file ){
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if ( file_exists($file) ) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        $filename = basename($file);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    // 若為IE瀏覽器則將檔名編碼轉換成Big5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if ( strpos( $_SERVER[&amp;#39;HTTP_USER_AGENT&amp;#39;], &amp;#34;MSIE&amp;#34; ) ) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        $filename = iconv(&amp;#39;utf-8&amp;#39;, &amp;#39;big5&amp;#39;, $filename);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    header(&amp;#39;Content-Description: File Transfer&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    header(&amp;#39;Content-Type: application/octet-stream&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    header(&amp;#39;Content-Disposition: attachment; filename=&amp;#39;.$filename);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    header(&amp;#39;Content-Transfer-Encoding: binary&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    header(&amp;#39;Expires: 0&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    header(&amp;#39;Cache-Control: must-revalidate&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    header(&amp;#39;Pragma: public&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    header(&amp;#39;Content-Length: &amp;#39;.filesize($file) );
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ob_clean();
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    flush();
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    readfile($file);
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    exit;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;} else {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    echo &amp;#34;Error: File not found.&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return false;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;IE啊IE，ˊ_&amp;gt;ˋ&amp;hellip;&amp;hellip;&amp;hellip;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[WordPress] 新增後台頁面</title>
        <link>https://caloskao.org/wordpress-%E6%96%B0%E5%A2%9E%E5%BE%8C%E5%8F%B0%E9%A0%81%E9%9D%A2/</link>
        <pubDate>Fri, 11 Oct 2013 01:38:54 +0800</pubDate>
        
        <guid>https://caloskao.org/wordpress-%E6%96%B0%E5%A2%9E%E5%BE%8C%E5%8F%B0%E9%A0%81%E9%9D%A2/</guid>
        <description>&lt;p&gt;WordPress 不只可以當 Blog，也可以架設成其他類型的網站 (例如報名網站)&lt;/p&gt;
&lt;p&gt;有時候想要替自己的網站加一些特殊的功能，而找不到外掛可以來頂替時，就要自己動手做了&lt;/p&gt;
&lt;p&gt;而直接做在後台裡是一個不錯的選擇，以下為在後台開新頁面並將頁面放在左側管理選單&lt;/p&gt;
&lt;p&gt;先在 &lt;code&gt;wp-content/themes/sample_theme/functions/theme_options.php&lt;/code&gt; 裡面加入一些內容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 註冊頁面
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 功能表名稱與頁面 title 設成 &amp;#34;自訂頁面&amp;#34;，權限等級設為 2 (即身分為作者以上的使用者都能看到這個頁面)，page 為 my_custom_page，callback 為 load_custom_page
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;add_menu_custom_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;add_menu_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;自訂頁面&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;自訂頁面&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;my_custom_page&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;load_custom_page&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 設定要載入的 script or css
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;custom_page_init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;isset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_GET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;page&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_GET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;page&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;my_custom_page&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;wp_enqueue_style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;jquery-ui_layout_1.10.3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;wp_enqueue_style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;style&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;THEME_CSS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/custom_page.css&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;all&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;wp_enqueue_script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;jquery_1.9.1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;wp_enqueue_script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;jquery-ui_core_1.10.3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://code.jquery.com/ui/1.10.3/jquery-ui.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 讀取頁面模版 (在此將模版檔案寫在另一個檔案裡)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;load_custom_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;../custom_page.php&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 將前面的 function 載入 wordpress 的核心執行項目中
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;add_action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;admin_init&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;custom_page_init&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;add_action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;admin_menu&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;add_menu_custom_page&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;頁面內容寫在 &lt;code&gt;wp-content/themes/sample_theme/custom_page.php&lt;/code&gt; 裡&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;This is custom page.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;do something
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;關於前面所用到的WordPress function完整說明可參考官方文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://codex.wordpress.org/Function_Reference/add_menu_page&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;add_menu_page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://codex.wordpress.org/Function_Reference/add_action&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;add_action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://codex.wordpress.org/Function_Reference/wp_enqueue_style&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;wp_enqueue_style&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://codex.wordpress.org/Function_Reference/wp_enqueue_script&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;wp_enqueue_script&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而頁面權限等級的部分，可以參考 &lt;a class=&#34;link&#34; href=&#34;http://codex.wordpress.org/User_Levels&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WordPress Codex :: User Levels&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另外一個是加入子選單的部分，用法也是大同小異：&lt;a class=&#34;link&#34; href=&#34;http://codex.wordpress.org/Function_Reference/add_submenu_page&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WordPress Codex :: add_submenu_page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;值得注意的是若要加入自訂頁面至預設功能選單要用到子函式，例如要在 options-general 加入子選單要使用 &lt;code&gt;add_options_page()&lt;/code&gt; 來新增。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Wordpress] WP Page Numbers 外掛設定</title>
        <link>https://caloskao.org/wordpress-wp-page-numbers-%E5%A4%96%E6%8E%9B%E8%A8%AD%E5%AE%9A/</link>
        <pubDate>Wed, 09 Oct 2013 04:16:41 +0800</pubDate>
        
        <guid>https://caloskao.org/wordpress-wp-page-numbers-%E5%A4%96%E6%8E%9B%E8%A8%AD%E5%AE%9A/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://wordpress.org/plugins/wp-page-numbers/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WP Page Numbers&lt;/a&gt; 是個不錯的外掛，套用的步驟也很簡單&lt;/p&gt;
&lt;p&gt;不過要在自己的網站上開新頁面做一些特殊用途，又需要用到換頁功能，但是新頁面又和文章不相關時，外掛便不會運作&lt;/p&gt;
&lt;p&gt;不過使用一點小方法便可解決這問題&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 資料筆數
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$display_rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 每頁顯示20筆資料
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 宣告全域變數
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;global&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$max_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 最大頁數
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$max_page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$display_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 計算總頁數，並存到$max_page這個變數
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 若沒有使用固定網址時則需要再加入下列兩行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;global&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$paged&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$paged&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_GET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;paged&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 如果有設定固定網址，可用這種方式取得當前頁碼
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$get_currentPage&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$wp_query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;query_vars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;paged&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這樣就可以正常運作了&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Ubuntu] Apache 模組的啟用與停用</title>
        <link>https://caloskao.org/ubuntu-apache-modules-enable-and-disable/</link>
        <pubDate>Mon, 07 Oct 2013 00:05:59 +0800</pubDate>
        
        <guid>https://caloskao.org/ubuntu-apache-modules-enable-and-disable/</guid>
        <description>&lt;p&gt;Ubuntu 與 FreeBSD 的 Apache Load Module 設定有點小小的不同，在 FreeBSD 上是直接在 &lt;code&gt;httpd.conf&lt;/code&gt; 上把註解拿掉，重啟服務後 Module 就啟動了。不過在 Ubuntu 的設定檔都零零散散拆成很多檔案，Load Module 這部分的設定也是。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;calos&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ubuntu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;apache2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ls&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;apache2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;d&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;envvars&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;httpd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;magic&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;mods&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;available&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;mods&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;sites&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;available&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;sites&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;code&gt;mods-available&lt;/code&gt; 是所有模組存放目錄，但是服務載入的模組是存放在 &lt;code&gt;mods-enabled&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;注意到 &lt;code&gt;apache2.conf&lt;/code&gt; 的其中幾行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Include module configuration:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Include&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mods&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/*.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Include&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mods&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/*.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;服務啟動時，只載入 &lt;code&gt;mods-enabled&lt;/code&gt; 裡面的模組，而部分模組在安裝時預設是不啟動的（意即該模組不會出現在 &lt;code&gt;mods-enabled&lt;/code&gt;）&lt;/p&gt;
&lt;p&gt;若要載入指定模組，可使用 &lt;code&gt;a2enmod&lt;/code&gt; 這個指令。例如要啟用 &lt;code&gt;mod-rewrite&lt;/code&gt; 模組：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu:~$ sudo a2enmod rewrite
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;輸入 &lt;code&gt;ls /etc/apache2/mod-enabled&lt;/code&gt;，可以看到指定的 module 已經被放進 &lt;code&gt;mods-enabled&lt;/code&gt; 裡了。&lt;/p&gt;
&lt;p&gt;要停用模組可用 &lt;code&gt;a2dismod&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu:~$ sudo a2dismod rewrite
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這時候 &lt;code&gt;mod-rewrite&lt;/code&gt; 就從 &lt;code&gt;mods-enabled&lt;/code&gt; 消失了，模組異動完後記得重啟服務才會生效：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos@ubuntu:~$ sudo service apache2 restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;※PS：&lt;code&gt;a2enmod&lt;/code&gt; 實際上也只是把 &lt;code&gt;mods-available&lt;/code&gt; 的模組用一個 Symbol Link 指過去 &lt;code&gt;mods-enabled&lt;/code&gt; 而已，所以直接用 &lt;code&gt;ln -s&lt;/code&gt; 指過去也不是不行 XD​。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[MySQL] 開放外部連線</title>
        <link>https://caloskao.org/mysql-%E9%96%8B%E6%94%BE%E5%A4%96%E9%83%A8%E9%80%A3%E7%B7%9A/</link>
        <pubDate>Mon, 19 Aug 2013 04:39:52 +0800</pubDate>
        
        <guid>https://caloskao.org/mysql-%E9%96%8B%E6%94%BE%E5%A4%96%E9%83%A8%E9%80%A3%E7%B7%9A/</guid>
        <description>&lt;p&gt;MySQL通常預設不開放外部連線，因此需要修改一下my.cnf來開放其他機器存取資料庫。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# OS: Ubuntu 14.04 Server LTS x64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# MySQL Server Version: 5.5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 打開my.cnf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /etc/mysql/my.cnf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 找到下列兩行，拿掉或加上註解後儲存離開
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;skip-external-locking
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bind-address = 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 重新啟動服務
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo service mysql restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[VIM] Vim Example setting</title>
        <link>https://caloskao.org/freebsd-vim-example-setting/</link>
        <pubDate>Wed, 06 Mar 2013 22:43:07 +0800</pubDate>
        
        <guid>https://caloskao.org/freebsd-vim-example-setting/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;source $VIMRUNTIME/indent.vim
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;behave mswin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set guifont=Monaco:h14
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set ai
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set nocp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set nocompatible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set nopaste
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set pastetoggle=
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set hls
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set shiftwidth=4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set tabstop=4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set showmatch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set background=light
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set display=lastline
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;colorscheme desert
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;syntax on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;highlight Comment ctermfg=darkcyan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;highlight Search term=reverse ctermbg=4 ctermfg=7
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;highlight Normal ctermbg=black ctermfg=white
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;filetype plugin on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;filetype indent on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;autocmd BufWritePre * :%s/\s\+$//e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;autocmd BufWritePre *.py normal m`:%s/\s\+$//e ``
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;autocmd BufEnter *.php :%s/[ \t\r]\+$//e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;autocmd BufWritePre *.pl :%s/\s\+$//e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set fileencodings=utf8,big5,euc-jp,gbk,euc-kr,utf-bom,iso8859-1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set encoding=utf8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set tenc=utf8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set termencoding=utf-8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;autocmd FileType python set expandtab
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set ru
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set sc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set smd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set nu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set ch=2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set nocompatible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set backspace=2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[FreeBSD] Single user mode</title>
        <link>https://caloskao.org/freebsd-single-user-mode/</link>
        <pubDate>Tue, 19 Feb 2013 23:01:22 +0800</pubDate>
        
        <guid>https://caloskao.org/freebsd-single-user-mode/</guid>
        <description>&lt;p&gt;人多少會有健忘的時候&lt;/p&gt;
&lt;p&gt;有時候會不小心忘記root密碼&lt;/p&gt;
&lt;p&gt;或是不小心把設定改爛進不去系統&lt;/p&gt;
&lt;p&gt;這時候就可以利用single user mode去修復&lt;/p&gt;
&lt;p&gt;重開機後選擇第四個開機選項進入single user mode&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#進入single user mode後會詢問下面的東西，按Enter直接跳過
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enter full pathname of shell of RETURN for /bin/sh:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#檢查並修正檔案系統
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; fsck -p
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#載入所有
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; mount -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#修改密碼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; pwsswd root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#編輯改爛的設定 (example: /etc/rc.conf)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; vi /etc/rc.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[PHP] PHP 5.4 的 session 寫法變革</title>
        <link>https://caloskao.org/php-php-5-4-%E7%9A%84-session-%E5%AF%AB%E6%B3%95%E8%AE%8A%E9%9D%A9/</link>
        <pubDate>Wed, 19 Dec 2012 23:10:03 +0800</pubDate>
        
        <guid>https://caloskao.org/php-php-5-4-%E7%9A%84-session-%E5%AF%AB%E6%B3%95%E8%AE%8A%E9%9D%A9/</guid>
        <description>&lt;p&gt;前陣子把 PHP 升級到5.4後 發現有用到session的程式都爆了&lt;/p&gt;
&lt;p&gt;Fatal error: Call to undefined function session_register()&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;google一下 原來是PHP 5.4的session寫法有改變 PHP 5.4 移除了 &lt;a class=&#34;link&#34; href=&#34;http://docs.php.net/manual/en/function.session-is-registered.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;session_is_registered() &lt;/a&gt; 、 &lt;a class=&#34;link&#34; href=&#34;http://docs.php.net/manual/en/function.session-register.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;session_register() &lt;/a&gt; 與 &lt;a class=&#34;link&#34; href=&#34;http://docs.php.net/manual/en/function.session-unregister.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;session_unregister() &lt;/a&gt; 三支function。 Session 的操作更簡化了一些。&lt;/p&gt;
&lt;p&gt;//判斷 Session 是否存在&lt;br&gt;
if( isset($_SESSION[&amp;lsquo;foo&amp;rsquo;]) ) {&lt;br&gt;
echo &amp;lsquo;session is exist&amp;rsquo;;&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;//註冊 Session&lt;br&gt;
$_SESSION[&amp;lsquo;foo&amp;rsquo;] = &amp;lsquo;bar&amp;rsquo;;&lt;/p&gt;
&lt;p&gt;//移除 Session&lt;br&gt;
unset($_SESSION[&amp;lsquo;foo&amp;rsquo;]);&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這樣操作其實更直覺，也不需要額外多記函式(個人很健忘)，這三支函式早該移除了。 但是大大小小的舊系統改起來也是不少麻煩 所以另一個做法就是把移除的function在script執行前先定義好：&lt;/p&gt;
&lt;?php
if ( !function\_exists(&#39;session\_register&#39;) ) {
    function session\_register() {
        $args = func\_get\_args();
        foreach ($args as $key) {
            $\_SESSION\[ $key \] = $GLOBALS\[ $key \];
        }
    }
}

if ( !function\_exists(&#39;session\_is\_registered&#39;) ) {
    function session\_is\_registered( $key ) {
        return isset( $\_SESSION\[ $key \] );
    }
}

if ( !function\_exists(&#39;session\_unregister&#39;) ) {
    function session\_unregister( $key ){
        unset( $\_SESSION\[ $key \] );
    }
}

 

這樣就可以相容舊系統了 不過還是比較建議移除舊寫法囉 Reference:[http://blog.wu-boy.com/2012/06/what-has-changed-in-php-5-4-x/](http://blog.wu-boy.com/2012/06/what-has-changed-in-php-5-4-x/ &#34;http://blog.wu-boy.com/2012/06/what-has-changed-in-php-5-4-x/&#34;)
</description>
        </item>
        <item>
        <title>[FreeBSD] sudo command</title>
        <link>https://caloskao.org/freebsd-sudo-command/</link>
        <pubDate>Fri, 02 Nov 2012 02:03:00 +0800</pubDate>
        
        <guid>https://caloskao.org/freebsd-sudo-command/</guid>
        <description>&lt;p&gt;要在 FreeBSD 下使用 sudo 這個指令要額外裝套件 安裝 sudo 套件&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd /usr/ports/security/sudo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install clean
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;裝完，編輯 sudoers，給予指定使用者使用 sudo 指令的權限&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /usr/local/etc/sudoers
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;找到並複製 root 這行，將 root 修改為指定使用者名稱，修改完後強制存檔!wq&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root ALL=(ALL) ALL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos ALL=(ALL) ALL #指定使用者
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;※強制存檔與 chmod 的差別 如果 sudoers 檔案權限屬性非 440 時( read-only ) 基於安全性，系統會將 sudo 指令擋下 所以如果是先 chmod 變更過權限屬性再修改檔案的話 記得要將權限屬性修改回 440 才不會發生無法使用指令的情況&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Apache] .htaccess 失效</title>
        <link>https://caloskao.org/apache-htaccess-%E5%A4%B1%E6%95%88/</link>
        <pubDate>Fri, 20 Jul 2012 02:32:00 +0800</pubDate>
        
        <guid>https://caloskao.org/apache-htaccess-%E5%A4%B1%E6%95%88/</guid>
        <description>&lt;p&gt;今天發現自己的apache根目錄會顯示出來 基於安全的問題所以在根目錄丟一個.htaccess去檔顯示目錄&lt;/p&gt;
&lt;p&gt;Options -Indexes&lt;/p&gt;
&lt;p&gt;丟進去後 卻發現目錄依然會顯示 檢查一下http.conf 原來是AllowOverride的設定是None 改成 AllowOverride All 重新啟動Apache即可&lt;/p&gt;
&lt;p&gt;&amp;lt;Directory &amp;ldquo;/usr/local/www&amp;rdquo;&amp;gt;&lt;br&gt;
Options Indexes FollowSymLinks&lt;br&gt;
# 這裡改成All&lt;br&gt;
AllowOverride None&lt;br&gt;
Order allow,deny&lt;br&gt;
Allow from all&lt;br&gt;
&lt;/Directory&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[FreeBSD] Twiki Install note</title>
        <link>https://caloskao.org/freebsd-twiki-install-note/</link>
        <pubDate>Sun, 10 Jun 2012 08:39:00 +0800</pubDate>
        
        <guid>https://caloskao.org/freebsd-twiki-install-note/</guid>
        <description>&lt;p&gt;version:4.2.4&lt;/p&gt;
&lt;p&gt;必要套件:Apache22、Perl5.10&lt;/p&gt;
&lt;p&gt;安裝 cd /usr/ports/www/twiki make install clean&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;設定各目錄訪問權限(bin與pub的設定在twiki.conf內而不使用.htaccess) cd /usr/local/www/twiki cp root-htaccess.txt .htaccess cp subdir-htaccess.txt data/.htaccess cp subdir-htaccess.txt locale/.htaccess cp subdir-htaccess.txt templates/.htaccess cp subdir-htaccess.txt tools/.htaccess cp subdir-htaccess.txt working/.htaccess&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;設定twikiLibPath cd /usr/local/www/twiki/bin cp LocalLib.cfg.txt LocalLib.cfg //先copy example config vi LocalLib.cfg 找到$twikiLibPath，並修改成實際路徑 $twikiLibPath = &amp;ldquo;/usr/local/www/twiki/lib&amp;rdquo;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;加入/usr/local/etc/apache22/twiki.conf ScriptAlias /twiki/bin &amp;ldquo;/usr/local/www/twiki/bin&amp;rdquo; Alias /twiki/pub &amp;ldquo;/usr/local/www/twiki/pub&amp;rdquo;&lt;/p&gt;
&lt;p&gt;BrowserMatchNoCase ^$ blockAccess&lt;/p&gt;
&lt;p&gt;&amp;lt;Directory &amp;ldquo;/usr/local/www/twiki/bin&amp;rdquo;&amp;gt; AllowOverride None Order Allow,Deny Allow from all Deny from env=blockAccess&lt;/p&gt;
&lt;p&gt;Options ExecCGI FollowSymLinks SetHandler cgi-script&lt;/p&gt;
&lt;h1 id=&#34;password-file-for-twiki-users&#34;&gt;Password file for TWiki users
&lt;/h1&gt;&lt;p&gt;AuthUserFile /usr/local/www/twiki/data/.htpasswd AuthName &amp;lsquo;Enter your WikiName: (First name and last name, no space, no dots, capitalized, e.g. JohnSmith)&amp;rsquo; AuthType Basic&lt;/p&gt;
&lt;p&gt;&amp;lt;FilesMatch &amp;ldquo;^configure.*&amp;quot;&amp;gt; SetHandler cgi-script Order Deny,Allow Deny from all Allow from 127.0.0.1 192.168.1.10 &amp;lt;&amp;ndash;在這裡加入自己的IP(不然進不去configure) Require user JohnDoe Satisfy Any &lt;/FilesMatch&gt; &lt;/Directory&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Directory &amp;ldquo;/usr/local/www/twiki/pub&amp;rdquo;&amp;gt; Options None AllowOverride Limit Allow from all&lt;/p&gt;
&lt;p&gt;AddType text/plain .shtml .php .php3 .phtml .phtm .pl .py .cgi &lt;/Directory&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;編輯http.conf，在最底下加入一行 include &amp;ldquo;etc/apache22/twiki.conf&amp;rdquo;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;打開瀏覽器進入Configure http://(hostname)/twiki/bin/configure&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;若噴出Error.pm，將p5-Error砍掉重裝 cd /usr/ports/lang/p5-Error make deinstall clean make install clean ※不知道為什麼reinstall系統會噴錯誤，所以才下兩行指令&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;這時候應該就沒有error了，可以點選next 然後設定密碼後保存 twiki/lib底下就會出現LocalSite.cfg(用來保存網站設定)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;若{RCS}{EgrepCmd}與{RCS}{fgrepCmd}出現 Error:&amp;quot;/BIN/grep&amp;rdquo; does not meet the current Path. 因為FreeBSD的grep在/usr/bin底下 所以只要把/bin/grep改成/usr/bin/grep(後面的參數不動)即可&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;User Mapping的部分: 預射是Twiki::Users::TwikiUserMapping 如果想先試跑首頁就先改成Twiki::Users::BaseUserMapping 保存後就可進入WebHome了 網址 http://(hostname)/twiki/bin/view/Main/WebHome&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;認證：&lt;/p&gt;
&lt;p&gt;CGI::Session Install shell&amp;gt; perl -MCPAN -e shell cpan&amp;gt; install CGI::Session Reference:http://cpan.uwinnipeg.ca/htdocs/CGI-Session/INSTALL.html&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Git] Basic Command</title>
        <link>https://caloskao.org/git-basic-command/</link>
        <pubDate>Sat, 02 Jun 2012 20:24:00 +0800</pubDate>
        
        <guid>https://caloskao.org/git-basic-command/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 設定個人資訊 (這些資訊會顯示在commit log上)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global username &amp;#34;your name&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global email &amp;#34;your E-mail&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#------------------------------[init]-----------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 切換到自己的專案目錄
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd my_project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 管理初始化
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#------------------------------[add]----------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 新增檔案
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add (file name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 將當前目錄下的所有檔案及目錄加入管理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 將指定子目錄下的指定檔案加入管理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add dir_name/file_name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 將指定子目錄下的所有檔案加入管理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add dir_name/.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 新增修改過的檔案 (兩者皆可)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add -u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add modifyfile
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#-------------------------------[commit]----------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# commit並添加註解
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &amp;#34;commit message&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 自動add修改過的檔案(不包含未納管的檔案)並commit (會開啟editor，需要寫commit massage)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 同上，差異在於commit massage直接寫在-m後面，並不會開啟editor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -a -m &amp;#34;commit message&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# -v 可以看到檔案哪些內容有被更改
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -a -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#-------------------------------[branch]----------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 列出現有branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 列出所有branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 新增branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 從master新增branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch test-branch master
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 刪除branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch -d (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 強制刪除branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch -D (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 重新命名branch (當前branch為old branch時可忽略參數old branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch -m (old branch name) (new branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 切換至指定branch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 將指定的branch與當前branch合併
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git merge (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#-------------[push、pull、clone、remote(以girhub為例)]-------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 提交變更至git server
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push git@github.com:(user name)/(project name).git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 提交指定branch的變更
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push git@github.com:(user name)/(project name).git (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 刪除git server上的branch(下列兩種方式皆可)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push git@github.com:(user name)/(project name) .git :(branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin --delete (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 檢查git server有無較新的變更，並拉下來更新本機的檔案(未指定remote+branch name則對目前branch進行作業)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git pull (remote) (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 將該專案資料夾從git server拉下來
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@github.com:(user name)/(project name).git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 新增遠端名稱
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git remote (remote name) git@github.com:(user name)/(project name).git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 顯示現有remote清單
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git remote -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 將project上傳到指定的remote
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push (remote name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 將project裡指定branch的上傳到指定的remote
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push (remote name) (branch name)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;example:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git remote origin git@github.com:athlon20147/myproject.git //remote name : origin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;新增好remote後，以下兩行功能相等
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push git@github.com:athlon20147/myproject.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-------------------------------[other]----------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 檢視變更紀錄
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 還原已經commit刪除的檔案
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout &amp;lt;deleteing_commit&amp;gt;^ -- &amp;lt;file_path&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ex： git checkout b05128e3ebd4f38c317f066d679aee21c7d3af65^ -- config/ldap-sample.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[Git] Github、Bitbucket 綁定 ssh-key</title>
        <link>https://caloskao.org/github%E3%80%81bitbucket%E7%B6%81%E5%AE%9Assh-key/</link>
        <pubDate>Wed, 18 Apr 2012 20:50:00 +0800</pubDate>
        
        <guid>https://caloskao.org/github%E3%80%81bitbucket%E7%B6%81%E5%AE%9Assh-key/</guid>
        <description>&lt;p&gt;若環境是Windows，請先 &lt;a class=&#34;link&#34; href=&#34;https://git-scm.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;安裝Git&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;產生一組新的ssh-key&#34;&gt;產生一組新的SSH Key
&lt;/h2&gt;&lt;p&gt;如果已經有現成的，可跳過這步驟&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 切換到使用者家目錄&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 產生ssh key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-keygen -t rsa -C &lt;span class=&#34;s2&#34;&gt;&amp;#34;你的E-mail&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 這裡是指定key的擺放位置，直接Enter下去使用預設值就好&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generating public/private rsa key pair.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enter file in  which to have the key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/Users/your_user_directory/.ssh/id_rsa&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# key的驗證密碼，在進行驗證時使用者端需要額外輸入密碼做驗證，也可以留空 (建議不要在公用電腦使用空密碼)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enter passphrase &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;Empty &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; nopassphrase&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 再次輸入&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enter same passphrase again:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 完成後會看到家目錄多了一個.ssh的目錄，裡面有 id_rsa (Private-Key) 與 id_rsa.pub (Public-Key) 兩個檔案&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 使用 cat 指令顯示自己的public-key (要加入到git server用)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat ~/.ssh/id_rsa.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;將-key-加入至-github-帳號&#34;&gt;將 Key 加入至 Github 帳號
&lt;/h2&gt;&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_f74498bb1454_hu_8c7b2c812d80d2ff.png&#34;
    width=&#34;1920&#34;
    height=&#34;1805&#34;
    srcset=&#34;https://caloskao.org/post/img_f74498bb1454_hu_8c7b2c812d80d2ff.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;106&#34;
        data-flex-basis=&#34;255px&#34;
    
&gt;
&lt;/p&gt;
&lt;h2 id=&#34;將-key-加入至-bitbucket-帳號&#34;&gt;將 Key 加入至 Bitbucket 帳號
&lt;/h2&gt;&lt;p&gt;
&lt;img src=&#34;https://caloskao.org/post/img_226382468db8_hu_943324949e7be7f4.png&#34;
    width=&#34;1920&#34;
    height=&#34;911&#34;
    srcset=&#34;https://caloskao.org/post/img_226382468db8_hu_943324949e7be7f4.png 1920w&#34;
    loading=&#34;lazy&#34;
    
    
        class=&#34;gallery-image&#34; 
        data-flex-grow=&#34;210&#34;
        data-flex-basis=&#34;505px&#34;
    
&gt;
&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[JAVA] StringTokenizer</title>
        <link>https://caloskao.org/java-stringtokenizer/</link>
        <pubDate>Wed, 11 Jan 2012 18:47:00 +0800</pubDate>
        
        <guid>https://caloskao.org/java-stringtokenizer/</guid>
        <description>&lt;p&gt;今天閒著跑去高中生點了一題出來 - 讀取練習-強大的加法&lt;/p&gt;
&lt;p&gt;用Scanner自動濾掉空格結果還是有錯，&lt;/p&gt;
&lt;p&gt;看得出來測資應該就不像範例只有一位元那麼單純。&lt;/p&gt;
&lt;p&gt;google 一下，找到了一個可以拆解字串的類別 - StringTokenizer&lt;/p&gt;
&lt;p&gt;StringTokenizer 預設情況下是以空白符號分解字串。&lt;/p&gt;
&lt;p&gt;先讀取整行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;String si = input.nextLine();
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再來拆解：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;StringTokenizer sc = new StringTokenizer(si);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這時候整行字串會依空格將整行字串拆解。&lt;/p&gt;
&lt;p&gt;例如今天傳入一行 &lt;code&gt;Hello world   by           Calos&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;那麼拆解後就會變成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Hello
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;world
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;by
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;calos
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;有人應該有疑問說，空格很多格，不會拆解出一堆空白字串嗎??&lt;/p&gt;
&lt;p&gt;上面有提到：&lt;strong&gt;StringTokenizer預設情況下是以空白符號分解字串。&lt;/p&gt;
&lt;p&gt;即讀取到space時是自動忽略，並且以 space 來判定一個字串的結尾。&lt;/p&gt;
&lt;p&gt;題目範例輸入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2 5 8 8 8 5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;依第二行測資，字串會拆解為：2、5、8、8、8、5&lt;/p&gt;
&lt;p&gt;把拆解過後的數字轉型並加總：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;int sum = 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;while ( sc.hasMoreTokens() ) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    sum += Long.parseLong( sc.nextToken() );
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;輸出：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;System.out.println(sum); //36
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ps: 先拉套件進來才能正常運作&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import java.util.*;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import java.math.*;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>[FreeBSD] 開啟 SSH 遠端連線</title>
        <link>https://caloskao.org/freebsd-%E9%96%8B%E5%95%9Fssh%E9%81%A0%E7%AB%AF%E9%80%A3%E7%B7%9A/</link>
        <pubDate>Mon, 02 Jan 2012 03:43:00 +0800</pubDate>
        
        <guid>https://caloskao.org/freebsd-%E9%96%8B%E5%95%9Fssh%E9%81%A0%E7%AB%AF%E9%80%A3%E7%B7%9A/</guid>
        <description>&lt;p&gt;修改 &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PermitRootLogin yes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PermitEmptyPasswords no
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PasswordAuthentication yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;修改 &lt;code&gt;/etc/inetd.conf&lt;/code&gt;，將以下的註解拿掉(開啟遠端登入root)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh stream tcp nowait root /usr/sbin/sshd sshd -i -4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh stream tcp6 nowait root /usr/sbin/sshd sshd -i -6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;/etc/rc.conf&lt;/code&gt; 加入&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sshd_enable=&amp;#34;yes&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;重新啟動服務&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/etc/rc.d/sshd restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        
    </channel>
</rss>
