<?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>Netowrk 彙整 - 碼蟻創研工坊 - CODEANT STUDIOS</title>
	<atom:link href="http://codeant.cc/archives/category/network/feed" rel="self" type="application/rss+xml" />
	<link>http://codeant.cc/archives/category/network</link>
	<description></description>
	<lastBuildDate>Thu, 17 Apr 2025 13:58:50 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>http://codeant.cc/wp-content/uploads/2020/10/cropped-Code-Ant-Logo-2-32x32.png</url>
	<title>Netowrk 彙整 - 碼蟻創研工坊 - CODEANT STUDIOS</title>
	<link>http://codeant.cc/archives/category/network</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Apache Log 智能封鎖腳本：自動擷取異常存取與黑名單管理（含 ipset 實作）</title>
		<link>http://codeant.cc/archives/286</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Thu, 17 Apr 2025 13:31:49 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/?p=286</guid>

					<description><![CDATA[<p>Category: 技術手記 Tags: apache, access.log, error.log, 自動封 [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/286">Apache Log 智能封鎖腳本：自動擷取異常存取與黑名單管理（含 ipset 實作）</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>Category: 技術手記 Tags: apache, access.log, error.log, 自動封鎖, ipset, Linux 防火牆, fail2ban 替代</p>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f575.png" alt="🕵" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 背景說明</h2>



<p>在大量來自海外的機器人、爬蟲與攻擊流量中，我發現除了 TCP SYN Flood 之外，Apache 的 access.log 與 error.log 裡也有大量異常存取行為，例如：</p>



<ul class="wp-block-list">
<li>不存在的網址（404）</li>



<li>權限拒絕（403）</li>



<li>掃描漏洞（例如嘗試連到 <code>/wp-login.php</code>, <code>/phpmyadmin</code> 等）</li>
</ul>



<p>這些都是潛在攻擊前兆，因此我撰寫一份腳本，定期分析 Apache 的 log 檔，自動封鎖惡意 IP。</p>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 腳本偵測規則</h2>



<p>支援以下條件：</p>



<ul class="wp-block-list">
<li>來自 access.log 或 error.log</li>



<li>出現大量 403 或 404 回應（可自訂次數門檻）</li>



<li>僅掃描 .log 結尾的檔案，跳過 .log.1 或 .gz 歷史檔</li>



<li><strong>可選擇性分析過去 N 分鐘內的 log 記錄</strong>（例如搭配 <code>date</code> + <code>awk</code> 過濾）</li>
</ul>



<p>例如：</p>



<pre class="wp-block-code"><code>grep -hE ' 403 | 404 ' /var/log/apache2/*access.log \
  | awk -v since="$(date --date='5 minutes ago' '+%d/%b/%Y:%H:%M')" \
         '$4 &gt; "&#91;"since' {print $1}'</code></pre>



<p>此方法可限制分析最近 5 分鐘內的異常行為，避免封鎖過時的 IP。</p>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 腳本實作邏輯：apache-ban-ip.sh</h2>



<pre class="wp-block-code"><code>#!/bin/bash

export PATH=/usr/sbin:/usr/bin:/bin:/sbin
LOG_DIR=/var/log/apache2
IPSET_NAME="blacklist"
THRESHOLD=50
IPSET_TIMEOUT=3600
WHITELIST=("127.0.0.1" "你的管理員IP")

# 初始化 ipset
ipset list $IPSET_NAME &gt;/dev/null 2&gt;&amp;1 || ipset create $IPSET_NAME hash:ip timeout $IPSET_TIMEOUT

is_whitelisted() {
  for wip in "${WHITELIST&#91;@]}"; do
    &#91;&#91; "$1" == "$wip" ]] &amp;&amp; return 0
  done
  return 1
}

# 計算最近 5 分鐘的時間戳格式（Apache log 格式）
SINCE=$(date --date='5 minutes ago' '+%d/%b/%Y:%H:%M')

# 擷取最近 5 分鐘內 access.log 中 403, 404 的來源 IP（僅限 .log 結尾）
grep -hE ' 403 | 404 ' $LOG_DIR/*access.log \
  | awk -v since="$SINCE" '$4 &gt; "&#91;"since {print $1}' \
  | sort | uniq -c | sort -nr \
  | awk -v thr=$THRESHOLD '$1 &gt; thr {print $2}' \
  | while read ip; do
    if is_whitelisted "$ip"; then
      echo "&#91;略過] $ip 為白名單"
      continue
    fi
    echo "&#91;封鎖] $ip 超過異常門檻，加入黑名單"
    ipset add $IPSET_NAME $ip timeout $IPSET_TIMEOUT 2&gt;/dev/null
  done</code></pre>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/23f0.png" alt="⏰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 建議排程（每 5 分鐘一次）</h2>



<pre class="wp-block-code"><code>sudo crontab -e</code></pre>



<p>加入：</p>



<pre class="wp-block-code"><code>*/5 * * * * /usr/local/bin/apache-ban-ip.sh &gt;&gt; /var/log/apache-ban.log 2&gt;&amp;1</code></pre>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 補充設定（若未設）</h2>



<p>請確保你已有正確的 iptables drop 規則：</p>



<pre class="wp-block-code"><code>sudo iptables -I INPUT -m set --match-set blacklist src -j DROP</code></pre>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 後續可進階方向</h2>



<ul class="wp-block-list">
<li>加入封鎖 IP 通知（LINE Notify / Email）</li>



<li>將每次封鎖記錄存入 SQLite / JSON Log</li>



<li>做出白名單 / 灰名單 / 封鎖名單 dashboard</li>



<li>用 fail2ban 整合也可以，但此腳本更輕量彈性</li>
</ul>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 結語</h2>



<p>這支腳本已幫助我自動防禦數千次非法掃描與惡意請求，等同為 Apache 建立了應用層 WAF 界限。</p>



<p>若你正在經營 WordPress、WooCommerce、或自架 API Gateway，這個腳本將成為你最值得信任的守門員。</p>



<p>開源、自由擴充，安全你自己定義。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Reality Breaker — 拒絕被動，用邏輯穿透風暴。</p>
</blockquote>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F286&amp;linkname=Apache%20Log%20%E6%99%BA%E8%83%BD%E5%B0%81%E9%8E%96%E8%85%B3%E6%9C%AC%EF%BC%9A%E8%87%AA%E5%8B%95%E6%93%B7%E5%8F%96%E7%95%B0%E5%B8%B8%E5%AD%98%E5%8F%96%E8%88%87%E9%BB%91%E5%90%8D%E5%96%AE%E7%AE%A1%E7%90%86%EF%BC%88%E5%90%AB%20ipset%20%E5%AF%A6%E4%BD%9C%EF%BC%89" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F286&amp;linkname=Apache%20Log%20%E6%99%BA%E8%83%BD%E5%B0%81%E9%8E%96%E8%85%B3%E6%9C%AC%EF%BC%9A%E8%87%AA%E5%8B%95%E6%93%B7%E5%8F%96%E7%95%B0%E5%B8%B8%E5%AD%98%E5%8F%96%E8%88%87%E9%BB%91%E5%90%8D%E5%96%AE%E7%AE%A1%E7%90%86%EF%BC%88%E5%90%AB%20ipset%20%E5%AF%A6%E4%BD%9C%EF%BC%89" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F286&amp;linkname=Apache%20Log%20%E6%99%BA%E8%83%BD%E5%B0%81%E9%8E%96%E8%85%B3%E6%9C%AC%EF%BC%9A%E8%87%AA%E5%8B%95%E6%93%B7%E5%8F%96%E7%95%B0%E5%B8%B8%E5%AD%98%E5%8F%96%E8%88%87%E9%BB%91%E5%90%8D%E5%96%AE%E7%AE%A1%E7%90%86%EF%BC%88%E5%90%AB%20ipset%20%E5%AF%A6%E4%BD%9C%EF%BC%89" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F286&amp;linkname=Apache%20Log%20%E6%99%BA%E8%83%BD%E5%B0%81%E9%8E%96%E8%85%B3%E6%9C%AC%EF%BC%9A%E8%87%AA%E5%8B%95%E6%93%B7%E5%8F%96%E7%95%B0%E5%B8%B8%E5%AD%98%E5%8F%96%E8%88%87%E9%BB%91%E5%90%8D%E5%96%AE%E7%AE%A1%E7%90%86%EF%BC%88%E5%90%AB%20ipset%20%E5%AF%A6%E4%BD%9C%EF%BC%89" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F286&amp;linkname=Apache%20Log%20%E6%99%BA%E8%83%BD%E5%B0%81%E9%8E%96%E8%85%B3%E6%9C%AC%EF%BC%9A%E8%87%AA%E5%8B%95%E6%93%B7%E5%8F%96%E7%95%B0%E5%B8%B8%E5%AD%98%E5%8F%96%E8%88%87%E9%BB%91%E5%90%8D%E5%96%AE%E7%AE%A1%E7%90%86%EF%BC%88%E5%90%AB%20ipset%20%E5%AF%A6%E4%BD%9C%EF%BC%89" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F286&amp;linkname=Apache%20Log%20%E6%99%BA%E8%83%BD%E5%B0%81%E9%8E%96%E8%85%B3%E6%9C%AC%EF%BC%9A%E8%87%AA%E5%8B%95%E6%93%B7%E5%8F%96%E7%95%B0%E5%B8%B8%E5%AD%98%E5%8F%96%E8%88%87%E9%BB%91%E5%90%8D%E5%96%AE%E7%AE%A1%E7%90%86%EF%BC%88%E5%90%AB%20ipset%20%E5%AF%A6%E4%BD%9C%EF%BC%89" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F286&#038;title=Apache%20Log%20%E6%99%BA%E8%83%BD%E5%B0%81%E9%8E%96%E8%85%B3%E6%9C%AC%EF%BC%9A%E8%87%AA%E5%8B%95%E6%93%B7%E5%8F%96%E7%95%B0%E5%B8%B8%E5%AD%98%E5%8F%96%E8%88%87%E9%BB%91%E5%90%8D%E5%96%AE%E7%AE%A1%E7%90%86%EF%BC%88%E5%90%AB%20ipset%20%E5%AF%A6%E4%BD%9C%EF%BC%89" data-a2a-url="http://codeant.cc/archives/286" data-a2a-title="Apache Log 智能封鎖腳本：自動擷取異常存取與黑名單管理（含 ipset 實作）"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/286">Apache Log 智能封鎖腳本：自動擷取異常存取與黑名單管理（含 ipset 實作）</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>🛡 黑盾守門員：我如何打造一套自動反制 SYN Flood 的伺服器防火牆系統（含腳本更新）</title>
		<link>http://codeant.cc/archives/284</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Thu, 17 Apr 2025 11:37:26 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/?p=284</guid>

					<description><![CDATA[<p>本篇介紹一套我親自實作、已成功抵擋上千次攻擊的 自動封鎖系統腳本，專門對付 TCP SYN Flood 攻擊。 [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/284">🛡 黑盾守門員：我如何打造一套自動反制 SYN Flood 的伺服器防火牆系統（含腳本更新）</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>本篇介紹一套我親自實作、已成功抵擋上千次攻擊的 <strong>自動封鎖系統腳本</strong>，專門對付 TCP SYN Flood 攻擊。適用於 Linux + Apache + ipset 環境，完全開源，輕巧高效，歡迎自由使用與改造！</p>
</blockquote>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 問題起點：SYN Flood 攻擊讓我 HTTPS 掛點</h2>



<p>某天，我的伺服器連線數飆升，Apache 回應延遲，<code>ss -tanp | grep "SYN-RECV"</code> 看到數百條類似這樣的紀錄：</p>



<pre class="wp-block-preformatted"><code>SYN-RECV   0 0 [::ffff:10.140.0.3]:443 [::ffff:179.107.51.201]:37425<br></code></pre>



<p>這表示 TCP 三次握手被卡住，對方故意不回 ACK，讓伺服器卡在 <code>SYN_RECV</code> 狀態，進而癱瘓。</p>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 我的想法：伺服器需要一個「黑盾守門員」</h2>



<p>我需要一個 <strong>自動偵測＋即時反制</strong> 的防火牆腳本，來對抗這種 TCP 層的資源消耗型攻擊。</p>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 黑盾守門員的核心邏輯：</h2>



<ol class="wp-block-list">
<li>每分鐘掃描 <code>ss -tanp | grep SYN-RECV</code> 中的連線</li>



<li>解析來源 IP（含 <code>::ffff:x.x.x.x</code> 格式）</li>



<li>每個 IP 若連線數 > 門檻（例如 10），就用 <code>ipset</code> 封鎖</li>



<li>封鎖一段時間（如一小時），之後自動解除</li>



<li>可設定白名單，避免誤殺管理者或內網</li>
</ol>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/270d.png" alt="✍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 最新修正版腳本（支援 IPv6 包裝格式）</h2>



<p>請將下列內容儲存為 <code>/usr/local/bin/synflood-defender.sh</code>：</p>



<pre class="wp-block-preformatted">#!/bin/bash<br><br>IPSET_NAME="blacklist"<br>IPSET_TIMEOUT=3600<br>SYN_THRESHOLD=10<br>WHITELIST=("127.0.0.1" "你的管理員IP")<br><br># 建立 ipset（若尚未存在）<br>ipset list $IPSET_NAME >/dev/null 2>&amp;1 || ipset create $IPSET_NAME hash:ip timeout $IPSET_TIMEOUT<br><br># 判斷是否白名單<br>is_whitelisted() {<br>  for white_ip in "${WHITELIST[@]}"; do<br>    [[ "$1" == "$white_ip" ]] &amp;&amp; return 0<br>  done<br>  return 1<br>}<br><br># 掃描 SYN_RECV 並解析 IP<br>ss -tanp | grep "SYN-RECV" \<br>| awk '{print $5}' \<br>| grep -oP '(?&lt;=::ffff:)(\d{1,3}(\.\d{1,3}){3})' \<br>| sort | uniq -c \<br>| awk -v thr=$SYN_THRESHOLD '$1 >= thr {print $2}' \<code><br>| while read ip; do<br>  if is_whitelisted "$ip"; then<br>    echo "[略過] 白名單 IP：$ip"<br>    continue<br>  fi<br>  echo "[封鎖] $ip 達到 SYN_RECV 門檻，封鎖中..."<br>  ipset add $IPSET_NAME "$ip" timeout $IPSET_TIMEOUT 2>/dev/null<br>done<br><br># 輸出目前封鎖總數<br>COUNT=$(ipset list $IPSET_NAME | grep -c 'add ')<br>echo "[done] 當前 SYN 封鎖 IP 數：$COUNT"<br></code></pre>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/23f0.png" alt="⏰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 自動化建議（每分鐘執行）</h2>



<p>請加入 crontab：</p>



<pre class="wp-block-preformatted"><code>sudo crontab -e<br></code></pre>



<p>加入以下內容：</p>



<pre class="wp-block-preformatted"><code>* * * * * /usr/local/bin/synflood-defender.sh >> /var/log/synflood.log 2>&amp;1<br></code></pre>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 搭配 iptables DROP 設定（只要設定一次）</h2>



<pre class="wp-block-preformatted"><code>sudo iptables -I INPUT -m set --match-set blacklist src -j DROP<br></code></pre>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f9ea.png" alt="🧪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 附加工具：查看 SYN 攻擊 IP 排行榜</h2>



<pre class="wp-block-preformatted"><code>ss -tanp | grep "SYN-RECV" \<br>| awk '{print $5}' \<br>| sed -E 's/.*::ffff:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):.*/\1/' \<br>| sort | uniq -c | sort -nr | head<br></code></pre>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 總結與延伸</h2>



<p>這套「黑盾守門員」方案，結合了：</p>



<ul class="wp-block-list">
<li>Linux 原生網路工具（ss + ipset + iptables）</li>



<li>自動化執行（cron）</li>



<li>白名單控管</li>



<li>對 SYN Flood 針對性防禦</li>
</ul>



<p>適用於 VPS、自架伺服器，或任何可能暴露在公網的 Apache/Nginx 主機上。</p>



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



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f4ec.png" alt="📬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 最後附註</h2>



<p>歡迎轉載或自行改寫本腳本，若你也有實戰經驗與更強化的技巧，歡迎留言交流！如果你覺得「黑盾守門員」有幫助，也歡迎分享給更多站長朋友！</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F284&amp;linkname=%F0%9F%9B%A1%20%E9%BB%91%E7%9B%BE%E5%AE%88%E9%96%80%E5%93%A1%EF%BC%9A%E6%88%91%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E4%B8%80%E5%A5%97%E8%87%AA%E5%8B%95%E5%8F%8D%E5%88%B6%20SYN%20Flood%20%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%98%B2%E7%81%AB%E7%89%86%E7%B3%BB%E7%B5%B1%EF%BC%88%E5%90%AB%E8%85%B3%E6%9C%AC%E6%9B%B4%E6%96%B0%EF%BC%89" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F284&amp;linkname=%F0%9F%9B%A1%20%E9%BB%91%E7%9B%BE%E5%AE%88%E9%96%80%E5%93%A1%EF%BC%9A%E6%88%91%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E4%B8%80%E5%A5%97%E8%87%AA%E5%8B%95%E5%8F%8D%E5%88%B6%20SYN%20Flood%20%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%98%B2%E7%81%AB%E7%89%86%E7%B3%BB%E7%B5%B1%EF%BC%88%E5%90%AB%E8%85%B3%E6%9C%AC%E6%9B%B4%E6%96%B0%EF%BC%89" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F284&amp;linkname=%F0%9F%9B%A1%20%E9%BB%91%E7%9B%BE%E5%AE%88%E9%96%80%E5%93%A1%EF%BC%9A%E6%88%91%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E4%B8%80%E5%A5%97%E8%87%AA%E5%8B%95%E5%8F%8D%E5%88%B6%20SYN%20Flood%20%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%98%B2%E7%81%AB%E7%89%86%E7%B3%BB%E7%B5%B1%EF%BC%88%E5%90%AB%E8%85%B3%E6%9C%AC%E6%9B%B4%E6%96%B0%EF%BC%89" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F284&amp;linkname=%F0%9F%9B%A1%20%E9%BB%91%E7%9B%BE%E5%AE%88%E9%96%80%E5%93%A1%EF%BC%9A%E6%88%91%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E4%B8%80%E5%A5%97%E8%87%AA%E5%8B%95%E5%8F%8D%E5%88%B6%20SYN%20Flood%20%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%98%B2%E7%81%AB%E7%89%86%E7%B3%BB%E7%B5%B1%EF%BC%88%E5%90%AB%E8%85%B3%E6%9C%AC%E6%9B%B4%E6%96%B0%EF%BC%89" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F284&amp;linkname=%F0%9F%9B%A1%20%E9%BB%91%E7%9B%BE%E5%AE%88%E9%96%80%E5%93%A1%EF%BC%9A%E6%88%91%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E4%B8%80%E5%A5%97%E8%87%AA%E5%8B%95%E5%8F%8D%E5%88%B6%20SYN%20Flood%20%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%98%B2%E7%81%AB%E7%89%86%E7%B3%BB%E7%B5%B1%EF%BC%88%E5%90%AB%E8%85%B3%E6%9C%AC%E6%9B%B4%E6%96%B0%EF%BC%89" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F284&amp;linkname=%F0%9F%9B%A1%20%E9%BB%91%E7%9B%BE%E5%AE%88%E9%96%80%E5%93%A1%EF%BC%9A%E6%88%91%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E4%B8%80%E5%A5%97%E8%87%AA%E5%8B%95%E5%8F%8D%E5%88%B6%20SYN%20Flood%20%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%98%B2%E7%81%AB%E7%89%86%E7%B3%BB%E7%B5%B1%EF%BC%88%E5%90%AB%E8%85%B3%E6%9C%AC%E6%9B%B4%E6%96%B0%EF%BC%89" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F284&#038;title=%F0%9F%9B%A1%20%E9%BB%91%E7%9B%BE%E5%AE%88%E9%96%80%E5%93%A1%EF%BC%9A%E6%88%91%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E4%B8%80%E5%A5%97%E8%87%AA%E5%8B%95%E5%8F%8D%E5%88%B6%20SYN%20Flood%20%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%98%B2%E7%81%AB%E7%89%86%E7%B3%BB%E7%B5%B1%EF%BC%88%E5%90%AB%E8%85%B3%E6%9C%AC%E6%9B%B4%E6%96%B0%EF%BC%89" data-a2a-url="http://codeant.cc/archives/284" data-a2a-title="&#x1f6e1; 黑盾守門員：我如何打造一套自動反制 SYN Flood 的伺服器防火牆系統（含腳本更新）"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/284">🛡 黑盾守門員：我如何打造一套自動反制 SYN Flood 的伺服器防火牆系統（含腳本更新）</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>「密技」如何用 WordPress+虛擬主機，打造一個單日30萬PV的網站？</title>
		<link>http://codeant.cc/archives/187</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Thu, 19 Jan 2017 00:56:06 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/2017/01/19/300000pv-using-wordpress-and-shared-web-hosting/</guid>

					<description><![CDATA[<p>取得了客戶同意，今天在這裡要來分享一下單日可承受30萬PV的網站，背後的軟硬體規格，而且這個客戶到目前為止都還 [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/187">「密技」如何用 WordPress+虛擬主機，打造一個單日30萬PV的網站？</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="font-size: 16px; line-height: 26px;">取得了客戶同意，今天在這裡要來分享一下單日可承受30萬PV的網站，背後的軟硬體規格，而且這個客戶到目前為止都還是使用虛擬主機去建置他的網站，Wordpress 已經是目前最受歡迎的 CMS 系統，這點不用懷疑，這真的是一套非常容易上手的系統，第三方資源也是最豐富的，而一般剛開始經營個人網站的新手，最常使用的就是虛擬主機(<span style="color: #545454; font-family: arial, sans-serif; font-size: small;">Shared Web Hosting)</span>，費用低廉，系統管理也不需要煩惱，技術活相對少很多，可以更專注在網站的經營上，但是效能不佳，一直也是最讓人抱怨的一點。</p>
<p style="font-size: 16px; line-height: 26px;">那麼一個單日30萬PV，而且還是使用虛擬主機建成的網站，有可能嗎？當然有，下面就來完整揭露所有配置。</p>
<p>  <span id="more-187"></span>  </p>
<p style="font-size: 16px; line-height: 26px;">這個客戶選擇的虛擬主機服務商是： GoDaddy（先聲明，這絕對不是業配文），其實客戶要選擇什麼主機商，我一向是沒意見，因為付錢的是大爺，當初這位客戶是直接選擇了&#8221;豪華型的套餐&#8221;，然後他又升級成 2 CPU + 1 GB RAM，Total 加起來，虛擬主機這邊的費用，一年聽說約 3000-NT而已，有用 GoDaddy 的就知道這個規格並不是&#8221;一拜&#8221;的等級。</p>
<p style="font-size: 16px; line-height: 26px;">所使用的 WordPress 目前是更新到 4.6 的版本了，沒有去改動任何的 Code，是原廠的，下面這幾張管理後台的配置圖，就是為何可以承受單日30萬PV的關鍵了，魔鬼就藏在細節裡：</p>
<p><img fetchpriority="high" decoding="async" class=" size-full wp-image-183" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140238.png" alt="Screenshot from 2017 01 18 140238" width="1147" height="600" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140238.png 1147w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140238-300x157.png 300w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140238-1024x536.png 1024w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140238-768x402.png 768w" sizes="(max-width: 1147px) 100vw, 1147px" /></p>
<p><img decoding="async" class=" size-full wp-image-184" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140327.png" alt="Screenshot from 2017 01 18 140327" width="1142" height="350" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140327.png 1142w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140327-300x92.png 300w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140327-1024x314.png 1024w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140327-768x235.png 768w" sizes="(max-width: 1142px) 100vw, 1142px" /></p>
<p><img decoding="async" class=" size-full wp-image-185" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140648.png" alt="Screenshot from 2017 01 18 140648" width="480" height="625" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140648.png 480w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140648-230x300.png 230w" sizes="(max-width: 480px) 100vw, 480px" /></p>
<p>&nbsp;</p>
<p style="font-size: 16px; line-height: 26px;">其實故事說到這邊就說完了，下面都是題外話了。事實證明，使用虛擬主機+Wordpress就可以打造出可承受單日30萬PV的網站系統，但最困難的是，要如何才能吸引到單日30萬PV啊？網站技術跟網站經營真的是兩碼子的事。</p>
<p><img loading="lazy" decoding="async" class=" size-full wp-image-186" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140059.png" alt="Screenshot from 2017 01 18 140059" width="1003" height="310" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140059.png 1003w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140059-300x93.png 300w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-18_140059-768x237.png 768w" sizes="auto, (max-width: 1003px) 100vw, 1003px" />&nbsp;</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F187&amp;linkname=%E3%80%8C%E5%AF%86%E6%8A%80%E3%80%8D%E5%A6%82%E4%BD%95%E7%94%A8%20WordPress%2B%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%EF%BC%8C%E6%89%93%E9%80%A0%E4%B8%80%E5%80%8B%E5%96%AE%E6%97%A530%E8%90%ACPV%E7%9A%84%E7%B6%B2%E7%AB%99%EF%BC%9F" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F187&amp;linkname=%E3%80%8C%E5%AF%86%E6%8A%80%E3%80%8D%E5%A6%82%E4%BD%95%E7%94%A8%20WordPress%2B%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%EF%BC%8C%E6%89%93%E9%80%A0%E4%B8%80%E5%80%8B%E5%96%AE%E6%97%A530%E8%90%ACPV%E7%9A%84%E7%B6%B2%E7%AB%99%EF%BC%9F" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F187&amp;linkname=%E3%80%8C%E5%AF%86%E6%8A%80%E3%80%8D%E5%A6%82%E4%BD%95%E7%94%A8%20WordPress%2B%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%EF%BC%8C%E6%89%93%E9%80%A0%E4%B8%80%E5%80%8B%E5%96%AE%E6%97%A530%E8%90%ACPV%E7%9A%84%E7%B6%B2%E7%AB%99%EF%BC%9F" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F187&amp;linkname=%E3%80%8C%E5%AF%86%E6%8A%80%E3%80%8D%E5%A6%82%E4%BD%95%E7%94%A8%20WordPress%2B%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%EF%BC%8C%E6%89%93%E9%80%A0%E4%B8%80%E5%80%8B%E5%96%AE%E6%97%A530%E8%90%ACPV%E7%9A%84%E7%B6%B2%E7%AB%99%EF%BC%9F" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F187&amp;linkname=%E3%80%8C%E5%AF%86%E6%8A%80%E3%80%8D%E5%A6%82%E4%BD%95%E7%94%A8%20WordPress%2B%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%EF%BC%8C%E6%89%93%E9%80%A0%E4%B8%80%E5%80%8B%E5%96%AE%E6%97%A530%E8%90%ACPV%E7%9A%84%E7%B6%B2%E7%AB%99%EF%BC%9F" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F187&amp;linkname=%E3%80%8C%E5%AF%86%E6%8A%80%E3%80%8D%E5%A6%82%E4%BD%95%E7%94%A8%20WordPress%2B%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%EF%BC%8C%E6%89%93%E9%80%A0%E4%B8%80%E5%80%8B%E5%96%AE%E6%97%A530%E8%90%ACPV%E7%9A%84%E7%B6%B2%E7%AB%99%EF%BC%9F" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F187&#038;title=%E3%80%8C%E5%AF%86%E6%8A%80%E3%80%8D%E5%A6%82%E4%BD%95%E7%94%A8%20WordPress%2B%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%EF%BC%8C%E6%89%93%E9%80%A0%E4%B8%80%E5%80%8B%E5%96%AE%E6%97%A530%E8%90%ACPV%E7%9A%84%E7%B6%B2%E7%AB%99%EF%BC%9F" data-a2a-url="http://codeant.cc/archives/187" data-a2a-title="「密技」如何用 WordPress+虛擬主機，打造一個單日30萬PV的網站？"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/187">「密技」如何用 WordPress+虛擬主機，打造一個單日30萬PV的網站？</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Joomla 啟用 reCAPTCHA 圖形驗證的設定流程</title>
		<link>http://codeant.cc/archives/179</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Mon, 16 Jan 2017 23:05:11 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/2017/01/17/joomla-recaptcha/</guid>

					<description><![CDATA[<p>要在 Joomla 裡頭啟用 reCAPTCHA 圖形驗證，你要先去產生一組金鑰，產生金鑰的網址如下： sig [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/179">Joomla 啟用 reCAPTCHA 圖形驗證的設定流程</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="font-size: 16px; line-height: 26px;">要在 Joomla 裡頭啟用 reCAPTCHA 圖形驗證，你要先去產生一組金鑰，產生金鑰的網址如下：</p>
<p>  <span id="more-179"></span>  </p>
<p style="font-size: 16px; line-height: 26px;"><a href="http://www.google.com/recaptcha/admin">sign up for an API key pair</a>&nbsp;:&nbsp;<a href="https://www.google.com/recaptcha/admin">https://www.google.com/recaptcha/admin</a></p>
<p style="font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-174" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143320.png" alt="Screenshot from 2017 01 17 143320" style="display: block; margin-left: auto; margin-right: auto;" width="518" height="634" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143320.png 518w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143320-245x300.png 245w" sizes="auto, (max-width: 518px) 100vw, 518px" /></p>
<p style="font-size: 16px; line-height: 26px;">然後到 Joomla 的後台管理頁面，啟用圖形驗證功能：</p>
<p style="font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-175" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_142606.png" alt="Screenshot from 2017 01 17 142606" style="display: block; margin-left: auto; margin-right: auto;" width="627" height="431" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_142606.png 627w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_142606-300x206.png 300w" sizes="auto, (max-width: 627px) 100vw, 627px" /></p>
<p style="font-size: 16px; line-height: 26px;">到外掛中填入剛剛取得的網站金鑰：</p>
<p style="font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-176" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_142856.png" alt="Screenshot from 2017 01 17 142856" style="display: block; margin-left: auto; margin-right: auto;" width="463" height="333" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_142856.png 463w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_142856-300x216.png 300w" sizes="auto, (max-width: 463px) 100vw, 463px" /></p>
<p style="font-size: 16px; line-height: 26px;">記得要選 2.0 版本</p>
<p style="font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-177" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143022.png" alt="Screenshot from 2017 01 17 143022" style="display: block; margin-left: auto; margin-right: auto;" width="437" height="426" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143022.png 437w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143022-300x292.png 300w" sizes="auto, (max-width: 437px) 100vw, 437px" /></p>
<p style="font-size: 16px; line-height: 26px;">下面就是設定成功後的畫面：</p>
<p style="font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-178" src="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143458.png" alt="Screenshot from 2017 01 17 143458" style="display: block; margin-left: auto; margin-right: auto;" width="410" height="143" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143458.png 410w, http://codeant.cc/wp-content/uploads/2017/01/images_Screenshot_from_2017-01-17_143458-300x105.png 300w" sizes="auto, (max-width: 410px) 100vw, 410px" /></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F179&amp;linkname=Joomla%20%E5%95%9F%E7%94%A8%20reCAPTCHA%20%E5%9C%96%E5%BD%A2%E9%A9%97%E8%AD%89%E7%9A%84%E8%A8%AD%E5%AE%9A%E6%B5%81%E7%A8%8B" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F179&amp;linkname=Joomla%20%E5%95%9F%E7%94%A8%20reCAPTCHA%20%E5%9C%96%E5%BD%A2%E9%A9%97%E8%AD%89%E7%9A%84%E8%A8%AD%E5%AE%9A%E6%B5%81%E7%A8%8B" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F179&amp;linkname=Joomla%20%E5%95%9F%E7%94%A8%20reCAPTCHA%20%E5%9C%96%E5%BD%A2%E9%A9%97%E8%AD%89%E7%9A%84%E8%A8%AD%E5%AE%9A%E6%B5%81%E7%A8%8B" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F179&amp;linkname=Joomla%20%E5%95%9F%E7%94%A8%20reCAPTCHA%20%E5%9C%96%E5%BD%A2%E9%A9%97%E8%AD%89%E7%9A%84%E8%A8%AD%E5%AE%9A%E6%B5%81%E7%A8%8B" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F179&amp;linkname=Joomla%20%E5%95%9F%E7%94%A8%20reCAPTCHA%20%E5%9C%96%E5%BD%A2%E9%A9%97%E8%AD%89%E7%9A%84%E8%A8%AD%E5%AE%9A%E6%B5%81%E7%A8%8B" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F179&amp;linkname=Joomla%20%E5%95%9F%E7%94%A8%20reCAPTCHA%20%E5%9C%96%E5%BD%A2%E9%A9%97%E8%AD%89%E7%9A%84%E8%A8%AD%E5%AE%9A%E6%B5%81%E7%A8%8B" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F179&#038;title=Joomla%20%E5%95%9F%E7%94%A8%20reCAPTCHA%20%E5%9C%96%E5%BD%A2%E9%A9%97%E8%AD%89%E7%9A%84%E8%A8%AD%E5%AE%9A%E6%B5%81%E7%A8%8B" data-a2a-url="http://codeant.cc/archives/179" data-a2a-title="Joomla 啟用 reCAPTCHA 圖形驗證的設定流程"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/179">Joomla 啟用 reCAPTCHA 圖形驗證的設定流程</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>百度提供的社群網站分享按鈕</title>
		<link>http://codeant.cc/archives/173</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Mon, 16 Jan 2017 17:48:18 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/2017/01/17/share-button-baidu/</guid>

					<description><![CDATA[<p>想要替自己的的網站加上社群網站的分享按鈕，招式有很多種，百度也有推出這個小工具，其中包含的社群網站非常完整，除 [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/173">百度提供的社群網站分享按鈕</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="font-size: 16px; line-height: 26px;">想要替自己的的網站加上社群網站的分享按鈕，招式有很多種，百度也有推出這個小工具，其中包含的社群網站非常完整，除了中國大陸常用的微博、QQ、微信等分享功能，連 Facebook、Twitter、Linkedin 也收入其中，目前本站就是使用百度的分享按鈕，是一個簡單又方便的方式，只要在想要呈現的位置上引入百度所提供的程式碼即可即可。</p>
<p style="font-size: 16px; line-height: 26px;"><span style="font-family: monospace; font-size: 16px; white-space: pre-wrap;">產生程式碼請到，分享按钮-百度分享 : <a href="http://share.baidu.com/code">http://share.baidu.com/code</a></span></p>
<p style="font-size: 16px; line-height: 26px;">提供一下本站目前所使用的分享按鈕程式碼：</p>
<p><span id="more-173"></span></p>
<pre class="prettyprint" style="font-family: 'Courier New', Courier, gMuli; font-size: 14px;">&lt;div class="bdsharebuttonbox"&gt; 
&lt;a href="#" class="bds_more"   data-cmd="more"&gt;&lt;/a&gt; 
&lt;a href="#" class="bds_qzone"  data-cmd="qzone"  title="分享到QQ空间"&gt;&lt;/a&gt; 
&lt;a href="#" class="bds_tsina"  data-cmd="tsina"  title="分享到新浪微博"&gt;&lt;/a&gt; 
&lt;a href="#" class="bds_tqq"    data-cmd="tqq"    title="分享到腾讯微博"&gt;&lt;/a&gt; 
&lt;a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"&gt;&lt;/a&gt; 
&lt;a href="#" class="bds_fbook"  data-cmd="fbook"  title="分享到Facebook"&gt;&lt;/a&gt; 
&lt;a href="#" class="bds_twi"    data-cmd="twi"    title="分享到Twitter" &gt;&lt;/a&gt; 
&lt;a href="#" class="bds_tieba"  data-cmd="tieba"  title="分享到百度贴吧"&gt;&lt;/a&gt;
&lt;/div&gt; 
&lt;script&gt; 
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"24"},"share":{}};
with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)]; 
&lt;/script&gt;</pre>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F173&amp;linkname=%E7%99%BE%E5%BA%A6%E6%8F%90%E4%BE%9B%E7%9A%84%E7%A4%BE%E7%BE%A4%E7%B6%B2%E7%AB%99%E5%88%86%E4%BA%AB%E6%8C%89%E9%88%95" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F173&amp;linkname=%E7%99%BE%E5%BA%A6%E6%8F%90%E4%BE%9B%E7%9A%84%E7%A4%BE%E7%BE%A4%E7%B6%B2%E7%AB%99%E5%88%86%E4%BA%AB%E6%8C%89%E9%88%95" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F173&amp;linkname=%E7%99%BE%E5%BA%A6%E6%8F%90%E4%BE%9B%E7%9A%84%E7%A4%BE%E7%BE%A4%E7%B6%B2%E7%AB%99%E5%88%86%E4%BA%AB%E6%8C%89%E9%88%95" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F173&amp;linkname=%E7%99%BE%E5%BA%A6%E6%8F%90%E4%BE%9B%E7%9A%84%E7%A4%BE%E7%BE%A4%E7%B6%B2%E7%AB%99%E5%88%86%E4%BA%AB%E6%8C%89%E9%88%95" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F173&amp;linkname=%E7%99%BE%E5%BA%A6%E6%8F%90%E4%BE%9B%E7%9A%84%E7%A4%BE%E7%BE%A4%E7%B6%B2%E7%AB%99%E5%88%86%E4%BA%AB%E6%8C%89%E9%88%95" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F173&amp;linkname=%E7%99%BE%E5%BA%A6%E6%8F%90%E4%BE%9B%E7%9A%84%E7%A4%BE%E7%BE%A4%E7%B6%B2%E7%AB%99%E5%88%86%E4%BA%AB%E6%8C%89%E9%88%95" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F173&#038;title=%E7%99%BE%E5%BA%A6%E6%8F%90%E4%BE%9B%E7%9A%84%E7%A4%BE%E7%BE%A4%E7%B6%B2%E7%AB%99%E5%88%86%E4%BA%AB%E6%8C%89%E9%88%95" data-a2a-url="http://codeant.cc/archives/173" data-a2a-title="百度提供的社群網站分享按鈕"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/173">百度提供的社群網站分享按鈕</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>百度 Sitemap 自動推送 JavaScript 程式碼</title>
		<link>http://codeant.cc/archives/172</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Sun, 15 Jan 2017 23:11:28 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/2017/01/16/baidu-sitemap-javascript/</guid>

					<description><![CDATA[<p>產生網站的 Sitemap.XML 能夠讓搜尋引擎更懂你的網站，也是一個對搜尋引擎友善的方式，畢竟魚幫水，水幫 [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/172">百度 Sitemap 自動推送 JavaScript 程式碼</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="font-size: 16px; line-height: 26px;">產生網站的 Sitemap.XML 能夠讓搜尋引擎更懂你的網站，也是一個對搜尋引擎友善的方式，畢竟魚幫水，水幫魚。但是大部分的 sitemap plugin 多半是對 Google 開發的，而針對百度的就相對少，雖然百度官方有針對 WordPress 跟 Discuz 開發官方支持的 sitemap 套件，但對採用其他 CMS 的人來說，難度就不小了，不過現在百度可以用引入 JaveScript 的方式，自動推送 Sitemap 到百度搜尋引擎，技術原理跟引入外部JavaScript 去達到訪客統計跟廣告播送是類似的。</p>
<p style="font-size: 16px; line-height: 26px;">我個人相當推薦這種方式，非常的友善，使用上對於已經有採用 Google Analytics 網站來說，基本上是無痛的一種方式。</p>
<p style="font-size: 16px; line-height: 26px;">JavaScript 程式碼如下</p>
<p><span id="more-172"></span></p>
<p style="font-size: 16px; line-height: 26px;">(無關帳號或網址，所有網站都用同樣的程式碼)：</p>
<pre class="prettyprint" style="font-family: 'Courier New', Courier, gMuli; font-size: 14px;">&lt;script&gt;
(function(){     
var bp = document.createElement('script');     
var curProtocol = window.location.protocol.split(':')[0];     

if (curProtocol === 'https') {         
    bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';             
} else {         
    bp.src = 'http://push.zhanzhang.baidu.com/push.js';     
}     
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s); })();
&lt;/script&gt;</pre>
<p style="font-size: 16px; line-height: 26px;">我自己的習慣是這類的程式都會放在網頁的底部，但是在&lt; / body &gt; 前面。</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F172&amp;linkname=%E7%99%BE%E5%BA%A6%20Sitemap%20%E8%87%AA%E5%8B%95%E6%8E%A8%E9%80%81%20JavaScript%20%E7%A8%8B%E5%BC%8F%E7%A2%BC" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F172&amp;linkname=%E7%99%BE%E5%BA%A6%20Sitemap%20%E8%87%AA%E5%8B%95%E6%8E%A8%E9%80%81%20JavaScript%20%E7%A8%8B%E5%BC%8F%E7%A2%BC" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F172&amp;linkname=%E7%99%BE%E5%BA%A6%20Sitemap%20%E8%87%AA%E5%8B%95%E6%8E%A8%E9%80%81%20JavaScript%20%E7%A8%8B%E5%BC%8F%E7%A2%BC" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F172&amp;linkname=%E7%99%BE%E5%BA%A6%20Sitemap%20%E8%87%AA%E5%8B%95%E6%8E%A8%E9%80%81%20JavaScript%20%E7%A8%8B%E5%BC%8F%E7%A2%BC" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F172&amp;linkname=%E7%99%BE%E5%BA%A6%20Sitemap%20%E8%87%AA%E5%8B%95%E6%8E%A8%E9%80%81%20JavaScript%20%E7%A8%8B%E5%BC%8F%E7%A2%BC" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F172&amp;linkname=%E7%99%BE%E5%BA%A6%20Sitemap%20%E8%87%AA%E5%8B%95%E6%8E%A8%E9%80%81%20JavaScript%20%E7%A8%8B%E5%BC%8F%E7%A2%BC" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F172&#038;title=%E7%99%BE%E5%BA%A6%20Sitemap%20%E8%87%AA%E5%8B%95%E6%8E%A8%E9%80%81%20JavaScript%20%E7%A8%8B%E5%BC%8F%E7%A2%BC" data-a2a-url="http://codeant.cc/archives/172" data-a2a-title="百度 Sitemap 自動推送 JavaScript 程式碼"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/172">百度 Sitemap 自動推送 JavaScript 程式碼</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>架設網站選用虛擬主機?還是自建主機？先從防 DoS 攻擊能力談起！</title>
		<link>http://codeant.cc/archives/170</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Sun, 15 Jan 2017 19:29:52 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/2017/01/16/web-dos-defend/</guid>

					<description><![CDATA[<p>首先我們來談談 DoS 跟 DDoS 有什麼不同？不要懷疑，很多人都跟我說是一樣的東西，沒錯！它們是很像，但是 [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/170">架設網站選用虛擬主機?還是自建主機？先從防 DoS 攻擊能力談起！</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="font-size: 16px; line-height: 26px;">首先我們來談談 DoS 跟 DDoS 有什麼不同？不要懷疑，很多人都跟我說是一樣的東西，沒錯！它們是很像，但是不完全一樣，DoS 的全名是Denial-of-Service，就是阻斷服務，而 DDoS 則是&nbsp;Distributed Denial-of-Service ，多了一字，變成分散式阻斷服務，這2種網路攻擊的基本精神相同，但手法有所變化，而後者不管在防禦上或是判斷上難度都高出許多。</p>
<p style="font-size: 16px; line-height: 26px;">站在網站防禦的角度上，DoS 攻擊可以是一台電腦就達到，例如用ApacheBench這隻測試程式就可以達到攻擊的目的，所以我們可以用 IP 來源+單位時間內的連線數，去做出有效的判斷，進而採取防禦手段；但 DDoS 是分散式的，也就是攻擊的來源是由多個不同的來源 IP 在同一段時間內持續發起連線請求，進而佔據目標網站的大量資源，達到阻斷服務的目的，在判斷上跟防禦上，難度都高很多，舉一個簡單的問題為例，誰是真的訪客？誰又是真的來亂的？這就防禦DDoS的難處。</p>
<p>  <span id="more-170"></span>  </p>
<p style="font-size: 16px; line-height: 26px;">當你決定採取自建主機的方案（包含 AWS EC2）來營運網站時，你的網站就已經被列入 DoS 攻擊的目標了，這就是一場駭客與工程師的千日戰爭，永無休止的那一天！那採取虛擬主機方案的網站就可以放心了嗎？可以是但也不完全是，是的部份是因為虛擬主機通常環境都是固定，服務商都會有一套SOP去達成一定水準的防禦佈署，不完全是的部份，則是防線永遠有被突破的可能。</p>
<p style="font-size: 16px; line-height: 26px;">我看到的很多情況是自建主機者，連基本的防 DoS 能力都不具備，更遑論去抵禦 DDoS 的攻擊，所以對網站經營的初心者來說，我通常都建議採取虛擬主機的方案，因為相對安全而且便宜，不需要一開始就把學習曲線弄的太陡峭，容易喪失信心，畢竟網站經營的初期，應該放在內容的管理維護，而不是太多的技術實戰，除非你已經是個練家子，那麼自建主機絕對能給你更大的彈性跟效能，也能讓你有更多的練功機會，但這種人相對稀少。</p>
<p style="font-size: 16px; line-height: 26px;">網路如馬路，馬路如虎口！所有有興趣要踏入網站經營的人，當應該先評估那個方案最有效益，這也包含了所有的中小企業，做生意將本求利，辛苦弄了一個網站，就是希望能有人流，產生更多獲利，如果一直被DoS其實也等於沒用，當然駭客也會挑啦，沒有價值的攻擊目標，也不會浪費氣力就是了，但拿這種來練練功的初入門駭客也沒少過就是了。</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F170&amp;linkname=%E6%9E%B6%E8%A8%AD%E7%B6%B2%E7%AB%99%E9%81%B8%E7%94%A8%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%3F%E9%82%84%E6%98%AF%E8%87%AA%E5%BB%BA%E4%B8%BB%E6%A9%9F%EF%BC%9F%E5%85%88%E5%BE%9E%E9%98%B2%20DoS%20%E6%94%BB%E6%93%8A%E8%83%BD%E5%8A%9B%E8%AB%87%E8%B5%B7%EF%BC%81" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F170&amp;linkname=%E6%9E%B6%E8%A8%AD%E7%B6%B2%E7%AB%99%E9%81%B8%E7%94%A8%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%3F%E9%82%84%E6%98%AF%E8%87%AA%E5%BB%BA%E4%B8%BB%E6%A9%9F%EF%BC%9F%E5%85%88%E5%BE%9E%E9%98%B2%20DoS%20%E6%94%BB%E6%93%8A%E8%83%BD%E5%8A%9B%E8%AB%87%E8%B5%B7%EF%BC%81" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F170&amp;linkname=%E6%9E%B6%E8%A8%AD%E7%B6%B2%E7%AB%99%E9%81%B8%E7%94%A8%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%3F%E9%82%84%E6%98%AF%E8%87%AA%E5%BB%BA%E4%B8%BB%E6%A9%9F%EF%BC%9F%E5%85%88%E5%BE%9E%E9%98%B2%20DoS%20%E6%94%BB%E6%93%8A%E8%83%BD%E5%8A%9B%E8%AB%87%E8%B5%B7%EF%BC%81" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F170&amp;linkname=%E6%9E%B6%E8%A8%AD%E7%B6%B2%E7%AB%99%E9%81%B8%E7%94%A8%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%3F%E9%82%84%E6%98%AF%E8%87%AA%E5%BB%BA%E4%B8%BB%E6%A9%9F%EF%BC%9F%E5%85%88%E5%BE%9E%E9%98%B2%20DoS%20%E6%94%BB%E6%93%8A%E8%83%BD%E5%8A%9B%E8%AB%87%E8%B5%B7%EF%BC%81" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F170&amp;linkname=%E6%9E%B6%E8%A8%AD%E7%B6%B2%E7%AB%99%E9%81%B8%E7%94%A8%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%3F%E9%82%84%E6%98%AF%E8%87%AA%E5%BB%BA%E4%B8%BB%E6%A9%9F%EF%BC%9F%E5%85%88%E5%BE%9E%E9%98%B2%20DoS%20%E6%94%BB%E6%93%8A%E8%83%BD%E5%8A%9B%E8%AB%87%E8%B5%B7%EF%BC%81" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F170&amp;linkname=%E6%9E%B6%E8%A8%AD%E7%B6%B2%E7%AB%99%E9%81%B8%E7%94%A8%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%3F%E9%82%84%E6%98%AF%E8%87%AA%E5%BB%BA%E4%B8%BB%E6%A9%9F%EF%BC%9F%E5%85%88%E5%BE%9E%E9%98%B2%20DoS%20%E6%94%BB%E6%93%8A%E8%83%BD%E5%8A%9B%E8%AB%87%E8%B5%B7%EF%BC%81" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F170&#038;title=%E6%9E%B6%E8%A8%AD%E7%B6%B2%E7%AB%99%E9%81%B8%E7%94%A8%E8%99%9B%E6%93%AC%E4%B8%BB%E6%A9%9F%3F%E9%82%84%E6%98%AF%E8%87%AA%E5%BB%BA%E4%B8%BB%E6%A9%9F%EF%BC%9F%E5%85%88%E5%BE%9E%E9%98%B2%20DoS%20%E6%94%BB%E6%93%8A%E8%83%BD%E5%8A%9B%E8%AB%87%E8%B5%B7%EF%BC%81" data-a2a-url="http://codeant.cc/archives/170" data-a2a-title="架設網站選用虛擬主機?還是自建主機？先從防 DoS 攻擊能力談起！"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/170">架設網站選用虛擬主機?還是自建主機？先從防 DoS 攻擊能力談起！</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Joomla 快取模式效能測試</title>
		<link>http://codeant.cc/archives/168</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Thu, 12 Jan 2017 08:32:09 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/2017/01/12/joomla-cache-type-test/</guid>

					<description><![CDATA[<p>測試環境： Server : AWS EC2 t2.micro +&#160;Ubuntu 16.04 LTS [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/168">Joomla 快取模式效能測試</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">測試環境：</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">Server : AWS EC2 t2.micro +&nbsp;Ubuntu 16.04 LTS&nbsp;</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">測試指令：</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">ab2 -n 5000 -c 50 <a href="http://codeant.cc/">http://codeant.cc/</a><a href="http://codeant.cc/"></a></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">&nbsp;</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">沒有快取時：Requests per second: &nbsp; &nbsp;25.99 [#/sec] (mean)</p>
<p>  <span id="more-168"></span>  </p>
<p><img loading="lazy" decoding="async" class=" size-full wp-image-163" src="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-01.jpeg" alt="Joomla Cache Test 01" width="595" height="429" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-01.jpeg 595w, http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-01-300x216.jpeg 300w" sizes="auto, (max-width: 595px) 100vw, 595px" /></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;">&nbsp;</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">累進快取模式(剛開啟，快取資料量少時)：Requests per second: &nbsp; &nbsp;72.57 [#/sec] (mean)</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-164" src="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-02.jpeg" alt="Joomla Cache Test 02" width="592" height="387" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-02.jpeg 592w, http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-02-300x196.jpeg 300w" sizes="auto, (max-width: 592px) 100vw, 592px" /></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;">&nbsp;</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;"><span style="color: #333333; font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif;">累進快取模式(快取資料量大時)：</span><span style="color: #333333; font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif;">Requests per second: &nbsp; 13.54 [#/sec] (mean)</span></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">(使用：wget -r &#8211;spider <a href="http://codeant.cc">http://codeant.cc</a>&nbsp;爬完全站，產生大量快取資料)</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-165" src="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-03.jpeg" alt="Joomla Cache Test 03" width="593" height="406" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-03.jpeg 593w, http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-03-300x205.jpeg 300w" sizes="auto, (max-width: 593px) 100vw, 593px" /></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;">&nbsp;</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;"><span style="color: #333333; font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif;">保守快取模式(剛開啟，快取資料量少時)：</span><span style="color: #333333; font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif;">Requests per second: &nbsp; &nbsp;65.90 [#/sec] (mean)</span></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-166" src="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-04.jpeg" alt="Joomla Cache Test 04" width="595" height="425" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-04.jpeg 595w, http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-04-300x214.jpeg 300w" sizes="auto, (max-width: 595px) 100vw, 595px" /></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;">&nbsp;</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;">&nbsp;</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;"><span>保守快取模式(快取資料量大時)：</span><span>Requests per second: &nbsp; 65.78 [#/sec] (mean)</span></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">(使用：wget -r &#8211;spider&nbsp;<a href="http://codeant.cc/">http://codeant.cc</a>&nbsp;爬完全站，產生大量快取資料)</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;"><img loading="lazy" decoding="async" class=" size-full wp-image-167" src="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-05.jpeg" alt="Joomla Cache Test 05" width="595" height="427" srcset="http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-05.jpeg 595w, http://codeant.cc/wp-content/uploads/2017/01/images_joomla-test_Joomla-Cache-Test-05-300x215.jpeg 300w" sizes="auto, (max-width: 595px) 100vw, 595px" /></p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px;">&nbsp;</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">測試結論：</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">1. 快取資料量少時：累進快取 &gt; 保守快取 &gt; 沒有快取。</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">2. 快取資料量大時：保守快取 &gt; 沒有快取 &gt; 累進快取。</p>
<p style="font-family: NotoSansTC, gMuli, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 26px;">3. 保守快取比沒有快取的模式下，效能提升 153.5%</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F168&amp;linkname=Joomla%20%E5%BF%AB%E5%8F%96%E6%A8%A1%E5%BC%8F%E6%95%88%E8%83%BD%E6%B8%AC%E8%A9%A6" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F168&amp;linkname=Joomla%20%E5%BF%AB%E5%8F%96%E6%A8%A1%E5%BC%8F%E6%95%88%E8%83%BD%E6%B8%AC%E8%A9%A6" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F168&amp;linkname=Joomla%20%E5%BF%AB%E5%8F%96%E6%A8%A1%E5%BC%8F%E6%95%88%E8%83%BD%E6%B8%AC%E8%A9%A6" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F168&amp;linkname=Joomla%20%E5%BF%AB%E5%8F%96%E6%A8%A1%E5%BC%8F%E6%95%88%E8%83%BD%E6%B8%AC%E8%A9%A6" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F168&amp;linkname=Joomla%20%E5%BF%AB%E5%8F%96%E6%A8%A1%E5%BC%8F%E6%95%88%E8%83%BD%E6%B8%AC%E8%A9%A6" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F168&amp;linkname=Joomla%20%E5%BF%AB%E5%8F%96%E6%A8%A1%E5%BC%8F%E6%95%88%E8%83%BD%E6%B8%AC%E8%A9%A6" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F168&#038;title=Joomla%20%E5%BF%AB%E5%8F%96%E6%A8%A1%E5%BC%8F%E6%95%88%E8%83%BD%E6%B8%AC%E8%A9%A6" data-a2a-url="http://codeant.cc/archives/168" data-a2a-title="Joomla 快取模式效能測試"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/168">Joomla 快取模式效能測試</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>讓你網站文章中的程式碼漂亮起來 &#8211; Code Prettifier</title>
		<link>http://codeant.cc/archives/150</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Tue, 27 Dec 2016 08:02:10 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/2016/12/27/prettify-js-how-to/</guid>

					<description><![CDATA[<p>想要在網站上發表文章時，如果遇上了程式碼的段落，排版起來總是會有點頭大，最好用的當然還是 &#60; pre &#038; [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/150">讓你網站文章中的程式碼漂亮起來 &#8211; Code Prettifier</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>想要在網站上發表文章時，如果遇上了程式碼的段落，排版起來總是會有點頭大，最好用的當然還是 &lt; pre &gt; 標籤，但是要完全做到程式碼的高亮突顯效果就不是很容易的。以前流行過的 XOOPS 這套 CMS 裏面就有很好的程式碼內容高亮突顯套件，但是現在也有一個簡單易用的選擇 ：<span style="font-family: arial, sans-serif; font-size: 16px; line-height: 18.2px;">Google Code Prettify</span></p>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://github.com/google/code-prettify
</div></figure>



<span id="more-150"></span>



<p>使用上非常簡單，首先添加一行 Code 引入 Javascript：</p>



<pre class="wp-block-preformatted">&lt;<span class="pl-ent" style="box-sizing: border-box; color: #63a35c;">script</span> <span class="pl-e" style="box-sizing: border-box; color: #795da3;">src</span>=<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js<span class="pl-pds" style="box-sizing: border-box;">" async="async"</span></span>&gt;&lt;/<span class="pl-ent" style="box-sizing: border-box; color: #63a35c;">script</span>&gt;</pre>



<p>然後在有程式碼內容的使用下面的範例編輯即可：</p>



<pre class="wp-block-preformatted">&lt;<span class="pl-ent" style="box-sizing: border-box; color: #63a35c;">pre</span> <span class="pl-e" style="box-sizing: border-box; color: #795da3;">class</span>=<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>prettyprint<span class="pl-pds" style="box-sizing: border-box;">"</span></span>&gt;........&lt;/<span class="pl-ent" style="box-sizing: border-box; color: #63a35c;">pre</span>&gt;</pre>



<p>下面示範一下 C 語言的效果：</p>



<pre class="wp-block-preformatted prettyprint">void geo_ip_city (char *ip_str, IP_INFO *ip_info)
{
	GeoIP       *gi  = NULL;
	GeoIPRecord *gir = NULL;

	gi = GeoIP_open("/root/GeoIP/GeoLiteCity.dat", GEOIP_INDEX_CACHE);
	if (gi == NULL) {
		printf("Error opening database\n");
		return;
	}
	
	gir = GeoIP_record_by_name(gi, (const char *)ip_str);
	if (gir != NULL) {
		//printf("%s\n%s\n%s\n%s\n", ip_str, _mk_NA(gir-&gt;country_code), _mk_NA(GeoIP_region_name_by_code(gir-&gt;country_code, gir-&gt;region)), _mk_NA(gir-&gt;city));
		snprintf(ip_info-&gt;country, IP_COUNTRY_LENGTH, "%s", _mk_NA(gir-&gt;country_code));
		snprintf(ip_info-&gt;city, IP_CITY_LENGTH, "%s, %s", _mk_NA(GeoIP_region_name_by_code(gir-&gt;country_code, gir-&gt;region)), _mk_NA(gir-&gt;city));
		GeoIPRecord_delete(gir);
	}

	GeoIP_delete(gi);
	return;
} </pre>



<p>&nbsp;真的是好物，一用就愛上。</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F150&amp;linkname=%E8%AE%93%E4%BD%A0%E7%B6%B2%E7%AB%99%E6%96%87%E7%AB%A0%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BC%8F%E7%A2%BC%E6%BC%82%E4%BA%AE%E8%B5%B7%E4%BE%86%20%E2%80%93%20Code%20Prettifier" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F150&amp;linkname=%E8%AE%93%E4%BD%A0%E7%B6%B2%E7%AB%99%E6%96%87%E7%AB%A0%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BC%8F%E7%A2%BC%E6%BC%82%E4%BA%AE%E8%B5%B7%E4%BE%86%20%E2%80%93%20Code%20Prettifier" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F150&amp;linkname=%E8%AE%93%E4%BD%A0%E7%B6%B2%E7%AB%99%E6%96%87%E7%AB%A0%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BC%8F%E7%A2%BC%E6%BC%82%E4%BA%AE%E8%B5%B7%E4%BE%86%20%E2%80%93%20Code%20Prettifier" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F150&amp;linkname=%E8%AE%93%E4%BD%A0%E7%B6%B2%E7%AB%99%E6%96%87%E7%AB%A0%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BC%8F%E7%A2%BC%E6%BC%82%E4%BA%AE%E8%B5%B7%E4%BE%86%20%E2%80%93%20Code%20Prettifier" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F150&amp;linkname=%E8%AE%93%E4%BD%A0%E7%B6%B2%E7%AB%99%E6%96%87%E7%AB%A0%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BC%8F%E7%A2%BC%E6%BC%82%E4%BA%AE%E8%B5%B7%E4%BE%86%20%E2%80%93%20Code%20Prettifier" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F150&amp;linkname=%E8%AE%93%E4%BD%A0%E7%B6%B2%E7%AB%99%E6%96%87%E7%AB%A0%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BC%8F%E7%A2%BC%E6%BC%82%E4%BA%AE%E8%B5%B7%E4%BE%86%20%E2%80%93%20Code%20Prettifier" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F150&#038;title=%E8%AE%93%E4%BD%A0%E7%B6%B2%E7%AB%99%E6%96%87%E7%AB%A0%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BC%8F%E7%A2%BC%E6%BC%82%E4%BA%AE%E8%B5%B7%E4%BE%86%20%E2%80%93%20Code%20Prettifier" data-a2a-url="http://codeant.cc/archives/150" data-a2a-title="讓你網站文章中的程式碼漂亮起來 – Code Prettifier"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/150">讓你網站文章中的程式碼漂亮起來 &#8211; Code Prettifier</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>關於OpenWRT使用ATH9K，QCA953X BL3A訊號異常BUG的修正</title>
		<link>http://codeant.cc/archives/149</link>
		
		<dc:creator><![CDATA[codeant]]></dc:creator>
		<pubDate>Mon, 08 Jun 2015 03:03:01 +0000</pubDate>
				<category><![CDATA[Netowrk]]></category>
		<guid isPermaLink="false">http://codeant.cc/2015/06/08/ath9k-qca9533-ver2-tx-power-bug/</guid>

					<description><![CDATA[<p>日前一位客戶找上我，說明了目前在使用QCA9533 BL3A晶片組的產品開發上，遇上一個BUG，已經卡住三個星 [&#8230;]</p>
<p>這篇文章 <a href="http://codeant.cc/archives/149">關於OpenWRT使用ATH9K，QCA953X BL3A訊號異常BUG的修正</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="font-size: 16px; line-height: 26px; text-align: left;"><span style="font-family: comic sans ms,sans-serif; font-size: 12pt;">日前一位客戶找上我，說明了目前在使用QCA9533 BL3A晶片組的產品開發上，遇上一個BUG，已經卡住三個星期了，遲遲無法解決。由於客戶是採用OpenWRT的架構，而在同一板子上原廠所提供Firmware是OK的，推測Tx power過低的訊號異常BUG應該是ATH9K有需要patch。</span></p>
<p style="font-size: 16px; line-height: 26px; text-align: left;"><span style="font-family: comic sans ms,sans-serif; font-size: 12pt;">原本客戶使用的QCA9533 AL3A是沒問題的，直到換了BL3A才出現30 dBm 的 loss，這種突然間出現的Project往往都很急也很趕，只好努力一下，最後花了2天處理好這個已困擾客戶三個禮拜的問題，Happy hacked.</span></p>
<p><span id="more-149"></span></p>
<p style="text-align: left;"><span style="font-size: 16px; line-height: 26px;">這是修正前(Before)的訊號強度:</span></p>
<p style="text-align: left;"><span style="font-family: comic sans ms,sans-serif; font-size: 12pt;"><img loading="lazy" decoding="async" class=" size-full wp-image-147" src="http://codeant.cc/wp-content/uploads/2015/06/images_phocagallery_Network_thumbs_phoca_thumb_l_screenshot_2015-06-07-13-52-04.png" alt="phoca thumb l screenshot 2015-06-07-13-52-04" width="371" height="660" srcset="http://codeant.cc/wp-content/uploads/2015/06/images_phocagallery_Network_thumbs_phoca_thumb_l_screenshot_2015-06-07-13-52-04.png 371w, http://codeant.cc/wp-content/uploads/2015/06/images_phocagallery_Network_thumbs_phoca_thumb_l_screenshot_2015-06-07-13-52-04-169x300.png 169w" sizes="auto, (max-width: 371px) 100vw, 371px" /></span></p>
<p style="text-align: left;">
<p style="text-align: left;"><span style="font-size: 16px; line-height: 26px;">這是修正後(After)的訊號強度:</span></p>
<p style="text-align: left;"><span style="font-family: comic sans ms,sans-serif; font-size: 12pt;"><img loading="lazy" decoding="async" class=" size-full wp-image-148" src="http://codeant.cc/wp-content/uploads/2015/06/images_phocagallery_Network_thumbs_phoca_thumb_l_screenshot_2015-06-07-13-56-17.png" alt="phoca thumb l screenshot 2015-06-07-13-56-17" width="371" height="660" srcset="http://codeant.cc/wp-content/uploads/2015/06/images_phocagallery_Network_thumbs_phoca_thumb_l_screenshot_2015-06-07-13-56-17.png 371w, http://codeant.cc/wp-content/uploads/2015/06/images_phocagallery_Network_thumbs_phoca_thumb_l_screenshot_2015-06-07-13-56-17-169x300.png 169w" sizes="auto, (max-width: 371px) 100vw, 371px" /></span></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;"><span style="font-size: 16px; line-height: 26px;">剛剛客戶已確認測試通過了，很高興再次救援成功，下面分享一下修改後的patch內容。</span></p>
<pre class="prettyprint" style="font-family: 'Courier New', Courier, gMuli; font-size: 14px;">diff -Naur ../orig-compat-wireless-2014-05-22/drivers/net/wireless/ath/ath9k/hw.c ../compat-wireless-2014-05-22/drivers/net/wireless/ath/ath9k/hw.c  
--- ../orig-compat-wireless-2014-05-22/drivers/net/wireless/ath/ath9k/hw.c      2015-06-07 14:13:10.655703572 +0800 
+++ ../compat-wireless-2014-05-22/drivers/net/wireless/ath/ath9k/hw.c   2015-06-07 14:14:12.336864783 +0800 
@@ -260,7 +260,7 @@         
                case AR9300_DEVID_AR953X:                 
                    ah-&gt;hw_version.macVersion = AR_SREV_VERSION_9531;                 
                    if (ah-&gt;get_mac_revision) 
-                       ah-&gt;hw_version.macRev = ah-&gt;get_mac_revision(); 
+                       ah-&gt;hw_version.macRev = 1; //ah-&gt;get_mac_revision();                 
                        return;         
                    }</pre>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F149&amp;linkname=%E9%97%9C%E6%96%BCOpenWRT%E4%BD%BF%E7%94%A8ATH9K%EF%BC%8CQCA953X%20BL3A%E8%A8%8A%E8%99%9F%E7%95%B0%E5%B8%B8BUG%E7%9A%84%E4%BF%AE%E6%AD%A3" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_line" href="https://www.addtoany.com/add_to/line?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F149&amp;linkname=%E9%97%9C%E6%96%BCOpenWRT%E4%BD%BF%E7%94%A8ATH9K%EF%BC%8CQCA953X%20BL3A%E8%A8%8A%E8%99%9F%E7%95%B0%E5%B8%B8BUG%E7%9A%84%E4%BF%AE%E6%AD%A3" title="Line" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_wechat" href="https://www.addtoany.com/add_to/wechat?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F149&amp;linkname=%E9%97%9C%E6%96%BCOpenWRT%E4%BD%BF%E7%94%A8ATH9K%EF%BC%8CQCA953X%20BL3A%E8%A8%8A%E8%99%9F%E7%95%B0%E5%B8%B8BUG%E7%9A%84%E4%BF%AE%E6%AD%A3" title="WeChat" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_sina_weibo" href="https://www.addtoany.com/add_to/sina_weibo?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F149&amp;linkname=%E9%97%9C%E6%96%BCOpenWRT%E4%BD%BF%E7%94%A8ATH9K%EF%BC%8CQCA953X%20BL3A%E8%A8%8A%E8%99%9F%E7%95%B0%E5%B8%B8BUG%E7%9A%84%E4%BF%AE%E6%AD%A3" title="Sina Weibo" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_qzone" href="https://www.addtoany.com/add_to/qzone?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F149&amp;linkname=%E9%97%9C%E6%96%BCOpenWRT%E4%BD%BF%E7%94%A8ATH9K%EF%BC%8CQCA953X%20BL3A%E8%A8%8A%E8%99%9F%E7%95%B0%E5%B8%B8BUG%E7%9A%84%E4%BF%AE%E6%AD%A3" title="Qzone" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fcodeant.cc%2Farchives%2F149&amp;linkname=%E9%97%9C%E6%96%BCOpenWRT%E4%BD%BF%E7%94%A8ATH9K%EF%BC%8CQCA953X%20BL3A%E8%A8%8A%E8%99%9F%E7%95%B0%E5%B8%B8BUG%E7%9A%84%E4%BF%AE%E6%AD%A3" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fcodeant.cc%2Farchives%2F149&#038;title=%E9%97%9C%E6%96%BCOpenWRT%E4%BD%BF%E7%94%A8ATH9K%EF%BC%8CQCA953X%20BL3A%E8%A8%8A%E8%99%9F%E7%95%B0%E5%B8%B8BUG%E7%9A%84%E4%BF%AE%E6%AD%A3" data-a2a-url="http://codeant.cc/archives/149" data-a2a-title="關於OpenWRT使用ATH9K，QCA953X BL3A訊號異常BUG的修正"></a></p><p>這篇文章 <a href="http://codeant.cc/archives/149">關於OpenWRT使用ATH9K，QCA953X BL3A訊號異常BUG的修正</a> 最早出現於 <a href="http://codeant.cc">碼蟻創研工坊 - CODEANT STUDIOS</a>。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
