

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DIY &#8211; Max的每一天</title>
	<atom:link href="https://max-everyday.com/tag/diy/feed/" rel="self" type="application/rss+xml" />
	<link>https://max-everyday.com</link>
	<description>認真過每一天、快樂過每一天</description>
	<lastBuildDate>Sun, 01 Feb 2026 20:42:45 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://max-everyday.com/wp-content/uploads/2020/02/ic_launcher_round_2020-003.png</url>
	<title>DIY &#8211; Max的每一天</title>
	<link>https://max-everyday.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>幫魔鬼氈電線收納帶挖孔</title>
		<link>https://max-everyday.com/2026/02/velcro-binding/</link>
					<comments>https://max-everyday.com/2026/02/velcro-binding/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Sun, 01 Feb 2026 20:42:44 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[哲學]]></category>
		<category><![CDATA[購物]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=22971</guid>

					<description><![CDATA[周末帶 Switch 去弟弟家玩，他看我的變壓器電線太亂，就剪了一段魔鬼氈收納帶(魔鬼氈紮線/束線帶)給我用。但我回家把線解開後，收納帶就跟電線分開了，覺得每次都要重新配 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="559" src="https://max-everyday.com/wp-content/uploads/2026/02/velcro-binding-16x9_clean-1024x559.jpg?v=1769978521" alt="" class="wp-image-22977" srcset="https://max-everyday.com/wp-content/uploads/2026/02/velcro-binding-16x9_clean-1024x559.jpg?v=1769978521 1024w, https://max-everyday.com/wp-content/uploads/2026/02/velcro-binding-16x9_clean-500x273.jpg?v=1769978521 500w, https://max-everyday.com/wp-content/uploads/2026/02/velcro-binding-16x9_clean-615x335.jpg?v=1769978521 615w, https://max-everyday.com/wp-content/uploads/2026/02/velcro-binding-16x9_clean.jpg?v=1769978521 1408w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>周末帶 Switch 去弟弟家玩，他看我的變壓器電線太亂，就剪了一段魔鬼氈收納帶(魔鬼氈紮線/束線帶)給我用。但我回家把線解開後，收納帶就跟電線分開了，覺得每次都要重新配對很麻煩，希望能讓電線跟收納帶固定在一起，解決收納帶容易遺失的困擾。</p>



<p>修改前長這樣子。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1025" height="577" src="https://max-everyday.com/wp-content/uploads/2026/02/22058_0-croped.jpg?v=1769975971" alt="" class="wp-image-22972" srcset="https://max-everyday.com/wp-content/uploads/2026/02/22058_0-croped.jpg?v=1769975971 1025w, https://max-everyday.com/wp-content/uploads/2026/02/22058_0-croped-500x281.jpg?v=1769975971 500w, https://max-everyday.com/wp-content/uploads/2026/02/22058_0-croped-960x540.jpg?v=1769975971 960w, https://max-everyday.com/wp-content/uploads/2026/02/22058_0-croped-615x346.jpg?v=1769975971 615w" sizes="(max-width: 1025px) 100vw, 1025px" /></figure>



<p></p>



<p>收納帶前端的2cm先瘦身剪的變細， 隔一小段（大約 2mm) 用美工刀割出二條線, 挖出一個窄窄的長方形(寬1~2mm)。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="769" src="https://max-everyday.com/wp-content/uploads/2026/02/22060_0-1024x769.jpg?v=1769976004" alt="" class="wp-image-22973" srcset="https://max-everyday.com/wp-content/uploads/2026/02/22060_0-1024x769.jpg?v=1769976004 1024w, https://max-everyday.com/wp-content/uploads/2026/02/22060_0-500x375.jpg?v=1769976004 500w, https://max-everyday.com/wp-content/uploads/2026/02/22060_0-615x462.jpg?v=1769976004 615w, https://max-everyday.com/wp-content/uploads/2026/02/22060_0.jpg?v=1769976004 1477w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>收納帶變身的完成圖：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="577" src="https://max-everyday.com/wp-content/uploads/2026/02/22061_0-crop-1024x577.jpg?v=1769976188" alt="" class="wp-image-22974" srcset="https://max-everyday.com/wp-content/uploads/2026/02/22061_0-crop-1024x577.jpg?v=1769976188 1024w, https://max-everyday.com/wp-content/uploads/2026/02/22061_0-crop-500x282.jpg?v=1769976188 500w, https://max-everyday.com/wp-content/uploads/2026/02/22061_0-crop-960x540.jpg?v=1769976188 960w, https://max-everyday.com/wp-content/uploads/2026/02/22061_0-crop-615x346.jpg?v=1769976188 615w, https://max-everyday.com/wp-content/uploads/2026/02/22061_0-crop.jpg?v=1769976188 1046w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>收納帶與電線合2為1：</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="984" height="554" src="https://max-everyday.com/wp-content/uploads/2026/02/22062_0-crop.jpg?v=1769976219" alt="" class="wp-image-22975" srcset="https://max-everyday.com/wp-content/uploads/2026/02/22062_0-crop.jpg?v=1769976219 984w, https://max-everyday.com/wp-content/uploads/2026/02/22062_0-crop-500x282.jpg?v=1769976219 500w, https://max-everyday.com/wp-content/uploads/2026/02/22062_0-crop-960x540.jpg?v=1769976219 960w, https://max-everyday.com/wp-content/uploads/2026/02/22062_0-crop-615x346.jpg?v=1769976219 615w" sizes="auto, (max-width: 984px) 100vw, 984px" /></figure>



<p>心得：收納帶的洞挖的太寬，應該大約 1~2mm 應該就夠了。</p>



<p>黃色布帶的一端有一個方形開孔，使用時只要將細長的一端繞過電線後穿過這個孔位，就可以把收納帶固定在電線上防止脫落。接著再把剩餘的長度纏繞要收納的整綑電線，利用魔鬼氈勾面與毛面互相黏合的特性來完成固定。</p>



<p>這種魔鬼氈紮線帶在很多地方都能買到，網購的話可以去去蝦皮搜尋魔鬼氈束線帶，通常會有整包一百條或是長達五公尺的捲裝款式，價格非常便宜。實體店面的話，像五金行、特力屋/宜得利、連鎖文具店（九乘九/光南/金石堂/金玉堂/墊腳石）或是小北百貨也都有販售。</p>



<p>如果你除了束線帶，還想把桌面變更整齊，以下是 2026 年較流行的組合：</p>



<ul class="wp-block-list">
<li><strong>電線收納盒：</strong> 把延長線和多餘的線頭全部塞進去，視覺上最乾淨。目前流行木蓋或是純白簡約風，蝦皮上的單價約 $69 到 500 元，大約 $250 可以買到木質像面紙盒大小的收納盒。</li>



<li><strong>磁吸理線器：</strong> 適合手機充電線。底座貼在桌邊，線頭端夾一個小磁鐵，不用時直接吸上去，就不會掉到桌子後面。</li>
</ul>



<p>千萬不要掉進收納的陷阱：收納工具買得越多，往往只是在幫垃圾找個漂亮的家，而非真正解決混亂。</p>



<h2 class="wp-block-heading">收納與斷捨離的邏輯</h2>



<p>收納的核心應該是管理必需品，而不是為了留住沒用的東西。很多時候我們買了各式各樣的理線帶，是因為我們捨不得丟掉那些早就過時的 micro-USB 充電線、已經壞掉的舊變壓器，或是當年買相機留下來的傳輸線。</p>



<p>如果你發現自己還需要買更多的束線帶，這可能是一個訊號，提醒你手邊的備用線材已經超量了。現在的科技趨勢都在統一規格，很多舊線材其實這輩子都不會再用到。</p>



<h2 class="wp-block-heading">針對線材的斷捨離撇步</h2>



<p>與其買收納袋，不如先執行以下步驟：</p>



<ul class="wp-block-list">
<li><strong>分類淘汰：</strong> 把所有線材倒出來，先丟掉外皮破損、接觸不良，或是已經沒有對應設備的線（例如十年前的舊手機充電線）。</li>



<li><strong>一進一出：</strong> 買了新的快充線，就把舊的、充電速度慢的線處理掉。不要想著留著當備用，因為一旦線材多到需要大量收納，備用的機會通常微乎其微。</li>



<li><strong>限制空間：</strong> 只給線材一個固定大小的抽屜或盒子。裝滿了就代表必須丟東西，而不是去買更大的盒子。</li>
</ul>



<p>當你完成斷捨離，剩下的線材其實很少。這時候你手邊有的那種魔鬼氈就非常夠用了。</p>



<p>把每一條留下來的線都用一條魔鬼氈固定好，保持展開後能迅速收回的狀態。當每條線都有它的位置且數量受控時，你就不會再感受到收納的壓力，心靈也會跟著清爽很多。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2026/02/velcro-binding/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>貼汽車隔熱紙心得</title>
		<link>https://max-everyday.com/2024/07/car-insulation-paper-2/</link>
					<comments>https://max-everyday.com/2024/07/car-insulation-paper-2/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Fri, 26 Jul 2024 07:45:25 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=20681</guid>

					<description><![CDATA[貼新隔熱紙，先對齊窗戶最下面的膠條，沿著窗外用刀片按照照窗型割出左邊、上邊和右邊。直接把透明膜撕掉，並先把玻璃片與隔熱紙會黏的那一面噴上泡泡水。雖然有很多氣泡，多用塑膠刮板朝著上、下、左和右4邊刮幾次之後就全平了。]]></description>
										<content:encoded><![CDATA[
<p>要怎麼貼汽車隔熱紙，在YouTubue 上有超多教學，關鍵字：汽車 隔熱紙 貼<br><a href="https://www.youtube.com/results?search_query=%E6%B1%BD%E8%BB%8A+%E9%9A%94%E7%86%B1%E7%B4%99+%E8%B2%BC">https://www.youtube.com/results?search_query=%E6%B1%BD%E8%BB%8A+%E9%9A%94%E7%86%B1%E7%B4%99+%E8%B2%BC</a></p>



<h2 class="wp-block-heading">去除舊隔熱紙：</h2>



<ul class="wp-block-list">
<li>用刀片把舊的隔熱紙邊邊先分離。</li>



<li>用手就可以撕掉隔熱紙。</li>



<li>用刀片刮掉殘膠。</li>
</ul>



<p>參考看看：<a href="https://max-everyday.com/2024/06/car-insulation-paper/">https://max-everyday.com/2024/06/car-insulation-paper/</a></p>



<p>YouTube：夏天车内被晒的很烫？教你自己动手升级玻璃隔热膜，省钱又简单<br><a href="https://www.youtube.com/watch?v=DN_4vwCpafQ">https://www.youtube.com/watch?v=DN_4vwCpafQ</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="gutenbee-responsive-embed"><iframe loading="lazy" title="夏天车内被晒的很烫？教你自己动手升级玻璃隔热膜，省钱又简单" width="885" height="498" src="https://www.youtube.com/embed/DN_4vwCpafQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div></figure>



<p></p>



<h2 class="wp-block-heading">貼新隔熱紙：</h2>



<p>先對齊窗戶最下面的膠條，沿著窗外用刀片按照照窗型割出左邊、上邊和右邊。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="771" src="https://max-everyday.com/wp-content/uploads/2024/07/9199_0-1024x771.jpg?v=1721978198" alt="" class="wp-image-20683" srcset="https://max-everyday.com/wp-content/uploads/2024/07/9199_0-1024x771.jpg?v=1721978198 1024w, https://max-everyday.com/wp-content/uploads/2024/07/9199_0-500x377.jpg?v=1721978198 500w, https://max-everyday.com/wp-content/uploads/2024/07/9199_0-615x463.jpg?v=1721978198 615w, https://max-everyday.com/wp-content/uploads/2024/07/9199_0.jpg?v=1721978198 1474w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>如果有時間的話，可以先不要把隔熱紙的透明膜撕下來，先貼到玻璃上試看看效果，先在玻璃上噴上肥皂水或稀釋的洗碗精。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="771" src="https://max-everyday.com/wp-content/uploads/2024/07/9201_0-1024x771.jpg?v=1721978220" alt="" class="wp-image-20684" srcset="https://max-everyday.com/wp-content/uploads/2024/07/9201_0-1024x771.jpg?v=1721978220 1024w, https://max-everyday.com/wp-content/uploads/2024/07/9201_0-500x377.jpg?v=1721978220 500w, https://max-everyday.com/wp-content/uploads/2024/07/9201_0-615x463.jpg?v=1721978220 615w, https://max-everyday.com/wp-content/uploads/2024/07/9201_0.jpg?v=1721978220 1474w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>這時候就會發現，玻璃其實不像隔熱紙一樣的平，有小小的彎曲，這個聽說可以用熱手機或吹風機去加熱隔熱紙，讓隔熱紙微微的一起彎曲變形。</p>



<p>在拿掉透明膜之後，硬去刮下圖的空氣的隔熱紙，有可能會讓隔熱紙產生摺痕，超級醜。於是我就重貼，建議如果是第一次挑戰自己貼，在買隔熱紙時最好多買一些，要預留失敗的可能。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="771" height="1024" src="https://max-everyday.com/wp-content/uploads/2024/07/9209_0-771x1024.jpg?v=1721978411" alt="" class="wp-image-20685" srcset="https://max-everyday.com/wp-content/uploads/2024/07/9209_0-771x1024.jpg?v=1721978411 771w, https://max-everyday.com/wp-content/uploads/2024/07/9209_0-377x500.jpg?v=1721978411 377w, https://max-everyday.com/wp-content/uploads/2024/07/9209_0-615x817.jpg?v=1721978411 615w, https://max-everyday.com/wp-content/uploads/2024/07/9209_0.jpg?v=1721978411 1110w" sizes="auto, (max-width: 771px) 100vw, 771px" /></figure>



<p></p>



<p></p>



<p>因為上一次刮泡泡時，摺到隔熱紙，覺得不好看，就再挑戰一次。</p>



<p>第二次割好隔熱紙，我就直接把透明膜撕掉，並先把玻璃片與隔熱紙會黏的那一面噴上泡泡水。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="771" src="https://max-everyday.com/wp-content/uploads/2024/07/9211_0-1024x771.jpg?v=1721978833" alt="" class="wp-image-20686" srcset="https://max-everyday.com/wp-content/uploads/2024/07/9211_0-1024x771.jpg?v=1721978833 1024w, https://max-everyday.com/wp-content/uploads/2024/07/9211_0-500x377.jpg?v=1721978833 500w, https://max-everyday.com/wp-content/uploads/2024/07/9211_0-615x463.jpg?v=1721978833 615w, https://max-everyday.com/wp-content/uploads/2024/07/9211_0.jpg?v=1721978833 1474w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>雖然有很多氣泡，多用塑膠刮板朝著上、下、左和右4邊刮幾次之後就全平了。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="771" src="https://max-everyday.com/wp-content/uploads/2024/07/9214_0-1024x771.jpg?v=1721978967" alt="" class="wp-image-20687" srcset="https://max-everyday.com/wp-content/uploads/2024/07/9214_0-1024x771.jpg?v=1721978967 1024w, https://max-everyday.com/wp-content/uploads/2024/07/9214_0-500x377.jpg?v=1721978967 500w, https://max-everyday.com/wp-content/uploads/2024/07/9214_0-615x463.jpg?v=1721978967 615w, https://max-everyday.com/wp-content/uploads/2024/07/9214_0.jpg?v=1721978967 1474w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>從外面看也很完美，這是透光 35% （長度：0.5M x 3.0M) 價格：NT$168的。</p>



<p>最近觀察馬路上大多的汽車都貼的比我黑。仔細翻蝦皮賣場下方的留言，感覺買透光 15%與透過 25% 的人比較多，未來可以考慮看看。</p>



<p>建議買東西先到留言去做一點功能，在留言可以看到：</p>



<ul class="wp-block-list">
<li>這種太便宜的隔熱紙，硬度比較低，容易產生刮痕。</li>



<li>怕太黑，買了透光50%的，結果看起來很不黑，後悔莫及…。(其實這個重買一次就好了，沒多少錢)</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="771" src="https://max-everyday.com/wp-content/uploads/2024/07/9216_0-1024x771.jpg?v=1721979144" alt="" class="wp-image-20688" srcset="https://max-everyday.com/wp-content/uploads/2024/07/9216_0-1024x771.jpg?v=1721979144 1024w, https://max-everyday.com/wp-content/uploads/2024/07/9216_0-500x377.jpg?v=1721979144 500w, https://max-everyday.com/wp-content/uploads/2024/07/9216_0-615x463.jpg?v=1721979144 615w, https://max-everyday.com/wp-content/uploads/2024/07/9216_0.jpg?v=1721979144 1474w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>其他備註：</p>



<ul class="wp-block-list">
<li>用烤槍開熱風（沒有的話可以用吹風機）溫度在300-500度之間上下烤，讓車膜均勻受熱，鋪上去鼓起的部分就是玻璃的弧度，對著弧度上下烤，上下擺動，膜收縮一點就 用毛巾趟平一點，切記不要長時間對著烤，溫度太高或者時間過長容易把車膜烤焦，車膜烤焦就廢了。</li>



<li>在烤膜的過程中，如果有比較大的弧度烤槍烤完之後用毛巾無法趟平的，不要強行大力的往下擦，容易把車膜弄出摺痕，建議我們可以用手把弧度分小一點，分多塊區域進行烘烤。</li>



<li>前後擋風玻璃貼膜比較繁雜，比較專業。</li>
</ul>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2024/07/car-insulation-paper-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>去除汽車舊的隔熱紙</title>
		<link>https://max-everyday.com/2024/06/car-insulation-paper/</link>
					<comments>https://max-everyday.com/2024/06/car-insulation-paper/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Tue, 18 Jun 2024 14:32:43 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=20593</guid>

					<description><![CDATA[汽車已經很老了，汽車的隔熱紙長了小小的泡泡，會影響到「倒車」與「變換車道」時的視線，看了一下 youtube 的影片，覺得好像很簡單，就先把隔熱紙拆了，先用刀片在最邊邊把玻璃與隔熱紙分開後，大約2分鐘就可以全部且完整地拆下第一層，剩下的是很難摳下來的殘膠還在玻璃上，殘膠會讓玻璃看出去霧霧的。]]></description>
										<content:encoded><![CDATA[
<p>由於汽車已經很老了，汽車的隔熱紙長了小小的泡泡，會影響到「倒車」與「變換車道」時的視線，看了一下 youtube 的影片，覺得好像很簡單，就先把隔熱紙拆了，先用刀片在最邊邊把玻璃與隔熱紙分開後，大約2分鐘就可以全部且完整地拆下第一層，剩下的是很難摳下來的殘膠還在玻璃上，殘膠會讓玻璃看出去霧霧的。</p>



<p>這時候塗上點肥皂水，再用刀片刮一下，就會變的亮晶晶，玻璃變的超透明，與有隔熱紙比起來，曬到太陽也比較熱一點。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="1110" height="1474" src="https://max-everyday.com/wp-content/uploads/2024/06/6254.jpg?v=1718720589" alt="" class="wp-image-20594" srcset="https://max-everyday.com/wp-content/uploads/2024/06/6254.jpg?v=1718720589 1110w, https://max-everyday.com/wp-content/uploads/2024/06/6254-377x500.jpg?v=1718720589 377w, https://max-everyday.com/wp-content/uploads/2024/06/6254-771x1024.jpg?v=1718720589 771w, https://max-everyday.com/wp-content/uploads/2024/06/6254-615x817.jpg?v=1718720589 615w" sizes="auto, (max-width: 1110px) 100vw, 1110px" /></figure>
</div>


<p></p>



<p>有去五金行買玻離刮刀，可能是五金行品項太少，沒賣到。我用上圖的刀片，刮了一小時才刮乾淨，刮完之後大姆指都沒力了，因為超級黏的，要很用力才刮的起來，刀片因為超級短，需要施力不方便，而且還需要多刮幾次，刮的刀片上滿滿的膠，結論：應該上網買專門刮玻璃的刀具，關鍵字可以用「玻離刮刀」或「隔熱紙刮刀」。</p>



<p>下圖在五金行賣的除膠噴霧附的塑膠小刮刀，在噴完除膠劑之後，超級用力地刮了5分鐘，殘膠完全沒有任何變化，超慘烈的！與其用這個小棒棒，還不如用自己的指甲會更快一點。除膠噴霧也完全無效，最後有派上用場的是肥皂水和刀片。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="771" height="1024" src="https://max-everyday.com/wp-content/uploads/2024/06/6253-771x1024.jpg?v=1718721097" alt="" class="wp-image-20595" srcset="https://max-everyday.com/wp-content/uploads/2024/06/6253-771x1024.jpg?v=1718721097 771w, https://max-everyday.com/wp-content/uploads/2024/06/6253-377x500.jpg?v=1718721097 377w, https://max-everyday.com/wp-content/uploads/2024/06/6253-615x817.jpg?v=1718721097 615w, https://max-everyday.com/wp-content/uploads/2024/06/6253.jpg?v=1718721097 1110w" sizes="auto, (max-width: 771px) 100vw, 771px" /></figure>



<p>接著就是自己貼隔熱紙，網路上有寬 40/45/50/75 cm 的版本，一定要先量好自己的玻璃有多高，我的大約 45cm, 需要買 45或50 的版本。</p>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" />前檔尺寸：100×150cm</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" />車窗尺寸：50×100cm 轎車：4窗戶 麵包車6窗，其他車型根據窗戶數量購買就好喔！</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" />後檔尺寸：75×150cm 適合所有車型（通用後檔）</li>
</ul>



<p>買前檔，只能宅配。因為太長。另外側檔與後檔可以超商取貨。</p>



<p>這些蝦皮上面的商店都很奇怪，幾乎都不是現貨，需要7天之後才收的到貨。</p>



<p>心得：還是花點錢給別人貼輕鬆一點，最便宜的全車貼下來應該是1萬元左右，請別人去除舊的隔熱紙，需要 NT$1000元。</p>



<p>如何貼隔熱紙，參考：<br><a href="https://max-everyday.com/2024/07/car-insulation-paper-2/">https://max-everyday.com/2024/07/car-insulation-paper-2/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2024/06/car-insulation-paper/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>耳罩式耳機的人工皮革掉皮剝落怎麼救?</title>
		<link>https://max-everyday.com/2024/03/over-ear-headphones/</link>
					<comments>https://max-everyday.com/2024/03/over-ear-headphones/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Mon, 11 Mar 2024 07:51:53 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[有趣]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=19959</guid>

					<description><![CDATA[家裡有一個耳機的耳墊已脫皮，在mobile01 上看到很有趣解法:https://www.mobile01.com/topicdetail.php?f=180&#38;t [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>家裡有一個耳機的耳墊已脫皮，在mobile01 上看到很有趣解法:<br><a href="https://www.mobile01.com/topicdetail.php?f=180&amp;t=4811050&amp;p=2">https://www.mobile01.com/topicdetail.php?f=180&amp;t=4811050&amp;p=2</a></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>有一個姐姐告訴我她是替先生套糖果襪,<br>不過我一時找不到新的,<br>但有穿高跟鞋用的新船型襪,<br>釘了幾個扣子,自己動手做了一下<br>沒有很好看,<br>不過至少可以再用一段時間(我還故意釘了紅扣子,哈)<br>如果家裡有女生,<br>可以找找她們有沒有新的糖果襪,<br>不介意的可以試看看,<br>棉布還蠻舒服的,也可以拆洗~~</p>
</blockquote>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="742" height="742" src="https://max-everyday.com/wp-content/uploads/2024/03/chrome_2024-03-11_15-40_ce.jpg?v=1710143481" alt="" class="wp-image-19961" srcset="https://max-everyday.com/wp-content/uploads/2024/03/chrome_2024-03-11_15-40_ce.jpg?v=1710143481 742w, https://max-everyday.com/wp-content/uploads/2024/03/chrome_2024-03-11_15-40_ce-500x500.jpg?v=1710143481 500w, https://max-everyday.com/wp-content/uploads/2024/03/chrome_2024-03-11_15-40_ce-200x200.jpg?v=1710143481 200w, https://max-everyday.com/wp-content/uploads/2024/03/chrome_2024-03-11_15-40_ce-615x615.jpg?v=1710143481 615w, https://max-everyday.com/wp-content/uploads/2024/03/chrome_2024-03-11_15-40_ce-510x510.jpg?v=1710143481 510w" sizes="auto, (max-width: 742px) 100vw, 742px" /></figure>



<p>在蝦上上, 有賣很多款式, 有像點像浴帽的概念的外套, 一個NT$5~10元, 也沒辦法做的好看, 而且耳罩有些大, 有些小, 尺寸也很多。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2024/03/over-ear-headphones/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>爆米花初體驗</title>
		<link>https://max-everyday.com/2021/07/popcorn-diy/</link>
					<comments>https://max-everyday.com/2021/07/popcorn-diy/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Wed, 21 Jul 2021 11:15:03 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=14302</guid>

					<description><![CDATA[昨天在超市買豆漿回家喝時，旁邊剛好有賣爆米花，小朋友沒玩過就買了一個回家試看看，還滿便宜的 $34元，在家樂福買的，有2個口味甜的與鹹的二種。 心得：當左右搖晃只剩一些些 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>昨天在超市買豆漿回家喝時，旁邊剛好有賣爆米花，小朋友沒玩過就買了一個回家試看看，還滿便宜的 $34元，在家樂福買的，有2個口味甜的與鹹的二種。</p>



<p>心得：當左右搖晃只剩一些些撞擊聲就要立馬關火，等到完全沒有聲音時，就會和我一樣，底部都烤焦了，還有 2/3 是可以吃的，呵呵。</p>



<p>別人爆的比較好吃與便宜，在巨城樓下的頂好賣的好大一桶才$49元，味道與口感都更佳。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="951" height="1024" src="https://max-everyday.com/wp-content/uploads/2021/07/popcorn-fun-202107-cover-951x1024.jpg?v=1626865848" alt="" class="wp-image-14303" srcset="https://max-everyday.com/wp-content/uploads/2021/07/popcorn-fun-202107-cover-951x1024.jpg?v=1626865848 951w, https://max-everyday.com/wp-content/uploads/2021/07/popcorn-fun-202107-cover-464x500.jpg?v=1626865848 464w, https://max-everyday.com/wp-content/uploads/2021/07/popcorn-fun-202107-cover-1426x1536.jpg?v=1626865848 1426w, https://max-everyday.com/wp-content/uploads/2021/07/popcorn-fun-202107-cover-1902x2048.jpg?v=1626865848 1902w, https://max-everyday.com/wp-content/uploads/2021/07/popcorn-fun-202107-cover-615x662.jpg?v=1626865848 615w" sizes="auto, (max-width: 951px) 100vw, 951px" /></figure>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2021/07/popcorn-diy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI造字經驗分享</title>
		<link>https://max-everyday.com/2021/07/zi2zi-ai-font/</link>
					<comments>https://max-everyday.com/2021/07/zi2zi-ai-font/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Fri, 02 Jul 2021 21:45:10 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[DIY]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=14187</guid>

					<description><![CDATA[這次的分享，純粹是囫圇吞棗式分享，沒有什麼太難的技術在裡面，只要準備好： 然後就可以開始做「筆跡」的學習，進階的用法是倒過來做筆跡的鑑定。 在這裡要推薦一部好看的韓劇，剛 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>這次的分享，純粹是囫圇吞棗式分享，沒有什麼太難的技術在裡面，只要準備好：</p>



<ul class="wp-block-list">
<li>原作者的字型檔(或你的手寫字圖檔)。</li>



<li>免費的思源黑體(或思源宋體)。</li>



<li>整理原作者字型裡有的字。</li>



<li>繪圖軟體：非必要。如果需要微調產生出來的圖檔，建議學習一個繪圖軟體，小畫家也可以，不一定需要會編輯向量圖，如果會的話，是有幫助，我用的繪圖軟體是krita。</li>



<li>FontCreator/FontForge 用來產生字型檔。</li>
</ul>



<p>然後就可以開始做「筆跡」的學習，進階的用法是倒過來做筆跡的鑑定。</p>



<p>在這裡要推薦一部好看的韓劇，剛好就是在做上面這二件事情，劇名是《啟動了》或《Start-Up》（韓語：스타트업），在台灣及港澳的譯名是《Start-Up：我的新創時代》，為韓國tvN於2020年10月17日起播出的週末連續劇，劇中對 AI 的使用，還有商業模式與簡報的展示有非常深入且專業的見解，最後一集我沒看，因為我個人比較喜歡男配角(金宣虎)。在Netflix 上翻譯是「我的新創時代」。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="262" height="375" src="https://max-everyday.com/wp-content/uploads/2021/07/Start-Up_2020.jpg" alt="" class="wp-image-18145"/><figcaption class="wp-element-caption">Start-Up的海報。 本海報作品的著作權據信屬於電視的經銷商、電視的出版者或者海報設計者。</figcaption></figure>
</div>


<p></p>



<p>這次分享，完全不需要寫程式，而且原作者的程式，我也看不懂他在寫什麼，還好，都用作者放上來的範例參數，只帶入我們收集到的字型檔，就完成了。</p>



<p>針對沒有字型檔的情況，也可以手動先收集筆跡圖片，使用手機拍照或掃描手寫字圖片，先把類比轉數位，手動產生訓練所需要的對應用的paired_images ，就可以讓電腦來學習你的筆跡，用AI造字。</p>



<p></p>



<h2 class="wp-block-heading">認識 Pix2pix</h2>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="2044" height="753" src="https://max-everyday.com/wp-content/uploads/2021/07/pix2pix-examples.jpg" alt="" class="wp-image-18147"/></figure>
</div>


<ul class="wp-block-list">
<li>github: <a href="https://github.com/phillipi/pix2pix">https://github.com/phillipi/pix2pix</a></li>



<li>Pix2pix 是一種 Conditional GAN(CGAN)，主要用於圖像和圖像之間的映射，或稱為圖像轉譯。</li>



<li>cGAN(conditonal generative adversial network)，可以自動生成符合某些條件或特徵(condition)的圖像。</li>



<li>由於 Pix2pix 是圖像的一對一映射，我們在訓練時必須採用成對的(Paired)資料進行訓練。</li>
</ul>



<p></p>



<h2 class="wp-block-heading">認識 CycleGAN</h2>



<p>github: <a href="https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix">https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix</a></p>



<p>CycleGAN 是一種將GAN應用於影像風格轉換(Image translation)的非監督式學習演算法。與Pix2Pix不同，CycleGAN的輸入資料不是pair-to-pair的資料，因此CycleGAN演算法可以解決不同domain的成對資料獲取困難的問題。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="1303" height="415" src="https://max-everyday.com/wp-content/uploads/2021/07/2Rxx1K0.jpg" alt="" class="wp-image-18146" srcset="https://max-everyday.com/wp-content/uploads/2021/07/2Rxx1K0.jpg 1303w, https://max-everyday.com/wp-content/uploads/2021/07/2Rxx1K0-500x159.jpg 500w, https://max-everyday.com/wp-content/uploads/2021/07/2Rxx1K0-1024x326.jpg 1024w, https://max-everyday.com/wp-content/uploads/2021/07/2Rxx1K0-615x196.jpg 615w" sizes="auto, (max-width: 1303px) 100vw, 1303px" /></figure>
</div>


<p></p>



<h2 class="wp-block-heading">認識 zi2zi (字到字)</h2>



<p>github: <a href="https://github.com/kaonashi-tyc/zi2zi">https://github.com/kaonashi-tyc/zi2zi</a></p>



<p>Learning eastern asian language typefaces with GAN. zi2zi(字到字, meaning from character to character) is an application and extension of the recent popular&nbsp;<a href="https://github.com/phillipi/pix2pix">pix2pix</a>&nbsp;model to Chinese characters.</p>



<p>Details could be found in this&nbsp;<a href="https://kaonashi-tyc.github.io/2017/04/06/zi2zi.html"><strong>blog post</strong></a>.</p>



<p></p>



<h2 class="wp-block-heading">zi2zip 使用上的重點</h2>



<ul class="wp-block-list">
<li>準備訓練所需資料，先把字型變成圖片。<br>font2img.py</li>



<li>一張一張分開的圖片檔案，打包成單一個訓練檔案。<br>package.py</li>



<li>在 google colab 上訓練<br>train.py</li>



<li>推論出原作者未設計過的字，推論滿快的，不一定需要使用GPU的電腦<br>infer.py</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="710" src="https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-pytorch-demo-cover-1024x710.jpg?v=1625262277" alt="" class="wp-image-14191" srcset="https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-pytorch-demo-cover-1024x710.jpg?v=1625262277 1024w, https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-pytorch-demo-cover-500x347.jpg?v=1625262277 500w, https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-pytorch-demo-cover-615x426.jpg?v=1625262277 615w, https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-pytorch-demo-cover.jpg?v=1625262277 1414w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Googe Driver 上的 colab 程式碼：</h2>



<p>Step 1: 安裝 Google Driver, </p>



<p>Step 2: 把 github 下載的 zi2zip 程式碼放在 Google Driver 同步的目錄裡.</p>



<p>Step 3: 在 Google Driver 裡新增一個 colab, 增加下面的Code, 並按三角型來執行，掛載 Google Driver 到 colab.</p>



<pre class="wp-block-code"><code>from google.colab import drive<br>drive.mount('/gdrive')</code></pre>



<p>附註: 可以使用下面的範例來測試，有沒有正確地切換到有GPU 的執行環境:</p>



<pre class="wp-block-code"><code>import torch
flag = torch.cuda.is_available()
if flag:
    print("CUDA可使用")
else:
    print("CUDA不可用")</code></pre>



<p>Step 4: 使用下面的指令, 把圖片從 google drive 搬到 VM 電腦硬碟. </p>



<pre class="wp-block-code"><code>%cp -rf '/gdrive/My Drive/Colab Notebooks/zi2zi-pytorch/experiments/data-fontname-regular' /root/</code></pre>



<p>附註: 為了避免 Google Driver 搬檔案到 colab 較慢的問題, 可以把 experiment_data_dir 放到 colab 的本地端的儲存空間裡.</p>



<p>Step 4: 使用下面的指令, 開始算圖.</p>



<pre class="wp-block-code"><code>%cd '/gdrive/My Drive/Colab Notebooks/zi2zi-pytorch'<br>!python train.py --experiment_dir=experiments \<br>--experiment_data_dir=/root/data \<br>--gpu_ids=cuda:0 \<br>--input_nc=1 \<br>--batch_size=128 \<br>--epoch=60 \<br>--schedule=30 \<br>--sample_steps=2000 \<br>--checkpoint_steps=500</code></pre>



<p>如果是接續前一個 checkpoint 來算, 增加 &#8211;resume= 參數. </p>



<pre class="wp-block-code"><code>%cd '/gdrive/My Drive/Colab Notebooks/zi2zi-pytorch'
!python train.py --experiment_dir=experiments \
                --experiment_data_dir=/root/data-fontname-regular \
                --resume=22 \
                --gpu_ids=cuda:0 \
                --input_nc=1 \
                --batch_size=64 \
                --epoch=100 \
                --schedule=20 \
                --sample_steps=2000 \
                --lr=0.0005 \
                --checkpoint_steps=100</code></pre>



<p></p>



<p></p>



<h2 class="wp-block-heading">Max造字心得</h2>



<ul class="wp-block-list">
<li><strong>一定要 GPU 或 TPU</strong><br>我曾在自己的筆電上執行過，由於沒有顯示卡的 GPU 支援，跑了 24小時，連 1/40 都沒完成，要執行深度學習，請一定需要在有 GPU 的電腦或伺服器上執行，才能事半功倍。我是多創了一些 google 帳號，依序在不同的帳號裡透過 google colab 來做訓練。<br></li>



<li><strong>要訓練多久？</strong><br>有些字型，才訓練了 12 小時，效果就滿好的，一直重覆還有慢慢餵一些自己精選過，想加強訓練的資料之後，效果會再更好，我 fork 出來的專案，有人在 issue 裡問過這一個問題，上一個作者回答說，這個答案很玄，因為連一開始的原作者都沒有一個答案，最後訓練的結果，可能反而效果會更糟，反正有空就丟著給電腦自己去學，總有一個版本效果會好一點。<br></li>



<li><strong>製作出一個字型檔，需要花多久時間？</strong><br>這個取決於多個因素，如果開發著只有一個人的情況來算，要畫出教育部公告的「常用國字標準字體表」的4808個常用字，每一個字花費5分鐘，一個小時不休息可以畫出20張，一天畫10小時，用 24天就可以達標了。但4808字完全不夠用，大多的字型都是做到 9,000 ~ 12,000 字左右，才會比較不缺字。<br></li>



<li><strong>EuphoriaYan/zi2zi-pytorch 與 xuan-li/zi2zi 的差異</strong><br>這個問題有點難懂，原作者的回答是：</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>zi2zi-pytorch網絡和原版有變動的是在net_D部分倒數第二層加了個1 x 1的卷積，我測試了一下帶或不帶這個1 x 1卷積，感覺和原版差距不大；所以我就沿用了這個帶1 x 1卷積的，可以加快速度減小模型大小，您可以嘗試去掉這個1 x 1卷積試試。<br>還有一個修改點是我們的數據增強方法是基於Font2Font的，和原版不完全一致，您可以查看一下dataset.py里的DatasetFromObj函數，並嘗試修改回原版的數據增強方法。<br>此外，我們在測試的時候，確實有時候模型會經歷「學習」-&gt;「崩潰」-&gt;「重新學習」這種情況，所以我們目前工作的時候是先生成一堆sample然後看哪個checkpoint的sample最好。暫時我們沒時間來修復這個問題，生成效果不佳可能和這個問題也有關係，原作者也說了這網絡相當難以訓練（哭）。您可以嘗試在訓練時不只看last_ckpt_sample，也看看別的ckpt的sample，說不定就有哪個ckpt的sample比較好（玄學）</p>
<cite><a href="https://github.com/EuphoriaYan/zi2zi-pytorch/issues/3">https://github.com/EuphoriaYan/zi2zi-pytorch/issues/3</a><br></cite></blockquote>



<ul class="wp-block-list">
<li><strong>免費版colab 的限制</strong><br>google colab 號稱可以用 12小時，實際上也許 3.5小時，就把 GPU 可以使用的額度用滿了，這時候就把 checkpoint 資料夾裡產生出來的結果，分享給下一個帳號去使用，就可以使用下一個 google 帳號接著做訓練了。參考看看「免費版colab 的限制」：<br><a href="https://stackoverflow.max-everyday.com/2021/05/free-colab-resources-limit/">https://stackoverflow.max-everyday.com/2021/05/free-colab-resources-limit/</a><br></li>



<li><strong>垃圾進，垃圾出</strong><br>要拿去訓練的資料，要慎重選擇，這個有另一個講法叫「資料清洗」(Data Cleansing)。我有試過使用 CJK TC(台標體) 的思源黑體，搭配日系的字型，訓練結果大多是很滿意，但由於文字的部件寫法不同，一開始是使用 CJK JP(日本漢字)的思源黑體去推論時，就可能會省下一些後續處理的時間。<br>例如：日系的草部都是相連的，所以要AI推論出分開的草部的寫法，就不太可能。<br></li>



<li><strong>checkpoint 中繼檔案的取得</strong><br>在 google colab 上訓練的結果，重點就是要取得訓練結果的 checkpoint 檔案，如果資料量有7000筆，使用 batch_size=32 / checkpoint_steps=1000 這2個參數下去訓練，大約每1個小時，可以取得一個 checkpoint 的中續檔案。<br><br>如果資料量有7000筆，使用 batch_size=128 / checkpoint_steps=200 這2個參數下去訓練，大約每20分鐘，可以取得一個 checkpoint 的中續檔案。<br><br>如果調高 batch_size 為 2倍大，記得降低 checkpoint 的 step 數量為 1/2 ，不然就是 2個小時，才能拿到一個 checkpoint, 萬一在 google colab 的 GUP 的額度用完，卻還沒產生 checkpoint, 那就是是白做工了。調高 batch_size 為 2倍相對 RAM 就會長大為二倍, 如果 GPU 只有 4GB RAM, 以 7千筆資料來說, batch_size 設成 24 大約就只占用 3.5GB, 可以順利的訓練. Google colab 給 GPU RAM 是 15GB, 設成 144, 大約是 14.4GB, 可以增加一點點訓練速度.<br><br>建議, 最好讓程式每 10~20分鐘, 產生一個 checkpoint 檔案。把取算完的 checkpoint 複製到其他google 帳號，就可以不中斷地接續訓練模型。<br>相關文章: 清空 google drive 垃圾桶的內容<br><a href="https://stackoverflow.max-everyday.com/2025/02/empty-google-driver-trash/">https://stackoverflow.max-everyday.com/2025/02/empty-google-driver-trash/</a><br></li>



<li><strong>checkpoint 的計算方式</strong><br>以下面的執行結果來說:<br>unpickled total 6644 examples<br>Epoch: [ 0], [ 0/ 256] time: 3.87, d_loss: 1.44975, g_loss: 20.80817, category_loss: 0.00000, cheat_loss: 0.16015, const_loss: 0.03428, l1_loss: 20.61374<br>訓練資料 6644 筆, 設定 batch size=26, 每 run 完一個 epoch, 需要把 6644 每次執行 26筆, 所以需要執行 256 次才能把資料都跑完一遍, checkpoint 就是這個迴圈跑一圈等於一個 checkpoint.<br><br>假設上面的設定值每 run 一個 epoch, 需要 300 秒. (5分鐘), 每 1 epoch 要吃掉 256單位的 checkpoint, 希望每 10分鐘存一次 checkpoint, 那 checkpoint 請設定為 512 即可.<br></li>



<li><strong>重覆訓練少量資料的影響</strong><br>比如說，有幾個部件在 infer 的結果看起來因為寫法差異太大，所以初期效果很差，會有很明顯的某一筆畫中斷，中間有大面積的白色，剛好上半部是像思源，下半部是要學習的筆跡，如果只取出要加強的學習的某些圖片，重覆地學習，的確就會愈來愈像要學習的筆跡，相對其他沒有去練習的部件，就會明顯被弱化，infer 出來的就會變糊糊的。這個似乎沒有辦法避免，只好再做幾次完整（所有部件）的訓練，在接著使用完整的部件再去訓練個60個epoch，結果剛才加強訓練的成果似乎被稀釋掉，又打回加強訓練前的模樣，有可能是受到其他訓練資料的交互影響，有訓練還是有差別，有些其他部件的小細節有增加的更有連貫性，外型較清晰。<br><br>二個在學習的字跡差異太大，會「大量」增加學習的負擔，所以最好可以選擇在「寫法」或「筆觸」都相近的字體來學習，效率上會好很多，不一定要用思源黑體或思源宋體去學，只是使用思源家族，可以 infer 出來的字集會比較完整。在「選擇要學習的2個字跡」有點難取捨。<br><br>最佳的情況就是要學習的字跡超級的工整，這是最佳、最省時間的情況，但似乎很難遇到。很多手寫字型的部件，會遇到出現的位置不太固定，也會造成學習效果較慢。<br><br>有部份作者的風格有點特殊，相同的部件有時是曲線，有時是直角，也會造成學習上的困難。<br></li>



<li><strong>重覆訓練高筆畫數造成的影響</strong><br>如果高筆畫數的字與低筆畫數一起訓練, 從推論結果來看, 高筆畫數的細節不容易正確判斷, 但針對高筆畫數增加訓練, 遇到複雜筆畫的結果有顯著改善, 但相對會讓低筆畫數的長線條產生影響, 影響是線條的寬度可能不能保持一持性, 會微微的造成短暫的鋸齒狀.<br></li>



<li><strong>learning rate decay</strong><br>要設多少才開始 decay, decay 的影響是什麼？目前程式的參數(schedule)預設值是 20. <br><br>也可以挑戰一直訓練，不要產生 decay, 但這樣就會訓練的較慢。Decay 會不會讓訓練速度提升? 實際測試每一個 Epoch 在 decay 前與 decay 後, 花費的時間一樣.<br><br>目前程式 decay 效果是 learning rate 從 1.0 到 0.5， 初期 decay 訓練出來的結果會有大量的波紋與大量的雜訊，但再持續訓練後，線條就會平滑許多，有些多的雜點明顯少掉很多。要解決雜點, 可以挑戰再使用另一個新的模型來進行學習，用來去除雜點與讓線條光滑。<br><br>大約訓練到第 30小時之後，每次decay 會很明顯會破壞畫質，會產生大量的雜點或分叉。</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="1024" height="506" src="https://max-everyday.com/wp-content/uploads/2021/07/囪1-side.jpg" alt="" class="wp-image-14312" srcset="https://max-everyday.com/wp-content/uploads/2021/07/囪1-side.jpg?v=1626890821 1024w, https://max-everyday.com/wp-content/uploads/2021/07/囪1-side-500x247.jpg?v=1626890821 500w, https://max-everyday.com/wp-content/uploads/2021/07/囪1-side-615x304.jpg?v=1626890821 615w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">左邊是第21 checkpoint, 右邊是第22 <meta charset="utf-8">checkpoint。</figcaption></figure>
</div>


<p>下圖是某一個字在訓練過程的變化, 大約每一個單位是 15 個Epoch 左右, 初期算出來的筆畫之間會有很明顯的暈染, 大約到第3階段會開始出現雜點, 到第4階段就算差不多完成了.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="205" src="https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-yao-01-side-1024x205.jpg?v=1736942095" alt="" class="wp-image-21315" srcset="https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-yao-01-side-1024x205.jpg?v=1736942095 1024w, https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-yao-01-side-500x100.jpg?v=1736942095 500w, https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-yao-01-side-615x123.jpg?v=1736942095 615w, https://max-everyday.com/wp-content/uploads/2021/07/zi2zi-yao-01-side.jpg?v=1736942095 1500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>learning rate 相關說明:<br><a href="https://stackoverflow.max-everyday.com/2025/02/zi2zi-pytorch-initial-learning-rate-0-001/">https://stackoverflow.max-everyday.com/2025/02/zi2zi-pytorch-initial-learning-rate-0-001/</a></p>



<p>建議訓練的中/後期, 不要使用 0.001 來訓練, 記得增加 &#8211;lr=0.0005 參數, 從 0.0005 開始訓練, 可以避免比較不會長出雜點, 其實長出雜點的解法也很容易解決, 可以用訓練出來的, 再次做訓練, 就幾乎沒雜點.</p>



<p></p>



<ul class="wp-block-list">
<li><strong>中文/英文/符號要一起訓練嗎？</strong><br>如果筆跡的規則簡單，一起訓練滿省事，但是一般的情況下，建議分開訓練會好一些，變數較少，問題會較少。而且部份有風格的字型，中文字套用的風格跟英文不太一樣。<br></li>



<li><strong>訓練資料「多對一」的問題</strong><br>手寫字型每個字都是獨特的存在，如果使用思源黑體，比如&#8221;女&#8221;的部件，在工整的思源黑體或宋體，女出現的位置幾乎會相同情況下，拿來訓導的資料卻都是不一致的寫法，如此，預測難度變的極高，產生的結果會偏向平均值，且較模糊。<br><br>有曾經遇到一個字型，規則明明就很簡單，應該很容易可以訓練出來，例如「斥」部件，很奇怪，餵了很多「斤」與「斥」部件的資料，訓練了6小時，某一些部件就是訓練不出來，筆畫會中斷，推測應該是先使用思源黑體CJK JP去學習，但對「點」的寫法遇到不一致的情況，然後再改用思源黑體CJK TC去推論，CJK JP與TC 剛好在 刃、斥、凡、丸系列的寫法不剛，造成AI在訓練初期的障礙。<br></li>



<li><strong>訓練出來的結果比原作者對齊位置更準確，規則更一致</strong><br>有些成功訓練出來的字，會比原作者的規則更明確，也可能是因為AI學習到的統計值偏向平均值，所以套用出來的規則沒辦法很多個，以下圖來說，黑色是原作者，套用圓角的時間點有特定的規則，有時是圓角，有時是直角，AI訓練出來是紅字部份，幾乎都是套出圓角風格，如果把特定規則的字與一般規則的值，都一起訓練時，就會產生特定規則的字的權重被一般規則同化掉。這個解法，需要把這種有特殊規則的字挑出來，增加訓練次數，就可以增加特定規則的權重。<br><br>就是對齊、中宮緊與鬆的配置比例，AI訓練出來結果常常優於對空間感較遲鈍的我們一般人。</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="640" height="640" src="https://max-everyday.com/wp-content/uploads/2021/08/U_22497.bmp.jpg" alt="" class="wp-image-14370" srcset="https://max-everyday.com/wp-content/uploads/2021/08/U_22497.bmp.jpg?v=1627764959 640w, https://max-everyday.com/wp-content/uploads/2021/08/U_22497.bmp-500x500.jpg?v=1627764959 500w, https://max-everyday.com/wp-content/uploads/2021/08/U_22497.bmp-200x200.jpg?v=1627764959 200w, https://max-everyday.com/wp-content/uploads/2021/08/U_22497.bmp-615x615.jpg?v=1627764959 615w, https://max-everyday.com/wp-content/uploads/2021/08/U_22497.bmp-510x510.jpg?v=1627764959 510w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>



<ul class="wp-block-list">
<li><strong>原作者的例外</strong><br>預期應該使用一樣的寫法, 但作者有獨特的見解, 所以訓練結果變的很奇怪&#8230;, 常見的字有: 僅勤謹槿瑾漢艱傳轉專</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="187" src="https://max-everyday.com/wp-content/uploads/2021/07/0_0039_B3-tile-1024x187.jpg" alt="" class="wp-image-21322" srcset="https://max-everyday.com/wp-content/uploads/2021/07/0_0039_B3-tile-1024x187.jpg?v=1737028199 1024w, https://max-everyday.com/wp-content/uploads/2021/07/0_0039_B3-tile-500x91.jpg?v=1737028199 500w, https://max-everyday.com/wp-content/uploads/2021/07/0_0039_B3-tile-1536x281.jpg?v=1737028199 1536w, https://max-everyday.com/wp-content/uploads/2021/07/0_0039_B3-tile-615x112.jpg?v=1737028199 615w, https://max-everyday.com/wp-content/uploads/2021/07/0_0039_B3-tile.jpg?v=1737028199 1914w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>建議解法: 原作者的獨特見解的字, 應該排除到訓練的清單裡, 這個等最後字型產生出來後, 再手動去調整。</p>



<p></p>



<ul class="wp-block-list">
<li><strong>訓練資料「<strong>一</strong>對<strong>多</strong>」的問題</strong><br>下圖預期這一列, 分別使用了字型A, 與思源黑體, 對於【子】的部件，在思源黑體是沒有彎曲與襯線， 但在字型A 就有, 這變成在思源黑體裡同一個規則到了字型A 會有二個情況產生, 這個子的寫法, 常見的字有: 仔子李孖存</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="193" src="https://max-everyday.com/wp-content/uploads/2021/07/0_0003-tile-2-1024x193.jpg?v=1737001669" alt="" class="wp-image-21318" srcset="https://max-everyday.com/wp-content/uploads/2021/07/0_0003-tile-2-1024x193.jpg?v=1737001669 1024w, https://max-everyday.com/wp-content/uploads/2021/07/0_0003-tile-2-500x94.jpg?v=1737001669 500w, https://max-everyday.com/wp-content/uploads/2021/07/0_0003-tile-2-1536x290.jpg?v=1737001669 1536w, https://max-everyday.com/wp-content/uploads/2021/07/0_0003-tile-2-2048x387.jpg?v=1737001669 2048w, https://max-everyday.com/wp-content/uploads/2021/07/0_0003-tile-2-615x116.jpg?v=1737001669 615w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>建議解法: </p>



<ul class="wp-block-list">
<li>方案1:用力地增加訓練次數就可以解決, 但這個變成很累與花時間, </li>



<li>方案2: 比較簡單的解法是針對有問題的這種一對多的, 另外再使用特殊的分支來訓練特定的字, 會簡單與省時間一點, 但缺點就是要增加人工的介入.</li>
</ul>



<p></p>



<ul class="wp-block-list">
<li><strong>原作者的筆畫不一致</strong><br>立與言, 在日文裡長很像, 該選擇變成水平線還是垂直線, 作者可能也會搞混.</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="285" src="https://max-everyday.com/wp-content/uploads/2021/07/0_4054-tile-1024x285.jpg?v=1737102530" alt="" class="wp-image-21326" srcset="https://max-everyday.com/wp-content/uploads/2021/07/0_4054-tile-1024x285.jpg?v=1737102530 1024w, https://max-everyday.com/wp-content/uploads/2021/07/0_4054-tile-500x139.jpg?v=1737102530 500w, https://max-everyday.com/wp-content/uploads/2021/07/0_4054-tile-615x171.jpg?v=1737102530 615w, https://max-everyday.com/wp-content/uploads/2021/07/0_4054-tile.jpg?v=1737102530 1099w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>想知道某一個部件在字型中出現的情況, 先到部件查詢網站:</p>



<ul class="wp-block-list">
<li><a href="https://zi-hi.com/sp/uni/CJKSeeker">https://zi-hi.com/sp/uni/CJKSeeker</a></li>



<li><a href="https://ctext.org/dictionary.pl?if=gb&amp;char=%E5%AD%97">https://ctext.org/dictionary.pl?if=gb&amp;char=%E5%AD%97</a></li>
</ul>



<p>查詢目前字型對映到那些字的實作: <a href="https://codereview.max-everyday.com/remove-selected-char/">https://codereview.max-everyday.com/remove-selected-char/</a></p>



<p>勺 應該水平還是斜線, 沒想到思源黑體用的是水平線, 出乎意料之外, 常見字: 勺杓釣豹灼</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="192" src="https://max-everyday.com/wp-content/uploads/2021/07/0_0050-tile-1024x192.jpg?v=1737103816" alt="" class="wp-image-21328" srcset="https://max-everyday.com/wp-content/uploads/2021/07/0_0050-tile-1024x192.jpg?v=1737103816 1024w, https://max-everyday.com/wp-content/uploads/2021/07/0_0050-tile-500x94.jpg?v=1737103816 500w, https://max-everyday.com/wp-content/uploads/2021/07/0_0050-tile-1536x287.jpg?v=1737103816 1536w, https://max-everyday.com/wp-content/uploads/2021/07/0_0050-tile-615x115.jpg?v=1737103816 615w, https://max-everyday.com/wp-content/uploads/2021/07/0_0050-tile.jpg?v=1737103816 1636w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>還有一些, 很容易產生寫法不同的字, 例如: 巳等部件, 常見字: 瞥敝幣弊斃蔽鼈, 靜清瀞淨淫雞, 卷券倦捲綣, 益溢.</p>



<p>戶部寫法不同: 扇煽搧戶房翩諞,</p>



<p>者部寫法不同: 堵屠著賭睹豬潴瀦箸薯藷諸覩赭躇闍,</p>



<p>肖部寫法不同: 肖屑消哨俏鎖蛸鞘</p>



<p>火部寫法不同, </p>



<p>壬寫法不同, 例如: 筳, 在 cjktc 是土, 在 cjkjp 是士.</p>



<p>俞部寫法不同: 愈俞偷愉逾瘉覦</p>



<p>示部寫法不同: 神榊, 祁祇</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="826" height="192" src="https://max-everyday.com/wp-content/uploads/2021/07/2025-01-20_13-30_5h.jpg?v=1737351068" alt="" class="wp-image-21370" srcset="https://max-everyday.com/wp-content/uploads/2021/07/2025-01-20_13-30_5h.jpg?v=1737351068 826w, https://max-everyday.com/wp-content/uploads/2021/07/2025-01-20_13-30_5h-500x116.jpg?v=1737351068 500w, https://max-everyday.com/wp-content/uploads/2021/07/2025-01-20_13-30_5h-615x143.jpg?v=1737351068 615w" sizes="auto, (max-width: 826px) 100vw, 826px" /></figure>



<p></p>



<p>食部寫法不同: 食飯, 榔朗郎瑯螂, 蝕餅飴餐餓</p>



<p>羽部寫法不同: 溺弱鰯, 濯擢耀燿躍</p>



<p>巳部寫法不同: 包抱胞鞄泡砲,</p>



<p>東部寫法不同: 東柬煉練鍊闌爛瀾</p>



<p>酋部寫法不同: 酋猶猷尊噂楢樽蕕</p>



<p>曾部寫法不同: 曾僧噌增甑</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="543" src="https://max-everyday.com/wp-content/uploads/2021/07/0_0455-tile-1024x543.jpg?v=1737103381" alt="" class="wp-image-21327" srcset="https://max-everyday.com/wp-content/uploads/2021/07/0_0455-tile-1024x543.jpg?v=1737103381 1024w, https://max-everyday.com/wp-content/uploads/2021/07/0_0455-tile-500x265.jpg?v=1737103381 500w, https://max-everyday.com/wp-content/uploads/2021/07/0_0455-tile-1536x815.jpg?v=1737103381 1536w, https://max-everyday.com/wp-content/uploads/2021/07/0_0455-tile-615x326.jpg?v=1737103381 615w, https://max-everyday.com/wp-content/uploads/2021/07/0_0455-tile.jpg?v=1737103381 1636w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>冬部寫法不同, 沒想到冬和羽一樣, 有不同寫法, 常見有: 疼螽</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="512" height="256" src="https://max-everyday.com/wp-content/uploads/2021/07/0_0006.png?v=1737348648" alt="" class="wp-image-21366" srcset="https://max-everyday.com/wp-content/uploads/2021/07/0_0006.png?v=1737348648 512w, https://max-everyday.com/wp-content/uploads/2021/07/0_0006-500x250.png?v=1737348648 500w, https://max-everyday.com/wp-content/uploads/2021/07/0_0006-510x256.png?v=1737348648 510w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure>



<p></p>



<p>曷部寫法不同: 曷葛偈掲揭喝</p>



<p>彥部寫法不同: 薩產顏顔彥諺</p>



<p>組合起來的比例不同: 鏖魘</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="635" height="198" src="https://max-everyday.com/wp-content/uploads/2021/07/2025-01-20_16-22_5i.jpg?v=1737361463" alt="" class="wp-image-21394" srcset="https://max-everyday.com/wp-content/uploads/2021/07/2025-01-20_16-22_5i.jpg?v=1737361463 635w, https://max-everyday.com/wp-content/uploads/2021/07/2025-01-20_16-22_5i-500x156.jpg?v=1737361463 500w, https://max-everyday.com/wp-content/uploads/2021/07/2025-01-20_16-22_5i-615x192.jpg?v=1737361463 615w" sizes="auto, (max-width: 635px) 100vw, 635px" /></figure>



<p>說明: 訓練過半的話, 會以目標筆畫為準, 訓練還沒過半的話, 會以來源 (我的個案是思源黑體) 為準, 要省時間的話, 這個字最好不訓練. </p>



<p></p>



<p>建議解法: 看是要幫原作者修改, 或是先從訓練清單裡移除.</p>



<p></p>



<p>豕部寫法不同: 劇墜壕嫁家據曚朦檬毅溷濛濠瀦燧燹矇稼糘艨蒙豕豚豢豪豬逐遂遯遽邃醵隊隧</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="367" src="https://max-everyday.com/wp-content/uploads/2021/07/0_00000-tile-1024x367.png?v=1738987806" alt="" class="wp-image-21475" srcset="https://max-everyday.com/wp-content/uploads/2021/07/0_00000-tile-1024x367.png?v=1738987806 1024w, https://max-everyday.com/wp-content/uploads/2021/07/0_00000-tile-500x179.png?v=1738987806 500w, https://max-everyday.com/wp-content/uploads/2021/07/0_00000-tile-1536x551.png?v=1738987806 1536w, https://max-everyday.com/wp-content/uploads/2021/07/0_00000-tile-615x221.png?v=1738987806 615w, https://max-everyday.com/wp-content/uploads/2021/07/0_00000-tile.png?v=1738987806 1636w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>解法: 墜壕嫁家據曚朦檬濛濠瀦矇稼糘艨蒙豕豚豪遯遽醵隊, 這幾個字從 cjktc 拿來訓練, 再手動調整一下寶蓋頭斜線與直線的問題.</p>



<p></p>



<p><strong>Q: 針對已經訓練一段時間的模型的 checkpoint, 發現某幾個字的 infer 結果不滿意, 進而發現筆晝的對應應該要調整, 這時候應該從頭訓練, 還是排除有問題的, 進行接續訓練?</strong></p>



<p>A: 這個問題, 似乎沒有標準答案, 因為不管選擇那一個, 都很花時間. 實際測試, 猜測選&#8221;重新訓練&#8221;會比較省時間.</p>



<p>這個問題有2種情況, 個案是寫法不同造成學習效果差, 例如: 羽字, 是要使用二條平行線, 還是一個直角, 一是找到的標準答案, 這時候就可以只去訓練標準答案來修正, 這個要生出標準答案還滿簡單, 但有些字要生出標準答案就很難, 例如: 鏖魘.</p>



<p>或是針對有問題的這些字, 改用重新訓練的版本, 其他大部份的字, 使用已經訓練一陣子的版本, 如果針對不同輸出的字, 使用不同的 checkpoint 版本(Interpolation) 會讓風格程度不同, 也很麻煩. </p>



<p>實際測試, 被消除掉的線條, 讓訓練到可以長出新的線條, 很花時間. </p>



<p>總結, 針對同一個字, 因為來源與目的風格差異很大而且筆畫規則不同的二個圖片, 最好不要做訓練, 或是修改一下要訓練的字的來源與目的圖片, 消除掉有問題的筆畫, 讓其他部份的筆畫還可以持續訓練.</p>



<p>實際測試把筆畫規則不同的筆畫先用繪圖軟體刪除之後, 例如: 有點點的者, 在訓練前, 先同步訓練資料都是沒有點的者, 訓練次數增加很多之後, 即使輸入有點點的者, 也會拿到沒有點的者, 這個意思是說, 訓練資料必需先準備好有點的, 與沒點的, 不然訓練出來都會只有一種結果, 如果訓練的次數沒有很多的情況下, 有點的者輸入的情況下, 可以產生出有點的者.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>有一個已經花了很多時間訓練的模型, 發現有一個字推論結果看起來筆畫怪怪的, 才發現是對應有問題: 寧</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="285" src="https://max-everyday.com/wp-content/uploads/2021/07/23527-tile-A-1024x285.png?v=1737889454" alt="" class="wp-image-21423" srcset="https://max-everyday.com/wp-content/uploads/2021/07/23527-tile-A-1024x285.png?v=1737889454 1024w, https://max-everyday.com/wp-content/uploads/2021/07/23527-tile-A-500x139.png?v=1737889454 500w, https://max-everyday.com/wp-content/uploads/2021/07/23527-tile-A-615x171.png?v=1737889454 615w, https://max-everyday.com/wp-content/uploads/2021/07/23527-tile-A.png?v=1737889454 1099w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>說明: 左圖是推論結果, 右圖是, 訓練的對照表.</p>



<p></p>



<p>解法: 要把這2種情況餵進去做訓練.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="285" src="https://max-everyday.com/wp-content/uploads/2021/07/0_9001A-tile-B-1024x285.png?v=1737889530" alt="" class="wp-image-21424" srcset="https://max-everyday.com/wp-content/uploads/2021/07/0_9001A-tile-B-1024x285.png?v=1737889530 1024w, https://max-everyday.com/wp-content/uploads/2021/07/0_9001A-tile-B-500x139.png?v=1737889530 500w, https://max-everyday.com/wp-content/uploads/2021/07/0_9001A-tile-B-615x171.png?v=1737889530 615w, https://max-everyday.com/wp-content/uploads/2021/07/0_9001A-tile-B.png?v=1737889530 1099w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>說明: 手動做出這2張圖,  丟進去做訓練.</p>



<p></p>



<p>在額外訓練2百個 epoch, 筆畫就長出來了, 但很花時間, 一開始有正確的資料很重要. </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="587" height="306" src="https://max-everyday.com/wp-content/uploads/2021/07/23527-O-tile.png?v=1737889560" alt="" class="wp-image-21425" srcset="https://max-everyday.com/wp-content/uploads/2021/07/23527-O-tile.png?v=1737889560 587w, https://max-everyday.com/wp-content/uploads/2021/07/23527-O-tile-500x261.png?v=1737889560 500w" sizes="auto, (max-width: 587px) 100vw, 587px" /></figure>



<p></p>



<p>欠的人, 該不該相連? 下面是 zen maru 規則沒一致, 接下來遇到的問題是, 要用來推論的 noto sans 居然讓規則一致了. @_@; &#8230;. </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="684" height="411" src="https://max-everyday.com/wp-content/uploads/2021/07/2025-03-21_18-32_7k.jpg?v=1742553250" alt="" class="wp-image-21671" srcset="https://max-everyday.com/wp-content/uploads/2021/07/2025-03-21_18-32_7k.jpg?v=1742553250 684w, https://max-everyday.com/wp-content/uploads/2021/07/2025-03-21_18-32_7k-500x300.jpg?v=1742553250 500w, https://max-everyday.com/wp-content/uploads/2021/07/2025-03-21_18-32_7k-615x370.jpg?v=1742553250 615w" sizes="auto, (max-width: 684px) 100vw, 684px" /></figure>



<p>面對作者, 對於部件使用不同規則, 該怎麼處理?</p>



<p></p>



<p>韋規則不一致:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://max-everyday.com/wp-content/uploads/2021/07/20553-tile-1024x1024.png?v=1742828354" alt="" class="wp-image-21677" srcset="https://max-everyday.com/wp-content/uploads/2021/07/20553-tile-1024x1024.png?v=1742828354 1024w, https://max-everyday.com/wp-content/uploads/2021/07/20553-tile-500x500.png?v=1742828354 500w, https://max-everyday.com/wp-content/uploads/2021/07/20553-tile-200x200.png?v=1742828354 200w, https://max-everyday.com/wp-content/uploads/2021/07/20553-tile-615x615.png?v=1742828354 615w, https://max-everyday.com/wp-content/uploads/2021/07/20553-tile-510x510.png?v=1742828354 510w, https://max-everyday.com/wp-content/uploads/2021/07/20553-tile.png?v=1742828354 1252w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>結論: zen maru 的圍幃, 跟其他不一致, 這個問題在 noto sans cjktc 上滿複雜的, 居然有很多種寫法!</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">超過框框的字要如何處理?</h2>



<p>請參考: <a href="https://stackoverflow.max-everyday.com/2025/02/zi2zi-image-over-flow/">https://stackoverflow.max-everyday.com/2025/02/zi2zi-image-over-flow/</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">日文字沒有出現的符號, 要怎麼訓練?</h2>



<p>有些符號, 訓練的資料裡可能完全沒出現過, 例如:</p>



<ul class="wp-block-list">
<li>辵部: 有二點與一點的差別, 追槌樋進近,蓬遊鏈</li>



<li>草部: cjktc 是完全分開, 而且還有一些例外, 例如: 歡觀勸敬驚警灌夢等字, 不算是草.</li>



<li>還有很多寫法不同, 例如: 艹女糹糸辶肉月言雨羽青兌直真戶北㕣台厶酋宀亠肖俞礻包東丷曾冬曷彥豕</li>
</ul>



<p>解法參考: <a href="https://stackoverflow.max-everyday.com/2025/02/zi2zi-unseen-data/">https://stackoverflow.max-everyday.com/2025/02/zi2zi-unseen-data/</a></p>



<p>實際測試, 不同語言最好分開訓練, 因為同一個模型要去判斷不同語言, 難度太高, 雖然輸入的資料已經有加入 cjktc, 但實際上會推論出介於 cjktc / cjkjp 之間的草字頭. 有一些由於訓練資料的 cjktc 的草頭很接近, 留白處很少, 而 cjkjp 是幾乎相連, 因為訓練出來的結果, 會是極為接近的草字頭, 不符合預期, 但以輸入的資料來說又很合理.</p>



<p>要給cjktc 的模型, 在接近穩定時, 不要放入 cjkjp 與 cjktc 相沖突的資料.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">太細與太粗的線條, 容易推論錯, 預期應該是圓形筆觸, 變成方形.</h2>



<p>解法: 改用 512&#215;512 解析度訓練.</p>



<p><strong>discriminators file size:</strong></p>



<ul class="wp-block-list">
<li>512&#215;512 在 discriminators 的 final_channels=256 情況下, file size=174MB</li>



<li>512&#215;512 在 discriminators 的 final_channels=128 情況下, file size=89MB</li>



<li>256&#215;256 在 discriminators 的 final_channels=512 情況下, file size=98MB</li>



<li>256&#215;256 在 discriminators 的 final_channels=256 情況下, file size=27MB</li>
</ul>



<p>在訓練量次數少的情況下, epoch &lt; 10, final_channels 差一倍情況下, 推論結果沒有顯著差異.</p>



<p><strong>Batch size 的選擇, colab 的 15GB RAM 的情況下, 取決於模型的大小, </strong></p>



<ul class="wp-block-list">
<li>512&#215;512, batch size 大約在 32 &#8211; 36.</li>



<li>256&#215;256, 的 batch size 可以在 144-152</li>
</ul>



<p>建議, RAM 使用在 13.0GB ~ 14.5 GB 之間比較安全, 有時候是在 epoch 0 的後半部資料訓練時才 torch.OutOfMemoryError: CUDA out of memory.</p>



<p>訓練花費時間, 訓練資料在 7000筆左右. </p>



<ul class="wp-block-list">
<li>512&#215;512, 1個 Epoch, 大約 1320秒,</li>



<li>256&#215;256, 1個 Epoch, 大約 450秒, </li>
</ul>



<p>512&#215;512, </p>



<pre class="wp-block-preformatted">Epoch: [ 0], [   0/ 235] time: 21.60, d_loss: 5.16978, g_loss: 23.27426, category_loss: 0.01193, cheat_loss: 2.28568, const_loss: 0.24754, l1_loss: 20.74104<br>Epoch: [ 0], [ 100/ 235] time: 573.34, d_loss: 7.10198, g_loss: 23.13695, category_loss: 0.00000, cheat_loss: 1.06090, const_loss: 0.21971, l1_loss: 21.79716<br>Epoch: [ 0], [ 200/ 235] time: 1125.35, d_loss: 4.77741, g_loss: 26.83415, category_loss: 0.08033, cheat_loss: 3.22208, const_loss: 0.25817, l1_loss: 23.35390<br>Epoch: [ 1], [   0/ 235] time: 1324.45, d_loss: 4.68911, g_loss: 24.61167, category_loss: 0.00790, cheat_loss: 2.40229, const_loss: 0.33275, l1_loss: 21.87663</pre>



<p>256&#215;256</p>



<pre class="wp-block-preformatted">Epoch: [ 1], [   0/  45] time: 458.64, d_loss: 25.33166, g_loss: 59.14429, category_loss: 0.00000, cheat_loss: 32.10165, const_loss: 0.05294, l1_loss: 26.98970<br>Epoch: [ 2], [   0/  45] time: 909.97, d_loss: 18.75299, g_loss: 46.67240, category_loss: 0.00000, cheat_loss: 24.54880, const_loss: 0.06139, l1_loss: 22.06221</pre>



<p></p>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">EuphoriaYan 的參數調整</h2>



<p>主要調整在 net_D部分倒數第二層加了个1 x 1的卷積, 程式碼:<br><a href="https://github.com/EuphoriaYan/zi2zi-pytorch/blob/master/model/discriminators.py">https://github.com/EuphoriaYan/zi2zi-pytorch/blob/master/model/discriminators.py</a></p>



<pre class="wp-block-code"><code>def __init__(self, input_nc, embedding_num, ndf=64, norm_layer=nn.BatchNorm2d, image_size=256):
    """Construct a PatchGAN discriminator
    Parameters:
        input_nc (int)  -- the number of channels in input images
        ndf (int)       -- the number of filters in the first conv layer
        norm_layer      -- normalization layer
    """
    super(Discriminator, self).__init__()
    if type(norm_layer) == functools.partial:  # no need to use bias as BatchNorm2d has affine parameters
        use_bias = norm_layer.func != nn.BatchNorm2d
    else:
        use_bias = norm_layer != nn.BatchNorm2d

    # as tf implement, kernel_size = 5, use "SAME" padding, so we should use kw = 5 and padw = 2
    # kw = 4
    # padw = 1
    kw = 5
    padw = 2
    sequence = &#91;
        nn.Conv2d(input_nc, ndf, kernel_size=kw, stride=2, padding=padw),
        nn.LeakyReLU(0.2, True)
    ]
    nf_mult = 1
    nf_mult_prev = 1
    # in tf implement, there are only 3 conv2d layers with stride=2.
    # for n in range(1, 4):
    for n in range(1, 3):  # gradually increase the number of filters
        nf_mult_prev = nf_mult
        nf_mult = min(2 ** n, 8)
        sequence += &#91;
            nn.Conv2d(ndf * nf_mult_prev, ndf * nf_mult, kernel_size=kw, stride=2, padding=padw, bias=use_bias),
            norm_layer(ndf * nf_mult),
            nn.LeakyReLU(0.2, True)
        ]

    nf_mult_prev = nf_mult
    nf_mult = 8
    sequence += &#91;
        nn.Conv2d(ndf * nf_mult_prev, ndf * nf_mult, kernel_size=kw, stride=1, padding=padw, bias=use_bias),
        norm_layer(ndf * nf_mult),
        nn.LeakyReLU(0.2, True)
    ]

    # Maybe useful? Experiment need to be done later.
    # output 1 channel prediction map
    sequence += &#91;nn.Conv2d(ndf * nf_mult, 1, kernel_size=kw, stride=1, padding=padw)]

    self.model = nn.Sequential(*sequence)
    # final_channels = ndf * nf_mult
    final_channels = 1
    # use stride of 2 conv2 layer 3 times, cal the image_size
    image_size = math.ceil(image_size / 2)
    image_size = math.ceil(image_size / 2)
    image_size = math.ceil(image_size / 2)
    # 524288 = 512(num_of_channels) * (w/2/2/2) * (h/2/2/2) = 2^19  (w=h=256)
    # 131072 = 512(num_of_channels) * (w/2/2/2) * (h/2/2/2) = 2^17  (w=h=128)
    final_features = final_channels * image_size * image_size
    self.binary = nn.Linear(final_features, 1)
    self.catagory = nn.Linear(final_features, embedding_num)</code></pre>



<p>說明: 這個調整影響滿大的, 相關說明:<br><a href="https://stackoverflow.max-everyday.com/2025/02/zi2zi-pytorch-discriminator-final-channels/">https://stackoverflow.max-everyday.com/2025/02/zi2zi-pytorch-discriminator-final-channels/</a></p>



<p>但是看一下網路上其他解法, 似乎大家也把 final features 也設成 1:<br><a href="https://github.com/iamyufan/MF-Net/tree/main/models">https://github.com/iamyufan/MF-Net/tree/main/models</a></p>



<p>實際測試, final_channels = 1 與 final_channels = 512 訓練 regular style 的結果, 效果差不多.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">增加2個殘差塊(ResidualBlock)與1個自注意力機制層後, 訓練相同資料花費時間的比較:</h2>



<p>預設的 8層, 訓練的是思源黑體Regular字重</p>



<pre class="wp-block-preformatted">unpickled total 6644 examples<br>Epoch: [ 1], [   0/  47] time: 381.12, d_loss: 1.36874, g_loss: 5.04551, category_loss: 0.00000, cheat_loss: 0.73770, const_loss: 0.02055, l1_loss: 4.28725<br>unpickled total 6644 examples<br>Epoch: [ 2], [   0/  47] time: 745.10, d_loss: 1.38180, g_loss: 4.90196, category_loss: 0.00000, cheat_loss: 0.70541, const_loss: 0.01073, l1_loss: 4.18582<br>Checkpoint: save checkpoint step 100</pre>



<p>預設的 8層+2個殘差塊(ResidualBlock)與1個自注意力機制層, 訓練的是思源黑體Regular字重:</p>



<pre class="wp-block-preformatted">unpickled total 6644 examples<br>Epoch: [ 1], [   0/  47] time: 470.44, d_loss: 1.34245, g_loss: 15.51074, category_loss: 0.00147, cheat_loss: 0.59637, const_loss: 0.04504, l1_loss: 14.86819<br>unpickled total 6644 examples<br>Epoch: [ 2], [   0/  47] time: 946.34, d_loss: 1.32939, g_loss: 13.35053, category_loss: 0.00094, cheat_loss: 1.01953, const_loss: 0.05043, l1_loss: 12.27941</pre>



<p>預設的 8層+2個殘差塊(ResidualBlock)與1個自注意力機制層, 訓練筆劃較細的思源宋體Regular字重:</p>



<pre class="wp-block-preformatted">unpickled total 6665 examples<br>Epoch: [ 1], [   0/  46] time: 433.91, d_loss: 2.99246, g_loss: 32.46876, category_loss: 0.29926, cheat_loss: 0.96215, const_loss: 0.03789, l1_loss: 31.40315<br>unpickled total 6665 examples<br>Epoch: [ 2], [   0/  46] time: 862.37, d_loss: 1.94354, g_loss: 28.66256, category_loss: 0.00794, cheat_loss: 1.22368, const_loss: 0.04419, l1_loss: 27.39224</pre>



<p>說明: 以相同的思源黑體Regular字重來說, 從 381秒增加為 470秒, 增加約 23% 的時間.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">文字的推論 (infer)</h2>



<p>分享推論的相關心得.</p>



<ul class="wp-block-list">
<li><strong>應該用 CPU 還是 GPU 進行 infer?</strong><br>家的不到2萬的中古筆腦的 GPU 只有 4GB RAM, 一次推論的量很少, batch_size 設在 26 就用滿 4GB RAM了, 一次推論完 44,000 個字, 大約需要1小時, 但是在 colab 推論, 相同的程式碼, 大約 10分鐘之內, 或更短的時間就全部都推論完, 因此建議在 colab 上進行推論, 分享colab 上的部份指令:</li>
</ul>



<p><strong>Clone source code to colab HDD</strong></p>



<pre class="wp-block-code"><code>%cp -rf '/gdrive/My Drive/Colab Notebooks/zi2zi-pytorch' /root/<br>%ls -al /root<br>%pwd</code></pre>



<p></p>



<p><strong>Make potrace executeable</strong></p>



<pre class="wp-block-code"><code>%cd /root/zi2zi-pytorch/<br>!chmod +x /root/zi2zi-pytorch/potrace<br>%ls -al</code></pre>



<p></p>



<p><strong>Infer to colab HDD (Full)</strong></p>



<pre class="wp-block-code"><code>%cd '/root/zi2zi-pytorch'
!python infer.py --experiment_dir=experiments \
--experiment_checkpoint_dir=experiments/checkpoint \
--input_nc=1 \
--gpu_ids=cuda:0 \
--batch_size=256 \
--resume=204 \
--from_txt \
--generate_filename_mode=unicode_int \
--src_font=source/font/SweiGothicCJKsc-Regular.ttf \
--src_font_x_offset=0 \
--src_font_y_offset=0 \
--src_txt_file=charset/charset_SweiGothicCJKsc-Regular.txt \
--crop_src_font \
--anti_alias=10 \
--image_ext=pbm \
--skip_exist \
--resize_canvas_size=1000 \
--label=25</code></pre>



<p></p>



<p><strong>Convert infered result to SVG</strong></p>



<pre class="wp-block-code"><code>%cd '/root/zi2zi-pytorch'
!python sh/bmp_to_svg.py --input experiments/infer/25 --output experiments/infer/25_svg</code></pre>



<p>這個 bmp_to_svg script, 請參考: 批次轉換目錄下的 bmp 為 svg 檔<br><a href="https://codereview.max-everyday.com/bmp-to-svg/">https://codereview.max-everyday.com/bmp-to-svg/</a></p>



<p>potrace 外部指令的取得, colab 環境請下載 linux-x86_64 的版本.<br><a href="https://potrace.sourceforge.net/#downloading">https://potrace.sourceforge.net/#downloading</a></p>



<p></p>



<p><strong>Sync checkpoint from google driver to colab</strong></p>



<p>%cd &#8216;/gdrive/My Drive/Colab Notebooks/zi2zi-pytorch/experiments/checkpoint-old-maruko&#8217;<br>%cp *.pth /root/zi2zi-pytorch/experiments/checkpoint<br>%ls -al /root/zi2zi-pytorch/experiments/checkpoint</p>



<p></p>



<p><strong>Sync font file from google driver to colab</strong></p>



<pre class="wp-block-code"><code>%cd '/gdrive/My Drive/Colab Notebooks/zi2zi-pytorch/source/font'
%cp *.ttf /root/zi2zi-pytorch/source/font</code></pre>



<p></p>



<p><strong>Package as tar from colab HDD to google driver</strong></p>



<pre class="wp-block-code"><code>%cd '/root/zi2zi-pytorch'
!tar -cvzf infert_204_regular_cjksc_svg.tar experiments/infer/25_svg
%cp /root/zi2zi-pytorch/infert_204_regular_cjksc_svg.tar '/gdrive/My Drive/Colab Notebooks/zi2zi-pytorch/experiments'</code></pre>



<p>以上就可以取得 svg 檔, 並推回 google,  後續就是使用 import svg  就可以取得字型的檔案, 參考:<br><a href="https://codereview.max-everyday.com/import-svg-to-font/">https://codereview.max-everyday.com/import-svg-to-font/</a></p>



<p></p>



<ul class="wp-block-list">
<li><strong>應該用 CPU 還是 GPU 進行 infer?</strong><br>結論是, 用便宜的GPU 也跑的比 CPU 快, <br>infer 文字數目 646個, 實測便宜的遊戲用GPU, 只有 4GB, 的 batch size 可以設到 24, 使用 CPU infer 花費 188秒 , 使用 GPU 花費 118秒, 有時候是跑出 117秒, 相差一點點, GPU 的執行時間, 大約是CPU  的 2/3, 算滿快的. </li>
</ul>



<pre class="wp-block-code"><code># AMD CPU RYZEN 5000 series 電池模式
cold start time: 190.53, hot start time 188.99

# NVIDIA GeForce GTX 1650, GPU 4GB, 電池模式
cold start time: 119.82, hot start time 118.17

# AMD CPU RYZEN 5000 series, 插電模式.
cold start time: 106.89, hot start time 105.93

# NVIDIA GeForce GTX 1650, GPU 4GB, 插電模式.
cold start time: 119.82, hot start time 71.50</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="651" height="591" src="https://max-everyday.com/wp-content/uploads/2021/07/2025-01-11_19-50_54.jpg?v=1736596301" alt="" class="wp-image-21297" srcset="https://max-everyday.com/wp-content/uploads/2021/07/2025-01-11_19-50_54.jpg?v=1736596301 651w, https://max-everyday.com/wp-content/uploads/2021/07/2025-01-11_19-50_54-500x454.jpg?v=1736596301 500w, https://max-everyday.com/wp-content/uploads/2021/07/2025-01-11_19-50_54-615x558.jpg?v=1736596301 615w" sizes="auto, (max-width: 651px) 100vw, 651px" /></figure>
</div>


<p></p>



<p><strong>推論 batch size 的選擇:</strong></p>



<p>使用 4GB 的  GPU, batch size=48 時, 執行到第二 round 會掛掉, 因為記憶體不足, 執行指令: <code>torch.cuda.empty_cache()</code> 即可解決, infert 111 chars, 執行結果:</p>



<pre class="wp-block-preformatted">load model 5<br>Total round: 3<br>Current round: 1<br>Start to draw char at round: 1/3<br>Start to infer char at round: 1/3<br>Current round: 2<br>Start to draw char at round: 2/3<br>Start to infer char at round: 2/3<br>Current round: 3<br>Start to draw char at round: 3/3<br>Start to infer char at round: 3/3<br>cold start time: <strong>34.55</strong>, hot start time <strong>31.77</strong></pre>



<p>如果使用 batch size=32,  不清 cuda cache 反而比較快:</p>



<pre class="wp-block-preformatted">load model 5<br>Total round: 4<br>Current round: 1<br>Start to draw char at round: 1/4<br>Start to infer char at round: 1/4<br>Current round: 2<br>Start to draw char at round: 2/4<br>Start to infer char at round: 2/4<br>Current round: 3<br>Start to draw char at round: 3/4<br>Start to infer char at round: 3/4<br>Current round: 4<br>Start to draw char at round: 4/4<br>Start to infer char at round: 4/4<br>cold start time: <strong>32.51</strong>, hot start time <strong>29.90</strong></pre>



<p></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Youtube 影片</h2>



<p>AI造字經驗分享<br><a href="https://youtu.be/-2V5H_4kSg4">https://youtu.be/-2V5H_4kSg4</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="gutenbee-responsive-embed"><iframe loading="lazy" title="AI造字經驗分享 (zi2zi)" width="885" height="498" src="https://www.youtube.com/embed/-2V5H_4kSg4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
</div></figure>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">深度學習崛起，企業擁抱AI</h2>



<p>科技大廠們，紛紛押寶AI，也帶動一般企業投資AI，但企業要如何運用科技，促成商業發展？企業在使用AI 要來解決什麼問題？要使用什麼演算法？要套用那一個模型？會遇到什麼資安或相關法規。這些問題，我都沒有答案，但google 一下，似乎很多文章都有回答這類問題。</p>



<p>相關法規最近的新聞報導：麥當勞被指控違反伊利諾伊州的BIPA（ Biometric Information Privacy Act，生物識別資訊隱私法），在使用語音識別技術接受訂單、收集聲紋資訊之前，沒有經過他的同意，也未告知這些資訊的處理方式、儲存時間等內容。</p>



<p>反正，AI 是趨勢，有空時多接觸看看。也許，有一天用的到，而且萬一將來真的要去學的話，會比較好理解。</p>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">相關文章</h2>



<p>苦累蛙圓體 Kurewa Gothic<br><a href="https://max-everyday.com/2021/06/kurewa-gothic/">https://max-everyday.com/2021/06/kurewa-gothic/</a></p>



<p>馬路口圓體 Maruko Gothic<br><a href="https://max-everyday.com/2021/07/maruko-gothic/">https://max-everyday.com/2021/07/maruko-gothic/</a></p>



<p>github &#8211; zi2zi-pytorch <br><a href="https://github.com/max32002/zi2zi-pytorch">https://github.com/max32002/zi2zi-pytorch</a></p>



<p>學習字體的筆記<br><a href="https://codereview.max-everyday.com/font-readme/">https://codereview.max-everyday.com/font-readme/</a></p>



<p>AI 造字相關問題<br><a href="https://codereview.max-everyday.com/font-readme/#stackoverflow">https://codereview.max-everyday.com/font-readme/#stackoverflow</a></p>



<p>AI相關實作<br><a href="https://codereview.max-everyday.com/font-readme/#implement">https://codereview.max-everyday.com/font-readme/#implement</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2021/07/zi2zi-ai-font/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>用白膠修理macbook 喇叭破音問題</title>
		<link>https://max-everyday.com/2021/06/macbook-speaker-fix-using-white-glue/</link>
					<comments>https://max-everyday.com/2021/06/macbook-speaker-fix-using-white-glue/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Fri, 25 Jun 2021 11:06:13 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=14115</guid>

					<description><![CDATA[家裡的 macbook pro 使用了 6年，每天都有在使用，筆電揚聲器終於壞掉了，google 了一下，原來很多人都會遇到，解方滿簡單的，塗上白膠就解決了。要拆解 ma [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_221047-cover-1024x768.jpg" alt="" class="wp-image-14118" srcset="https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_221047-cover-1024x768.jpg?v=1624618734 1024w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_221047-cover-500x375.jpg?v=1624618734 500w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_221047-cover-615x461.jpg?v=1624618734 615w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_221047-cover.jpg?v=1624618734 1400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>家裡的 macbook pro 使用了 6年，每天都有在使用，筆電揚聲器終於壞掉了，google 了一下，原來很多人都會遇到，解方滿簡單的，塗上白膠就解決了。要拆解 macbook 筆電的背蓋，需要五星★1.2mm螺絲刀，內部的零件需要六角形T5規格 1.4mm 的螺絲刀，我有試過在家裡附近的各大五金賣場去尋找，都找的到五星與六星的螺絲起子，但大小都不合，建議直接在拍賣網站上買，會比較省時間。</p>



<p>YouTube影片：<br><a href="https://youtu.be/bd7TOIOC3tg">https://youtu.be/bd7TOIOC3tg</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="gutenbee-responsive-embed"><iframe loading="lazy" title="用白膠修理macbook 喇叭破音問題" width="885" height="498" src="https://www.youtube.com/embed/bd7TOIOC3tg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
</div></figure>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">前置準備</h2>



<ul class="wp-block-list"><li>五星★1.2mm螺絲刀，六角形T5規格 1.4mm 的螺絲刀，大約各$70元，合計$140元。</li><li>白膠，約$10元 </li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://max-everyday.com/wp-content/uploads/2021/06/6999-1024x768.jpg?v=1624618904" alt="" class="wp-image-14120" srcset="https://max-everyday.com/wp-content/uploads/2021/06/6999-1024x768.jpg?v=1624618904 1024w, https://max-everyday.com/wp-content/uploads/2021/06/6999-500x375.jpg?v=1624618904 500w, https://max-everyday.com/wp-content/uploads/2021/06/6999-615x461.jpg?v=1624618904 615w, https://max-everyday.com/wp-content/uploads/2021/06/6999.jpg?v=1624618904 1477w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">步驟</h2>



<p>1:拆背蓋</p>



<p>2:斷開電源</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="554" src="https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210625_015502-1024x554.jpg?v=1624618949" alt="" class="wp-image-14121" srcset="https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210625_015502-1024x554.jpg?v=1624618949 1024w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210625_015502-500x271.jpg?v=1624618949 500w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210625_015502-1536x831.jpg?v=1624618949 1536w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210625_015502-2048x1108.jpg?v=1624618949 2048w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210625_015502-615x333.jpg?v=1624618949 615w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>3:塗白膠</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_224705-copy-1024x768.jpg?v=1624619134" alt="" class="wp-image-14122" srcset="https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_224705-copy-1024x768.jpg?v=1624619134 1024w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_224705-copy-500x375.jpg?v=1624619134 500w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_224705-copy-615x461.jpg?v=1624619134 615w, https://max-everyday.com/wp-content/uploads/2021/06/IMG_20210624_224705-copy.jpg?v=1624619134 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>4:等白膠乾了後，裝後背蓋就成完了。</p>



<h2 class="wp-block-heading">心得：</h2>



<ul class="wp-block-list"><li>上圖使用太多白膠，建議只需使用上圖的5分之1 或更少。</li><li>可以用濕的棉花棒之類的東西擦去所有黑色突出物上方多餘的白膠，以免影響低音的輸出。</li><li>建議使用的白膠，先用 1比1的方式，加水稀釋，因為聲音被太多白膠影片，輸出聲音明顯小聲很多！</li></ul>



<hr class="wp-block-separator"/>



<p>附註：可以先試試自行挑戰，如果還是修不好，拍賣網站也有賣副廠的揚聲器可以替換。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="497" src="https://max-everyday.com/wp-content/uploads/2021/06/Screen-Shot-2021-06-25-at-7.08.11-PM-1024x497.jpg?v=1624619417" alt="" class="wp-image-14125" srcset="https://max-everyday.com/wp-content/uploads/2021/06/Screen-Shot-2021-06-25-at-7.08.11-PM-1024x497.jpg?v=1624619417 1024w, https://max-everyday.com/wp-content/uploads/2021/06/Screen-Shot-2021-06-25-at-7.08.11-PM-500x243.jpg?v=1624619417 500w, https://max-everyday.com/wp-content/uploads/2021/06/Screen-Shot-2021-06-25-at-7.08.11-PM-615x299.jpg?v=1624619417 615w, https://max-everyday.com/wp-content/uploads/2021/06/Screen-Shot-2021-06-25-at-7.08.11-PM.jpg?v=1624619417 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2021/06/macbook-speaker-fix-using-white-glue/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>USB轉DC圓頭充電線</title>
		<link>https://max-everyday.com/2021/01/usb-to-dc-diy/</link>
					<comments>https://max-everyday.com/2021/01/usb-to-dc-diy/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Thu, 07 Jan 2021 04:20:31 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[哲學]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=13426</guid>

					<description><![CDATA[妹妹幼兒園畢業時，班上的老師送妹妹「四軸飛行器」的玩具，滿好玩的，還有一個遙控器，但在搬家時USB的充電線不知丟那裡去了，到大街上逛了好多可能有賣充電線的商店，只有光南滿 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>妹妹幼兒園畢業時，班上的老師送妹妹「四軸飛行器」的玩具，滿好玩的，還有一個遙控器，但在搬家時USB的充電線不知丟那裡去了，到大街上逛了好多可能有賣充電線的商店，只有光南滿厲害的，有賣 3.5mm/5.5mm 小/大圓孔手機喇叭通用充電線，但不知道妹妹的是 2.0mm 還是 1.7mm 的，也不知道要不要在拍賣網站（蝦皮）上面購買。這麼冷門的東西只有張貼和曝光成本低廉的網路平台才做的到。</p>



<p>我決定先來動手DIY試看看，挑戰失敗再來買。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://max-everyday.com/wp-content/uploads/2021/01/usb-to-dc-1024x768.jpg?v=1609859778" alt="" class="wp-image-13437" srcset="https://max-everyday.com/wp-content/uploads/2021/01/usb-to-dc-1024x768.jpg?v=1609859778 1024w, https://max-everyday.com/wp-content/uploads/2021/01/usb-to-dc-500x375.jpg?v=1609859778 500w, https://max-everyday.com/wp-content/uploads/2021/01/usb-to-dc-615x461.jpg?v=1609859778 615w, https://max-everyday.com/wp-content/uploads/2021/01/usb-to-dc.jpg?v=1609859778 1477w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>首先google 一下 USB 線裡每種顏色的功用，紅色是正極(+),黑色是負極(-)，後面有二條綠色和白色，因為用不到就直接剪掉，比較不占空間。</p>



<p>線材的選擇，建議先找看看快斷掉的線，或是家裡上一個世代在使用的 mini USB 線，或其他壞掉電器上的USB線。</p>



<p>再google 一下圓孔DC插座的構造，是正中間的線正極(+)，外側負極(-)，一開始先挑戰用透明膠帶黏住正極接出來的銅片，沒有通電。</p>



<p>要先驗證 USB  的紅線和黑線會通電，於是拿了一台馬達的小風扇來測試，結果一切功能正常，所以應該是接觸不良，沒辦法幫玩具直升機充電。</p>



<p>最後是照上面照片的做法，拿鑷子和曬衣服的夾子先固定好正極，再拿另一個夾子加壓在負極上，就完成幫玩具直升機充電，解鎖「USB轉DC圓頭充電線」成就。</p>



<p>也許有些人會覺得，上拍賣網站買就好啦，又沒多少錢。但沒有人規定「玩遊戲」一定要按照別人設計好的遊戲框架來玩：</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>你的遊戲可以和別人不同。</p></blockquote>



<p>一起來遊戲人間吧。有人說：「鳥為食亡、人為財死」，很多人活著為了錢，為了名，為了愛。那你呢，為什麼而活著？</p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2021/01/usb-to-dc-diy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>常見的「台灣閩南語常用字」整理</title>
		<link>https://max-everyday.com/2020/03/taiwanese-common-word-700/</link>
					<comments>https://max-everyday.com/2020/03/taiwanese-common-word-700/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Tue, 03 Mar 2020 18:17:49 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=10675</guid>

					<description><![CDATA[針對再幾十年後可能會消失的台語，Max想幫台語做點事情，整理一下台語常用字，對其他字型的開發者會有所幫助。如果有了不缺字的字體，對於在使用字體的創作者或接收訊息的民眾，也 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>針對再幾十年後可能會消失的台語，Max想幫台語做點事情，整理一下台語常用字，對其他字型的開發者會有所幫助。如果有了不缺字的字體，對於在使用字體的創作者或接收訊息的民眾，也有助於推廣台語。</p>



<p>Max最近在幫一個免費的「<a href="https://max-everyday.com/2020/03/naikaifont/" target="_blank" rel="noreferrer noopener" aria-label=" (在新分頁中開啟)">內海字體</a>」補缺字時，想補一些台語常用字到字型裡，順便來學一些教育部推薦的台語用字。</p>



<p>聽說台語本來就有些字，是「有音無字」，因為數位化的需要有一個符號給聲音，所以要幫音配上新的字，讓台語能更容易流傳下去。</p>



<p class="has-luminous-vivid-amber-background-color has-background"><strong>要如何找出常見的「台灣方言字」有那些？</strong></p>



<p>題外話，在解決上面的問題時，Google 了一下，發現有趣的字：「𡳞」。</p>



<p>《<a href="https://ctext.org/kangxi-zidian/zh">康熙字典</a>·<a href="https://ctext.org/kangxi-zidian/44/zh">尸部</a>·<a href="https://ctext.org/kangxi-zidian/44/12/zh">十二</a>》𡳞：《字彙》良慎切，音吝。閩人謂隂也。</p>



<p>國語發音:    lìn ㄌㄧㄣˋ</p>



<p>白話文解釋：雄性動物的生殖器叫「𡳞」(lān)，10幾年前曾經有段時間流行用LP來代表這個方言字。</p>



<p>這個字的 unicode 是 0x21CDE，超過大多數字型檔案編碼格式 ISO 10646-1 (Unicdoe, BMP) 的範圍 0x110000。</p>



<p>「𡳞」的相關字詞：<a href="https://zh.wiktionary.org/wiki/%E5%B1%8C">屌</a>｜<a href="https://zh.wiktionary.org/wiki/%E5%B1%84">屄</a>｜<a href="https://zh.wiktionary.org/wiki/%E5%B0%BB">尻</a></p>



<p>真人發音：<br><a href="http://163.28.84.216/Entry/Detail/?title=??">http://163.28.84.216/Entry/Detail/?title=??</a></p>



<p>相關的「生理構造」的台語：<br><a href="https://twblg.dict.edu.tw/holodict_new/index/cimu_level4.jsp?level1=5&amp;level2=19">https://twblg.dict.edu.tw/holodict_new/index/cimu_level4.jsp?level1=5&amp;level2=19</a></p>



<hr class="wp-block-separator"/>



<p>網路上的資料很亂也很多，比較有參考性的，應該是參考教育部提供的：<br>臺灣閩南語推薦用字700字表<br><a href="http://language.moe.gov.tw/files/people_files/700iongji_107.05.03.pdf">http://language.moe.gov.tw/files/people_files/700iongji_107.05.03.pdf</a></p>



<p>pdf 截圖：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="349" src="https://max-everyday.com/wp-content/uploads/2020/03/Screen-Shot-2020-03-04-at-02.13.23-1024x349.jpg?v=1583259263" alt="" class="wp-image-10677" srcset="https://max-everyday.com/wp-content/uploads/2020/03/Screen-Shot-2020-03-04-at-02.13.23-1024x349.jpg?v=1583259263 1024w, https://max-everyday.com/wp-content/uploads/2020/03/Screen-Shot-2020-03-04-at-02.13.23-500x170.jpg?v=1583259263 500w, https://max-everyday.com/wp-content/uploads/2020/03/Screen-Shot-2020-03-04-at-02.13.23.jpg?v=1583259263 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="has-luminous-vivid-amber-background-color has-background">Max整理，教育部提供推薦用700字裡出現的中文字如下：</p>



<pre class="wp-block-preformatted">㧒㧳㪗㾪䆀䉔䘼䩉䫀䫌一丁丈三上下不且世丟丩个中串丸久乍乜也乳乾亁亂了予事二亍互五井些交亦亭亮人什仁仇今仍仔他仙仝代令以件任份企伊伍休伙伨伯伸似但佇位住佑佔何佗佚作你佮佳使來例依便俊俗保信修俳倉個倌們倒候倚借倡倦倩倯偆假偌做停偝健偶偷傖備債傷傻傾僅僎像僐僫僱價儂儉元兄先光克免兒兜入內全兩公六共具冇冊再冒冗冤冬冰冷凊凋凍凝凡凳凹出刀刁分列刡刣別刨利刪刮到制刷刺刻剁則前剔剝剩剪割創剾力功加劣努勁勇動務勞勢勤勥勼勾勿包化北匙匿區十午半卑卒協南博卜卡印即卵卷卻厚厝原厭厲去參又叉及友反取受叢口古叨只叫可司吃合同名吐向吝吞否吮吵吸吹吻吼呃呆呈呢呣周味呵呸呼命咁和咍咒咖咧咬咱咳咽咾品哈哉哖員哥哨哪哭哮唇唌唔唚唱唸啃啄商啉問啞啡啥啾喉喊喙喜喝喪喫單嗆嗇嗉嗍嗝嗽嘆嘉嘛嘮嘴噍器噯噴嚏嚥嚨嚴囂囈囊四囝回囡囥困固圈國圍園圓土在地圾均坉坎坐坦垃垢埔埕執培埽堆報場堵塌塗塞填境墊墓墘增壁壓壞壯壺夏外多夜夠夢夥大天太夫央夯失夾奇奈契奕套女奶奸她好如妄妗妥妳妻姆姑姒委姥娘娶婆婚婦婿媠媳媵媽嫁嫣嫩子孔字孝季孤孩學宅守安宓官定客宰害家容寂密富寒寞察寡實寫寬寮寶寸將尋對導小少尖尚尪就尻尾尿屁屈屎屐展屜山岫峇峘崁崖嶺川巡巢工左巧己已巴巷巾市布師帳帶常帽幫干平年幸幹幻幼幾庇床序底店度庭廁廣廳延建弄式弓引弱張強彆彈彎形彩影彳彼往待很後得徙徛從徦微心必忍志忙忝忠快念怎怒怕思急性怨怪怹恁恂恨息悔悲悶悾悿情惜惡惰惱想愈意愚愛愜感愣慕慢慣憋憐憑憚懇應懍懶懷懸戇戍成我戒或戚截戲戳戴房所手才扑打扔托扛扣扦扭扯扱扲扶批找承抄把抌抑抒抓投折抨抵抽抾抿拂拄拈拉拊拌拍拑拓拔拖拗拚招拜拫拭拳拼拾拿持指按挑挖挨挩挪挲挵挼挽挾捀捅捉捋捌捎捏捒捔捧捨捲捶捷掀掃掉掌掏掔掘掙掛掞掠採探掣接推掰揀揉揍提換握揣揤揪揬揭揹揻搓搔搗搙搜搝搞搡搦搪搬搭搰搵摒摔摕摘摭摸摻撆撋撏撒撚撞撥撨撫撿擁擅擊擋擘擠擤擦擱擲擺擼擽攃攄攏攑攕攙攜攝攢攪支收改放故敆敏敕教敢散敧敨敲整數文斗料斜斟斡新斵斷方於旁旋日旦早明昏易星春昧昨是時晏晚晝晡晨景智暗暝暫曉曲更曷書曾替最會月有朋服朗望期木未本朵李杙杜束杯東板枋果枝枵柄某柑柔查柴校栽桃桌桶桿梔條梢梯械梳棄棰棵椅椆椒楔楚楬業榔槍槓樁樓標模樣樹橂橐橛機橫檳櫼欄欉欣欲欶欺款歆歇歌歕歡止正此步武歪歲歸歹死殕殘殺殼毋母每毒比毛毯民氣水汁求汆汗汙汝池汫沃沉沒沓沙沛沬油治沾況泔法泛泡泥注洗洘洞洩洲活派流浪海浸涎涕液涼淀淋淘淚淡淨混清減渣渥港湊湧湯準溜溢溪滇滑滯滾滿漂漆漉漏漚漛漢漩漫漬漱漿潔潘潛潮澆澹激濃濕濛濟瀾灑灣火灰灶炊炎炒炕炤炸為烆烏烘無焢焦然焿煎煏煞煠照煩煮熟熠熬熱熻熾燃燒燕燙燜營爁爆爍爛爪爬爭爸爻爽爾爿牆片牌牙牛牡牢物特牽犯狀狂狗狡狹猛猜猴猶獃獅獎獪玄玩玫珠班現球理瑰璇環瓜瓶瓷甌甘甜生產甥用甫甭田由甲男界畏留番畫異當疏疕疲疶疼痀病症痛痟痰瘋瘠瘡瘤瘦癟癢癩登發白百的皆皮益盒盛盞盤目盲直相盹眉看眗真眠眯眼睏睜睡睭瞄瞇瞌瞑矣知短石矺砝破硞硩硬碌碗碰碼碾磁磅磕磨礁礙礤社祖神票秀私秤秫移稀程稍稠種稻穀積穡穩穴空穿突窄窒窗窯竈立竘站竟章端竹笑笚笛笨第筆等筊筋筒筷箍算箠管箬箱箸節範篤簏簽簿籠籤米粉粒粕粗粟粢粽精粿糊糋糍糕糖糜糞糟糬糾紀紅紋紐紗紙紛索紮累細紲終結絚給絲經綠綱綴緊線緣編緩緻縒縖縛縫縮總織繞繡繩繫繼續罔罩罵美羞群羨羹翁習翕翻老考者而耍耐耳聘聚聞聰聲職聽肉肚肝股肥育背胎胖胡胭能胿脂脆脊脖脣脫脯脹腦腳腹膎膝膨臆臉臊臨自臭至致臺舂舅與舉舊舌舐舒舔舖舞航船艱色芎芓芡芫芬花芳苗若苦英苴茈茉茨茫茶草荏荒荽莉莢莦莫菜菠華菸萄萬落著葡葩葫蒸蒼蓋蓬蔗蔥蕉蕊蕩薄薅薐薑薟薦薯薰藏藥蘋蘸虎虐處號虧虬虯虼蚊蚓蚤蚪蚯蚱蚵蚶蚻蛋蛙蛛蛤蛻蛾蜆蜈蜊蜍蜘蜜蜢蜷蝌蝦蝴蝶蝸螂螺螿蟆蟑蟧蟮蟲蟳蟾蠅蠓蠔蠣蠩蠻行街衣表衫袂袋袖被裁裂裕裙補裝裡製褪褫褲要覆見規覓覕視親覺觀解觱觳觸言計討記許詛詞話誌認誓誕誘語誠說課調請諷謎講謝謳譀譏識議護讀變讚豆豎豐豬貝負貧貨貫貯貴買費貼賊賢賬賭賰賺賽赤赫走起趁趄越趒趕趖趟趨足趺跋跌跍跑跔跙跟跤路跳跺踅踏踮踹蹄蹔蹛蹣蹲躡身躲軀軁車軟較載輕輦輩輪輾轉辛辣辦迌迎近返迵迷退逃逆透逐逗這通逝速造逢連進遇遊運過遏遐道達遠遢適遮遲遷選還邊邋那部都鄉酌配酒酸醃醉醜釀釁采里重野量金針釣釦鈕鈴鈷鉎鉗鉛鉸銀銑鋏鋪錄錐錢錯鍊鍋鎖鎮鏟鏡鏽鐘鐤鐵鑢鑰鑷鑽鑿長門閃開閑閒間閘閣閩關阮阻阿附陌降限院陣除陰陳陶陷陽階際隨隻雄雅雙雜雞難雨雪零雷雺電霆霉霎霜霧露霸青靜非靠面靴鞋鞭音響頁頂項順須頑頓領頦頭頰頷頸願顛類顧顫風颱飛食飯飲飼飽餈餒餓餘餾餿首香馦馬駐騎騙驚骨骯骹骿髒體高鬃鬆鬚鬥鬱鬼魄魚魩魷鮭鮮鯷鰇鱗鳥鴆鴨鴿鵝鹹鹽麗麵麻麼黃黏黑黜點黹鼎鼓鼠鼻齒齧龜，𠕇𠢕𠲿𢓜𣍐𤆬𤏸𤞚𤺪𥰔𥴊𨑨𩟗 </pre>



<p>最後的這幾字，應該大多數的字型都會缺字，因為是編列在「中日韓統一表意文字擴展區B 」，只要使用FontForge 開啟字型檔案後，需要重新編碼成 Unicode Full 格式之後，新的字型檔就可以支援擴充字了：</p>



<ul class="wp-block-list"><li>𠕇(20547)</li><li> 𠢕(20895)</li><li> 𠲿(20cbf)</li><li> 𢓜(224dc)</li><li> 𣍐(23350)</li><li> 𤆬(241ac)</li><li> 𤏸(243f8)</li><li> 𤞚(2479a)</li><li> 𤺪(24eaa)</li><li> 𥰔(25c14)</li><li> 𥴊(25d0a)</li><li> 𨑨(28468)</li><li> 𩟗(297d7)</li></ul>



<hr class="wp-block-separator"/>



<p>上面有些字，在台灣真的還滿常用的，像是 魩和蟳。</p>



<p>有些字很傳神，像是</p>



<ul class="wp-block-list"><li>「頦」，下巴。</li><li>「鰇」魚比魷魚還傳神，台語的發聲也和溫柔的柔同音。</li><li>軁，軁磅空nǹg pōng-khang(過山洞)、軁人縫nǹg lâng phāng(鑽人縫)。 2. 鑽營。指巴結有權勢的人。例：伊真𠢕軁。I tsin gâu nǹg. (他很會鑽營)</li><li>𥴊. 部首：竹. 音讀, kám. 釋義, 1. 圓型盛物的淺竹筐。多說成「𥴊仔」(kám-á)。</li><li>䆀 ㆠㄞ ˋ bái 。 釋義, 醜。 惡劣、糟糕。 </li><li>趒部首：走. 音讀, tiô. 釋義, 1. 彈跳、跳動。例：氣甲趒起來。Khì kah tiô&#8211;khí-lâi. (氣得跳腳。)</li><li>欶. 部首：欠. 音讀, suh. 釋義, 吸。例：欶管suh-kóng(吸管)、欶薰suh hun(吸煙)。 異用字, 𠲿、嗍.</li></ul>



<hr class="wp-block-separator"/>



<p>要如何得知上面台語常用字的清單，很簡單，先把教育部的 PDF 開啟，全選並複製後，再把結果放到一個文字檔裡。接著當然不可能自己用人眼＋人腦去比對，用程式來就行了，Max牌小程式原始碼如下：</p>



<pre class="wp-block-preformatted">def get_word_set(file_path):
    input_file = open(file_path, 'r')
    output_filepath = file_path + ".tmp"
    output_file = open(output_filepath, 'w')

    my_set = set()
    previous_line = None
    for x_line in input_file:
        new_line = x_line
        for char in new_line:
            if not char in my_set:
                my_set.add(char)
        previous_line = x_line
        
    input_file.close()

    my_set = sorted(my_set)
    for item in my_set:
        output_string = "%s(%s)\n" % (item,str(hex(ord(item)))[2:])
        output_file.write(output_string)
    output_file.close()

if __name__ == '__main__':
    filename = "tw_700.txt"
    my_set = get_word_set(filename)
</pre>



<p>程式說明：我用的文字檔名稱為 tw_700.txt，比對的結果會輸出到 tw_700.txt.tmp 檔案裡。</p>



<p>如果你想知道某一個字型檔案，有沒有缺特定的字，可以服用下面的程式碼：</p>



<pre class="wp-block-preformatted">from os import listdir, remove
from os.path import join, exists

def output_to_file(myfile, myfont_set):
    for item in myfont_set:
        try:
            output_string = "%s(%s)" % (chr(item),str(hex(item))[2:])
        except Exception as exc:
            print("error item:%d" %(item))
            print("error item(hex):%s" %(str(hex(item))))
            raise
        myfile.write(output_string)

def load_unicode_from_file(filename_input):
    mycode = 0
    myfile = open(filename_input, 'r')
    left_part = 'Encoding: '
    left_part_length = len(left_part)
    for x_line in myfile:
        if left_part == x_line[:left_part_length]:
            right_part = x_line[left_part_length:]
            if ' ' in right_part:
                mychar_array = right_part.split(' ')
                if len(mychar_array) &gt; 0:
                    mycode = int(mychar_array[0])
                    #print("bingo")
                    break
        
    myfile.close()
    return mycode

def load_files_to_set_dict(ff_folder):
    my_set = set()
    my_dict = {}

    files = listdir(ff_folder)

    for f in files:
        if '.glyph' in f:
            unicode_info = load_unicode_from_file(join(ff_folder,f))
            if unicode_info &gt; 0 and unicode_info &lt; 0x110000:
                my_set.add(unicode_info)
                my_dict[unicode_info] = f
    return my_set, my_dict

target_ff = 'NaikaiFont-Medium.sfdir'

target_unicode_set, target_dict = load_files_to_set_dict(target_ff)

source_unicode_set = set()

# common taiwaness terms
source_string = '㧒㧳㪗㾪䆀䉔䘼䩉䫀䫌一丁丈三上下不且世丟丩个中串丸久乍乜也乳乾亁亂了予事二亍互五井些交亦亭亮人什仁仇今仍仔他仙仝代令以件任份企伊伍休伙伨伯伸似但佇位住佑佔何佗佚作你佮佳使來例依便俊俗保信修俳倉個倌們倒候倚借倡倦倩倯偆假偌做停偝健偶偷傖備債傷傻傾僅僎像僐僫僱價儂儉元兄先光克免兒兜入內全兩公六共具冇冊再冒冗冤冬冰冷凊凋凍凝凡凳凹出刀刁分列刡刣別刨利刪刮到制刷刺刻剁則前剔剝剩剪割創剾力功加劣努勁勇動務勞勢勤勥勼勾勿包化北匙匿區十午半卑卒協南博卜卡印即卵卷卻厚厝原厭厲去參又叉及友反取受叢口古叨只叫可司吃合同名吐向吝吞否吮吵吸吹吻吼呃呆呈呢呣周味呵呸呼命咁和咍咒咖咧咬咱咳咽咾品哈哉哖員哥哨哪哭哮唇唌唔唚唱唸啃啄商啉問啞啡啥啾喉喊喙喜喝喪喫單嗆嗇嗉嗍嗝嗽嘆嘉嘛嘮嘴噍器噯噴嚏嚥嚨嚴囂囈囊四囝回囡囥困固圈國圍園圓土在地圾均坉坎坐坦垃垢埔埕執培埽堆報場堵塌塗塞填境墊墓墘增壁壓壞壯壺夏外多夜夠夢夥大天太夫央夯失夾奇奈契奕套女奶奸她好如妄妗妥妳妻姆姑姒委姥娘娶婆婚婦婿媠媳媵媽嫁嫣嫩子孔字孝季孤孩學宅守安宓官定客宰害家容寂密富寒寞察寡實寫寬寮寶寸將尋對導小少尖尚尪就尻尾尿屁屈屎屐展屜山岫峇峘崁崖嶺川巡巢工左巧己已巴巷巾市布師帳帶常帽幫干平年幸幹幻幼幾庇床序底店度庭廁廣廳延建弄式弓引弱張強彆彈彎形彩影彳彼往待很後得徙徛從徦微心必忍志忙忝忠快念怎怒怕思急性怨怪怹恁恂恨息悔悲悶悾悿情惜惡惰惱想愈意愚愛愜感愣慕慢慣憋憐憑憚懇應懍懶懷懸戇戍成我戒或戚截戲戳戴房所手才扑打扔托扛扣扦扭扯扱扲扶批找承抄把抌抑抒抓投折抨抵抽抾抿拂拄拈拉拊拌拍拑拓拔拖拗拚招拜拫拭拳拼拾拿持指按挑挖挨挩挪挲挵挼挽挾捀捅捉捋捌捎捏捒捔捧捨捲捶捷掀掃掉掌掏掔掘掙掛掞掠採探掣接推掰揀揉揍提換握揣揤揪揬揭揹揻搓搔搗搙搜搝搞搡搦搪搬搭搰搵摒摔摕摘摭摸摻撆撋撏撒撚撞撥撨撫撿擁擅擊擋擘擠擤擦擱擲擺擼擽攃攄攏攑攕攙攜攝攢攪支收改放故敆敏敕教敢散敧敨敲整數文斗料斜斟斡新斵斷方於旁旋日旦早明昏易星春昧昨是時晏晚晝晡晨景智暗暝暫曉曲更曷書曾替最會月有朋服朗望期木未本朵李杙杜束杯東板枋果枝枵柄某柑柔查柴校栽桃桌桶桿梔條梢梯械梳棄棰棵椅椆椒楔楚楬業榔槍槓樁樓標模樣樹橂橐橛機橫檳櫼欄欉欣欲欶欺款歆歇歌歕歡止正此步武歪歲歸歹死殕殘殺殼毋母每毒比毛毯民氣水汁求汆汗汙汝池汫沃沉沒沓沙沛沬油治沾況泔法泛泡泥注洗洘洞洩洲活派流浪海浸涎涕液涼淀淋淘淚淡淨混清減渣渥港湊湧湯準溜溢溪滇滑滯滾滿漂漆漉漏漚漛漢漩漫漬漱漿潔潘潛潮澆澹激濃濕濛濟瀾灑灣火灰灶炊炎炒炕炤炸為烆烏烘無焢焦然焿煎煏煞煠照煩煮熟熠熬熱熻熾燃燒燕燙燜營爁爆爍爛爪爬爭爸爻爽爾爿牆片牌牙牛牡牢物特牽犯狀狂狗狡狹猛猜猴猶獃獅獎獪玄玩玫珠班現球理瑰璇環瓜瓶瓷甌甘甜生產甥用甫甭田由甲男界畏留番畫異當疏疕疲疶疼痀病症痛痟痰瘋瘠瘡瘤瘦癟癢癩登發白百的皆皮益盒盛盞盤目盲直相盹眉看眗真眠眯眼睏睜睡睭瞄瞇瞌瞑矣知短石矺砝破硞硩硬碌碗碰碼碾磁磅磕磨礁礙礤社祖神票秀私秤秫移稀程稍稠種稻穀積穡穩穴空穿突窄窒窗窯竈立竘站竟章端竹笑笚笛笨第筆等筊筋筒筷箍算箠管箬箱箸節範篤簏簽簿籠籤米粉粒粕粗粟粢粽精粿糊糋糍糕糖糜糞糟糬糾紀紅紋紐紗紙紛索紮累細紲終結絚給絲經綠綱綴緊線緣編緩緻縒縖縛縫縮總織繞繡繩繫繼續罔罩罵美羞群羨羹翁習翕翻老考者而耍耐耳聘聚聞聰聲職聽肉肚肝股肥育背胎胖胡胭能胿脂脆脊脖脣脫脯脹腦腳腹膎膝膨臆臉臊臨自臭至致臺舂舅與舉舊舌舐舒舔舖舞航船艱色芎芓芡芫芬花芳苗若苦英苴茈茉茨茫茶草荏荒荽莉莢莦莫菜菠華菸萄萬落著葡葩葫蒸蒼蓋蓬蔗蔥蕉蕊蕩薄薅薐薑薟薦薯薰藏藥蘋蘸虎虐處號虧虬虯虼蚊蚓蚤蚪蚯蚱蚵蚶蚻蛋蛙蛛蛤蛻蛾蜆蜈蜊蜍蜘蜜蜢蜷蝌蝦蝴蝶蝸螂螺螿蟆蟑蟧蟮蟲蟳蟾蠅蠓蠔蠣蠩蠻行街衣表衫袂袋袖被裁裂裕裙補裝裡製褪褫褲要覆見規覓覕視親覺觀解觱觳觸言計討記許詛詞話誌認誓誕誘語誠說課調請諷謎講謝謳譀譏識議護讀變讚豆豎豐豬貝負貧貨貫貯貴買費貼賊賢賬賭賰賺賽赤赫走起趁趄越趒趕趖趟趨足趺跋跌跍跑跔跙跟跤路跳跺踅踏踮踹蹄蹔蹛蹣蹲躡身躲軀軁車軟較載輕輦輩輪輾轉辛辣辦迌迎近返迵迷退逃逆透逐逗這通逝速造逢連進遇遊運過遏遐道達遠遢適遮遲遷選還邊邋那部都鄉酌配酒酸醃醉醜釀釁采里重野量金針釣釦鈕鈴鈷鉎鉗鉛鉸銀銑鋏鋪錄錐錢錯鍊鍋鎖鎮鏟鏡鏽鐘鐤鐵鑢鑰鑷鑽鑿長門閃開閑閒間閘閣閩關阮阻阿附陌降限院陣除陰陳陶陷陽階際隨隻雄雅雙雜雞難雨雪零雷雺電霆霉霎霜霧露霸青靜非靠面靴鞋鞭音響頁頂項順須頑頓領頦頭頰頷頸願顛類顧顫風颱飛食飯飲飼飽餈餒餓餘餾餿首香馦馬駐騎騙驚骨骯骹骿髒體高鬃鬆鬚鬥鬱鬼魄魚魩魷鮭鮮鯷鰇鱗鳥鴆鴨鴿鵝鹹鹽麗麵麻麼黃黏黑黜點黹鼎鼓鼠鼻齒齧龜，'
for char in source_string:
    source_unicode_set.add(ord(char))

diff_set_more =  target_unicode_set - source_unicode_set
diff_set_lost =  source_unicode_set - target_unicode_set
diff_set_common =  source_unicode_set &amp; target_unicode_set

print("output compare result to file...")

filename_output = "diff_base_sub_%s.txt" % (target_ff)
outfile = open(filename_output, 'w')
sorted_set=sorted(diff_set_lost)
output_to_file(outfile,sorted_set)
outfile.close()</pre>



<p>程式說明：請先使用FontForge 開啟字型檔，並另存為 FontForge 資料夾格式的專案。並在程式碼裡指定你的 FontForge 資料夾名稱。</p>



<hr class="wp-block-separator"/>



<p>如果是你比較2個字型檔之間的缺字，建議先使用FontForge開啟後，另存為資料夾格式的 FontForge 的專案，使用下面文章裡附的程式來比對：</p>



<p>比較不同字形檔之間的缺字差異：<br><a href="https://max-everyday.com/2020/02/font-glyph-set-compare/">https://max-everyday.com/2020/02/font-glyph-set-compare/</a></p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">相關文章：</h2>



<p>常見的「台灣客家語常用字」整理<br><a href="https://max-everyday.com/2020/03/common-hakka-words/">https://max-everyday.com/2020/03/common-hakka-words/</a></p>



<p>免費商用字體整理<br><a href="https://max-everyday.com/2020/02/free-commercial-fonts/">https://max-everyday.com/2020/02/free-commercial-fonts/</a></p>



<p>幫字型檔補缺字<br><a href="https://max-everyday.com/2020/02/how-to-add-new-glyph-to-font/">https://max-everyday.com/2020/02/how-to-add-new-glyph-to-font/</a></p>



<p>內海字體 (NaikaiFont)<br><a href="https://max-everyday.com/2020/03/naikaifont/">https://max-everyday.com/2020/03/naikaifont/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2020/03/taiwanese-common-word-700/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>自己設計問卷</title>
		<link>https://max-everyday.com/2019/12/survey-diy/</link>
					<comments>https://max-everyday.com/2019/12/survey-diy/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Wed, 25 Dec 2019 17:17:05 +0000</pubDate>
				<category><![CDATA[生活小事]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://max-everyday.com/?p=9928</guid>

					<description><![CDATA[自從科技和網路發達後，古時候的紙本問卷現在也電子化了。現在台灣常見的2個問卷系統是Google表單和SurveyCake。 傳送門： Google表單https://do [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>自從科技和網路發達後，古時候的紙本問卷現在也電子化了。現在台灣常見的2個問卷系統是Google表單和SurveyCake。</p>



<p>傳送門：</p>



<ul class="wp-block-list"><li>Google表單<br><a href="https://docs.google.com/forms/u/0/">https://docs.google.com/forms/u/0/</a></li><li>SurveyCake<br><a href="https://www.surveycake.com/">https://www.surveycake.com/</a></li></ul>



<p>這2套系統真的方便，有問卷需求的人大多情況下使用免費的服務就可以滿足需求。使用公共的服務有優點。</p>



<ul class="wp-block-list"><li>在硬體上：不需要有自己的網頁伺服器和支付網路頻寬使用費用。</li><li>在軟體上：不需要自行開發和維護問卷系統。</li></ul>



<p>上列的優點，在某些特定的情況下也會是缺點。例如：</p>



<ul class="wp-block-list"><li>如果你想統計的資料內容不想公開給第三方的公司（例如：Google 和 SurveyCake）以避免被外流。</li><li>如果你的網站不想另開視窗到第三方的公司，而且或不想使用iframe方式 embed 問卷。</li></ul>



<p>今天要分享如何透過WordPress完成自己設計問卷，其實滿簡單的，在WordPress網站後台點一下「外掛」(Plugins)，安裝一個問卷(survey)的外掛即可，目前查詢出來較熱門的4個問卷外掛如下：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="665" src="https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-25-at-23.27.52.jpg" alt="" class="wp-image-9930" srcset="https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-25-at-23.27.52.jpg?v=1577290983 1024w, https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-25-at-23.27.52-500x325.jpg?v=1577290983 500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Max 比較了一下 Formidable Form (Lite) 和 WPForms (Lite)。</p>



<p>傳送門：</p>



<ul class="wp-block-list"><li>Formidable Form (Lite)<br><a href="https://formidableforms.com/">https://formidableforms.com/</a></li><li>WPForms (Lite)<br><a href="https://wpforms.com/">https://wpforms.com/</a></li></ul>



<p>附註：Lite ＝ 只提供基本功能的免費版</p>



<h4 class="wp-block-heading">明細匯出功能比較：</h4>



<ul class="wp-block-list"><li>QSM 要付費的版本才有「匯出」(Export Result) 功能。</li><li>WPForms (Lite) 免費版，也沒有匯出功能，使用者填完的問卷可以透過SMTP方式寄給管理者。</li><li>Formidable Form (Lite)，<strong>有提供</strong>匯出功能。</li></ul>



<p>沒有匯出的功能，真的有點麻煩，沒辦法做統計、過濾和分析。Max推薦使用線上的 Google 試算表 (Excel)：<br><a href="https://docs.google.com/spreadsheets/u/0/?usp=sheets_web">https://docs.google.com/spreadsheets/u/0/?usp=sheets_web</a></p>



<h4 class="wp-block-heading">操作介面比較：</h4>



<ul class="wp-block-list"><li>WPForms 和 Formidable 在很多的設計、概念或細節都長的一樣，大多都設計的滿易懂的。</li><li>WPForms 在欄位的拖曳移動比Formidable流暢，操作上可以少點擊一個「移動」的圖示。</li><li>WPForms 的「輸入內容防呆」、「提示訊息的客製化」也就是方便中文化做的比較好。</li></ul>



<h4 class="wp-block-heading">Max使用心得：</h4>



<p>1：Formidable 在設計問卷時要常點右上角的Update, WPForms 要點 Save。</p>



<p>2：Formidable 和 WPForms 在欄位內容值為「數字」時請使用 Number 欄位形態，會比預設的 Text（單行文字）好一點。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="583" src="https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-26-at-00.57.27.jpg" alt="" class="wp-image-9931" srcset="https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-26-at-00.57.27.jpg?v=1577293196 1024w, https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-26-at-00.57.27-500x285.jpg?v=1577293196 500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>3：Formidable 和 WPForms 在下拉框(Dropdown)或單選(Radio Buttons) 裡有批次大量輸入選項(Bulk Edit Options)的功能很方便。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="733" src="https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-26-at-00.54.06.jpg" alt="" class="wp-image-9932" srcset="https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-26-at-00.54.06.jpg?v=1577293496 1024w, https://max-everyday.com/wp-content/uploads/2019/12/Screen-Shot-2019-12-26-at-00.54.06-500x358.jpg?v=1577293496 500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>4：Formidable 和 WPForms 都沒有提供Radio Buttons 遇到多選為「其他」並允許使用者輸入其他值的這種選項。替代解法是再多加一行 Text 格式的欄位。 </p>



<p>WPForms 有很貼心地提供 Condition 的功能，可以自動先隱藏該其他的輸入框，遇到 Radio 或 Dropdown Options 值為某個情況時，才顯示該欄位。</p>



<p>像這個的 javascript 或 jQuery 寫起來其實2~3 行就解決了，如果是使用 Formidable 在網站裡多加一段 javascript 應該不難，只是有一點點花時間。</p>



<h4 class="wp-block-heading">結論：</h4>



<p>WPForms 的美編和功能相對都較好，如果是不想付費又想有匯出功能應該就是選擇 Formidable 或者是使用其他非官方授權的外掛。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://max-everyday.com/2019/12/survey-diy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
