課堂大綱
一開始提到自然語言處理(NLP,Natural Language Processing),處理的範疇很廣泛,包含了古文、白話文、論文、現今流行的用語,都是 AI 需要處理分析的。

而目前的機器已經知道詞彙在語意空間中的位置,舉了一個實例,跟好棒語意相近的詞彙。有超讚、真不錯、真好、好有趣、好感動。

但像好棒棒,機器已經能分辨是另一個詞彙,跟其類似的有不就好棒棒、阿不就好棒、好清高、好高尚、不就好棒。

接下來提到監督式學習,利用鳥類鳴叫聲的分辨為例,給予機器不同鳥類的叫聲,告訴機器這些資料集是哪一種鳥,機器會自動找出關連,就能夠進行辨識的學習。然後提到測試階段,去驗證機器學習的成果。

再來進入聊天機器人的主題,提到聊天機器人大致可分為「任務導向聊天機器人」、「閒聊式聊天機器人」、「閱讀理解聊天機器人」三種。

任務導向聊天機器人的運作,是將語音轉化為文字,然後再進行文字的理解,將其從非結構化資料轉為結構化資料。在進行對話管理時,將剛剛的結構化資料,帶入資料庫或知識庫查詢,最後給予回應,然後作回應的生成(轉換為口語回應)。

透過查詢電影的範例,來說明任務導向聊天機器人的運作細節。其中在語言理解區塊,會有「意圖分類」(Intent Detection)跟「槽填充」(Slot Filling)兩種模式。意圖分類是確認使用者需要哪種服務,然後透過槽填充來找出用戶所需的資訊。

在對話管理部分,有進行「槽填充」的細部說明,包含確認使用者的問題,以及模版式生成法。

閒聊式聊天機器人,舉了 Mitsuku 機器人為例。這部份介紹了 Mitsuku 的背景與豐功偉業,然後提到這樣的機器人,其實是採用雞尾酒式的技術,結合了AIML推論、記憶力、基於知識本體的推理能力、監督式學習等領域的技術,才能做到一個接近真人回應的聊天機器人。

中間有利用之前對話的範例,來說明 Mitsuku 可以做到哪些回應,以及哪些回應有點牛頭不對馬嘴。而 Mitsuku 厲害的地方,在於它可以記住對話人的一些背景資料。例如知道蔡宗翰教授來自臺灣。

另外舉了蔡教授自己閒時開發的川普對話機器人,其訓練的資料集來自川普的訪談、電視辯論、以及影集紙牌屋的對話文本。其作業方式是用 LSTM 的 Seq2Seq 模型,以一來一回的語句資料進行循環神經網路的訓練。但是沒有訓練過的資料,機器便無法回答。

閱讀理解聊天機器人,其特性有點像是在做閱讀測驗,這類機器人可以作為資訊輔助的工具。其使用的模型是 Google 推出的 BERT。訓練時需要資料集,英文的資料可以採用 Stanford 推出的 Question Answering Dataset - SQuAD

中文部分可以用科技部的「與AI對話競賽資料集」與台達研究院的「DRCD」。提到訓練與測試的資料格式,都是文章(需標出答案在哪裡)、問題,接著說明閱讀理解聊天機器人的系統架構。

彙整三種聊天機器人,並提到他們的應用,以及現在有雙模態(語言視覺識別)與三模態(語言視覺情緒)的聊天機器人。應用面部分有南加州大學推出的心理諮商的 AI 聊天機器人(同質性的還有 Standford 大學的 Woebot );以及 NTU IOX center推出的組裝教學的任務輔助機器人;北京清華大學的九歌NVIDIA 天氣聊天機器人 Misty

最後則介紹了 AI CUP,鼓勵大家參與人工智慧競賽。並在課程後回答聽眾的提問。

心得
在久大工作的期間(2007.11)我們單位曾開發了簡單的聊天機器人服務,是基植於 MSN 上的服務。當時的服務很簡單,是給予了一個對話指令,使用者輸入相關指令後,可以查詢到他想詢問的答案。

在這之後,目前較長使用的有 Line 上面的闢謠機器人「美玉姨」,查國字的「國語小幫手」。然後就是 Apple 家的 SIRI 服務,我自己有兩個 Homepod,也安裝了 HomeKit 套件,可以透過語音控制家裡的冷氣、風扇、電視、電燈、電源開關等。我們家兩小也常跟 SIRI 對話,最常用的是設定計時器與鬧鐘,還有閒聊。我自己較常用的是氣象與地圖查詢(CarPlay)。

