AdSense

網頁

2017/12/28

2017年底回顧

今天是2017年最後一天的工作日,回顧一下今年及展望明年,寫些瑣事。

2017/12/26

Selenium HTML element locator 定位器

Selenium的HTML locator用來找尋網頁中的element,共有以下幾種locator。

什麼是XPath

XPath (XML Path Language) 是一種用來尋找XML文件中某個節點(node)位置的查詢語言。

Selenium 教學

Selenium Webdriver Tutorial – Step By Step Lessons

什麼是Selenium WebDriver ?

Seleniumn WebDriver是用來執行並操作瀏覽器的一個API介面,程式透過呼叫WebDriver來直接對瀏覽器進行操作。

2017/12/25

在Eclipse中使用WebDriver執行Selenium test case測試 for Java

在Eclipse中使用WebDriver執行Selenium test case測試。

2017/12/24

Katalon Automation Recorder Chrome extension簡介

最近要導入自動化測試,所以開始研究一下Selenium,正要安裝的時候才發現Chrome沒有,新版的Firefox也沒有,然後看到了Katalon Automation Recorder這個工具。

Java 隨機產生字串

在Java產生隨機的字串方法如下

日誌 20171225

原來之前有寫過日誌了,但中斷了都沒發現。

2017/12/20

Mybatis 共用resultMap

Mybatis如果有許多的Mapper用到相同的resultMap,例如使用者資料之類的model,則可以把這個被共用的resultMap獨立出來成為一個Mapper,然後將使用到這個resultMap的Mapper的<select >resultMap的值指向其id即可。

JSP include 共用的taglibs標籤函式庫

在JSP幾乎都會用到的taglibs(標籤庫)例如JSTL,可以放在一個共用的JSP片段中在include至要使用的JSP頁面中,例如

2017/12/18

Mybatis Spring 連線資料庫設定

在Spring使用Mybatis的設定方法如下,本篇使用Maven來加入所需的jar

2017/12/17

Java 為什麼在Service層要使用Interface

在Java Web應用程式中,SpringMVC的@Controller@Service@Repository的分層架構是經常被使用的架構。在實作Service層時,通常會先定義Service的介面,然後才撰寫具體類別實作該介面。我曾經認為為什麼要這麼麻煩呢? Service直接寫成類別不就好了,寫一個介面然後再來繼承不是多此一舉很麻煩嗎? 後來查了一下才知道這樣做的原因其實就是符合SOLID原則的設計,不直接依賴類別的好處如下。

2017/12/14

Spring MVC 重新導向(redirect)傳遞參數

在Spring MVC中,若要從一個Controller重新導向(redirect)至另一個Controller並傳遞參數的方法如下。

2017/12/12

避免jsp被瀏覽器cache

避免jsp被瀏覽器cache住而無法刷新內容,可在jsp頁面加入以下程式碼。

Eclipse 如何建立src/main/resources package

在Eclipse的專案中建立src/main/resources package目錄的方法如下。

被Include的jsp的內容出現亂碼

如果被include的jsp文件的內容出現亂碼,則在被include的jsp中最上方加入以下應該可以解決。

MySQL mysqldump備份資料庫

使用mysqldump指令來備份資料庫及資料表

2017/12/11

MySQL 5.7 突然無法啟動 in Windows 7

MySQL服務突然無法啟動這問題已經碰到兩次了,真的是覺得很煩,然後就想遷怒Oracle。

如何停止MySQL在Windows 7的自動更新

為什麼要停止MySQL的自動更新呢? 因為我懷疑是自動更新導致原本能啟動的MySQL服務變成無法啟動,因為某些資料夾或設定在自動更新後被覆寫掉了,真的很煩。

2017/12/8

在JSP產生亂數

在Java JSP中若要產生亂數,可以使用EL搭配Math.random(),例如${Math.random()}。

Spring MVC 從Controller的方法重新導向至頁面

如果要從SpringMVC的Controller的方法重新導向到jsp或html頁面,可以回傳prefix為redirect:的字串。

2017/12/7

用Notepad++將垂直排列的文字轉成水平排列

將垂直排列的文字轉呈水平排列,可以使用Notepad++的取代功能。

記帳簿 從Github clone Maven Web專案並匯入至Eclipse專案

首先取得Github專案的位置,例如https://github.com/matthung0807/moneynote.git

記帳簿Eclipse設定

記帳簿Eclipse設定

2017/12/6

MySQL 查詢資料庫字元集(Character Set)設定

使用下面SQL查詢MYSQL資料庫目前的字元編碼設定。

記帳簿資料庫設計

記帳簿資料庫設計

JBoss Unable to get managed connection for [JNDI_NAME]

如果你的應用程式在透過JBoss JNDI設定連不上資料庫並出現

javax.resource.ResourceException
Unable to get managed connection for [JNDI_NAME]
那很有可能你的jdbc driver有問題,請檢查JBoss的library目錄(例如[JBOSS_HOME]/server/default/lib)中的jdbc driver版本是否正確,或是放了多個jdbc都可能導致此錯誤。

MyBatis 返回整數 resultType

在MyBatis查詢如果要返回整數,則resultType屬性要設為java.lang.Integer

<select id="select" resultType="java.lang.Integer">
  SELECT COUNT(*)
  FROM USER_PROFILE
</select>

呼叫的Interface的方法如下。

public Integer select(); 

2017/12/5

