:::
顯示具有 Programming/Java 標籤的文章。 顯示所有文章

2020年臺灣工程師喜愛的程式語言與資料庫竟然跟全球流行不一樣 / The Popular Script Language and Database Technology in Taiwan in 2020

2020年臺灣工程師喜愛的程式語言與資料庫竟然跟全球流行不一樣 / The Popular Script Language and Database Technology in Taiwan in 2020

23-2020_ENG.png

Pui Pui大家午安啊,我是在寒冷又溼漉漉的地方裡,期望下雨降在集水區的布丁。在這個寒冷的天氣裡,今天就跟大家聊聊臺灣工程師最受歡迎的程式語言跟資料庫技術吧!

全世界工程師最後的救星Stack Overflow在2020年二月發佈了2020年開發者調查結果。統計5萬多位工程師最喜歡的程式語言中,JavaScript以67.7%名列第一。年初時Easy Website的站長網站哥以這份開發者調查資料為基礎,將臺灣開發者所流行的程式語言與資料庫繪製成統計圖表,結果竟然跟世界潮流不太一樣。至於差異在哪裡,就讓我們看下去吧。

(more...)

線上檔案語音轉文字字幕:Web Speech to Text / Speech recognition with Google Chrome: Web Speech to Text

線上檔案語音轉文字字幕:Web Speech to Text / Speech recognition with Google Chrome: Web Speech to Text

語音轉文字的技術已經存在多年,現在這個技術已經普遍到大家手上的智慧型手機都內建了語音辨識輸入系統。除了從麥克風辨識語音之外,我們也很常需要從錄下來的影片、聲音檔中辨識文字。意外的是,這樣的技術其實不需要仰賴什麼雲端科技技術,也不用付出高昂的成本,只需要用你現在瀏覽網頁的Google Chrome就可以開始語音轉文字了。

我參考了陳鍾誠所撰寫的「Google 的語音辨識 API 之使用」,利用瀏覽器內建的Web Speech API開發成網頁應用程式「Web Speech to Text」,搭配Virtual Audio Cable讓電腦的聲音輸出的聲音轉到麥克風輸入,就能讓播放影片或聲音檔案的同時語音辨識為文字,最後轉為字幕檔案格式srt輸出。讓我們來看看怎麼做吧。

(more...)

混合應用程式框架試做:薑黃喵討摸摸 / Hyper APP Framework: Ginger Cat Touch

混合應用程式框架試做:薑黃喵討摸摸 / Hyper APP Framework: Ginger Cat Touch

簡報1

之前我介紹用HTML撰寫的混合應用程式框架點閱數意外的很高(本社比),藉著2018年底停車場的薑黃喵被好心人收養之際,我用混合應用程式框架開發了「薑黃喵討摸摸」的APP,可以在網頁開啟、Windows直接執行、也已經在Google Play上架,可在Android上安裝。這篇就記錄一下這個「薑黃喵討摸摸」APP吧。

(more...)

在Windows 7中架設商業智慧系統Pentaho / How to install open source business intelligence system Pentaho on Windows 7

在Windows 7中架設商業智慧系統Pentaho / How to install open source business intelligence system Pentaho on Windows 7

60892-pentaho-box

在巨量資料開始盛行之前,資料分析系統流行的名詞叫做商業智慧(Business Intelligence, 簡稱BI)。這個名字充滿金錢味的技術大多時候的確是付了錢才玩得起,不過也有商業智慧系統是以開放原始碼的方式發佈,就是我今天要介紹的Pentaho


Pentaho介紹 / Introduce Pentaho

services-top-level_3

我從Pentaho的網站上翻譯了它的簡介:

Pentaho致力於協助企業從原始資料中找出重要價值。為了簡化了各種資料的彙整與統合過程,該平臺內建一系列的工具,可輕鬆進行分析、視覺化、探索、彙整報表與預測。Pentaho是開放、容易嵌入在任何系統中、並具備延展性,可用來提供每一位團隊成員--從開發者到公司客戶--都能夠輕易將原始的數據資料轉換成具價值的可用資訊。

