<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>程式設計 on G. T. Wang</title>
    <link>https://blog.gtwang.org/categories/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88/</link>
    <description>Recent content in 程式設計 on G. T. Wang</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>zh-tw</language>
    <copyright>G. T. Wang</copyright>
    <lastBuildDate>Wed, 08 Jan 2020 15:06:38 +0800</lastBuildDate>
    <atom:link href="https://blog.gtwang.org/categories/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Excel VBA：Hello World！</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-programming-hello-world/</link>
      <pubDate>Wed, 19 Aug 2015 13:08:16 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-programming-hello-world/</guid>
      <description>&lt;p&gt;這裡介紹如何啟用 Excel 的開發人員工具，撰寫一個 Hello World VBA 程式。&lt;/p&gt;
&lt;p&gt;在任何一個版本的 Excel 中，我們都可以透過開發人員工具來撰寫 VBA 巨集程式，只不過在 Excel 中，開發人員工具預設是不會顯示的，要開始撰寫程式之前，必須先將其開啟，以下是設定開發人員工具與撰寫 Hello World VBA 程式的步驟。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：建立按鈕與巨集程式</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-programming-create-button-and-macro/</link>
      <pubDate>Sun, 06 Sep 2015 09:11:25 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-programming-create-button-and-macro/</guid>
      <description>&lt;p&gt;這裡我們將介紹如何在 Excel 中建立一個按鈕，並且撰寫按鈕的巨集程式。&lt;/p&gt;
&lt;p&gt;在 Excel 中我們透過 VBA 的巨集程式來讓一些動作自動化，若是常用的巨集程式，可以在 Excel 中建立一個自訂按鈕，當按下按鈕時就可以呼叫指定的巨集，以下是詳細的步驟教學。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：活頁簿、工作表與儲存格</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-programming-workbook-worksheet-cell/</link>
      <pubDate>Thu, 24 Dec 2015 11:04:10 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-programming-workbook-worksheet-cell/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Excel VBA 來控制活頁簿、工作表與儲存格的資料，用程式自動產生表格。&lt;/p&gt;
&lt;p&gt;在開始之前，請先&lt;a href=&#34;https://blog.gtwang.org/courses/vba/excel-vba-programming-hello-world/&#34;&gt;設定好 Excel VBA 的開發環境&lt;/a&gt;，啟用開發人員工具，並且開啟 Excel VBA 的程式編輯視窗。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：變數的宣告、定義與操作</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-programming-variable/</link>
      <pubDate>Wed, 05 Oct 2016 12:04:04 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-programming-variable/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Excel VBA 中宣告、初始化與操作各種變數。&lt;/p&gt;
&lt;p&gt;一般在程式設計上，變數在使用前都要經過宣告（declare）與定義（define）兩個步驟，宣告就是讓電腦知道我們要使用變數，而定義則是將變數的內容指定為一個特定的值，在 Excel VBA 中也是一樣有這些步驟，以下是一些教學與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：各種運算子</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-programming-operators/</link>
      <pubDate>Wed, 30 Nov 2016 09:29:19 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-programming-operators/</guid>
      <description>&lt;p&gt;這裡介紹 Excel VBA 中各種運算子的使用方式，還有許多的範例程式碼。&lt;/p&gt;
&lt;p&gt;每個程式語言都會有一系列的運算子，不同的運算子可用於不同資料的運算，以下是 Excel VBA 中常用的運算子。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：條件判斷式，If Then、Else 與 Select Case</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-programming-if-then-else-condition/</link>
      <pubDate>Sat, 03 Dec 2016 19:34:02 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-programming-if-then-else-condition/</guid>
      <description>&lt;p&gt;本篇介紹 Excel VBA 中各種條件判斷式的使用方法，包含 &lt;code&gt;If Then&lt;/code&gt;、&lt;code&gt;Else&lt;/code&gt; 與 &lt;code&gt;Select Case&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;電腦在執行程式時，都是依照順序一行接著一行的執行，如果我們希望程式在執行時，依據不同的條件狀況來做出不一樣的動作，這時候就可以利用條件判斷式來處理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：迴圈控制，For Loop、For Each 與 Do Loop</title>
      <link>https://blog.gtwang.org/programming/excel-vba-programming-loop/</link>
      <pubDate>Thu, 15 Dec 2016 08:40:33 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/excel-vba-programming-loop/</guid>
      <description>&lt;p&gt;本篇介紹 Excel VBA 的迴圈使用方式，並提供實用的範例程式碼。&lt;/p&gt;
&lt;p&gt;迴圈控制是各種程式語言都會有的基本功能，他的作用是可以讓電腦重複執行某一段類似的動作，在運用得當的情況下，可以幫助使用者快速處理大料的資料，既省時又省力。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：基本字串處理（String）</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-basic-string-manipulation/</link>
      <pubDate>Thu, 09 Feb 2017 08:32:57 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-basic-string-manipulation/</guid>
      <description>&lt;p&gt;這裡將介紹 Excel VBA 中各種字串的操作方式與相關的功能函數，並且提供各式常見的使用範例程式碼。&lt;/p&gt;
&lt;p&gt;在使用 Excel VBA 處理資料時，通常除了數值的資料之外，文字的資料處理也是很常會遇到的工作，而相較於運算很單純的數值，文字的處理又更複雜了一些，例如轉換大小寫、取出部分的文字、比較或取代文字等，通常文字在處理時，都需要根據不同的問題來撰寫 VBA 程式碼，以下我們會說明各種常見的字串處理函數，並且提供各種常見的範例程式給大家參考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：陣列（Array）</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-array/</link>
      <pubDate>Fri, 19 May 2017 16:56:46 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-array/</guid>
      <description>&lt;p&gt;這裡介紹 Excel VBA 的陣列基本用法，還有陣列配合迴圈一同使用的技巧與實際範例。&lt;/p&gt;
&lt;p&gt;前面我們所介紹的 &lt;a href=&#34;https://blog.gtwang.org/courses/vba/excel-vba-programming-variable/&#34;&gt;VBA 變數&lt;/a&gt;都是儲存單一值變數（例如一個整數或一個字串等），而如果我們需要儲存多個值的時候（像是十個整數或十個字串等），就需要使用陣列（array）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：時間（Date 與 Time）</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-date-and-time/</link>
      <pubDate>Sun, 21 May 2017 14:52:48 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-date-and-time/</guid>
      <description>&lt;p&gt;這裡介紹 Excel VBA 的時間變數與相關函數的用法，並且提供許多實用的參考範例。&lt;/p&gt;
&lt;p&gt;日期與時間是一種比較特別，但是也時常會被使用到的資料類型，在 VBA 中我們可以使用 &lt;code&gt;Date&lt;/code&gt; 這種特殊的變數類型來儲存日期與時間的資料，同時 VBA 中也內建了許多用來處理日期與時間的工具函數，以下是在 VBA 的使用日期與時間相關變數與函數的教學。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：函數（Function）與子程序（Sub）</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-function-and-sub/</link>
      <pubDate>Tue, 27 Jun 2017 16:55:44 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-function-and-sub/</guid>
      <description>&lt;p&gt;這裡介紹 Excel VBA 的函數（&lt;code&gt;Function&lt;/code&gt;）與子程序（&lt;code&gt;Sub&lt;/code&gt;）使用方法，並且提供許多實用的參考範例。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;一般的程式語言都會有自訂函數的功能，讓程式設計者可以將會重複使用的程式碼編寫成函數，方便未來使用。VBA 的自訂函數有分為兩種：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA 程式設計教學：檔案輸入與輸出</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-file-input-and-output/</link>
      <pubDate>Thu, 13 Jul 2017 08:32:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-file-input-and-output/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Excel VBA 中讀取與寫入文字檔，並提供基本的參考範例。&lt;/p&gt;
&lt;p&gt;通常 Excel VBA 程式都會從 Excel 表格中取得資料，經過處理之後再送回 Excel 表格中，但有些時候我們也會需要直接從外部的文字檔讀取資料，或是將處理完的資料儲存至外部的文字檔中，以下是 Excel VBA 中檔案讀取與寫入的教學。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：除錯技巧與錯誤處理</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-debug-error-handling/</link>
      <pubDate>Tue, 18 Jul 2017 11:36:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-debug-error-handling/</guid>
      <description>&lt;p&gt;這裡介紹各種處理 VBA 程式的除錯技巧與錯誤處理用法，並提供幾個基礎範例。&lt;/p&gt;
&lt;p&gt;在 Excel 中使用 VBA 撰寫程式，難免都會遇到程式出問題的狀況，例如程式跑不出來，或是執行結果不正確等，通常程式的問題可分為兩種，一種是程式開發者不小心所造成的臭蟲（bug），例如程式設計不良、程式碼打錯字等，這種狀況就要在開發程式時，使用 VBA 的各種除錯技巧把問題找出來。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：事件（Events）</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-events/</link>
      <pubDate>Sat, 29 Jul 2017 09:40:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-events/</guid>
      <description>&lt;p&gt;這裡介紹 Excel VBA 事件功能的使用方式，並提供基本的範例程式碼。&lt;/p&gt;
&lt;p&gt;當使用者在 Excel 中進行某些特定的操作時，就會觸發所謂的事件（events），例如當使用者選擇一張工作表時，就會觸發工作表選擇的事件，而像點選儲存格或儲存檔案等動作也都會觸發對應的事件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA：錄製巨集</title>
      <link>https://blog.gtwang.org/courses/vba/excel-vba-record-macro/</link>
      <pubDate>Fri, 29 Dec 2017 10:38:30 +0800</pubDate>
      <guid>https://blog.gtwang.org/courses/vba/excel-vba-record-macro/</guid>
      <description>&lt;p&gt;本篇介紹如何使用 Excel 的錄製巨集功能，將使用者的操作錄起來，自動產生 VBA 的指令稿。&lt;/p&gt;
&lt;p&gt;在 Excel 使用 VBA 開發自動化的程式時，難免會若遇到某些動作不知道該怎麼用 VBA 來撰寫，傳統的作法當然就是去翻官方的 API 文件，看看自己想要使用的功能是不是有出現在 API 中，但是這種做法是最標準的，但是卻很花力氣、更會浪費許多時間。&lt;/p&gt;</description>
    </item>
    <item>
      <title>QIIME2 微生物組分析流程軟體安裝與使用研究筆記</title>
      <link>https://blog.gtwang.org/programming/qiime2-next-generation-microbiome-bioinformatics-platform-installation-tutorial/</link>
      <pubDate>Wed, 08 Jan 2020 15:06:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/qiime2-next-generation-microbiome-bioinformatics-platform-installation-tutorial/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Ubuntu Linux 中安裝與使用 QIIME2 微生物組分析流程軟體。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;warning&#34;&gt;&lt;p&gt;本篇是我個人邊學邊記的筆記，內容錯誤百出，僅供參考。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;安裝-miniconda&#34;&gt;安裝 Miniconda&lt;/h2&gt;
&lt;p&gt;從 Miniconda 官方網站下載安裝檔：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 下載 Miniconda&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;執行下載的 Miniconda 安裝檔：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝 Miniconda&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sh Miniconda3-latest-Linux-x86_64.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Miniconda 預設會安裝在 &lt;code&gt;$HOME/miniconda3&lt;/code&gt; 目錄之下，安裝好之後，將 &lt;code&gt;conda&lt;/code&gt; 套件更新至最新版本：&lt;/p&gt;</description>
    </item>
    <item>
      <title>GCC 編譯器基本使用教學與範例</title>
      <link>https://blog.gtwang.org/programming/gcc-comipler-basic-tutorial-examples/</link>
      <pubDate>Tue, 02 Jul 2019 14:34:17 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/gcc-comipler-basic-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Linux 系統上使用 GCC 編譯器，將寫好的 C 與 C++ 程式碼編譯成執行檔。&lt;/p&gt;
&lt;p&gt;Linux 系統上最常見的 C/C++ 編譯器就是 GCC，它是一個開放原始碼的免費編譯器，幾乎任何的 Linux 系統上都有這個編譯器可用，以下介紹 GCC 的基本用法以及範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eclipse 出現 javax.websocket cannot be resolved 問題解決方法教學</title>
      <link>https://blog.gtwang.org/programming/eclipse-javax-websocket-cannot-be-resolved-solution/</link>
      <pubDate>Mon, 27 May 2019 11:39:48 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/eclipse-javax-websocket-cannot-be-resolved-solution/</guid>
      <description>&lt;p&gt;本篇記錄在 Eclipse 中，如何處理加入外部的 &lt;code&gt;websocket-api.jar&lt;/code&gt;，解決 &lt;code&gt;javax.websocket cannot be resolved&lt;/code&gt; 這樣的問題。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在 Eclipse 中匯入外部專案時，若發生 &lt;code&gt;javax.websocket cannot be resolved&lt;/code&gt; 這樣的問題，通常是因為缺少了 &lt;code&gt;websocket-api.jar&lt;/code&gt; 這個 JAR 檔案，以下是解決的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keras 以 ResNet-50 預訓練模型建立狗與貓辨識程式</title>
      <link>https://blog.gtwang.org/programming/keras-resnet-50-pre-trained-model-build-dogs-cats-image-classification-system/</link>
      <pubDate>Tue, 18 Sep 2018 11:20:29 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/keras-resnet-50-pre-trained-model-build-dogs-cats-image-classification-system/</guid>
      <description>&lt;p&gt;這裡示範在 Keras 架構下以 ResNet-50 預訓練模型為基礎，建立可用來辨識狗與貓的 AI 程式。&lt;/p&gt;
