<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>O3noBLOG</title>
<link>https://blog.othree.net/</link>
<description></description>
<copyright>Copyright 2026</copyright>
<lastBuildDate>Mon, 12 Jan 2026 19:50:43 +0800</lastBuildDate>
<generator>http://www.movabletype.org/?v=4.381</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 


<item>
<title>Mitmproxy and iOS simulator</title>
<description><![CDATA[<p>之前（兩三年前了）因為工作需求，想要確認 iOS 到底有沒有認真看待 HTTP cache 機制，因為在 app 內，收到的 HTTP status code 總是 200，然後我又看不到 request header，遠端的資料放 CDN 上也不好看到紀錄，轉念一想，我是不是可以改成監看 iOS 模擬器的所有請求呢？</p>
<p>搜尋之後發現有人說可以用 <a href="https://www.mitmproxy.org/">mitmoroxy</a>，是開源的不像其他 proxy 除錯工具一樣需要付費，稍微測試了一下，發現這東西很好安裝和使用啊，所以花了一點時間研究看看是不是能達到目標，大概步驟如下：</p>
<ul>
<li>安裝 <code>brew install mitmproxy</code></li>
<li>然後開 iOS 模擬器</li>
<li>安裝 mitmoroxy 的 cert 到模擬器裡面</li>
</ul>
<pre><code>xcrun simctl keychain booted add-root-cert ~/.mitmproxy/mitmproxy-ca-cert.pem
</code></pre>
<ul>
<li>啟動 mitmproxy</li>
<li>然後設定你的 MacOS 網路來使用這個 proxy（預設是 <code>http://localhost:8080</code>），因為 iOS 模擬器和 host OS 是共用網路的</li>
</ul>
<p>就這麼簡單，不過這方法還是有些限制，像是如果有用 HTTPS pinning 的話，那就還要其它設定；然後 mitmproxy 本身的操作很好上手，這邊就不多花時間說明了。</p>
<p>然後回到一開始的問題，到底 304 有沒有用呢？我這邊是用 React Native 內的 fetch，然後結論就是<strong>有</strong>，在 mitmproxy 確實是看的到 304，不過在 RN 的 context 內就會變成 200 了，其實後來想想也覺得合理，因為應用程式層本來就不應該去處理 HTTP 層的 cache 問題，這樣大大的簡化了複雜度。</p>
<p>參考：</p>
<ul>
<li><a href="https://alwold.com/posts/using-mitmproxy-with-ios-simulator/">Using mitmproxy with the iOS simulator</a></li>
</ul>
]]></description>
<link>https://blog.othree.net/log/2026/01/12/mitmproxy-ios/</link>
<guid>https://blog.othree.net/log/2026/01/12/mitmproxy-ios/</guid>
<category>software</category>
<pubDate>Mon, 12 Jan 2026 19:50:43 +0800</pubDate>
</item>

<item>
<title>Unicode CLDR 與貨幣數值格式</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/30489284895/" title="Venezia by othree, on Flickr"><img src="https://live.staticflickr.com/5677/30489284895_1b74c69f22_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Venezia" srcset="https://live.staticflickr.com/5677/30489284895_1b74c69f22_b.jpg 1024w, https://live.staticflickr.com/5677/30489284895_731bddef2c_h.jpg 1600w" /></a></p>
<p>其實一直以來都有點好奇，像 <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl"><code>Intl</code></a> 這種可以根據語系格式化輸出<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat">數字、貨幣數值</a>或是<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat">日期</a>等資料的工具函數，它的資料集到底是哪裡來的？會很好奇是因為這其實是一個多對多的組合，不同的語言地區配上不同的貨幣，算起來每種資料格式都要維護一組數量不小的組合，例如我想要用法文或英文顯示 10000 新台幣要用怎麼顯示呢：</p>
<pre><code>// zh-Hant
$10,000.00
// fr
10 000,00 TWD
// en-US
NT$10,000.00
</code></pre>
]]><![CDATA[<p>可以看到有很多點不一樣，首先數字格式的部分，可以看到小數點符號、千位數的分隔符號都不一樣；然後是貨幣符號，可能放前面可能放後面，中間可能會有空白（而且是 NBSP），然後根據不同組合可能會用短的貨幣符號，也可能用長的或是完整的貨幣代碼。作為比較，同樣的三組語系，如果改成顯示歐元則是：</p>
<pre><code>// zh-Hant
€10,000.00
// fr
10 000,00 €
// en-US
€10,000.00
</code></pre>
<p>可以明顯看到，相同的語系顯示不同的貨幣數值，也有不一樣的格式設定，證實了它確實是一個多對多的關係，現在 ISO-639 有規範到的語言有 183 個，ISO-3166 的國家則是 271 個，相乘起來將近五萬種組合的資料是怎樣維護的呢？結果，其實這些資料的定義和管理都是在 Unicode 的 <a href="https://cldr.unicode.org/">CLDR 專案</a>，CLDR 是 Common Locale Data Repository 的縮寫，收集整理了各種因為地區不同而有差異的資料格式，除了上面提到的貨幣、數字之外，還有像是日期、時間、度量衡、數字、姓名（姓前面還名前面、有沒有中間名等）等的格式，然後還有像是國家、貨幣、時區、單位甚至是 emoji 的翻譯。</p>
<p>CLDR 網站上可以直接看到這些資料，拿繁體中文為例，網頁位置在 <a href="https://www.unicode.org/cldr/charts/48/summary/zh_Hant.html">charts 下</a>，下面的圖是第 44 版的，最新的版本其實是 48，以下請見截圖介紹，最右邊都有值的那欄就是 zh-Hant 繁體中文的翻譯和格式(pattern)。</p>
<p>國家名稱（這邊用的單字其實是 territory，翻譯通常是領土、疆域）、語言和時區：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54972514552/" title="CLDR 44 zh-Hant Country by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54972514552_ca3556bc2d_b.jpg" intrinsicsize="1024x346" width="1024" height="346" alt="CLDR 44 zh-Hant Country" srcset="https://live.staticflickr.com/65535/54972514552_ca3556bc2d_b.jpg 1024w, https://live.staticflickr.com/65535/54972514552_20e6621b12_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/54973659759/" title="CLDR 44 zh-Hant Language by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54973659759_80e3a3d7bc_b.jpg" intrinsicsize="1024x346" width="1024" height="346" alt="CLDR 44 zh-Hant Language" srcset="https://live.staticflickr.com/65535/54973659759_80e3a3d7bc_b.jpg 1024w, https://live.staticflickr.com/65535/54973659759_d1a367b342_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/54973659809/" title="CLDR 44 zh-Hant Timezone by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54973659809_e1ec312a4b_b.jpg" intrinsicsize="1024x346" width="1024" height="346" alt="CLDR 44 zh-Hant Timezone" srcset="https://live.staticflickr.com/65535/54973659809_e1ec312a4b_b.jpg 1024w, https://live.staticflickr.com/65535/54973659809_a4b79d506a_h.jpg 1600w" /></a></p>
<p>日期時間格式：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54973405756/" title="CLDR 44 zh-Hant Date Time by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54973405756_35c566eb5d_b.jpg" intrinsicsize="1024x346" width="1024" height="346" alt="CLDR 44 zh-Hant Date Time" srcset="https://live.staticflickr.com/65535/54973405756_35c566eb5d_b.jpg 1024w, https://live.staticflickr.com/65535/54973405756_7d7f188992_h.jpg 1600w" /></a></p>
<p>也有特定國家用的系統，像是中國的天干地支和二十四節氣：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54973659734/" title="CLDR 44 zh-Hant Chinese Time and Season by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54973659734_7444790b83_b.jpg" intrinsicsize="1024x346" width="1024" height="346" alt="CLDR 44 zh-Hant Chinese Time and Season" srcset="https://live.staticflickr.com/65535/54973659734_7444790b83_b.jpg 1024w, https://live.staticflickr.com/65535/54973659734_ab0e243b95_h.jpg 1600w" /></a></p>
<p>日本的年號：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54973704455/" title="CLDR 44 zh-Hant Japan Era by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54973704455_ecba3770bb_b.jpg" intrinsicsize="1024x346" width="1024" height="346" alt="CLDR 44 zh-Hant Japan Era" srcset="https://live.staticflickr.com/65535/54973704455_ecba3770bb_b.jpg 1024w, https://live.staticflickr.com/65535/54973704455_4da790c127_h.jpg 1600w" /></a></p>
<p>這篇所提到的數字格式和貨幣顯示方式：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54973659794/" title="CLDR 44 zh-Hant Number by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54973659794_bab68c0595_b.jpg" intrinsicsize="1024x346" width="1024" height="346" alt="CLDR 44 zh-Hant Number" srcset="https://live.staticflickr.com/65535/54973659794_bab68c0595_b.jpg 1024w, https://live.staticflickr.com/65535/54973659794_4361a632fb_h.jpg 1600w" /></a></p>
<p>貨幣名稱：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54973405786/" title="CLDR 44 zh-Hant Currency by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54973405786_c7fb481a55_b.jpg" intrinsicsize="1024x346" width="1024" height="346" alt="CLDR 44 zh-Hant Currency" srcset="https://live.staticflickr.com/65535/54973405786_c7fb481a55_b.jpg 1024w, https://live.staticflickr.com/65535/54973405786_61d97f6b45_h.jpg 1600w" /></a></p>
<p>可以看到以上這些資訊都有繁體中文的文字翻譯，所以其實這都可以當成正式的譯名了。</p>
<p>這些資料的原始格式都是用 XML 維護的，東西放在 GitHub 上，例如我們上面舉例的 zh-Hant 的檔案<a href="https://github.com/unicode-org/cldr/blob/main/common/main/zh_Hant.xml">就在這</a>，有興趣的可以看看檔案結構長怎樣，去<a href="https://github.com/unicode-org/cldr/tree/main/common/main">上一層目錄</a>則可以看到所有目前有存在的地區語言組合(語系、locale)，目前有在維護的是 1127 種，超過一千個檔案所以其實在 GitHub 的網站上也不會全部列出來，而這一千多種語系其實遠大於我一開始提到的 ISO-639 規範到的一百多個語言，所以實際有在維護的資料數量比我一開始隨手估計的還要大上六七倍。</p>
<p>回到檔案內容，有兩個字元想要特別介紹的，這種用字元表示特別意義的方法在其他地方蠻少見，真不愧是 Unicode 專案：第一個是 <code>↑↑↑</code>，可以在很多地方看到，這三個字元出現的話，就是代表請找 fallback 值，一般而言就是把語系的值拆分扣掉最後面那一段，如果在查找的時候收到的語系是 <code>zh-Hant-TW</code>，那第一次 fallback 就會發生在找不到該檔案，改成找 <code>zh-Hant</code> 的檔案，也就是上面範例那個檔案，找到檔案後，查找該檔案內的指定的定義，結果定義是 <code>↑↑↑</code> 時，就改成去找 <code>zh</code> 的檔案內的定義，如果一直都找不到就會去 <a href="http://github.com/unicode-org/cldr/blob/main/common/main/root.xml">root.xml</a> 找。</p>
<p>第二個要介紹的則是 <a href="https://en.wikipedia.org/wiki/Currency_sign_(generic)"><code>¤</code></a> 字元，這是我第一次注意到這個字元，本來以為是比較新的定義，不過其實它是很古老的字元，根據 Wikipedia，它在電腦領域最早出現是在 1972，7 bit 編碼時就有了，比我還老，一開始就是作為貨幣符號的占位符號使用，不代表任一特定的貨幣，那這個符號在 CLDR 這邊是怎樣用的呢？在 zh-Hant.xml 檔案內直接搜尋該字元，就可以看到這段定義：</p>
<pre><code>&lt;currencyFormat type=&quot;accounting&quot;&gt;
	&lt;pattern&gt;¤#,##0.00&lt;/pattern&gt;
	&lt;pattern alt=&quot;alphaNextToNumber&quot;&gt;↑↑↑&lt;/pattern&gt;
	&lt;pattern alt=&quot;noCurrency&quot;&gt;↑↑↑&lt;/pattern&gt;
&lt;/currencyFormat&gt;
</code></pre>
<p>其中的 <code>&lt;pattern&gt;</code> 內的值就是 CLDR 自己定義的<a href="https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns">數字、貨幣的顯示格式的 pattern（格式）</a>，詳細可以參考官網的介紹，每個字元都有其定義，而不是真的用那個字元顯示，例如 0 代表一定要出現的位數，但是數字系統可以換，所以最後輸出不一定是阿拉伯數字；<code>,</code> 代表的是千位數分隔符號的位置，實際上要用哪個字元作為分隔符號，則是看該語系的定義；同理，<code>¤</code> 字元的用途就是在這個 pattern 當中，貨幣符號的放置位置，而要顯示怎樣的貨幣符號，則是還要看語系和設定，例如新台幣在 zh-Hant 中的定義就有以下幾種：</p>
<pre><code>&lt;currency type=&quot;TWD&quot;&gt;
	&lt;displayName&gt;新台幣&lt;/displayName&gt;
	&lt;displayName count=&quot;other&quot;&gt;↑↑↑&lt;/displayName&gt;
	&lt;symbol&gt;$&lt;/symbol&gt;
	&lt;symbol alt=&quot;formal&quot;&gt;NT$&lt;/symbol&gt;
	&lt;symbol alt=&quot;narrow&quot;&gt;↑↑↑&lt;/symbol&gt;
&lt;/currency&gt;
</code></pre>
<p>然後在其他語系可能還有直接使用 currency code 的，所以至少就有四種，而根據 <a href="https://www.unicode.org/reports/tr35/">LDML</a>（這份 zh-Hant.xml 文件的格式），其實可以根據這個 <code>¤</code> 字元重複的次數，來決定要如何顯示該貨幣符號，詳見下表：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54985738533/" title="LDML currency symbol by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54985738533_8d6dbd1f13_b.jpg" intrinsicsize="1024x255" width="1024" height="255" alt="LDML currency symbol" srcset="https://live.staticflickr.com/65535/54985738533_8d6dbd1f13_b.jpg 1024w, https://live.staticflickr.com/65535/54985738533_00fb730384_h.jpg 1600w" /></a></p>
<p>不過其實在 zh-Hant.xml 當中，搜尋到的所有的貨幣數值的 pattern，都只有一個 <code>¤</code>，所以理論上應該都是一樣的用 standard currency symbol，但是實務上似乎比較少真的直接用到這特性，而是透過設定更改的比較多，在 JavaScript 的 <code>Intl.NumberFormat</code> 的 style option 中有一個 <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#minimumfractiondigits"><code>currencyDisplay</code></a> 的設定可以用來改變貨幣符號的顯示方式，有 <code>code</code>、<code>symbol</code>、<code>narrowSymbol</code>、<code>name</code> 這四種，並沒有用到不同數量的 <code>¤</code> 的 pattern。深究其原理，其實 <code>Intl.NumberFormat</code> 底層就是 Unicode 官方的 <a href="https://icu.unicode.org/">ICU</a>，而 ICU 則是透過 <a href="https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#unit-width">Unit Width</a> 這個選項來調整，實作似乎是在替換時根據不同的 unit width 選用不同的值，而不是修改 pattern。而 <code>Intl.NumberFormat</code> 也就是透過設定 Unit Width 來達成的，結果就是，如果沒有直接使用 ICU 手動設定 pattern，似乎是不會真的用到多個 <code>¤</code> 的模式，不過這其實也太細節了，我也不是非常熟悉，所以只能說個大概。</p>
<p>最後想介紹的，就是 CLDR 其實還提供了不少的<a href="https://www.unicode.org/cldr/charts/48/supplemental/">補充資料(supplemental)</a>，舉幾個比較有趣的：</p>
<ul>
<li><a href="https://www.unicode.org/cldr/charts/48/supplemental/detailed_territory_currency_information.html#territory_currency">領土 to 貨幣 的對照表</a>；</li>
<li>同上一頁的第二章表則是<a href="https://www.unicode.org/cldr/charts/48/supplemental/detailed_territory_currency_information.html#format_info">各個貨幣的小數點後位數</a> （這我記得 ISO 也有一份）；</li>
<li><a href="https://www.unicode.org/cldr/charts/48/supplemental/territory_information.html">各個領土的資訊</a>，例如使用的日曆系統、每週是星期幾開始、人口、GDP 等；</li>
<li><a href="https://www.unicode.org/cldr/charts/48/supplemental/scripts_languages_and_territories.html">各個語言的範例字母</a>，像中文就是「字」、日文是「か」、韓文是「가」。</li>
</ul>
]]></description>
<link>https://blog.othree.net/log/2025/12/16/unicode-cldr/</link>
<guid>https://blog.othree.net/log/2025/12/16/unicode-cldr/</guid>
<category>software</category>
<pubDate>Tue, 16 Dec 2025 20:06:48 +0800</pubDate>
</item>

