<?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>Phanix&#039;s Blog</title>
	<atom:link href="https://blog.phanix.idv.tw/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.phanix.idv.tw</link>
	<description></description>
	<lastBuildDate>Fri, 01 May 2026 04:19:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">6031088</site>	<item>
		<title>長岡花火遊記+交通住宿攻略</title>
		<link>https://blog.phanix.idv.tw/2026/05/01/%e9%95%b7%e5%b2%a1%e8%8a%b1%e7%81%ab%e9%81%8a%e8%a8%98%e6%94%bb%e7%95%a5/</link>
					<comments>https://blog.phanix.idv.tw/2026/05/01/%e9%95%b7%e5%b2%a1%e8%8a%b1%e7%81%ab%e9%81%8a%e8%a8%98%e6%94%bb%e7%95%a5/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 03:16:24 +0000</pubDate>
				<category><![CDATA[吃喝玩樂]]></category>
		<category><![CDATA[旅遊]]></category>
		<category><![CDATA[生活點滴]]></category>
		<category><![CDATA[fireworks]]></category>
		<category><![CDATA[japan]]></category>
		<category><![CDATA[nagaoka]]></category>
		<category><![CDATA[Niigata]]></category>
		<category><![CDATA[traveling]]></category>
		<category><![CDATA[新潟]]></category>
		<category><![CDATA[日本]]></category>
		<category><![CDATA[煙火]]></category>
		<category><![CDATA[長岡]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1951</guid>

					<description><![CDATA[算是記錄一下去年(2025)去長岡看花火的紀錄，同時也可以給有興趣去長岡看花火的自助攻略 長岡花火由來 空襲與花火 長岡花火起源於 1945 年 8 月 1 日的「長岡大空襲」，當時城市遭轟炸摧毀且造成約 1,500 人罹難。為了撫慰亡靈、鼓舞市民並祈求城市復興，隔年 1946 年舉辦「長岡復興祭」，之後發展為每年 8/2-3 舉行的「長岡祭煙火大會」，兼具「慰靈」、「復興」與「和平」的深重意義。1951正式定名為長岡祭，且在每年的開幕或特殊時刻，會施放白色的「白菊」煙火象徵慰靈。 新潟縣中越地震 新潟縣中越地震發生於2004年10月23日，震源位於新潟縣北魚沼郡川口町（即為現今的長岡市），強度為日本氣象廳地震規模6.8，其後有多次6以上餘震，導致川口町大量房屋倒塌與財產人命損失。 浴火鳳凰 長岡花火最精彩的絕對是復興祈願花火「鳳凰」，源自對 2004 年新潟中越地震災後重建的祈願，寓意像浴火重生的鳳凰般永生不死，現場看真的很震撼。 熱門花火與交通住宿問題 長岡的煙火固定在每年的 8月2號、3號舉辦。與大曲之花火 (秋田縣大仙市，每年8月最後一個週六) &#38; 土浦全國花火競技大會 (茨城縣土浦市，每年11月的第一個週六)並稱為日本三大花火。 早期長岡花火沒有限制人數，但因為長岡因為不是大都市的關係(另外兩個大花火都市也一樣)，導致觀光人潮過多，進一步讓花火結束後的輸運成為很大的問題，先前在survey資料的時候還看到發生過上不了電車，因此許多人只好在長岡等到隔天一早才能離開。 也看到有些跟當地tour(包住宿、座位席次、遊覽車接送)的人說，理論上可以十一點回到飯店，結果實際上回到飯店已經是超過半夜。(對tour有興趣的可以找 kkday, klook 等業者，或者日本當地也有) 因此，長岡花火在前幾年，藉著疫情將花火改為全部付費，通通用抽籤的方式進行。這樣不僅提升了觀賞品質，也讓輸運更容易掌握。 訂房與行程規劃 不用著急訂房 很多人都說通常在一年前開放訂房時，飯店早就被搶光了，但我這趟跑下來的結論是：要參加長岡花火，其實不必從一年前訂房開始。 為什麼呢？因為想去的人太多，特別是對外國遊客來說，去新潟只待個一兩天就離開，這樣的行程規劃走起來實在太硬。所以大部分人會規劃在周邊玩幾天，把 8月2號看煙火排在行程最後一晚，看完隔天拉著行李離開；另一種則是 8月3號才到新潟，看完煙火再繼續玩。總之，那幾天的房價絕對是相對高價。 而且，想搶還不一定搶得到! 在2025年花火當天，我有好奇查一下2026年的訂房，有些飯店是還沒開放，而已經開放訂房的，都已經顯示沒有空房間。 最重要的是，沒有抽到座位的話，除非能自行找到長岡市區的觀賞地點，要不然觀賞花火的感受體驗會大打折扣。 行程安排 以我們(2025)來說，我們是 8月3號到新潟，住比較高級版的 APA Hotel Resort。一開始去訂的時候，一間雙人房大概要 13,000 塊台幣，而且還沒含 Agoda 的手續費跟稅金 =___= [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>算是記錄一下去年(2025)去長岡看花火的紀錄，同時也可以給有興趣去長岡看花火的自助攻略 長岡花火起源於 1945 年 8 月 1 日的「長岡大空襲」，當時城市遭轟炸摧毀且造成約 1,500 人罹難。為了撫慰亡靈、鼓舞市民並祈求城市復興，隔年 1946 年舉辦「長岡復興祭」，之後發展為每年 8/2-3 舉行的「長岡祭煙火大會」，兼具「慰靈」、「復興」與「和平」的深重意義。1951正式定名為長岡祭，且在每年的開幕或特殊時刻，會施放白色的「白菊」煙火象徵慰靈。 新潟縣中越地震發生於2004年10月23日，震源位於新潟縣北魚沼郡川口町（即為現今的長岡市），強度為日本氣象廳地震規模6.8，其後有多次6以上餘震，導致川口町大量房屋倒塌與財產人命損失。 長岡花火最精彩的絕對是復興祈願花火「鳳凰」，源自對 2004 年新潟中越地震災後重建的祈願，</p>
<p><a href="https://blog.phanix.idv.tw/2026/05/01/%e9%95%b7%e5%b2%a1%e8%8a%b1%e7%81%ab%e9%81%8a%e8%a8%98%e6%94%bb%e7%95%a5/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2026/05/01/%e9%95%b7%e5%b2%a1%e8%8a%b1%e7%81%ab%e9%81%8a%e8%a8%98%e6%94%bb%e7%95%a5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1951</post-id>	</item>
		<item>
		<title>設定Microsoft 365應用程式api key只對特定sharepoint site存取</title>
		<link>https://blog.phanix.idv.tw/2026/03/30/%e8%a8%ad%e5%ae%9amicrosoft-365%e6%87%89%e7%94%a8%e7%a8%8b%e5%bc%8fapi-key%e5%8f%aa%e5%b0%8d%e7%89%b9%e5%ae%9asharepoint-site%e5%ad%98%e5%8f%96/</link>
					<comments>https://blog.phanix.idv.tw/2026/03/30/%e8%a8%ad%e5%ae%9amicrosoft-365%e6%87%89%e7%94%a8%e7%a8%8b%e5%bc%8fapi-key%e5%8f%aa%e5%b0%8d%e7%89%b9%e5%ae%9asharepoint-site%e5%ad%98%e5%8f%96/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 30 Mar 2026 05:24:35 +0000</pubDate>
				<category><![CDATA[學習工作]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[microsoft365]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[系統管理]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1949</guid>

					<description><![CDATA[通常在 Microsoft Entra管理中心的 &#34;應用程式註冊&#34;內所建立的應用程式api key存取sharepoint時，預設都是對所有sharepoint sites。 但如果只想將該 api key 限制在特定sharepoint site時，就需要透過powershell做額外的設定。 Microsoft Entra 應用程式 相關設定可以參考網路上的其他文章，比較重要的是，建立的 api key 是要給特定的 sharepoint site 使用，所以最少要把 sharepoint 的存取權限打開。 在建立的 api key中，找到&#34;api 權限&#34;，要把 &#34;sharepoint&#34; 的 site.selected 權限打開，注意必須要是&#34;應用程式&#34;。 然後就是要開始設定將此 api key 侷限在特定 sharepoint site. 透過 powershell 設定 api key 只能用在特定 sharepoint site PS &#62; Install-Module PnP.PowerShell -Scope CurrentUser -Force PS &#62; Get-Module [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>通常在 Microsoft Entra管理中心的 "應用程式註冊"內所建立的應用程式api key存取sharepoint時，預設都是對所有sharepoint sites。 但如果只想將該 api key 限制在特定sharepoint site時，就需要透過powershell做額外的設定。 相關設定可以參考網路上的其他文章，比較重要的是，建立的 api key 是要給特定的 sharepoint site 使用，所以最少要把 sharepoint 的存取權限打開。 在建立的 api key中，找到"api 權限"，要把 "sharepoint" 的 site.selected 權限打開，注意必須要是"應用程式"。 然後就是要開始設定將此 api key 侷限在特定 sharepoint site.</p>
<p><a href="https://blog.phanix.idv.tw/2026/03/30/%e8%a8%ad%e5%ae%9amicrosoft-365%e6%87%89%e7%94%a8%e7%a8%8b%e5%bc%8fapi-key%e5%8f%aa%e5%b0%8d%e7%89%b9%e5%ae%9asharepoint-site%e5%ad%98%e5%8f%96/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2026/03/30/%e8%a8%ad%e5%ae%9amicrosoft-365%e6%87%89%e7%94%a8%e7%a8%8b%e5%bc%8fapi-key%e5%8f%aa%e5%b0%8d%e7%89%b9%e5%ae%9asharepoint-site%e5%ad%98%e5%8f%96/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1949</post-id>	</item>
		<item>
		<title>用 vscode + pandoc 將大量 .md 轉換為 .docx</title>
		<link>https://blog.phanix.idv.tw/2025/09/18/%e7%94%a8-vscode-pandoc-%e5%b0%87%e5%a4%a7%e9%87%8f-md-%e8%bd%89%e6%8f%9b%e7%82%ba-docx/</link>
					<comments>https://blog.phanix.idv.tw/2025/09/18/%e7%94%a8-vscode-pandoc-%e5%b0%87%e5%a4%a7%e9%87%8f-md-%e8%bd%89%e6%8f%9b%e7%82%ba-docx/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Sep 2025 08:09:12 +0000</pubDate>
				<category><![CDATA[學習工作]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[md]]></category>
		<category><![CDATA[pandoc]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[vscode]]></category>
		<category><![CDATA[word]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1942</guid>

					<description><![CDATA[因為公司改換用 microsoft 365 solution, 所以要把原本付費的 notion 停掉，改成用 sharepoint 從Notion備份 Notion頁面左上角可以找到匯出(export)的功能，如果該頁面有很多字頁面的話，會產生一大包 zip 檔案。我這邊是選擇匯出 markdown 格式，所以在轉入 sharepoint 時就會有轉換檔案格式的問題要處理。 轉換為 Word .docx 格式 Microsoft 365 生態系內，在 Sharepoint 內使用時，用 word 格式會是最方便的，其他檔案格式會很難做後續編輯。將 md 檔案轉換為 word 格式時，最好的方法是透過 vscode 當中的 pandoc extension。 不過當有很多 md 檔案，且有很多層的子目錄時，慢慢用 pandoc 轉換就很痛苦，所以可以用 powershell script 的方始解決。 # 取得所有 md 檔案 $mdFiles = Get-ChildItem -Recurse -Filter &#34;*.md&#34; $totalFiles = [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>因為公司改換用 microsoft 365 solution, 所以要把原本付費的 notion 停掉，改成用 sharepoint Notion頁面左上角可以找到匯出(export)的功能，如果該頁面有很多字頁面的話，會產生一大包 zip 檔案。我這邊是選擇匯出 markdown 格式，所以在轉入 sharepoint 時就會有轉換檔案格式的問題要處理。 Microsoft 365 生態系內，在 Sharepoint 內使用時，用 word 格式會是最方便的，其他檔案格式會很難做後續編輯。將 md 檔案轉換為 word 格式時，最好的方法是透過 vscode 當中的 pandoc extension。 不過當有很多 md 檔案，且有很多層的子目錄時，慢慢用 pandoc 轉換就很痛苦，所以可以用 powershell script 的方始解決。</p>
<p><a href="https://blog.phanix.idv.tw/2025/09/18/%e7%94%a8-vscode-pandoc-%e5%b0%87%e5%a4%a7%e9%87%8f-md-%e8%bd%89%e6%8f%9b%e7%82%ba-docx/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2025/09/18/%e7%94%a8-vscode-pandoc-%e5%b0%87%e5%a4%a7%e9%87%8f-md-%e8%bd%89%e6%8f%9b%e7%82%ba-docx/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1942</post-id>	</item>
		<item>
		<title>Microsoft 365 / Sharepoint 更改 domain name</title>
		<link>https://blog.phanix.idv.tw/2025/08/14/microsoft-365-sharepoint-%e6%9b%b4%e6%94%b9-domain-name/</link>
					<comments>https://blog.phanix.idv.tw/2025/08/14/microsoft-365-sharepoint-%e6%9b%b4%e6%94%b9-domain-name/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 14 Aug 2025 10:59:18 +0000</pubDate>
				<category><![CDATA[學習工作]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[網路應用]]></category>
		<category><![CDATA[電腦網路]]></category>
		<category><![CDATA[microsoft365]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[系統管理]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1940</guid>

					<description><![CDATA[紀錄一下把 Microsoft 365 / Sharepoint 網站更改 domain name的方式。會需要做這件事情通常跟公司更換 brand name，或者成立新公司等狀況會發生，主要是為了使企業識別一致化。 參考資料 基本上按照這兩篇 https://learn.microsoft.com/zh-tw/microsoft-365/admin/setup/add-or-replace-your-onmicrosoftcom-domain?view=o365-worldwide&#038;WT.mc_id=Portal-Microsoft_AAD_IAM#make-your-new-onmicrosoftcom-domain-your-fallback-domain https://learn.microsoft.com/zh-tw/sharepoint/change-your-sharepoint-domain-name 操作就可以，但是人生總有遇到奇奇怪怪的事情的時候 前置作業 需要先從 Microsoft 365 Admin 裡頭先增加 NEW_DOMAIN, 並把 OLD_DOMAIN 改為備援，步驟可以參考前面兩個連結。 &#62; Connect-SPOService -Url &#34;https://OLD_DOMAIN-admin.sharepoint.com&#34; 上面這個步驟會需要做帳號登入驗證，需要有sharepoint admin 權限(最好是整個 365 的 admin 權限)。 排程更改 domain name &#62; Start-SPOTenantRename -DomainName &#34;NEW_DOMAIN&#34; -ScheduledDateTime &#34;YYYY-MM-DDThh:ii:ss&#34; 我下command 的時候是 2025-07-19T23:xx:xx ，排程預定2025-07-20T12:32:00 執行 &#62; Start-SPOTenantRename -DomainName &#34;NEW_DOMAIN&#34; -ScheduledDateTime [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>紀錄一下把 Microsoft 365 / Sharepoint 網站更改 domain name的方式。會需要做這件事情通常跟公司更換 brand name，或者成立新公司等狀況會發生，主要是為了使企業識別一致化。 基本上按照這兩篇 https://learn.microsoft.com/zh-tw/microsoft-365/admin/setup/add-or-replace-your-onmicrosoftcom-domain?view=o365-worldwide&WT.mc_id=Portal-Microsoft_AAD_IAM#make-your-new-onmicrosoftcom-domain-your-fallback-domain https://learn.microsoft.com/zh-tw/sharepoint/</p>
<p><a href="https://blog.phanix.idv.tw/2025/08/14/microsoft-365-sharepoint-%e6%9b%b4%e6%94%b9-domain-name/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2025/08/14/microsoft-365-sharepoint-%e6%9b%b4%e6%94%b9-domain-name/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1940</post-id>	</item>
		<item>
		<title>Folder size of a sharepoint site</title>
		<link>https://blog.phanix.idv.tw/2025/06/24/folder-size-of-a-sharepoint-site/</link>
					<comments>https://blog.phanix.idv.tw/2025/06/24/folder-size-of-a-sharepoint-site/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 24 Jun 2025 08:11:02 +0000</pubDate>
				<category><![CDATA[學習工作]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[microsoft365]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[系統管理]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1932</guid>

					<description><![CDATA[起因 原本將一個很多檔案的 onedrive 目錄複製到 sharepoint，氮不小心將瀏覽器關閉，所以為了要確認是不是有確實完成複製，所以有這樣的問題。 解法 從sharepoint的網站設定著手 先到sharepoint站臺首頁，例如； https://YOUR_DOMAIN.sharepoint.com/sites/SHAREPOINT_SITENAME/SitePages/CollabHome.aspx 先點選右上角的齒輪設定 然後點選網站內容 網站設定 在網站內容畫面，右上角有另一個網站設定 https://YOUR_DOMAIN.sharepoint.com/sites/SHAREPOINT_SITENAME/_layouts/15/settings.aspx 儲存指標 進到網站內容後，可以看到一堆的設定項目，點選&#34;儲存指標&#34; https://YOUR_DOMAIN.sharepoint.com/sites/SHAREPOINT_SITENAME/_layouts/15/storman.aspx 就可以看到資料了]]></description>
										<content:encoded><![CDATA[<p>原本將一個很多檔案的 onedrive 目錄複製到 sharepoint，氮不小心將瀏覽器關閉，所以為了要確認是不是有確實完成複製，所以有這樣的問題。 先到sharepoint站臺首頁，例如； https://YOUR_DOMAIN.sharepoint.com/sites/SHAREPOINT_SITENAME/SitePages/CollabHome.aspx 先點選右上角的齒輪設定 然後點選網站內容 在網站內容畫面，右上角有另一個網站設定 https://YOUR_DOMAIN.sharepoint.com/sites/SHAREPOINT_SITENAME/_layouts/15/settings.aspx 進到網站內容後，可以看到一堆的設定項目，點選"儲存指標" https://YOUR_DOMAIN.sharepoint.</p>
<p><a href="https://blog.phanix.idv.tw/2025/06/24/folder-size-of-a-sharepoint-site/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2025/06/24/folder-size-of-a-sharepoint-site/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1932</post-id>	</item>
		<item>
		<title>NextJS connect to backend Go api for buffering response</title>
		<link>https://blog.phanix.idv.tw/2025/02/10/nextjs-connect-to-backend-go-api-for-buffering-response/</link>
					<comments>https://blog.phanix.idv.tw/2025/02/10/nextjs-connect-to-backend-go-api-for-buffering-response/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 10 Feb 2025 03:57:23 +0000</pubDate>
				<category><![CDATA[學習工作]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[golang]]></category>
		<category><![CDATA[nextjs]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[程式設計]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1929</guid>

					<description><![CDATA[如果是 ASP 或 PHP 類的技術，可以透過設定 response 的 timeout 時間，再加上 flush (或類似機制)達成。這樣的處理用在需要較長執行時間的 api (或頁面)的情境相當適合，但如果是 nextjs 前端搭配 golang 後端，就沒有類似的機制，需要改用其他方式。 Golang WebSocket 以 fiber framework 為例, golang api backend 會長得類似這樣 import { &#34;github.com/gofiber/contrib/websocket&#34; } func main() { app := fiber.New(fiber.Config{}) app.Get(&#34;/ws/resetfolder&#34;, websocket.New(handleResetFolder)) } func handleResetFolder(c *websocket.Conn) { if err := ResetFolder(c); err != nil { log.Println(&#34;Error resetting folder:&#34;, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>如果是 ASP 或 PHP 類的技術，可以透過設定 response 的 timeout 時間，再加上 flush (或類似機制)達成。這樣的處理用在需要較長執行時間的 api (或頁面)的情境相當適合，但如果是 nextjs 前端搭配 golang 後端，就沒有類似的機制，需要改用其他方式。 以 fiber framework 為例, golang api backend 會長得類似這樣 nextjs 則需要建立 websocket connection Go lang 裏頭，是使用 Stream 方式來做 progressive response，所以跟上面的 WebSocket 不同，這裡的 prResetFolder 這個 handler 的參數跟一般 api 呼叫一樣，都還是一個 *fiber.Ctx。 而且在 function 內可以看到 ，</p>
<p><a href="https://blog.phanix.idv.tw/2025/02/10/nextjs-connect-to-backend-go-api-for-buffering-response/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2025/02/10/nextjs-connect-to-backend-go-api-for-buffering-response/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1929</post-id>	</item>
		<item>
		<title>NextJs 的 404 handling</title>
		<link>https://blog.phanix.idv.tw/2024/09/24/nextjs-%e7%9a%84-404-handling/</link>
					<comments>https://blog.phanix.idv.tw/2024/09/24/nextjs-%e7%9a%84-404-handling/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 24 Sep 2024 07:21:44 +0000</pubDate>
				<category><![CDATA[學習工作]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[nextjs]]></category>
		<category><![CDATA[notfound]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1923</guid>

					<description><![CDATA[主要討論在 app router 使用情境 使用 /src/app/[...others] 處理 即建立 /src/app/[...others]/page.tsx 檔案，內容類似這樣 import { redirect } from &#34;next/navigation&#34;; export default async function NotFound() { // Redirect to your custom 404 page redirect(&#34;/404&#34;); } 這樣可以讓所有找不到頁面的 request 全部轉址導向 /404 頁面，因此在來編輯 /src/app/404/page.tsx, 類似 import React from &#039;react&#039;; const Custom404 = () =&#62; { return ( &#60;div&#62; &#60;h1&#62;404 - Page Not [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>主要討論在 app router 使用情境 即建立 /src/app/[…others]/page.tsx 檔案，內容類似這樣 這樣可以讓所有找不到頁面的 request 全部轉址導向 /404 頁面，因此在來編輯 /src/app/404/page.tsx, 類似 即建立 /src/app/not-found.tsx, 內容類似這樣 如果開啟瀏覽器開發人員工具，檢視 Network panel, 會發現當瀏覽一個不存在的頁面時(e.g. http://localhost/login/indexxxx ), 用 not-found.tsx 的其處理行為會是發現該頁面不存在，就直接執行 not-found.tsx 內容並輸出回傳，所以 request login/indexxxx 直接就是http status 404. 若是用 […</p>
<p><a href="https://blog.phanix.idv.tw/2024/09/24/nextjs-%e7%9a%84-404-handling/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2024/09/24/nextjs-%e7%9a%84-404-handling/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1923</post-id>	</item>
		<item>
		<title>強制 nextjs app router 不使用 Static Site Generation (SSG)</title>
		<link>https://blog.phanix.idv.tw/2024/05/14/%e5%bc%b7%e5%88%b6-nextjs-app-router-%e4%b8%8d%e4%bd%bf%e7%94%a8-static-site-generation-ssg/</link>
					<comments>https://blog.phanix.idv.tw/2024/05/14/%e5%bc%b7%e5%88%b6-nextjs-app-router-%e4%b8%8d%e4%bd%bf%e7%94%a8-static-site-generation-ssg/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 14 May 2024 03:02:58 +0000</pubDate>
				<category><![CDATA[學習工作]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[app router]]></category>
		<category><![CDATA[dynamic rendering]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[SSR]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1921</guid>

					<description><![CDATA[nextjs 提供多種 render page 的方式，當中最特別的是 server side rendering, 甚至 static page generation，對於網頁瀏覽速度大有助益。 nextjs 當中可以分成 app route 以及 page route 兩種建置方式，以目前(nextjs v.14)來說兩者可以並存，而 nextjs 官方是建議如果是新的專案，或者是需要比較複雜 routing 處理的專案都建議用 app route。 nextjs pages router rendering 主要有分成三種: Static Site Generation (SSG), Server-side Rendering (SSR), Client-side Rendering (CSR)。大多數情況下這三者沒有太大差異，但在需要呼叫外部 api (會用到 getServerSideProps, getStaticProps等 data fetching 方式)取得資料的時候就會有很大的差別。可以參考 https://nextjs.org/docs/pages/building-your-application/rendering 當呼叫外部 API取得資料時，採用 CSR 的頁面在瀏覽器裡面開啟開發人員模式可以發現到呼叫的API，對於不想暴露 API [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>nextjs 提供多種 render page 的方式，當中最特別的是 server side rendering, 甚至 static page generation，對於網頁瀏覽速度大有助益。 nextjs 當中可以分成 app route 以及 page route 兩種建置方式，以目前(nextjs v.14)來說兩者可以並存，而 nextjs 官方是建議如果是新的專案，或者是需要比較複雜 routing 處理的專案都建議用 app route。 主要有分成三種: Static Site Generation (SSG), Server-side Rendering (SSR), Client-side Rendering (CSR)。大多數情況下這三者沒有太大差異，但在需要呼叫外部 api (會用到 getServerSideProps…</p>
<p><a href="https://blog.phanix.idv.tw/2024/05/14/%e5%bc%b7%e5%88%b6-nextjs-app-router-%e4%b8%8d%e4%bd%bf%e7%94%a8-static-site-generation-ssg/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2024/05/14/%e5%bc%b7%e5%88%b6-nextjs-app-router-%e4%b8%8d%e4%bd%bf%e7%94%a8-static-site-generation-ssg/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1921</post-id>	</item>
		<item>
		<title>將長時間英文 podcast 轉為中文 SRT 字幕檔</title>
		<link>https://blog.phanix.idv.tw/2024/03/19/%e5%b0%87%e9%95%b7%e6%99%82%e9%96%93%e8%8b%b1%e6%96%87-podcast-%e8%bd%89%e7%82%ba%e4%b8%ad%e6%96%87-srt-%e5%ad%97%e5%b9%95%e6%aa%94/</link>
					<comments>https://blog.phanix.idv.tw/2024/03/19/%e5%b0%87%e9%95%b7%e6%99%82%e9%96%93%e8%8b%b1%e6%96%87-podcast-%e8%bd%89%e7%82%ba%e4%b8%ad%e6%96%87-srt-%e5%ad%97%e5%b9%95%e6%aa%94/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 19 Mar 2024 07:02:22 +0000</pubDate>
				<category><![CDATA[網路應用]]></category>
		<category><![CDATA[電腦網路]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[srt]]></category>
		<category><![CDATA[tool]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1917</guid>

					<description><![CDATA[時間比較短的還算容易從網路上找到免費的工具可以轉好，但這次的是 https://www.youtube.com/watch?v=1-TZqOsVCNM 這個超過三小時的 podcast 想說最近拿到不少 vocol.ai 的免費點數，順便試試它們的功能好了。順便跟雅婷逐字稿比較一下，轉出中文字幕 srt 就可以方便搭大眾運輸的時候看了 (大概還差個再轉為語音，改用聽的更方便)。 過程 因為整個 podcast 時間太長，所以就是這樣的流程 先將 youtube 轉 mp3 然後發現 vocol.ai 要一次上傳這麼長的 mp3 會被拒絕，所以找 mp3 cutter 2.1 沒想到雅婷逐字稿可以一口氣上傳，令人驚艷 分成兩段 mp3 上傳 vocol.ai，然後讓他去產生逐字稿以及翻譯 結果 雅婷逐字稿令人意外地只花了大概半小時就辨識完畢，同時也做好中文翻譯，在下載 srt 檔案時可以馬上下載中文 srt vocol.ai大概花了兩小時才處理完畢逐字稿，而中文翻譯還要使用者自己選才能產生。 中文翻譯的品質兩者差異不會到太大，可讀性都還不錯，有些翻譯怪怪的地方也都還可以猜得出來是要講甚麼。但就時間來說，vocol.ai 真的大輸。 題外話 如果願意撒錢當大爺的話，Maestra.ai 提供的服務似乎不錯。]]></description>
										<content:encoded><![CDATA[<p>時間比較短的還算容易從網路上找到免費的工具可以轉好，但這次的是 https://www.youtube.com/watch?v=1-TZqOsVCNM 這個超過三小時的 podcast 想說最近拿到不少 vocol.ai 的免費點數，順便試試它們的功能好了。順便跟雅婷逐字稿比較一下，轉出中文字幕 srt 就可以方便搭大眾運輸的時候看了 (大概還差個再轉為語音，改用聽的更方便)。 因為整個 podcast 時間太長，所以就是這樣的流程 如果願意撒錢當大爺的話，Maestra.ai 提供的服務似乎不錯。</p>
<p><a href="https://blog.phanix.idv.tw/2024/03/19/%e5%b0%87%e9%95%b7%e6%99%82%e9%96%93%e8%8b%b1%e6%96%87-podcast-%e8%bd%89%e7%82%ba%e4%b8%ad%e6%96%87-srt-%e5%ad%97%e5%b9%95%e6%aa%94/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2024/03/19/%e5%b0%87%e9%95%b7%e6%99%82%e9%96%93%e8%8b%b1%e6%96%87-podcast-%e8%bd%89%e7%82%ba%e4%b8%ad%e6%96%87-srt-%e5%ad%97%e5%b9%95%e6%aa%94/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1917</post-id>	</item>
		<item>
		<title>Letsencrypt 設定讓 apache2 通過 ssl labs 安全測試 A+</title>
		<link>https://blog.phanix.idv.tw/2024/03/18/letsencrypt-%e8%a8%ad%e5%ae%9a%e8%ae%93-apache2-%e9%80%9a%e9%81%8e-ssl-labs-%e5%ae%89%e5%85%a8%e6%b8%ac%e8%a9%a6-a/</link>
					<comments>https://blog.phanix.idv.tw/2024/03/18/letsencrypt-%e8%a8%ad%e5%ae%9a%e8%ae%93-apache2-%e9%80%9a%e9%81%8e-ssl-labs-%e5%ae%89%e5%85%a8%e6%b8%ac%e8%a9%a6-a/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 18 Mar 2024 05:38:20 +0000</pubDate>
				<category><![CDATA[學習工作]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[letsencrypt]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[系統管理]]></category>
		<guid isPermaLink="false">https://blog.phanix.idv.tw/?p=1916</guid>

					<description><![CDATA[紀錄一下 ~$ sudo more /etc/letsencrypt/options-ssl-apache.conf # This file contains important security parameters. If you modify this file # manually, Certbot will be unable to automatically provide future security # updates. Instead, Certbot will print and log an error message with a path to # the up-to-date file that you will need to refer to when [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>紀錄一下…</p>
<p><a href="https://blog.phanix.idv.tw/2024/03/18/letsencrypt-%e8%a8%ad%e5%ae%9a%e8%ae%93-apache2-%e9%80%9a%e9%81%8e-ssl-labs-%e5%ae%89%e5%85%a8%e6%b8%ac%e8%a9%a6-a/" rel="nofollow">Source</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.phanix.idv.tw/2024/03/18/letsencrypt-%e8%a8%ad%e5%ae%9a%e8%ae%93-apache2-%e9%80%9a%e9%81%8e-ssl-labs-%e5%ae%89%e5%85%a8%e6%b8%ac%e8%a9%a6-a/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1916</post-id>	</item>
	</channel>
</rss>