&lt;p&gt;在 &lt;a href=&#34;https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html&#34;&gt;Keras 的部落格&lt;/a&gt;中示範了使用 VGG16 模型建立狗與貓的辨識程式，準確率大約為 94%，而這裡則是改用 ResNet50 模型為基礎，並將輸入影像尺寸提高為 224x224，加上大量的 data augmentation，結果可讓辨識的準確率達到 99%。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 產生 Linux 的 /etc/shadow 加密格式密碼教學</title>
      <link>https://blog.gtwang.org/programming/generate-linux-shadow-encrypted-password/</link>
      <pubDate>Wed, 18 Jul 2018 16:45:46 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/generate-linux-shadow-encrypted-password/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Python 自己產生 Linux 中 &lt;code&gt;/etc/shadow&lt;/code&gt; 所使用的加密格式密碼。&lt;/p&gt;
&lt;p&gt;在 Linux 系統上，所有使用者的密碼都是以加密的形式存放在 &lt;a href=&#34;https://blog.gtwang.org/linux/linux-etc-shadow-file-format/&#34;&gt;/etc/shadow 檔案&lt;/a&gt;中，如果想要手動產生，可以使用以下所介紹的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 與 OpenCV 裁切圖片教學</title>
      <link>https://blog.gtwang.org/programming/how-to-crop-an-image-in-opencv-using-python/</link>
      <pubDate>Sun, 27 May 2018 15:33:21 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/how-to-crop-an-image-in-opencv-using-python/</guid>
      <description>&lt;p&gt;本篇介紹如何使用 Python 的 OpenCV 模組裁切圖片，取出部份的區域另存成新圖檔。&lt;/p&gt;
&lt;p&gt;OpenCV 是一個普遍被使用影像處理函式庫，以下介紹如何裁切 OpenCV 的圖片，擷取圖片中部份的區域，顯示在螢幕上或是儲存為圖檔。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 多執行緒 threading 模組平行化程式設計教學</title>
      <link>https://blog.gtwang.org/programming/python-threading-multithreaded-programming-tutorial/</link>
      <pubDate>Thu, 17 May 2018 19:55:19 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-threading-multithreaded-programming-tutorial/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Python 中使用 &lt;code&gt;threading&lt;/code&gt; 模組，撰寫多執行緒的平行計算程式，利用多顆 CPU 核心加速運算。&lt;/p&gt;
&lt;p&gt;現在電腦的 CPU 都有許多的核心，若想要讓程式可以運用多顆 CPU 核心，充分發揮硬體的運算能力，就必須考慮使用多執行緒（multithreading）或多行程（multiprocessing）等平行化的技術，以下介紹 Python 的多執行緒的程式設計方法與技巧，並提供詳細的範例程式碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Big-Endian 與 Little-Endian 的差異與判斷程式碼</title>
      <link>https://blog.gtwang.org/programming/difference-between-big-endian-and-little-endian-implementation-in-c/</link>
      <pubDate>Thu, 17 May 2018 10:06:25 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/difference-between-big-endian-and-little-endian-implementation-in-c/</guid>
      <description>&lt;p&gt;這裡介紹 Big-Endian 與 Little-Endian 兩種位元組順序的差異，並提供判斷位元組順序的 C 語言實作程式碼範例。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E5%BA%8F&#34;&gt;位元組順序（Endianness）&lt;/a&gt;是指資料在記憶體中的放置順序，不同的 CPU 可能會採用不同的放置規則，若遇到需要在不同機器或是網路之間交換低階的二進位資料時，就必須注意這個問題。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言排序演算法實作整理：泡沫排序、快速排序等</title>
      <link>https://blog.gtwang.org/programming/c-sorting-algorithms-implementation/</link>
      <pubDate>Mon, 02 Apr 2018 11:22:36 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-sorting-algorithms-implementation/</guid>
      <description>&lt;p&gt;這裡提供各種排序演算法的 C 語言實作範例。&lt;/p&gt;
&lt;p&gt;若要對一連串的元素（陣列）做排序的話，有很多種實作方式，常見的排序方法有：&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F&#34;&gt;泡沫排序法（bubble sort）&lt;/a&gt;、&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F&#34;&gt;插入排序法（insertion sort）&lt;/a&gt;、&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F&#34;&gt;快速排序法（quick sort）&lt;/a&gt;等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言 pthread 多執行緒平行化程式設計入門教學與範例</title>
      <link>https://blog.gtwang.org/programming/pthread-multithreading-programming-in-c-tutorial/</link>
      <pubDate>Sun, 25 Mar 2018 09:06:47 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/pthread-multithreading-programming-in-c-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何在 C 語言中使用 &lt;code&gt;pthread&lt;/code&gt; 開發多執行緒的平行化程式，用多顆 CPU 加速計算。&lt;/p&gt;
&lt;p&gt;現在電腦的 CPU 都具備多顆核心，因此在使用 C 語言撰寫計算用的程式時，若能夠善用多核新的 CPU 進行平行運算，可以讓計算速度大幅提昇。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 讀取與寫入 CSV 檔案教學與範例</title>
      <link>https://blog.gtwang.org/programming/python-csv-file-reading-and-writing-tutorial/</link>
      <pubDate>Thu, 22 Mar 2018 05:47:04 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-csv-file-reading-and-writing-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Python 中使用 &lt;code&gt;csv&lt;/code&gt; 模組，讀取與寫入逗點分隔檔。&lt;/p&gt;
&lt;p&gt;逗點分隔（Comma-Separated Values，簡稱 csv）是一種簡單的文字檔格式，以逗號分隔不同欄位的資料，很多軟體在儲存與交換表格資料時都支援這樣的格式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 設定 React JSX 程式碼顏色教學</title>
      <link>https://blog.gtwang.org/programming/vim-react-jsx-syntax-highlighting-and-indenting/</link>
      <pubDate>Wed, 14 Mar 2018 12:04:54 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/vim-react-jsx-syntax-highlighting-and-indenting/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Linux 中安裝 &lt;code&gt;vim-jsx&lt;/code&gt; 這個 Vim 的 JSX 語法外掛，讓 React JSX 的程式碼可以呈現正常的色彩。&lt;/p&gt;
&lt;p&gt;JSX 是 React 所新創的 JavaScript 擴充語言，比傳統的 JavaScript 多出許多新的語法，所以 Vim 編輯器遇到 JSX 的程式碼時，會無法顯示出正確的語法顏色。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 OpenCV 自動裁切掃描文件白邊、修正傾斜角度教學</title>
      <link>https://blog.gtwang.org/programming/python-opencv-auto-crop-and-rotate-scanned-image-tutorial/</link>
      <pubDate>Wed, 07 Mar 2018 12:29:18 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-opencv-auto-crop-and-rotate-scanned-image-tutorial/</guid>
      <description>&lt;p&gt;這裡示範如何在 Python 中以 OpenCV 自動偵測與切除掃描影像的白色邊緣，並修正傾斜的文件影像。&lt;/p&gt;
&lt;p&gt;最近我正在整理大量的舊書籍，想要將書籍的每一頁都掃描成 PDF 電子檔，方便保存下來，之前已經開發完&lt;a href=&#34;https://blog.gtwang.org/programming/automation-of-google-ocr-using-python-tutorial/&#34;&gt;自動化的文字辨識的程式&lt;/a&gt;了，接下來我要處理掃描圖檔的空白邊緣修正問題，以下是問題的敘述與程式開發流程紀錄。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 與 OpenCV 繪製直方圖，分析影像亮度分佈教學</title>
      <link>https://blog.gtwang.org/programming/python-opencv-matplotlib-plot-histogram-tutorial/</link>
      <pubDate>Mon, 05 Mar 2018 19:49:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-opencv-matplotlib-plot-histogram-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Python 中以 OpenCV 與 matplotlib 等工具，統計影像像素值的分佈，並畫出直方圖。&lt;/p&gt;
&lt;p&gt;在開發影像處理的程式時，我們時常會需要觀察影像像素值的分佈與特性，以便選用適合的演算法、制定門檻值、設計出適合的影像處理流程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Caire 完美改變圖片長寬比例工具，Seam Carving 演算法應用</title>
      <link>https://blog.gtwang.org/programming/caire-image-resize-library-based-on-seam-carving-algorithm/</link>
      <pubDate>Sun, 04 Mar 2018 16:30:04 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/caire-image-resize-library-based-on-seam-carving-algorithm/</guid>
      <description>&lt;p&gt;這裡示範如何使用 Caire 這個圖形函式庫，在圖片拉長或縮短後，以 Seam Carving 演算法自動修正圖形中的物體，保持完美的比例。&lt;/p&gt;
&lt;p&gt;在電腦上設計一些美工文宣品或是網站版面時，找尋適合的圖片是很重要的，有時候雖然找到的素材圖片風格非常棒，但若解析度不足、或是長寬比例不對的話，也不太能使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 OpenCV、Dlib 實作即時人臉偵測程式教學</title>
      <link>https://blog.gtwang.org/programming/python-opencv-dlib-face-detection-implementation-tutorial/</link>
      <pubDate>Sun, 04 Mar 2018 08:42:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-opencv-dlib-face-detection-implementation-tutorial/</guid>
      <description>&lt;p&gt;這裡示範如何在 Python 中使用 OpenCV 與 Dlib 開發人臉偵測程式，即時擷取網路攝影機串流影像，輸出人臉偵測結果。&lt;/p&gt;
&lt;p&gt;人臉偵測是一項相當成熟的技術，不管是數位相機或是手機在拍照時，都可以自動偵測人臉並對焦，而在自行開發的程式當中，若要加入人臉偵測的功能也非常容易，只要串接相關的模組即可實作出相當專業的程式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 Google 雲端硬碟 API 自動進行文字辨識教學</title>
      <link>https://blog.gtwang.org/programming/automation-of-google-ocr-using-python-tutorial/</link>
      <pubDate>Fri, 02 Mar 2018 14:58:05 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/automation-of-google-ocr-using-python-tutorial/</guid>
      <description>&lt;p&gt;這裡示範如何在 Python 中使用 Google 雲端硬碟 API，自動上傳圖片、進行文字辨識、下載結果。&lt;/p&gt;
&lt;p&gt;在上一篇的 &lt;a href=&#34;https://blog.gtwang.org/useful-tools/google-drive-vertical-and-horizontal-chinese-characters-ocr-tutorial/&#34;&gt;Google 雲端硬碟文字辨識的文章&lt;/a&gt;中，我們介紹了以手動的方式上傳圖片，讓 Google 幫忙自動取出圖片中的文字，雖然省去了大量的打字工作，但是若遇到圖片數量很龐大時，以手動上傳還是很吃力的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 Beautiful Soup 抓取與解析網頁資料，開發網路爬蟲教學</title>
      <link>https://blog.gtwang.org/programming/python-beautiful-soup-module-scrape-web-pages-tutorial/</link>
      <pubDate>Thu, 01 Feb 2018 08:34:47 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-beautiful-soup-module-scrape-web-pages-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Python 的 Beautiful Soup 模組自動下載並解析網頁資料，開發典型的網路爬蟲程式。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.crummy.com/software/BeautifulSoup/&#34;&gt;Beautiful Soup&lt;/a&gt; 是一個 Python 的函式庫模組，可以讓開發者僅須撰寫非常少量的程式碼，就可以快速解析網頁 HTML 碼，從中翠取出使用者有興趣的資料、去蕪存菁，降低網路爬蟲程式的開發門檻、加快程式撰寫速度。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 如何檢查檔案或目錄是否已經存在？</title>
      <link>https://blog.gtwang.org/programming/python-howto-check-whether-file-folder-exists/</link>
      <pubDate>Sat, 27 Jan 2018 07:38:27 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-howto-check-whether-file-folder-exists/</guid>
      <description>&lt;p&gt;這裡介紹何使用 Python 程式判斷指定的檔案或目錄是否已經存在。&lt;/p&gt;
&lt;p&gt;在各種語言的程式設計上，檢查特定的檔案或目錄是否存在是一個很常見的工作，而在 Python 中也不利外，以下是在各種情況下檢查檔案或目錄的方法與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 requests 模組產生 HTTP 請求，下載網頁資料教學</title>
      <link>https://blog.gtwang.org/programming/python-requests-module-tutorial/</link>
      <pubDate>Fri, 26 Jan 2018 16:35:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-requests-module-tutorial/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Python 中使用 &lt;code&gt;requests&lt;/code&gt; 模組建立各種 HTTP 請求，從網頁伺服器上取得想要的資料。&lt;/p&gt;
&lt;p&gt;如果想要使用 Python 來下載網頁上的資料，最基本的作法就是以 &lt;code&gt;requests&lt;/code&gt; 模組建立適當的 HTTP 請求，透過 HTTP 請求從網頁伺服器下載指定的資料，這種方式雖然步驟比較繁瑣，也需要一點通訊協定的基礎，但是絕大部分的網路爬蟲或除錯問題都可以靠這個架構解決，是資深網路程式設計師必備的工具之一。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 計算 MD5 與 SHA 雜湊教學與範例</title>
      <link>https://blog.gtwang.org/programming/python-md5-sha-hash-functions-tutorial-examples/</link>
      <pubDate>Tue, 23 Jan 2018 16:24:33 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-md5-sha-hash-functions-tutorial-examples/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Python 的 &lt;code&gt;hashlib&lt;/code&gt; 模組計算資料的 MD5 與 SHA 雜湊值。&lt;/p&gt;
&lt;p&gt;Python 內建的 &lt;code&gt;hashlib&lt;/code&gt; 模組可以用來計算資料的各種雜湊值，其中 &lt;code&gt;md5&lt;/code&gt;、&lt;code&gt;sha1&lt;/code&gt;、&lt;code&gt;sha224&lt;/code&gt;、&lt;code&gt;sha256&lt;/code&gt;、&lt;code&gt;sha384&lt;/code&gt; 與 &lt;code&gt;sha512&lt;/code&gt; 這幾種演算法是任何平台都有支援的，除此之外的演算法就要看平台本身的 OpenSSL 函式庫而定。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 與 OpenCV 加入線條圖案與文字教學</title>
      <link>https://blog.gtwang.org/programming/opencv-drawing-functions-tutorial/</link>
      <pubDate>Tue, 09 Jan 2018 10:24:14 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/opencv-drawing-functions-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Python 中使用 OpenCV 在圖片上加上線條等幾何圖案以及文字標示。&lt;/p&gt;