在URL參數中傳遞日期Date至Spring MVC Controller的@ModelAttribute參數

從前端頁面要透過url參數傳遞日期至Spring MVC的@ModelAttribute參數,而該Model物件的屬性為java.util.Date,則日期成員變數前可加上@DateTimeFormat並根據前端傳來的格式設定pattern屬性,

JavaScript 取代全部

JavaScript字串的replace()函式如果第一個用來取代的參數是一般字串,則只會取代字串中第一個符合的字而已,而不是取代全部符合的字。

JavsScript 下中斷點除錯

一只以來都是直接在瀏覽器的開發模式下中斷點來除錯,知道今天才知道原來也可以在javascript程式碼中使用debugger關鍵字加入中斷點。

網頁導覽路徑 Breadcrumb

在網頁上方通常會有一個顯示目前在網站中哪個功能下的資訊,這條資訊列中文稱作導覽路徑,英文稱作breadcrumb,也就是麵包屑的意思。

MyBatis java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String 錯誤

今天在用MyBatis查詢根據輸入Date的條件查詢時,發生下面錯誤。

2017/12/4

jQuery 在jqGrid的欄位中加入按鈕

在jqGrid的列表中如要加入按鈕,可使用Custom Formatter

如何查詢Oracle 字元集(Character Set)編碼

Oracle資料庫的編碼設定可使用下面SQL查詢。

2017/12/1

Java 設計模式 狀態模式 State Pattern

本篇介紹設計模式的狀態模式(State Pattern)。

2017/11/29

MyBatis JsonMappingException: Could not write JSON: (was java.lang.NullPointerException)

如果在使用MyBatis存取資料庫時,出現下面錯誤時

JsonMappingException: Could not write JSON: (was java.lang.NullPointerException)
解決方式如下。

2017/11/28

第一正規化(First Normal Form, 1NF)

第一正規化(1NF)是資料庫正規化的第一步,之後的正規化步驟都必須先從第一正規化開始進行。

2017/11/27

Spring 配置檔的各Schema設定

Spring的配置xml檔中各schema命名空間設定請參考XML Schema-based configuration

Spring JBoss AS 5.1 JNDI Oracle Datasource 連線設定

JBoss AS 5.1 連線Oracle資料庫的設定檔預設為[JBOSS_HOME]/server/default/deploy/oracle-ds.xml

jQuery 選取child element 子元素

jQuery如要選取某個元素的child element(子元素),可以使用jQuery( selector [, context ] )

2017/11/25

為何價格要私訊

在Facebook賣東西的粉絲團或個人常說想購買的人請私訊詢價,上網查了一下這種現象的原因如下。

2017/11/22

jQuery document ready

要用JavaScript操縱網頁的DOM元素時,必須等網頁完全載入後才可安全地進行操作,而要確保網頁載入,可使用jQuery的$( document ).ready()

2017/11/21

Spring MVC Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported for @RequestBody MultiValueMap

當使用jQuery.ajax()呼叫Spring MVC Controller的方法時,如果該方法的參數有@RequestBody則會拋出下面錯誤。

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded' not supported

2017/11/20

第三正規化(Third Normal Form, 3NF)

第三正規化(3NF)是在滿足第一及第二正規化的條件下,所有非鍵欄位都只相依於主鍵,也就是說非鍵欄位之間應該是獨立無關的。

第二正規化(Second Normal Form, 2NF)

第二正規化(2NF)是指資料表中所有欄位的資料都必須和該資料表的主鍵(or複合主鍵)有完全依賴關係。如果在複合主鍵的情況下,非主鍵的欄位只和部分主鍵有關,則必須獨立出來成為一個資料表,或歸類到該主鍵的資料表。

2017/11/19

線上ER Model設計工具

線上ER Model設計工具

寫程式最討厭碰到的事

擔任Java Web工程師至今在工作上最讓我討厭的事列表(不定時更新)

2017/11/17

Java context path, servlet path, path info

Java網路應用程式的context path,servlet path及path info的區別如下

Spring 注入properties檔的參數設定

在Spring從properties檔注入參數的範例如下。

2017/11/16

JavaScript 無條件進位/無條件捨去

JavaScript無條件進位的計算可用Math.ceil()。無條件捨去可用Math.floor()

MyBatis xml綁定interface的設定

MyBatis可以透過在xml中撰寫SQL,並將xml綁定到一個給程式呼叫的interface,如此程式就可以透過呼叫interface的方法來執行xml中對應的SQL,而綁定xml和interface的設定是在mapper(xml)檔的<mapper namespace>

<mapper namespace="idv.matt.dao.mapper.UserMapper">

如何解決Eclipse專案程式碼修正後仍出現錯誤的問題

如果Eclipse中的專案程式碼都已修改正確,但仍出現錯誤,此時Eclipse功能選單的Project -> Clean...或許可以解決這樣的問題。

Oracle VARCHAR2 儲存中文(UTF-8)的長度

Oracle VARCHAR2儲存中文的話長度要設為多少?

2017/11/15

在JSP EL表示式中比較是否相等

在JSP的EL表示式中比較兩個字串是否相等時,可以使用eq

CSS <input>寬度不超過<div>

如果要讓<input>欄位的寬度不要超過外層的<div>的話,可用css將<input>width設定為百分比

jqGrid 顯示列數

jqGrid如要在結果的資料表顯示列數,則將rownumbers設為true,這樣在jqGrid的資料表最前面會自動加上一欄列數。