必須要說明的是,Pentaho的商業模式就跟大部分的開放原始碼系統一樣,同時具有企業版與社群版兩種版本。前者必須付費購買,但有30天試用期;後者可以免費取得、自行安裝,但是功能有所限縮。

作為開放原始碼的支持者,我這篇當然要講的是開放原始碼版本的Pentaho Community 6.0囉。

在Windows 7上安裝Pentaho / Install Pentaho on Windows 7

Pentaho是以Java / JSP Servlet組成,而且還自行內建了Apache Tomcat。我們只要搞定Java環境變數的設定跟調整一些參數,就能夠立刻架起Pentaho。

雖然是這樣說,但是在安裝JSP網頁系統的時候,光是Java環境變數的設定就已經是許多人難以跨越的障礙。因此我想要整理這篇安裝手續,供其他人方便架設Pentaho。


1. 檔案下載 / Files Download

Pentaho跟Java必備的JDK、JRE都是蠻大的檔案。在開始安裝之前,建議先把這些檔案下載來用吧。

下載Pentaho / Download Pentaho

image

Pentaho將系統拆分成基本分析平臺與各個模組,像是資料整合(Data Integration)、報表設計(Report Designer)、外掛市集(Marketplace)。我也尚未深入探索Pentaho其他功能,本篇只講如何架設,請直接下載商業分析平臺(Business Analytics Platform)即可:

image

下載的檔案將會是biserver-ce-6.0.1.0-386.zip由於Pentaho檔案過多,請不要解壓縮在其他目錄底下。請直接解壓縮到磁碟機目錄底下,例如:c:\,如上圖所示。

Java下載 / Download Java

Pentaho的運作環境需要Java的JDK (Java SE Development Kit)跟JRE (Java Runtime Environment)。但是下載JDK跟JRE的時候,請特別注意你電腦的作業系統類型,分清楚你是64位元或是32位元,並下載相對應的版本。你可以參考微軟的說明「我的電腦執行的是 32 位元還是 64 位元版本的 Windows?」來確認你的版本。

image

你可能平常上網的時候就已經安裝過JRE了,但是一般人應該比較少下載過JDK。JDK在下載的時候請先選擇「Accept License Agreement」,再到下面選擇Windows x86 (表示適用於32位元)或Windows x64 (表示適用於64位元)下載。

2. 找尋JDK跟JRE的路徑 / Find the path of JDK and JRE

為了讓Pentaho跟運作Pentaho的伺服器Apache Tomcat能夠正常運作,我們必須在系統的環境變數中指定JDK跟JRE的路徑位置,並且把JDK的bin資料夾路徑加入到環境變數Path中。因此在安裝完JDK跟JRE之後,我們還要確認系統中JDK跟JRE的路徑位置。

JDK 8 64位元版本的位置預設是在C:\Program Files\java\jdk1.8.0_65。如果是32位元的版本,則會被放在C:\Program Files (x86)\java\jdk1.8.0_65 裡面。請注意JDK版本號的差異會影響路徑的位置,上面我是以紅字標示。如果你下載的是不同版本的JDK,那麼紅字的路徑則會有所不同,請自行修正。

JRE的安裝路徑大致上跟JDK相同,只是名稱是JRE而已。

以我的電腦為例,JDK跟JRE的路徑如下:

  • JDK: C:\Program Files\Java\jdk1.8.0_65
  • JRE: C:\Program Files\Java\jre1.8.0_65

這兩個路徑對下一步設定有極大的影響,請務必確認正確喔。

3. 開啟Java環境變數設定視窗 / Open environment dialog

接下來我們要在Windows環境變數中設定相關變數的路徑。以下先講解Windows 7開啟環境變數設定的設定必須從以下步驟進入:

  1. 我的電腦 > 右鍵 > 內容
    image
  2. 開啟左邊的進階系統設定
    image
  3. 選擇「進階」頁籤,進入「系統變數」。
    image
  4. 如果開啟「環境變數」的對話視窗,那就是找對位置了。
    2016-01-06_001640
  5. 我們主要要修改的內容是下面的「系統變數」。