&lt;p&gt;在影像處理的程式中，若要比較清楚呈現處理的結果，時常會需要在圖片上加上一些標示的幾何圖形或是文字，比方說在物件辨識的問題上，可能會使用方框將辨識出來的物件框起來，並加註一些文字描述等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 與 OpenCV 實作移動偵測程式教學，打造智慧型監視器</title>
      <link>https://blog.gtwang.org/programming/opencv-motion-detection-and-tracking-tutorial/</link>
      <pubDate>Fri, 05 Jan 2018 15:33:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/opencv-motion-detection-and-tracking-tutorial/</guid>
      <description>&lt;p&gt;這裡示範如何使用 Python 與 OpenCV 實作移動偵測程式，分析攝影機影片，自動挑選出有物體移動的畫面。&lt;/p&gt;
&lt;p&gt;OpenCV 是一個很好用的影像處理函式庫，裡面有非常多在影像處理上常會用到的工具函數，我們只需要拿幾個簡單的函數組合起來，就可以打造一個效果還不錯的智慧型監視器，自動且即時的分析攝影機的影像，當偵測到有人或物體在移動時，讓程式自動觸發某些動作（例如送出通知的 Email 等），以下是幾個簡單的實作範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keras 如何查詢模型參數的總數量？</title>
      <link>https://blog.gtwang.org/programming/how-to-find-number-of-parameters-of-a-keras-model/</link>
      <pubDate>Thu, 28 Dec 2017 12:01:01 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/how-to-find-number-of-parameters-of-a-keras-model/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Keras 的程式中查詢深度學習模型參數的總數量。&lt;/p&gt;
&lt;p&gt;Keras 可用來快速搭建各種深度學習模型，但是在嘗試各種模型的過程中，我們也時常會需要了解模型的結構與參數的數量，方便調整模型。&lt;/p&gt;</description>
    </item>
    <item>
      <title>TensorFlow Object Detection API 多 GPU 卡平行計算，加速模型訓練速度教學</title>
      <link>https://blog.gtwang.org/programming/tensorflow-object-detection-api-multiple-gpu-parallel-training/</link>
      <pubDate>Tue, 26 Dec 2017 16:38:17 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-object-detection-api-multiple-gpu-parallel-training/</guid>
      <description>&lt;p&gt;本篇記錄如何使用多張 GPU 顯示卡，加速 TensorFlow Object Detection API 模型訓練的過程。&lt;/p&gt;
&lt;p&gt;雖然 TensorFlow Object Detection API 已經有支援多張 GPU 卡平行計算的功能，但是缺乏說明文件，所以我自己也不是非常確定該怎麼用，以下只是我目前嘗試出來的方式，僅供參考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 用 cProfile 測量程式效能瓶頸與 gprof2dot 視覺化分析教學</title>
      <link>https://blog.gtwang.org/programming/python-cprofile-and-gprof2dot-tutorial/</link>
      <pubDate>Fri, 15 Dec 2017 14:41:27 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-cprofile-and-gprof2dot-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 cProfile 測量 Python 程式效能、找出效能瓶頸，並以 gprof2dot 產生視覺化分析圖表。&lt;/p&gt;
&lt;p&gt;較為大型的計算程式在開發完成後，通常都會接續著進行程式的執行效能測量與分析（&lt;a href=&#34;https://en.wikipedia.org/wiki/Profiling_%28computer_programming%29&#34;&gt;profiling&lt;/a&gt;），找出程式的瓶頸所在，針對少數關鍵的程式碼進一步做最佳化，改善整體程式的執行速度。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keras 儲存與載入訓練好的模型或參數教學</title>
      <link>https://blog.gtwang.org/programming/keras-save-and-load-model-tutorial/</link>
      <pubDate>Thu, 14 Dec 2017 10:30:11 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/keras-save-and-load-model-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Keras 儲存與載入訓練好的模型或參數，以利重複使用或部署產品。&lt;/p&gt;
&lt;p&gt;訓練一個實際的類神經網路模型會需要非常大量的運算，所以在模型訓練完之後，最好可以把訓練好的模型參數儲存下來，這樣之後在使用時就可以省去重新訓練的時間。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 Protocol Buffers 教學與範例</title>
      <link>https://blog.gtwang.org/programming/python-protocol-buffers-tutorial/</link>
      <pubDate>Tue, 12 Dec 2017 15:44:04 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-protocol-buffers-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹在 Python 使用 Protocol Buffers 格式來儲存資料的方式，以及實際應用範例。&lt;/p&gt;
&lt;p&gt;Protocol Buffers 是一種高效率、高彈性的結構化資料序列儲存格式，其類似 XML，但更省空間、處理效率更好，而且語法也更簡單。在使用 Protocol Buffers 前，我們會先定義資料的結構規則，再使用 Protocol Buffers 的編譯器產生適用於自己專案的 API 程式碼（例如 C++ 或 Python 程式碼等），然後在程式中呼叫這個 API 來存取 Protocol Buffers 格式的資料。&lt;/p&gt;</description>
    </item>
    <item>
      <title>TensorFlow Object Detection API 自行訓練模型教學，辨識特定物件</title>
      <link>https://blog.gtwang.org/programming/tensorflow-object-detection-api-custom-object-model-training-tutorial/</link>
      <pubDate>Mon, 11 Dec 2017 11:42:13 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-object-detection-api-custom-object-model-training-tutorial/</guid>
      <description>&lt;p&gt;這裡介如何使用自己的資料，以 TensorFlow Object Detection API 訓練出適用於特定物件的模型，建立自己的物件辨識系統。&lt;/p&gt;
&lt;p&gt;在 &lt;a href=&#34;https://blog.gtwang.org/programming/tensorflow-object-detection-api-tutorial/&#34;&gt;TensorFlow Object Detection API 自動辨識物件教學文章&lt;/a&gt;中，我們是直接使用既有已經訓練好的模型來辨識物件，但如果我們有一些比較特別的物件需要進行辨識，而這些物件又沒有被包含在既有模型中的話，就沒辦法直接使用既有的模型，這時候就需要先蒐集一些該物件的影像與標註資料，進一步訓練模型後，才能讓模型辨識出比較特別的物件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>TensorFlow Object Detection API 自動辨識物件教學</title>
      <link>https://blog.gtwang.org/programming/tensorflow-object-detection-api-tutorial/</link>
      <pubDate>Fri, 01 Dec 2017 09:40:39 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-object-detection-api-tutorial/</guid>
      <description>&lt;p&gt;本篇介紹如何安裝與使用 TensorFlow Object Detection API，自動辨識照片或影片中的物件。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tensorflow/models/tree/master/research/object_detection&#34;&gt;Tensorflow Object Detection API&lt;/a&gt; 是 Google 以 TensorFlow 為基礎所開發的物件偵測程式開發架構（framework），其以開放原始碼的方式釋出，所有想要開發以深度學習自動辨識物件程式的人，都可以很方便的利用這套架構發展自己的系統。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenCV 擷取網路攝影機串流影像，處理並寫入影片檔案教學</title>
      <link>https://blog.gtwang.org/programming/opencv-webcam-video-capture-and-file-write-tutorial/</link>
      <pubDate>Thu, 30 Nov 2017 12:32:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/opencv-webcam-video-capture-and-file-write-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Python 與 OpenCV 擷取網路攝影機影像，處理與顯示即時的畫面影像，並將連續的畫面影像寫入影片檔案中儲存起來。&lt;/p&gt;
&lt;p&gt;若要使用 Python 取的網路攝影機的串流影像，可以透過 OpenCV 模組的 &lt;code&gt;VideoCapture&lt;/code&gt; 影片擷取功能來達成，至於寫入影片檔則可使用 &lt;code&gt;VideoWriter&lt;/code&gt;，操作方式非常簡單，以下是使用教學與簡單的入門範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 與 OpenCV 基本讀取、顯示與儲存圖片教學</title>
      <link>https://blog.gtwang.org/programming/opencv-basic-image-read-and-write-tutorial/</link>
      <pubDate>Fri, 24 Nov 2017 11:50:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/opencv-basic-image-read-and-write-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Python 與 OpenCV 讀取影像圖檔，以及將處理好的圖形寫入檔案。&lt;/p&gt;
&lt;h2 id=&#34;opencv-讀取圖片&#34;&gt;OpenCV 讀取圖片&lt;/h2&gt;
&lt;p&gt;首先引入 NumPy 與 OpenCV 的 Python 模組：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;numpy&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;cv2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;OpenCV 本身就有提供讀取圖片檔的函數可用，讀取一般的圖片檔，只要呼叫 &lt;code&gt;cv2.imread&lt;/code&gt; 即可將圖片讀取進來：&lt;/p&gt;</description>
    </item>
    <item>
      <title>TensorFlow 與 Keras 指定 NVIDIA GPU 顯示卡與記憶體用量教學</title>
      <link>https://blog.gtwang.org/programming/tensorflow-keras-specify-gpu-and-memory-tutorial/</link>
      <pubDate>Fri, 17 Nov 2017 14:09:36 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-keras-specify-gpu-and-memory-tutorial/</guid>
      <description>&lt;p&gt;本篇介紹如何指定 TensorFlow 與 Keras 程式所使用的 GPU 顯示卡與記憶體用量。&lt;/p&gt;
&lt;p&gt;在 TensorFlow 或 Keras 中使用 NVIDIA 的 GPU 做運算時，預設會把整台機器上所有的 GPU 卡都獨佔下來，而且不管實際需要多少顯示卡的記憶體，每張卡的記憶體都會被佔滿，以下介紹如何調整設定，讓多張顯示卡可以分給多個程式或多人使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 TensorFlow 內建的 Keras API 實作手寫數字辨識 CNN 程式</title>
      <link>https://blog.gtwang.org/programming/tensorflow-core-keras-api-cnn-tutorial/</link>
      <pubDate>Mon, 30 Oct 2017 15:17:25 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-core-keras-api-cnn-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 TensorFlow 內建的 Keras API 實作手寫數字辨識 CNN 程式。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://keras.io/&#34;&gt;Keras&lt;/a&gt; 是一套高階的深度學習工具，今年 Google 將其納入 TensorFlow 的核心模組當中，發表於 &lt;a href=&#34;https://www.youtube.com/watch?v=UeheTiBJ0Io&#34;&gt;TensorFlow Dev Summit 2017&lt;/a&gt;，也就是說未來只要安裝好 TensorFlow 之後，就可以直接使用 Keras 的 API 函數，不需要另外安裝。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS Linux 安裝與使用 Keras 深度學習工具</title>
      <link>https://blog.gtwang.org/programming/centos-linux-install-keras-deep-learning-library/</link>
      <pubDate>Mon, 30 Oct 2017 10:36:04 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/centos-linux-install-keras-deep-learning-library/</guid>
      <description>&lt;p&gt;本篇介紹如何在 CentOS Linux 中安裝與使用 Keras 這套深度學習工具。&lt;/p&gt;
&lt;p&gt;談到深度學習（Deep Learning）的工具，大家都會想到 TensorFlow 這類的底層 framework，這類的基礎的 framework 由於保留了非常多的彈性空間，導致使用上比較不方便，如果想要快速進行依些簡單的問題測試，就可以使用 Keras 這類的高階工具。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenCV 教學：實作 Selective Search 物體偵測候選區域演算法</title>
      <link>https://blog.gtwang.org/programming/selective-search-for-object-detection/</link>
      <pubDate>Thu, 26 Oct 2017 16:10:14 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/selective-search-for-object-detection/</guid>
      <description>&lt;p&gt;本篇介紹如何在 OpenCV 中實作 Selective Search 物體偵測候選區域演算法。&lt;/p&gt;
&lt;p&gt;初版的 &lt;a href=&#34;https://arxiv.org/abs/1311.2524&#34;&gt;R-CNN&lt;/a&gt; 是將 &lt;a href=&#34;https://www.huppelen.nl/publications/selectiveSearchDraft.pdf&#34;&gt;Selective Search&lt;/a&gt; 所得到的候選區域，放進 CNN 中進行判斷，為了更清楚理解 Selective Search 的運作，以下我們直接使用 OpenCV 來撰寫一個 Selective Search 的實作版本，觀察該演算法實際執行的結果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenCV 教學：實作 Graph Based Segmentation 圖形分割演算法</title>
      <link>https://blog.gtwang.org/programming/opencv-graph-based-segmentation-tutorial/</link>
      <pubDate>Wed, 25 Oct 2017 15:08:21 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/opencv-graph-based-segmentation-tutorial/</guid>
      <description>&lt;p&gt;本篇介紹如何在 OpenCV 中實作 Graph Based Segmentation 圖形分割演算法。&lt;/p&gt;
&lt;p&gt;在 &lt;a href=&#34;https://arxiv.org/abs/1311.2524&#34;&gt;R-CNN&lt;/a&gt; 中的候選區域是從 &lt;a href=&#34;https://ivi.fnwi.uva.nl/isis/publications/bibtexbrowser.php?key=UijlingsIJCV2013&amp;amp;bib=all.bib&#34;&gt;Selective Search&lt;/a&gt; 得來的，而 Selective Search 又是根據 &lt;a href=&#34;https://cs.brown.edu/~pff/papers/seg-ijcv.pdf&#34;&gt;Graph Based Segmentation&lt;/a&gt; 的結果而來，所以我在研究 R-CNN 的同時，也必須先看一下 Graph Based Segmentation 的理論與實做。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 zip 與 for 迴圈同時對多個 List 進行迭代</title>
      <link>https://blog.gtwang.org/programming/python-iterate-through-multiple-lists-in-parallel/</link>
      <pubDate>Fri, 06 Oct 2017 08:22:52 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-iterate-through-multiple-lists-in-parallel/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Python 中同時對多個 list 進行迭代，在迴圈中每次各取一個 list 中的元素進行處理。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;zip-與-for-迴圈&#34;&gt;&lt;code&gt;zip&lt;/code&gt; 與 &lt;code&gt;for&lt;/code&gt; 迴圈&lt;/h2&gt;