MyBatis 在<if>判斷傳入參數是否為空值

在MyBatis中可使用<if>來產生動態的SQL條件,如果要判斷傳入參數是否為空,則語法如下。

Oracle ORA-00933: 命令的結束有問題

ORA-00933: 命令的結束有問題的原因是SQL語法錯誤,沒錯,原因就是這麼簡單,請仔細檢查你的SQL語法是否正確。

2017/11/14

Eclipse Subversion (SVN) 如何查詢專案的respoistory url

在Eclipse Subversion要查詢從SVN checkout下來的專案的repository url的步驟如下。

2017/11/10

什麼是定期險(term insurance)

定期險(term insurance)是指保障一段特定期間的保險,也就是說當保險到期以後就沒有任何保障效果了。

2017/11/9

在Visual Studio Code直接開啟html於瀏覽器

在Visual Studio Code(簡稱VS Code)中如果要直接開啟html檔於瀏覽器,可以安裝擴充套件open in browser

JavaScript 檢查Object是否為空

JavaScript檢查Object是否為空,也就是檢查該物件是否存在property的方法如下。

JavaScript ES6 Promise傳入參數

在JavaScript ES6的Promise如要傳入參數,可以透過定義一個帶參數且回傳值為Promise物件的函式即可。

Node.js 如何檢查模組是否有載入

在Node.js程式中使用require.resolve(request)即可確認該模組是否有載入。

2017/11/7

JWT (JSON Web Tokens)

JWT是JSON Web Token的簡稱,JWT不是程式也不是函式庫,而是定義如何在兩個網路實體間驗證身分的一種訊息格式。JWT詳細規範參考RFC 7519

2017/11/6

使用Google Sheets試算表計算房貸每月還款金額(本息平均攤還)

本篇介紹使用試算表(例如Google Sheets或Excel)計算本息平均攤還房貸每個月的還款金額列表。

2017/11/5

Java 設計模式列表

Java 設計模式(design patterns)列表

2017/11/1

Node.js 使用yargs模組取得命令列執行時傳入的參數

Node.js以命令列執行時,原本是透過process.argv取得輸入的參數,本篇介紹yargs模組除了讓我們更輕鬆地存取參數,還可建立命令列式的操作介面,如參數說明,或必要的參數等等。

Node.js 發送request請求取得json物件

在Node.js中可以使用request模組來發送請求。

2017/10/31

Visual Studio Code 開啟內建終端機(Integrated Terminal)快速鍵