所以原本所知的聊天機器人,就是上述這些,以及工作上有用過的公子小白機器人,與犀動的小犀管家

透過這次的演講,讓我更清楚聊天機器人的種類,以及其背後所使用的技術,可說是收益良多。最重要的是三模態的應用,與其所舉的案例,讓人無法小瞧聊天機器人的發展。舉凡像是測謊、消費輔助、醫療輔助、急救輔助等,其實未來都可以導入在生活中,提供我們許多的輔助。所以在收穫上,應該就是這個技術可以應用的層面,多了許多的觸發。

蔡宗翰教授的演講,可以說是結構鮮明,深入淺出,獲益良多。回答提問時,也花了不少時間,雖然部分問題淺顯的帶過,但都有回答到點上。很值得花時間聆聽。

速記
語言處理

知道詞語在語句中的位置

監督式學習

任務導向聊天機器人

語音轉文字

語音理解(非結構化轉結構化資料)

對話管理

回應生成(口語回應)

語言理解

意圖分類
槽填充

對話管理

狀態追蹤(找一部四星級以上的美國電影。2017年的)

(起點、發行地、評等、年份、終點)

決定回應動作(通知—答案、請求—槽、確認—候選槽值)信心值過低,AI會再次確認。

模板式生成法(語意框架、模板、生成口語回應)

閒聊式聊天機器人

Mitsuku機器人(Loebner五次圖靈獎)

圖靈測試

使用以下的技術(雞尾酒式技術結合)

啟發式模板

AIML推論(推論引擎框架)

記憶力

基於知識本體的推理能力

監督式學習

川普機器人

川普專訪

川普辯論

紙牌屋影集對話

LSTM的Seq2Seq模型(一來一回的語句資料)

循環神經網路

沒訓練過資訊無法回答

閱讀理解聊天機器人

閱讀理解任務

BERT(Google推出)

SQuAD資料集(英文)

與AI對話競賽資料集(科技部)

DRCD(台達研究院-中文資料集)

訓練資料格式

文章

問題

測試資料格式

文章

問題

深度語言理解模型

閱讀理解聊天機器人系統架構

訓練資料集

BERT-SQuAD訓練

模型檔案

BERT-SQuAD測試

語言視覺識別雙模聊天機器人

表情與語音

影像YOLO模型

BERT+YMCL 88%

NTU IoX Center

語言視覺情緒三模態聊天機器人

臉部情緒辨識

南加大AI心理治療師

NVIDIA聊天氣機器人

清華大學九歌

https://m.facebook.com/pages/category/School/AI%E7%95%8C%E6%9D%8E%E7%99%BD-333190044021877/

詠人工智慧-類神經
人工智慧正方興
事事皆求類審經
福洛天赦拍拓曲
開發利器必先明
蔡宗翰

AI CUP 2020

https://vocus.cc/AI_LiBai/home

https://medium.com/@prof.r.tsai

2020-06-09  -  duncan Email  -  1382  -  資訊工程, Furl網摘 - 讀者回應

你,認識 AI 嗎? - 深入淺出介紹 AI 原理及發展

課堂大綱
從圖靈的模仿遊戲說起,讓人類去判斷另一端的是人還是電腦,以及電腦是否具有思考能力的可能性?

簡述 Artificial Intelligence(人工智慧)一詞的由來,源於 John McCarthy 在 1956/8/31 舉辦的 Dartmouth workshop(達特矛斯會議),當時首次出現 AI,之後也以 AI 為名。

接著提到了 AI 的三波發展史,第一波 1956-1976,以邏輯推演為主(導入了數學處理問題),像是迷宮、棋類主題,都可以透過這些演算想辦法處理,但是生活類的問題,卻無法妥善處理,因此迎來首次寒冬。

第二波發展 1976-2006,此時著重於知識(專家系統),透過知識的資料累積,解決了不少問題。但是他還是無法處理過於複雜,以及常識性的問題。這讓人工智慧的發展,迎來第二次寒冬。

