發表文章

目前顯示的是有「Java」標籤的文章

191119 Collections shuffle

在 Kotlin 範例程式碼中看到以下 Code Collections.shuffle(list)   但 Android Studio 卻出現以下的 Warning   Call of java mutator shuffle on immutable Kotlin collection   ------------   找到的 Kotlin 文件如下。   fun   < T >   MutableList < T > . shuffle ( ) ------------ 於是把上面的程式碼改為 val mutableList = list. toMutableList () mutableList. shuffle () list = mutableList. toList ()

190619 NetBeans 11 + JavaFX 12 Notes

圖片
今天要進行 JDBC 的環境建置。 電腦用的是 MBA Mojave v10.14.5。 Java 版本為 v.1.8.0_144。 * 會用這個版本是因為之前要執行 GlassFish 5,只有這個版本才能把 GlassFish 5 成功地執行起來。 開發環境原本想要使用之前安裝的 NetBeans v8.2。 * 訪問 NetBeans 網站後,發現 NetBeans 已歸 Apache 所有;而 NetBeans 的版本已出到 11。 * NetBeans 11 已不提供安裝程式。 * 執行 NetBeans 11 後,出現以下對話框。 內容是說,安裝 nb-javac library(高度建議)或以 JDK 9 或更新的版本來執行 NetBeans。 我是直接按下 [Install nb-javac]。 安裝完後再次執行 NetBeans 11,就沒有任何問題了。 * 會執意使用 NetBeans 是因為之前的專案使用了 JavaFX 並包裝成 exe 檔。 * 但這次使用的是 Mac,不知在包裝 exe 時會不會有問題。 * 依之前在 Windows 上的方式,要包裝成 exe,按下 Run 會自行打包。 這次在 Mac 上,一樣,把舊專案開啟後,按下 Run,果然有在進行打包的動作。 但包的是 Mac 的 app 與 dmg。 訊息如下。 Creating app bundle: /Users/rich*k&i/Documents/SoftDev/MyCodes/NetBinsPrjs/L*r&E^a%l$/dist/bundles/L#r@E!a~l(.app Error: Bundler "DMG Installer" (dmg) failed to produce a bundle. BUILD FAILED (total time: 46 seconds) 不曉得 dmg 為啥會錯,但有出現把 app 拖進 Applications 目錄的視窗,但忘了截圖。 * 剛發現 dmg 有存放在桌面,如下。其檔案所在位置經由 Finder 的 取得資訊 得知,這 dmg 是在暫存區裡。 * 現在也沒時間去詳究,因為需求是 Windows 平台,...

190320 Development Note

剛要加總一個 int array 用了 "java integer array sum" 當關鍵字 找到以下文章 Find Sum and Average in a Java Array https://www.baeldung.com/java-array-sum-average 文中使用的是 Java Stream API,範例程式如下。 Arrays.stream(array).sum(); 以下為 Arrays 的 javadoc。 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Arrays.html   Arrays.stream( int[] array ) 回傳的是 IntStream,IntStream 是 1.8 才有的類別。難怪我對它不熟。 以下為 IntStream 的 javadoc https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/IntStream.html 在 IntStream 的 sum() 之說明中提到,此 sum() 等同於呼叫以下的方法。 reduce( 0, Integer::sum ); 再看 IntStream 的 reduce​( int identity, IntBinaryOperator op ) 的說明,提到此方法等同以下的程序 -------------------------------------------------------------------------- int result = identity; for (int element : this stream)          result = accumulator.applyAsInt( result, element ) return result; --------------------------------------------------------------------...

190308 Development Note

胡亂逛,看到以下這個動畫系列分享文章 https://ithelp.ithome.com.tw/articles/10201487 開發不專心,又逛到了非看不可的網頁內容 The Eater Guide to Taipei

190307 Java

Current working directory 目前工作目錄 System.getProperty("user.dir");

190307 JWT Authentication

JWT 的架構如下。 [Header].[Payload].[Signature] Server 端拿到 Token 後,先驗證 Token 的正確性。 [Signature] = Base64Url( encrypt( [Header].[Payload] )) ------------------------------------------------------------------------- 確認 [Signature] 未被更改後,再來就是檢查是否超過規定時間。 在拆解 Token 時,會用到 Regular Expression。 JWT 是由點(.)將 Header, Payload 與 Signature 串接在一塊。 但點(.)在正規表示法中是保留字元。 所以使用 Java 的 String 的 split 拆解 Token 時,必須用反斜線(\)來知會正規表示法的 Parser 將點(.)視為字元而非正規表示法規則的一部份。 但 Back Slash (\) 在 Java 中為跳脫字元。 所以當在 Java 中要使用點(.)做為正規表示法中的字元來拆解字串時,則必須將其表示為下面這樣。 string.split( "\\." ) ; ------------------------------------------------------------------------- Java EE 中要讀取既有的 JSON,可使用 javax.json.Json 類別。 可透過 InputStream 或 Read 來建立 JsonReader 物件。 前面談到的 Token,經由 Base64 URL Decoder 解碼所拿到的 byte array 我們就可直接使用 ByteArrayInputStream 來建立 JsonReader。

190306 Evening Study

圖片
之前開發 JavaFX 時,使用的都是 NetBeans。 這次嘗試使用 Eclipse 來開發 JavaFX。 目前安裝的 Eclipse 版本為 2018-12。 但 Eclipse 並未內建 JavaFX 專案建立的功能。 透過搜尋,找到 e(fx)clipse,但找到的資訊幾乎都是舊版本。 在東看看西瞧瞧下,才在以下連結中,找到安裝用的網址。 https://projects.eclipse.org/projects/technology.efxclipse ------ 190307 ------ 後記:上面連結中提供的 Update  Site 會出現 Conflict,於是又開始在網路上搜尋相關線索。 透過以下網頁,將網頁中的 Install 標示拖曳至 Ecliplse,則會出現下圖中的視窗。 https://marketplace.eclipse.org/content/efxclipse 但以下連結中的網頁又告知,目前 e(fx)clipse 的版本為 3.5.0。 https://projects.eclipse.org/projects/technology.efxclipse 利用 3.4.1 的 URL,將其替換為以下連結;則會出現下圖中的視窗。其中的項目與昨天的兩個連結出現的項目不同。 http://download.eclipse.org/efxclipse/updates-released/3.5.0/site 以上,就是跌跌撞撞,自行摸索後,安裝了 e(fx)clipse 3.5.0。希望之後在開發上不會有問題。