<item>
<title>2024 北海道 Part 3</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53942024349/" title="札幌電視塔 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53942024349_51365642ee_b.jpg" intrinsicsize="683x1024" width="600" height="900" alt="札幌電視塔" srcset="https://live.staticflickr.com/65535/53942024349_51365642ee_b.jpg 683w, https://live.staticflickr.com/65535/53942024349_728c06866c_h.jpg 1067w" /></a></p>
<p>接<a href="https://blog.othree.net/log/2025/12/05/2024-hokkaido-2/">前篇</a>，第九天天氣不太好，一早雨就不小，一時忘了確認本來安排好的行程，結果就漏掉本來要去的甜點店<a href="https://tsuboya.net/pages/shop-kibana">き花の杜 壺屋</a>，不知道還有沒有機會再去旭川啊，真是扼腕。</p>
]]><![CDATA[<p>總之接下來就往南要經由美瑛富良野去札幌了，首先第一站因為下雨就直接跑去旭川神社買えぞみくじ，然後再去美瑛神社買。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53936999967/" title="美瑛神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53936999967_995588b626_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="美瑛神社" srcset="https://live.staticflickr.com/65535/53936999967_995588b626_b.jpg 1024w, https://live.staticflickr.com/65535/53936999967_5e1983fd79_h.jpg 1600w" /></a></p>
<p>美瑛有展示全部的えぞみくじ，這邊的是米袋：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53937000042/" title="美瑛神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53937000042_ea26f5802a_b.jpg" width="1024" height="683" alt="美瑛神社" srcset="https://live.staticflickr.com/65535/53937000042_064c37fe35_k.jpg 2x" /></a></p>
<p>美瑛神社：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53938235319/" title="美瑛神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938235319_bed8f60b82_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="美瑛神社" srcset="https://live.staticflickr.com/65535/53938235319_bed8f60b82_b.jpg 1024w, https://live.staticflickr.com/65535/53938235319_0592dd4cbe_h.jpg 1600w" /></a></p>
<p>美瑛神社的祈福烏鴉：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53938235359/" title="美瑛神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938235359_2e65f22367_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="美瑛神社" srcset="https://live.staticflickr.com/65535/53938235359_2e65f22367_b.jpg 1024w, https://live.staticflickr.com/65535/53938235359_e57d795de1_h.jpg 1600w" /></a></p>
<p>然後就到處打發時間，去了美瑛車站、富良野チーズ工房、Furano Marche 和四季彩之丘，不過花季還沒到就是。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53937000342/" title="美瑛車站 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53937000342_a321018b19_b.jpg" width="1024" height="683" alt="美瑛車站" srcset="https://live.staticflickr.com/65535/53937000342_c04cf7db19_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53937001127/" title="四季彩之丘 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53937001127_8b8eda76bb_b.jpg" width="1024" height="683" alt="四季彩之丘" srcset="https://live.staticflickr.com/65535/53937001127_3c6403b6af_k.jpg 2x" /></a></p>
<p>跑來跑去的途中可以看到遠遠的十勝岳很漂亮，不過這是天氣剛好讓山形更明顯，不然後面沒被雲霧遮住的時候沒這麼樣的三角形，前幾天的十勝川溫泉的十勝川就是這邊流下去的，山上其實也有十勝岳溫泉。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53937002837/" title="十勝岳 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53937002837_b650b79ed3_b.jpg" width="1024" height="683" alt="十勝岳" srcset="https://live.staticflickr.com/65535/53937002837_438c4567b9_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53938360895/" title="狐狸 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938360895_2cd0a6413e_b.jpg" width="1024" height="683" alt="狐狸" srcset="https://live.staticflickr.com/65535/53938360895_8ea4c72b4b_k.jpg 2x" /></a></p>
<p>晚餐是臨時找的 <a href="https://masajin.jp/">MASAJIN 富良野店</a>，不過因為沒有預約老闆說可以幫我們約下一批，所以就先跑去王子飯店旁邊的ニングルテラス(Ningle Terrace、精靈露台)，這邊的 Ningle 雖然翻譯為精靈，不過其實不是起源於西方的故事，而是日本作家倉本聰的小說，想知道長怎樣的可以看他們以前出的 <a href="https://www.amazon.co.jp/dp/4041956013">photo story</a>。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53937906961/" title="Ningle Terrace by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53937906961_3a89e4b0b4_b.jpg" width="1024" height="683" alt="Ningle Terrace" srcset="https://live.staticflickr.com/65535/53937906961_ad7bd632ef_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53938238549/" title="Ningle Terrace by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938238549_4b2c313458_b.jpg" width="1024" height="683" alt="Ningle Terrace" srcset="https://live.staticflickr.com/65535/53938238549_3104768b5f_k.jpg 2x" /></a></p>
<p>晚餐挑 MASAJIN 就是為了成吉思漢燒肉啦，旭川沒吃到大黑屋還好這邊有吃到，很好吃。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53936999557/" title="MASAJIN 富良野店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53936999557_4a0abdbdb8_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="MASAJIN 富良野店" srcset="https://live.staticflickr.com/65535/53936999557_4a0abdbdb8_b.jpg 1024w, https://live.staticflickr.com/65535/53936999557_d6c955e49a_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53938361545/" title="MASAJIN 富良野店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938361545_e9eff3cc88_b.jpg" width="1024" height="683" alt="MASAJIN 富良野店" srcset="https://live.staticflickr.com/65535/53938361545_10c473d3c5_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53938238699/" title="MASAJIN 富良野店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938238699_5f2830910c_b.jpg" width="1024" height="683" alt="MASAJIN 富良野店" srcset="https://live.staticflickr.com/65535/53938238699_94931ad36a_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53936999572/" title="MASAJIN 富良野店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53936999572_9ff751f18c_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="MASAJIN 富良野店" srcset="https://live.staticflickr.com/65535/53936999572_9ff751f18c_b.jpg 1024w, https://live.staticflickr.com/65535/53936999572_1d1b9e881c_h.jpg 1600w" /></a></p>
<p>超好吃的馬鈴薯，中間黑黑的似乎是鹽昆布：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53938234639/" title="MASAJIN 富良野店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938234639_3d0c2089ec_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="MASAJIN 富良野店" srcset="https://live.staticflickr.com/65535/53938234639_3d0c2089ec_b.jpg 1024w, https://live.staticflickr.com/65535/53938234639_fbb70b5d8d_h.jpg 1600w" /></a></p>
<p>第九天晚上住的是小木屋 Log Cotage Himawari，是這趟唯一的民宿，上面拍到狐狸的地方也在這附近（而且我還拍到<a href="https://www.flickr.com/photos/othree/53950367032/in/album-72177720319451194">狐狸怎麼叫</a>），內部空間還蠻夠的，不過相機不太好拍就是，整體而言也還不差，而且有附早餐，又離富田農場超近。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53937002892/" title="Log Cotage Himawari by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53937002892_e09ae0dc71_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Log Cotage Himawari" srcset="https://live.staticflickr.com/65535/53937002892_e09ae0dc71_b.jpg 1024w, https://live.staticflickr.com/65535/53937002892_7b5e48f08c_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53940016673/" title="Log Cotage Himawari by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53940016673_751205043b_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Log Cotage Himawari" srcset="https://live.staticflickr.com/65535/53940016673_751205043b_b.jpg 1024w, https://live.staticflickr.com/65535/53940016673_638cdf6580_h.jpg 1600w" /></a></p>
<p>第十天第一個景點就是富田農場啦，主打就是薰衣草，因為住的近很早就到，明明是還沒開門時間停車場就一堆車了，而且後來人還越來越多，不過這邊還是蠻不錯的，比起四季彩之森，我更喜歡這邊，也買了不少薰衣草產品。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53940017548/" title="富田農場 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53940017548_e2aa440323_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="富田農場" srcset="https://live.staticflickr.com/65535/53940017548_e2aa440323_b.jpg 1024w, https://live.staticflickr.com/65535/53940017548_39b5bdc79a_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53938861942/" title="富田農場 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938861942_af4ee4f164_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="富田農場" srcset="https://live.staticflickr.com/65535/53938861942_af4ee4f164_b.jpg 1024w, https://live.staticflickr.com/65535/53938861942_01af080e1f_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53940017183/" title="富田農場 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53940017183_97d9539330_b.jpg" width="1024" height="683" alt="富田農場" srcset="https://live.staticflickr.com/65535/53940017183_bfff4c3000_k.jpg 2x" /></a></p>
<p>午餐去 Furano Burger，然後飯後繞去錦山天満宮買えぞみくじ，這邊很特別是要操作吊車抓的：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53939766526/" title="錦山天満宮 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53939766526_a570797802_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="錦山天満宮" srcset="https://live.staticflickr.com/65535/53939766526_a570797802_b.jpg 1024w, https://live.staticflickr.com/65535/53939766526_94aefcad5d_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53940016768/" title="錦山天満宮 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53940016768_847bbfb516_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="錦山天満宮" srcset="https://live.staticflickr.com/65535/53940016768_847bbfb516_b.jpg 1024w, https://live.staticflickr.com/65535/53940016768_d227e28c6b_h.jpg 1600w" /></a></p>
<p>然後還逛了旁邊的...俗又大碗的超市「産直生鮮市場」</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53940219045/" title="産直生鮮市場 江別店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53940219045_eb551030e2_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="産直生鮮市場 江別店" srcset="https://live.staticflickr.com/65535/53940219045_eb551030e2_b.jpg 1024w, https://live.staticflickr.com/65535/53940219045_ad053f20e7_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53938861392/" title="産直生鮮市場 江別店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938861392_ef6e2ffeed_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="産直生鮮市場 江別店" srcset="https://live.staticflickr.com/65535/53938861392_ef6e2ffeed_b.jpg 1024w, https://live.staticflickr.com/65535/53938861392_5a7582f95c_h.jpg 1600w" /></a></p>
<p>之後就去三井 Outlet 購物，晚上則是住薄野的 VESSEL HOTEL，為的就是有名的早餐，不過會挑這間其實是因為中島公園的沒空房了，直接講結論，有點後悔，主要是因為這邊的空間太小人很多，用餐用的不太舒服，應該不強求要吃 VESSEL HOTEL 的早餐的，不過千金難買早知道。</p>
<p>然後接下來的第十天，因為還有車子可以用，所以就想排個近郊的景點，本來是安排北海道神宮然後去吃 <a href="https://maps.app.goo.gl/6LMhHAqLKkaZQcrR6">Chocolatier Masále 本店</a>，結果旅途中發現有個定山溪溫泉也很近而且可以划船，好像是當天早上才打電話預約，剛好接電話（多語服務）的還是台灣人，所以還蠻順利，總之就改成跑去那邊了，要是早這樣安排就會改成住定山溪會更好。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53941941428/" title="定山渓温泉 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53941941428_20164b5721_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="定山渓温泉" srcset="https://live.staticflickr.com/65535/53941941428_20164b5721_b.jpg 1024w, https://live.staticflickr.com/65535/53941941428_283ee76f6d_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53942024969/" title="定山渓温泉 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53942024969_a34b3f7767_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="定山渓温泉" srcset="https://live.staticflickr.com/65535/53942024969_a34b3f7767_b.jpg 1024w, https://live.staticflickr.com/65535/53942024969_7aa4799246_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53940786547/" title="定山渓温泉 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53940786547_31bc53f0cb_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="定山渓温泉" srcset="https://live.staticflickr.com/65535/53940786547_31bc53f0cb_b.jpg 1024w, https://live.staticflickr.com/65535/53940786547_551dbc203d_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53951720155/" title="定山溪 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53951720155_f7e1393980_b.jpg" intrinsicsize="768x1024" width="600" height="900" alt="定山溪" srcset="https://live.staticflickr.com/65535/53951720155_f7e1393980_b.jpg 768w, https://live.staticflickr.com/65535/53951720155_fef3a7157a_h.jpg 1200w" /></a></p>
<p>午餐隨便找了間點心店吃，然後就準備回程，不過為了讓小孩睡覺我還先開去札幌湖才繞回去札幌市，札幌湖是好像是因為蓋了定山溪水壩才形成的，開車過去的路還穿過水壩正上方，蠻特別的，在水壩的正中間還有一個<a href="https://jozankei.jp/spot/947/">定山溪水壩堤頂展望台</a>，不過這段沒有地方可以停車，觀光客要到這個地方要去水壩下游那邊有個園區有個停車場，然後爬樓梯上來，有機會的話蠻想來挑戰的，不過就算沒這樣跑，沿主要道路走札幌湖也有五個展望台，我這次照片主要其實是在第一個拍的，這邊才看得到水壩，湖景也是很美的，回來研究的時候有看到有人拍到秋天湖面很平靜都是倒影的，更加漂亮。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53940787092/" title="Sapporo Lake by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53940787092_6a8fc9df88_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Sapporo Lake" srcset="https://live.staticflickr.com/65535/53940787092_6a8fc9df88_b.jpg 1024w, https://live.staticflickr.com/65535/53940787092_05c51796f6_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53941942338/" title="Sapporo Lake by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53941942338_e395fc5fcd_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Sapporo Lake" srcset="https://live.staticflickr.com/65535/53941942338_e395fc5fcd_b.jpg 1024w, https://live.staticflickr.com/65535/53941942338_1ee5f229b3_h.jpg 1600w" /></a></p>
<p>之後終於再次往札幌前進，接下來幾天就都住在札幌市內，旅館是狸小路商店街中間的 Via Inn，位置很方便而且也不貴，最後一天就是直接拉行李去大通公園搭巴士去機場，走路的路程也還好，蠻推的。</p>
<p>接下來幾天就是札幌市區了，比較沒特別行程，跑了 Pokemon Center、狸小路商店街從頭到尾、走到札幌車站來回、島村樂器、根室花丸壽司、DONGURI 麵包店、藻岩山 山頂展望台等。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53940786042/" title="札幌茅乃舍 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53940786042_cf6a62d49b_b.jpg" width="1024" height="683" alt="札幌茅乃舍" srcset="https://live.staticflickr.com/65535/53940786042_173e1aad68_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53942546887/" title="島村樂器 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53942546887_eb3de3f7fc_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="島村樂器" srcset="https://live.staticflickr.com/65535/53942546887_eb3de3f7fc_b.jpg 1024w, https://live.staticflickr.com/65535/53942546887_dd3995259b_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53943700298/" title="島村樂器 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53943700298_11002effb8_b.jpg" width="1024" height="683" alt="島村樂器" srcset="https://live.staticflickr.com/65535/53943700298_ab005413e0_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53943445656/" title="DONGURI by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53943445656_899607e0cf_b.jpg" width="1024" height="683" alt="DONGURI" srcset="https://live.staticflickr.com/65535/53943445656_355bea44a0_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53943700173/" title="DONGURI by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53943700173_f7f3a1b438_b.jpg" width="1024" height="683" alt="DONGURI" srcset="https://live.staticflickr.com/65535/53943700173_484f384f8a_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53945816139/" title="藻岩山 山頂展望台 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53945816139_67b6f8f166_b.jpg" width="1024" height="683" alt="藻岩山 山頂展望台" srcset="https://live.staticflickr.com/65535/53945816139_39400c1c20_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53945938495/" title="藻岩山 山頂展望台 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53945938495_d51de96eec_b.jpg" width="1024" height="683" alt="藻岩山 山頂展望台" srcset="https://live.staticflickr.com/65535/53945938495_db3e3c502a_k.jpg 2x" /></a></p>
<p>其中狸小路商店街，一共有七段，這是我第一次從頭走到尾，最後的７丁目真的很特別，風格遽變，看起來窮很多，其他區的天棚甚至還是可以打開的：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53944578737/" title="狸小路商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53944578737_0d8cccced6_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="狸小路商店街" srcset="https://live.staticflickr.com/65535/53944578737_0d8cccced6_b.jpg 1024w, https://live.staticflickr.com/65535/53944578737_ca3eb59099_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53945481201/" title="狸小路商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53945481201_aa552dea15_b.jpg" intrinsicsize="683x1024" width="683" height="1024" alt="狸小路商店街" srcset="https://live.staticflickr.com/65535/53945481201_aa552dea15_b.jpg 683w, https://live.staticflickr.com/65535/53945481201_a46ac946ae_h.jpg 1067w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53945481266/" title="狸小路商店街 7丁目 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53945481266_f14b42c1f1_b.jpg" width="1024" height="683" alt="狸小路商店街 7丁目" srcset="https://live.staticflickr.com/65535/53945481266_cb19741d63_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53945481566/" title="狸小路商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53945481566_4818a0053d_b.jpg" width="600" height="900" alt="狸小路商店街" srcset="https://live.staticflickr.com/65535/53945481566_6465c5328e_k.jpg 2x" /></a></p>
<p>然後這趟也有特別找一家パフェ(parfait)吃，選的店家是<a href="https://pfsato.official.ec/"><strong>パフェ、珈琲、酒、佐藤</strong></a>，不過當初在規劃的時候看同個地址的地標變成佐藤堂，去現場才搞清楚，佐藤堂是他們新開的甜點品牌，現在這個地址一樓是佐藤堂，要內用吃パフェ要到樓上。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53945939740/" title="パフェ、珈琲、酒、佐藤 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53945939740_14a7cb1e59_b.jpg" width="1024" height="683" alt="パフェ、珈琲、酒、佐藤" srcset="https://live.staticflickr.com/65535/53945939740_8ed36a4edd_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53945740863/" title="パフェ、珈琲、酒、佐藤 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53945740863_93fb8a0240_b.jpg" width="1024" height="683" alt="パフェ、珈琲、酒、佐藤" srcset="https://live.staticflickr.com/65535/53945740863_d8f2715633_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53944578637/" title="佐藤堂 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53944578637_f156159ce5_b.jpg" width="1024" height="683" alt="佐藤堂" srcset="https://live.staticflickr.com/65535/53944578637_62baad5da4_k.jpg 2x" /></a></p>
<p>最後一天一早就去大通公園等巴士，事前就有先來勘查過，其實選機場巴士去機場就是會很怕沒位子就慘了，不過這站是蠻前面的站所以還好，結果巴士也沒坐滿，總之如果順利的話搭機場巴士去機場是會比搭火車地鐵輕鬆的，不用辛苦搬行李找地方放和換車等。</p>
<p>順利的到達最後一天的景點：新千歲機場，飛機是下午六七點，我們早上十點多就到機場了，結論就是時間不夠！我們去集印章、逛一個小博物館、看雪初音展覽、買一些商品（熱門商店隊伍很長都放棄）、然後去拿完美行的商品，還忙到商店區都沒拍照，結果最後還是很接近時間才到登機門，最後有一個通道上的專門店像是小叮噹、ROYCE 等幾乎都是快速走過沒辦法停下來看，還有下次的話我要前一天晚上先來機場住！</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53946526968/" title="新千歲機場 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53946526968_bd5fe1e4ae_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="新千歲機場" srcset="https://live.staticflickr.com/65535/53946526968_bd5fe1e4ae_b.jpg 1024w, https://live.staticflickr.com/65535/53946526968_4e2d621573_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53946601254/" title="新千歲機場 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53946601254_21205cf190_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="新千歲機場" srcset="https://live.staticflickr.com/65535/53946601254_21205cf190_b.jpg 1024w, https://live.staticflickr.com/65535/53946601254_80016bc265_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53946529053/" title="SNOWMIKU SKY TOWN by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53946529053_53ec8fb72b_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="SNOWMIKU SKY TOWN" srcset="https://live.staticflickr.com/65535/53946529053_53ec8fb72b_b.jpg 1024w, https://live.staticflickr.com/65535/53946529053_0441a14916_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53946604984/" title="SNOWMIKU SKY TOWN by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53946604984_bf73c7d4c9_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="SNOWMIKU SKY TOWN" srcset="https://live.staticflickr.com/65535/53946604984_bf73c7d4c9_b.jpg 1024w, https://live.staticflickr.com/65535/53946604984_fae545100e_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53946728055/" title="新千歲機場 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53946728055_41e5a210a2_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="新千歲機場" srcset="https://live.staticflickr.com/65535/53946728055_41e5a210a2_b.jpg 1024w, https://live.staticflickr.com/65535/53946728055_4ea4a7c40a_h.jpg 1600w" /></a></p>
<p>最後的最後就放上一張這次拍到的一張我很喜歡的照片吧。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53913917973/" title="小樽市 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913917973_0c66d463f0_b.jpg" width="1024" height="683" alt="小樽市" srcset="https://live.staticflickr.com/65535/53913917973_e5421d242f_k.jpg 2x" /></a></p>
]]></description>
<link>https://blog.othree.net/log/2025/12/06/2024-hokkaido-3/</link>
<guid>https://blog.othree.net/log/2025/12/06/2024-hokkaido-3/</guid>
<category>diary</category>
<pubDate>Sat, 06 Dec 2025 16:16:47 +0800</pubDate>
</item>