&lt;p&gt;在 Python 中若要將兩個 list 以迴圈的方式一次各取一個元素出來處理，可以使用 &lt;code&gt;zip&lt;/code&gt; 打包之後配合 &lt;code&gt;for&lt;/code&gt; 迴圈來處理：&lt;/p&gt;</description>
    </item>
    <item>
      <title>TensorFlow 的 tf.InteractiveSession 互動式 Session 使用教學</title>
      <link>https://blog.gtwang.org/programming/tensorflow-interactivesession-tutorial/</link>
      <pubDate>Wed, 20 Sep 2017 12:02:28 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-interactivesession-tutorial/</guid>
      <description>&lt;p&gt;本篇是 TensorFlow 的 &lt;code&gt;tf.InteractiveSession&lt;/code&gt; 互動式 Session 使用教學。&lt;/p&gt;
&lt;p&gt;在 TensorFlow 中，所有的運算都要放在 session 中執行，而如果在 shell 或 IPython notebooks 中執行 TensorFlow 的程式時，我們可以改用比較方便使用的 &lt;code&gt;tf.InteractiveSession&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;</description>
    </item>
    <item>
      <title>TensorFlow 寫入與讀取 TFRecords 檔案格式教學</title>
      <link>https://blog.gtwang.org/programming/tensorflow-read-write-tfrecords-data-format-tutorial/</link>
      <pubDate>Fri, 15 Sep 2017 20:25:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-read-write-tfrecords-data-format-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何將各種資料儲存為 TFRecords 檔案，方便在 TensorFlow 中使用。&lt;/p&gt;
&lt;p&gt;TensorFlow 支援許多種讀取檔案的方式（例如 &lt;a href=&#34;https://blog.gtwang.org/programming/tensorflow-input-pipeline-notes/&#34;&gt;TensorFlow 輸入管線&lt;/a&gt;），而 TensorFlow 本身也有自己標準的 TFRecords 檔案格式，可以將資料與對應的資料標示（label）儲存在一起，方便在 TensorFlow 中使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 TensorBoard 視覺化呈現 TensorFlow 計算流程教學</title>
      <link>https://blog.gtwang.org/programming/tensorboard-tensorflow-visualization-tutorial/</link>
      <pubDate>Fri, 08 Sep 2017 14:58:15 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorboard-tensorflow-visualization-tutorial/</guid>
      <description>&lt;p&gt;本篇是 TensorBoard 的基本使用方法教學，以視覺化呈現 TensorFlow 的計算結果。&lt;/p&gt;
&lt;p&gt;通常實務上以 TensorFlow 建立的模型（例如深度神經網路）都相當複雜，若要對模型進行觀察、除錯與最佳化，都有一定的難度，而 TensorBoard 是一個專門用來呈現 TensorFlow 模型與資料的視覺化工具，其支援好幾種資料的呈現方式，讓程式設計者更容易掌握複雜的模型與資料。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 的 with 語法使用教學：Context Manager 資源管理器</title>
      <link>https://blog.gtwang.org/programming/python-with-context-manager-tutorial/</link>
      <pubDate>Wed, 30 Aug 2017 16:50:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-with-context-manager-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹 Python 的 &lt;code&gt;with&lt;/code&gt; 使用方法，以及自行建立 context manager 的方法與範例程式碼。&lt;/p&gt;
&lt;p&gt;資源的管理在程式設計上是一個很常見的問題，例如管理開啟的檔案、網路 socket 與各種鎖定（locks）等，最主要的問題點就在於我們必須確保這些開啟的資源在使用完之後，有確實被關閉（或釋放），如果忘記關閉這些資源，就會造成程式執行上的效能問題，甚至出現錯誤，而除了關閉之外，有些特殊的資源在使用完畢之後，還必須進行一些後續的清理動作，這些也都是資源管理上需要注意的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 列出目錄中所有檔案教學：os.listdir 與 os.walk</title>
      <link>https://blog.gtwang.org/programming/python-list-all-files-in-directory/</link>
      <pubDate>Sat, 26 Aug 2017 09:19:15 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-list-all-files-in-directory/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Python 中列出目錄中的檔案，並且配合各種篩選方式，取得符合條件的檔案列表。&lt;/p&gt;
&lt;p&gt;在使用 Python 開發處理檔案的程式時，時常會需要把一個目錄中的檔案名稱全部列出來，然後再使用迴圈對每一個檔案進行後續的處理，以下是各種取得目錄中所有檔案名稱的方法與範例程式碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bash 程式設計教學：開啟 TCP/UDP Socket 網路連線</title>
      <link>https://blog.gtwang.org/programming/bash-tutorial-open-tcp-udp-socket/</link>
      <pubDate>Fri, 25 Aug 2017 21:06:18 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/bash-tutorial-open-tcp-udp-socket/</guid>
      <description>&lt;p&gt;這裡示範如何使用 bash 指令稿開啟 TCP/UDP 的 socket，進行各種網路診斷工作。&lt;/p&gt;
&lt;p&gt;作為網管或是 Linux 系統管理者，使用 &lt;a href=&#34;https://blog.gtwang.org/linux/linux-utility-netcat-examples/&#34;&gt;netcat&lt;/a&gt;、&lt;a href=&#34;https://blog.gtwang.org/linux/linux-wget-command-download-web-pages-and-files-tutorial-examples/&#34;&gt;wget&lt;/a&gt; 或 &lt;code&gt;curl&lt;/code&gt; 這類的指令檢查遠端伺服器的網路服務應該算是基本技能，而且是時常會需要做的工作之一，但是如果遇到系統上沒有這類的工具可用時，我們就可以改用 bash shell 內建的一些功能來達到類似的效果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PHP 上傳檔案程式設計教學，$_FILES 多檔案用法</title>
      <link>https://blog.gtwang.org/programming/php-upload-files-tutorial/</link>
      <pubDate>Wed, 23 Aug 2017 12:17:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/php-upload-files-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用網頁與 PHP 上傳檔案，並提供單檔與多檔上傳的範例程式碼。&lt;/p&gt;
&lt;p&gt;檔案上傳是網頁設計中常用的功能，若用 PHP 開發網站的話，可以使用其 &lt;code&gt;$_FILES&lt;/code&gt; 變數來接收從網頁上傳的檔案，以下提供 &lt;code&gt;$_FILES&lt;/code&gt; 變數的使用方法與範例程式碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 MySQLdb 模組連接 MySQL 資料庫教學與範例</title>
      <link>https://blog.gtwang.org/programming/python-mysqldb-connect-mysql-database-tutorial/</link>
      <pubDate>Mon, 21 Aug 2017 12:15:15 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-mysqldb-connect-mysql-database-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹 Python 的 &lt;code&gt;MySQLdb&lt;/code&gt; 模組的安裝與使用方法，查詢、新增、修改與刪除 MySQL 資料庫中的資料。&lt;/p&gt;
&lt;p&gt;Python 的 &lt;code&gt;MySQLdb&lt;/code&gt; 是一個 MySQL 資料庫連接模組，其內部核心是以 C 語言開發的，透過 &lt;code&gt;MySQLdb&lt;/code&gt; 包裝成 Python 模組，以下是 &lt;code&gt;MySQLdb&lt;/code&gt; 安裝與使用方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 讀取與寫入壓縮檔教學，支援 gzip、bzip2、zip、tar 格式</title>
      <link>https://blog.gtwang.org/programming/python-data-compression-archiving-gzip-bz2-zip-tar/</link>
      <pubDate>Sat, 19 Aug 2017 14:05:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-data-compression-archiving-gzip-bz2-zip-tar/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Python 中讀取與寫入各種格式的壓縮檔，包含 gzip、bz2、zip、tar 格式。&lt;/p&gt;
&lt;p&gt;Python 本身就有支援各種壓縮檔案格式的模組，我們可以透過這些模組來讀取或寫入壓縮檔，常見的 gzip、bz2、zip、tar 格式都有支援，使用上非常方便。以下是各種壓縮格式的壓縮與解壓縮教學，還有一些範例程式碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以模組名稱 __name__ 分辨程式執行模式</title>
      <link>https://blog.gtwang.org/programming/python-import-name-main-faq/</link>
      <pubDate>Fri, 18 Aug 2017 21:05:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-import-name-main-faq/</guid>
      <description>&lt;p&gt;這裡介紹如何以模組名稱 &lt;code&gt;__name__&lt;/code&gt; 變數分辨程式執行模式，判斷程式是否處於被引入（import）的狀態。&lt;/p&gt;
&lt;p&gt;在 Python 程式中時常可以看到 &lt;code&gt;__name__ == &amp;quot;__main__&amp;quot;&lt;/code&gt; 這個奇怪的判斷式，類似這樣：&lt;/p&gt;</description>
    </item>
    <item>
      <title>TensorFlow 輸入管線 Pipeline 從檔案讀取資料學習筆記</title>
      <link>https://blog.gtwang.org/programming/tensorflow-input-pipeline-notes/</link>
      <pubDate>Tue, 15 Aug 2017 13:33:59 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-input-pipeline-notes/</guid>
      <description>&lt;p&gt;本篇介紹如何在 TensorFlow 中以輸入管線讀取任意格式的檔案，並提供 Python 的範例程式碼。&lt;/p&gt;
&lt;p&gt;在 TensorFlow 中總共有三種讀取資料的方式，在之前的 &lt;a href=&#34;https://blog.gtwang.org/programming/tensorflow-google-machine-learning-software-library-tutorial/&#34;&gt;TensorFlow 入門教學文章&lt;/a&gt;中，我們已經使用過 placeholder 與常數這兩種比較簡單的方式，這裡將介紹第三種輸入管線的方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言 fork 使用教學與範例，多行程 Multi-Process 平行化程式設計</title>
      <link>https://blog.gtwang.org/programming/c-fork-tutorial-multi-process-programming/</link>
      <pubDate>Tue, 08 Aug 2017 16:10:41 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-fork-tutorial-multi-process-programming/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 C 語言的 &lt;code&gt;fork&lt;/code&gt; 函數建立子行程，設計多行程的平行化程式。&lt;/p&gt;
&lt;p&gt;C 語言中的 &lt;code&gt;fork&lt;/code&gt; 函數可以將目前的程式行程（process）複製一份，建立出新的子行程（child process），而原本的行程就稱為父行程（parent process）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 TensorFlow、Softmax 迴歸模型、CNN，實作數字辨識系統筆記</title>
      <link>https://blog.gtwang.org/programming/tensorflow-softmax-regression-hand-written-digits-recognizer-tutorial/</link>
      <pubDate>Thu, 29 Jun 2017 10:20:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-softmax-regression-hand-written-digits-recognizer-tutorial/</guid>
      <description>&lt;p&gt;本篇示範如何使用 Google 的 TensorFlow、softmax 迴歸模型、CNN，實作一套手寫辨識系統。&lt;/p&gt;
&lt;p&gt;如果您沒學過 Google 的 TensorFlow，建議先閱讀 &lt;a href=&#34;https://blog.gtwang.org/programming/tensorflow-google-machine-learning-software-library-tutorial/&#34;&gt;TensorFlow 機器學習軟體工具入門教學&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>TensorFlow 機器學習軟體工具入門教學與範例實作</title>
      <link>https://blog.gtwang.org/programming/tensorflow-google-machine-learning-software-library-tutorial/</link>
      <pubDate>Wed, 28 Jun 2017 10:21:01 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/tensorflow-google-machine-learning-software-library-tutorial/</guid>
      <description>&lt;p&gt;本篇為 TensorFlow 機器學習軟體工具的入門教學，並實作一個簡單的線性迴歸模型範例。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.tensorflow.org/&#34;&gt;TensorFlow&lt;/a&gt; 是一套由 Google 所發展的開放原始碼機器學習函式庫，其以流程圖的概念呈現整個資料分析流程，在流程圖中的每一個節點都代表一個運算，連接不同節點的連線則代表資料的傳遞，程式設計者可以運用各種不同的運算節點（不同的演算法），組合成適用於各種問題的分析系統，運用 CPU 或 GPU 進行運算。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43;11 內建亂數函式庫使用教學：隨機亂數產生器與機率分布</title>
      <link>https://blog.gtwang.org/programming/cpp-random-number-generator-and-probability-distribution-tutorial/</link>
      <pubDate>Fri, 07 Apr 2017 10:55:08 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/cpp-random-number-generator-and-probability-distribution-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 C++11 標準中內建的亂數函式庫，產生各種機率分布的隨機亂數。&lt;/p&gt;
&lt;p&gt;傳統上在 C/C++ 程式中若要產生亂數，大家最常用的就是&lt;a href=&#34;https://blog.gtwang.org/programming/c-cpp-rand-random-number-generation-tutorial-examples/&#34;&gt;標準的 rand 函數&lt;/a&gt;，它的用法簡單、快速又方便，雖然其功能比較陽春，生成的亂數品質也比較不好，但因為是標準的函數之一，所以還是非常多人喜歡用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C/C&#43;&#43; 使用 rand 函數產生隨機亂數教學與範例程式碼</title>
      <link>https://blog.gtwang.org/programming/c-cpp-rand-random-number-generation-tutorial-examples/</link>
      <pubDate>Thu, 06 Apr 2017 08:33:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-cpp-rand-random-number-generation-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹 C/C++ 中使用 &lt;code&gt;rand&lt;/code&gt; 函數產生亂數的方法，並且提供各種常用的範例程式碼。&lt;/p&gt;