第三波發展 2006-至今,延續第二波發展就已經嶄露頭角的神經元網絡,第三波增加了大數據資料,以及機器學習。這個方式是讓機器學習取得一筆大量資料,告訴機器這是什麼東西,由機器去發現特徵。所以在課堂上簡述了 Convolution Neural Network(CNN,卷積神經網路模型的概念),同時也用流言終結者的片段,比較了 CPU 跟 GPU 運算的差異。

人工智慧的領域涵蓋了機器學習,而機器學習的領域,又涵蓋了深度學習。這是 AI、ML、DL 三者間的關係。

機器學習有幾種類別,Supervised(監督式)、Unsupervised(非監督式)、Reinforcement(強化式)。

監督式:資料被標註(Lable),然後告訴電腦相對應的數值,預測結果跟真實結果的差距越少,表示預測的水平越高。這時用 Gradient descent(梯度下降法)來解釋,如何透過這個演算法來取得最佳化的參數。

另外進階舉了一個 Binary classification(二元分類)的範例(判斷資料正或負),提到在三維狀態下,如何找出那個模型,來區別資料數正或負。

提到 XOR problem(互斥或問題),XOR 只有在 OR 的狀態下為 True(真),AND 狀態下為 False(否)。初期的 ANN(Artificial neural network,人工神經網路)無法處理多層神經網路訓練,會導致互斥或無法被有效分割。但多層處理出現後,兩個 Perceptrons(感知器)就能解決這個問題。(利用多層疊加來解決複雜資料的處理)

現今有第三波發展的原因,在於資料集夠大,以及運算處理的能力加強了很多。這讓 Neural Network(類神經網路)的處理結果,優於早先的機器學習方式。

這邊用了一個流言終結者的影片,說明 CPU 與 GPU 處理能力的差異,同時也提到了 Google 提出的 TPU(張量處理器),實際上 TPU 的效能與處理速度,較 GPU 跟 CPU 快了 15-30 倍。

再來提到了 CNN(Convolution Neural Network,卷積神經網路)的技術,這是一個影像識別很強大的深度學習模型。這個方式是將圖片經過各兩次的 Convolution、Pooling、Fully Connected,這就是 CNN 的架構。

實例是用美國 LeCun 手寫郵遞區號的辨識來做為案例(MNIST database),當時結果可以發現用 CNN 的方式錯誤率最低,不過傳統的 SVM 方式,表現也很不錯。

最後提到李飛飛,她啟動了 ImageNet 項目,2012 年的 ImageNet 挑戰賽,多倫多大學的 Geoffrey Hinton、Ilya Sutskever、Alex Krizhevsky 提出了一種 CNN 架構:AlexNet,奪得了冠軍。

課堂結束前,介紹了三本書籍,以及幾個線上課程。其中最有名的當數台灣大學李宏毅教授的機器學習課程

心得
在聽課的當下,不太容易建立起架構,需要在課堂結束後仔細整理,才能瞭解這堂課分享的 AI 脈絡。所以對於上課的學員來說,努力傾聽跟事後的複習是很重要的。而對於授課講師來說,若能利用一些大綱跟脈絡,來幫學員建立起架構,課程內容會更生動一點。

另外舉例的部份,後半段手寫郵遞區號跟圖形辨識的部份,我認為可以多增加一點。就是利用應用的實力,來帶入處理的方式與技術演變。這對於非技術背景的人來說,會更好進入狀況。雖然我自己是資工背景,但數學不是特別好,能聽懂多數內容,是因為前陣子已經被許多線上課程蹂躪過了。

利用數學公式來表達,是必不開的方法。但裡面有些專有名詞,若沒有先做些註記與說明,對數學基礎不好的人,聽到這邊應該是一頭霧水。這部份的建議,在課後問卷裡有提出,已經建議給講師。

對於沒接觸過,完全不懂的東西,要學習勢必會經過所謂的撞牆期。我的方法有點笨,就是多聽、多查、多整理、多吸收,累積久了,似乎也就懂了那一點點東西。而隨著實作增加,掌握度就會越來越好。所謂一步登天,是沒這回事的。

速記
從圖靈(Alan Turing)的文章切入介紹 Can Machines Think?

模仿遊戲

John Searle - Chinese room

strong AI & weak AI

John McCarthy

Dartmouth workshop - Artificial Intelligence

3 Waves of AI

1956-1976
1976-2006 專家系統面臨低谷(無法處理複雜或常識問題)
2006-now

