透過 symbolic link 避免開發環境變數的變更

Posted on May 16th, 2018



若經常於 git branch 間切換,且當其中一些環境變數、檔案路徑相關的程式碼需要調整時,
總是需要透過 stash, 再 branch 之類的方式將變數相關的程式存下來,避免遺失
一個方法是建立 symbolic link ,這樣就不用一直改拉

  • unix:

sudo ln -s /Users/liullen/workspace/ihergo /Users/ihergo

  • window:

mklink /d C:\ihergoGit C:\workspace\ihergo


用 jstl 的 遇到 SSL 相關的問題

Posted on March 16th, 2018

在某一個 jsp 頁面使用 jstl core 直接 import 指定位置的 url 時會有問題,例如:

<c:import url="https://ihaveapen.com/ihaveanapple" />

在 macOS 本機(Apache+Tomcat) 連到用到這樣使用的 tag 的頁面時,Tomcat 會發生 SunCertPathBuilderException
(Exception 太長放最後面)

解法:

- 透過 firefox 將目前頁面的根憑證匯出 (這邊直接拿 apache ssl 指定的根憑證應該要也可以)
- 用 keytool 匯入到執行 tomcat 用的 jre 底下的 cacerts


sudo keytool -import -alias ihergo -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/security/cacerts -file wwwihergocom.crt


- 注意: 要用 sudo 權限, 且調整 cacerts 會要求輸入密碼, 預設密碼是


changeit



- 解決方法來源 stackoverflow https://stackoverflow.com/a/36427118

- Exceptions:


2018/03/16 11:43:36 [ERROR] [com.xxxxxx.mobile.web.controller.GlobalExceptionHandler@ajp-nio-8009-exec-9]_jspService(130) jsp error on:/mobile/WEB-INF/jsp/error/error.jsp
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Problem accessing the absolute URL "https://www.xxxxxx.com/mobile/ad/banner". javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:596)
...

Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException: Problem accessing the absolute URL "https://www.xxxxxx.com/mobile/ad/banner". javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:905)
... 81 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
... 84 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
... 101 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
... 107 more




FATAL: sorry, too many clients already

Posted on March 8th, 2018


有時候在 pgsql 會遇到這個錯誤訊息,意思大概就是當前連線數量已達上限,
有可能是因為重複啟動 tomcat 等等

FATAL: sorry, too many clients already




總之可以透過這個 query,刪除10分鐘內的 idle 連線,應該就可以繼續使用。

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'xxxxx'
AND pid <> pg_backend_pid()
AND state = 'idle'
AND state_change < current_timestamp - INTERVAL '10' MINUTE;SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'xxxxx'
AND pid <> pg_backend_pid()
AND state = 'idle'
AND state_change < current_timestamp - INTERVAL '10' MINUTE;


Eclipse Oxygen SVN Connector

Posted on March 7th, 2018


Eclipse Oxygen 無法安裝 SVN connector

透過 svn-plug 底下安裝 plug-in 會閃一下就關閉

而直接去找 SVN-kit 或 JavaHL 的 connector update-site 嘗試安裝也失敗

所以找到遇到同樣問題的人,透過特定的 update-site 來安裝 SVNKit Connector,才順利解決這個問題



來源:Mauro Molinari 在 https://bugs.eclipse.org/bugs/show_bug.cgi?id=518033 發表的解法
其實也是直接透過 update-site 來安裝,但是來源不同,這版應該有特別處理過。

Same problem here.



是說 MacOS 上的免費且好用的 SVN GUI 圖形化工具好像有點少 QQ

The Simplest Http File Server (by nodejs)

Posted on February 26th, 2018


快速建立 http file server


###安裝
```
npm install http-server -g
```

###執行方法1
```
cd D:\Folder
http-server
```

###或執行方法2
```
http-server D:\Folder
```

hibernate column validation annotaion

Posted on February 14th, 2018


@NotNull
@Size(min = 2, max = 14)
private String productName;

jQuery namespaced event

Posted on January 8th, 2018


在處理 jQuery Mobile 時,因為是手機介面,所以常常需要透過綁定 scroll 事件來處理各種狀況,

一般通常是 scroll to HIDE 或 scroll to LOAD&SHOW

但某些情況有可能會導致重複綁定的問題,所以需要透過 namesapced 的 event 來解決,避免兩個相同的事件(但處理不同情況)互相干擾

例如:

某些頁面要在 scroll 時把元素 A 和 B 都隱藏:


$(document).on('scroll', function (event) {
//TODO: determine the length of scrollTop to hide element A
}

$(document).on('scroll', function (event) {
}

但有時候元素 A 和 B 的事件都是 global 使用的, 但其中某些頁面不處理 B:

$(document).on('scroll', function (event) {
//TODO: determine the length of scrollTop to hide element A
}

$(document).off('scroll');

當 off('bind') 時就會把 A 和 B 的 handler 都刪除了





所以必須引用 namespaced


$(document).on('scroll.typeA', function (event) {
//TODO: determine the length of scrollTop to hide element A
}

$(document).on('scroll.typeB', function (event) {
//TODO: determine the length of scrollTop to hide element B
}

這樣就可以單獨 off 一個元素不影響其他 handler 的綁定

$(document).off('scroll.typeA');

$(document).off('scroll.typeB');



btw. 可以透過 jquery 去檢查目前事件有哪些 handler


$._data(document, 'events');

// 例如:可以把 document 中 scroll 事件的 handler 都印出來

$._data(document, 'events').scroll.forEach(function(elem) {
console.log ( elem.handler.toString());
});




參考 api:
click demo:

iOS 滑動卡卡不順暢 scroll inside scroll

Posted on November 10th, 2017

當 overflow scroll 的區塊中有其他 overflow 是 scroll 時, iOS 裝置的滑動會卡卡的,沒有硬體的慣性滑動效果

嘗試在內層的 scroll 元件 css 加上 -webkit-overflow-scrolling: touch

透過輸入法組字事件 CompositionEvent 解決 iOS 上可能無法觸發 GoogleMap Autocomplete

Posted on September 13th, 2017


透過輸入法組字事件 CompositionEvent 解決 iOS 可能無法正確觸發 GoogleMap Autocomplete
// hack: 讓 iOS 鍵盤拼完字會跳出 google map 的 autocomplete
$(pacInput).on('compositionend', function() {
$(this).trigger('blur').trigger('focus');
});




相關事件:
  1. compositionstart : 輸入法組字開始
  2. compositionend : 輸入法組字結束
  3. compositionupdate: 輸入法修改字詞

[1] 參考 MDN: https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent


jqueryMobile 下載檔案注意事項

Posted on June 26th, 2017

jQuery Mobile 下載一般檔案 data-ajax="false"

```
```

Liullen

Notes from my experience.