&lt;p&gt;在撰寫 C/C++ 程式時，如果需要產生一些簡單的亂數，最方便的作法就是使用 &lt;code&gt;rand&lt;/code&gt; 這個亂數產生函數，以下介紹這個函數的相關用法與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言緩衝區溢位攻擊範例程式碼</title>
      <link>https://blog.gtwang.org/programming/c-buffer-overflow-attack-with-example/</link>
      <pubDate>Sun, 02 Apr 2017 16:29:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-buffer-overflow-attack-with-example/</guid>
      <description>&lt;p&gt;本篇以 C 語言的實際範例，解釋緩衝區溢位攻擊的原理。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E7%BC%93%E5%86%B2%E5%8C%BA%E6%BA%A2%E5%87%BA&#34;&gt;緩衝區溢位&lt;/a&gt;攻擊是一種典型的攻擊方式，雖然這種手法已經有一段的歷史，不過還是有可能因為程式設計者的疏忽，讓程式存在這樣的漏洞。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;以下我們以 C 語言的程式來解釋緩衝區溢位的原理以及攻擊方式。&lt;/p&gt;
&lt;h2 id=&#34;緩衝區溢位&#34;&gt;緩衝區溢位&lt;/h2&gt;
&lt;p&gt;程式中的緩衝區是指一塊特定的記憶體空間，程式在執行時可以將資料處存在其中，而緩衝區溢位（buffer overflow）就是指程式將資料寫入緩衝區時，超過了它的範圍，例如：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 程式處理網址 URL 百分比編碼與解碼教學</title>
      <link>https://blog.gtwang.org/programming/url-percent-encoding-and-decoding-using-java/</link>
      <pubDate>Wed, 29 Mar 2017 10:38:25 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/url-percent-encoding-and-decoding-using-java/</guid>
      <description>&lt;p&gt;這裡介紹在 Java 程式中，如何使用 &lt;code&gt;java.net.URLEncoder&lt;/code&gt; 與 &lt;code&gt;java.net.URLDecoder&lt;/code&gt; 對網址進行百分比編碼與解碼。&lt;/p&gt;
&lt;p&gt;有時常在處理網址的人應該會發現某些網址在從瀏覽器複製下來之後，就會變成一些百分比加上十六進位碼的奇怪網址，而貼回去瀏覽器又變正常了，就個就是網址 URL 百分比編碼的問題，這裡介紹如何以 Java 程式來處理網址的百分比編碼與解碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C/C&#43;&#43; 程式設計教學：main 函數讀取命令列參數，argc 與 argv 用法</title>
      <link>https://blog.gtwang.org/programming/c-cpp-tutorial-argc-argv-read-command-line-arguments/</link>
      <pubDate>Mon, 27 Mar 2017 16:16:44 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-cpp-tutorial-argc-argv-read-command-line-arguments/</guid>
      <description>&lt;p&gt;本篇教學介紹如何在 C/C++ 程式的 &lt;code&gt;main&lt;/code&gt; 函數中，使用 &lt;code&gt;argc&lt;/code&gt; 與 &lt;code&gt;argv&lt;/code&gt; 兩個參數，取得執行程式時所輸入的指令參數。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;argc-與-argv-參數&#34;&gt;&lt;code&gt;argc&lt;/code&gt; 與 &lt;code&gt;argv&lt;/code&gt; 參數&lt;/h2&gt;
&lt;p&gt;C 語言程式的 &lt;code&gt;main&lt;/code&gt; 函數如果不需要讀取任何來自於命令列的參數，則 &lt;code&gt;main&lt;/code&gt; 函數就使用最簡單的寫法即可：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bash 程式設計教學：平行執行背景子行程，用 wait 等待工作結束</title>
      <link>https://blog.gtwang.org/programming/bash-tutorial-parallel-subprocesses-and-wait/</link>
      <pubDate>Sat, 25 Mar 2017 14:32:49 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/bash-tutorial-parallel-subprocesses-and-wait/</guid>
      <description>&lt;p&gt;本篇介紹在 Bash shell 中如何使用 &lt;code&gt;wait&lt;/code&gt; 等待背景子行程的執行，並取回每個行程執行結果。&lt;/p&gt;
&lt;p&gt;在 shell 程式設計中，為了讓程式執行起來更有效率，有時會讓多個子行程（subprocess）以 spawn 的方式放在背景執行，平行處理多項不同的工作，通常將需要等待硬碟 I/O 或網路回應的工作放在背景，可以程式執行的速度加快很多。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ParaView 錄製 Python 指令稿，自動控制 ParaView 執行各種工作教學</title>
      <link>https://blog.gtwang.org/programming/paraview-trace-python-script-tutorial/</link>
      <pubDate>Thu, 23 Mar 2017 10:13:09 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/paraview-trace-python-script-tutorial/</guid>
      <description>&lt;p&gt;這裡示範如何使用 ParaView 的 Trace 功能錄製 Python 指令稿，自動控制 ParaView 執行各種工作。&lt;/p&gt;
&lt;p&gt;ParaView 本身就有支援 &lt;a href=&#34;https://www.paraview.org/paraview-docs/nightly/python/&#34;&gt;Python 語言的指令操作介面&lt;/a&gt;，在 GUI 視窗介面上的每一項操作都可以使用 Python 指令的方式達成，對於有自動化需求的人，就可以使用 Python 來撰寫指令稿控制 ParaView 處理各項繪圖工作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C/C&#43;&#43; 語言測量時間函數，評估程式執行效能方法整理</title>
      <link>https://blog.gtwang.org/programming/measure-the-execution-time-in-c-language/</link>
      <pubDate>Sun, 19 Mar 2017 16:50:25 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/measure-the-execution-time-in-c-language/</guid>
      <description>&lt;p&gt;這裡整理了 C/C++ 中各種測量時間的函數與用法，並提供完整的範例程式碼，讓程式開發者方便測量程式執行速度。&lt;/p&gt;
&lt;p&gt;這裡我蒐集了一些在 C/C++ 中常見的程式執行速度測量方式，因為時間的量測方式與細節非常多，這裡只是簡單寫一些常用的方式與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AES-JS：JavaScript 的 AES 對稱式資料加密工具</title>
      <link>https://blog.gtwang.org/programming/javascript-aes-symmetric-encryption-tutorial/</link>
      <pubDate>Mon, 13 Mar 2017 13:14:18 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/javascript-aes-symmetric-encryption-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 AES-JS 這個 JavaScript 的 AES 對稱式加密工具，讓有機密性的重要資料加上密碼保護。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86&#34;&gt;AES 進階加密標準（Advanced Encryption Standard）&lt;/a&gt;是一種對稱式的加密演算法，此標準替代了原先的 DES 加密演算法，目前被各界廣泛使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; 使用 Async 非同步函數開發平行化計算程式教學</title>
      <link>https://blog.gtwang.org/programming/cpp-11-async-function-parallel-computing-tutorial/</link>
      <pubDate>Thu, 09 Mar 2017 11:25:03 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/cpp-11-async-function-parallel-computing-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹 C++ 語言的 &lt;code&gt;std::async&lt;/code&gt; 非同步函數的使用方式，並提供一些入門的範例程式碼。&lt;/p&gt;
&lt;p&gt;由於&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E6%91%A9%E5%B0%94%E5%AE%9A%E5%BE%8B&#34;&gt;摩爾定律&lt;/a&gt;已經達到極限，現今的 CPU 都已經演變為多核心（multi-core）的架構，單一執行緒（single thread）的程式放在新的電腦中不見得可以跑得更快，若要發揮 CPU 完整的計算能力，就必須充分使用 CPU 的每一個核心。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言動態記憶體配置教學：malloc、free 等函數</title>
      <link>https://blog.gtwang.org/programming/c-memory-functions-malloc-free/</link>
      <pubDate>Tue, 07 Mar 2017 09:19:00 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-memory-functions-malloc-free/</guid>
      <description>&lt;p&gt;本文將介紹與 C 語言動態記憶體配置有關的各種函數及其使用方式，包含 &lt;code&gt;malloc&lt;/code&gt;、&lt;code&gt;calloc&lt;/code&gt;、&lt;code&gt;free&lt;/code&gt; 與 &lt;code&gt;realloc&lt;/code&gt; 函數。&lt;/p&gt;
&lt;p&gt;C 語言的動態記憶體配置可以讓程式在需要使用到大量的記憶體時，動態的取得更多的記憶體空間，在使用完之後也可以將不再需要使用的記憶體釋出，也就是說它可以讓程式設計者自行管理記憶體的使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言程式的記憶體配置概念教學</title>
      <link>https://blog.gtwang.org/programming/memory-layout-of-c-program/</link>
      <pubDate>Wed, 01 Mar 2017 16:49:30 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/memory-layout-of-c-program/</guid>
      <description>&lt;p&gt;本篇介紹 C 語言程式的記憶體配置概念，並以實際的範例程式碼來說明。&lt;/p&gt;
&lt;p&gt;在使用 C 語言開發比較低階的程式之前，多少都要了解一下程式實際在執行時的記憶體配置情況，以下我們以最簡單的實際範例來說明。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言 setjmp 與 longjmp 函數用法教學</title>
      <link>https://blog.gtwang.org/programming/c-setjmp-longjmp-function-tutorial/</link>
      <pubDate>Mon, 27 Feb 2017 15:35:20 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-setjmp-longjmp-function-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹 C 語言的 &lt;code&gt;setjmp&lt;/code&gt; 與 &lt;code&gt;longjmp&lt;/code&gt; 函數的用法，還有典型的使用範例。&lt;/p&gt;
&lt;p&gt;在 C 語言中的 &lt;code&gt;goto&lt;/code&gt; 只能跳到函數內部的 label 位置，若要跳到其他函數中則必須使用 &lt;code&gt;setjmp&lt;/code&gt; 與 &lt;code&gt;longjmp&lt;/code&gt;，這兩個函數在深層的程式錯誤處理上非常好用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS Linux 7 自行編譯與安裝 GCC 6 編譯器教學</title>
      <link>https://blog.gtwang.org/programming/centos-linux-7-compile-and-install-gcc-6/</link>
      <pubDate>Sat, 25 Feb 2017 08:28:35 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/centos-linux-7-compile-and-install-gcc-6/</guid>
      <description>&lt;p&gt;這裡介紹在 CentOS Linux 7 之下自己載 gcc 6 編譯器原始碼、編譯與安裝的過程。&lt;/p&gt;
&lt;p&gt;gcc 是 Linux 系統上最常被使用的編譯器，而 CentOS Linux 7.2 中的 gcc 版本比較舊：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gcc -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre class=&#34;output&#34;&gt;Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)&lt;/pre&gt;
&lt;p&gt;如果想要使用比較新的功能，就會有問題。以下是自己下載 gcc 6.3.0 原始碼來編譯與安裝的過程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; 程式語言 auto 自動變數類型語法教學與範例</title>
      <link>https://blog.gtwang.org/programming/cpp-auto-variable-tutorial/</link>
      <pubDate>Thu, 23 Feb 2017 19:58:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/cpp-auto-variable-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹 C++ 語言的 &lt;code&gt;auto&lt;/code&gt; 自動變數類型的用法，並提供幾種使用範例程式碼。&lt;/p&gt;
&lt;p&gt;在 &lt;a href=&#34;https://zh.wikipedia.org/wiki/C%2B%2B14&#34;&gt;C++14&lt;/a&gt; 標準跟前一版的 &lt;a href=&#34;https://zh.wikipedia.org/wiki/C%2B%2B11&#34;&gt;C++11&lt;/a&gt; 比較起來沒有太大的變革，大概都是改善舊的語法，讓程式設計者更方便使用，這裡我將介紹 &lt;code&gt;auto&lt;/code&gt; 這個 C++11 所新增的自動變數類型，以及在 C++14 中的變革。&lt;/p&gt;</description>
    </item>
    <item>
      <title>樹莓派 Raspberry Pi 自行編譯與安裝 GCC 6 編譯器教學</title>
      <link>https://blog.gtwang.org/iot/raspberry-pi/raspberry-pi-raspbian-compile-and-install-gcc-6/</link>
      <pubDate>Tue, 21 Feb 2017 18:42:52 +0800</pubDate>
      <guid>https://blog.gtwang.org/iot/raspberry-pi/raspberry-pi-raspbian-compile-and-install-gcc-6/</guid>
      <description>&lt;p&gt;這裡介紹在樹莓派中自行編譯與安裝 gcc 6 編譯器的步驟。&lt;/p&gt;
&lt;p&gt;目前樹莓派的 Raspbian Linux 作業系統內建的 gcc 版本為 &lt;code&gt;4.9.2&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gcc --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre class=&#34;output&#34;&gt;gcc (Raspbian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;/pre&gt;
&lt;p&gt;如果需要更新版的 gcc 編譯器，就只能自己編譯了，以下是下載 gcc 編譯器原始碼，自行編譯與安裝的過程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 gcc 自製 C/C&#43;&#43; 靜態、共享與動態載入函式庫教學</title>
      <link>https://blog.gtwang.org/programming/howto-create-library-using-gcc/</link>
      <pubDate>Fri, 03 Feb 2017 12:31:56 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/howto-create-library-using-gcc/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 &lt;code&gt;gcc&lt;/code&gt; 編譯器自己製作 C/C++ 靜態、共享與動態載入函式庫，讓程式碼可以更方便的重複使用。&lt;/p&gt;