其他Windows平臺的設定方式,可以參考Java撰寫的「我要如何設定或變更 PATH 系統變數?」。

Windows設定環境變數的方法埋在很深的地方,不少人都找不到哪裡設定。即使到了Windows 7,這個問題也看不到微軟會想改善的樣子,真是欺負新手啊。

4. 設定Java環境變數 / Set Java environment variables

新增系統變數 / Add new system variables

首先我們先來新增三個個系統變數。請按「新增」按鈕來新增系統,如下圖紅框所示。

2016-01-06_002005

在「新增系統變數」對話視窗裡面,「變數名稱」輸入要新增的變數名稱,「變數值」則是輸入路徑,完成請按下「確定」。

image

接著請依序新增二個環境變數:

  • PENTAHO_JAVA_HOME:請輸入JDK的路徑,例如
    C:\Program Files\Java\jdk1.8.0_65
  • JRE_HOME:請輸入JRE的路徑,例如
    C:\Program Files\Java\jre1.8.0_65
編輯Path變數 / Edit Path variable

再來我們要設定Path變數。首先在「系統變數」裡面選取Path,然後按下「編輯」按鈕。如下圖所示:

image

然後我們就會看到Path的變數值,非常長。

image

我建議把這個變數值複製到筆記本中去編輯,編輯完成之後再貼回去。我們要在Path的路徑後面再加上分號與JDK底下bin目錄的路徑。舉例來說:

  • JDK包含bin目錄的路徑是:C:\Program Files\Java\jdk1.8.0_65\bin
  • 修改後Path的路徑就是(紅字的部分是新增的路徑,前面還要加一個分號;):C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Ulead Systems\MPEG;D:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\Java\jdk1.8.0_65\bin

image

確認修改完成之後,再按下「確定」,確認並關閉對話視窗。

必須特別注意的是,請不要複製我的Path變數值到你的電腦來用。因為Path變數值包含了其他程式需要的運作環境,如果被修改的話會導致其他程式無法正常運作。

5. 重新登入以使得環境變數生效 / Relogin to enable environment variables

image

修改系統環境變數一定要登出再登入之後才會生效,所以請花點時間登出並登入吧。

題外話,Linux可以用source /etc/profile 來使得環境變數生效,這點Windows就比較麻煩。

6. 修改Pentaho啟動腳本 / Revise Pentaho startup script

許多人無法直接開啟Pentaho的主要原因,在於Pentaho對Apache Tomcat要求的記憶體過高,所以電腦開不起來。Pentaho community 6對記憶體的要求為2GB到6GB之間,但其實只要512MB到1GB之間的記憶體即可。以下來說明如何修改。

下載Notepad++ Portable / Download Notepad++ Portable

要修改Pentaho啟動腳本,請先準備好純文字編輯器,在這裡不能用筆記本來修改。我推薦使用Notepad++ Portable:

image

修改start-pentaho.bat / Edit start-pentaho.bat

接著用Notepad++來開啟Pentaho安裝目錄底下的「start-pentaho.bat」。

image

你可以注意到裡面有個設定叫做:

set CATALINA_OPTS=-Xms2048m -Xmx6144m  -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -DDI_HOME=%DI_HOME%

這個-Xms表示所需要的最小記憶體量,-Xmx則是最大記憶體量。讓我們來修改這個設定成為以下結果,請注意藍字修改過後的地方。

set CATALINA_OPTS=-Xms512m -Xmx1024m  -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -DDI_HOME=%DI_HOME%

儲存start-pentaho.bat,這樣就可以了。

附帶一題,如果你電腦設備允許的話,記憶體當然是越大越好。在這邊只是說明最小需求的安裝方法而已。

7. 啟動Pentaho / Startup Pentaho

接著我們再回來Pentaho安裝目錄,執行「start-pentaho.bat」。

image