<item>
<title>2024 北海道 Part 2</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53934987984/" title="北見神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53934987984_ce15b3dbb9_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="北見神社" srcset="https://live.staticflickr.com/65535/53934987984_ce15b3dbb9_b.jpg 1024w, https://live.staticflickr.com/65535/53934987984_f5a673e72d_h.jpg 1600w" /></a></p>
<p>接<a href="https://blog.othree.net/log/2025/12/04/2024-hokkaido-1/">前篇</a>，第五天一早就是先去地獄谷周遊一下：</p>
]]><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53921946549/" title="登別地獄谷 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921946549_4f256c8d49_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="登別地獄谷" srcset="https://live.staticflickr.com/65535/53921946549_4f256c8d49_b.jpg 1024w, https://live.staticflickr.com/65535/53921946549_edcfc8a99e_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53921946574/" title="登別地獄谷 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921946574_7104d4abca_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="登別地獄谷" srcset="https://live.staticflickr.com/65535/53921946574_7104d4abca_b.jpg 1024w, https://live.staticflickr.com/65535/53921946574_b54652db60_h.jpg 1600w" /></a></p>
<p>然後就出發前往今天的目標<strong>帶廣</strong>了，有點概念的就知道這距離很遠，這一天也是我這趟要開最久的一天，所以是午餐前就出發了，午餐是中途下高速高路找的一間在荒野中的拉麵店：<a href="https://tabelog.com/hokkaido/A0107/A010701/1069507/"><strong>MACHIHAZURE T&amp;F</strong></a>」，評分還不差而且真的也還不錯吃，位置其實比較靠近新千歲，因為繼續往東前進就會好一大片都是未開發的地方了。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53921843883/" title="MACHIHAZURE T&amp;F by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921843883_9a9eb027ba_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="MACHIHAZURE T&amp;F" srcset="https://live.staticflickr.com/65535/53921843883_9a9eb027ba_b.jpg 1024w, https://live.staticflickr.com/65535/53921843883_5554f65df3_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53951720945/" title="北海道 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53951720945_54aeb1d41f_b.jpg" width="1024" height="768" alt="北海道" srcset="https://live.staticflickr.com/65535/53951720945_ec8f2dd01f_k.jpg 2x" /></a></p>
<p>到帶廣後的第一站就是六花亭本店了，特別來就是為了去二樓的咖啡廳吃甜點。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53920699937/" title="六花亭 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53920699937_1722c01024_b.jpg" width="1024" height="683" alt="六花亭" srcset="https://live.staticflickr.com/65535/53920699937_353ca43f05_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53921591221/" title="六花亭 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921591221_3fbe110033_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="六花亭" srcset="https://live.staticflickr.com/65535/53921591221_3fbe110033_b.jpg 1024w, https://live.staticflickr.com/65535/53921591221_abf3c34ff5_h.jpg 1600w" /></a></p>
<p>六花亭本店的商品超級多，拍了一大堆之前沒看過的東西，像是洋芋片，冷藏商品，還有很好笑的紀念品等：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53921947439/" title="六花亭 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921947439_6501d0ef04_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="六花亭" srcset="https://live.staticflickr.com/65535/53921947439_6501d0ef04_b.jpg 1024w, https://live.staticflickr.com/65535/53921947439_6377f96431_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53921844423/" title="六花亭 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921844423_b07cda3282_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="六花亭" srcset="https://live.staticflickr.com/65535/53921844423_b07cda3282_b.jpg 1024w, https://live.staticflickr.com/65535/53921844423_ba1316d760_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53921842543/" title="六花亭 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921842543_e0d47408a3_b.jpg" intrinsicsize="683x1024" width="600" height="900" alt="六花亭" srcset="https://live.staticflickr.com/65535/53921842543_e0d47408a3_b.jpg 683w, https://live.staticflickr.com/65535/53921842543_c84e61e2ce_h.jpg 1067w" /></a></p>
<p>第五天晚上住的是離市區十分距離的<a href="https://www.kangetsuen.com/">十勝川温泉 観月苑</a>，一泊二食加上各室溫泉，泉質我很喜歡（美人湯、弱鹼性、水呈黑色、泡完滑滑的），面十勝川的風景也不錯，加上餐點也蠻好吃的，而且還有煎過的干貝，在北海道要吃到有調理過的干貝真的是太難了！總之這天的住宿體驗是非常好的。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53920699772/" title="十勝川温泉 観月苑 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53920699772_ab407403e5_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="十勝川温泉 観月苑" srcset="https://live.staticflickr.com/65535/53920699772_ab407403e5_b.jpg 1024w, https://live.staticflickr.com/65535/53920699772_31dd24737c_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53921946074/" title="十勝川温泉 観月苑 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921946074_fcc22e1532_b.jpg" width="1024" height="683" alt="十勝川温泉 観月苑" srcset="https://live.staticflickr.com/65535/53921946074_c68e8715ad_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53921842818/" title="十勝川温泉 観月苑 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921842818_b5b3f3eb56_b.jpg" width="600" height="900" alt="十勝川温泉 観月苑" srcset="https://live.staticflickr.com/65535/53921842818_ac91b587c5_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53921842753/" title="十勝川温泉 観月苑 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53921842753_9ef1219bcc_b.jpg" width="1024" height="683" alt="十勝川温泉 観月苑" srcset="https://live.staticflickr.com/65535/53921842753_44af902a58_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53920699722/" title="十勝川温泉 観月苑 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53920699722_622d0ac1da_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="十勝川温泉 観月苑" srcset="https://live.staticflickr.com/65535/53920699722_622d0ac1da_b.jpg 1024w, https://live.staticflickr.com/65535/53920699722_eefc30f7af_h.jpg 1600w" /></a></p>
<p>第六天早上就是去帶廣神社和車站附近逛逛加午餐，在帶廣神社才發現他們北海道有神社的聯合籤叫えぞみくじ（蝦夷御籤），每個神社都有他不同造型的籤可以代回家作紀念，帶廣的是「<strong>魔鮭福鱒</strong>」！</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53925804091/" title="帶廣神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53925804091_94e62e4f16_b.jpg" width="1024" height="683" alt="帶廣神社" srcset="https://live.staticflickr.com/65535/53925804091_f2a26367b9_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53924912502/" title="帶廣神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53924912502_53eb7ab598_b.jpg" width="600" height="900" alt="帶廣神社" srcset="https://live.staticflickr.com/65535/53924912502_85842850b0_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53926054218/" title="帶廣神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53926054218_288dd057b6_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="帶廣神社" srcset="https://live.staticflickr.com/65535/53926054218_288dd057b6_b.jpg 1024w, https://live.staticflickr.com/65535/53926054218_1cc6f69eeb_h.jpg 1600w" /></a></p>
<p>午餐則是吃車站附近有名的豚丼：<a href="https://www.butahage.com/:">豚丼のぶたはげ</a></p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53924912717/" title="豚丼のぶたはげ by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53924912717_8db917baaa_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="豚丼のぶたはげ" srcset="https://live.staticflickr.com/65535/53924912717_8db917baaa_b.jpg 1024w, https://live.staticflickr.com/65535/53924912717_804c275342_h.jpg 1600w" /></a></p>
<p>飯後就開始繼續往東了，這一天的目標是阿寒湖，不過半路開始天氣就變差了，接下來幾天也都不再是藍天白雲的好天氣了。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53924912877/" title="阿寒湖 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53924912877_b2df09e93e_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="阿寒湖" srcset="https://live.staticflickr.com/65535/53924912877_b2df09e93e_b.jpg 1024w, https://live.staticflickr.com/65535/53924912877_4904423d3b_h.jpg 1600w" /></a></p>
<p>阿寒湖溫泉街那邊就開始會看到野生動物了，這一天就看到兩次：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53951265226/" title="阿寒湖 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53951265226_7100825dec_b.jpg" intrinsicsize="768x1024" width="600" height="800" alt="阿寒湖" srcset="https://live.staticflickr.com/65535/53951265226_7100825dec_b.jpg 768w, https://live.staticflickr.com/65535/53951265226_3aba09dcfc_h.jpg 1200w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53926159514/" title="阿寒湖 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53926159514_4c3f168627_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="阿寒湖" srcset="https://live.staticflickr.com/65535/53926159514_4c3f168627_b.jpg 1024w, https://live.staticflickr.com/65535/53926159514_cc63b0921e_h.jpg 1600w" /></a></p>
<p>晚餐也是找街道上的餐廳，分數還不錯的 <a href="https://maps.app.goo.gl/xuX4vjX7e8tdcZEr6">味心</a>，運氣不錯坐到最後一桌，後面還有客人老闆就說滿席了，然後才發現這些比較小的日本餐廳好像不太會說還要等多久，而是直接說沒位子了</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53925803951/" title="味心 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53925803951_2b3a4ee610_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="味心" srcset="https://live.staticflickr.com/65535/53925803951_2b3a4ee610_b.jpg 1024w, https://live.staticflickr.com/65535/53925803951_314c4d708d_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53926258915/" title="味心 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53926258915_226b1b61f0_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="味心" srcset="https://live.staticflickr.com/65535/53926258915_226b1b61f0_b.jpg 1024w, https://live.staticflickr.com/65535/53926258915_298e081c49_h.jpg 1600w" /></a></p>
<p>晚飯後去了 <a href="https://www.kamuylumina.jp/">KAMUY LUMINA</a>，很特別的體驗，但是環境是超級低光所以沒什麼照片，有機會的話值得參加一次：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53925803911/" title="KAMUY LUMINA by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53925803911_7ff114b2c0_b.jpg" width="1024" height="683" alt="KAMUY LUMINA" srcset="https://live.staticflickr.com/65535/53925803911_6ad93be218_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53925803901/" title="KAMUY LUMINA by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53925803901_6ffbf64b4e_b.jpg" width="1024" height="683" alt="KAMUY LUMINA" srcset="https://live.staticflickr.com/65535/53925803901_c46f30dc18_k.jpg 2x" /></a></p>
<p>隔天早上一早就去搭遊湖的船，然後逛了下<a href="https://www.akanainu.jp/facilities/onnecise.html">愛奴文化傳承創造館</a>，在<a href="https://www.akanainu.jp/">阿寒湖アイヌコタン</a>的商店買了紀念品後，就離開繼續往東移動，這一天的目標是這次旅程的最東端：摩周湖，看到照片的時候就超級想來的，結果天數夠就安排下去，午餐是先到摩周車站前的<a href="https://poppotei.wixsite.com/home">食堂と喫茶 poppotei</a>，是小有名氣的店，餐點也都蠻好吃的，在這邊我們還有遇到台灣來騎腳踏車的團客，有保母車還有預約餐廳這樣，之前比較沒接觸過，不過好像蠻多人會去日本這樣騎行挑戰的。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53928748000/" title="食堂と喫茶 poppotei by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53928748000_7a985a8cf4_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="食堂と喫茶 poppotei" srcset="https://live.staticflickr.com/65535/53928748000_7a985a8cf4_b.jpg 1024w, https://live.staticflickr.com/65535/53928748000_2449023755_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53927398717/" title="食堂と喫茶 poppotei by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53927398717_737f588399_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="食堂と喫茶 poppotei" srcset="https://live.staticflickr.com/65535/53927398717_737f588399_b.jpg 1024w, https://live.staticflickr.com/65535/53927398717_da4511c428_h.jpg 1600w" /></a></p>
<p>飯後，終於要前往此行中我最期待的摩周湖了，真的像是在夢中一樣：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53928748105/" title="摩周湖 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53928748105_fe5a4836f5_b.jpg" width="1024" height="683" alt="摩周湖" srcset="https://live.staticflickr.com/65535/53928748105_a349fbb1b4_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53927398797/" title="摩周湖 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53927398797_c9eb3251a2_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="摩周湖" srcset="https://live.staticflickr.com/65535/53927398797_c9eb3251a2_b.jpg 1024w, https://live.staticflickr.com/65535/53927398797_aad6cd4b97_h.jpg 1600w" /></a></p>
<p>大概和我十多年前去到<a href="https://flickr.com/photos/othree/8647685010">千圓鈔票拍攝的地點</a>一樣夢幻吧...</p>
<p>總之，就只能繼續行程，往北去網走了，網走真的是氣溫特別低，這一天線跑去網走神社買えぞみくじ，這邊的是可愛的雪天使：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53928298176/" title="網走神社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53928298176_0727ea8510_b.jpg" intrinsicsize="683x1024" width="600" height="900" alt="網走神社" srcset="https://live.staticflickr.com/65535/53928298176_0727ea8510_b.jpg 683w, https://live.staticflickr.com/65535/53928298176_f93ba24c60_h.jpg 1067w" /></a></p>
<p>這天晚餐也是沒安排，本來想說去超市買東西吃就好，結果走著走著經過一間<a href="https://www.takahasi.co.jp/yakiniku/">網走啤酒的燒肉店</a>好像超吸引人，可是完全沒位子，真是可惜，有安排來網走的人可以考慮定個位。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53927398007/" title="網走 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53927398007_4ff406d76a_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="網走" srcset="https://live.staticflickr.com/65535/53927398007_4ff406d76a_b.jpg 1024w, https://live.staticflickr.com/65535/53927398007_98cfbac5e9_h.jpg 1600w" /></a></p>
<p>隔天早上的行程就是定番的博物館網走監獄了，我當然是因為黃金神威的關係，不過來之前就聽說小朋友會很喜歡，結果，沒想到，是真的！！！我到現在還是不理解。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53935103910/" title="博物館網走監獄 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53935103910_8ee2d82e8c_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="博物館網走監獄" srcset="https://live.staticflickr.com/65535/53935103910_8ee2d82e8c_b.jpg 1024w, https://live.staticflickr.com/65535/53935103910_073878ba72_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53934987264/" title="博物館網走監獄 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53934987264_1ed7b4374a_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="博物館網走監獄" srcset="https://live.staticflickr.com/65535/53934987264_1ed7b4374a_b.jpg 1024w, https://live.staticflickr.com/65535/53934987264_d29a6ea569_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53933750362/" title="博物館網走監獄 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53933750362_f04b599f09_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="博物館網走監獄" srcset="https://live.staticflickr.com/65535/53933750362_f04b599f09_b.jpg 1024w, https://live.staticflickr.com/65535/53933750362_ddcfb3677a_h.jpg 1600w" /></a></p>
<p>逃獄王白鳥由榮</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53934655116/" title="博物館網走監獄 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53934655116_4c82771457_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="博物館網走監獄" srcset="https://live.staticflickr.com/65535/53934655116_4c82771457_b.jpg 1024w, https://live.staticflickr.com/65535/53934655116_c4123a582c_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53935103455/" title="博物館網走監獄 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53935103455_415bf7fa6f_b.jpg" intrinsicsize="683x1024" width="600" height="900" alt="博物館網走監獄" srcset="https://live.staticflickr.com/65535/53935103455_415bf7fa6f_b.jpg 683w, https://live.staticflickr.com/65535/53935103455_150e8449e2_h.jpg 1067w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53934986579/" title="博物館網走監獄 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53934986579_b6ea58690b_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="博物館網走監獄" srcset="https://live.staticflickr.com/65535/53934986579_b6ea58690b_b.jpg 1024w, https://live.staticflickr.com/65535/53934986579_de5c993439_h.jpg 1600w" /></a></p>
<p>離開監獄博物館後，就要開始往西回札幌方向了，往西回程的第一站是旭川，這一天也是要開車很久，不過還特別有繞去北見神社買えぞみくじ，到旭川後先跑去 BigBan 二手店逛一下，超大，照片都看不到另外一頭了。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53934894348/" title="Recycle shop Bigban Asahikawa Miyamae Shop by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53934894348_d61287eb76_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Recycle shop Bigban Asahikawa Miyamae Shop" srcset="https://live.staticflickr.com/65535/53934894348_d61287eb76_b.jpg 1024w, https://live.staticflickr.com/65535/53934894348_9b43f05180_h.jpg 1600w" /></a></p>
<p>還有很多漫畫二手書，可惜我現在實體書買很少了：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53934986489/" title="Recycle shop Bigban Asahikawa Miyamae Shop by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53934986489_1f785296de_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Recycle shop Bigban Asahikawa Miyamae Shop" srcset="https://live.staticflickr.com/65535/53934986489_1f785296de_b.jpg 1024w, https://live.staticflickr.com/65535/53934986489_74048fe412_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53933749017/" title="Recycle shop Bigban Asahikawa Miyamae Shop by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53933749017_8c1ff45d7d_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Recycle shop Bigban Asahikawa Miyamae Shop" srcset="https://live.staticflickr.com/65535/53933749017_8c1ff45d7d_b.jpg 1024w, https://live.staticflickr.com/65535/53933749017_6619abe6c8_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53935103755/" title="Recycle shop Bigban Asahikawa Miyamae Shop by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53935103755_e29b68efa0_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Recycle shop Bigban Asahikawa Miyamae Shop" srcset="https://live.staticflickr.com/65535/53935103755_e29b68efa0_b.jpg 1024w, https://live.staticflickr.com/65535/53935103755_d595a8444a_h.jpg 1600w" /></a></p>
<p>然後第八天晚上是住旭川JR酒店，這間也是很方便，一樓就是 AEON 超市，只是我那天沒注意到有超市，而且因為 AEON 商場營業到晚上九點的關係就急著隨便吃了晚餐，但是其實一樓的 AEON 超市有到晚上十點，如果有先搞清楚就會直接去超市就會改變一下行程了，不過可能變成兩餐都吃超市。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53934653256/" title="旭川JR酒店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53934653256_406393c677_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="旭川JR酒店" srcset="https://live.staticflickr.com/65535/53934653256_406393c677_b.jpg 1024w, https://live.staticflickr.com/65535/53934653256_cf94c6815a_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53936999702/" title="旭川JR酒店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53936999702_af7031294d_b.jpg" width="1024" height="683" alt="旭川JR酒店" srcset="https://live.staticflickr.com/65535/53936999702_452f4ecb0a_k.jpg 2x" /></a></p>
<p>超市蠻好逛的，整面的果醬：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53938357920/" title="AEON 旭川站前店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53938357920_815e0d3915_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="AEON 旭川站前店" srcset="https://live.staticflickr.com/65535/53938357920_815e0d3915_b.jpg 1024w, https://live.staticflickr.com/65535/53938357920_7b53c434bb_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53937903521/" title="AEON 旭川站前店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53937903521_8e804d7f52_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="AEON 旭川站前店" srcset="https://live.staticflickr.com/65535/53937903521_8e804d7f52_b.jpg 1024w, https://live.staticflickr.com/65535/53937903521_4cde401230_h.jpg 1600w" /></a></p>
<p>有經過本店但是沒進去的柳月（不過有在小樽的店光顧吃冰）：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53936999917/" title="AEON 旭川站前店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53936999917_7527da6cd4_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="AEON 旭川站前店" srcset="https://live.staticflickr.com/65535/53936999917_7527da6cd4_b.jpg 1024w, https://live.staticflickr.com/65535/53936999917_37c9165ad6_h.jpg 1600w" /></a></p>
<p>第九天開始請見 [Part 3][part-3]</p>
<p>[part-3]&quot;https://blog.othree.net/log/2025/12/06/2024-hokkaido-3/</p>
]]></description>
<link>https://blog.othree.net/log/2025/12/05/2024-hokkaido-2/</link>
<guid>https://blog.othree.net/log/2025/12/05/2024-hokkaido-2/</guid>
<category>diary</category>
<pubDate>Fri, 05 Dec 2025 12:06:57 +0800</pubDate>
</item>