AI 包含 ML(Machine Learning) 包含 DL(Deep Learning)

Machine Learing type

Supervised(監督式)從x找y
Unsupervised(非監督式)只有x沒有y,學到資料本身的特徵
Reinforcement(強化式)從環境當中學習
gradient descent

binary classification

梯度下降

XOR problem

Big Data 的影響,讓類神經效果(neural network)提昇

CPU GPU TPU

Convolution Neural Network 卷積神經網路

ML 與 DL 的差異

郵遞區號辨識案例

SVM CNN

李飛飛(CNN圖型辨識)

李宏毅-機器學習課程

2020-06-09  -  duncan Email  -  1278  -  資訊工程 - 讀者回應

Digital Cloud OnBoard: 大數據 & 機器學習

心得
模組 1 : Google Cloud Platform 介紹
第一節主要是在介紹 GCP 所提供的服務,包含 Google 在基礎建設上的強處,以及為何 GCP 可以提供可靠的雲端服務。然後本次技術分享課程,主要是針對資料工程的工作項目,後續幾節會說明機器學習的技術跟服務。

如果從沒使用過 GCP 服務的人,或是想要將 Local 端的伺服器服務,轉移到雲端服務的話,可以聽一下這一節的簡單說明。至於已經開始使用 GCP 的人來說,可以聽聽他裡面提到的案例,以及資料與運算分離的方式,尤其是純資料儲存可分為經常存取跟很久或很少存取的,在預算上有不少差異(少用比較便宜)。

另外對大公司的開發團隊來說,它有三層架構連接底層的運算服務跟資源,透過 Projects、Folder、Organization 三層,可以進行權限與工作管理上的劃分。這部份沒聽這堂課時,我只知道有 Projects,不知道還有 Folder 跟 Organization 的方式。

另外有提到將檔案上傳到 GCP 的方式,之前有去聽另外一個研討會,那場就有完整說明如何將本地端主機,轉移到雲端伺服器的作業流程。當然 Google 的說明頁面也會有,只是聽過別人介紹再看說明,理解跟實作會快很多。

另外雲端伺服器的好處,在於拓展性高、可用度高,企業如果使用傳統方式架設服務,勢必一開始就得投入主機、網路設備的硬體資源,而且還需要一個專職的管理者。但云端主機開啟一台虛擬機器,就一分鐘的事。在需要時,可以續速拓展,不需要時馬上關閉,以使用量來計費,這個彈性就不是自己管理主機所能處理的。

十年前,雲端主機的服務還不是那麼普及時,台灣的新創跟美國新創最大差異,就是在IT資源上,美國的環境便利很多,所以也才能造就那麼多網路服務的公司出現。目前雲端服務已經有多種選擇,同時有多加公司提供這類服務,但實際上導入雲端的企業,所佔比例也還不是太高就是。

另外也有提到機器學習應用的樣貌,這跟一般人的理解會有一些落差。花點時間看一下,還蠻值得的。

模組 2 : 推薦 (Recommendations) 與預測 (Predictions) 模型
第二節就正式進入資料分析的實作說明,他有提到最早的大數據框架(2006),是採用 Yahoo 所推出的 Hadoop 框架、MapReduce、Hive、Hbase,簡單說就是分散式運算的框架。

但之後因為移動式設備普及,資料量太大,加上需要即時處理跟運算,Hadoop 在即時分派這些運算工作的效率不佳,另一個 Apache Spark 在處理資料分析的工作,是在記憶體中以實時方式完成分析,所以它的處理效能是 MapReduce 的十倍。Google 透過 Spark 的技術,將資料跟運算分離,所以更能有效的處理即時分析的作業。

GCP 提供了雲端上的 Dataproc 的功能,結合了 Hadoop 跟 Spark,雲端的特性是新增任何資源都很快速,所以工作的組成就有很高的彈性。影片中有描述使用情境跟彈性架構,這部份值得觀看一下,會比較瞭解善用雲端服務的特性,來節省企業的主機架構與運算成本。

另外若本地端已經有 Hadoop 的環境跟作業項目,也可以快速移轉到雲端,基本上是相容的,只需要修改部分程式碼,就可以改在雲端上運作。