&lt;p&gt;在開發不同的程式時，如果有一些程式碼是重複會用到的話，就可以將其製作成獨立的函式庫，不僅維護上更方便，也可以方便其他專案或是開發者使用，以下介紹以 &lt;code&gt;gcc&lt;/code&gt; 還有 &lt;code&gt;ar&lt;/code&gt; 等工具製作靜態、共享與動態載入函式庫的步驟。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C/C&#43;&#43; 程式語言的箭頭 --&gt; 運算子？</title>
      <link>https://blog.gtwang.org/programming/cpp-postfix-decrement-greater-than-operator/</link>
      <pubDate>Thu, 02 Feb 2017 14:15:01 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/cpp-postfix-decrement-greater-than-operator/</guid>
      <description>&lt;p&gt;最近看到網路論壇中有人在討論 C/C++ 程式語言有趣的箭頭 &lt;code&gt;--&amp;gt;&lt;/code&gt; 運算子，跟大家分享一下。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;這是很簡單的 C 語言 &lt;code&gt;while&lt;/code&gt; 迴圈：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// x 遞減至 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;%d &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;這個程式碼的邏輯很簡單，就是讓 &lt;code&gt;x&lt;/code&gt; 逐步遞減至 &lt;code&gt;0&lt;/code&gt;，不過 &lt;code&gt;while&lt;/code&gt; 的判斷式在乍看之下有些奇怪，正常的 C 語言似乎沒有 &lt;code&gt;x --&amp;gt; 0&lt;/code&gt; 這種箭頭的運算子，但是這個程式卻可以正常執行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 程式碼或註解加入中文教學，設定 UTF-8 編碼</title>
      <link>https://blog.gtwang.org/programming/python-chinese-comments-utf8-encoding/</link>
      <pubDate>Thu, 19 Jan 2017 21:20:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-chinese-comments-utf8-encoding/</guid>
      <description>&lt;p&gt;這裡介紹如何設定 Python 2 指令稿的檔案編碼，讓包含中文字的 Python 2 程式可以正常執行，不會產生亂碼。&lt;/p&gt;
&lt;p&gt;Python 2 在讀取指令稿並執行時，預設會將檔案以 ASCII 編碼的方式來處理，也就是說如果在 Python 2 程式碼或是註解當中有包含中文字的話，在執行時就會出錯，以下是解決 Python 2 中文編碼問題的教學。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu Linux 安裝 OpenCV 入門教學、C&#43;&#43; 與 Python 範例程式碼</title>
      <link>https://blog.gtwang.org/programming/ubuntu-linux-install-opencv-cpp-python-hello-world-tutorial/</link>
      <pubDate>Thu, 19 Jan 2017 15:12:12 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/ubuntu-linux-install-opencv-cpp-python-hello-world-tutorial/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Ubuntu Linux 中安裝 OpenCV 影像處理與電腦視覺函式庫，並且使用 C/C++ 或 Python 開發 OpenCV 的影像處理與電腦視覺應用程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-opencv-函式庫&#34;&gt;安裝 OpenCV 函式庫&lt;/h2&gt;
&lt;p&gt;在 Ubuntu Linux 我們可以使用 apt 安裝套件庫中已經編譯好的 OpenCV 函式庫：&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言 #pragma pack 預處理指令的意義、用法教學與範例程式碼</title>
      <link>https://blog.gtwang.org/programming/c-language-pragma-pack-tutorial-and-examples/</link>
      <pubDate>Wed, 18 Jan 2017 09:59:14 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-language-pragma-pack-tutorial-and-examples/</guid>
      <description>&lt;p&gt;這裡介紹 C 語言預處理指令 &lt;code&gt;#pragma pack&lt;/code&gt; 所代表的意思，並以實際範例說明其使用上的效果與不使用的差異。&lt;/p&gt;
&lt;p&gt;C 語言的 &lt;code&gt;#pragma pack&lt;/code&gt; 是用來指定 &lt;code&gt;struct&lt;/code&gt; 結構內部資料的儲存對齊方式的預處理指令，會直接影響 &lt;code&gt;struct&lt;/code&gt; 結構所使用的記憶體空間大小，以及每個內部變數的放置位置，在處理低階資料結構（例如網路封包）時時常會需要使用到這個語法，以下是使用教學與實際範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 PowerPoint 簡報加入彩色的程式碼，讓投影片更漂亮</title>
      <link>https://blog.gtwang.org/programming/how-to-add-syntax-highlighted-code-to-powerpoint/</link>
      <pubDate>Wed, 06 Apr 2016 19:53:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/how-to-add-syntax-highlighted-code-to-powerpoint/</guid>
      <description>&lt;p&gt;本篇教學將介紹如何把 PowerPoint 中呆板的原始程式碼依照語法加上各種顏色，讓投影片更漂亮，看起來更舒服。&lt;/p&gt;
&lt;p&gt;有在寫程式的人應該都知道，程式碼的排版與顏色對於閱讀而言是很重要的，如果在 PowerPoint 簡報中加入大量的程式碼時，只用簡單的複製貼上的話，黑白又單調的程式碼只會讓人厭煩，相信就算是資深的程式設計師也不會喜歡看這樣簡報。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 安裝與使用免費的 Visual Studio Code 程式開發 IDE</title>
      <link>https://blog.gtwang.org/programming/linux-install-and-use-visual-studio-code-ide/</link>
      <pubDate>Mon, 04 Apr 2016 12:25:53 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/linux-install-and-use-visual-studio-code-ide/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Linux 中安裝與使用免費的 Visual Studio Code 來開發各種程式，以及撰寫網頁。&lt;/p&gt;
&lt;p&gt;微軟免費釋出的 Visual Studio Code 除了在 Windows 與 &lt;a href=&#34;https://blog.gtwang.org/programming/mac-os-x-install-and-use-visual-studio-code-ide/&#34;&gt;Mac OS X&lt;/a&gt; 之外，連 Linux 也可以安裝與使用，現在這個年代微軟與 GNU/Linux 開放原始碼陣營的分野似乎沒像以前那樣明顯了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac OS X 安裝與使用免費的 Visual Studio Code 程式開發 IDE 環境</title>
      <link>https://blog.gtwang.org/programming/mac-os-x-install-and-use-visual-studio-code-ide/</link>
      <pubDate>Thu, 31 Mar 2016 12:06:20 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/mac-os-x-install-and-use-visual-studio-code-ide/</guid>
      <description>&lt;p&gt;這裡介紹在 Mac OS X 中如何安裝與使用免費的微軟 Visual Studio Code 來開發各種類型的程式。&lt;/p&gt;
&lt;p&gt;微軟提供的 Visual Studio Code 是一個免費的輕量級軟體開發工具，同時支援 Windows、Mac OS X 與 Linux 系統，對於有跨平台開發需求的開發者，Visual Studio Code 是一個非常方便的程式碼編輯工具。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Node.js 自動抓取網頁資料範例程式教學</title>
      <link>https://blog.gtwang.org/programming/scraping-the-web-with-nodejs/</link>
      <pubDate>Wed, 07 Oct 2015 12:06:20 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/scraping-the-web-with-nodejs/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Node.js 撰寫自動抓取網頁資料的程式，從網路上自動擷取大量的數據或資料。&lt;/p&gt;
&lt;p&gt;在網頁 API 尚未風行的年代裡，如果想要從網路上自動取得一些資料，通常都只能從一般的網頁中擷取（web scraping），縱使現在許多網路上的資料都會提供程式專用的 API，但若遇到沒有提供完整功能 API 的網站，還是只能靠這個最基本的方式處理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Input 字型集：適合程式設計師用的免費字型套件</title>
      <link>https://blog.gtwang.org/programming/input-fonts-for-programmer/</link>
      <pubDate>Thu, 24 Sep 2015 08:09:29 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/input-fonts-for-programmer/</guid>
      <description>&lt;p&gt;Input 是一套專門用於顯示程式碼的字型集，包含各種漂亮的等寬字型，對於程式設計師非常有用。&lt;/p&gt;
&lt;p&gt;許多的工程師、程式設計師甚至是理工科的研究生，時常需要撰寫大量的程式或是閱讀程式碼，若有一個漂亮的字型能讓程式碼賞心悅目，不管是在工作效率或是心情上，都會有幫助。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MongoDB 基礎入門教學：MongoDB Shell 篇</title>
      <link>https://blog.gtwang.org/programming/getting-started-with-mongodb-shell-1/</link>
      <pubDate>Mon, 27 Jul 2015 16:35:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/getting-started-with-mongodb-shell-1/</guid>
      <description>&lt;p&gt;這裡教大家如何透過 MongoDB shell（&lt;code&gt;mongo&lt;/code&gt;）來使用 MongoDB 資料庫。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mongo&lt;/code&gt; 是一個用來操作 MongoDB 的互動式 JavaScript 介面，您可以使用它來查詢（query）或更新（update）資料庫中的資料，另外也可以進行一些資料庫的管理動作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 模糊字串比對（Approximate Matching）String::Approx 模組</title>
      <link>https://blog.gtwang.org/programming/perl-approximate-matching-string-approx-module/</link>
      <pubDate>Wed, 10 Jun 2015 16:19:55 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/perl-approximate-matching-string-approx-module/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Perl 的 &lt;code&gt;String::Approx&lt;/code&gt; 模組進行模糊字串比對（approximate matching）。&lt;/p&gt;
&lt;p&gt;模糊搜尋是實務上常用的搜尋方法，當使用者輸入的關鍵字有些誤差時，透過模糊搜尋還是可以找到使用者想要找的資訊，例如 &lt;code&gt;color&lt;/code&gt; 與 &lt;code&gt;colour&lt;/code&gt; 兩個字其實是一樣的，如果使用者輸入其中一個，使用一般性的比對就找不到另外一個，或是說使用者根本把單字拼錯，那一般的搜尋就更找不到了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Maps JavaScript API 入門使用教學與範例</title>
      <link>https://blog.gtwang.org/programming/getting-started-google-maps-javascript-api/</link>
      <pubDate>Fri, 22 May 2015 16:37:36 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/getting-started-google-maps-javascript-api/</guid>
      <description>&lt;p&gt;這裡透過簡單的 Hello, World 範例，介紹 Google Maps JavaScript API 的基本使用方式。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://developers.google.com/maps/documentation/javascript/?hl=zh-tw&#34;&gt;Google Maps JavaScript API&lt;/a&gt; 是設計給網頁開發者所使使用的開發工具，您可以使用這個 API 將 Google 地圖安插在自己的網頁中，並且將自己的資料放在地圖上面呈現。&lt;/p&gt;</description>
    </item>
    <item>
      <title>從 Google Developers Console 取得開發者用的 API 金鑰</title>
      <link>https://blog.gtwang.org/programming/obtaining-api-key-from-google-developers-console/</link>
      <pubDate>Fri, 22 May 2015 08:47:50 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/obtaining-api-key-from-google-developers-console/</guid>
      <description>&lt;p&gt;這紀錄從 Google Developers Console 取得開發者用的 API 金鑰的流程。&lt;/p&gt;
&lt;p&gt;Google 提供了各式各樣的服務，幾乎每一種服務都有提供一個以上的 API 讓開發者使用，這些 API 常常與 ajax、javascript、xml 或 json 等技術結合，除了自行開發程式之外，部分的 API 還有附帶一些輔助性的服務，讓使用者透過簡單的設定即可使用這些 API 功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 C 語言讀取 AmiraMesh 檔案內容，解析 Scalar 與 Vector Fields</title>
      <link>https://blog.gtwang.org/programming/read-amiramesh-file-format-using-c/</link>
      <pubDate>Tue, 19 May 2015 14:48:52 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/read-amiramesh-file-format-using-c/</guid>
      <description>&lt;p&gt;AmiraMesh 是 &lt;a href=&#34;https://amira.zib.de/&#34;&gt;Amira&lt;/a&gt; 原生的檔案格式，學術版的 Amira 是由 &lt;a href=&#34;https://www.zib.de/&#34;&gt;ZIB&lt;/a&gt; 所發展的，商業版的則有 &lt;a href=&#34;https://www.visageimaging.com/&#34;&gt;Visage Imaging&lt;/a&gt; 與 VSG。&lt;/p&gt;
&lt;p&gt;AmiraMesh 的檔案內容可以分為檔頭（header）與資料（data）兩部分，檔頭部分都是以 ASCII 的編碼來儲存，其中包含許多的 meta 資訊，而資料的部分則有 ASCII 與二進位（binary）兩種，這裡我們示範讀取二進位資料的方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AppleScript 控制 Mac OS X 應用程式視窗位置與大小</title>
      <link>https://blog.gtwang.org/programming/mac-os-x-applescript-moving-and-resizing-windows/</link>
      <pubDate>Fri, 15 May 2015 13:48:22 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/mac-os-x-applescript-moving-and-resizing-windows/</guid>
      <description>&lt;p&gt;這裡介紹如何在 Mac OS X 中，使用 AppleScript 程式精準控制任何應用程式視窗的位置與大小。&lt;/p&gt;
&lt;p&gt;在撰寫一些教學文章時，時常需要擷取螢幕或視窗的畫面，為了讓每張截圖看起來一致，在擷取之前我們都會稍微調整一下視窗的大小，讓每個畫面統一，增加美感。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GStreamer 入門使用教學（一）：播放網路影片串流（Streaming）Hello World 程式</title>
      <link>https://blog.gtwang.org/programming/gstreamer-hello-world-streaming/</link>
      <pubDate>Thu, 05 Mar 2015 04:52:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/gstreamer-hello-world-streaming/</guid>
      <description>&lt;p&gt;這是 GStreamer 的入門使用教學，播放網路影片串流的 Hello World 程式。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;gstreamer-logo&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/programming/gstreamer-hello-world-streaming/gstreamer-logo.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://gstreamer.freedesktop.org/&#34;&gt;GStreamer&lt;/a&gt; 是 GNOME 桌面環境之下用來建立多媒體串流應用的架構（framework），可以簡化影音相關應用程式的開發流程，支援各種常用的多媒體影音格式，如 mp3、ogg、mpeg1、mpeg2、avi、quicktime 等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43;11 Lambda Expression 語法教學與範例</title>
      <link>https://blog.gtwang.org/programming/lambda-expression-in-c11/</link>
      <pubDate>Thu, 19 Feb 2015 20:19:18 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/lambda-expression-in-c11/</guid>
      <description>&lt;p&gt;C++11 標準中所新增的 lambda expression 語法，可以讓函數的定義與使用更加有彈性，程式碼看起來也更簡潔。&lt;/p&gt;