<item>
<title>2024 北海道 Part 1</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53919484816/" title="Lake Hill Farm by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53919484816_335a4b0799_b.jpg" width="1024" height="683" alt="Lake Hill Farm" srcset="https://live.staticflickr.com/65535/53919484816_ad27ac44db_k.jpg 2x" /></a></p>
<p>去年安排了一趟北海道的旅行，主要的目標是吃吃，沒有特別想獨立抽出來的分享的部分，所以就分幾篇貼照片加流水帳紀錄一下吧。行程一開始的規劃大致上如下：</p>
<pre><code>Day # Trip 
16  1 小樽
17  2 小樽
18  3 洞爺湖
19  4 登別
20  5 十勝川温泉
21  6 阿寒湖
22  7 網走
23  8 旭川
24  9 富良野
25 10 札幌
26 11 札幌
27 12 札幌
28 13 札幌
29 14 家
</code></pre>
]]><![CDATA[<p>基本流程就是新千歲進出，第一天到機場後直接火車搭到小樽，然後在那邊住兩晚後租車開始繞一圈，最後回到札幌還車，然後三四天市區行程，最後一天就去機場。接下來就來介紹這趟旅程吧：</p>
<p>第一天到新千歲機場後，稍事整理之後，就去搭乘函館本線直奔小樽，過札幌之後火車路線基本上是很靠近海邊的，中間還經過一個朝里站，車站本身古色古香之外，海景也很不錯，而且我還發現有些日本人特別在這站下車，回來查了一下，果然是個<a href="https://medium.com/@sceneryguardian/%E4%BD%8D%E5%9C%A8%E5%8C%97%E6%B5%B7%E9%81%93%E5%B0%8F%E6%A8%BD-%E5%A4%A7%E6%B5%B7%E6%97%81%E7%9A%84%E6%B5%AA%E6%BC%AB-%E6%9C%9D%E9%87%8C%E9%A7%85-6b486c46f9f9">小有名氣的車站</a>，冬天看起來很漂亮，不過我們搬著行李也不可能跑下去，所以我就是特別拍下車站名稱而已：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53912781632/" title="北海道 朝里 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53912781632_91dc66e9df_b.jpg" width="1024" height="683" alt="北海道 朝里" srcset="https://live.staticflickr.com/65535/53912781632_3e3bc8d824_k.jpg 2x" /></a></p>
<p>然後之後就到達小樽了，其實我上次大約十年前來北海道時，就有來小樽，當時是和我媽跟團，雖然停留時間沒很久但是就已經很喜歡這邊了，所以這次特別安排在這邊住兩天，還住比較貴的 Nord 小樽酒店運河側房間。照片的小樽車站是晚上拍的，到達時天還沒黑：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53913666876/" title="小樽市 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913666876_7edb451640_b.jpg" width="1024" height="683" alt="小樽市" srcset="https://live.staticflickr.com/65535/53913666876_420215e72c_k.jpg 2x" /></a></p>
<p>運河旁的 Nord 酒店，很顯眼：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53914019429/" title="Nord 小樽酒店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914019429_35939d5377_b.jpg" width="1024" height="683" alt="Nord 小樽酒店" srcset="https://live.staticflickr.com/65535/53914019429_92a7e9bbe3_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53912782017/" title="Nord 小樽酒店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53912782017_d35d7ff825_b.jpg" width="1024" height="683" alt="Nord 小樽酒店" srcset="https://live.staticflickr.com/65535/53912782017_466af6a50b_k.jpg 2x" /></a></p>
<p>Nord 小樽酒店位置很好，車站走的到的位置，又在運河出名那一個區段的其中一邊的大路口，不過河加海景沒有讓人很驚艷到，加上這幾天的活動路線都會在晚上跑去車站對面的唐吉訶德，後來覺得其實住在車站對面的 Dormy Inn 似乎也不錯。</p>
<p>第一天沒去有名的堺町通り商店街，就是附近簡單繞繞，去找晚餐而已，晚餐就吃有名的<strong>若鶏時代 なると 本店</strong>：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53914115285/" title="若鶏時代 なると 本店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914115285_c93f3d7cdb_b.jpg" width="1024" height="683" alt="若鶏時代 なると 本店" srcset="https://live.staticflickr.com/65535/53914115285_9dfec8150d_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53913666831/" title="若鶏時代 なると 本店 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913666831_4cf9c0ce50_b.jpg" width="1024" height="683" alt="若鶏時代 なると 本店" srcset="https://live.staticflickr.com/65535/53913666831_e1934b27b0_k.jpg 2x" /></a></p>
<p>食物還不差，可以體驗看看，小可惜是當時不知道他們有自己的可樂，好像也是名物。飯後就去唐吉訶德逛了一下然後回飯店睡覺，接著隔天早餐，其實應該說這兩天的早餐都在 Komeda 咖啡解決的：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53913667126/" title="小樽市 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913667126_e5dcef0e01_b.jpg" width="1024" height="683" alt="小樽市" srcset="https://live.staticflickr.com/65535/53913667126_e67e0317fc_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53913667171/" title="小樽市 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913667171_053cefbda6_b.jpg" width="1024" height="683" alt="小樽市" srcset="https://live.staticflickr.com/65535/53913667171_83e5c9c03b_k.jpg 2x" /></a></p>
<p>在店內還翻到一本雜誌介紹了東京迪士尼樂園的票價變化：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53915942340/" title="小樽 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915942340_98ba7399b7_b.jpg" width="1024" height="683" alt="Tokyo Disney Land Ticket Price" srcset="https://live.staticflickr.com/65535/53915942340_f5d7603003_k.jpg 2x" /></a></p>
<p>吃完早餐後就去旁邊從倉庫改成的<a href="https://www.city.otaru.lg.jp/docs/2020111400122/"><strong>小樽市総合博物館 運河館</strong></a>參觀，這博物館的主題很明確，就是介紹小樽市的歷史和週邊的生態，參觀後才知道其實小樽是北海道開發初期時重要的港口，運河就是當時為了運貨而修建的，可以看到很多歷史資料、地圖、文物等：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53913667351/" title="小樽市総合博物館 運河館 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913667351_2fe0f263e0_b.jpg" width="1024" height="683" alt="小樽市総合博物館 運河館" srcset="https://live.staticflickr.com/65535/53913667351_1826cce92d_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53913667606/" title="小樽市総合博物館 運河館 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913667606_276f22eceb_b.jpg" width="1024" height="683" alt="小樽市総合博物館 運河館" srcset="https://live.staticflickr.com/65535/53913667606_23104315d5_k.jpg 2x" /></a></p>
<p>博物館外觀，靠近這一半邊現在沒使用，中間紅磚的是商店，博物館是比較遠的那一半：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53913666986/" title="小樽市 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913666986_b909ca9ea6_b.jpg" width="1024" height="683" alt="小樽市" srcset="https://live.staticflickr.com/65535/53913666986_deffb6efac_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53914019379/" title="小樽市 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914019379_5286d1e455_b.jpg" width="1024" height="683" alt="小樽市" srcset="https://live.staticflickr.com/65535/53914019379_0e2473ca2a_k.jpg 2x" /></a></p>
<p>還有就是在北海道真的很容易看到黃金神威的海報：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53914116350/" title="小樽市総合博物館 運河館 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914116350_9c1f9611f9_b.jpg" width="1024" height="683" alt="小樽市総合博物館 運河館" srcset="https://live.staticflickr.com/65535/53914116350_62cce54e23_k.jpg 2x" /></a></p>
<p>接著就去運河和小樽<a href="https://otaru-sakaimachi.com/"><strong>堺町通り商店街</strong></a>了：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53914020959/" title="小樽運河 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914020959_06fdbb3211_b.jpg" width="1024" height="683" alt="小樽運河" srcset="https://live.staticflickr.com/65535/53914020959_0de506b1b8_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53912783577/" title="LeTAO by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53912783577_e9c2bdeb1b_b.jpg" width="1024" height="683" alt="LeTAO" srcset="https://live.staticflickr.com/65535/53912783577_7b7f394f02_k.jpg 2x" /></a></p>
<p>堺町通是我上次就非常喜歡的點，只是那時候跟團，時間很短，根本無法好好逛，只有逛了六花亭、音樂盒和北一硝子，這次終於可以慢慢的從頭走到尾了，非常開心。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53912783177/" title="小樽堺町通り商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53912783177_6c86000cf2_b.jpg" width="1024" height="683" alt="小樽堺町通り商店街" srcset="https://live.staticflickr.com/65535/53912783177_bb00b81072_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53913668391/" title="小樽堺町通り商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913668391_7c86e90485_b.jpg" width="1024" height="683" alt="小樽堺町通り商店街" srcset="https://live.staticflickr.com/65535/53913668391_47d1961cda_k.jpg 2x" /></a></p>
<p>這次沒吃到的雪印パーラー：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53912783367/" title="小樽市 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53912783367_57a4e42101_b.jpg" width="1024" height="683" alt="小樽市" srcset="https://live.staticflickr.com/65535/53912783367_c41df37c5e_k.jpg 2x" /></a></p>
<p>午餐的万次郎：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53913917658/" title="万次郎 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913917658_1c2a711686_b.jpg" width="1024" height="683" alt="万次郎" srcset="https://live.staticflickr.com/65535/53913917658_ad6a780c71_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53914019299/" title="万次郎 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914019299_8501b877b8_b.jpg" width="1024" height="683" alt="万次郎" srcset="https://live.staticflickr.com/65535/53914019299_e3d8286a24_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53914116755/" title="万次郎 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914116755_36a543ff18_b.jpg" width="1024" height="683" alt="万次郎" srcset="https://live.staticflickr.com/65535/53914116755_b24e9108df_k.jpg 2x" /></a></p>
<p>各個漂亮的建築：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53912781217/" title="小樽市 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53912781217_f9ddbf93c8_b.jpg" width="1024" height="683" alt="小樽市" srcset="https://live.staticflickr.com/65535/53912781217_5fe64d6545_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53912783577/" title="LeTAO by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53912783577_e9c2bdeb1b_b.jpg" width="1024" height="683" alt="LeTAO" srcset="https://live.staticflickr.com/65535/53912783577_7b7f394f02_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53913668851/" title="北菓楼 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913668851_e6eb92c95e_b.jpg" width="1024" height="683" alt="北菓楼" srcset="https://live.staticflickr.com/65535/53913668851_3747118ae6_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53913915488/" title="小樽堺町通り商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913915488_27866a47e8_b.jpg" width="1024" height="683" alt="小樽堺町通り商店街" srcset="https://live.staticflickr.com/65535/53913915488_356213e5b7_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53914021859/" title="小樽堺町通り商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914021859_620638c95d_b.jpg" width="1024" height="683" alt="小樽堺町通り商店街" srcset="https://live.staticflickr.com/65535/53914021859_40d6033596_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53914022124/" title="小樽堺町通り商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914022124_d33049d7a5_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="小樽堺町通り商店街" srcset="https://live.staticflickr.com/65535/53914022124_d33049d7a5_b.jpg 1024w, https://live.staticflickr.com/65535/53914022124_6267122cca_h.jpg 1600w" /></a></p>
<p>之後走回旅館休息一陣子後，晚餐出去覓食，途中不小心經過北海道毛巾株式會社，一下子<a href="https://www.flickr.com/photos/othree/53946729650/in/album-72177720319451194">就買了好</a><a href="https://www.flickr.com/photos/othree/53946532593/in/album-72177720319451194">幾千日幣</a>：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53912784497/" title="北海道タオル株式會社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53912784497_01279fe46e_b.jpg" width="1024" height="683" alt="北海道タオル株式會社" srcset="https://live.staticflickr.com/65535/53912784497_cf965772a0_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53914118010/" title="北海道タオル株式會社 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914118010_6569133e79_b.jpg" width="600" height="900" alt="北海道タオル株式會社" srcset="https://live.staticflickr.com/65535/53914118010_3a7565d521_k.jpg 2x" /></a></p>
<p>晚餐吃<strong>屋台村紅磚橫丁</strong>的<a href="https://tabelog.com/hokkaido/A0106/A010601/1031227/"><strong>炭す Grill</strong></a>：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53914022544/" title="炭すグリル by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914022544_30e98de9ed_b.jpg" width="1024" height="683" alt="炭すグリル" srcset="https://live.staticflickr.com/65535/53914022544_a196469b77_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53914118155/" title="炭すグリル by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914118155_d477b5fc9b_b.jpg" width="1024" height="683" alt="炭すグリル" srcset="https://live.staticflickr.com/65535/53914118155_dabb88d8fb_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53913669811/" title="炭すグリル by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913669811_8c66919699_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="炭すグリル" srcset="https://live.staticflickr.com/65535/53913669811_8c66919699_b.jpg 1024w, https://live.staticflickr.com/65535/53913669811_f18f1b01ba_h.jpg 1600w" /></a></p>
<p>然後一樣亂逛，去唐吉珂德後就回旅館了：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53913915823/" title="小樽都通り商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913915823_89c4892138_b.jpg" width="1024" height="683" alt="小樽都通り商店街" srcset="https://live.staticflickr.com/65535/53913915823_f21d360b6a_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53914118280/" title="小樽都通り商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914118280_7e28eb54c7_b.jpg" width="1024" height="683" alt="小樽都通り商店街" srcset="https://live.staticflickr.com/65535/53914118280_d12c61bedd_k.jpg 2x" /></a></p>
<p>地方的動漫畫專門店：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53913666491/" title="小樽都通り商店街 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53913666491_82279641ab_b.jpg" width="1024" height="683" alt="小樽都通り商店街" srcset="https://live.staticflickr.com/65535/53913666491_4b80f41a7f_k.jpg 2x" /></a></p>
<p>第三天早上就要去租車開始移動了，本日目標是早上去余市酒廠、然後下午去洞爺湖那邊，晚上就是住在洞爺湖，余市酒廠因為沒有預約到參觀導覽，所以只能去後面的商店和博物館，結果因為不熟跑去正門，找停車位時發現旁邊旁邊有余市宇宙紀念館，剛好也在他們的休息站旁邊，這個休息站超小的名稱很特別叫： <strong>道の駅 スペース・アップルよいち</strong> （太空蘋果）。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53915744628/" title="余市宇宙紀念館 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915744628_d0580e906f_b.jpg" width="1024" height="683" alt="余市宇宙紀念館" srcset="https://live.staticflickr.com/65535/53915744628_2ffb47d096_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53915943505/" title="余市宇宙紀念館 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915943505_28e31bdfa4_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="余市宇宙紀念館" srcset="https://live.staticflickr.com/65535/53915943505_28e31bdfa4_b.jpg 1024w, https://live.staticflickr.com/65535/53915943505_ded267d6c6_h.jpg 1600w" /></a></p>
<p>小孩看到<strong>宇宙</strong>自然就不受控制，結果花了一個多小時在裡面，展品沒特別亮眼，但是打發小孩是蠻不錯的，會在這邊有一個宇宙紀念館，其實是因為日本第一次上太空的太空人之一的<a href="https://ja.wikipedia.org/wiki/%E6%AF%9B%E5%88%A9%E8%A1%9B">毛利衛</a>是余市出身的，所以比較像是地方的資金營運的，很多展品是手工製作的，一年還有三次特別的紙模型製作教學活動。</p>
<p>參觀完宇宙紀念館，因為已經中午就先跑去吃午餐了，吃的是<a href="https://www.instagram.com/kakizakishoten/">柿崎商店 海鮮工房</a>的海膽，可以看到我那碗要 4320+580JPY，其實單價還是不低，只是在台灣要吃到這樣的只會更貴，甚至是吃不到，所以還是吃下去了。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53915943620/" title="柿崎商店 海鮮工房 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915943620_8240d01137_b.jpg" width="1024" height="683" alt="柿崎商店 海鮮工房" srcset="https://live.staticflickr.com/65535/53915943620_5587627e9c_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53950368542/" title="柿崎商店 海鮮工房 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53950368542_d984380166_b.jpg" width="600" height="800" alt="柿崎商店 海鮮工房" srcset="https://live.staticflickr.com/65535/53950368542_51839c974f_k.jpg 2x" /></a></p>
<p>飯後在樓下商店逛一逛，然後就到余市酒廠的博物館和商店，買了些工廠限定的商品和酒回去當伴手禮：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53915843679/" title="余市蒸餾所 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915843679_03a331aaf1_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="余市蒸餾所" srcset="https://live.staticflickr.com/65535/53915843679_03a331aaf1_b.jpg 1024w, https://live.staticflickr.com/65535/53915843679_85f0698a43_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53915942875/" title="余市蒸餾所 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915942875_8c441d68dc_b.jpg" width="1024" height="683" alt="余市蒸餾所" srcset="https://live.staticflickr.com/65535/53915942875_0ba8bc0359_k.jpg 2x" /></a></p>
<p>接著就往第三天的目標洞爺湖前進了，途中特別小繞去「羊蹄のふきだし湧水」裝了些水。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53914605192/" title="羊蹄のふきだし湧水 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53914605192_0cc519b12e_b.jpg" width="1024" height="683" alt="羊蹄のふきだし湧水" srcset="https://live.staticflickr.com/65535/53914605192_2fbd4512dd_k.jpg 2x" /></a></p>
<p>這一天住的是在山上的 Hotel COCOA，風景很好但是一定要自駕才到的了，從溫泉街開上來大概要十五分，不過是全山路，我們有先跑去溫泉街那邊晚餐還有散步，太陽下山了才移動回來，日本的山路幾乎都沒路燈，雖然不是第一次開日本郊區的路，但還是真的蠻可怕，奉勸大家日本自駕要盡量避免晚上在郊區移動。</p>
<p>洞爺湖溫泉街那邊勉強找到一間有營業的餐廳，然後看夕陽看湖，之後逛了乃之風的開放區域（商店很大），之後就摸黑開車回旅館，到房間還剛好可以看到煙火。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53919485066/" title="洞爺湖 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53919485066_c72af57648_b.jpg" width="1024" height="683" alt="洞爺湖" srcset="https://live.staticflickr.com/65535/53919485066_090523112a_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53915942565/" title="洞爺湖 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915942565_53a5240bb9_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="洞爺湖" srcset="https://live.staticflickr.com/65535/53915942565_53a5240bb9_b.jpg 1024w, https://live.staticflickr.com/65535/53915942565_6a5093a92c_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53915942545/" title="洞爺湖 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915942545_785c52b9b8_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="洞爺湖" srcset="https://live.staticflickr.com/65535/53915942545_785c52b9b8_b.jpg 1024w, https://live.staticflickr.com/65535/53915942545_714a760364_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53915494061/" title="洞爺湖 煙火 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53915494061_d58fb4ed59_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="洞爺湖 煙火" srcset="https://live.staticflickr.com/65535/53915494061_d58fb4ed59_b.jpg 1024w, https://live.staticflickr.com/65535/53915494061_23f3245200_h.jpg 1600w" /></a></p>
<p>隔天早上天氣超好，去了 <a href="https://www.lake-hill.com/"><strong>Lake Hill Farm</strong></a> 吃吃買買和休息，這個地點可以看到超大的羊蹄山，沒錯，就是羊蹄山戰鬼裡面的那座。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53919937815/" title="Lake Hill Farm by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53919937815_87fee1131b_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="Lake Hill Farm" srcset="https://live.staticflickr.com/65535/53919937815_87fee1131b_b.jpg 1024w, https://live.staticflickr.com/65535/53919937815_760e8082b3_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53919484816/" title="Lake Hill Farm by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53919484816_335a4b0799_b.jpg" width="1024" height="683" alt="Lake Hill Farm" srcset="https://live.staticflickr.com/65535/53919484816_ad27ac44db_k.jpg 2x" /></a></p>
<p>之後去搭有珠山纜車，可以看到昭和新山的上面，從下面看很漂亮的山形，到上面一看就漏氣了：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53919738053/" title="有珠山纜車 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53919738053_245c82509c_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="有珠山纜車" srcset="https://live.staticflickr.com/65535/53919738053_245c82509c_b.jpg 1024w, https://live.staticflickr.com/65535/53919738053_0a2f6abb37_h.jpg 1600w" /></a></p>
<p>我沒去找到可以拍完整洞爺湖的位置，不過去另外一邊可以看到隔海對面的景色也是很棒：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53950368522/" title="有珠山纜車 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53950368522_4b0d411026_b.jpg" intrinsicsize="1024x243" width="1024" height="243" alt="有珠山纜車" srcset="https://live.staticflickr.com/65535/53950368522_4b0d411026_b.jpg 1024w, https://live.staticflickr.com/65535/53950368522_4d4d208766_h.jpg 1600w" /></a></p>
<p>之後回了洞爺湖邊的 HLAHAL 吃湯咖哩，這間風景好而且食物又好吃，大推！</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53918596787/" title="SoupCurry HLAHAL by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53918596787_cb6dc4f368_b.jpg" width="1024" height="683" alt="SoupCurry HLAHAL" srcset="https://live.staticflickr.com/65535/53918596787_77227fd9ed_k.jpg 2x" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53918595752/" title="SoupCurry HLAHAL by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53918595752_714a9a4447_b.jpg" width="1024" height="683" alt="SoupCurry HLAHAL" srcset="https://live.staticflickr.com/65535/53918595752_e4c33e4529_k.jpg 2x" /></a></p>
<p>飯後就出發前往第四天住的登別了，我們住的是登別第一滝本館，除了多種溫泉之外，還有游泳池可以讓小孩玩得很開心，而且裡面很大，到處逛逛也很有趣，後來晚餐也是在館內解決，其實本來是要吃溫泉街上的餐廳，但是只有一兩間而且剛好公休。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53919839649/" title="登別第一滝本館 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53919839649_53b7fb6ccc_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="登別第一滝本館" srcset="https://live.staticflickr.com/65535/53919839649_53b7fb6ccc_b.jpg 1024w, https://live.staticflickr.com/65535/53919839649_050da02cc1_h.jpg 1600w" /></a>
<a class="thumbnail" href="https://www.flickr.com/photos/othree/53919483746/" title="登別第一滝本館 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53919483746_8d19123245_b.jpg" intrinsicsize="683x1024" width="683" height="1024" alt="登別第一滝本館" srcset="https://live.staticflickr.com/65535/53919483746_8d19123245_b.jpg 683w, https://live.staticflickr.com/65535/53919483746_163d9b116f_h.jpg 1067w" /></a></p>
<p>第五天開始請見 Part 2 (WIP)</p>
]]></description>
<link>https://blog.othree.net/log/2025/12/04/2024-hokkaido-1/</link>
<guid>https://blog.othree.net/log/2025/12/04/2024-hokkaido-1/</guid>
<category>diary</category>
<pubDate>Thu, 04 Dec 2025 21:00:10 +0800</pubDate>
</item>

