<?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>程式語言 &#8211; CAPDIO</title>
	<atom:link href="https://www.capdio.com/category/programming-language/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>程式語言 &#8211; 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>使用 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>Github 不能用 http clone 取得專案了, 要怎麼設定用 ssh</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/github-%e4%b8%8d%e8%83%bd%e7%94%a8-http-clone-%e5%8f%96%e5%be%97%e5%b0%88%e6%a1%88%e4%ba%86-%e8%a6%81%e6%80%8e%e9%ba%bc%e8%a8%ad%e5%ae%9a%e7%94%a8-ssh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=github-%25e4%25b8%258d%25e8%2583%25bd%25e7%2594%25a8-http-clone-%25e5%258f%2596%25e5%25be%2597%25e5%25b0%2588%25e6%25a1%2588%25e4%25ba%2586-%25e8%25a6%2581%25e6%2580%258e%25e9%25ba%25bc%25e8%25a8%25ad%25e5%25ae%259a%25e7%2594%25a8-ssh</link>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Wed, 13 Nov 2024 13:40:30 +0000</pubDate>
				<category><![CDATA[軟體開發知識庫]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1755</guid>

					<description><![CDATA[github 基於安全因素將 clone by http 給取消掉了!!! 那麼使用 ssh 去進行 clone 等的操作算是最原生的方法了!! 但是該怎麼進行呢？ 其實不難, 只要透過以下幾個步驟就可以達成了!! 事前準備工作1. 請先註冊好 github 帳號, 我們先架設我們的帳號叫做 Ahero2024TW2. 隨意先建立一個 repository, 我們先假設這邊叫做 AAAAProject Step 1 &#8211; create your own ssh key如何建立 ssh key, 如果你是&#8230;]]></description>
										<content:encoded><![CDATA[
<p>github 基於安全因素將 clone by http 給取消掉了!!! 那麼使用 ssh 去進行 clone 等的操作算是最原生的方法了!! 但是該怎麼進行呢？ 其實不難, 只要透過以下幾個步驟就可以達成了!!</p>



<p>事前準備工作<br>1. 請先註冊好 github 帳號, 我們先架設我們的帳號叫做 Ahero2024TW<br>2. 隨意先建立一個 repository, 我們先假設這邊叫做 AAAAProject</p>



<p><strong>Step 1 </strong>&#8211; create your own ssh key<br>如何建立 ssh key, 如果你是 linux 用戶我想這個問題應該很簡單!!<br>如果不知道怎麼進行, 我之後再補上, 或是可以參考這邊<br><a href="https://phoenixnap.com/kb/git-clone-ssh">https://phoenixnap.com/kb/git-clone-ssh</a><br>這邊我們假設你建立好的 key 組是以下兩個檔案<br><code>~/.ssh/id_github<br>~/.ssh/id_github.pub</code><br>這邊 ~/ 是在 unix 下帳號所屬的根目錄, 如果是在 windows 那你的目錄就是 C:/Users/你的帳號<br>所以 ~/.ssh 就是等於 windows 下的 C:/Users/你的帳號/.ssh</p>



<p><strong>Step 2 </strong>&#8211; 將你的公鑰放上去 github<br>你登入到 github 後就可以選擇加入了, 詳情可以參考<br><a href="https://phoenixnap.com/kb/git-clone-ssh">https://phoenixnap.com/kb/git-clone-ssh</a></p>



<p><strong>Step 3</strong> &#8211; 進行測試<br>請在 windows 的 terminal (命令提示字元, 就是類似 dos 那個畫面視窗) 輸入以下指令<br><code>git -i .ssh/id_github -T git@github.com</code><br><br>你應該會看到他顯示以下打招呼的回應, 如果是 Permission denied 那就是失敗有問題喔!<br>Hi Ahero2024TW! bala ~~ bala~~~</p>



<p><strong>Step 4</strong> &#8211; 環境設定<br>請到 ~/.ssh 目錄下建立 config 檔案, 將以下內容放入</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>Host github.com
Hostname github.com
User Ahero2024TW
IdentityFile ~/.ssh/id_github 或是(擇一輸入 unix or windows) 
IdentityFile C:/Users/你的windows帳號/.ssh/id_github
IdentitiesOnly yes</code></pre></div>



<p>存檔後即可</p>



<p><strong>Step 5</strong> &#8211; clone repository<br>接下來你可以到你想要放入專案的資料匣內進行以下指令<br>git clone git@github.com:Ahero2024TW/AAAAProject.git<br>看到 done 那麼就可發現檔案都已 clone 到 local 端了, 成功!!!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Python 如何製作簡單的 config 設定檔</title>
		<link>https://www.capdio.com/programming-language/python/python-%e5%a6%82%e4%bd%95%e8%a3%bd%e4%bd%9c%e7%b0%a1%e5%96%ae%e7%9a%84-config-%e8%a8%ad%e5%ae%9a%e6%aa%94/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-%25e5%25a6%2582%25e4%25bd%2595%25e8%25a3%25bd%25e4%25bd%259c%25e7%25b0%25a1%25e5%2596%25ae%25e7%259a%2584-config-%25e8%25a8%25ad%25e5%25ae%259a%25e6%25aa%2594</link>
					<comments>https://www.capdio.com/programming-language/python/python-%e5%a6%82%e4%bd%95%e8%a3%bd%e4%bd%9c%e7%b0%a1%e5%96%ae%e7%9a%84-config-%e8%a8%ad%e5%ae%9a%e6%aa%94/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Sun, 18 Aug 2024 14:18:35 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1666</guid>

					<description><![CDATA[當我們在撰寫 Python 程式的時候, 偶爾會希望我們的程式可以在不同環境中使用, 舉例來說有一個讀取 DB 的程式碼為了要因應不同環境下 db 位置, 帳號密碼的不同, 因此我們會希望使用者自行去修改設定檔而不是去變動程式碼, 這樣可以避免不小心動到原始程式碼因而造成不可預期的 bug. 那麼在 Python 下其實有很多種方法可以去製作這樣的 config 設定檔. 好比說我們常用的 ini, json, yaml 與 xml. 以下在 stackoverflow 的文章正好可以為大家解答. Reference: https://stackoverflow.com/questions/19078170/python-how-would-you-save-a-simple-settings-config-file 另外作者有空時再為大家寫一個中文的參考範例, 敬請期待]]></description>
										<content:encoded><![CDATA[
<p>當我們在撰寫 Python 程式的時候, 偶爾會希望我們的程式可以在不同環境中使用, 舉例來說有一個讀取 DB 的程式碼為了要因應不同環境下 db 位置, 帳號密碼的不同, 因此我們會希望使用者自行去修改設定檔而不是去變動程式碼, 這樣可以避免不小心動到原始程式碼因而造成不可預期的 bug. 那麼在 Python 下其實有很多種方法可以去製作這樣的 config 設定檔. 好比說我們常用的 ini, json, yaml 與 xml. 以下在 stackoverflow 的文章正好可以為大家解答.</p>



<p>Reference: https://stackoverflow.com/questions/19078170/python-how-would-you-save-a-simple-settings-config-file</p>



<p>另外作者有空時再為大家寫一個中文的參考範例, 敬請期待</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/programming-language/python/python-%e5%a6%82%e4%bd%95%e8%a3%bd%e4%bd%9c%e7%b0%a1%e5%96%ae%e7%9a%84-config-%e8%a8%ad%e5%ae%9a%e6%aa%94/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TypeScript 在變數後面加上 &#8220;!&#8221; 是什麼意思</title>
		<link>https://www.capdio.com/uncategorized/typescript-%e5%9c%a8%e8%ae%8a%e6%95%b8%e5%be%8c%e9%9d%a2%e5%8a%a0%e4%b8%8a-%e6%98%af%e4%bb%80%e9%ba%bc%e6%84%8f%e6%80%9d/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=typescript-%25e5%259c%25a8%25e8%25ae%258a%25e6%2595%25b8%25e5%25be%258c%25e9%259d%25a2%25e5%258a%25a0%25e4%25b8%258a-%25e6%2598%25af%25e4%25bb%2580%25e9%25ba%25bc%25e6%2584%258f%25e6%2580%259d</link>
					<comments>https://www.capdio.com/uncategorized/typescript-%e5%9c%a8%e8%ae%8a%e6%95%b8%e5%be%8c%e9%9d%a2%e5%8a%a0%e4%b8%8a-%e6%98%af%e4%bb%80%e9%ba%bc%e6%84%8f%e6%80%9d/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Sun, 23 Jun 2024 07:47:30 +0000</pubDate>
				<category><![CDATA[JavaScript / TypeScript]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1654</guid>

					<description><![CDATA[在 typescript 的程式語言當中, 使用 ! 驚嘆號的意思就是代表驚嘆號前方的變數(物件)必須是存在的, 如果不存在就會出錯!有點類似主動防呆的一種用法!!! 避免在這類高階程式語言當中因為將該變數(物件)進行指派或是初始化而造成看不到(不會跳錯誤)的 bug! 以下用個範例解釋! 輸出結果如下 參考資料來源: https://blog.csdn.net/qubes/article/details/136867140]]></description>
										<content:encoded><![CDATA[
<p>在 typescript 的程式語言當中, 使用 ! 驚嘆號的意思就是代表驚嘆號前方的變數(物件)必須是存在的, 如果不存在就會出錯!<br>有點類似主動防呆的一種用法!!! 避免在這類高階程式語言當中因為將該變數(物件)進行指派或是初始化而造成看不到(不會跳錯誤)的 bug!  以下用個範例解釋!</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-ts" data-lang="TypeScript"><code>function TS_test(inputObj: any): void{
    console.log(&quot;=====================================&quot;);
    // 完全正常的 case
    console.log(&#39;Best fruit name is: &#39; + inputObj.fruit!.name);
    // 因為沒有加上 ! ,所以並未強制判斷變數(物件)並要求跳出 error
    console.log(&#39;Case 1: Best food is: &#39; + inputObj.food);
    // 因為有加上 ! ,因此程式碼會判斷 food 是否存在, 不存在的話就會跳出 error
    console.log(&#39;Case 2: Best food is: &#39; + inputObj.food!.name);
    console.log(&quot;=====================================&quot;);
}

const TaiwanBest = {
    fruit: {name: &#39;banana&#39;}
}
TS_test(TaiwanBest);</code></pre></div>



<p>輸出結果如下</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>console.log(&#39;Case 2: Best food is: &#39; + inputObj.food!.name);

TypeError: Cannot read properties of undefined (reading &#39;name&#39;)</code></pre></div>



<p>參考資料來源: https://blog.csdn.net/qubes/article/details/136867140</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/uncategorized/typescript-%e5%9c%a8%e8%ae%8a%e6%95%b8%e5%be%8c%e9%9d%a2%e5%8a%a0%e4%b8%8a-%e6%98%af%e4%bb%80%e9%ba%bc%e6%84%8f%e6%80%9d/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Git SCM, Git 我們知道, 但是什麼是 SCM ?</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/git-scm-git-%e6%88%91%e5%80%91%e7%9f%a5%e9%81%93-%e4%bd%86%e6%98%af%e4%bb%80%e9%ba%bc%e6%98%af-scm/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-scm-git-%25e6%2588%2591%25e5%2580%2591%25e7%259f%25a5%25e9%2581%2593-%25e4%25bd%2586%25e6%2598%25af%25e4%25bb%2580%25e9%25ba%25bc%25e6%2598%25af-scm</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/git-scm-git-%e6%88%91%e5%80%91%e7%9f%a5%e9%81%93-%e4%bd%86%e6%98%af%e4%bb%80%e9%ba%bc%e6%98%af-scm/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Thu, 16 May 2024 14:25:35 +0000</pubDate>
				<category><![CDATA[軟體開發知識庫]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1621</guid>

					<description><![CDATA[什麽是SCM首先我們平時用的什麽git，svn啥的都屬於SCM。SCM（Software Configuration Management，軟件配置管理）是一種標識、組織和控制修改的技術。它應用於整個軟件生存期。 最原始古老的方法是采用手工管理版本的方式，例如當一個新版本產生時用當時的日期來命名文件夾，然後再覆制一下以後的修改在覆制的文件夾內進行，這樣上一個版本就被保存下來了，周而覆始不同的版本不會被覆蓋。雖然這種方式可以從某種程度上解決版本的回溯問題，但他存在的缺點是顯而易見的：第一點如果保留結果過於頻繁，將會導致產生大量的有著重覆內容的文件夾和龐大的物理空間占用，管理起來很麻煩；如果保留舊版本的時間間隔太長，可能產生某些有用的老程序無法回溯。第二容易產生版本的混亂，如果是團隊開發軟件，這種簡單的方法更難解決問題的本質了。 幾乎所有的SCM都離不開三大基本步驟1.Get Latest Version 2.Check Out 3.修改完後Check In。以git為例，分別是 從git取數據（git clone）改動代碼將改動傳回git（git push）]]></description>
										<content:encoded><![CDATA[
<p>什麽是SCM<br>首先我們平時用的什麽git，svn啥的都屬於SCM。SCM（Software Configuration Management，軟件配置管理）是一種標識、組織和控制修改的技術。它應用於整個軟件生存期。 最原始古老的方法是采用手工管理版本的方式，例如當一個新版本產生時用當時的日期來命名文件夾，然後再覆制一下以後的修改在覆制的文件夾內進行，這樣上一個版本就被保存下來了，周而覆始不同的版本不會被覆蓋。雖然這種方式可以從某種程度上解決版本的回溯問題，但他存在的缺點是顯而易見的：第一點如果保留結果過於頻繁，將會導致產生大量的有著重覆內容的文件夾和龐大的物理空間占用，管理起來很麻煩；如果保留舊版本的時間間隔太長，可能產生某些有用的老程序無法回溯。第二容易產生版本的混亂，如果是團隊開發軟件，這種簡單的方法更難解決問題的本質了。<br><br>幾乎所有的SCM都離不開三大基本步驟<br>1.Get Latest Version <br>2.Check Out <br>3.修改完後Check In。<br>以git為例，分別是<br><br>從git取數據（git clone）<br>改動代碼<br>將改動傳回git（git push）</p>
]]></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/git-scm-git-%e6%88%91%e5%80%91%e7%9f%a5%e9%81%93-%e4%bd%86%e6%98%af%e4%bb%80%e9%ba%bc%e6%98%af-scm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>什麼是軟體版的 LTS?</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%bb%80%e9%ba%bc%e6%98%af%e8%bb%9f%e9%ab%94%e7%89%88%e7%9a%84-lts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bb%2580%25e9%25ba%25bc%25e6%2598%25af%25e8%25bb%259f%25e9%25ab%2594%25e7%2589%2588%25e7%259a%2584-lts</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%bb%80%e9%ba%bc%e6%98%af%e8%bb%9f%e9%ab%94%e7%89%88%e7%9a%84-lts/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Thu, 09 May 2024 10:08:27 +0000</pubDate>
				<category><![CDATA[軟體開發知識庫]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1627</guid>

					<description><![CDATA[LTS 就是指長期支援 （Long-term support, 縮寫 LTS）是一種軟體的產品生命週期政策, 特別是開源軟體, 它增加了軟體開發過程及軟體版本週期的可靠度. 長期支援延長了軟體維護的週期; 它也改變了軟體更新 (修補程式) 的類型及頻率以降低風險, 費用及軟體部署的中斷時間, 同時提升了軟體的可靠性. 所以當軟體版本有寫 LTS 時, 代表他在一段很長的時間內會有更新, 問題修補&#8230;.等, 所以使用時可以不用擔心以後軟體變成孤兒的情形, 相反的如果沒有加註 LTS, 那就很有可能過一陣子你會發現軟體有問題但是都沒人出面解決!!! 這是所有軟體開發人員不樂見的!! 因此軟體相關人員在採用各種 solution 時, 都要這特別去注意這個特型喔!!!]]></description>
										<content:encoded><![CDATA[
<p>LTS 就是指長期支援 （Long-term support, 縮寫 LTS）是一種軟體的產品生命週期政策, 特別是開源軟體, 它增加了軟體開發過程及軟體版本週期的可靠度. 長期支援延長了軟體維護的週期; 它也改變了軟體更新 (修補程式) 的類型及頻率以降低風險, 費用及軟體部署的中斷時間, 同時提升了軟體的可靠性.</p>



<p>所以當軟體版本有寫 LTS 時, 代表他在一段很長的時間內會有更新, 問題修補&#8230;.等, 所以使用時可以不用擔心以後軟體變成孤兒的情形, 相反的如果沒有加註 LTS, 那就很有可能過一陣子你會發現軟體有問題但是都沒人出面解決!!! 這是所有軟體開發人員不樂見的!! 因此軟體相關人員在採用各種 solution 時, 都要這特別去注意這個特型喔!!!</p>
]]></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%bb%80%e9%ba%bc%e6%98%af%e8%bb%9f%e9%ab%94%e7%89%88%e7%9a%84-lts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>當遇到 Chromedriver version 問題時</title>
		<link>https://www.capdio.com/programming-language/python/%e7%95%b6%e9%81%87%e5%88%b0-chromedriver-version-%e5%95%8f%e9%a1%8c%e6%99%82/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%2595%25b6%25e9%2581%2587%25e5%2588%25b0-chromedriver-version-%25e5%2595%258f%25e9%25a1%258c%25e6%2599%2582</link>
					<comments>https://www.capdio.com/programming-language/python/%e7%95%b6%e9%81%87%e5%88%b0-chromedriver-version-%e5%95%8f%e9%a1%8c%e6%99%82/#respond</comments>
		
		<dc:creator><![CDATA[George]]></dc:creator>
		<pubDate>Mon, 29 Apr 2024 09:19:04 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://www.capdio.com/?p=1605</guid>

					<description><![CDATA[這代表的是你的 ChromeDriver 版本不合, 這時請先確定你的 Chrome browser 版本, 以上面為例就是 &#8220;124.0.6367.91&#8221;, 這個時候請到以下網站曲獲得適合你的版本;Chromedriver 下載網站 => https://chromedriver.chromium.org/downloads依循上面的連結我們可以找看看有沒有可以對應的版本, 如果你的 chrome 一直都是最新版的話, 那你可以點選內容中有一個https://googlechromelabs.github.io/chrome-for-testing/. 這是放在 github 上最新版的資源 找到對應的版本之後, 下載時要注意 CPU 是否有對到喔! 如果下載錯誤他是不能執行的!!! 另外下載完之後是 zip 內容, 把它解開後放置到他該去的位置即可Windows: 放置你比較常放 Lib 的地方, 然後程式碼在呼叫時指定完整路徑即可MAC: /usr/local/bin相較於 Windows,&#8230;]]></description>
										<content:encoded><![CDATA[
<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>例如: python message: session not created: This version of ChromeDriver only supports 
Chrome version 122 Current browser version is 124.0.6367.91 with binary path 
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome</code></pre></div>



<p>這代表的是你的 ChromeDriver 版本不合, 這時請先確定你的 Chrome browser 版本, 以上面為例就是 &#8220;124.0.6367.91&#8221;, 這個時候請到以下網站曲獲得適合你的版本;<br>Chromedriver 下載網站 => <a href="https://chromedriver.chromium.org/downloads">https://chromedriver.chromium.org/downloads</a><br>依循上面的連結我們可以找看看有沒有可以對應的版本, 如果你的 chrome 一直都是最新版的話, 那你可以點選內容中有一個<br><a href="https://googlechromelabs.github.io/chrome-for-testing/">https://googlechromelabs.github.io/chrome-for-testing/</a>. 這是放在 github 上最新版的資源</p>



<p>找到對應的版本之後, 下載時要注意 CPU 是否有對到喔! 如果下載錯誤他是不能執行的!!! 另外下載完之後是 zip 內容, 把它解開後放置到他該去的位置即可<br>Windows: 放置你比較常放 Lib 的地方, 然後程式碼在呼叫時指定完整路徑即可<br>MAC: /usr/local/bin<br>相較於 Windows, Mac 就簡單許多!!!</p>



<p>最後檔案放置過程中如有舊版的請直接複寫即可喔!!! Good Luck! 如果使用上有問題歡迎留言討論喔!<br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.capdio.com/programming-language/python/%e7%95%b6%e9%81%87%e5%88%b0-chromedriver-version-%e5%95%8f%e9%a1%8c%e6%99%82/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