開啟Visual Studio Code內建的終端機(Terminal)快速鍵為Ctrl + `(鍵盤左上角的那顆,在Esc下面),或功能選單 -> View -> Integrated Terminal

JavaScript ES6 建立物件時定義方法的簡短語法

JavaScript ES6(ECMAScript 2015)使用object initializer notation建立物件時,定義方法時可簡寫如下。

2017/10/30

JavaScript 函式 Function的call()

JavaScript function的call()方法可用來呼叫函式並傳入給定的this值及其他參數。

HTML <a>標籤空連結

在HTML中的<a>標籤若要設為空連結,則href的值應設為javascript:void(0);

如何開啟Chrome開發人員工具的console

在Chrome的開發人員工具(devtools)中(在Chrome按Ctrl + Shift + I或按F12可快速開啟開發人員工具),按Esc鍵即可開啟/關閉console視窗。


參考:

使用Chorme的開發人員工具對node.js進行debug

使用Chrome瀏覽器對node.js進行debug的方法如下(node.js版本要6.3以上)。

2017/10/29

Visual Studio Code 對node.js進行debug

在Visual Studio Code要對node.js程式進行debug的方法如下。

Node.js 在命令列執行時傳入參數

在命令列執行node.js程式時如要傳入參數,在程式名稱後方空一格然後輸入要輸入的參數值即可

Visual Code Studio 修改操作介面中文語系

修改Visual Studio Code(VS Code)操作介面的語系為中文的方法如下。

Visual Studio Code 開啟新的工作區(workspace)

在Visual Studio Code開啟新的工作區(workspace)的方式如下

JavaScript ES6 Template String

JavaScript ES6 多了Template String(模板字串)的語法。

2017/10/26

JavaScript ES6 定義物件屬性key value的簡短語法

在JavaScript中定義物件時,若key和value名稱相同,可直接寫key的名稱就好。

Visual Studio Code console.log快速輸入設定

在Visual Studio Code中設定console.log的快速輸入的方法如下。

2017/10/25

Node.js 取得在命令列執行時傳入的參數

Node.js使用node [your app]來執行程式,如果要傳入參數,則在後面加上要傳入的參數,例如

Node.js nodemon模組

nodemon模組是開發Node.js應用程式時的工具,這個模組會持續監視你的程式碼是否有異動狀況,一旦內容改變nodemon便會自動重新執行應用程式,讓你可以很快的觀察修改程式碼所造成的影響。

Ant build.xml的project

Ant建置檔(buildfile)使用XML格式撰寫,預設為build.xml,內容為建置時要執行的各種任務。build.xml中必須且只能有一個project節點,projectbuild.xml的根節點(root element)。

如何在Eclipse專案執行Ant build

例如有一個動態網站專案AntDemo,在根目錄新增build.xml檔,build.xml為Ant建置專案要執行的任務。

2017/10/24

Eclipse SVN checkout連線時出現E175002: handshake alert: unrecognized_name錯誤

如果你的Eclipse在使用SubVersion checkout專案時出現以下錯誤的解決方式如下。

E175002: Connection has been shutdown: javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name svn: E175002: OPTIONS request failed on [URL]

Java 物件導向的概念

什麼是物件導向呢?物件導向的英文是Object-oriented Programming,又簡稱OO或OOP,中國用語是面向对象。

Oracle 建立索引(Index)的準則

在Oracle資料庫中可以在資料表的欄位建立索引(index)來加速查詢,不過建立index的欄位通常符合下面幾點:

2017/10/22

Oracle ORA-06553: PLS-306: 呼叫 'xxx' 時參數類型的數目錯誤

呼叫Oracle的Store Procedure時,出現錯誤如下
ORA-06553: PLS-306: 呼叫 'xxx' 時參數類型的數目錯誤
ORA-06553: PLS-306: wrong number or types of arguments in call to 'xxx'

2017/10/20

如何刪除內容中全部的數字

可使用Notepad++的取代功能搭配正規表示式\d+[0-9]+來刪除內容中全部的數字。

PL/SQL Developer 找不到oci.dll的問題(could not locate oci.dll)

當開啟PL/SQL Developer時出現could not locate oci.dll導致無法連線到資料庫的解決方式如下。

2017/10/19

如何修改PL/SQL Developer的SQL編輯區的字體大小

本篇的PL/SQL Developer是指Allround Automations的PL/SQL Developer(v12.0),而不是Oracle SQL Developer

2017/10/18

Node.js require modules

Node.js 使用require()來引入模組(module)。

Node.js 什麼是npm

如果你跟我一樣是Node.js的超級菜鳥,剛聽到npm一定是霧煞煞,這是什麼玩意兒?

JavaScript 移除陣列中重複的值,使用lodash _.uniq

在JavaScript要移除陣列中重複的值,可使用lodash套件的_.uniq(array)函式。

Eclipse jar檔圖示

Eclipse的jar檔的圖示像個小小的牛奶瓶,一直以來都存有這個小小的疑惑,為什麼jar檔要畫成牛奶瓶的樣子?

Java synchronized 同步的意思

在Java多執行緒中,可使用synchronized關鍵字用來宣告一個method或一段程式區塊為同步。同步的意思是,在同步方法/區塊/成員變數中一次只允許一條執行緒存取被鎖定的物件。

2017/10/17

Node.js 是多執行緒嗎?

Node.js是單執行緒,Node.js的每一個Process都只有一個執行緒(Thread)而已。

Java 列舉(Enum)範例

Java 列舉(Enum)範例

Java 什麼是多載(Overload)

多載(Overload)指在一個類別中,定義多個名稱相同,但參數(Parameter)不同的方法。

2017/10/16

Java 什麼是覆寫(Override)

Java的覆寫(Override)是指子類別繼承父類別時,改寫父類別原有的方法內容。

Java 集合List, Set, Map的差異

Java集合ListSetMap的區別如下,面試時常考的基本題。

Java LinkedList 簡介

Java LinkedList同時實作了ListDeque介面。為雙鏈接串列(Double-linked List),串列中的每個節點都有指向前一個及下一個節點的指標。

Java 將字串(String)轉成整數(int)

Java 字串(String)要轉成整數(int)可使用Integer.parseInt(String s)方法。

2017/10/15

Java 檔案路徑中兩個星星(**)的意思

在Java程式的配置檔中常可看到用星星符號(asterisk)*來代表任意檔名或路徑。

2017/10/12

Java 執行緒 synchronized method

若將方法宣告為synchronized method,則執行緒在呼叫此方法時會取得的這個物件的鎖。

Java 執行緒 synchronized method deadlock

當執行緒呼叫物件的同步方法(synchronized method)時,執行緒取得該物件的鎖,直到方法執行結束後才會釋放。

Java Thread Deadlock 執行緒 死鎖

在Java的多執行緒中,死鎖Deadlock是指兩條或以上的執行緒因互相等待物件的鎖而導致程式無法繼續執行的現象。

2017/10/11

Java 執行緒wait()和sleep()的差異

Java多執行緒中wait()sleep()的差異如下

Java 執行緒 wait()

Java 多執行緒中,在目前的執行緒呼叫物件的wait()方法可以讓目前的執行緒暫停執行,等到其他的執行緒呼叫該物件的notify()notifyAll()方法後才會繼續執行。

2017/10/9

Visual Studio Code 刪除行快速鍵

Visual Studio Code刪除行的快速鍵是Ctrl + Shift + K

2017/10/6

日誌 20171007

在Udemy學習了Node.js的課程

Visual Studio Code 註解程式碼快速鍵

Visual Studio Code(VS Code)註解(comment)程式碼的快速鍵。

Node.js API文件位置

Node.js API文件位置在https://nodejs.org/api/

Java 執行緒 Thread.join()

Java執行緒的Thread.join()方法可以讓目前正在執行的執行緒暫停,直到呼叫join()的執行緒執行結束才會繼續執行。

2017/10/5

Java 執行緒 Thread run()方法

Java的Thread.run()方法簡介。

Java Thread Life Cycle 執行緒的生命週期

Java執行緒的生命週期(life cycle)可分為New,Runnable,Running,Blocked/Waiting,Terminated/Dead狀態。

2017/10/4

Java Thread Interference 執行緒干涉

Thread Interference是指多個執行緒執行時同時存取同一筆資料,在非執行緒安全的程式可能會造成非預期的結果。

2017/10/3

2017/10/2

IE JSON.parse undefined

很爛的IE因為不支援JSON.parse()所以會出現undefined的錯誤,解決方法如下。

JavaScript的falsy值

JavaScript的falsy值包括以下。

JSP HTML <input> 很爛的name命名方式

請看下面jsp的<input>name的命名方式。

2017/10/1

Eclipse 關閉JavaScript的validation

Eclipse在build專案時預設都會做驗證(validation),也就是檢查語法有沒有錯誤。

2017/9/30

如何關閉Eclipse的jsp或html編輯預覽

最近在Eclipse匯入一個專案後,開啟web專案的jsphtml檔會同時出現預覽及文字編輯畫面,因為我習慣用瀏覽器顯示修改的結果,覺得預覽模式除了佔去一半的文字編輯區,用起來又卡卡的,找了好久才知道怎麼改成原本編輯器。

Oracle outer join operator (+)

Oracle PL/SQL的(+)符號代表OUTER JOIN的意思。

2017/9/29

Java 整數計算的溢位overflow問題

Java在做數值相乘時,有可能因為計算結果超過intlong的上限而發生溢位(arithmetic overflow)進而導致結果錯誤。

2017/9/28

Spring MVC form tag的預設method

Spring MVC的form tag<form:form>預設的method是POST

如何快速清除Eclipse的console訊息

這是我知道的最快方法了,在console視窗上按滑鼠右鍵,選單跳出後按R即可。

日誌 20170929

最近的任務是把Struts2專案翻成Spring MVC框架。由一位沈默寡言的資深工程師帶著我做,還好MVC分層有做好且只是個小後台系統,基本上就是把Strust2 的Action換成Spring MVC的Controller,然後修改需要的配置檔即可。

Spring MVC form tag的屬性modelAttribute和commandName差別

Spring MVC的form tag有modelAttributecommandName的屬性,這兩個屬性的功能是一樣的,都可以建立<form:form>表單所對應的model物件。

2017/9/27

Oracle WebLogic Server Domain

Oralce WebLogic Server的domain(網域)是邏輯上的WebLogic Server群組。

如何在Eclipse加入WebLogic Server

本篇安裝的WebLogic版本為10.3.6(我的Windows 7為64bit版本。)

2017/9/26

Java 網路應用程式圖

下圖簡要說明Java網路應用程式的架構。

如何查看Windows 7系統目前使用的Java版本

在命令提示字元cmd輸入java -version即可。

慶祝Google Adsense通過審核

慶祝今天此部落格的Google Adsense終於通過審核了。之前不知道什麼原因一直沒辦法通過審核,放著沒理他就莫名的通過了,可喜可賀。

2017/9/25

Java 如何建立Thread

Java建立Thread的方式有兩種,一是實作Runnable介面,二是繼承Thread類別。

Java @Override annotation

Java中的@Override annotation(標註/注釋/注解)是指被標註的方法必須覆寫父類別(superclass)的同個方法。

如何在Windows建立大容量的文字檔

在Windows建立大容量的文字檔可使用fsutil file createnew指令。

2017/9/22

Oracle Trigger REFERENCING

Oralce的Trigger(觸發程式)中的REFERENCING可修改預設用來存取row資料的NEWOLD的名稱。

2017/9/21

Java Thread.sleep()

Java的Thread.sleep(long millis)方法可以使目前的執行緒暫停執行一段時間,傳入的參數為要暫停的時間長短,單位為毫秒(millisecond)

Java Lambda替代匿名內部類別範例

Java 8的Lambda Expresions(Labmda語法)可用來取代匿名內部類別(anonymous inner class)的寫法,令程式更簡潔可讀性更高,下面是一些基本範例。

2017/9/20

Java Interface的Default Methods

Java 8導入了Default Methods(預設方法)的特性,其為interface的實作方法。

Java 如何在StringBuilder中加入斷行符號

使用StringBuilder建立字串時,若要換行(new line)可使用System.lineSeparator()

JavaScript 整數Number的最大範圍

JavaScript整數Number的最大範圍是-(253 - 1) ~ 253 - 1(ECMA 8.5 The Number Type)。

IE8 不支援JavaScript的Object.keys

Object.keys方法讓我們可以輕鬆地取得一個物件中的所有的屬性,但這個功能在IE8不支援所以無法使用,使用時會出現undefine的錯誤(IE9以上才支援)。

Java 平行(Parallelism)與併行(Concurrency)的差別

平行(Parallelism)與併行(Concurrency)的差別如下。

2017/9/19

Java 使用空白分割字串

在Java中若要以字串中的空白來分割字串,可以用String.split("\\s+")

Regex 字符組 character class [ ... ]

Regex正則表示式的字符組(character class, or character set)為中括弧[...]包夾的數個字符。

Regex 星號 * 與加號 + 的用法

在正規表示式中可使用星號*來表示前面的字符可以出現0次或多次,也就是*前面緊接的那個字符有出現多次或沒出現也是匹配。

Java Regex email郵件格式

Java檢查email格式的regex如下

Java Regex hh:mm:ss 24小時制時間格式

在Java檢查hh:mm:dd24小時制的時間格式的正則表示式如下

Regex 正則表示式視覺化測試工具

發現一個好用的Regex測試工具Debuggex

2017/9/18

Java Regex yyyy MM dd日期格式

在Java驗證日期格式的Regex範例如下。

Regex 問號 ? 的用法

在正規表示式中可使用?(Optional Items)來表示前面的字可以出現0次或1次,也就是問號前面緊接的那個字有出現一次則匹配,沒出現也是匹配。

Oracle 合併及連接字串

在Oracle中要合併兩個字串可使用串接符(Concatenation Operator)||

Oracle 使用Basic LOOP

Oracle的基本迴圈Basic LOOP範例如下

日誌 20170919

SD文件交出了,教同事使用Astah Community來畫類別圖(Class Diagram),使用者案例圖(Use Case Diagram)及循序圖(Sequence Diagram)。

2017/9/17

日誌 20170918

美好的星期一。

天氣有點涼,秋天到了。

依舊在寫SD文件,今天應該就可以完成。


此時的我在台北西門町街上抽菸喝咖啡。

記得這個約在2017年六月多開始的專案在九月份已經有個收尾,所以現在再補當初寫得程式的SD文件給客戶。

接下來進入UAT階段就是開始修修補補的時候,事情就會變得比較少一點。

2017/9/15

日誌 20170915

還是在弄已完成程式的SD文件。

2017/9/14

如何第一次將local repository push到Github專案

在工作中通常都是pull別人的專案,修改檔案後直接用git push將commit推送到Github或GitLab上。不過對新手來說,要自己第一次把電腦中的專案push(推送)到Github上就有點困擾,本篇一步步說明如何將local的專案push到github上。

如何修改Eclipse的Subversion的svn:ignore

在Eclipse的版控套件Subversion,編輯svn:ignore的方法如下

日誌 20170914

上班,撰寫上個月寫的程式的SD文件。

2017/9/13

Oracle 分頁查詢

在Oracle分頁(pagination)查詢的SQL如下

2017/9/12

IE 9 bug JavaScript無法運作

在IE 9若JavaScript無法運作,但開啟debug模式又正常時,是因為IE9瀏覽器的bug。

Oracle 如何查詢前N筆資料

在Oracle中要限制查詢回傳的資料筆數時,可用ROWNUM

2017/9/11

如何在Oracle SQL Developer對Procedure除錯

本篇介紹如在Oracle SQL Developer對Procedure進行除錯(debug)

Oracle 在PL/SQL中使用FOR LOOP迴圈

在Oracle PL/SQL中使用FOR LOOP迴圈的範例如下。

Struts 2 url直接呼叫action

在JSP通常都在form表單設定action並提交來呼叫struts.xml中mapping的Action類別的方法,如果要直接點選連結來呼叫action,請參考下面

2017/9/9

從jQuery物件取得原本的Javascript DOM 元素

從jQuery物件中取得原本的Javascript DOM元素使用以下

jQuery 如何取得form表單中所有input文字輸入欄位的值

取得一個form表單中所有<input type="text">文字輸入欄的值的jQuery語法如下。

Java 判斷List物件是否為null或為空

在Java要判斷一個List物件是否為空,可使用Apache Commons Collections函式庫。

2017/9/8

CSS overflow效果

本篇介紹CSS overflow在固定寬高的<div>的各種效果。

jQuery UI 關閉dialog對話框時觸發方法

使用jQuery UI的Dialog Widge對話框時,若要在程式中關閉對話框,可呼叫.dialog("close")

Java java.lang.UnsupportedClassVersionError錯誤

java.lang.UnsupportedClassVersionError錯誤是因為runtime的JRE版本比編譯class檔的JRE要舊。

Java 如何將ArrayList<String>中的字串合併並以逗號分隔

在Java如何將將ArrayList<String>中的字串合併並以逗號分隔?

2017/9/7

亂碼的英文

這裡的亂碼昰指因編碼錯誤而產生的亂碼,長得像下面這樣。

Regex 檢查字串中是否有中英文數字以外的符號

下面範例用檢查字串中是否含有中英文數字以外的符號

Struts 2 下載檔案

在Struts 2檔案下載(file download)的設定如下。

Struts 2 如何在Action類別中取得ServletContext

在Struts 2的Action類可使用下面方法取得ServletContext

2017/9/6

Oracle tnsname.ora檔的存放位置

Oracle Client的連線設定檔tnsname.ora的預設位置如下。

Oralce 如何取得SID名稱

使用下面的SQL來取得資料庫實體的SID名稱。

Java 字串陣列Array轉String

在Java中如果要將字串陣列Array轉成String,可使用Arrays.toString()

PL/SQL Developer如何連線遠端的Oracle資料庫

要連接遠端的Oracle資料庫,通常會在tnsnames.ora檔案中設定連線資訊。

Oracle SQL Developer如何開啟連線標籤

開啟Oracle SQL Developer[連線]標籤的位置如下

2017/9/5

ASCII表格產生器

下列網站可以將內容轉成ASCII文字繪製成的表格

Oracle 如何使用Cursor變數REF CURSOR

Cursor變數(Cursor variable)與Cursor一樣,是指向一個查詢結果(result set)的指標(pointer)。

2017/9/4

人工智慧-機器學習-深度學習

人工智慧,機器學習,深度學習三者的關係如下圖

Oracle Schema

Schema是多個邏輯結構資料的集合,這些邏輯結構資料又稱作schema objects,例如Table及Store Procedure就是schema object的一種。

Oracle 如何使用Cursor

本篇介紹Oracle PL/SQL中Cursor的使用方式。

2017/9/3

Oracle 如何在SQL Developer中呼叫Function

若要在SQL Developer資料庫管理軟體中執行Function,可用下面方法

Oracle 如何建立Package

以下介紹如何建立Oracle Stored Procedure(SP)的Package。

2017/9/1

Oracle Procedure和Function的差異

Procedure和Function的差異如下

2017/8/31

Scratch自製小遊戲 asteroid belt

靈感來源為星戰火狐

Oracle EXEC和CALL的差異

在Oracle中執行Stored Procedure,我們可以使用EXECUTE(or EXEC)或CALL指令。

2017/8/30

好用的螢幕錄製Gif軟體ScreenToGif

推薦一款螢幕錄製軟體ScreenToGif

Oracle SQL Developer DBMS_OUTPUT.PUT_LINE() 無法顯示印出結果

如果在Oracle SQL Developer使用DBMS_OUTPUT.PUT_LINE()無法顯示印出結果時,執行下面指令。

Oracle 如何建立Stored Procedures

Stored Procedure(預存程序)為資料庫中的獨立程式單元,包括Function, Procedure及Package皆通稱為Stored Procedure。

2017/8/28

Oracle 數字資料型態 NUMBER data type

本篇簡單說明Oracle資料庫的數字資料型態

Oracle 修改資料表欄位名稱 modify table column name

Oracle修改資料表欄位名稱的SQL語法如下。

CSS 查詢瀏覽器對HTML/CSS屬性的支援網站

下面這個網站可以快速查詢各瀏覽器對HTML/CSS屬性的支援情況。

CSS ::before ::after

CSS的::before::after是偽元素(pseudo-element),可以在原本的元素標籤前後加上其他效果。

2017/8/27

如何在Blogger加入時鐘小工具

到Blogger後台,在[版面配置]中點選新增小工具,本範例是新增在側邊欄。

2017/8/25

桃園市 桃園區 餐廳 日和 . まいにち

今天(2017/08/26)去桃園虎頭山附近的「日和 . まいにち」。

Word如何建立多層次清單

Word的多層次清單的建立方式如下,以下為Word 2013

2017/8/24

JavaScript let和var的差別

ECMAScript 6多了let關鍵字,和var一樣用來宣告變數,差別在於作用域(scope)的範圍。

Regex word boundary 單字邊界

在Java的Regex若要找出完整的單字,即該單字不為某個字裡面的字,可使用單字邊界符號(word boundary)\b

Regex Java正規表示式忽略大小寫敏感(case sensitive)

Regex正規表示式都是大小寫敏感的,例如

2017/8/23

JavaScript 使用const關鍵字宣告常數

在JavaScript中若要宣告常數,可使用const關鍵字。

如何在Redmine中加入上傳的圖片

在Redmine將上傳的圖片加入問題敘述或回覆的方法如下。

IE 頁面內容無法依資料庫內容更新

IE 預設會把網頁結果cache起來,所以若是網址不變的情況下,會返回cache的頁面。然而如果網頁的內容是動態的情況下,會導致資料庫內容有更動但頁面內容無法正確反應的問題,簡單說就是頁面內容無法刷新。

Google搜尋不到我的部落格

如果你在Google搜詢你自己的部落格名稱,但發現結果都沒有你的部落格的話,那原因可能如下:

2017/8/22

共享經濟

什麼是共享經濟?

イニシエダンジョン

イニシエダンジョン (inishie-dungeon)是一個網頁小遊戲。遊戲名稱應該可以翻成"古老地城"。

CSS置中產生器

要把HTML元素置中是一件痛苦的事,例如文字置中,div置中等做法百百種,下面這個網站可以幫助你產生置中的CSS碼,減輕你的痛苦:D

調整div大小的控制器

製作一個可以調整<div>大小的滑桿控制器。

使用JavaScript製作一個簡單時鐘

使用JavaScript製作一個網頁上的簡單小時鐘

2017/8/21

如何製作直接幫柯文哲親自留言按讚

這兩天最紅的詞就是王八蛋這三個字了,出自於台北市長柯文哲在facebook的霸氣回覆。因為回覆及留言的人數太多所以很多網友要去朝聖時都找不到了,所幸有一位吳姓網友做了一個"如何製作直接幫柯文哲親自留言按讚"的網頁,讓想去朝聖的鄉民可以直接幫王八蛋按讚。

Mac螢幕截圖熱鍵

Mac的螢幕截圖熱鍵如下

修改Mac Terminal終端機的命令提示符號 change Mac Terminal Prompt

Mac的Terminal終端機bash的命令提示符(prompt)預設是一串由使用者和主機名稱的組合,如果覺得太長可用以下方法修改。

2017/8/20

在Eclipse新增不同版本的JDK

Eclipse執行專案的預設JVM會使用環境變數Path中JAVA_HOME路徑的JDK,但若專案的JDK使用的是不同版本,此時就要在Eclipse中加入新的JDK。

在Eclipse中顯示properties檔的中文字

在Eclipse中開啟properties檔,原本中文都會以Unicode顯示如下


2017/8/19

關閉Eclipse編輯區的拼字檢查(turn off eclipse spell check)

拼字檢查功能會在拼字錯誤的單字下方標上波浪底線,但寫程式時看到這種很像錯誤的標示還蠻煩的,關閉此功能的方法如下。

2017 如何在Blogger加入Facebook粉絲頁

將Facebook粉絲頁放在Blogger的步驟

Eclipse無法開啟

若Eclipse從官網下載回來無法開啟,可能原因包括:

讓網頁內文有按鈕效果的css

下面的css可以讓網頁內文有按鈕的效果。

2017/8/18

Regex 使用 | (vertical bar) 組合多個條件

正規表示式可使用|將多個條件(子表示式)組合成一個總表示式。

網頁中的鍵盤熱鍵操作說明的css

撰寫技術文章時,常會有按鍵操作的說明,例如ctrl + h或是ctrl + shift + l等,但若沒有特別的標示,和一般的內容文字容易混淆在一起,雖然在HTML5中多了<kbd>標籤,用來標示按鍵用的標籤,但預設的效果只是把字型改為monospace而已,所以可使用下面的css讓<kbd>的效果更明顯一點。

如何刪除字串中某個字後的全部字串

情境如下,例如有下面的內容,希望把含=後面的字串刪除,該怎麼做呢?

2017/8/17

如何使用Bootstrap 3

簡單紀錄一下Bootstrap的用法,先介紹一下什麼是Bootstrap,要了解Bootstrap前的必備知識是HTML,CSS及Javascript,若不懂上述三種技術則看不懂以下內容是正常的。

Java Servlet PrintWriter 中文亂碼

在Java Servlet中使用PrintWriter將中文字串寫出時,常會碰到寫出的內容變成亂碼,這是因為在用PrintWriter寫出之前沒有設定回應物件的編碼(encoding)。

Java Servlet Cookie儲存中文

在Java Servlet中,當使用Cookie來存放中文(格式為UTF-8),會出現以下錯誤

解決Chrome瀏覽器很慢很卡的問題

最近Chrome不曉得為什麼變得很慢,會卡住5秒以上才會有反應,卡住的時候Chrome會鎖死,無法進行任何操作或點擊,即使是到Google搜尋也是如此,所以不是網站的問題。

Regex 點(dot) . 符號

正規表示式中的點.(dot or period)可用來代表任意字元。

CSS font-size em的預設大小

CSS font-size的單位em預設大小為16px,也就是1em = 16px,所以2em = 32px。不過若em的parent element有的font-size大小為14px,則1em = 14px

2017/8/16

ServletConfig簡介

Web容器(web container)在啟動時,會先讀取DD文件(即web.xml),然後幫每一個Servlet建立一個ServletConfig的實例,接著根據DD文件的設定建立一些name/value參數,然後Web容器將參數交給ServletConfig物件,最後產生Servlet的實例時會呼叫Servlet的init(ServletConfig config)方法把ServletConfig物件傳入Servlet

如何在Blogger文章設定閱讀更多/繼續閱讀

若要把Blogger的文章加入繼續閱讀功能,可在編輯文章時,在HTML編輯器加上<!--more-->

Java 比較日期Date

在Java中若要比較兩個日期先後,但不考慮時間部分如時,分,秒,毫秒,可使用Apache Commons LangDateUtils.isSameDay()方法...

Evernote Mac 開啟程式區塊(code block)

目前工作是用Windows系統的Evernote,工具列有提供簡單的程式區塊功能,

關於接受offer後反悔這件事

Hello大家好,今天要發表的主題是接受offer後又反悔這件事。

iReport 5.6.0 Edit Query freeze SQL編輯器卡死的問題

今天在使用iReport Designer 5.6.0時,不論在專案上右鍵>Edit Query或是按Edit Query的圖示,Edit Query視窗沒有彈出,程式整個卡住了。

Oracle - ORA-04068 包裹程式 的現行狀態已被廢止

今天在執行程式時,呼叫了Oracle Package出現錯誤 ORA-04068 包裹程式 的現行狀態已被廢止

JSTL 格式化標籤 formatting tags

本篇介紹JSTL(JSP Standard Tag Library)的格式化標籤(formatting tags)。

2017/8/15

JQuery中的this

剛接觸JavaScript和jQuery時常碰到的問題就是,為什麼this無法呼叫jQuery的方法,然後在console看到類似以下錯誤訊息

如何使用Google Fonts

以Google Fonts的黑體為例,在css檔或你的html的<style>標籤內加入以下

MySQL Exception錯誤訊息參數中文亂碼

在Java JDBC連線MySQL資料庫時,若執行錯誤會丟出Exception錯誤訊息,但錯誤訊息中的中文參數在Eclipse的console出現亂碼如下

Regex matches()和find()的差異

Java的正規表示式(Regular Expression, regex)簡單用法如下

Regex 使用 ^ 符號排除特定字元

在正規表示式可用^(caret)符號來排除後接的字元。^是正規表示式的metacharacter(metacharacter的中文翻譯很多,例如元字符,中繼字符,特用字符,特殊自元,詮譯字元,中介字元等)

JSTL , fn:escapeXml();

JSTL core tag的<c:out>fn:escapeXml()用來處理XML或HTML中被視為標記(markup)的字元,會轉成一般字串處理。

2017/8/14

如何在Blogger部落格中highlight你的程式碼

若要在Blogger部落格中將程式碼的內容highlight起來,可使用highlight.js

2017/8/9

Struts 2 從action呼叫另一個action redirect action result

在Struts2的設定檔中,若action執行完要導向另一個action的設定如下。

2017/5/31

2017 端午節南澳野營

2017年春末和大學好友兩人去南澳海灘野營營。這份紀錄之前紀錄在Evernote中。

2017/3/27

AdSense