<item>
<title>HayatoS</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54951712597/" title="HayatoS by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54951712597_e6eee387c4_b.jpg" intrinsicsize="1024x683" width="1024" height="683" alt="HayatoS" srcset="https://live.staticflickr.com/65535/54951712597_e6eee387c4_b.jpg 1024w, https://live.staticflickr.com/65535/54951712597_bb0df07675_h.jpg 1600w" /></a></p>
<p>不知不覺就要將近一年沒有發文章了，其實我自我認知是我進入了一個有點長的鬱期，加上還有很多其他事務把我的空閒時間都用掉了，結果就都沒花心思在這塊，連帶的去年和今年的兩趟日本的遊記都沒寫完，第二趟的照片連整理都沒有，技術文章也是一些題目都放著沒進展，其實我這些狀況還沒改變，但是今天還是鼓起動力寫了文章，因為最近有朋友<a href="https://gnn.gamer.com.tw/detail.php?sn=296088">驟逝</a>。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54954672336/" title="HayatoS by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54954672336_6fa821d6dd_b.jpg" intrinsicsize="1024x726" width="1024" height="726" alt="HayatoS" srcset="https://live.staticflickr.com/65535/54954672336_6fa821d6dd_b.jpg 1024w, https://live.staticflickr.com/65535/54954672336_3d02718ddf_h.jpg 1600w" /></a></p>
<p>其實這一年身邊一直有些和死亡有牽連的消息和體驗，先是有一位朋友死門關前走了一遭，不過還好恢復很順利，不過我知道已經是事後了，而且他人不在台灣所以真的還沒什麼實感；接著在我暑假帶小孩出遊時，突然聽到在 HTC 時的前同事 Bingo 過世的消息，當下也是很震驚，我還記得共事時期他給人的形象是很健康開朗的陽光男孩，還是個會去衝浪的人，特別有印象的是有次我去日本買到了<a href="https://www.bu-den.com/">豐天商店</a>的衣服，結果他看到超喜歡，後來自己去日本買了超多件，幾乎每天都穿不同款上班。</p>
<p>接著我自己健檢的時候因為要作腸鏡胃鏡，結果我脹氣加退麻醉痛苦了兩三天，我是屬於退麻醉會非常不舒服的人，不舒服到連滑手機都沒辦法，滑一下頭就痛起來；然後脹氣不舒服這件事，我覺得很多人可能沒體會過，其實是可以不舒服到讓人生不如死的，我就曾經一次脹氣整天不舒服到去急診，後來打針強迫腸胃蠕動，這次則是知道原因但是只能等時間過去，只是時間很長，這兩三天的時間我大概有點體會到那種重病末期痛苦無法緩解想要求死解脫的心情，只是因為我知道我還會恢復，所以還能撐下去。</p>
<p>順便宣導一下，千萬不要對嘴巴或肛門灌氣，真的很容易會死人的，<a href="https://www.google.com/search?hl=zh&amp;q=%E7%81%8C%E6%B0%A3%20%E6%AD%BB%E4%BA%A1">新聞很多</a>。</p>
<p>然後就是最近的孩雅多學長過世的消息了，其實週一消息傳開當天我有點忙碌，不過還是看到兩位社團學長發了不知所以然的文，直到我當天忙的差不多才看到朋友轉貼 <a href="https://www.lordmi.com/">lordmi</a> 的 plurk 文才知道，當下也是不敢相信，因為週末前我才回他的文，然後過了一個週末就跟我說他已經過世了...</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54953778612/" title="Screenshot 2025-11-30 at 18-08-15 othree - Plurk by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54953778612_1b127f2526_b.jpg" intrinsicsize="1024x726" width="1024" height="726" alt="Screenshot 2025-11-30 at 18-08-15 othree - Plurk" srcset="https://live.staticflickr.com/65535/54953778612_1b127f2526_b.jpg 1024w, https://live.staticflickr.com/65535/54953778612_a63de3f563_h.jpg 1600w" /></a></p>
<p>接下來兩天，我大概就是只要閒下來就會想到這件事情，然後過幾天就找找看手上有沒有以前拍到他的照片，結果意外的少，一個原因是因為他也是會拿著相機到處跑的人，而我和他共同會拿相機出現的場合其實不多，我算是他畢業後才開始有相機玩，而且那時我還不太會想到要幫攝影師拍照（後來在研討會擔任攝影紀錄時我就會加減幫其他攝影師或是工作人員拍照），最後挑了第一張照片出來。</p>
<p>因為他是在我認識的人當中，對遊戲的熱情最高的人，畢業後去遊戲公司，甚至在大學時他並不是程式人，但是現在卻已經可以擔任遊戲程式了，而且一直都很關注遊戲業界的發展，我一直都有在看他轉貼的遊戲新聞，所以這幾天到現在，只要有牽扯到遊戲，不管是新作上市，有趣的新聞，甚至是自己要開遊戲來玩，都會覺得無限惋惜。</p>
<p>剛好在那幾天，我在看<a href="https://www.kadokawa.com.tw/products/9786264354318">縱使星辰殞落，妳仍在歌唱</a> 這本小說，很巧也是講到死亡的事情，其實我以前是不太能理解為何有些人會想要在死前，在世界上留下自己的痕跡，經過這一年的洗禮下來我或許比較能體會了，至少我目前的想法是，因為死亡不可避免（扣除在追求永生的那些人），所以會想讓自己的存在以其他形式留存，不過認真說真的很難，人只要不在了，就算能在歷史上留名，那名字也不太會對正在活上是上的人們產生什麼影響力，甚至是親近的人也必須為了在世上活著而不斷的做著每天的工作，無法只沉浸在緬懷故人，其實就算扣除內容是牽扯到死亡這件事之外，其實這本書另外一個主軸我覺得他也會有興趣，算是個我有想推薦給他的小說，真的是太讓人惋惜了。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54955094218/" title="縱使星辰殞落，妳仍在歌唱 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54955094218_c3dde1c0a0_b.jpg" intrinsicsize="692x1024" width="600" height="888" alt="縱使星辰殞落，妳仍在歌唱" srcset="https://live.staticflickr.com/65535/54955094218_c3dde1c0a0_b.jpg 692w, https://live.staticflickr.com/65535/54955094218_3f888bed30_h.jpg 1081w" /></a></p>
<p>最後想說的是，其實是想給還不到 40 歲的人看的，不過不知道讀者群裡面有多少比例就是，總之，就是如果有人跟你說「過 40 開始身體會明顯變差，身邊有人會開始離開。」他們說的是真的！把握時光！保持健康！</p>
]]></description>
<link>https://blog.othree.net/log/2025/11/30/hayatos/</link>
<guid>https://blog.othree.net/log/2025/11/30/hayatos/</guid>
<category>diary</category>
<pubDate>Sun, 30 Nov 2025 20:34:54 +0800</pubDate>
</item>

<item>
<title>鳥部製作所 廚房剪刀</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/23386402774/" title="# 鳥部製作所廚房剪刀 by othree, on Flickr"><img src="https://live.staticflickr.com/1454/23386402774_17a3e03165_b.jpg" width="1024" height="683" alt="九洲" srcset="https://live.staticflickr.com/1454/23386402774_dadda2abe8_k.jpg 2x" /></a></p>
<p>最近在研究九州行程，然後去翻以前去過的照片，看到十年前（2015）年時去九州順便從 Amazon 買的：鳥部製作所的廚房剪刀，這隻剪刀其實我現在還在用，品質很好，以前好像推薦過一次，現在十週年了值得再推薦一次，也順便又研究了一下現在到底該怎樣買。</p>
<p><a href="https://toribeseisakusho.hp.gogo.jp/pc/index.html">鳥部製作所</a>其實是以金屬加工出名的燕三条地方的工廠之一，產品品項不多，其中這隻廚房剪刀一直以來評價都很高，設計簡單俐落，而我當初挑選的條件其中一個就是要可以拆開來清洗，然後加上看起來很好看，就買下去了，結果真的不負期待，品質極佳，用到現在十年過去也沒感覺到有什麼老化跡象，當然，我每次使用後都會拆開清潔。</p>
<p>現在鳥部製作所網站上的定價雖然是寫 ¥5500，不過在 Amazon 上是找不到這個價位的（在樂天也是），不確定是產地價和通路價差異，還是這兩年貨幣貶值加上通膨已經調價了但是網站沒更新，然後現在在 Amazon JP 上找到我判斷比較可靠的有兩個：</p>
<ul>
<li><a href="https://www.amazon.co.jp/dp/B001GU01BG">ASIN:B001GU01BG</a></li>
<li><a href="https://www.amazon.co.jp/dp/B0C5X5CWT2">ASIN:B0C5X5CWT2</a></li>
</ul>
<p>第一個賣 ¥7700 是標準版本，第二個賣 ¥8800 則是拋光過變亮面的版本，兩個賣家不一樣，第一個是<a href="https://www.muranokajiya.jp/">村の鍛冶屋</a>、第二個則是 <a href="https://www.n-nagao.co.jp/">NAGAO</a>，兩家都是燕三条地方的公司經營的，看起來商譽都還 ok，至於我十年前買的時候，應該是 Amazon 自己的貨的樣子，價格則只有兩千多日圓，後悔當時沒多買幾把啊 🥲。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54228184290/" title="鳥部製作所廚房剪刀 價格歷史走勢 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54228184290_9cecef1775_b.jpg" width="1024" height="600" alt="鳥部製作所廚房剪刀 價格歷史走勢" srcset="https://live.staticflickr.com/65535/54228184290_3fa7f502c2_k.jpg 2x" /></a></p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/23906388692/" title="# 鳥部製作所廚房剪刀 by othree, on Flickr"><img src="https://live.staticflickr.com/1564/23906388692_ff76a0fe21_b.jpg" width="1024" height="683" alt="九洲" srcset="https://live.staticflickr.com/1564/23906388692_e662f6b6b4_k.jpg 2x" /></a></p>
]]></description>
<link>https://blog.othree.net/log/2025/01/05/toribe-kitchen-scissor/</link>
<guid>https://blog.othree.net/log/2025/01/05/toribe-kitchen-scissor/</guid>
<category>buy</category>
<pubDate>Sun, 05 Jan 2025 17:01:54 +0800</pubDate>
</item>