接下來應該會跳出黑底白字的Tomcat主控臺視窗,然後稍等它一下即可。

image

如果看到以下訊息,就表示Tomcat已經準備完成:

2016/01/06 07:47:37 – General – Creating repository meta store interface

2016/01/06 07:47:37 – General – Connected to the enterprise repository

如果沒有Tomcat主控臺出現 / If Tomcat console does not appear

如果你沒有看到這個黑底白字的框持續出現,而是瞬間就關掉,那就是之前的安裝方法有錯誤了。

image

查看錯誤的方式是從命令提示字元中去開啟start-pentaho.bat。然後再看它給的錯誤訊息來偵錯吧。

8. 開啟並登入Pentaho網頁 / Open Pentaho website and login

確認Pentaho已經正常啟動之後,我們就可以開啟Pentaho網站來登入系統了。

Pentaho預設是以8080連接埠提供服務,在本機上請開啟這個網址:

image

順利的話就會看到這個畫面。預設登入帳號與密碼是:

  • User Name: admin
  • Password: password

image

最後就能夠開始使用Pentaho了!以上安裝步驟大功告成!


結語:為什麼要用商業智慧? / Conclusion: Why I want use Business Intelligence?

雖然說巨量資料的盛行讓資訊視覺化的重要性又再度被重視,但是在早期的時代中,許多人都已經使用商業智慧系統來對大量資料進行分析。

我在做的數位學習議題──主要是在KALS的數位閱讀議題上,也常常會有分析資料的需求。這個分析並不只是單純的學習成效跑推論統計,而是更基本地、需要從即時圖表來瞭解使用者整體概況的需求。因此我也需要一些工具來輔助我分析KALS的資料。

雖然現在有許多工具可以用來做資料視覺化,像是D3.js,但是它的強項在於特殊分析與特殊圖表的展現,卻並不具備與資料庫之間整合,或甚至是調整資料來源篩選、重新查詢等其他功能。(題外話,如果對資訊視覺化很有興趣的話,我推薦訂閱「資料視覺化」blog,以及「視覺化資料: 100%全腦吸收大數據, 直入神經元」這本書) 資訊視覺化的工具大多只注重最前端的呈現,卻不能滿足整個分析流程的需求。

所以現在我跟實驗室的學弟選擇使用開放原始碼的商業智慧分析系統Pentaho。但由於系統功能繁雜,目前尚未能夠做到我們想要的目標,仍在持續研究中。有機會再跟大家分享。

(more...)

網頁式科學探究學習環境WISE的編譯與安裝 / WISE Development: Compilation and Installation

布丁布丁吃布丁

網頁式科學探究學習環境WISE的編譯與安裝 / WISE Development: Compilation and Installation

image

我們實驗室接手網頁式科學探究學習環境WISE並開發成合作網頁式科學探究學習環境CWISE已經有幾年的經驗,而這一篇則是要回顧原本的WISE是如何編譯與安裝,以便後續進行更深入的功能開發。


WISE與CWISE的差異 / The difference of WISE and CWISE

WISE原本是美國柏克萊大學Marica Linn教授的計劃成果,主要是提供國小到高中的學生透過網路瀏覽器進行科學探究的學習。WISE建置了大量的資料蒐集與分析工具,以支援教學研究的進行。

CWISE則是由我國的國立臺灣師範大學科學教育研究所、國立高雄師範大學科學教育暨環境教育研究所與我所在的實驗室——國立政治大學圖書資訊與檔案學研究所三個研究團隊,在科技部計畫的贊助之下,將 WISE網頁中文化,架設了CWISE網頁,並依各團隊的專長——生物、理化及地球科學三個科目,每個科目各發展完成兩個課程,共計六個課程模組,並已經在CWISE首頁上開放預覽。(介紹來自CWISE使用說明)

WISE與CWISE的架構都是採用JSP Servlet,背後是以Java Spring Framework這個Java全站開發知名的框架架設而成。因此在編譯與部署時,都是採用Java的方式來進行即可。


