跳到主要內容

發表文章

Java - 使用 JavaScript Engine 在後端執行 JavaScript

這篇是想寫好一段時間了 最近剛好有需求做了滿完整的應用,剛好可以拿出來當示範 Java的JavaScript engine在現在前端開發的需求越來越多的情況下,活躍的場合更多了 通常在以下狀況,你可以考慮使用JavaScript Engine 1.你想在前端使用Java的物件、類別或方法 2.前端複雜的邏輯需要在後端實現 當然你也可以將前端的運算結果用JavaScript engine傳送給後端 不過我想這個需求,使用browser request傳遞前端運算成果到後端做起來會簡單很多 這次我的實作目的是需要將一段前端邏輯拉到後端實作 目的程式最初是為了前端的功能實作,儲存資料的方式也是JSON 最後會compile成一段在JavaScript執行的code 不過有時候變化就是那麼突然(咦),因為客戶的需求及安全性考慮需要在後端使用這個功能 這次乾脆讓他在後端以JavaScript的方式省掉重新設計邏輯的麻煩 程式碼如下:

[轉載] 「無效的用戶名或密碼」:這種設計真的糟透了

優化系統設計流程的小細節 文章来自 36氪 如果登錄時輸入了錯誤的用戶名(通常是Email)或者密碼 大部分系統會彈出這麼一句話:Invalid Username or Password(無效的用戶名或密碼) 系統不會告訴你究竟是哪一個輸錯了,因為他們是特意被設計成這樣的 這樣做的原因,是出於安全性 如果有人惡意嘗試破解,具體告訴他們密碼錯了就意味著Email是對的 (帳號存在) 無形中為他們排除了一個選項 遺憾的是,這種設計顯然低估了人們的智商

Android - ImageView 移除多餘 Padding

使用 ImageView 顯示圖片時發現有多餘的Padding出現 查詢過後得到原因的解釋 因為手機解析度(density)的差異 ImageView在不同的裝置上的邊界顯示會有所不同 要確保圖片的顯示正確,可以在 ImageView 上設定adjustViewBounds屬性 <ImageView             android:layout_width="wrap_content"             android:layout_height="wrap_content"             .....             android:adjustViewBounds="true" />

Java 8 Nashorn ArrayIndexOutOfBoundsException

雖然有一段時間沒有發文 不過其實我都還是有寫些草稿,只是一直沒有完整的時間加筆 今天趁這個問題還在時效內,貼出來充版面XD 今天碰到的問題是在Java的scripting engine上跑字串實字(literal notation)會碰到  ArrayIndexOutOfBoundsException 追蹤原因後才發現客戶端使用了JDK8,難怪會有這個跟測試端不同的狀況 如同大家所知,在JDK8後Oracle揮別了過去使用的Rhino,改用新開發的Nashorn 這個例外很難不聯想到新引擎的bug 查了下果然看到類似的 問題 然後這是官方的回覆 I can reproduce the problem with 8u20, however it seems to be fixed in  JDK 9 and JDK8u40. You can download a preview release of 8u40 here: https://jdk8.java.net/download.html 這個問題推測會發生在使用數字做為JavaScript物件的屬性時 目前測試還有一種暫時的解法 就是不使用字串實字建立JavaScript物件,而是用Object的Constructor建立 也就是 var obj = {} -> var obj = new Object() 目前看起來可行,當然不保證不會觸發其他的問題 也許new Object()的實作方式是使用Java的Object,所以不會有這問題 猜測歸猜測,如果沒辦法等官方的修正,也許還是可以試試看這方法

Android 在 ScrollView 裡使用 ListView

這篇純粹拾人牙慧,來源是  How can I put a ListView into a ScrollView without it collapsing? 如同大家知道的的,ListView 放入 ScrollView 之後就變成疊起來的狀態 實際上 ListView 本身就能夠 scroll,只要將 layout_height 設定成 wrap_content 就可以了 把兩個具有 scroll 能力的元件疊加使用反而會沒辦法正常顯示 但有時候你想做的會是將複數個 ListView 並排展開 外面再包一層 ScrollView 讓一次就能捲動所有的 ListView 這時候就需要一些特殊技巧處理 提醒如果你要製作的排版並不複雜 也許只需要透過 ListView 的 addHeaderView、addFooterView 就能滿足需求 如果你要捲動的範圍內包含了文字、圖片、很多個ListView等複雜的排版,才建議使用這個方式

Android Studio 初探

參考文章: IntelliJ IDEA Q&A for Eclipse Users ndroid Studio vs. Eclipse: What You Need To Know last update:2014/12/9 Android Studio是Google的Android官方開發工具,目前正式推出1.0版了 這項工具是 IntelliJ 的開源版本 + Android SDK + Gradle 的整合 取名Android Studio大概是因為這樣才會有比較多人用吧 Google已經確定不會繼續維護Eclipse上的開發套件ADT 現在已經沒有理由不用Android Studio了 Google將他調校的滿不錯,很多快捷鍵跟新功能都很方便 這篇是我從ADT轉換過來的摸索,圖片有時間的話再更新成1.0版的圖示