<item>
<title>世界上最透明的故事</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54220544345/" title="世界でいちばん透きとおった物語 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54220544345_898989eb7f_b.jpg" width="1024" height="671" alt="世界でいちばん透きとおった物語" srcset="https://live.staticflickr.com/65535/54220544345_1973b3bab6_k.jpg 2x" /></a></p>
<p>（圖是日本的四個季節不同版本的封面）</p>
<p>可能會捏到的感想！上市一陣子了，本來是想要找個好日子幫書拍照後才發表，不過實在拖的有點久了，剛好又找到上面那張圖，就決定拿來用了。</p>
<p>總之還是多一行警告一下XD！</p>
]]><![CDATA[<p>其實因為宣傳關鍵字的關係，加上最近有不少日本印刷品有用到這特性（像是獵人、還有報紙廣告），我一拿到書就發現其中奧妙了，不過其實這個奧妙讓我閱讀時的體驗，也確確實實的和其他紙書不一樣，簡單的形容，就是視野內的畫面特別乾淨、明亮，不過這些形容又太過強烈，思考了一陣子，確實用「透明」來形容非常適合，甚至我覺的作者杉井光在撰寫時，文句的挑選可能也有為了呼應「透明」而下了不少功夫，結果就是這個「透明」的主軸其實延伸到各個地方：故事主軸、文章風格、出版形式、閱讀體驗都有，要稱為世界上最透明確實當之無愧。</p>
<p>然後仔細研究一下發現日版是一年前出版的了，所以最近常見日本的印刷出版品利用這特性或許就是這本書帶起的風潮。</p>
<p>回到閱讀體驗這件事上，其實在我意識到這件事情之後，我聯想起作者另外一本我剛好前陣子才在看的輕小說「樂園 NOISE」，在第一集第一段就有提到女主角當時追求的是現實上不可能存在的無雜音的音樂，男主角後來用電腦生成無雜音的音源讓女主角實際有機會聽到自己演奏出的無雜音的音樂，要知道作者描寫音樂的文字是評價很高的，但是這邊卻完全沒有無雜音音樂的形容（一部分是因為用耳機主角自己沒聽到），但是其實也給讀者一個懸念，好想聽聽看比比看所謂無雜音的音樂啊。</p>
<p>或許只是想太多，不過或許，世界上最透明的故事 那個奧妙的緣起其實就從樂園 NOISE 提到的那個無雜音音樂，只是他用不是音樂的方式傳達給讀者了。</p>
<p>最後想談談這本書本身，「光是能出版，就稱得上是奇蹟了。」這件事，要我形容的話，這本書就像是我們現在看的一些文藝復興時代的藝術品，在工藝上達到一個時代登峰造極之下的產物，未來的人看到只會覺得「太精緻，做的太巧妙了吧，難以想像用現在的人力要做出一樣的東西」一般這樣，足以作為代表紙書時代的一本書。</p>
<p>補一些連結：</p>
<ul>
<li><a href="https://www.plurk.com/p/3gc3s9xpk4">編輯的介紹文</a>，當時我是因為看到這篇才下單的，順便補了幾本放購物車內好久的書，剛好在缺貨前下單完成</li>
<li><a href="https://www.plurk.com/p/3gbsqa12sa">譯者的介紹文</a></li>
</ul>
<p>最後列上人名
作者：杉井光
譯者：簡捷
責編：菜承歡</p>
<p>突然想到漏了一件事，這就一定要看過才知道了，就是那個最後那個詞，我以為是謝謝你來到這個世上之類的溫馨想法，結果看到有人說是謝謝你給我這個點子，思考一番後覺得後者比較對，因為對兩個人來說都是成立的想法，不過就比較冷血一點就是。</p>
<p>btw 作者收到中文版，還有確定要出續集了。</p>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">世界でいちばん透きとおった物語、台湾版の見本誌をいただきました。<br />完璧な形で作っていただいたこと、ただただ感謝と敬服です。 <a href="https://t.co/PD2GP2eq6j">pic.twitter.com/PD2GP2eq6j</a></p>-- 杉井光 (@hikarus225) <a href="https://twitter.com/hikarus225/status/1844211562472669576?ref_src=twsrc%5Etfw">October 10, 2024</a></blockquote>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">『世界でいちばん透きとおった物語2』、来年の1月末発売です。続編は今年中に出す、と各所で言っておきながら原稿が遅れまくって今年中に間に合いませんでした。申し訳ない......<a href="https://t.co/Xq3E1CJsOJ">https://t.co/Xq3E1CJsOJ</a></p>-- 杉井光 (@hikarus225) <a href="https://twitter.com/hikarus225/status/1860870617563832441?ref_src=twsrc%5Etfw">November 25, 2024</a></blockquote>
<script async="async" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
]]></description>
<link>https://blog.othree.net/log/2024/12/23/transparent-story/</link>
<guid>https://blog.othree.net/log/2024/12/23/transparent-story/</guid>
<category>books</category>
<pubDate>Mon, 23 Dec 2024 17:36:17 +0800</pubDate>
</item>

