跳到主要內容

發表文章

目前顯示的是 十月, 2015的文章

羅技滑鼠送修過程紀錄

今天拿到替換品的滑鼠,整個送修事件算是告一個段落
寫一下流程紀錄讓有需要的人參考

之前購買鍵盤滑鼠的時候已經稍微查過現在的滑鼠生態
似乎現在滑鼠的微動裝置出現問題的時間都不會太短
羅技的滑鼠相較便宜貨較貴的價值就在3年保固
品質的話不熟悉這個產業也不多說什麼
不過聽說羅技早期是用日本製的微動,現在都改用中國製的

這次送修的滑鼠有兩隻,M705 跟 M105
M705是滿好用的滑鼠,不過買的時候也查到滿多案例是不長的時間內會出現連點問題
M105是價位低的有線滑鼠,這隻買來跟筆電帶來帶去也還能湊合用
前陣子M705出現連點狀況,並能排除靜電因素
結果過沒幾天,比他晚買的M105居然也開始有連點狀況
這下更是讓我打定主意非得兩隻都送修
畢竟滑鼠雖是消耗品,但價格也沒便宜到能夠讓我隨便換
都買了比較貴的保固,沒有用到比其他牌更久的時間,那不修真的是浪費錢

AWS Java code samples

紀錄最近在處理 AWS 相關 issue 時用的部分 method
最基本的 download、upload等等還滿好在 AWS 上找到範例
不過似乎有些要求就沒那麼好找

從AWS下載檔案的檔案名稱(alias name)或其他 Header 調整 AWS示範了建立供下載使用的連結的範例

public static URL getURLPresigned(String bucket, String s3name) {
    AmazonS3 s3client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));
    Date expire = new Date(new Date().getTime() + 86400000L);    // set to be available for 1 day.
    return s3client.generatePresignedUrl(bucket, s3name, expire, HttpMethod.GET);
}

但是會使用AWS的,絕大多數都是有大量檔案存取需求
應該有不少公司的做法也會是上傳的檔案會加上 hash
避免檔案被覆蓋或作為多版本紀錄用途
但是給使用者下載的檔案名稱還是要使用原先上傳時的才比較合理

一個可行的做法就是調整下載的回應的 Content-Disposition Header
這個 Header 可以用來設定下載的檔案名稱,規格的說明可以查看定義文件
寫出來的範例如下:

public static URL getURLPresigned(String bucket, String s3name, String contentDisposition) {
    AmazonS3 s3client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));
    Date expire = new Date(new Date().getTime() + 86400000L);   // set to be available for 1 day.

    ResponseHeaderOverrides headers = …

避免 scroll bar 影響網頁元件的外觀

Scroll bar 是網頁上常見的設計之一
只是有時候不太能預期你的 element 的內容是否多到需要用 scroll bar
或者是 element 的內容會隨著操作而變動
這種不確定性會對網頁的排版造成影響,很可能 scroll bar 的產生會擠壓到原本的元素



上面的示範提供了兩個例子
先注意原本的外觀後繼續操作
移動滑鼠到 element 上就可以看到 scroll bar 的產生
第一個例子的當 scroll bar 出現後,原本的文字排版也跟著變化
第二個例子則是出現 scroll bar 前後的文字排版都相同

建議不要想著去計算 scroll bar 的寬度
首先是 scroll bar 的寬度依各家瀏覽器廠商的實作而不同
再來是用 JavaScript 計算會有效能上的損耗,以及可能有相容性的問題

第二個例子的處理方式是在外面的 element 及內部的 element 中間塞入了個 div
這個 div 的外觀依需求將寬或長指定的跟外層 element 相同
這樣就能保持內容的外觀,scroll bar 也只會影響這個中介 div
很多 web 的設計都能使用這個想法,插入中介 element 讓外層跟內部的顯示效果區隔

Java 實現 JavaScript 的 encodeURIComponent

參考文章:encodeURIComponent and decodeURIComponent in Java

很多時候需要將字串轉成 UTF-8 編碼後的ascii,特別是在 Web 端的輸出
Java 裡的內建 Class URLEncoder 裡的 encode 方法看起來雖然像是為此產生
少部分沒那麼嚴謹的教學也會說用這個方式就能編譯 UTF-8
但之後可能會碰到意料之外的問題
雖然大部分的文字編碼結果都沒有問題,但極少部分的符號編碼卻跟JavaScript的不同
最明顯的就是 space,空白用Java的 URLEncoder 會編譯成 + 而不是 %20
在 Java 端產生的網址字串可能就因此不能作用