中間有提到一部分 Cloud SQL 的介紹,也有提到資料的正規化跟反正規劃的設計。原則上一般的關聯式資料庫,為了節省資料庫資源與空間,都採正規化設計方式。且關聯式資料庫一般都會建立索引,來提升資料查詢的效率。

但以大數據來說,資料本身無結構性,因此通常會採用 NoSQL,它的查詢跟輸出本身就是一致的,所以會使用非正規化的方式來設計,同時在搜尋時會透過機器拓展來增加搜尋效能。我們單位資料工程的面試題目,有一題就是詢問正規化跟非正規化的差異是什麼?以及正規化有哪些規則?(不要有重複群組、去除相依性、刪除不依賴索引的欄位、BCNF)

後半段直接講到 BigQuery 所提供的功能,講解時是使用推薦系統為範例,透過實機操作來做說明。這部份我覺得最重要的就是如何操作的過程,畢竟 GCP 上面服務很多,每個服務又有好多操作項目,自己摸索跟看文件都要花上很多時間。但實際看案例操作,可以依樣畫葫蘆,雖然服務跟功能不同,但系統面大抵上是接近的。

裡面也提到許多機器學習的概念,很可惜 Google 的慣例是不提供簡報,不然有簡報複習起來,會比看影片節省很多時間。

Day - 1 總結
講師 Browny 說有問卷跟小考,但是都沒有看到捏。有填問卷會送精美小禮物,我希望是送 T-Shirt 或 Polo 衫,感覺好像想太多......

明天還有課,就繼續聽下去。

模組3:即時儀表板
本節課程一開始以物聯網的例子當開頭,提到串流資料不斷湧進時,GCP 透過 Pub/Sub 來接收 Topic。然後利用 Dataflow 來處理串流數據的分析工作。這部份的技術,主要是處理大量即時的資料,進行分析代管的服務。所以數據資料處理時,系統會自動調度資源,自動處理擴容,將延遲的時間、處理時間、以及處理成本降到最低。它是利用Apache Beam SDK,這是一個開源的編程模型,用來定義資料處理的管道。

在利用 Apache Beam、Dataflow 的服務時,還可以利用 TensorFlow 來訓練機器學習的模型,並產生預測的結果。

後面一小部分,提到了 Google Data Studio,簡單說明了透過 Data Studio 將分析數據用視覺化的方式來呈現,但我覺得這部份只有簡單帶過,有點可惜。Data Studio 提供多種資料串接方式,但資料呈現到資訊圖表,有諸多限制,所以我想知道是功能本身上的限制,還是我知道的方式不夠多,但這部份沒提太多。

模組4:利用機器學習來獲得深度見解
這一節裡一開始提到哪些項目,適合來做機器學習的專案:包含人工不易判斷的事物、或者需要判斷的數量遠超過人工處理的能力、以及可以事先透過機器學習來篩選的項目,以上這些都適合導入機器學習的技術。舉出的範例包含了判斷一張空拍照片,裡面出現的白色塊狀是雲?還是積雪?以及一艘貨輪上面貨櫃的數量預估;跟醫療影像透過 AI 先篩選掉不需人工判斷的資料。

接著舉了 Quick Draw 與 AutoDraw 兩個範例,前者是給使用者一個題目,只有二十秒的時間來畫出那個主題,邊下筆的同時,人工智慧就會邊分析你畫的內容,成功的時候就會跳下一題。後者是使用者畫一個圖形,人工智慧會猜測你畫的內容,給你一個圖示。這兩個案例都是機器學習與人工智慧系統的範本。同時也說明這兩個案例處理的方式,簡單來說都需要將非結構性的資料轉為向量的數位資料來處理跟分析。

後半段提到貓的範例,說明機器學習的運作原理,並非是我們給予某個東西的特徵來去學習,而是我們給了大量的資料,告訴機器這是什麼,由機器學習自己去找出關連的因素,這才是機器學習真正的運作模式。所以給了機器學習一堆貓跟手繪貓的資料,告訴它這是貓。那麼有一張一般人辨識不出的貓的局部照片或手繪照片,機器學習一樣可以辨識出來。但我們可能無法得知,機器學習是透過哪個特徵認為它是貓。

這方面也顛覆了我的理解,雖然看了機器學習也有一年以上的時間,但基本的運作原理卻不是很清楚,透過這次說明更清楚知道它運作跟學習的方式。