<item>
<title>InnoDB 修復紀錄</title>
<description><![CDATA[<p>前兩天意外發現 blog 的資料庫（MariaDB）死掉起不來了，加上我剛好沒有新的備份，所以這兩天就花了些時間慢慢修復，總之首先，我根據一開始的錯誤訊息大概搜尋了一下，發現說可以把 <code>/var/lib/mysql</code> 目錄下的 <code>ibdata1</code>、<code>ib_logfile0</code>、<code>ib_logfile1</code>、<code>aria_log_control</code> 等檔案砍掉試試看（當時完全不知道是什麼），於是我簡單備份後就砍掉重啟試試看，結果 MariaDB 真的就復活了，只是我接著要跑 <code>mysqldump</code> 時就出現其他的錯誤：</p>
<pre><code>mariadb-dump: Got error: 1932: &quot;Table 'blog.mt_asset' doesn't exist in engine&quot; when using LOCK TABLES
</code></pre>
<p>而且因為我的 shell script 太簡單，沒檢查結果，這錯誤還把我的本地備份覆蓋掉了😂，總之搜尋研究一陣子之後，發現這問題是因為 <code>mt_asset</code> 資料表是用 InnoDB，然後 InnoDB 有些資訊是集中在 <code>ibdata1</code> 的，不能只靠資料庫目錄下的 <code>mt_asset.*</code> 檔案來還原，結果我的作法就是把備份的 <code>ibdata1</code> 還原回來，試著在 <code>my.cnf</code> 裡加上:</p>
<pre><code>[mysql]
innodb_force_recovery = 1
</code></pre>
<p>如果用 service 的話就要放到 <code>[mysqld]</code> 區段內，數值從 <code>1</code> 試到 <code>6</code>，然後 su 到 <code>mysql</code> 這個帳號下手動執行 <code>mariadbd</code> 指令來啟動資料庫，其實第一次嘗試是失敗的，到第二次試到 <code>6</code> 時才成功，然後趕快跑 <code>mysqldump</code>，結果有成功跑完，不過因為之前 <code>mt_asset</code> 有出過錯誤，我就認真檢查了一下 dump 出來的資料，結果果然， <code>mt_asset</code> 只有結構沒有資料，於是又檢查其它的 InnoDB 資料表的 dump 的輸出，結果是有的有資料有的沒有，不過由於資料本身應該還在，所以我接著嘗試用 <code>mariadb</code> 命令列模式進去 DB 手動 SELECT <code>mt_asset</code> 的資料，發現真的都還在，不知道為何 dump 會失敗，不過總之我就試試看死馬當活馬醫，用 mysqldump 匯出單一個資料表的資料：</p>
<pre><code>mariadb-dump -u user_name -p db_name mt_asset &gt; blog.mt_asset.sql
</code></pre>
<p>結果，竟然成功匯出了，於是就手工把每個有問題的 InnoDB 匯出，然後手工整合回去全資料庫的 dump 出來的 sql 檔案，有些資料表還是沒資料，不確定是不是本來就沒有的，不過看起來也不是重要資料，不影響 MovableType 運作，所以就不管。</p>
<p>然後因為我好像用不太到 InnoDB 的優點，加上發生過一次這種事情，冷備份比較簡單的 MyISAM 還是比較適合我，就順手都改成 MyISAM 資料表；同時，又想到因為我的 CHARSET 還是用 utf8，所以一直都還不能用 emoji，之前也有想過要換到 utf8mb4，只是一直沒動手，就趁機一起手工改了 <code>mt_entry</code> 表下的幾個相關的欄位：</p>
<pre><code>`entry_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`entry_excerpt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`entry_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`entry_text_more` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
</code></pre>
<p>這樣大致上就把 sql 檔案準備好了，回到這次發生問題的原因，我推測是用 pacman 更新套件時，更新到 MariaDB 後，不知道為何造成 <code>ibdata1</code> 檔案損毀，一開始的錯誤訊息試有看到說某個檔案是 MariaDB 10.4.8 建立的，所以我是先退回 10.4.8 然後才進行上述的修正，還好<a href="https://blog.othree.net/log/2022/12/03/fix-my-archlinux/">上次已經操作過一次</a>了，之後為了避免再次有太久沒更新出事，就決定也要把 MariaDB 更新一下，所以其實是先更新最後才把 sql 檔案匯入的。</p>
<p>更新完把 <code>/var/lib/mysql</code> 目錄下的 <code>ibdata1</code>、<code>ib_logfile0</code>、<code>ib_logfile1</code> 都砍掉，重新建立資料庫後才匯入，還好一切順利，詳細的說明其實在 <a href="https://mariadb.com/kb/en/innodb-recovery-modes/">MariaDB 的 Knowledge Base</a> 也都有，最後就補上兩個我覺得很有幫助的文件：</p>
<ul>
<li><a href="https://mariadb.com/kb/en/mariadb-backups-overview-for-sql-server-users/#cold-backups-and-snapshots">Cold Backup</a>: 一樣是 MariaDB 的 Knowledge Base 的官方文件，有提到 InnoDB 要冷備份時要備份哪些檔案；</li>
<li><a href="https://web.archive.org/web/20210506133949/https://www.chriscalender.com/tag/innodb-error-tablespace-id-in-file/">Tag: InnoDB: Error: tablespace id in file</a>: 一篇說明如果這時候要直接還原 InnoDB 資料表的話要怎樣弄，非常麻煩（網站已死，所以是 Internet Archive 的）。</li>
</ul>
<p>另外補充，如果要在 MovableType 4.x 使用 emoji，除了資料庫欄位的設定外，還需要修改一點程式碼，詳見我的<a href="https://github.com/othree/movabletype/commit/4e5417baf1803d5cae9bfef3e153fa1243510ee2">修改紀錄</a> 🥳。</p>
]]></description>
<link>https://blog.othree.net/log/2024/12/22/innodb-recovery/</link>
<guid>https://blog.othree.net/log/2024/12/22/innodb-recovery/</guid>
<category>unix</category>
<pubDate>Sun, 22 Dec 2024 17:24:42 +0800</pubDate>
</item>

<item>
<title>onAutofill</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/54075332210/" title="Credit Card autofill by othree, on Flickr"><img src="https://live.staticflickr.com/65535/54075332210_2204a73894_b.jpg" width="1024" height="529" alt="Credit Card autofill" srcset="" /></a></p>
<p>在現在這個網路標準橫行的時代，要遇到還沒廣泛標準化的東西其實是越來越難了，不過我最近還是遇到了一個，那就是 autofill 的偵測。</p>
<p>首先要說的是，autofill（自動填入）和 autocomplete（自動補完）嚴格定義下是不一樣的，雖然都可以透過 <code>autocomplete</code> 來控制相關的行為，但是 autocomplete 其實只能算是 autofill 的一種，而我遇到的就是非 autocomplete 的，信用卡資料的自動填入，那問題在哪呢？</p>
<p>問題就是這種 autofill 發生時，瀏覽器不一定會觸發 <code>change/input</code> 事件，如果表單設計成自動檢查表單輸入，然後輸入都正確才讓人送出的話就會有使用體驗的問題發生，因為這種設計的欄位檢查通常就是綁在 <code>&lt;input&gt;</code> 的 <code>change/input</code> 事件上，結果就是如果瀏覽器自動填入，然後又沒觸發 <code>change/input</code> 事件，於是就不會執行到欄位檢查，表單也就會一直維持在無法送出的狀態，產生的副作用就是使用者體驗反而比按下送出按鈕才作表單檢查還要來的差。</p>
<p>那麼在 Web 標準中，<code>change</code> 事件應該何時觸發的定義是為何呢？在 <a href="https://www.w3.org/TR/html401/interact/scripts.html#adef-onchange">HTML 4.01</a> 是這樣寫的：</p>
<blockquote>
<p>The onchange event occurs when a control loses the input focus <em>and</em> its value has been modified since gaining focus. This attribute applies to the following elements: INPUT, SELECT, and TEXTAREA.</p>
</blockquote>
<p>按照古時候網路標準的規範，autofill 不是使用者和 DOM 之間的互動，沒有經過 focus blur，所以沒有觸發 change 事件也是合理，事實上也就是現在部分瀏覽器的行為；不過在現在的 <a href="https://html.spec.whatwg.org/multipage/input.html#common-input-element-events">HTML Living Standard</a> 是這樣寫的：</p>
<blockquote>
<p>The <code>change</code> event fires when the value is committed, if that makes sense for the control, or else when the control loses focus.</p>
</blockquote>
<p>觸發的時機除了失去 focus 時之外，還多了資料 commit（提交）時，變成兩種時機，而這邊的提交主要指的是像 <code>type=color</code> 或是 <code>type=date</code> 那種，瀏覽器有支援，有提供另外頁面內的小工具讓使用者方便挑選值的時候，使用者選好，瀏覽器更新值進入 <code>&lt;input&gt;</code> 的 value 的動作，那 autofill 更新值該算是 commit 嗎？其實文件內也是有講到的，就在同個章節的後面：</p>
<blockquote>
<p>When the user agent is to change an input element's value on behalf of the user (e.g. as part of a form prefilling feature), the user agent must queue an element task on the user interaction task source given the input element to first update the value accordingly, then fire an event named <code>input</code> at the <code>input</code> element, with the <code>bubbles</code> and <code>composed</code> attributes initialized to true, then fire an event named <code>change</code> at the <code>input</code> element, with the <code>bubbles</code> attribute initialized to true.</p>
</blockquote>
<p>這段就是說當瀏覽器代表使用者改變 input 的值時，也是要發一個 input 一個 change 事件，這段文字的重點在於 &quot;on behalf of the user&quot;，就是「代表使用者做事」，後面舉的例是 prefill 時，prefill 通常發生在 帳號/密碼 欄位，發生時間點又不太一樣，可能是在 render DOM 時就發生；不過根據文字解釋其實 autofill 應該也符合 &quot;on behalf of the user&quot;。</p>
<p>雖然 HTML 標準有規範了，但是現實世界總是不會這麼美好，不然也不會有這篇文章了，那麼現實世界是怎樣呢？我遇到的狀況就是有些瀏覽器是照著舊的規範，完全沒有事件，發現問題後我就上網搜尋一番之後發現，這問題其實已經很久了，早在 2010 年，<a href="http://twitter.com/avernet">@avernet</a> 就寫了一篇 <a href="https://avernet.blogspot.com/2010/11/autocomplete-and-javascript-change.html">Autocomplete and JavaScript Change Event</a>，紀錄了當年的這個問題，根據不同欄位、不同瀏覽器會有不同的行為，即使到了今天，也還是同樣情形，文章最後建議的解法也是很無奈的：</p>
<ol>
<li>關掉相關功能 <code>autocomplete=off</code></li>
<li>定時檢查</li>
</ol>
<p>總之就是讓人不喜歡的解法，那麼時至今日，有沒有比較好的方法呢？其實還真的有，而且蠻聰明的，<a href="https://klarna.com">Klarna</a> 的 Tommy Brunn 在 2016 年寫了 <a href="https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7">Detecting autofilled fields in Javascript</a> 一文介紹了這種方法，透過 CSS pseudo-class <code>:autofill</code> 和 CSS animation 配上 <code>animationStart</code> 事件，首先 CSS 這樣：</p>
<pre><code class="language-css">input:autofill {  
  animation-name: autofill;
  animation-duration: 500ms;
  animation-fill-mode: both;
}

@keyframes autofill {
  from {
    background: var(--color1);
  }
  to {
    background: var(--color2);
  }
}
</code></pre>
<p>然後 JS 監聽事件並確定動畫名稱沒錯，就可以做事了：</p>
<pre><code class="language-js">inputNode.addEventListener('animationstart', (event) =&gt; {  
  const { currentTarget, animationName } = event;
  
  if (animationName === 'autofill') {
    // do what ever you want, or
    // trigger `change` event
    currentTarget.dispatchEvent(new Event('change'));
    // trigger custom event
    currentTarget.dispatchEvent(new Event('autofill'));
  }  
}, false);
</code></pre>
<p>完全成為真的 event based，不用定時檢查了，不過缺點是要 CSS 搭配，不是純 JS 的方案，維護上比較麻煩一些，另外就是 Tommy Brunn 文章內用的是 <code>:--webkit-autofill</code>，但是現在完全可以用沒有 prefix 的 pseudo class 了。</p>
<p>以上的程式碼範例就可以處理好瀏覽器內建的自動填入事件，不過現實世界除了瀏覽器內建的自動填入，還有很多的第三方工具支援，像是各種 password manager: 1Password, LastPass, Dashlane 等，這些工具自動填入的行為又不太一樣，我確實有發現有其中一兩家的行為也是 value 會改變，但是不會有 input 和 change 事件，幸好這些工具都會加上各自自訂的 attribute，所以可以另外透過 observer 監看 attribute 的變化來判斷是否有相關的事件，目前我所知道有以下的 attributeName 可以檢查：</p>
<ul>
<li><code>data-dashlane-autofilled</code> Dashlane 的</li>
<li><code>data-com-onepassword-filled</code> 1Password 的</li>
<li><code>chrome-autofilled</code> iOS Chrome，超容易漏掉</li>
</ul>
<p>至於 LastPass 目前測試結果是不會有自訂的 attribute，但是會有 change 事件，所以也可以照常運作（不過相對的就完全沒有提供給使用者的視覺提示好像怪怪的）。</p>
<p>這篇內容大概就到這邊，雖然沒有提供很完整的程式碼，不過這些資訊應該很夠幫助其他人完成 autofill 事件的偵測了，其實這次弄信用卡資訊的輸入欄位真是費了不少心力，很多細節可以弄，也很多 domain knowledge（都靠 lib 搞定就是），真是想不到只是信用卡欄位也這麼多眉角。</p>
]]></description>
<link>https://blog.othree.net/log/2024/10/19/onautofill/</link>
<guid>https://blog.othree.net/log/2024/10/19/onautofill/</guid>
<category>script</category>
<pubDate>Sat, 19 Oct 2024 13:17:31 +0800</pubDate>
</item>

<item>
<title>Oklab Color Space</title>
<description><![CDATA[<p>2019 年的時候，寫過一篇文章介紹了 <a href="https://blog.othree.net/log/2019/03/18/lab-gradient/">Lab Gradient</a>，然後就沒特別關注相關發展，直到前幾天看到勞哥的推文提到 <a href="https://bottosson.github.io/posts/oklab/">Oklab</a> 這個色彩空間，而且瀏覽器已經原生支援了，我才發現原來網路標準的發展有跟上來，我也趁機多惡補了一些相關的知識。</p>
<blockquote class="twitter-tweet"><p lang="zh" dir="ltr">因為一些搜尋讓我今天才了解 oklch 這個色彩格式（或是色彩空間）的使用方法。這個色彩格式在 2023 年納入了幾乎所有現代瀏覽器，好奇查詢之下發現了作者的 blog 有寫為什麼要製作 Oklab 的原因與研究過程，以及詳細的討論過去 HSV 或 HSL 系的色彩空間到底有什麼問題，收穫滿滿。...</p># -- 勞哥 maylogger (@may_logger) <a href="https://twitter.com/may_logger/status/1812110985752420697?ref_src=twsrc%5Etfw">July 13, 2024</a></blockquote> <script async="async" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>在介紹 Oklab 前，先來介紹以前提到的 Lab 吧，其實它是國際照明委員會(International Commission on Illumination，簡稱 CIE)在 1976 年提出的色彩空間定義，全名是 CIELAB color space，或是簡寫為 L*a*b*，多加 <code>*</code> 為了避免混淆，Lab 其實是不正確的縮寫，不過這三個字母其實就是該顏色空間的三個軸：L 代表亮度、a 代表紅色到綠色間的位置、b 代表藍色到黃色間的位置，也就是 opponent color theory（又稱對比色理論或色覺對向論）的顏色組成，這個色彩空間的重點在它的座標比較符合人類對色彩的感知。</p>
<p>那 <a href="https://bottosson.github.io/posts/oklab/">Oklab</a> 又是什麼呢？它是 Björn Ottosson 在 2020 年底發表的一個新的色彩空間定義，他在文章內有詳細的說明為什麼會想要定義一個新的色彩空間，文內也列舉了現存的色彩空間的主要問題，其中 CIELAB 的問題就是在 predict hue （預測色相）有些問題，尤其是藍色附近，其實我一開始對於這個 predict 感到很疑惑，想說到底是什麼意思，後來看到另外一篇文章 <a href="https://raphlinus.github.io/color/2021/01/18/oklab-critique.html">An interactive review of Oklab</a>，文章一開始放的互動工具預設的漸層設定就是藍色到白色，然後一看就很明顯， CIELAB 的漸層色相跑一下就歪掉了變成偏紫色去了（random 按鈕可以按按看看其他色相都沒這樣嚴重），才了解到因為 CIELAB 是屬於人類感知的色彩空間，意思就是它的依歸其實是人類的感覺，所以需要從三維座標去<strong>推測</strong>人類實際上看到感覺到的顏色，數值上一樣的話就應該讓人感覺一致，而 Oklab 則是結構和 CIELAB 一樣，但是透過新的資料集來調整並解決前面提到的問題，而後在 2023，Oklab 進了 CSS Color Level 4 的草稿，主流瀏覽器現在也都已經支援。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53870474429/" title="CIELAB by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53870474429_b239243a3e_b.jpg" width="1024" height="484" alt="CIELAB" /></a></p>
<p>進 CSS Color 代表什麼意思呢？第一個當然就是可以用 <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/oklab"><code>oklab()</code></a> 函數來定義顏色了：</p>
<pre><code>oklab(40.1% 0.1143 0.045);
oklab(59.69% 0.1007 0.1191);
oklab(59.69% 0.1007 0.1191 / 0.5);
</code></pre>
<p>除了直接定義顏色之外，現在 CSS 也支援相對顏色（relative color）了：</p>
<pre><code>/* Relative values */
oklab(from green l a b / 0.5)
oklab(from #0000FF calc(l + 0.1) a b / calc(alpha * 0.9))
oklab(from hsl(180 100% 50%) calc(l - 0.1) a b)
</code></pre>
<p>這樣要只調整色相或是亮度都變得很簡單，或是也可以用 <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/oklch"><code>oklch()</code></a>，這樣色相（Hue）就更好挑選。</p>
<p>然後就是漸層了，現在的 CSS 漸層也支援使用不同的顏色內差方式，也就是用不同色彩空間來算中間的顏色變化：</p>
<pre><code>linear-gradient(in oklab, blue, red)
linear-gradient(in lab to right, #44C, #795)
</code></pre>
<p>在最前面加上 <code>in &lt;color-space&gt;</code> 就可以，支援的色彩空間其實不少，如果是線性漸層，那支援 srgb、srgb-linear、display-p3、a98-rgb、prophoto-rgb、rec2020、lab、oklab、xyz、xyz-d50、xyz-d65，如果是 polar 漸層，那支援 hsl、hwb、lch、oklch，其實相當夠用，而這段語法其實是叫 <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/color-interpolation-method">color-interpolate</a>（顏色內插），除了漸層之外，會用到的地方還包括 filter、animation、transition 和 <code>color-mix()</code> 函數等。</p>
<p>前面也已經提到，現在主流瀏覽器都已經支援了，不過還是來看一下 <a href="https://caniuse.com/mdn-css_types_image_gradient_linear-gradient_interpolation_color_space">caniuse</a> 上的細節，Chrome 是 2022 就支援了，但是 Firefox 是到去年的 2023 才支援，如果要抓兩年的時間的話就還要再等等，當然現在也還是可以直接用，多加一組 fallback 就可以。</p>
<p>除了瀏覽器原生支援外，其實也不少其它開發相關的工具支援，也有不少文章在介紹，像是 Smashing Magazine 的 <a href="https://www.smashingmagazine.com/2023/08/oklch-color-spaces-gamuts-css/">Falling For Oklch: A Love Story Of Color Spaces, Gamuts, And CSS</a> 和 Evil Martians 的 <a href="https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl">OKLCH in CSS: why we moved from RGB and HSL</a>，兩篇文章就介紹了不少工具和一些延伸的文章，工具部分像是 Figma 的 plugin <a href="https://www.figma.com/community/plugin/1173638098109123591/okcolor">OkColor</a> 和 npm 上的 <a href="https://www.npmjs.com/package/convert-to-oklch/v/1.2.0">convert-to-oklch</a>，Evil Martians 還做了一個 <a href="https://oklch.com/">oklch.com</a> ，是針對 Oklch 的 color picker 還蠻厲害的。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53869218887/" title="oklch.com by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53869218887_128b804d16_b.jpg" width="1024" height="686" alt="oklch.com" srcset="https://live.staticflickr.com/65535/53869218887_067ddb5f54_k.jpg 2x" /></a></p>
]]></description>
<link>https://blog.othree.net/log/2024/07/21/oklab-color-space/</link>
<guid>https://blog.othree.net/log/2024/07/21/oklab-color-space/</guid>
<category>css-html</category>
<pubDate>Sun, 21 Jul 2024 18:33:34 +0800</pubDate>
</item>

<item>
<title>溝通</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53403022423/" title="とこなめ招き猫通り by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53403022423_5539409fe7_b.jpg" width="683" height="1024" alt="とこなめ招き猫通り" srcset="https://live.staticflickr.com/65535/53403022423_7446cfc748_k.jpg 2x" /></a></p>
<p>照片是常滑招財貓大道的「除憂解難」。</p>
<p>沒想到這週這麼熱鬧，前後兩天分別發生兩件和溝通有關的熱烈討論（網路對罵？），第一件事情比較少人知道，是發生在 COSCUP 的 telegram 社群，雖然是公開社群但是因為沒有直接的公開網址所以我就不寫網路 id 了。有社群朋友（後面用 A 代稱）想要辦 BoF 需要一些硬體設備，但是因為今年的 BoF 公告還沒出來，所以他想知道大會方是不是有機會能協助（幫忙借用設備），可以的話就會提出申請，其實如果熟悉 BoF 的應該都知道大會方只有提供場地，不過我當時在開車也沒辦法馬上幫忙回，總之就有其他朋友幫忙回了，四貓作為工作人員也在幫忙釐清對方的需求，當時大概就是有位社群朋友回文時多了一句：</p>
<blockquote>
<p>但如果認為大會方該要提供的話，你們預期大會方能從哪搞到這個資源呀</p>
</blockquote>
]]><![CDATA[<p>其實我覺得 A 一開始的文字並沒有這樣的意思，但總之結果這段文字就激起 A 的情緒了，然後就口氣變差，出現了一些情緒回文，接著就變成 A 和一些其他社群朋友開始互吵，其中心穎四貓和我其實都有想要幫忙緩和一下，不過雙邊都沒想要暫停一下，所以就一發不可收拾吵了整個下午，總之直到最後都還是有些情緒文字。</p>
<p>其實這件事有點讓我聯想到「<a href="https://gnn.gamer.com.tw/detail.php?sn=253915">精製動畫坊</a>（HGA）」，非常早期就在台灣經營動畫模型領域的商品，年過四十小時候就有接觸動畫的人可能多少都會聽過 HGA 的大名，黃老闆其實人很好，然後店內也有一群熟客，其實很多人都在圈子內有點名氣，不過就是這群熟客其實也某種程度製造了一個 AT 力場，會讓不在圈子內的人想要進去有阻力，其實我在光顧 HGA 的幾次經驗也沒真的實際接觸到黃老闆以外的那些人，但是我還是要說那個氛圍確實是存在的，有朋友就說是「成也熟客、敗也熟客」。</p>
<p>當然我不是在說 A 的發言都沒錯，A 後來的幾則發言我都覺得這我也很難幫忙緩和了，所以要我說的話，在那個時間點這或許已經是一場無可挽回的難過事件了，不過我還是想說，非當事人的幫忙有時候真的是沒幫上忙啊。</p>
<p>然後隔天發生的另一件事，則是在推特上的「最困難的就是和工程師溝通了！有夠固執不懂變通！」炎上事件了：</p>
<blockquote class="twitter-tweet"><p lang="zh" dir="ltr">這也是位年薪百萬的學員喔！恭喜恭喜！<br /><br />她說，她現在不只要跨部門討論專案，還得跨國溝通，公司裡什麼樣的同事都有。<br /><br />「最困難的就是和工程師溝通了！有夠固執不懂變通！」<br /><br />這是第 N 位跟我抱怨工程師有夠難溝通的學員了。<br />（我也這麼覺得！）<a href="https://t.co/s7jjdgJ4I4">https://t.co/s7jjdgJ4I4</a></p>-- Akane Lee (@akane_lee) <a href="https://twitter.com/akane_lee/status/1790279494114415027?ref_src=twsrc%5Etfw">May 14, 2024</a></blockquote>
<p>然後推特上一堆工程師就受不了了，紛紛分享出他們遇過的很瞎的<a href="https://twitter.com/zonble/status/1790643069949452790">溝</a><a href="https://twitter.com/hiroshiyui/status/1790765506934505869">通</a><a href="https://www.ptt.cc/bbs/Soft_Job/M.1463058955.A.D03.html">經</a><a href="https://twitter.com/ChengWeiLai2/status/1790734521027195149">驗</a>或是他們的看法，當然也是有一些比較沒意義的酸文，不過其實有一些蠻值得一讀的，像是海總理的這串（共九則，請點過去看完整文串）：</p>
<blockquote class="twitter-tweet"><p lang="zh" dir="ltr">覺得對方難溝通，大多是因為<br /><br />「你只想得到你想要的，不想聽你不懂的」</p>-- 海總理 (@tzangms) <a href="https://twitter.com/tzangms/status/1790895526365524474?ref_src=twsrc%5Etfw">May 16, 2024</a></blockquote>
<p>其實這個炎上事件我覺得是屬於用詞不精確所引發的，因為 Akane 一開始的文字直接使用「工程師」，沒有加上「部分」或是「一些」之類的修飾，就直接被當成是貼標籤，其實她也有提到他有合作過很好溝通的工程師，更何況她的課程也不是溝通課，文章的受眾也不是工程師，這也讓我想到我在研究所寫論文時，有一個眉角就是不能用什麼「最好」、「全部」這種太過絕對的形容，而是要用「最好的之一」、「大部分」等比較相對一點的，因為你永遠不知道你的最好，是不是真的「最好」，或是更直接的利害關係，口試前你永遠不知道口試委員有沒有知道你沒查到的資料；當然，或許就算一開始的文字就有修飾過，也無法完全避免這件事情生，Ash 是這樣說的：</p>
<blockquote class="twitter-tweet"><p lang="zh" dir="ltr">看大家討論這麼熱烈，大家在職場上真的都是傷痕累累呢。我們都是帶著過去的傷痕去跟下一段新的職涯邂逅。<br /><br />有時候你覺得同事很尖銳，但他針對的可能並不是你，而是整個環境或者他的過去。</p>-- Ash Wu (@hSATAC) <a href="https://twitter.com/hSATAC/status/1790658579185512861?ref_src=twsrc%5Etfw">May 15, 2024</a></blockquote>
<script async="async" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>然後我才發現原來這已經是工程師的集體創傷了嗎？難怪大家反應這麼大，後來還有說到「男性說教（mansplaining）」這我就覺得不太行，不過她還提到收到的回饋是女性工程師普遍比較好溝通，所以我也實在很難說到底是什麼狀況，畢竟我不是當事人，不過確實在這個圈子要說完全沒有性別差異/問題也是不可能，只是這到底算不算是「男性說教」，我就真的很存疑了，畢竟這也沒有客觀的計量方式來判斷，畢竟我才發生過跟親近的人解釋一些事情，之後發現他完全沒聽進去，然後才了解到：「啊，我剛剛被認為是在男性說教。」</p>
<p>最後還是來分享點比較有趣的東西吧，Huli 趁機也<a href="https://twitter.com/hulitw/status/1790724403661267257">重貼</a>了一個老影片「The Expert」：</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/BKorP55Aqvg?si=x4SSz3M8PekaNx2U" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="allowfullscreen"></iframe>
<p>這影片其實我也很久以前就看過了，只是沒想到下面 <a href="https://tzengyuxio.me/">Tzeng Yuxio</a> 貼了另一個真正的專家完美達成上面的需求的過程：</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/B7MIJP90biM?si=zgCVRr47tpmzyHX3" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="allowfullscreen"></iframe>
<p>十年前的解答我今天才看到！</p>
<p>同場加映：剛好昨天在 FB 的「陳名珉」粉絲專頁有這麼一篇<a href="https://www.facebook.com/share/p/7eunE1cwcb87KKjv/">文章</a>，是在講傳統市場的變化，其實追根究底也是溝通的需求在哪一端的問題（海總理的那串）。</p>
]]></description>
<link>https://blog.othree.net/log/2024/05/16/communication/</link>
<guid>https://blog.othree.net/log/2024/05/16/communication/</guid>
<category>diary</category>
<pubDate>Thu, 16 May 2024 20:19:02 +0800</pubDate>
</item>

<item>
<title>看見不同的學習風景</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53705215124/" title="SEE DIFFERENT 看見不同的學習風景 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53705215124_e27643e0af_b.jpg" width="1024" height="768" alt="SEE DIFFERENT 看見不同的學習風景" srcset="https://live.staticflickr.com/65535/53705215124_3bdc8e8496_k.jpg 2x" /></a></p>
<p>週末帶小孩去松山菸廠意外發現到「<a href="https://www.songshanculturalpark.org/exhibition/activity/20028bbd-8f9c-472a-ad04-3e7584800adf">SEE DIFFERENT 看見不同的學習風景</a>」這個展覽，心中實在是有些想法和感觸想分享，首先先來介紹一下這個展覽吧：這個展覽其實是「<a href="https://schooltextbooks.design.org.tw/news/20240422">第二屆教科圖書設計獎</a>」的得獎作品，沒錯，是教科書，國中國小的教科書的設計展！而且不只是視覺上的設計，評選的範圍也包含內容的設計，展場展出的就是本屆得獎的教科書們，有一整區是可以翻閱的，只能說現在的教科書和我接觸過的三十年前左右的真的是差很多，除了更加活潑有質感的設計，還有各種清晰的圖表輔助，甚至連內文都變得很好閱讀，很像是在看科普書而不是教科書，深入了解之後，才知道這一切其實要從十年前，也就是 2014 年在 FlyingV 上的「<a href="https://www.flyingv.cc/projects/4221">美感細胞的教科書改造計畫</a>」開始，其實我當年也有看到，不過我是沒什麼參與，覺得就是很理想但是很難進入體制內，沒想到，美感細胞默默耕耘十年，加上教育部推動美感教育，還真的推展開來了，教科圖書設計獎都辦到了第二屆，而<a href="https://www.aestheticell.org/research/">美感細胞</a>在其中的角色，除了在 FlyingV 上三季的募資計畫，後來還成立社團法人，承接一些政府合作案之外，也持續進行相關研究，發佈了不少的<a href="https://www.aestheticell.org/research/">設計報告和參考資料</a>，另外還有一個很重要的角色，就是作為教科書出版社和設計師之間的媒合橋樑，其實教科書的出版不是那麼容易，和一般書籍比起來限制較多，除了內容要送審之外，教育部還有<a href="https://edu.law.moe.gov.tw/LawContent.aspx?id=FL033134">印製規定</a>。</p>
]]><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53704881941/" title="SEE DIFFERENT 看見不同的學習風景 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53704881941_6bd801e4be_b.jpg" width="1024" height="768" alt="SEE DIFFERENT 看見不同的學習風景" srcset="https://live.staticflickr.com/65535/53704881941_064a65ac95_k.jpg 2x" /></a></p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53703980092/" title="SEE DIFFERENT 看見不同的學習風景 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53703980092_8094c3afea_b.jpg" width="1024" height="745" alt="SEE DIFFERENT 看見不同的學習風景" srcset="https://live.staticflickr.com/65535/53703980092_5f1a36eef1_k.jpg 2x" /></a></p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53703980312/" title="SEE DIFFERENT 看見不同的學習風景 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53703980312_056ee81b10_b.jpg" width="1024" height="768" alt="SEE DIFFERENT 看見不同的學習風景" srcset="https://live.staticflickr.com/65535/53703980312_561bd49d91_k.jpg 2x" /></a></p>
<p>我確實以前也是認為台灣的美感素養真的差很多，而這在各種層面上展現，從平面設計開始像是文宣、廣告設計、然後一些政府機關的公文、表單的排版字體（看過數年前香港的報稅表單，排版和字體真的是比台灣好很多）等等，更進一步到店面、商場設計（像是台北車站站前地下街 K 區的前後對比：誠品 vs 東森）、道路規劃、建築設計、年末的燈飾、街景、古蹟打燈（像是以前<a href="https://news.ltn.com.tw/news/life/breakingnews/1173165">台北郵局</a>）等等。台灣一來普遍不重視美感和設計，二來是設計人材也少，尤其是公部門相關的東西更是慘烈，最常被人拿出來講的大概就是國慶典禮的主視覺設計了吧，這幾年的改變確實有目共睹，終於能夠脫離千篇一律的設計風格，然後我才慢慢了解到台灣其實不是沒有設計人材，而是主政者和業主不重視，甚至可能是根據種種不能直說的原因來挑選廠商，當然這也造成了惡性循環，業主不重視、設計師沒案子、願意投入設計領域的人就少；美感細胞的三位創辦人張柏韋、林宗諺和陳慕天在十年前的教科書改造計畫第一季其實就有見到這個問題，見到這個問題的人其實應該不少，但是真的有想面對它處理它的人就少之又少，更何況三人還不是設計相關領域、還在體制之外、當時也還只是大學畢業生，實在相當讓人佩服。</p>
<p>另一個感觸則是體制外到體制內這件事，沒想到在這幾年內可以看到兩件事情真的這樣發生，真的是要感謝現在的主政者願意沒事找事作，這邊提到的教科書質的改變是一個，當然這只是一個手段，真正想要改變的是整體國民的美學素養，這還需要很長時間的發酵；另外一個體制外到體制內的改變，則是報稅軟體，相信這就是大家都有目共睹的了，最早是設計師卓致遠在 Join 平台上提出的，財政部注意到這個問題後也非常重視且積極，才推動了報稅軟體整個大改變，提案人卓致遠當然也不是起個頭就跑走，他也是很積極的參與協助設計改善，一些過程可以參考雨蒼在 2018 年寫的「<a href="https://pdis.nat.gov.tw/zh-TW/blog/%E6%96%B0%E7%89%88%E5%A0%B1%E7%A8%85%E7%B6%B2%E7%AB%99%E6%98%AF%E6%80%8E%E9%BA%BC%E7%85%89%E6%88%90%E7%9A%84/">新版報稅網站是怎麼煉成的？</a>」，唐鳳也在其中出了些力協助溝通，當年她還是政務委員，數位發展部是到 2022 年才成立的，當然數發部的貢獻在基礎建設，所以一些新的認證方式應該也是有其貢獻才得以實現。</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53709130260/" title="美感細胞  研究報告 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53709130260_10b5826d15_b.jpg" width="1024" height="401" alt="美感細胞  研究報告" srcset="https://live.staticflickr.com/65535/53709130260_50a301e57a_k.jpg 2x" /></a></p>
<p>然後另外想提的是，美感細胞的那些<a href="https://www.aestheticell.org/research/">研究報告</a>內容其實都蠻不錯的，像我主業是前端工程師，但是也一直對平面設計、字體、文字排版等有些興趣，所以這些報告當中的<a href="https://drive.google.com/file/d/1W70mr6WG-1zDVnAD8qSnpolGUa_HMCcz/view">教育字體應用指南</a>、<a href="https://drive.google.com/file/d/1va3uHSay-9SSqXSwZNK8Oe9fw6x9-CrO/view">敎科書印製規格提議報吿</a>、<a href="https://drive.google.com/file/d/1zzO7I1WPVA8va29toRTBcsd2d-EYHp5o/view">易讀設計指南 Guidebook</a>和<a href="https://drive.google.com/file/d/1wGv0x24pruNfWi2oiV3u1hoUWvFEc3GB/view">教材通用色彩應用指南</a>四份我都有看過一遍，內容都蠻不錯的，都從問題和背景開始就做了很詳細的介紹，報告本身的編排和一些輔助的圖表也都弄的很清楚，可以看得出來花了不少心力要讓報告本身可以自證其述（self-hosting?）；另外還有一本在會場有展出的「<a href="https://drive.google.com/file/d/1HaWUSIK1N_PWfYihuqDr8gFq5R16CPNp/view?usp=drive_link">翻開下一頁➝NEXT PAGE教科書風格創新趨勢研究探討</a>」，則是以教科書近年來的變化為主題，還介紹了第一屆的教科圖書設計獎的得獎作品，這本的<a href="https://www.tdri.org.tw/46397/">出版則是台灣設計研究院</a>，也就是展覽的主辦單位，不想下載的話其實以上這幾本也都有放到 issuu 平台上，可以參考以下連結：</p>
<ul>
<li><a href="https://issuu.com/aestheticellassociation">美感細胞</a></li>
<li><a href="https://issuu.com/tdcpr">TDRI 台灣設計研究院</a></li>
</ul>
<p>最後補一個 中央社 文化+ 的專題報導「<a href="https://www.cna.com.tw/culture/topic/111">聽說課本不一樣</a>」，還有這次展覽我最喜歡的教科書封面：</p>
<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53705091718/" title="SEE DIFFERENT 看見不同的學習風景 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53705091718_b788fcf24d_b.jpg" width="1024" height="768" alt="SEE DIFFERENT 看見不同的學習風景" srcset="https://live.staticflickr.com/65535/53705091718_5e716c4397_k.jpg 2x" /></a></p>
]]></description>
<link>https://blog.othree.net/log/2024/05/08/see-different/</link>
<guid>https://blog.othree.net/log/2024/05/08/see-different/</guid>
<category>diary</category>
<pubDate>Wed, 08 May 2024 17:06:12 +0800</pubDate>
</item>

<item>
<title>時間ねぇ</title>
<description><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53676063087/" title="時間のないサイト運営者リング by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53676063087_6e0a1efc69_b.jpg" width="1024" height="824" alt="時間のないサイト運営者リング" srcset="https://live.staticflickr.com/65535/53676063087_91a1755290_k.jpg 2x" /></a></p>
<p>在 blog 這詞最為蓬勃之時，很流行在自己的網站上放各式各樣的 banner，這些 banner 種類用途很多，像是顯示你網站使用了甚麼技術、你想幫忙宣傳的東西、網站連結、甚至是一些自我的主張表現或是可以稱為無用小廢物（像是<a href="http://www.max.hi-ho.ne.jp/mao_h/nhk/">日本放置協会</a>，又簡寫為 NHK）的都有，我以前也放了不少，不過最後留下來的就只有兩個，第一個是 MDN 的推廣貼紙，第二個則是「<a href="https://sites.google.com/view/happy-busy/">時間のないサイト運営者リング</a>」，沒時間的站長串連，這張 banner 我看到的第一眼就很喜歡，有很符合個人狀況所以我放了很久，從 2007 年五月開始就一直放著，也有連結回去，直到前陣子整理網站的時候才發現，當初連回的串連網站已經死掉了！然後我就花了些時間尋找替代方案。</p>
]]><![CDATA[<p><a class="thumbnail" href="https://www.flickr.com/photos/othree/53674904362/" title="blog.othree.net 2006-08-13 by othree, on Flickr"><img src="https://live.staticflickr.com/65535/53674904362_ae98efaf0d_b.jpg" width="1024" height="640" alt="blog.othree.net 2006-08-13" srcset="https://live.staticflickr.com/65535/53674904362_05d13d1fc8_k.jpg 2x" /></a></p>
<p>考古研究了一下，時間のないサイト運営者リング的網址也變動過不少次，後來可能是為了一勞永逸，所以轉移到 Google Site，當時網址是：</p>
<pre><code>https://sites.google.com/site/happybusy/
</code></pre>
<p>只是沒想到在 Google Site 2023 年二三月之間的一次<a href="https://support.google.com/sites/answer/7035197?hl=en">版本整合</a>之後，網站就不見了，然後根據 internet archive 上的資料，找到當初原作者是一位筆名叫「<a href="https://twitter.com/skysuka">すか</a>」的繪師兼漫畫家，不過商業連載不多，同人社團叫「しろくま屋」（白熊屋），在 <a href="https://www.melonbooks.co.jp/circle/index.php?circle_id=12568">melonbook</a> 也還有賣東西，然後還發現以前還有賣<a href="https://web.archive.org/web/20040927010149/http://www.buddiez.jp/busy/">周邊</a>，然後在推特上也找到另外一個站，路徑不一樣：</p>
<pre><code>https://sites.google.com/view/happy-busy/
</code></pre>
<p>雖然在すか的推上沒有承認也沒有否認，不過應該是原作弄的，最有參考性的是這串<a href="https://twitter.com/skysuka/status/1704070783642018074">推文</a>：</p>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">時間のないサイト運営者リングサイトのドメイン<br />happy-busyは私が考えました（笑</p>-- すか@えりまき (@skysuka) <a href="https://twitter.com/skysuka/status/1704095641100845207?ref_src=twsrc%5Etfw">September 19, 2023</a></blockquote>
<script async="async" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>大概就是他畫了新的圖，然後還挑了 <code>happy-busy</code> 這個名字，發文時間是 2023 年九月，當時新站也已經上線了一陣子了，只不過到今天新圖也沒擺上去就是。總之，雖然沒有很直接的承認，加上新站也沒也什麼詭異的跡象，我就還是把連結改過去了。</p>
<p>文章最後，還是想來感嘆一下日本真的很多閒人（稱讚的意味），各種古老冷門數位資料的收集整理非常多，連這些網站 banner 都有人整理，而且資料還留存到現在，像是這份「<a href="https://w.atwiki.jp/proposalwiki/pages/84.html">消滅した主張系同盟ウェブサイトリングの一覧</a>」就列出了一堆已經消失了的個人主張系網站串連（<a href="https://en.wikipedia.org/wiki/Webring">Web ring</a>）。</p>
]]></description>
<link>https://blog.othree.net/log/2024/04/24/happy-busy/</link>
<guid>https://blog.othree.net/log/2024/04/24/happy-busy/</guid>
<category>diary</category>
<pubDate>Wed, 24 Apr 2024 23:10:47 +0800</pubDate>
</item>

<item>
<title>JSON Type Definition</title>
<description><![CDATA[<p>之前工作上需要，想要一個簡單的可以檢查 JSON 資料結構的工具，研究了一陣子，發現到了 <a href="https://jsontypedef.com/">JSON Type Definition</a>（簡稱 JSON Typedef 或是 JTD） 這個 <a href="https://datatracker.ietf.org/doc/html/rfc8927">RFC 標準</a>，相較於發展已經很久的 <a href="https://json-schema.org/">JSON Schema</a>，JSON Typedef 的語法簡潔不少：</p>
<pre><code class="language-json">{
	&quot;properties&quot;: {
		&quot;id&quot;: { &quot;type&quot;: &quot;string&quot; },
		&quot;createdAt&quot;: { &quot;type&quot;: &quot;timestamp&quot; },
		&quot;karma&quot;: { &quot;type&quot;: &quot;int32&quot; },
		&quot;isAdmin&quot;: { &quot;type&quot;: &quot;boolean&quot; }
	 }
}
</code></pre>
]]><![CDATA[<p>光是看不到 <code>$</code> 那種 meta 屬性的前綴就覺得簡潔不少，然後官網上也提供了幾個常見程式語言的實作，接著我在看 RFC 文件的時候，發現到文件的分類是 <strong>Independent Submission</strong>，這就讓我好奇了起來，於是就花了不少時間了解前因後果。</p>
<p>JSON Typedef 的作者是 <a href="https://github.com/ucarion">Ulysse Carion</a>，當時在 segment.com 工作，不過在講到他之前，要先來提另外一位在 AWS 工作的 Tim Bray，他常常要處理 AWS 服務間的事件，這些事件都是 JSON 資料，然後有很多種事件，整體而言是 discriminated union(tagged union)，中文有翻譯為可辨識聯合或是標簽聯合，那這是什麼東西呢？簡單舉例，在 DOM 裡面的事件，滑鼠 click 事件會有點擊的座標，鍵盤 keydown 事件則會有按下的按鍵，這兩個事件都有一個 <code>type</code> 屬性，簡單的 TypeScript 定義長這樣：</p>
<pre><code class="language-typescript">type ClickEvent {
  type: 'click';
  offsetX: number;
  offsetY: number;
}

type KeydownEvent {
  type: 'keydown';
  keyCode: number;
}
</code></pre>
<p>然後 <code>Event</code> 則是兩種的聯集：</p>
<pre><code class="language-typescript">type Event = ClickEvent | KeydownEvent;
</code></pre>
<p>這時，如果有支援的工具就可以透過判斷 <code>type</code> 屬性的值來知道該物件應該是長什麼樣子，但是就是沒有，當然也不用說更進一步用 schema 驗證收到的事件資料，他也在 2018 年九月寫了一篇 <a href="https://www.tbray.org/ongoing/When/201x/2018/09/22/JSON-scheming">JSON Scheming</a> 講到這件事情，也說明了為什麼無法用 JSON Schema，除了不支援 discriminated union 這個主因之外，還有錯誤訊息不好和沒有 code generation 可用。</p>
<p>之後，Carion 在 2019 年四月，在 IETF 的 <a href="https://mailarchive.ietf.org/arch/browse/json/">json mailing list</a> 發了一封信，想要找人一起協作開發一個 JSON 的 schema 語言，他遇到的問題是他常常用 JSON-RPC，然後這些 RPC 協定的 request/response 本身也和 AWS 團隊要處理的那些 events 一樣是 discriminated union，然後一樣檯面上沒有好用的工具和語言可以用來作資料檢查，Carion 那封信件後面的回應有些人提了一些 prior arts，像是我從來沒聽過的 <a href="https://web.archive.org/web/20210616220814/http://json-content-rules.org/">JSON Content Rules</a>（網站已死），還有 JSON 的二進位版超集：<a href="https://cbor.io/">CBOR</a> 和用來描述 CBOR 資料的 <a href="https://datatracker.ietf.org/doc/html/rfc8610">CDDL</a>，CDDL 也可以用在 JSON 資料結構上，也已經是 RFC 標準了，不過 CDDL 是一個完全不同的語言，要使用它要從 parser 開始導入，會困難並且慢很多，隨便找一個 CDDL 範例：</p>
<pre><code class="language-cddl">PersonalData = {
  ? displayName: tstr,
  NameComponents,
  ? age: uint,
  * tstr =&gt; any
}
</code></pre>
<p>然後五月的時候 Carion 提交了第一版的 Internet-Draft 到 IETF 了，當時使用的名稱叫 <a href="https://mailarchive.ietf.org/arch/msg/json/pkI8w-djHBKsfPFv43g_2G3A3Mg/">JSON Schema Language</a>，不過因為會和 JSON Schema <a href="https://stackoverflow.com/questions/60959556/using-discriminator-keyword-in-json-schema">混淆</a>，所以後來就改名成 <a href="https://mailarchive.ietf.org/arch/msg/json/tnG7o3jTAcLnT9XCYTJi62rXXUo/">JSON Data Definition Format</a>（簡稱：JDDF），然後等到正式發布時則又改名為現在的名稱：JSON Type Definition，至於為何會是 Independent Submission 呢？其實是因為 IETF 的 JSON-WG 早早就已經關閉了，只是 mailing-list 還一直開著，可以讓人討論，但是已經不能透過 JSON-WG 發佈新文件了，這時不是走獨立提交，那就是要另外找一個或開一個 WG，就會有一些行政流程要跑，其實現在很多的 JSON 相關的 RFC 文件，都是有各自的 WG 來處理，像是 <a href="https://www.rfc-editor.org/rfc/rfc9535.html">JSONPath</a> 就有開一個 <a href="https://datatracker.ietf.org/wg/jsonpath/about/">jsonpath WG</a></p>
<p>最後正式版的 JSON Typedef 達成了 Carion 一開始的目標，支援 discriminated union（到這個時間點 JSON Schema 還沒法這樣簡單的支援）以及很容易就可以做出 code generation 的特性，Carion 還自己實作了數個語言的支援，例如 JavaScript 生態系就是可以生成 TypeScript type definition，例如以下的 schema：</p>
<pre><code class="language-json">{
    &quot;discriminator&quot;: &quot;eventType&quot;,
    &quot;mapping&quot;: {
        &quot;USER_CREATED&quot;: {
            &quot;properties&quot;: {
                &quot;id&quot;: { &quot;type&quot;: &quot;string&quot; }
            }
        },
        &quot;USER_PAYMENT_PLAN_CHANGED&quot;: {
            &quot;properties&quot;: {
                &quot;id&quot;: { &quot;type&quot;: &quot;string&quot; },
                &quot;plan&quot;: { &quot;enum&quot;: [&quot;FREE&quot;, &quot;PAID&quot;]}
            }
        },
        &quot;USER_DELETED&quot;: {
            &quot;properties&quot;: {
                &quot;id&quot;: { &quot;type&quot;: &quot;string&quot; },
                &quot;softDelete&quot;: { &quot;type&quot;: &quot;boolean&quot; }
            }
        }
    }
}
</code></pre>
<p>可以自動轉成：</p>
<pre><code class="language-typescript">// Code generated by jtd-codegen for TypeScript v0.2.1

export type Event = EventUserCreated | EventUserDeleted | EventUserPaymentPlanChanged;

export interface EventUserCreated {
  eventType: &quot;USER_CREATED&quot;;
  id: string;
}

export interface EventUserDeleted {
  eventType: &quot;USER_DELETED&quot;;
  id: string;
  softDelete: boolean;
}

export enum EventUserPaymentPlanChangedPlan {
  Free = &quot;FREE&quot;,
  Paid = &quot;PAID&quot;,
}

export interface EventUserPaymentPlanChanged {
  eventType: &quot;USER_PAYMENT_PLAN_CHANGED&quot;;
  id: string;
  plan: EventUserPaymentPlanChangedPlan;
}
</code></pre>
<p>然後 TypeScript 也支援這樣定義的語法，我最近特別喜歡用 <code>switch</code> 來處理這種東西，TypeScript 都會<a href="https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions">幫你判斷好變數的型別</a>：</p>
<pre><code class="language-typescript">switch (event.eventType) {
  case 'USER_CREATED':
    // event type is EventUserCreated
    break;
  case 'USER_DELETED':
    // event type is EventUserDeleted
    break;
  default:
    // blah blah
}
</code></pre>
<p>當然 JTD 也可以用來驗證資料，除了 Carion 自己實作的之外，另外還有一套 <a href="https://ajv.js.org/">ajv</a> 支援 JSON Typedef，不過如果是表單驗證，我自己是沒那麼推薦，我目前表單通常會是用 <a href="https://react-hook-form.com/">react-hook-form</a> 和 <a href="https://zod.dev/">Zod</a>，一個原因是 JTD 不太有擴充性，而且也沒有太多什麼奇妙的型別，都是很基本的型別，所以沒有 email、ip、url 那種 pattern 形式的驗證，至於我推薦表單檢查用 Zod 除了它比較容易擴充自訂的檢查之外，還有其他原因，其一是它也支援 discriminated union：</p>
<pre><code class="language-javascript">const myUnion = z.discriminatedUnion(&quot;status&quot;, [
  z.object({ status: z.literal(&quot;success&quot;), data: z.string() }),
  z.object({ status: z.literal(&quot;failed&quot;), error: z.instanceof(Error) }),
]);
</code></pre>
<p>另一個原因就是 <a href="https://github.com/sindresorhus/ow">ow</a> 的作者 @sindresorhus 也推薦用 Zod 了XD。</p>
<p>回到 JSON Typedef，其實使用起來還是有一點隱憂的，主要的隱憂就是怕之後就沒人用了，一來使用族群不大，二來是 Carion 那些套件都很久沒更新了，他本人後來也跑去創業了，大概也沒時間來故這些東西了吧，所以要不要用 JTD 也只能自己承擔後果了吧，不過都做為正式 RFC 文件發佈了，我覺得應該是不會慘到哪去啦。</p>
]]></description>
<link>https://blog.othree.net/log/2024/04/17/json-type-definition/</link>
<guid>https://blog.othree.net/log/2024/04/17/json-type-definition/</guid>
<category>script</category>
<pubDate>Wed, 17 Apr 2024 22:47:21 +0800</pubDate>
</item>


</channel>
</rss>