<?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>CAPDIO</title>
	<atom:link href="https://www.capdio.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.capdio.com</link>
	<description>遊戲開發 Studio</description>
	<lastBuildDate>Sun, 12 Apr 2026 07:25:35 +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>

<image>
	<url>https://www.capdio.com/wp-content/uploads/2024/06/cropped-capdio-favicon-white-32x32.png</url>
	<title>CAPDIO</title>
	<link>https://www.capdio.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cocos creator 推薦你的第一款手遊 Demo</title>
		<link>https://www.capdio.com/programming-language/javascript/cocos-creator-%e6%8e%a8%e8%96%a6%e4%bd%a0%e7%9a%84%e7%ac%ac%e4%b8%80%e6%ac%be%e6%89%8b%e9%81%8a-demo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cocos-creator-%25e6%258e%25a8%25e8%2596%25a6%25e4%25bd%25a0%25e7%259a%2584%25e7%25ac%25ac%25e4%25b8%2580%25e6%25ac%25be%25e6%2589%258b%25e9%2581%258a-demo</link>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 07:24:10 +0000</pubDate>
				<category><![CDATA[Cocos Creator]]></category>
		<category><![CDATA[JavaScript / TypeScript]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1915</guid>

					<description><![CDATA[除了可以照著影片中的步驟完成這一個小遊戲之外, 作者也有提供 pdf (Build_Your_First_Game_With_Cocos_Creator.pdf) 檔案說明喔! 有興趣的人可以到 cocos dashboard 裡面的 store 收尋 CocosGallery 這個分類(作者/關鍵字) 就可以找到這一個 project 並進行下載(應該是最後一頁). 有關專案內會用的資源檔案, 作者有標注可以到以下網址取得https://github.com/samuelcust/flappy-bird-assets 由於遊戲內有用到特殊字體, 因此也需要特別下載使用, 作者提供的 url 如下https://www.fontspace.com/flappy-bird-font-f21349 PS: 如果對於英文內容非常苦手的話, 站長未來另外也會提供中文與日文的解說影片.]]></description>
										<content:encoded><![CDATA[
<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">
<iframe title="Build Your First Game With Cocos Creator in 3 Hours!" width="1170" height="658" src="https://www.youtube.com/embed/zQBOxCUclx8?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></figure>



<p>除了可以照著影片中的步驟完成這一個小遊戲之外, 作者也有提供 pdf (Build_Your_First_Game_With_Cocos_Creator.pdf) 檔案說明喔! 有興趣的人可以到 cocos dashboard 裡面的 store 收尋 CocosGallery 這個分類(作者/關鍵字) 就可以找到這一個 project 並進行下載(應該是最後一頁).</p>



<p>有關專案內會用的資源檔案, 作者有標注可以到以下網址取得<br><a href="https://github.com/samuelcust/flappy-bird-assets">https://github.com/samuelcust/flappy-bird-assets</a></p>



<p>由於遊戲內有用到特殊字體, 因此也需要特別下載使用, 作者提供的 url 如下<br><a href="https://www.fontspace.com/flappy-bird-font-f21349">https://www.fontspace.com/flappy-bird-font-f21349</a></p>



<p>PS: 如果對於英文內容非常苦手的話, 站長未來另外也會提供中文與日文的解說影片.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>docmost 為什麼中文搜尋會找不到內容</title>
		<link>https://www.capdio.com/uncategorized/docmost-%e7%82%ba%e4%bb%80%e9%ba%bc%e4%b8%ad%e6%96%87%e6%90%9c%e5%b0%8b%e6%9c%83%e6%89%be%e4%b8%8d%e5%88%b0%e5%85%a7%e5%ae%b9/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=docmost-%25e7%2582%25ba%25e4%25bb%2580%25e9%25ba%25bc%25e4%25b8%25ad%25e6%2596%2587%25e6%2590%259c%25e5%25b0%258b%25e6%259c%2583%25e6%2589%25be%25e4%25b8%258d%25e5%2588%25b0%25e5%2585%25a7%25e5%25ae%25b9</link>
					<comments>https://www.capdio.com/uncategorized/docmost-%e7%82%ba%e4%bb%80%e9%ba%bc%e4%b8%ad%e6%96%87%e6%90%9c%e5%b0%8b%e6%9c%83%e6%89%be%e4%b8%8d%e5%88%b0%e5%85%a7%e5%ae%b9/#respond</comments>
		
		<dc:creator><![CDATA[adcapdio]]></dc:creator>
		<pubDate>Fri, 10 Apr 2026 16:45:46 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1913</guid>

					<description><![CDATA[相信很多 docmnost 的新手用戶都會發現, 自己透過 docker 安裝架設好的 docmost 再進行中文搜尋的時候都找不到內容. 那是因為 postgres 的問題, 請照著站長的下方說明進行調整就可以解決了喔!!! 使用 Zhparser 來解決 PostgreSQL 中文全文檢索]]></description>
										<content:encoded><![CDATA[
<p>相信很多 docmnost 的新手用戶都會發現, 自己透過 docker 安裝架設好的 docmost 再進行中文搜尋的時候都找不到內容. 那是因為 postgres 的問題, 請照著站長的下方說明進行調整就可以解決了喔!!!</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>使用 Zhparser 來解決 PostgreSQL 中文全文檢索</p>
</blockquote>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 先查看一下你要前往 postgres 的 container 是哪一個, 記下 id
docker ps -a

# 進入 container 並且停在 bash 的 shell(環境)畫面中
# 請將下方 container_id 換成你環境中的目標的 id
docker exec -it container_id bash

## 接下來要來安裝 Zhparser, 但是我們要先下載來編譯一下喔
# 首先, 確定一下你的 postgres 版本, 先登入到 postgres 裡面
# 登入 postgres, 帳號如果你是依照官方的文件安裝, 那應該是 docmost
# 或是你自己設定的其他帳號
psql -U docmost

# 輸入以下指令
SELECT VERSION();

# 板主這邊看到的是
 PostgreSQL 18.3 (Debian 18.3-1.pgdg13+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit

# 確認完版本之後, 請輸入 exit 跳出, 回到 bash 畫面

# 那麼我們就可以透過以下指令準備好相關的環境
apt update -y && apt install wget gcc make git bzip2 postgresql-server-dev-18 -y

# 接下來我們要下載 Zhparser, 版本的部分你可以查閱下方網址
https://www.xunsearch.com/scws/download.php

# 確認好版本之下就來進行以下步驟
cd /tmp
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
tar -jxvf scws-1.2.3.tar.bz2 
cd scws-1.2.3
./configure && make && make install

cd ..
git clone https://github.com/amutu/zhparser.git
cd zhparser/
make && make install

# 完成之後, 請登入 postgres
psql -U docmost

# 輸入以下指令
CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser);

# 完成後請退出
exit

# 接下來你可以回到 docmost 試試看中文搜尋是否可以作用了


</code></pre></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/uncategorized/docmost-%e7%82%ba%e4%bb%80%e9%ba%bc%e4%b8%ad%e6%96%87%e6%90%9c%e5%b0%8b%e6%9c%83%e6%89%be%e4%b8%8d%e5%88%b0%e5%85%a7%e5%ae%b9/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>使用 GitHub 當作小型團隊的開發中心</title>
		<link>https://www.capdio.com/programming-language/%e8%bb%9f%e9%ab%94%e9%96%8b%e7%99%bc%e7%9f%a5%e8%ad%98%e5%ba%ab/%e4%bd%bf%e7%94%a8-github-%e7%95%b6%e4%bd%9c%e5%b0%8f%e5%9e%8b%e5%9c%98%e9%9a%8a%e7%9a%84%e9%96%8b%e7%99%bc%e4%b8%ad%e5%bf%83/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bd%25bf%25e7%2594%25a8-github-%25e7%2595%25b6%25e4%25bd%259c%25e5%25b0%258f%25e5%259e%258b%25e5%259c%2598%25e9%259a%258a%25e7%259a%2584%25e9%2596%258b%25e7%2599%25bc%25e4%25b8%25ad%25e5%25bf%2583</link>
					<comments>https://www.capdio.com/programming-language/%e8%bb%9f%e9%ab%94%e9%96%8b%e7%99%bc%e7%9f%a5%e8%ad%98%e5%ba%ab/%e4%bd%bf%e7%94%a8-github-%e7%95%b6%e4%bd%9c%e5%b0%8f%e5%9e%8b%e5%9c%98%e9%9a%8a%e7%9a%84%e9%96%8b%e7%99%bc%e4%b8%ad%e5%bf%83/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Tue, 11 Nov 2025 11:06:11 +0000</pubDate>
				<category><![CDATA[軟體開發知識庫]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1893</guid>

					<description><![CDATA[我們可以透過 GitHub 的私有儲存庫 (Private Repository) 與權限控管來設定符合需求的環境 確切的來說我們只要執行兩個主要步驟：1. 管理「協作者 (Collaborators)」的權限：這能精確控制誰可以「修改」程式碼2. 將儲存庫 (Repository) 設為「私有 (Private)」：這能確保非團隊人員「無法觀看」 首先我們要知道 repository(儲存庫)有分享種:Public (公開): 任何人都可以觀看、下載Private (私有): 只有您和您邀請的人才能觀看。 以下我們假設你在創建一個新的儲存褲來進行 SOP 解說 預期成效: 您的需求 解決方案 非團隊人員無法觀看 設定儲存庫為&#160;Private 非團隊人員無法修改 (已由 Private 解決) 團隊成員可以觀看 (但不能改) 邀請為 Collaborator 並給予&#160;Read&#160;權限&#8230;]]></description>
										<content:encoded><![CDATA[
<p>我們可以透過 GitHub 的<strong>私有儲存庫 (Private Repository)</strong> 與<strong>權限控管</strong>來設定符合需求的環境</p>



<p>確切的來說我們只要執行兩個主要步驟：<br><strong>1. 管理「協作者 (Collaborators)」的權限</strong>：這能精確控制誰可以「修改」程式碼<br>2. <strong>將儲存庫 (Repository) 設為「私有 (Private)」</strong>：這能確保非團隊人員「無法觀看」</p>



<p>首先我們要知道 repository(儲存庫)有分享種:<br><strong>Public (公開)</strong>: 任何人都可以觀看、下載<br><strong>Private (私有)</strong>: 只有您和您邀請的人才能觀看。</p>



<p>以下我們假設你在創建一個新的儲存褲來進行 SOP 解說</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>1. 在 GitHub 建立新儲存庫 (New Repository) 時,
在 &quot;Owner&quot; 和 &quot;Repository name&quot; 下方，您會看到 Public 和 Private 的選項
請務必選擇 Private

2. 管理團隊成員與權限
將專案設為 Private 後，預設只有您（擁有者）看得到。您需要手動將您的團隊成員加進來。
進入您的 Private 儲存庫頁面。
點選 Settings (設定)。
在左側選單中，點選 Collaborators and teams (協作者與團隊)。
點擊 Add people (新增人員) 按鈕，然後輸入您團隊成員的 GitHub 使用者名稱、Email 或全名來邀請他們。

** 有關權限的管理 **
在邀請他們時，您可以指定他們的權限，這對「控制修改」至關重要：
  Read (讀取)：
    可以：觀看、下載、複製 (Fork) 程式碼。
    不可以：推送 (Push) 任何修改。
    (適用於：需要觀看程式碼但不需要修改的專案經理、QA 人員或實習生。)

  Write (寫入)：
    可以：觀看、下載、推送 (Push) 修改。
    (適用於：您的核心開發團隊成員。)

  Admin (管理)：
    可以：包含 Write 的所有權限，外加可以修改儲存庫設定、管理協作者等。
    (適用於：專案負責人、主要管理者。)

修改後的效果:
非團隊人員 -&gt; 因為專案是 Private，他們完全看不到
需要觀看但不能改的人 -&gt; 邀請並給予 Read 權限
需要開發的人 -&gt; 邀請並給予 Write 權限

== 補充 ==
保護主要分支 (Branch Protection)
有時候，即使是擁有 Write 權限的團隊成員，我們也不希望他們「隨意」將程式碼推送到主要分支
 (例如 main 或 master)，因為這可能會弄亂專案。

您可以設定「分支保護規則 (Branch Protection Rule)」來解決這個問題:
在 Settings &gt; Branches (分支) 中, 為您的 main 分支新增一條規則。
強烈建議勾選:
Require a pull request before merging (合併前需要拉取請求)
  這會禁止所有人 (包括 Admin) 直接 Push 到 main 分支
  所有變更都必須透過 Pull Request (PR) 的流程來提交

Require approvals (需要審核)：
  設定 PR 至少需要 1 人 (或 2 人) 審核 (Review) 並「批准 (Approve)」後，才能合併到 main 分支</code></pre></div>



<p>預期成效:</p>



<figure class="wp-block-table"><div class="pcrstb-wrap"><table class="has-fixed-layout"><thead><tr><td><strong>您的需求</strong></td><td><strong>解決方案</strong></td></tr></thead><tbody><tr><td><strong>非團隊人員</strong>無法觀看</td><td>設定儲存庫為&nbsp;<strong>Private</strong></td></tr><tr><td><strong>非團隊人員</strong>無法修改</td><td>(已由 Private 解決)</td></tr><tr><td><strong>團隊成員</strong>可以觀看 (但不能改)</td><td>邀請為 Collaborator 並給予&nbsp;<strong>Read</strong>&nbsp;權限</td></tr><tr><td><strong>團隊成員</strong>可以觀看和修改</td><td>邀請為 Collaborator 並給予&nbsp;<strong>Write</strong>&nbsp;權限</td></tr><tr><td><strong>團隊成員</strong>可以修改，但要有<strong>審核</strong></td><td>使用&nbsp;<strong>Branch Protection Rule</strong>&nbsp;(強制 PR + 審核)</td></tr></tbody></table></div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/programming-language/%e8%bb%9f%e9%ab%94%e9%96%8b%e7%99%bc%e7%9f%a5%e8%ad%98%e5%ba%ab/%e4%bd%bf%e7%94%a8-github-%e7%95%b6%e4%bd%9c%e5%b0%8f%e5%9e%8b%e5%9c%98%e9%9a%8a%e7%9a%84%e9%96%8b%e7%99%bc%e4%b8%ad%e5%bf%83/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>來使用python + yfinance library 繪製特斯拉近期的股價吧</title>
		<link>https://www.capdio.com/uncategorized/%e4%be%86%e4%bd%bf%e7%94%a8python-yfinance-library-%e7%b9%aa%e8%a3%bd%e7%89%b9%e6%96%af%e6%8b%89%e8%bf%91%e6%9c%9f%e7%9a%84%e8%82%a1%e5%83%b9%e5%90%a7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25be%2586%25e4%25bd%25bf%25e7%2594%25a8python-yfinance-library-%25e7%25b9%25aa%25e8%25a3%25bd%25e7%2589%25b9%25e6%2596%25af%25e6%258b%2589%25e8%25bf%2591%25e6%259c%259f%25e7%259a%2584%25e8%2582%25a1%25e5%2583%25b9%25e5%2590%25a7</link>
					<comments>https://www.capdio.com/uncategorized/%e4%be%86%e4%bd%bf%e7%94%a8python-yfinance-library-%e7%b9%aa%e8%a3%bd%e7%89%b9%e6%96%af%e6%8b%89%e8%bf%91%e6%9c%9f%e7%9a%84%e8%82%a1%e5%83%b9%e5%90%a7/#respond</comments>
		
		<dc:creator><![CDATA[adcapdio]]></dc:creator>
		<pubDate>Sat, 30 Aug 2025 08:26:20 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1883</guid>

					<description><![CDATA[如果你對 python 還不熟的話, 可能建議你先學習一下 python, 有個基本功再來這邊喔!!! 當然完全不懂 python, 照著內文說明做, 誤打誤撞 &#8220;可能&#8221; 也會成功!! 事不宜遲我們先來準備一下相關環境吧!! 環境設定 首先你當然是會先有 python 的開發與執行環境對吧!! 好比說筆者這邊用的就是 PyCharm, 當然有些人會選擇 jupyter, 就看你自己習慣囉! 如果是 IDE, 你就可以再輸入 source code 時, 依依帶入所需要的 library, 如果是純文字模式, 那你可能就需要先安裝環境套見到你的電腦中. 首先我們先小試一下抓取資料 以下就是我們試著抓取美國 Tesla&#8230;]]></description>
										<content:encoded><![CDATA[
<p>如果你對 python 還不熟的話, 可能建議你先學習一下 python, 有個基本功再來這邊喔!!!  當然完全不懂 python, 照著內文說明做, 誤打誤撞 &#8220;可能&#8221; 也會成功!!  事不宜遲我們先來準備一下相關環境吧!!</p>



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



<h2 class="wp-block-heading">環境設定</h2>



<p>首先你當然是會先有 python 的開發與執行環境對吧!!  好比說筆者這邊用的就是 <a href="https://www.jetbrains.com/pycharm/" target="_blank" rel="noreferrer noopener">PyCharm</a>, 當然有些人會選擇 <a href="https://jupyter.org/" target="_blank" rel="noreferrer noopener">jupyter</a>, 就看你自己習慣囉! <br><br>如果是 IDE, 你就可以再輸入 source code 時, 依依帶入所需要的 library, 如果是純文字模式, 那你可能就需要先安裝環境套見到你的電腦中.</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># jupyter
!pip install yfinance

# terminal mode
pip install yfinance
# or, maybe 如果你的環境中有 python2 與 3 的時候 就會分 pip 與 pip3 兩種指令
pip3 install yfinance

# 其實我們還需要另外兩個 library
# numpy 與 pandas, 只是通常我們的環境內都有, 所以沒有特別提出來</code></pre></div>



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



<h2 class="wp-block-heading">首先我們先小試一下抓取資料</h2>



<p>以下就是我們試著抓取美國 Tesla 股價的一小段程式碼</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>import numpy as np
import pandas as pd

import yfinance as yf

my_data = yf.download(&#39;TSLA&#39;, start=&#39;2025-01-02&#39;, end=&#39;2025-07-02&#39;)
print(my_data.info)</code></pre></div>



<p>以上存檔執行後你就會看到類似以下畫面的結果, 當然這邊僅顯示一部分而已, 這僅是示意圖</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>            Close.      High        Low         Open        Volume
Date                                                                 
2025-01-02  379.279999  392.730011  373.040009  390.100006  109710700
2025-01-03  410.440002  411.880005  379.450012  381.480011   95423300
2025-01-06  411.049988  426.429993  401.700012  423.200012   85516500
2025-01-07  394.359985  414.329987  390.000000  405.829987   75699500
2025-01-08  394.940002  402.500000  387.399994  392.950012   73038800
...                ...         ...         ...         ...        ...
2025-06-25  327.549988  343.000000  320.399994  342.700012  119845100
2025-06-26  325.779999  331.049988  323.609985  324.609985   80440900
2025-06-27  323.630005  329.339996  317.500000  324.510010   89067000
2025-06-30  317.660004  325.579987  316.600006  319.899994   76695100
2025-07-01  300.709991  305.890015  293.209991  298.459991  145085700

[123 rows x 5 columns]&gt;</code></pre></div>



<p>這邊的程式碼有一段關鍵, 那就是 yf.download(&#8216;TSLA&#8217;, start=&#8217;2025-01-02&#8242;, end=&#8217;2025-07-02&#8242;)<br>TSLA 這是股價代號, 這個代號要怎麼查呢? 各位可以到 yahoo finance 的網站去查看, 搜尋到你要抓取的股票資訊後, 你可以查看網址列就會發現他的代號是多少了, 未來我再準備一篇查詢教學 <a href="https://www.capdio.com">building </a>!! <br>那麼後面那兩個參數就是一個是開始日期, 一個是結束日期. 應該很容易理解.</p>



<p>以下就是執行出來的結果<br><img fetchpriority="high" decoding="async" width="600" height="289" class="wp-image-1887" style="width: 600px;" src="https://www.capdio.com/wp-content/uploads/2025/08/tesla-scaled.jpg" alt="" srcset="https://www.capdio.com/wp-content/uploads/2025/08/tesla-scaled.jpg 2560w, https://www.capdio.com/wp-content/uploads/2025/08/tesla-300x145.jpg 300w, https://www.capdio.com/wp-content/uploads/2025/08/tesla-1024x494.jpg 1024w, https://www.capdio.com/wp-content/uploads/2025/08/tesla-768x370.jpg 768w, https://www.capdio.com/wp-content/uploads/2025/08/tesla-1536x740.jpg 1536w, https://www.capdio.com/wp-content/uploads/2025/08/tesla-2048x987.jpg 2048w, https://www.capdio.com/wp-content/uploads/2025/08/tesla-1920x925.jpg 1920w, https://www.capdio.com/wp-content/uploads/2025/08/tesla-1170x564.jpg 1170w, https://www.capdio.com/wp-content/uploads/2025/08/tesla-585x282.jpg 585w" sizes="(max-width: 600px) 100vw, 600px" /></p>



<p>最後我將 source code 列出如下, 歡迎大家拿去改喔!!!</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># For data manipulation
from datetime import datetime

import numpy as np
import pandas as pd

# To fetch financial data
import yfinance as yf

# For visualisation
import matplotlib.pyplot as plt
#print(plt.style.available)
#exit(0)
#plt.style.use(&#39;seaborn-darkgrid&#39;)
#plt.style.use(&#39;seaborn-v0_8-darkgrid&#39;)

# Set the ticker as &#39;EURUSD=X&#39;
endToday = datetime.today().strftime(&#39;%Y-%m-%d&#39;)
#forex_data = yf.download(&#39;EURUSD=X&#39;, start=&#39;2025-01-02&#39;, end=&#39;2021-12-31&#39;)
#forex_data = yf.download(&#39;EURUSD=X&#39;, start=&#39;2025-01-02&#39;, end=endToday)
forex_data = yf.download(&#39;TSLA&#39;, start=&#39;2025-01-02&#39;, end=endToday)
#forex_data = yf.download(&#39;TSLA&#39;, start=&#39;2025-01-02&#39;, end=&#39;2025-07-02&#39;)


print(forex_data.info)
#exit(0)
# Set the index to a datetime object
forex_data.index = pd.to_datetime(forex_data.index)

# Display the last five rows
#forex_data.tail()

# Plot the close price
plt.figure(figsize=(15, 7))
#forex_data[&#39;Adj Close&#39;].plot()

# 就是這一行讓繪圖先出現, 之後再呼叫 show 就出現一個空白的
#forex_data[&#39;Close&#39;].plot()
plt.plot(forex_data[&#39;Close&#39;])

# Set the title and axis label
plt.title(&#39;Tesla Data&#39;, fontsize=16)
plt.xlabel(&#39;Year-Month&#39;, fontsize=12)
plt.ylabel(&#39;Price&#39;, fontsize=12)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.legend([&#39;Close&#39;], prop={&#39;size&#39;: 12})

# Show the plot
plt.show()</code></pre></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/uncategorized/%e4%be%86%e4%bd%bf%e7%94%a8python-yfinance-library-%e7%b9%aa%e8%a3%bd%e7%89%b9%e6%96%af%e6%8b%89%e8%bf%91%e6%9c%9f%e7%9a%84%e8%82%a1%e5%83%b9%e5%90%a7/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>i++ 與 ++i 的差別是什麼？</title>
		<link>https://www.capdio.com/uncategorized/i-%e8%88%87-i-%e7%9a%84%e5%b7%ae%e5%88%a5%e6%98%af%e4%bb%80%e9%ba%bc%ef%bc%9f/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=i-%25e8%2588%2587-i-%25e7%259a%2584%25e5%25b7%25ae%25e5%2588%25a5%25e6%2598%25af%25e4%25bb%2580%25e9%25ba%25bc%25ef%25bc%259f</link>
					<comments>https://www.capdio.com/uncategorized/i-%e8%88%87-i-%e7%9a%84%e5%b7%ae%e5%88%a5%e6%98%af%e4%bb%80%e9%ba%bc%ef%bc%9f/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Mon, 21 Jul 2025 03:24:00 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1773</guid>

					<description><![CDATA[PS: 如果你執行 node jsdemo.js 出錯, 那代表你的環境沒有 node.js 的執行環境. 請先進行設定後再回來執行 OK! 那麼為什麼 A 是 1. B 是 1, 但是 AA 卻是 0, BB 仍然是 1 呢?因為 A++ 代表 A = A + 1 的執行會在這一行結束後才進行.AA = A++&#8230;]]></description>
										<content:encoded><![CDATA[
<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 首先不管在那一個現代化的 source code 當中我們常常會看到類似的寫法, 
# 但是他有什麼不同, 我們這邊就用一個簡單的例子來做說明
# 首先我們先來看一段程式碼, 這邊就先採用 python 來撰寫範例..... 等等 
# python 不支援 a++ 這樣的語法, 只能用 a += 1
# 好吧!!! 這邊就用 javascript 來當範例好了

nano jsdemo.js

# 內容如下
var A = 0;
var B = 0;
A++;
++B;
console.log(&quot;A: &quot; + A + &quot;, B: &quot; + B)

A = 0;
B = 0;
AA = A++;
BB = ++B;
console.log(&quot;AA: &quot; + AA + &quot;, BB: &quot; + BB)

# 存檔後, 直接執行
node jsdemo.js

# 我們看到輸出的是
A: 1, B: 1
AA: 0, BB: 1
</code></pre></div>



<p>PS: 如果你執行 node jsdemo.js 出錯, 那代表你的環境沒有 node.js 的執行環境. 請先進行設定後再回來執行</p>



<p>OK! 那麼為什麼 A 是 1. B 是 1, 但是 AA 卻是 0, BB 仍然是 1 呢?<br>因為 A++ 代表 A = A + 1 的執行會在這一行結束後才進行.<br>AA = A++ => AA = (0), A = 1;<br>而 ++B 則代表 B = B + 1 先執行後再帶入這一行的方程式<br>BB = ++B => BB = (0 + 1) => BB = 1, B = 1<br>有點類似 ++B => (B = B + 1), 括弧內要先執行的意思 </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 以下 js code 你可以自己試試看觀念是否正確喔!!
var A = 1;
var B = 1;
var AA = 0;
var BB = 0;

AA = A++ + A++;
BB = ++B + B++;

console.log(&quot;AA: &quot; + AA + &quot;, BB: &quot; + BB)

# 結果印出如下
AA: 3, BB: 4

# 以上為什麼是 3, 為什麼是 4. 解說如下
AA = (1) + (2) = 3 此行結束時的 A 已成為 3
BB = (2) + (2) = 4 此行結束時的 B 已成為 3
</code></pre></div>



<p>參考資料: https://ithelp.ithome.com.tw/articles/10192800</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/uncategorized/i-%e8%88%87-i-%e7%9a%84%e5%b7%ae%e5%88%a5%e6%98%af%e4%bb%80%e9%ba%bc%ef%bc%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>安裝 Transmission 將 Ubuntu 24.04/22.04 轉生成為下載 伺服器</title>
		<link>https://www.capdio.com/servertech/linux/%e5%ae%89%e8%a3%9d-transmission-%e5%b0%87-ubuntu-24-04-22-04-%e8%bd%89%e7%94%9f%e6%88%90%e7%82%ba%e4%b8%8b%e8%bc%89-%e4%bc%ba%e6%9c%8d%e5%99%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25ae%2589%25e8%25a3%259d-transmission-%25e5%25b0%2587-ubuntu-24-04-22-04-%25e8%25bd%2589%25e7%2594%259f%25e6%2588%2590%25e7%2582%25ba%25e4%25b8%258b%25e8%25bc%2589-%25e4%25bc%25ba%25e6%259c%258d%25e5%2599%25a8</link>
					<comments>https://www.capdio.com/servertech/linux/%e5%ae%89%e8%a3%9d-transmission-%e5%b0%87-ubuntu-24-04-22-04-%e8%bd%89%e7%94%9f%e6%88%90%e7%82%ba%e4%b8%8b%e8%bc%89-%e4%bc%ba%e6%9c%8d%e5%99%a8/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Fri, 04 Jul 2025 10:21:27 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1868</guid>

					<description><![CDATA[這次我們選擇要安裝的套件是 Transmission, https://transmissionbt.com/想知道這玩意有什麼特殊之處, 除了馬上安裝來玩看看之外, 也可以到官網上去看看詳細的說明喔!那麼接下來我們就趕緊進入到安裝的環節了吧! 首先透過 Terminal 連上去你的 ubuntu linux server 以上安裝 SOP 完成之後, 下一步當然就是做一些設定檔 config 的調整, 首先預設的下載檔案放置資料匣為 /var/lib/transmission-daemon/downloads/. 有些人會設置到他處, 好比說 ~/downloads. 那麼以下我們就以如果我們要更改下載資料匣到非預設的位置該怎麼做來示範 以上都完成之後就可以再次的啟動服務, 還記得我們剛剛說的在進行設定檔的調整時, 需先將服務關閉. 完成設定檔的調整與存檔後再重新將服務啟動. 接下來我們就可以透過 http://ubuntu_server_ip:9091 來進行服務的操作 透過左上叫的 + 就可上傳你的 torrent, 並等著下載完成囉!!!&#8230;]]></description>
										<content:encoded><![CDATA[
<p>這次我們選擇要安裝的套件是 Transmission, <a href="https://transmissionbt.com/">https://transmissionbt.com/</a><br>想知道這玩意有什麼特殊之處, 除了馬上安裝來玩看看之外, 也可以到官網上去看看詳細的說明喔!<br>那麼接下來我們就趕緊進入到安裝的環節了吧! 首先透過 Terminal 連上去你的 ubuntu linux server</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 安裝所需套件
sudo apt install transmission-daemon

# 將此 service 設定為開機自動啟動的服務項目之一
systemctl enable transmission-daemon

# 接下來當然是立刻將服務啟動
systemctl start transmission-daemon
# or 
service transmission-daemon start</code></pre></div>



<p>以上安裝 SOP 完成之後, 下一步當然就是做一些設定檔 config 的調整, 首先預設的下載檔案放置資料匣為 /var/lib/transmission-daemon/downloads/. 有些人會設置到他處, 好比說 ~/downloads. 那麼以下我們就以如果我們要更改下載資料匣到非預設的位置該怎麼做來示範</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 首先建立要放置的位置, 我把假設目前使用的帳號是 happy2025
mkdir -p ~/downloads
# or
mkdir -p /home/happy2025/downloads

# 修改權限
chmod g+rw ~/downloads

# 將 transmission 的服務執行者帳號加入到你帳號的群組內, 這邊預設你不是用 root 帳號在執行喔!
sudo gpasswd --add debian-transmission $USER

# 以上就完成了 &quot;自選下載資料匣的準備工作&quot;, 接下來要進行 config 檔的設定
sudo vi /etc/transmission-daemon/settings.json
# 這邊特別注意一下, 如果你的服務正在啟動中, 請先關閉在進行 config 內容的的條整
# 否則你修改的內容在服務重新啟動後就會被複寫回原樣 !!!!

# 進入設定檔之後找到以下內容進行相關的修改
# 首先是下載的目錄, 有分已完成與未完成下載中的部分, 如你用預設路徑就不用管他,
# 如果你有使用如上方說名字記創建下載目錄的話, 就請你依需求修改
&quot;download-dir&quot;: &quot;/home/happy2025/downloads&quot;,
&quot;incomplete-dir&quot;: &quot;/home/happy2025/downloads&quot;,

# 以下保持或設定為 true
&quot;incomplete-dir-enabled&quot;: true,

# 之後服務設定完成之後我們可以夠過 http://ubuntu_server_ip:9091 來進行服務的使用
# 以下我們就來進行相關的設定
# 如你需要使用此服務時需要登入帳號密碼, 就將下方改為 true 並修改帳號與密碼
# 這邊我們示範的是不使用帳號密碼的情形
&quot;rpc-authentication-required&quot;: false,
&quot;rpc-enabled&quot;: true,
&quot;rpc-whitelist-enabled&quot;: false,

# 完成請直接存檔跳出</code></pre></div>



<p>以上都完成之後就可以再次的啟動服務, 還記得我們剛剛說的在進行設定檔的調整時, 需先將服務關閉. 完成設定檔的調整與存檔後再重新將服務啟動. 接下來我們就可以透過 http://ubuntu_server_ip:9091 來進行服務的操作</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="337" src="https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-1024x337.png" alt="" class="wp-image-1875" srcset="https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-1024x337.png 1024w, https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-300x99.png 300w, https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-768x253.png 768w, https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-1536x505.png 1536w, https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-2048x674.png 2048w, https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-1920x632.png 1920w, https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-1170x385.png 1170w, https://www.capdio.com/wp-content/uploads/2025/07/Screenshot-2025-07-04-at-6.19.14 PM-585x192.png 585w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>透過左上叫的 + 就可上傳你的 torrent, 並等著下載完成囉!!! 是不是很輕鬆愉快呢?</p>



<p>BTW 啟動服務之後如果出現 &#8220;transmission-daemon times out when launched by systemd&#8221; 可參考以下解法</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 此問題這邊有參考的討論串 https://github.com/transmission/transmission/issues/6991
# 使用以下指令進行服務內容調整
systemctl edit --full transmission-daemon.service

# 接下來將 Type=notify 改為 Type=simple 並重新啟動服務即可!</code></pre></div>



<p>ㄑ參考資料:<br><a href="https://ubuntuhandbook.org/index.php/2023/08/set-up-transmission-daemon-ubuntu-2204/" target="_blank" rel="noreferrer noopener">https://ubuntuhandbook.org/index.php/2023/08/set-up-transmission-daemon-ubuntu-2204/<br></a><a href="https://askubuntu.com/questions/1527761/transmission-daemon-times-out-when-launched-by-systemd" target="_blank" rel="noreferrer noopener">https://askubuntu.com/questions/1527761/transmission-daemon-times-out-when-launched-by-systemd</a></p>



<p></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/servertech/linux/%e5%ae%89%e8%a3%9d-transmission-%e5%b0%87-ubuntu-24-04-22-04-%e8%bd%89%e7%94%9f%e6%88%90%e7%82%ba%e4%b8%8b%e8%bc%89-%e4%bc%ba%e6%9c%8d%e5%99%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>umount 時出現 Device is busy 的解決辦法</title>
		<link>https://www.capdio.com/uncategorized/umount-%e6%99%82%e5%87%ba%e7%8f%be-device-is-busy-%e7%9a%84%e8%a7%a3%e6%b1%ba%e8%be%a6%e6%b3%95/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=umount-%25e6%2599%2582%25e5%2587%25ba%25e7%258f%25be-device-is-busy-%25e7%259a%2584%25e8%25a7%25a3%25e6%25b1%25ba%25e8%25be%25a6%25e6%25b3%2595</link>
					<comments>https://www.capdio.com/uncategorized/umount-%e6%99%82%e5%87%ba%e7%8f%be-device-is-busy-%e7%9a%84%e8%a7%a3%e6%b1%ba%e8%be%a6%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Thu, 03 Jul 2025 03:08:30 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fuser]]></category>
		<category><![CDATA[lsof]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1824</guid>

					<description><![CDATA[當我們的 Linux 系統有設定掛載一些遠端的磁碟的時候, 如果你已經不需要他時想要進行卸載, 這個時候你可能會遇到系統告訴你, 該裝置正在忙碌, 無法卸載的狀況( Device is busy ). 那我們該怎麼解決呢? 參考資料:https://coldnew.github.io/d4a5e389/]]></description>
										<content:encoded><![CDATA[
<p>當我們的 Linux 系統有設定掛載一些遠端的磁碟的時候, 如果你已經不需要他時想要進行卸載, 這個時候你可能會遇到系統告訴你, 該裝置正在忙碌, 無法卸載的狀況( Device is busy ). 那我們該怎麼解決呢?</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 首先會卡住不讓你卸載一定是因為有人正在使用該掛載目錄, 所以找出來結束他就是處理方向
# 方法 1, 使用 fuser, 如果發現無此指令的話可透過 &quot;apt-get install psmisc&quot; 安裝
# 如果我們掛載的資料匣是 /mntHere/, 則指令為
fuser -mv /mntHere/

# 接下來你會看到是哪一個 process ID 在使用它

# 那麼確定沒有還需要等待結束的 process 後, 我們就來將為結束且不需要的 process 關閉
fuser -kv /mntHere/

# 接下來可以再次查看有無其他的 process 使用它
fuser -mv /mntHere/

# 最後就直接卸載它吧
umount /mnthere/</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 方法 2, 使用 lsof
lsof /mntHere/

# 找出 process ID, 再將它們刪除即可卸載, 將以下指令的 processID 改為你自己查出的 ID 喔!
kill processID

# 最後就直接卸載它吧
umount /mnthere/</code></pre></div>



<p>參考資料:<br>https://coldnew.github.io/d4a5e389/</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/uncategorized/umount-%e6%99%82%e5%87%ba%e7%8f%be-device-is-busy-%e7%9a%84%e8%a7%a3%e6%b1%ba%e8%be%a6%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ubuntu 修改時間的方法</title>
		<link>https://www.capdio.com/servertech/linux/ubuntu-%e4%bf%ae%e6%94%b9%e6%99%82%e9%96%93%e7%9a%84%e6%96%b9%e6%b3%95/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu-%25e4%25bf%25ae%25e6%2594%25b9%25e6%2599%2582%25e9%2596%2593%25e7%259a%2584%25e6%2596%25b9%25e6%25b3%2595</link>
					<comments>https://www.capdio.com/servertech/linux/ubuntu-%e4%bf%ae%e6%94%b9%e6%99%82%e9%96%93%e7%9a%84%e6%96%b9%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Sun, 15 Jun 2025 03:28:26 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Asia/Taipei]]></category>
		<category><![CDATA[GMT]]></category>
		<category><![CDATA[timezone]]></category>
		<category><![CDATA[tzdata]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[UTC]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1847</guid>

					<description><![CDATA[有在使用 Linux 系統的人應該都知道如果系統時間不對, 有的時候一個失誤就會早成 log, 存檔的資料時間顯示錯亂, 特別是對程式開發人員如果有好的開發習慣在執行環境中事先指定時區那就不會有問題, 但如果一個不小心沒有去特別處理這個時區設定的工作, 結果就是時間軸怎麼怪怪的!!! 排程工作怎麼怪怪的!!! 以下我們就來透過幾個簡單的步驟對 Linux 系統進行設定 完成啦！ 以上兩個方法應該可以解決有關系統時間設定的問題, 如有其他問題也可留言討論! 時區相關參考資料:https://stackoverflow.com/questions/14128574/is-there-a-difference-between-the-utc-and-etc-utc-time-zones]]></description>
										<content:encoded><![CDATA[
<p>有在使用 Linux 系統的人應該都知道如果系統時間不對, 有的時候一個失誤就會早成 log, 存檔的資料時間顯示錯亂, 特別是對程式開發人員如果有好的開發習慣在執行環境中事先指定時區那就不會有問題, 但如果一個不小心沒有去特別處理這個時區設定的工作, 結果就是時間軸怎麼怪怪的!!!  排程工作怎麼怪怪的!!!  以下我們就來透過幾個簡單的步驟對 Linux 系統進行設定</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 首先我們先了解一下幾個資訊
# 台灣時區是 GMT + 8, 也就是我們的時間是 Greenwich Mean Time Zone (格林威治標準時間) + 8 小時
# 台灣的時區是 Asia/Taipei 
# 設定時區有兩個方法, 示範說明如下

# &lt;&lt; 方法 1 &gt;&gt;
# 首先我們先透過指令查看目前系統的時間資訊
# 輸入 timedatectl, 獲得以下資訊
# ====================================================
               Local time: Sun 2025-06-15 00:40:03 UTC
           Universal time: Sun 2025-06-15 00:40:03 UTC
                 RTC time: Sun 2025-06-15 00:40:03
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
			  NTP service: active
		  RTC in local TZ: no
# ====================================================
# 從這邊你可以看到你的時區是 Etc/UTC (UTC, +0000)
# 首先什麼是 Etc/UTC, 他是這樣的格式來做顯示的內容 Area/Location
# 其實「etc/utc」代表的是「世界協調時間(Coordinated Universal Time)」的時區代碼，
# 等同於「UTC」. 在Linux系統中，etc/utc 是一個常見的時區設定檔，用來表示世界標準時間，
# 也就是說，它不隨任何國家或地區的時間變化而變化，始終與原子鐘計時的標準時間保持一致
# 接下可透過以下指令查看所有時區資料
timedatectl list-timezones

# 如果覺得資料量太大, 可以抓取關鍵字顯示, 以下示範抓取 &quot;Taipei&quot;
timedatectl list-timezones | grep Taipei

# 確定好要設定的時區代號, 就可立即來進行設定囉!
sudo timedatectl set-timezone Asia/Taipei

# 完成之後, 再次透過 timedatectl 查看目前的時區設定, 你會發現他已經轉換到 Taipei 了喔!</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># &lt;&lt; 方法 2 &gt;&gt;
# 當你的系統沒有 systemd 時, 你就必須使用這第二個方法來設定時區
dpkg-reconfigure tzdata

# 接下來會跳出讓你選區域與城市的畫面, 選擇 Asia 與 Taipei
# 完成後回到指令介面, 你就會看到你的 Local time is now: XXXXX 顯示的就是正確的當地時間喔!!!!
</code></pre></div>



<p>完成啦！ 以上兩個方法應該可以解決有關系統時間設定的問題, 如有其他問題也可留言討論!</p>



<p>時區相關參考資料:<br><a href="https://stackoverflow.com/questions/14128574/is-there-a-difference-between-the-utc-and-etc-utc-time-zones">https://stackoverflow.com/questions/14128574/is-there-a-difference-between-the-utc-and-etc-utc-time-zones</a><br><br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/servertech/linux/ubuntu-%e4%bf%ae%e6%94%b9%e6%99%82%e9%96%93%e7%9a%84%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>如何透過 open-webui 製作出跟 chatgpt 類似的網頁對話 UI 與在本地端架設的 deespseek 互動</title>
		<link>https://www.capdio.com/artificial-intelligence/%e5%a6%82%e4%bd%95%e9%80%8f%e9%81%8e-open-webui-%e8%a3%bd%e4%bd%9c%e5%87%ba%e8%b7%9f-chatgpt-%e9%a1%9e%e4%bc%bc%e7%9a%84%e7%b6%b2%e9%a0%81%e5%b0%8d%e8%a9%b1-ui-%e8%88%87%e5%9c%a8%e6%9c%ac%e5%9c%b0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25a6%2582%25e4%25bd%2595%25e9%2580%258f%25e9%2581%258e-open-webui-%25e8%25a3%25bd%25e4%25bd%259c%25e5%2587%25ba%25e8%25b7%259f-chatgpt-%25e9%25a1%259e%25e4%25bc%25bc%25e7%259a%2584%25e7%25b6%25b2%25e9%25a0%2581%25e5%25b0%258d%25e8%25a9%25b1-ui-%25e8%2588%2587%25e5%259c%25a8%25e6%259c%25ac%25e5%259c%25b0</link>
					<comments>https://www.capdio.com/artificial-intelligence/%e5%a6%82%e4%bd%95%e9%80%8f%e9%81%8e-open-webui-%e8%a3%bd%e4%bd%9c%e5%87%ba%e8%b7%9f-chatgpt-%e9%a1%9e%e4%bc%bc%e7%9a%84%e7%b6%b2%e9%a0%81%e5%b0%8d%e8%a9%b1-ui-%e8%88%87%e5%9c%a8%e6%9c%ac%e5%9c%b0/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Sun, 08 Jun 2025 03:36:08 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1855</guid>

					<description><![CDATA[本篇假設操作環境是 Ubuntu 來做說明, 首先要做到這件事有一些事前工作要準備, 第一個當然是你要有 deepseek 在 local 堆運作的相關設置, 如果沒有的話可以參考站上的另一篇說明: DeepSeek 想試試? 就來在自己的環境跑看看吧! 202506我們假設各位已經把相關環境架設完成, 理論上你目前電腦上的 11434 port 已經被 ollama 佔用了吧!! 如果沒有的話那就是你的 Deepseek 並沒有啟動喔, 可以透過 ollama run deepseek-r1:1.5b(版本代號) 啟動他!!! 如果要在背景執行可以加上 &#38;, OK! 在確定你的 ollama + deepseek&#8230;]]></description>
										<content:encoded><![CDATA[
<p>本篇假設操作環境是 Ubuntu 來做說明, 首先要做到這件事有一些事前工作要準備, 第一個當然是你要有 deepseek 在 local 堆運作的相關設置, 如果沒有的話可以參考站上的另一篇說明:  <a href="https://www.capdio.com/news-updates/deepseek-%e6%83%b3%e8%a9%a6%e8%a9%a6-%e5%b0%b1%e4%be%86%e5%9c%a8%e8%87%aa%e5%b7%b1%e7%9a%84%e7%92%b0%e5%a2%83%e8%b7%91%e7%9c%8b%e7%9c%8b%e5%90%a7-202506/" data-type="post" data-id="1849">DeepSeek 想試試? 就來在自己的環境跑看看吧! 202506</a><br>我們假設各位已經把相關環境架設完成, 理論上你目前電腦上的 11434 port 已經被 ollama 佔用了吧!! 如果沒有的話那就是你的 Deepseek 並沒有啟動喔, 可以透過 ollama run deepseek-r1:1.5b(版本代號) 啟動他!!! 如果要在背景執行可以加上 &amp;, OK! 在確定你的 ollama + deepseek 成功運作之後, 就可以開始往下走了喔!!!!</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 接下來我們要透過 conda 的 python 環境來設置操作環境
# 安裝 conda
# 參考資料: https://www.anaconda.com/docs/getting-started/miniconda/install#linux
# 取得安裝執行檔案, 這邊選擇的是比較小的版本 Miniconda, 如果你空間很夠, 像要一次安裝
# 較多的套件, 也可以選擇使用 Anaconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 調整執行權限
chmod +x Miniconda3-latest-Linux-x86_64.sh 

# 執行
./Miniconda3-latest-Linux-x86_64.sh

# 接下來會問你說是否同意執行, 同意他的版權協議等等的
# 總之都選 yes 與 enter
# 其中有一個重點是
# 之後你登入這個帳號進來之後, 你會看到 prompt 前端會顯示 (base) 就代表你已經預設進入 conda 環境
# 或是你可以執行以下指令恢復成原本的狀態, 使用以下指令, 這樣就不會一開始就啟動此環境
conda config --set auto_activate_base false

# 然後登入之後再使用以下指令啟動環境, 最前方會顯示 (base)
conda activate

# 再次取消可以用以下指令
conda deactivate

# 安裝後你可以透過以下兩個指令查看是否沒有問題
conda list - Displays a list of packages installed in your active environment and their versions.
conda --version - Displays conda’s version number.

# 開始安裝 open-webui
# 創建虛擬環境(範例: conda create --name 環境名稱 python=版本號)
conda create -n open-webui python=3.11

# 進入虛擬環境
conda activate open-webui
pip install open-webui

# 完成之後, 啟動服務, 這一步會需要比較久的時間, 請耐心等待
open-webui serve (可加上 & 代表把它丟去背景執行)

# 啟動完成之後可以透過以下 url 進入服務, 第一次進入會請你創建管理者帳號
http://127.0.0.1:8080 (127.0.0.1 請改成你安裝 open-webui 的確實位置)

# 接下來他會自動偵測到你有 deepseek r1 並開始使用
# 當然你也可以自己加入其他的大語言模型之類的喔!</code></pre></div>



<p>To be continue&#8230;&#8230;.<br>接下來我們可透過學習如何使用 API 來與 AI 互動! 請期待接下來的教學文章喔!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/artificial-intelligence/%e5%a6%82%e4%bd%95%e9%80%8f%e9%81%8e-open-webui-%e8%a3%bd%e4%bd%9c%e5%87%ba%e8%b7%9f-chatgpt-%e9%a1%9e%e4%bc%bc%e7%9a%84%e7%b6%b2%e9%a0%81%e5%b0%8d%e8%a9%b1-ui-%e8%88%87%e5%9c%a8%e6%9c%ac%e5%9c%b0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DeepSeek 想試試? 就來在自己的環境跑看看吧! 202506</title>
		<link>https://www.capdio.com/news-updates/deepseek-%e6%83%b3%e8%a9%a6%e8%a9%a6-%e5%b0%b1%e4%be%86%e5%9c%a8%e8%87%aa%e5%b7%b1%e7%9a%84%e7%92%b0%e5%a2%83%e8%b7%91%e7%9c%8b%e7%9c%8b%e5%90%a7-202506/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=deepseek-%25e6%2583%25b3%25e8%25a9%25a6%25e8%25a9%25a6-%25e5%25b0%25b1%25e4%25be%2586%25e5%259c%25a8%25e8%2587%25aa%25e5%25b7%25b1%25e7%259a%2584%25e7%2592%25b0%25e5%25a2%2583%25e8%25b7%2591%25e7%259c%258b%25e7%259c%258b%25e5%2590%25a7-202506</link>
					<comments>https://www.capdio.com/news-updates/deepseek-%e6%83%b3%e8%a9%a6%e8%a9%a6-%e5%b0%b1%e4%be%86%e5%9c%a8%e8%87%aa%e5%b7%b1%e7%9a%84%e7%92%b0%e5%a2%83%e8%b7%91%e7%9c%8b%e7%9c%8b%e5%90%a7-202506/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Fri, 06 Jun 2025 03:08:32 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[News & Updates]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1849</guid>

					<description><![CDATA[2025 年我們看到廚了 OpenAI 之外後起之秀 DeepSeek 突然跳出檯面早成台積電與輝達股價突然劇烈震盪!! 聰明人應該都進場撿便宜了對吧!!! 回檔時就是賺錢的時機一點也沒錯!! 雖然我們可以透過 DeepSeek 的 API 與線上服務去體驗他的強大功能, 但是也因為樹大招風也就引來全世界的好奇, 不知是真的太熱門還是駭客攻擊, DeepSeek 就在不久前突然因為流量因素暫停了一陣子, 蝦米?!?!? 我才使用沒幾次而已, 現在就不給我體驗了是怎樣!! 不過別擔心, 現在就讓我們透過 Ollma 來在自家中建立起 DeepSeek 模型, 體驗一下離線 AI 的魔力吧!!! 內部 Local 端使用 AI 的優點 本機安裝使用&#8230;]]></description>
										<content:encoded><![CDATA[
<p>2025 年我們看到廚了 OpenAI 之外後起之秀 DeepSeek 突然跳出檯面早成台積電與輝達股價突然劇烈震盪!! 聰明人應該都進場撿便宜了對吧!!! 回檔時就是賺錢的時機一點也沒錯!!</p>



<p>雖然我們可以透過 DeepSeek 的 API 與線上服務去體驗他的強大功能, 但是也因為樹大招風也就引來全世界的好奇, 不知是真的太熱門還是駭客攻擊, DeepSeek 就在不久前突然因為流量因素暫停了一陣子, 蝦米?!?!? 我才使用沒幾次而已, 現在就不給我體驗了是怎樣!! 不過別擔心, 現在就讓我們透過 Ollma 來在自家中建立起 DeepSeek 模型, 體驗一下離線 AI 的魔力吧!!!</p>



<h2 class="wp-block-heading">內部 Local 端使用 AI 的優點</h2>



<ul class="wp-block-list">
<li>資料隱私: 所有資料都在自己的環境中, 並不會上傳到遠端 Server, 不用擔心資料外洩.</li>



<li>可調整模型特性: 因應你的個人環境可使用不同大小的模型與特性, 讓 AI 效能更符合需求</li>



<li>不用聯網: 是的, 因為是你的個人環境, 所以不需要聯網就能使用!!!  如果你有 UPS電源, 颱風天台電斷電時也可以有 AI 使用的.</li>



<li>最後當然就是吃到飽的概念囉, 自己的環境當然沒有像是你申請 API 使用 AI 一般需要先儲值付款再一使用次數口款等等的限制, 想問多少次, 問多久通通免費!!</li>
</ul>



<h2 class="wp-block-heading">本機安裝使用 DeepSeek 教學</h2>



<p>Part 1. 安裝 Ollama, 請到 Ollama 官網( <a href="https://www.ollama.com/download/windows">https://www.ollama.com/download/windows</a> ) 選擇你的作業系統, 他會跳出對應的安裝方式, 進行下載並執行或是執行相關指令後即可安裝完成.</p>



<p>Part 2, 選擇你要使用的模型, 請到 Ollama 的 Library 資源列表 ( <a href="https://www.ollama.com/library">https://www.ollama.com/library</a> ), 本次我們使用 deepseek-r1, 點進去之後你會看到如下的畫面, 右上角的是執行用的指令範例.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="741" src="https://www.capdio.com/wp-content/uploads/2025/06/ollma_deepseek_20250606-1024x741.png" alt="" class="wp-image-1850" srcset="https://www.capdio.com/wp-content/uploads/2025/06/ollma_deepseek_20250606-1024x741.png 1024w, https://www.capdio.com/wp-content/uploads/2025/06/ollma_deepseek_20250606-300x217.png 300w, https://www.capdio.com/wp-content/uploads/2025/06/ollma_deepseek_20250606-768x556.png 768w, https://www.capdio.com/wp-content/uploads/2025/06/ollma_deepseek_20250606-1536x1111.png 1536w, https://www.capdio.com/wp-content/uploads/2025/06/ollma_deepseek_20250606-1170x846.png 1170w, https://www.capdio.com/wp-content/uploads/2025/06/ollma_deepseek_20250606-585x423.png 585w, https://www.capdio.com/wp-content/uploads/2025/06/ollma_deepseek_20250606.png 1598w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>這邊主要是要讓你選擇模型的大小, 模型的大小會影響的當然就是 AI 思考的複雜度與完整性, 請依照你的環境特性去選擇喔!!! 如果你有安裝獨立顯示卡的話, 相對來講對於 ram 的需求會比較小, 反而是顯卡的 VRAM 對於運算的影響較大. ( 參考資料: <a href="https://apxml.com/posts/gpu-requirements-deepseek-r1">https://apxml.com/posts/gpu-requirements-deepseek-r1</a>), 另外再選擇模型時也要考慮你的儲存空間大小, 因為當你執行時他就會透過網路進行模型的下載. 請視你的硬體規格來做微調.<br><br>Part 3, 選定好模型之後, 接下來我們就來組成所需的指令!</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 以選擇 deepseek-r1:8b 為範例, 所需執行的指令範例為
ollama run deepseek-r1:1.8b

# 以最小模型為範例
ollama run deepseek-r1:1.5b</code></pre></div>



<p><br>Part 4, 執行, 接下來我們回到終端機那邊輸入剛剛那段指令, 他就會開始進行下載, 過幾分鐘後看到 success 就表示下載完成, 畫面就會停留在互動模式, 你就可以在此與 AI 進行對話了喔!!! 以下我們用 Windows 環境當成範例 demo 給大家看.<br>&lt;&lt; 執行 ollama 取用 DeepSeek 模型 8b<br><img loading="lazy" decoding="async" width="960" height="493" class="wp-image-1787" style="width: 960px;" src="https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_07_59-PM.png" alt="" srcset="https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_07_59-PM.png 1481w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_07_59-PM-300x154.png 300w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_07_59-PM-1024x526.png 1024w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_07_59-PM-768x395.png 768w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_07_59-PM-1170x601.png 1170w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_07_59-PM-585x301.png 585w" sizes="auto, (max-width: 960px) 100vw, 960px" /><br>&lt;&lt;開始進行下載模型的任務>><br><img loading="lazy" decoding="async" width="960" height="493" class="wp-image-1788" style="width: 960px;" src="https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_06_46-PM.png" alt="" srcset="https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_06_46-PM.png 1481w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_06_46-PM-300x154.png 300w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_06_46-PM-1024x526.png 1024w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_06_46-PM-768x395.png 768w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_06_46-PM-1170x601.png 1170w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_06_46-PM-585x301.png 585w" sizes="auto, (max-width: 960px) 100vw, 960px" /><br>&lt;&lt;看到 success 就代表完成, 可以開始與 AI 互動了>><br><img loading="lazy" decoding="async" width="960" height="493" class="wp-image-1789" style="width: 960px;" src="https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_09_53-PM.png" alt="" srcset="https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_09_53-PM.png 1481w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_09_53-PM-300x154.png 300w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_09_53-PM-1024x526.png 1024w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_09_53-PM-768x395.png 768w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_09_53-PM-1170x601.png 1170w, https://www.capdio.com/wp-content/uploads/2025/02/C__WINDOWS_system32_cmd.exe-ollama-run-deepseek-r1_8b-2_23_2025-5_09_53-PM-585x301.png 585w" sizes="auto, (max-width: 960px) 100vw, 960px" /></p>



<p>以上是不是很簡單, 不過當然目前也只是小小的利用離線版的 DeepSeek 做一點點小事情而已, 想要讓他發揮功能還有許多功能需要架設, 未來我們再利用 python 整合他來試試看喔!!! 敬請期待!!!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/news-updates/deepseek-%e6%83%b3%e8%a9%a6%e8%a9%a6-%e5%b0%b1%e4%be%86%e5%9c%a8%e8%87%aa%e5%b7%b1%e7%9a%84%e7%92%b0%e5%a2%83%e8%b7%91%e7%9c%8b%e7%9c%8b%e5%90%a7-202506/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