環境 / Environment

開發與運行所需要的環境並不一樣,兩者也可以在不同的平臺上進行。只是本篇我們先以WISE為例子來介紹如何在Windows作業系統上編譯與安裝。

開發環境 / Development Environment

開發環境所需要的功能是取得原始碼與編譯。WISE的原始碼已經在GitHub發佈,可以直接下載最新版本,或是在releases中找尋對應的版本。例如CWISE使用的4.6版本各別保存在WISE-VLE—Deprecated--WISE-Portal—Deprecated--裡面。在編譯上,像是採用了Java Spring的大型系統通常會搭配Apache Maven這套自動化編譯工具,WISE也是要用Maven來編譯。

但是我們也不需要個別下載或用指令來操作,實際上有更簡單的方法:使用整合開發環境IDE。而這邊我推薦使用的是NetBeans。

image

NetBeans已經內建了Git跟Maven的功能,我們可以直接用NetBeans從GitHub下載原始碼、建立專案、並且編譯,一氣呵成。操作的細節將會在下面介紹。

運作環境 / Runtime Environment

WISE是JSP Servlet應用系統,一般常搭配Apache Tomcat 網頁伺服器來運作(以下簡稱Tomcat),此外還需要MySQL資料庫搭配使用。在Windows環境中,我們可以直接安裝XAMPP即可。它集合了Tomcat與MySQL,並且提供了容易操作的個性化操作介面GUI,是適合開發與入門的伺服器安裝包。

blog image172

2015-08-05_192009

安裝XAMPP之後,要先從控制面板開啟Tomcat跟MySQL服務,另外為了管理MySQL,我們還需要開啟Apache。開啟按鈕如上圖紅框所示。

2015-08-05_192851

比較需要說明的是XAMPP的Windows安裝版本的路徑,這跟一般的Tomcat運作環境不一樣。如果XAMPP安裝在D:\底下的話,那Tomcat的網頁則是放在「D:\xampp-5.6.8\tomcat\webapps」之中。以下我們將該路徑簡稱為 [webapps]。

image

MySQL的控制則可以使用phpMyAdmin。預先安裝的話,phpMyAdmin的網址如下,僅能用localhost登入,但不用輸入密碼。


如何編譯WISE / How to compile WISE

2015-08-05_194246

WISE的原始碼發佈在GitHub上,我們雖然也可以用Download ZIP的連結下載所有程式碼,但我比較推薦使用Git的Clone功能下載WISE的原始碼。這樣做法不僅可以取得較完整的程式碼,更可以直接在NetBeans中建立專案(Project),以便後續的編譯。

下載原始碼 / Download Source Code

image

NetBeans的Git功能在Team功能表裡面,找到Remote裡面的Clone。這個功能要等NetBeans全部開啟之後才會顯示。

2015-08-05_200346

在Clone對話框裡面,將Git Clone的網址輸入Remote Repository的「Repository URL: 」之中,檔案保存位置不要選在XAMPP資料夾中,建議放在根目錄,例如「D:\」。然後按下「Next >」。

image

接著NetBeans會問我們要下載哪一個分支(Branch)。這個儲存庫並非CWISE採用的4.6版本,在此我們先以現在的WISE最新的主要版本 (master) 作為例子即可。

image

然後按下「Finish」確認,接下來就要開始Clone囉。

image

接著Git會從儲存庫Clone下程式碼,如上圖紅框標示。這個步驟會花蠻多時間的。這是因為GitHub並不適合傳送大量檔案,而且我們這邊的學術網路跟GitHub關係一直不是很好的樣子,每次大量檔案傳送都很慢。

image

好不容易Clone完成之後,NetBeans會問你是否要建立成Project。這時候按yes即可。

image

這樣子WISE的所有程式碼就已經下載到你的電腦上,建立了名為「Web-based Inquiry Science Environment」的專案,並且可以編輯了。

image

這時候就能用NetBeans的全文搜尋功能找尋要修改的功能,進行更深入的開發。