&lt;p&gt;C++11 的標準中加入了一個新的 lambda expression 語法，如果您有一陣子沒有注意最新的 C++ 標準，看到這樣的寫法可能會感覺很奇怪，以下我們將介紹 lambda expression 的使用方式與時機，並提供幾個範例作為參考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; 智慧型指標（Smart Pointer）：自動管理與回收記憶體</title>
      <link>https://blog.gtwang.org/programming/cpp-smart-pointers/</link>
      <pubDate>Tue, 17 Feb 2015 20:50:52 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/cpp-smart-pointers/</guid>
      <description>&lt;p&gt;智慧型指標是 C++ 中一個常用的設計模式，它可以讓 C++ 的程式自行管理記憶體的配置與回收，避免記憶體洩漏等問題。&lt;/p&gt;
&lt;p&gt;在 C/C++ 語言中，我們常常會使用指標（pointer）來配置或存取記憶體，一個指標變數儲存了記憶體的位址，而程式設計師就可以運用這個記憶體位址來做出各種變化，是一個非常好用的型別，甚至在某些複雜的應用上，如果沒有指標這項功能的話，可能會讓程式設計師不知道如何開發程式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Express.js 4.0 的路由（Router）功能用法教學</title>
      <link>https://blog.gtwang.org/programming/learn-to-use-the-new-router-in-expressjs-4/</link>
      <pubDate>Thu, 30 Oct 2014 19:58:41 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/learn-to-use-the-new-router-in-expressjs-4/</guid>
      <description>&lt;p&gt;Express.js 4.0 有加入一個新的 Router 功能，它就像一個迷你的應用程式，可以讓應用程式內部的路由撰寫更方便、更有彈性。&lt;/p&gt;
&lt;p&gt;Express.js 在 4.0 版中有許多新的功能，其中一項主要的功能就是 Router，以下我們介紹如何使用 Router 功能來撰寫應用程式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用程式控制 TP-LINK 路由器的 ADSL 連線，自動更換 IP 位址</title>
      <link>https://blog.gtwang.org/programming/java-tp-link-router-adsl-change-ip/</link>
      <pubDate>Mon, 22 Sep 2014 07:52:11 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/java-tp-link-router-adsl-change-ip/</guid>
      <description>&lt;p&gt;本文以 TP-LINK 的 TL-WR741ND 路由器（router）為例，示範如何使用各種程式語言與工具遠端控制路由器的 ADSL 連線（斷線並重新連線），自動更換網路的 IP 位址。&lt;/p&gt;
&lt;p&gt;現在市面上大部分的路由器（或是 IP 分享器）都有網頁管理的介面，使用者可以透過網頁登入之後，管理路由器中的各種功能，而如果要更換 ADSL 的 IP 位址，最簡單的方式就是在網頁管理介面中，手動重新連線，由於非固定制的 ADSL 每次連線都會配發不同的 IP 位址，這樣自然就可以獲得一個新的 IP 位址了，這就是一般更換 IP 位址的原理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>加速 JavaScript 執行效率的 DOM 操作技巧（降低瀏覽器回流）</title>
      <link>https://blog.gtwang.org/programming/javascript-dom-manipulation/</link>
      <pubDate>Thu, 08 May 2014 08:20:08 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/javascript-dom-manipulation/</guid>
      <description>&lt;p&gt;在開發 RIA 的過程中，會常常使用到 JavaScript 來變更網頁元素，甚至增加新的網頁元素，而不同的操作方式也會對執行效能有所影響。&lt;/p&gt;
&lt;p&gt;瀏覽器在顯示網頁時，會需要計算每一個網頁元素應該放置在哪個位置，這個計算過程就稱為&lt;a href=&#34;https://www-archive.mozilla.org/newlayout/doc/reflow.html&#34;&gt;瀏覽器回流（browser reflow）&lt;/a&gt;。當我們對 DOM 進行操作（例如更改元素的 CSS 樣式、大小等）或是改變視窗大小時，也會造成瀏覽器的回流，由於瀏覽器的流回需要耗費時間，所以如果可以盡量減少回流，就可以增加整個網頁應用程式的效率。&lt;/p&gt;</description>
    </item>
    <item>
      <title>以 RabbitMQ 實作 Publish/Subscribe 模型（Python 版本）</title>
      <link>https://blog.gtwang.org/programming/rabbitmq-publish-subscribe-pattern-python/</link>
      <pubDate>Wed, 30 Apr 2014 09:19:00 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/rabbitmq-publish-subscribe-pattern-python/</guid>
      <description>&lt;p&gt;這裡我們使用 RabbitMQ 來實作 &lt;a href=&#34;http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern&#34;&gt;publish-subscribe pattern&lt;/a&gt;，將訊息一次傳送給多個 consumers。&lt;/p&gt;
&lt;p&gt;前一個&lt;a href=&#34;https://blog.gtwang.org/programming/rabbitmq-work-queues-in-python/&#34;&gt;教學範例&lt;/a&gt;中，我們實作的工作佇列都是假設一個工作只會配送給一個 worker，現在我們要改變一下這個規則，讓一個訊息可以同時傳送給多個 consumers，而這樣的設計模式就稱為 publish/subscribe。&lt;/p&gt;</description>
    </item>
    <item>
      <title>以 RabbitMQ 實作工作佇列（Work Queues）（Python 版本）</title>
      <link>https://blog.gtwang.org/programming/rabbitmq-work-queues-in-python/</link>
      <pubDate>Wed, 16 Apr 2014 14:14:46 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/rabbitmq-work-queues-in-python/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 RabbitMQ 實作工作佇列（work queues），將耗時的工作分配至多個 works 來處理。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;rabbitmq-work-queue-1&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/programming/rabbitmq-work-queues-in-python/rabbitmq-work-queue-1.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在上一個 &lt;a href=&#34;https://blog.gtwang.org/linux/ubuntu-linux-install-rabbitmq/&#34;&gt;RabbitMQ 訊息佇列教學&lt;/a&gt;中，我們實作一個可以透過 queue 傳送與接收訊息的簡單架構，這裡我們將繼續修改之前的範例程式碼，加入工作處理的功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>讓原始碼放在自己伺服器中的各種免費的 GitHub 替代方案</title>
      <link>https://blog.gtwang.org/programming/github-local-alternatives/</link>
      <pubDate>Sun, 13 Apr 2014 14:17:41 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/github-local-alternatives/</guid>
      <description>&lt;p&gt;這裡整理了一些免費的 Github 替代方案，讓開發者可以將專案的原始碼放在自己的伺服器中，避免原始碼洩漏的風險。&lt;/p&gt;
&lt;p&gt;GitHub 對於許多的開發者而言是一項很有用的資源，它可以讓不同的程式設計師一起合作開發一項專案，也提供很好的程式碼管理與 code review 等功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>定義 JavaScript 函數（Functions）的各種方式</title>
      <link>https://blog.gtwang.org/programming/defining-javascript-functions/</link>
      <pubDate>Thu, 03 Apr 2014 15:27:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/defining-javascript-functions/</guid>
      <description>&lt;p&gt;這裡介紹各種 JavaScript 函數的定義方式，有些方式很常見，但是有一些你可能沒看過。&lt;/p&gt;
&lt;p&gt;以下是在 JavaScript 中四種建立函數的方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 四種建立函數的方法
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;declaration&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;funcExpression&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;namedFuncExpression&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;named&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fnConstructor&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;這些都是可以用來建立函數（Function）物件的方法，但是其中有些差異，以下我們將討論這些作法之間有什麼差別。&lt;/p&gt;</description>
    </item>
    <item>
      <title>網頁應用程式架構（Web Application Architectures）的發展趨勢</title>
      <link>https://blog.gtwang.org/programming/web-application-architectures/</link>
      <pubDate>Sun, 23 Mar 2014 15:30:14 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/web-application-architectures/</guid>
      <description>&lt;p&gt;這裡簡單介紹過去網頁應用程式所使用的技術與架構，以及未來發展的趨勢。&lt;/p&gt;
&lt;p&gt;網頁技術一直以來都不斷地在演進，從一開始的靜態 HTML 演變為動態的各種技術（如 PHP、ASP、Java 與 Ruby on Rails 等），不管是在網頁本身或是開發工具上都有很多革命性的突破與進步，而在最近一兩年中，在網頁技術上又出現了新的一波新的風潮，改變了整個網頁應用程式的設計型態。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 Node.js 與 Socket.IO 建立即時性（Realtime）網頁應用程式 App</title>
      <link>https://blog.gtwang.org/programming/socket-io-node-js-realtime-app/</link>
      <pubDate>Thu, 06 Mar 2014 15:33:33 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/socket-io-node-js-realtime-app/</guid>
      <description>&lt;p&gt;這裡介紹如何使用 Node.js 與 Socket.IO 建立一個即時性（realtime）的網頁應用程式 App，讓瀏覽器與伺服器之間具備雙向溝通的能力。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://socket.io/&#34;&gt;Socket.IO&lt;/a&gt; 是一個用於建立即時性通訊網頁應用程式（realtime web applications）的跨平台 JavaScript 函式庫，可以消除不同平台上傳輸方式的差異性，讓開發者更容易發展即時性的網頁應用程式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>EJS：Client 端嵌入式（Embedded）JavaScript</title>
      <link>https://blog.gtwang.org/programming/ejs-embedded-javascript/</link>
      <pubDate>Tue, 25 Feb 2014 16:05:15 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/ejs-embedded-javascript/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://ejs.co/&#34;&gt;EJS&lt;/a&gt; 是一個 client 端的 JavaScript template library，可以讓整個網頁程式碼結構更清楚、更整潔。&lt;/p&gt;
&lt;p&gt;一般的網頁程式設計師在開發網頁時，多多少少都會遇到這樣的 JavaScript 程式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;h1&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;/h1&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;ul&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;supplies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;#39;supplies/&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;supplies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#39;&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;supplies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;/ul&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;這裡為了動態產生網頁內容，所以使用 JavaScript 來產生 HTML 程式碼，在傳統上如果是要在 client 產生這樣的動態內容都是這樣做的，但這樣的缺點就是程式碼架構比較雜亂，而且這樣的程式在修改上也比較不容易。&lt;/p&gt;</description>
    </item>
    <item>
      <title>適合程式設計師編寫程式的免費等寬字型（Monospaced Font）整理</title>
      <link>https://blog.gtwang.org/programming/monospaced-font-for-programmers/</link>
      <pubDate>Sat, 22 Feb 2014 16:11:02 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/monospaced-font-for-programmers/</guid>
      <description>&lt;p&gt;這裡整理了一些容易閱讀的等寬英文字型，適合程式設計師在編寫程式時使用。&lt;/p&gt;
&lt;p&gt;一般程式設計師在撰寫程式時，通常都會需要閱讀大量的程式碼，為自己的開發環境選擇一個適合閱讀的字型，是一件很重要的事情。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Node.js 與 Java 在同時性資料處理應用程式上的差異比較</title>
      <link>https://blog.gtwang.org/programming/node-js-is-faster-than-java-for-concurrent-data-processing-operations/</link>
      <pubDate>Tue, 11 Feb 2014 07:31:12 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/node-js-is-faster-than-java-for-concurrent-data-processing-operations/</guid>
      <description>&lt;p&gt;這裡解釋為什麼 Node.js 架構在同時性資料處理應用程式上的效能會比傳統 Java 架構好的原因所在。&lt;/p&gt;
&lt;p&gt;在討論 Node.js 與 Java 架構的差異之前，我們要先了解資料處理應用程式是什麼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>LiquidFun：Google 設計給手機遊戲用的 2D 流體模擬函式庫</title>
      <link>https://blog.gtwang.org/programming/google-liquidfun-in-ubuntu-linux-and-mac-os-x/</link>
      <pubDate>Thu, 12 Dec 2013 07:08:59 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/google-liquidfun-in-ubuntu-linux-and-mac-os-x/</guid>
      <description>&lt;p&gt;Google 今天發表了一個新的 &lt;a href=&#34;https://google.github.io/liquidfun/&#34;&gt;LiquidFun&lt;/a&gt; 函式庫，可以用來在各種作業系統或手機上模擬流體的物理現象。&lt;/p&gt;
&lt;p&gt;LiquidFun 是一個以 C++ 所開發的 2D 流體模擬函式庫，它以 Box2D 為基礎，並且實作了以利子為基礎（particle-based）的流體模擬，這個函式庫可以讓手機遊戲的開發者很容易在遊戲中加入近似實際流體的效果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 程式語言相關的面試問題與解答</title>
      <link>https://blog.gtwang.org/programming/c-interview-questions/</link>
      <pubDate>Fri, 08 Nov 2013 11:34:18 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/c-interview-questions/</guid>
      <description>&lt;p&gt;這裡整理一些 C 程式語言相關的面試問題與解答，除了可以讓你增強 C 程式語言的能力，對於面試可能也有幫助。&lt;/p&gt;
&lt;h2 id=&#34;gets-函數&#34;&gt;&lt;code&gt;gets()&lt;/code&gt; 函數&lt;/h2&gt;
&lt;p&gt;下面這段程式碼中有一個問題，你能找出來嗎？&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何在程式中不使用暫存變數交換兩個變數（適用於 Java 與 C/C&#43;&#43; 等語言）</title>
      <link>https://blog.gtwang.org/programming/swap-two-numbers-without-third-temp-variable/</link>
      <pubDate>Wed, 06 Nov 2013 11:56:10 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/swap-two-numbers-without-third-temp-variable/</guid>
      <description>&lt;p&gt;這裡說明如何在程式中不使用暫存變數（temporary variable）交換兩個變數，這個問題也是面試時常問的問題。&lt;/p&gt;
