透過 js 檢查 input file 的檔案副檔名

Posted on May 30th, 2014

由於 html5 開始才支援 accept 屬性: audio/*, video/*, image/*

可以用於檢查 input file 的檔案格式,

ex:

REF: w3schools

但若要支援較舊的瀏覽器, 似乎只能夠過檢查副檔名來判斷

這邊透過 split('.') 再用 array 的 pop() 取出最後一個點後方的字串, 也就是副檔名,

若是以單存取得副檔名的功能來說, 這個方法還滿簡潔的.

當然若要直接用 RegExp.test() 來驗證整個檔名也完全可以, 我想效能應該不會差太多.., 所以這篇只是想記錄取副檔名的用法: split('.').pop() XDD

A Simple DEMO@JSFiddle


btoa(), atob() 支援中文的方法

Posted on May 14th, 2014

由於 btoa 只能以英文數字等非 unicode 組合作為輸入, 所以若要支援 unicode 字元(中文), 必須用替代方法, 先將內容 escape 再 encode,


DEMO: [jsfiddle](http://jsfiddle.net/zrj9ydgc/)

REF: [window.btoa(MDN)](https://developer.mozilla.org/en-US/docs/Web/API/window.btoa)

Data Uri Schema

Posted on May 12th, 2014

藉由瀏覽器的 data uri schema,
使用 data type: application/octet-stream 就可以用來下載由 javascript 產生的資料,
不經由瀏覽器, 且大部分瀏覽器皆支援, (IE8 有 32KB 的 data 限制)
配合 download 的 tag attribute 就能夠指定下載名稱 (only support: ff, chrome)

最明顯的缺點是效能, 無法 cache 且每次載入必須重新 decode 和 embed


REF: [Data_URI_scheme (Wikipedia)](http://en.wikipedia.org/wiki/Data_URI_scheme)

Css 無線轉圈圈 loading

Posted on May 9th, 2014



DEMO: [JSFIDDLE](http://jsfiddle.net/aRgTP/)

SolrServer.commit() 拋出 500 Server Error 的 RumtimeException

Posted on April 9th, 2014

Client 透過 SolrServer.commit() 將資料送到Solr Server 時,
若拋出 500 Server Error 的 RumtimeException,
但資料卻有正常存入 Solrm,
可能就是 web.xml 的 Filter 先後順序的問題,
Solr 希望 SolrDispatchFilter 可以優先被處裡,
故將以下 filter 放到最前面即可


----

### 以下為 Server Error 時, Server 端的錯誤訊息

> 10047764 [qtp2912633-15] ERROR
> org.apache.solr.servlet.SolrDispatchFilter - null:
> org.apache.solr.common.SolrException:
> Solr requires that request parameters sent using application/x-www-form-urlencoded content-type can be read through therequest input stream.
> Unfortunately, the stream was empty / not available.
> This may be caused by another servlet filter calling ServletRequest.getParameter*() before SolrDispatchFilter, please remove it.


How To Embed Gist In Postach.io

Posted on March 27th, 2014

因為直接在 postach.io 貼 markdown 的 code block 總是無法很漂亮的有 color schema,

而且似乎對 xml 不支援...

所以找了一下, 原來官方也有建議的對策, 可以用 embedded gist !

gist 這個服務應該隨著 github 的流行, 滿多人都在用的
不過沒想到 postach.io 也有支援, 真好 (Y)

postach.io 給的範例:

REF: How To Embed Gist In Postach.io


Solr 不斷字搜尋, Highlight

Posted on March 27th, 2014

修改檔案 schema.xml

必須將 autoGeneratePhraseQueries 改為 true,
若為 false, 則會將 query 字串斷成多個字元去交叉搜尋,
雖然搜尋的到, 但並不會正確 Highlight 該完整關鍵字串

(好像要 schema 1.4 版才支援, 1.3版若加上去會導致 Solr Server 開不起來)

autoGeneratePhraseQueries=true|false (in schema version 1.4 and later this now defaults to false)
  • schema example:

// 避免中文被斷詞 highlight
solrQuery .setParam ( "hl.usePhraseHighlighter", true );

判斷 image 是否為 blank 和 判斷是否為 Empty

Posted on March 27th, 2014

這邊的 blank 指的是一張非常接近白色的圖片, 而 Empty 則是指一張 byte[].length == 0 的檔案


這邊是 pdfbox 擷取圖片的範例, 簡單說就是以去計算 ByteArrayOutputStream 的 byte[] 的長度




REF: [http://www.rgagnon.com/javadetails/java-0631.html](http://www.rgagnon.com/javadetails/java-0631.html)






快速建立 DB TABLE 測試的設定

Posted on March 26th, 2014



PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required

Posted on March 17th, 2014

###PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required

當 Jetty Server 作為 JSP Web Container, Server 啟動並連線時發生以下錯誤訊息:

> ...
> PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
>
> Caused by:
> org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
> ...
______


可以在 jetty9/start.ini 中, 加上:

`-Dorg.apache.jasper.compiler.disablejsr199=true`

(文章提到 Jetty 應該是大於6都適用, 我自己是在 jetty9 遇到的)

如果使用的是 embedded jetty 沒有 start.ini 可以修改的話, 可以直接在執行 jetty 的 method 之前加上:

`System.setProperty("org.apache.jasper.compiler.disablejsr199", "true");`


詳細內容可以參考:

Ref: [Stackoverflow](http://stackoverflow.com/questions/9113346/pwc6345-there-is-an-error-in-invoking-javac-error-when-using-jetty-wtp-plugi)

Liullen

Notes from my experience.