但是這些原始碼需要經過編譯才能夠放到運作環境。因此接下來我們要來看一下怎麼編譯WISE原始碼。

使用maven編譯原始碼 / Use maven to compile Source Code

image

NetBeans也內建了編譯Java專案的Apache Maven工具,不過必須要先將原始碼建置成專案。如果你是照上述的步驟操作,你應該已經有一個WISE的專案。我們可以從專案上按右鍵,開啟「Build」功能。

image

第一次編譯時,Maven會因為相依性設定,下載很多WISE需要的函式庫。因此第一次編譯比較花時間,之後編譯就不用重新下載,編譯時間會短很多。

image

編譯完成之後會看到以下訊息:

------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
這樣就表示編譯完成。相反的,如果看到ERROR的話就是編譯錯誤,請看maven的提示來修正程式的錯誤吧。

image

最後編譯完成的結果會放在專案路徑中的「target」資料夾中,「wise.war」就是最後編譯的結果。


安裝WISE / Install WISE

有了「wise.war」編譯檔案,我們就可以把他部署到運作環境中。然後接下來還要配置資料庫、修改WISE的設定檔,這樣就可以正常運作了。

配置wise.war跟jnlp.war / Deploy wise.war and jnlp.war

image

首先,我們先把「wise.war」跟「jnlp.war」放到XAMPP底下在「webapps」資料夾。jnlp.war是Java Web Start,下載網址如下:

 

image

然後關閉Tomcat服務,再重新開啟Tomcat。這個時候Tomcat會將wise.war跟jnlp.war解壓縮並配置到合適的位置。

配置資料庫 / Setup Database

接著我們要進入phpMyAdmin來設定資料庫。網址是:

要進行的動作包括:

  • 建立一個資料庫名為 wise_database 
  • 匯入資料庫的初始SQL:wise_db_init.sql。這個檔案位置在
    [webapps]/wise/WEB-INF/classes/wise_db_init.sql

image

因為phpMyAdmin的操作比較廣為人知,因此這邊我就不描述細節了。

建立資料夾 / Create Directories

image

接下來要在[webapps]底下建立「curriculum」跟「studentuploads」兩個空資料夾。

建立設定檔 / Create configuration

最後我們要建立設定檔案,裡面將會有資料庫的連線設定。

image

我們先到以下路徑:

[webapps]/wise/WEB-INF/classes

image

請複製這個資料夾裡面的「wise_sample.properties」到同一資料夾中,並改名為「wise.properties」。

image

然後修改裡面的設定值,首先先修改檔案路徑,主要是修改紅字的部分:

wiseBaseDir=[webapps]\wise

curriculum_base_dir=[webapps]\curriculum

studentuploads_base_dir=[webapps]\studentuploads

image

接著修改下面的資料庫設定,採用XAMPP預設的帳號root跟空白密碼即可:

hibernate.connection.username=root
hibernate.connection.password=

修改設定檔之後需要重新啟動Tomcat,請使用XAMPP的控制面板來關閉、啟動Tomcat吧。

啟動測試 / Startup Test

image

經過上述步驟之後,WISE應該就能夠正常運作了。請打開以下網址,看看會不會出現上圖的畫面吧:

這樣就完成囉。


結語:下一步是修改CWISE / Conclusion: We will compile CWISE at next time

這一篇介紹的是WISE現在版本的編譯與部署,但是這跟CWISE使用的WISE 4.6版並不一樣。最大的差異就是CWISE需要同時修改兩個專案,個別是WISE-VLE—Deprecated--WISE-Portal—Deprecated--,然後我們又改了許多JSP檔案。當然,編譯跟部署的作法其實還是大同小異。希望接下來要修改的功能能夠順利進行了。

附帶一提,這篇是在手機、平板、筆電等多個裝置中不斷切換撰寫草稿,最後再回到桌機上修飾、加圖後完成。雖然才兩千五百多字,但其實寫了好幾天了啊。沒辦法,現在真的很難有專心待在電腦前面的時間啊……

(more...)