&lt;p&gt;在 C/C++ 與 Java 等程式中，如果要將兩個變數所儲存的值交換，最簡單的方式就是使用一個暫存變數，例如若要將 &lt;code&gt;a&lt;/code&gt; 與 &lt;code&gt;b&lt;/code&gt; 兩個變數交換，則可使用：&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 語言中關於記憶體釋放的議題</title>
      <link>https://blog.gtwang.org/programming/memory-deallocation-issues-in-c/</link>
      <pubDate>Wed, 02 Oct 2013 07:20:09 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/memory-deallocation-issues-in-c/</guid>
      <description>&lt;p&gt;這裡討論一些在 C 語言中關於記憶體釋放的議題，包含記憶體的重複釋放、敏感性資料的處理等。&lt;/p&gt;
&lt;p&gt;在 C 語言中在使用完動態配置的記憶體時，我們通常只會記得將自己配置的記憶體釋放，避免記憶體洩漏（memory leak），然後就結束了，但是對於一些敏感性的資料而言，其實這樣還不夠。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 Eclipse 中設定 Java 函式庫（JAR）的 Source 與 Javadoc 檔案，讓寫程式時看說明更方便</title>
      <link>https://blog.gtwang.org/programming/eclipse-java-jar-source-javadoc/</link>
      <pubDate>Mon, 27 May 2013 09:58:33 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/eclipse-java-jar-source-javadoc/</guid>
      <description>&lt;p&gt;在 Eclipse 中若安裝 Jar 函式庫而沒有設定 Source 與 Javadoc，就會無法看到函式庫的說明與程式碼，這裡教大家如何在 Eclipse 中正確設定 Source 與 Javadoc 的 Jar 檔。&lt;/p&gt;
&lt;p&gt;在使用 Eclipse 撰寫 Java 程式時，我們常常會需要觀看類別的說明，正常來說在程式碼中，將滑鼠移到一個類別上就會出現類似這樣的類別說明：&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 Mac OS X 的 Eclipse 中更改 Java 註解 @author 作者資訊的預設值</title>
      <link>https://blog.gtwang.org/programming/mac-os-x-eclipse-java-author/</link>
      <pubDate>Wed, 08 May 2013 16:02:03 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/mac-os-x-eclipse-java-author/</guid>
      <description>&lt;p&gt;在使用 Eclipse 開發 Java 程式時，通常會加入 &lt;code&gt;@author&lt;/code&gt; 的標注，著名程式的作者，在 Mac OS X 的系統中，Eclipse 預設會用登入的帳號作為 &lt;code&gt;@author&lt;/code&gt; 的預設值，就像這樣：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;java_author_tag&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/programming/mac-os-x-eclipse-java-author/java_author_tag.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;這樣雖然堪用，但是通常正式的程式註解，都會放置自己的姓名與 Email，如果只是放像這樣的登入帳號是不夠的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Web Toolkit（GWT） 的 Editor 與 Driver 架構（Framework）：讓編輯 Java Bean 物件更方便</title>
      <link>https://blog.gtwang.org/programming/gwt-editor-driver-framework/</link>
      <pubDate>Wed, 27 Mar 2013 11:10:53 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/gwt-editor-driver-framework/</guid>
      <description>&lt;p&gt;這篇是將 &lt;a href=&#34;https://www.gwtproject.org/doc/latest/DevGuideUiEditors&#34;&gt;Google Web Toolkit 的官方教學文章&lt;/a&gt;直接翻譯過來的，內容不是很好閱讀，加減做個記錄。&lt;/p&gt;
&lt;p&gt;GWT 的 Editor 架構（framework）可以讓複雜的物件（object graph）中的資料對應到 Editors 上，像是經由 RPC 得到的物件，如果要將其中的資料放到使用者介面（UI）上，就很適合用這個架構。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 ITK 從 3D 的 Image 中擷取 2D 的 slice</title>
      <link>https://blog.gtwang.org/programming/itk-3d-image-2d-slice/</link>
      <pubDate>Thu, 19 Apr 2012 09:03:53 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-3d-image-2d-slice/</guid>
      <description>&lt;p&gt;示範使用 C++ 與 &lt;a href=&#34;https://www.itk.org/&#34;&gt;ITK 函式庫&lt;/a&gt;從 3D 的影像中取出其中一張 slice 的做法，主要利用 &lt;code&gt;itk::ExtractImageFilter&lt;/code&gt; 這個 filter 來達成，詳細的作法如下，首先用 &lt;code&gt;typedef&lt;/code&gt; 定義 3D 與 2D 的影像類型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;typedef&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;unsigned&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SCALAR_3D_IMAGE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;typedef&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;unsigned&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SCALAR_2D_IMAGE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接著使用 &lt;code&gt;itk::ImageFileReader&lt;/code&gt; 讀取原始的 3D 影像：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Web Toolkit（GWT）：用 Java 寫網頁</title>
      <link>https://blog.gtwang.org/programming/google-web-toolkit/</link>
      <pubDate>Sat, 03 Dec 2011 15:13:09 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/google-web-toolkit/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.gwtproject.org/&#34;&gt;Google Web Toolkit(GWT)&lt;/a&gt; 是 Google 所發展的一套網頁應用程式開發工具，他可以讓開發者使用 Java 語言開發網頁上的應用程式，編譯時會將 Java 程式碼轉換為 JavaScript，使撰寫網頁就像撰寫一般的 Java 應用程式一樣，開發者不需考慮個平台與瀏覽器之間的差異，只要維護一份 Java 程式碼，剩下的 GWT 編譯器會自動將 Java 程式碼轉換為各種平台與瀏覽器所適用的 JavaScript 程式與網頁，這樣在開發與維護上都佔有很大的優勢。&lt;/p&gt;</description>
    </item>
    <item>
      <title>StockWatcher：Google Web Toolkit(GWT) 入門 (一)</title>
      <link>https://blog.gtwang.org/programming/stockwatcher-gwt-tutorial-1/</link>
      <pubDate>Sat, 03 Dec 2011 15:08:09 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/stockwatcher-gwt-tutorial-1/</guid>
      <description>&lt;p&gt;這篇教學介紹如何使用 Eclipse 與 Google Web Tookit(GWT) 撰寫第一個程式 StockWatcher，若您不知道 什麼是 GWT，請先閱讀 &lt;a href=&#34;https://blog.gtwang.org/programming/google-web-toolkit/&#34;&gt;Google Web Toolkit(GWT)：用 Java 寫網頁&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CoffeeScript：讓撰寫 JavaScript 更簡單程式語言</title>
      <link>https://blog.gtwang.org/programming/coffeescript-javascript/</link>
      <pubDate>Mon, 19 Sep 2011 11:29:49 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/coffeescript-javascript/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://coffeescript.org/&#34;&gt;CoffeeScript&lt;/a&gt; 是一種程式語言，他的程式碼可以編譯成 JavaScript，其語言主要的目的在於讓程式撰寫者可以使用更簡單的方式撰寫 JavaScript。&lt;/p&gt;
&lt;p&gt;CoffeeScript 的原則是：「它就是 JavaScript！」，也就是說每一段 CoffeeScript 程式碼都會被編譯成對應的 JavaScript 程式碼，所有的程式在執行時都已經被轉換為 JavaScript 了，不需要在執行時多花費 interpretation 的時間，並且 CoffeeScript 亦可以與現有的 JavaScript 函式庫緊密的結合。另外，其編譯出的程式碼也會自動排版，方便閱讀，而且其程式碼的執行效率通常也比直接撰寫的 JavaScript 高。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 R 分析 Wikipedia 的搜尋情形</title>
      <link>https://blog.gtwang.org/programming/wikipedia-r-analysis/</link>
      <pubDate>Tue, 09 Aug 2011 13:28:22 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/wikipedia-r-analysis/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.wikipedia.org/&#34;&gt;Wikipedia&lt;/a&gt; 是一個全世界人都在使用的百科全書，我們可以從 Wikipedia 上面各個主題的使用狀況來分析出一些有趣的結果，例如軟體的普及程度等，另外也可以用來作為判斷軟體是否具有發展性的一個參考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zenity：在 Shell Script 中顯示圖形使用者介面</title>
      <link>https://blog.gtwang.org/programming/zenity-gui-utility/</link>
      <pubDate>Mon, 25 Jul 2011 13:43:27 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/zenity-gui-utility/</guid>
      <description>&lt;p&gt;在編寫與使用者互動的指令稿（shell script）時，傳統的作法都是在 console 中使用一般的文字模式顯示與讀取資料，這種程式在使用起來常常不如圖形使用者介面的程式直覺，而若是要加入圖形使用者介面，程式開發者必須熟悉圖形使用者介面函式庫（例如 GTK 與 Qt 等）的使用方式，並且還要加入大量的程式碼，所以通常小程式都沒有圖形使用者介面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 VTK 處理大型影像之技巧</title>
      <link>https://blog.gtwang.org/programming/vtk-tips-for-large-images/</link>
      <pubDate>Thu, 28 Apr 2011 14:54:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/vtk-tips-for-large-images/</guid>
      <description>&lt;p&gt;使用 &lt;a href=&#34;https://blog.gtwang.org/programming/vtk-visualization-toolkit/&#34;&gt;VTK&lt;/a&gt; 處理影像時，時常會需要將影像資料以視覺化的方式呈現，但在記憶體無法容納全部的影像時，若直接繪製原始的影像，會對效能造成很大的影響，甚至無法將影像正確的繪製到螢幕上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>VTK 視覺化工具函式庫（Visualization Toolkit）</title>
      <link>https://blog.gtwang.org/programming/vtk-visualization-toolkit/</link>
      <pubDate>Mon, 28 Mar 2011 14:56:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/vtk-visualization-toolkit/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.vtk.org/&#34;&gt;VTK 視覺化工具函式庫&lt;/a&gt;（The Visualization ToolKit）是一個開放原始碼的物件導向軟體系統，由 &lt;a href=&#34;https://www.kitware.com/&#34;&gt;Kitware&lt;/a&gt; 公司贊助開發，主要用於 3D 電腦繪圖、影像處理與視覺化運算等，VTK 內部是以 C++ 語言撰寫而成的，提供了各種語言的函式庫，例如：C++、Python、Tcl/Tk 與 Java。&lt;/p&gt;</description>
    </item>
    <item>
      <title>StockWatcher：Google Web Toolkit(GWT) 入門 (三)</title>
      <link>https://blog.gtwang.org/programming/stockwatcher-gwt-tutorial-3/</link>
      <pubDate>Thu, 09 Dec 2010 14:59:54 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/stockwatcher-gwt-tutorial-3/</guid>
      <description>&lt;p&gt;在 &lt;a href=&#34;https://blog.gtwang.org/programming/stockwatcher-gwt-tutorial-2/&#34;&gt;StockWatcher：Google Web Toolkit(GWT) 入門 (二)&lt;/a&gt; 中已經將所有的使用者介面元件建立好了，接下來要建立元件的 event，讓這些原件可以有一些動作。&lt;/p&gt;
&lt;h2 id=&#34;處理客戶端的-event&#34;&gt;處理客戶端的 Event&lt;/h2&gt;
&lt;h3 id=&#34;加入-event-handler&#34;&gt;加入 Event Handler&lt;/h3&gt;
&lt;p&gt;在 GWT 中所使用的 event handler interface model 與其他的語言類似，要處理 Add 與 Remove 按鈕的 event，可以使用 ClickHandler，這裡我們使用匿名的類別來實做 ClickHandler，另外加入 KeyPressHandler，在按下 Enter 鍵時可以送出輸入的內容。&lt;/p&gt;</description>
    </item>
    <item>
      <title>StockWatcher：Google Web Toolkit(GWT) 入門 (二)</title>
      <link>https://blog.gtwang.org/programming/stockwatcher-gwt-tutorial-2/</link>
      <pubDate>Mon, 06 Dec 2010 15:04:21 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/stockwatcher-gwt-tutorial-2/</guid>
      <description>&lt;p&gt;在 &lt;a href=&#34;https://blog.gtwang.org/programming/stockwatcher-gwt-tutorial-1/&#34; title=&#34;StockWatcher：Google Web Toolkit(GWT) 入門 (一)&#34;&gt;StockWatcher &amp;ndash; Google Web Toolkit(GWT) 入門 (一)&lt;/a&gt; 中我們已經建立了基本的 StockWatcher 專案，接下來要開始建立使用者介面。&lt;/p&gt;
&lt;h1 id=&#34;選取-gwt-widgets-實做使用者介面&#34;&gt;選取 GWT widgets 實做使用者介面&lt;/h1&gt;
&lt;p&gt;首先瀏覽 &lt;a href=&#34;https://www.gwtproject.org/doc/latest/RefWidgetGallery.html&#34;&gt;Widget Gallery&lt;/a&gt; 選擇網頁中所需要的使用者介面元件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>RGL：R 的 OpenGL 套件</title>
      <link>https://blog.gtwang.org/programming/rgl-r-opengl/</link>
      <pubDate>Thu, 20 Nov 2008 06:56:08 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/rgl-r-opengl/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://cran.r-project.org/web/packages/rgl/index.html&#34;&gt;RGL&lt;/a&gt; 是一套 &lt;a href=&#34;https://www.r-project.org/&#34;&gt;R&lt;/a&gt; 的套件，它可以讓使用者在 R 的環境下畫出高品質的 OpenGL 3D 圖形，更可以讓使用者透過滑鼠旋轉或放大圖形，即時的看到圖形的每個角度，用起來不輸 Matlab，對於有 3D 資料分析需求的使用者來說，相當方便！只是對一般使用者而言，想要使用他必須先熟悉 R 的語法，R 是一個開放原始碼的統計軟體，跟 S-plus 非常相似，但沒學過的人恐怕還是要花上一小段時間。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