最後有舉一個雲朵圖形辨識的實例,是透過 AutoML Vision 的功能。GCP 上已經提供了數個機器學習的模組,所以在先期的研究,可以利用 AutoML 的模組來進行,它的優點是只有少量資料還是可以進行機器學習,並給予一個結果。

從這個案例裡,我想到的是,現在的車牌辨識功能,就能夠利用 AutoML 的模組來完成。因為車牌的號碼是固定字型,如果是停車場所需的車牌辨識,在取得每台車的車牌照片時,角度跟方向差異是不大的。因此只要提供一定數量的車牌照片,就能夠訓練出一個系統能有效辨識車牌。同樣簡易的人臉辨識,例如手機的人臉跟機台的人臉辨識,也都可以利用類似的技術來訓練機器做識別。

總結
這邊簡單的歸納了第一天跟第二天的內容,提到 GCP 將運算跟儲存分離,仰賴的完整的底層服務架構。然後進行資料工程作業時,準備資料與處理資料才是最耗時間的部份,GCP 也大力去處理其他區塊所需的資源,讓開發者可以專注在前述的作業裡。

最後提到 GCP 提供了三種層級的AI:pre-built AI(使用已經建立的 Model 還可以透過 API 組合)、Custom Models(AutoML)、TensorFlow(自建ML)。

速記
Notification

Pub/Sub

pipelines

https://technews.tw/2020/03/12/google-launches-cloud-ai-platform-pipelines-in-beta-to-simplify-machine-learning-development/

https://blog.gcp.expert/gcs-notification-tutorial-3-cloud-pub-sub/

人不易判斷

判斷的量太大

醫療相關可以做篩選與過濾

https://quickdraw.withgoogle.com/

https://www.autodraw.com/

機器學習是提供資料讓其學習,而非我們告訴其特徵去過濾

給予一堆貓的照片,告訴他這是貓

而不是告訴機器,貓的特性是什麼

非結構性資料轉換為向量的數位資料

autoML試跑(不需要大資料)

AutoML Vision

https://blog.gcp.expert/cloud-automl-vision-quick-start/

運算與儲存分離,仰賴底層服務架構完整

準備資料、處理資料才是最耗時間的部份

三種方式訓練模型

瞭解問題選擇試用的工具來作業

2020-06-09  -  duncan Email  -  709  -  資訊工程 - 讀者回應

之前主機還在 Bluehost 上時,雖然申請了 Let's Encrypt 的憑證,但始終無法順利的將憑證掛上,前陣子將主機搬到 Google Cloud Platform 之後,在同事的推薦下改用 Certbot 來部署,終於順利完成,將主要的重點筆記一下。

參考 Cerbot 上 CentOS 6 的教學,可以選定 Web 服務器跟作業系統,我使用的是 Apache 跟 CentOS 6。

部署指令很簡單:

step 1. 抓取安裝檔

wget https://dl.eff.org/certbot-auto

step 2. 設定權限讓 certbot-auto 可執行

chmod a+x certbot-auto

step 3. 進行 certbot-auto 的安裝,安裝時若所有網域都要憑證,可以用空白鍵,或是選某個數字對單一網域安裝憑證

sudo ./certbot-auto --apache

step 4. 安裝完畢後,憑證的路徑會放在 /etc/letsencrypt/live/xxx.xxx.xxx.xxx/的路徑下
會有四個檔案(cert.pem、privkey.pem、chain.pemvi、fullchain.pem)
若無權限進入資料夾,可以先下 sudo 指令(sudo 無法直接搭配 cd 指令):

sudo -i
cd /etc/letsencrypt/live/xxx.xxx.xxx.xxx/

step 5. 若有使用到 Virtual Host,需手動設定 Config 檔
先設定 ssl.conf(CentOS 6的路徑是 /etc/httpd/conf.d/ssl.conf)
確認下列資訊有設定在檔案中

LoadModule ssl_module modules/mod_ssl.so
#
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
#
NameVirtualHost *:443
Listen 443

step 6. 設定 httpd-vhosts.conf 可以設定多組網域,[]需自行改為<>

