2013年3月29日 星期五

為什麼 long 轉成 float 不會有錯誤?

在資料上顯示,Java 的 primitive type 中,long 的長度是 64-bit、float 長度是 32-bit
但是就資料廣度而言,float 卻比 long 來得大,也就是把 long 直接指給 float 變數時,不使用強制轉型也不會產生任何錯誤。
看起來似乎有點不合理,但其實背後的原因是因為資料的表示方法不同。

2013年3月22日 星期五

實作 MongoDB 的 tail 指令

當資料放在 MongoDB 上時,有時會想要用類似 Linux 的 tail 指令來觀察新增的資料的狀態~
這時可以利用以下的 script 來達成!

2013年3月15日 星期五

用 Daemon 的方式開啟及關閉 MongoDB

開啟 MongoDB:
mongod --smallfiles --fork --logpath /mongo.log
其中 /mongo.log 是讓 MongoDB 寫入 Log 的位置,必須是一個檔案路徑。如果該檔案已經存在時,MongoDB 會自動產生 "檔名*" 的檔案。
例如這裡用的檔名是 mongo.log,因此當檔案已存在時,MongoDB 產生的 Log 檔會是 mongo.log* 的形式。

2013年2月28日 星期四

在 eclipse swt 的介面上放 tool tip

實作 tool tip 時,其實就是在介面上面放一個滑鼠停留的事件
當事件發生時,要求程式畫出一個文字欄位,把 tool tip 要顯示的東西放在欄位上。
範例的滑鼠停留事件可以參考 [1]。

2013年2月25日 星期一

在 OpenJDK 上使用 JavaMail 的問題

目前還在尋找問題中。
已經發現的問題是 JavaMail 在建立 Socket 連線時會噴以下的 Exception:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
  nested exception is:
        java.io.IOException: Can't create MailSSLSocketFactory
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1966)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
        at javax.mail.Service.connect(Service.java:295)
        at javax.mail.Service.connect(Service.java:176)
        at org.twgogo.jimwayne.mail.MailService.sendMail(MailService.java:266)
        at org.twgogo.jimwayne.mail.MailService.sendMail(MailService.java:157)
        at org.twgogo.jimwayne.main.Main.sendMail(Main.java:52)
        at org.twgogo.jimwayne.main.Main.main(Main.java:23)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.io.IOException: Can't create MailSSLSocketFactory
        at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:344)
        at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:239)
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1929)
        ... 12 more
Caused by: java.security.KeyStoreException: problem accessing trust storejava.io.EOFException
        at sun.security.ssl.TrustManagerFactoryImpl.engineInit(TrustManagerFactoryImpl.java:75)
        at javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:247)
        at com.sun.mail.util.MailSSLSocketFactory$MailTrustManager.<init>(MailSSLSocketFactory.java:333)
        at com.sun.mail.util.MailSSLSocketFactory$MailTrustManager.<init>(MailSSLSocketFactory.java:331)
        at com.sun.mail.util.MailSSLSocketFactory.<init>(MailSSLSocketFactory.java:115)
        at com.sun.mail.util.MailSSLSocketFactory.<init>(MailSSLSocketFactory.java:94)
        at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:337)
        ... 14 more

no object DCH for MIME type multipart/mixed

在嘗試把寄信的程式寫成獨立的 Java 應用程式時,遇到以下的 Exception:
javax.mail.MessagingException: IOException while sending message;
  nested exception is:
 javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; 

Google 了一下,雖然還蠻快找到解法,不過還不是非常了解這個問題的原因
可能是系統沒有預設告訴 JavaMail 要如何處理特定的 MIME 格式吧。

2013年2月23日 星期六

在 Linux 上檢查某個 port 是否可連接

當遇到某些網路不通的狀況時,可能會想確認是程式的問題還是網路的問題
在 Linux 上可以直接利用 nmap 這個工具來確認。