[virtualhost *:443]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/xxx.xxx.xxx/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxx.xxx.xxx/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/xxx.xxx.xxx/chain.pemvi
SSLCACertificateFile /etc/letsencrypt/live/xxx.xxx.xxx/fullchain.pem
ServerName xxx.xxx.xxx
ServerAlias xxx.xxx.xxx
ServerAdmin xxx@xxx.xxx.xxx
DocumentRoot "/xxxx/xxx/xxx/xxx"
Options FollowSymLinks Indexes AllowOverride All Order Allow,Deny Allow from all
AddType application/x-httpd-php .php3 .php
DirectoryIndex index.html index.htm index.php index.asp index.aspx index.jsp index.jspa index.shtml index.shtm
[/virtualhost]

step 7. 重啟 Apache 服務

apachectl restart

若重啟後報錯找不到憑證,可以到憑證位置用 chmod 修改憑證權限
例:

chmod 755 cert.pem
chmod 755 privkey.pem
chmod 755 chain.pem
chmod 755 fullchain.pem

step 8. 利用 .htaccess 來將網站從 http 改寫到 https,.htaccess 檔案要放在根路徑下

Options -Indexes


RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

order allow,deny allow from all

step 9. 用 Chrome 開啟網址,確認網址顯示是否安全,若為否,用 Chrome 的「檢查」(呼叫開發人員工具),查看是否有混和內容
改用 https 連線後,頁面載入的內容,都必須改為 https 的連線方式來取得,像圖檔、js、css等都是,透過工具可以看到報錯內容,修正後即會顯示安全

step 10. 用 crontab 來自動更新憑證,Let's Encrypt 憑證每三個月會失效,需更新
加入下列這一行,設定每個月1號跟15號的凌晨三點,自動檢查憑證(編輯這個檔案通常是針對系統的例行性任務)

vi /etc/crontab
00 3 1,15 * *  root ./certbot-auto renew

若是要使用 crontab -e 的指令也可以(通常這個指令是針對使用者的例行性任務),兩者選其一做就行

crontab -e
00 3 1,15 * *  root ./certbot-auto renew

以上為使用 Certbot 自動部署 Let's Encrypt 憑證,在 GCP 的 CentOS 6的 Apache服務(含憑證自動展延)的筆記。

2017-08-12  -  duncan Email  -  4644  -  資訊工程 - 讀者回應

Toontastic 3D on iTunes App Store

Toontastic 3D on Google Play Store

我在朋友的 Facebook 上,看到了電腦玩物所發表這篇「讓孩子輕鬆把想像變成卡通動畫 Google Toontastic 3D 免費下載 」,Google 所製作的這個 App 很有趣,透過這款 App,我們可以很快速的選擇故事的情節模式,例如有三個故事轉折的,也有五個故事轉折的情結可以選擇。

接著進入每一個情結片段,可以選擇場景跟人物,除了 App 內建的場景跟人物可以使用外,也可以自行繪製,這款 App 還會把手繪的人物,轉成簡易的 3D 模型。

選擇好場景與人物後,就可以錄製該情結片段的故事,同時在錄音之後,還可以選擇該情結片段的背景音樂。就這樣依序把三個場景或五個場景的故事錄製完畢,就能串起一個完整的故事,同時也能在上面加上標題。詳細的操作跟介紹就不贅述,請參考上面電腦玩物的文章介紹。

我下載完 App 之後,先是簡易的操作了一下,但是我發現最大的難處在於我無法輕易的就說出故事。嘗試了一下操作模式之後,我就找了空檔,跟女兒(彤彤)示範了一下這個 App 的使用方式,沒想到她操作的比我還熟練,不知該說是她有天份?還是這個 App 的操作介面設計的太好?

之後妹妹(霏霏)也加入錄製行列,就這樣兩小在這個週末假期,迅速的做出了幾個自編自導的卡通,同時還給卡通命名跟寫上自己的外號(話說姊姊的花紫跟妹妹的星星,這兩個外號是怎麼來的啊?),這也太強了吧!老大彤彤還打了一段字,分享到我的 Facebook 上。我將這些影片上傳到 Youtube,還將它做成了一個影片播放清單,如果有人想聽故事的,可以到這邊觀看,應該會不定時更新。

彤:我是彤,花紫是我在學校的外號,「小美少女的旅行」是一個很有趣的故事,也是我自己做的故事,雖然短短的幾分鐘而已,但是很有創意,要看一看哦,你會覺得很有創意嗎?

=> 深入閱讀...

2017-06-19  -  duncan Email  -  2571  -  資訊工程 - 讀者回應

:: 下一頁 >>