跳到主要內容

發表文章

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

Linux上OpenJDK Java字型破碎問題

最近裝PyCharm Community,字形會莫名的破碎,很醜,我試過改用Oracle JDK就正常,但是老子就是不爽用Oracle JDk。幸好有網路上高手如雲,在Ask Ubuntu裡查到,只要改 /etc/environment 加上一列 _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true' 就可以解決這問題,我建議結果UTF-8的方案,所以做成  _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dfile.encoding=UTF-8' 就完美解決。 若沒有權限去改 /etc/environment,可以在 /etc/profile或自己的~/.profile 裡加進也有相同效果。

Android Studio temp file過大

現在很多朋友和我一樣都改用SSD做為系統碟,一般的Windows程式只要改 TEMP 變數就好,在Linux就尷尬了, /tmp 遇到像Android Studio這種要把所有的Update都解開才開始安裝時,一次裝了60幾GB就會爆掉。

在Windows將Java檔案編碼預設為UTF-8 的方法

幾年前寫 讓 NetBeans 預設使用 UTF-8 編碼 ,沒想到網友還是遇到其他問題,所以應該要把整個系統的Java檔案編碼都改用UTF-8才是王道。

在.Net呼叫Java Library

最近要Support某個案子,因為廠商提供的程式是Jar,而敝公司都使用.Net,所以我找了不少 Decompiler與Java to C#的工具希望能轉成C# code,但因為原始程式經過Obfuscator,轉出都失敗。

Java 7 JCE problem on Rails 4.x

如果用jRuby 開發Rails 4.x ,將會遇到JCE的問題而導致奇怪的錯誤。

Java的bzip2函式庫

前幾年以Java寫Mail Server上log檔的判斷程式,原本是gzip格式,後來FreeBSD改成bzip2,因此必須找個bzip2的library。 找到 bzip2 library from Apache Ant ,去修改原本的程式卻不work,一直說檔案應該是'h'開頭卻得到'B',bzip2檔案格式明明是BZ開頭呀?再深入去找到 這 才知道Ant的這個library只寫了一半,必須自己處理前兩個byte。所以讀的時候要處理成: try { InputStream is = new FileInputStream(infile); is.read(); is.read(); BufferedReader br = new BufferedReader(new InputStreamReader(new CBZip2InputStream(is))); 真是太鳥了呀...

HTML Tidy Eclipse中文處理

最近有訂閱在下的巴布/Twitter的朋友,應該知道小弟這幾天想把企業內部的IE only網頁改成標準符合W3C語法,並將舊的big5網頁改為utf-8。除了難搞的IE DHTML和標準DOM差很多之外,早期全大寫的html tag在Aptana看到實在很不順眼,還有屬性內容沒有加上"或',就興起找工具來處理的念頭。 最有名的工具當然就是 HTML Tidy ,中文預設輸出成unicode表示法,但還是可以加上 -utf8 的參數強制輸出成 utf-8。 Aptana 1.2.0版之後內建很類似 HTML Tidy Eclipse Plug-in 的HTML Tidy功能,居然也有相同的Bug:設定成utf-8後中文輸出亂碼。 由於 HTML Tidy Eclipse Plug-in 使用 JTidy 這個2001年之後沒動過的project,於是就從這裏下手。(警告:以下hack非常dirty,而且只在utf-8編碼系統有效,只在Ubuntu上成功,Win32無效) 下載 jtidy-04aug2000r7-dev.zip 解開後, 在jtidy-04aug2000r7-dev/src/org/w3c/tidy/Configuration.java第471列,把int result = ASCII; 改成 int result = UTF8; 另外Aptana版的HTML Tidy不能關掉generator訊息,因此我把 Lexer.java第522列的addGenerator(Node root)裏的內容直接改成 return true; 在編輯時會有enum是keyword的錯誤訊息,所以再改Configuration.java第126~129頁的enum變數名稱為enu。 接下來在jtidy-04aug2000r7-dev目錄下輸入 ant 命令就會在build目錄下產生Tidy.jar。 把新做的Tidy.jar覆蓋aptana/plugins/com.aptana.ide.libraries_1.2.1.18697 (隨著版次數字會變)下的Tidy.jar即可。( 這裏 放一份我做的) 在Win32下要改編碼建議用ConvertZ,在Linux當然就用iconv,轉碼為UTF-8後就直接用Aptana編輯,Run HTML Tidy後若...

JDK/JRE的版本

VB超人在業主的2003伺服器上要跑Oracle,所以需要裝JDK,不過他在x64上裝x86 Java,所以看起來覺得目錄怪怪的,問我後才知道有x64版。 目前從Sun可以 下載 的JDK/JRE有:Linux (x86)/Linux x64/Solaris Sparc/Solaris x86/Solaris x64/Windows (x86)/Windows x64幾個版本。 Mac用戶可以到 這裏 下載。 Ubuntu的套件庫就有內建 OpenJDK 版本。 至於鳥毅愛用的FreeBSD,只能從ports自己編譯囉~

JRE往正確的方向前進

Introducing Java SE 6 update 10 Beta 提到JRE核心愈來愈大( 圖 ),因此出現Java Deployment Toolkit,讓應用程式選擇所需的元件即可;下載安裝JRE也只預載最小必要的核心,其他部份需要時再由網站下載。瀏覽器上除了傳統的Applet啟動方式外,也可以指定JRE版本,就不用再為了不同的JRE版本傷腦筋(可惜現在很少人寫applet了吧?)。 從JDK 1.0開始用Java,看到JRE往正確的方向前進實在令人振奮呀!

基於Java的CMS

雖然敝公司專案的CMS應該是用Rainbow Portal,但對於一個沒啥後續發展的opensource專案,實在是有點怕怕的。 不知為何同事們對PHP似乎都很排斥,於是我再找 Open Source Content Management Systems (CMS) in Java ,因為需要支援NTLM或LDAP認證Single Sign-On,今天就想找時間測試 Apache Lenya 、 OpenCms 、 Liferay 、 Jahia 。 其中 Liferay 與 Jahia 有商業版本,都相當成熟,而 Jahia 的Community版也有AJAX,故優先測試。 Jahia的NTLM支援是靠 JCIFS ,做法請看 JCIFS NTLM HTTP Authentication ;要Single Sign-On還需要 CAS 。BTW,還有 phpCAS 、 mod_auth_cas 等等,有SSO需求的朋友不妨試試。 由於時間關係,並沒有完成Jahia的NTLM整合測試。原本首選的Lenya也只支援JDK 1.4,又沒有build成功(唉,Apache也遜了),所以今天只能做到這裏。 看來我還是得再找時間測Xoops或Joomla的NTLM,若成功再遊說同事學PHP。若各位老大知道哪套好用的CMS可以NTLM整合認證,最好是C#,煩請提供給小弟,謝謝。

Java即將變成另一個COBOL了?

不要人云亦云。 先照順序看: Java is becoming the new Cobol Java會步上 COBOL 的後塵嗎? 關於”Java即將變成另一個COBOL”這篇文章 版本控制,版本升級是不是個問題? 回應”版本控制,版本升級是不是個問題?” Java , COBOL 以及版本控制 因為不是高手,而且以前用Java,現在用.Net,所以才可以客觀地以一個dummy的角度看待Java。基本上我的看法和Q大濕差不多啦。 使用Java差不多有十年,雖然不是一直在用,但是JDK 1.0寫的程式到現在也沒什麼大問題。GUI程式編譯確實會不相容,但以前編譯出來的class確能在新版JVM跑。"Write Once, Run Anywhere." 指的就是binary的相容,而不是source code相容。 就算是Perl/PHP,舊版相容性都不夠好,更別提.Net了。.Net的Binary向前相容性不算好,Source code就更差。.Net 3.5是基於.Net 2.0,所以根本不能算向前容性,只能說是Library的擴充。 Servlet Container有時候會用一些undocumented api,像com.sun開頭的那些,所以JDK更版時常會有問題,確實會在更版時造成困擾。 EJB是基於Java的一個framework,但不能代表Java。.Net上也有很多人開發一些framework最後無疾而終。以前太無聊學Struts,買了本1.0的書,結果1.1不太一樣,2.0差更多,但這也不是Java的問題呀!不信的人請從asp.net 1.0玩到3.5看看... 據在平均50分的資管系任教的學弟(他也是非本科系,Civil的Ph.D)表示,他們學校做專題也開始改用.Net,因為企業都在用,而且容易上手。 這是Sun一開始對UI處理方向的問題,而不是Java的錯。現在NetBeans也算是很容易開發,我感覺用jsf和asp.net也沒有差很多。別忘了Java有成堆的library,也有成熟的runtime;mono基本上還沒有成熟到能與jdk拼的程度。(mono真的很成熟時,微軟也會煩惱Windows Server賣不出去) 至於ROR Framework,在我不專業的眼光看來,由於activerecord、scaffold等神奇的功...

FreeBSD的Java 6

我在七月時寫 找不到FreeBSD可用的JDK 6 ,結果好像八月(還是九月)時ports就有jdk 1.6.0。但當時寫還是未成熟版本,勿用在production環境,所以也不想裝。 FreeBSD Java™ Project 現在也還看不到1.6,要看 Java 2 on FreeBSD 。 看了jserv老大的 Java SE/ME GPL 釋出 才知道 OpenJDK 的source並不是完整的jdk,因此只能用Sun JRL版權的java source。 把該抓的patch和Java source檔等等放到 /usr/ports/distfiles,就可以到/usr/ports/java/jdk16輸入make install囉~ 經過一夜... #java -version java version "1.6.0_02-p2" Java(TM) SE Runtime Environment (build 1.6.0_02-p2-root_07_nov_2007_10_57-b00) Java HotSpot(TM) Server VM (build 1.6.0_02-p2-root_07_nov_2007_10_57-b00, mixed mode) 結果:So far so good,跑Tomcat 6很正常,看來是足以勝任production了。 Java在FreeBSD的移植速度還是比OSX快,Leopard居然還沒有正式的Java 6呀... P.S. 會想裝Java是希望能找到取代很遜的COM+SQL的workflow方案。許多opensource workflow engine都是based on Java,可以參考 這裏 。ports裏的Kaffe還是 1.1.7.r1,所以我暫時不考慮囉...

Kaffe很穩定了

昨天 jserv 老大居然有留言,讓鳥毅很驚喜。連上 Kaffe 看到Screen Shots裏 jserv 老大貼的Eclipse畫面,再打開Ubuntu的Eclipse,才知道原來Ubuntu的Eclipse是用 GCJ 執行,能夠有如此高的穩定性,實在是可喜可賀的事。 如果沒記錯, GCJ 和 Kaffe 都是用 GNU Classpath ,相容性應該差不多。希望它們能像 This is Cool GCJ 一樣,加上 Swing / AWT 的支援,這樣能夠玩的東西就更多了。(現在 OpenJDK 也是GPL,互相"參考"一下應該沒什麼關係吧...)

JRuby on Rails連SQLServer使用Active Record失敗

裝好 JRuby ,記得在PATH把 JRuby 設在前面: export PATH=/usr/local/jruby/bin:$PATH set PATH=c:\jruby\bin;%path% $gem -v 0.9.4 ruby 1.8.6裏的gem是0.9.0, JRuby 附的是0.9.4 確定版本沒錯就接著安裝rails $gem install rails --include-dependencies $gem install activerecord $gem install activerecord-jdbc 在我的mac上rails有問題,把 /usr/local/jruby/bin/rails 第一行 #!/usr/local/jruby/bin/jruby 改成 #!/usr/bin/env jruby 再下載 SQLServer 2005 JDBC ,選unix版,把解開的sqljdbc.jar放到 jruby/lib裏 接下來就可以開始工作,照iThome 這個 範例 rails bookmarker 剩下的參考 JRuby on Rails 安裝方式 改config/enviroment.rb和config/database.yml 我是用ruby版的檔案直接修改,發現date錯誤,照 JRuby interact with MS SQL Server - JDBC and ActiveRecord-JDBC 改jdbc_adapter.rb,結果又出現 [#9330] Error connecting to a MSSqlServer database in a rails app. 所以, JRuby 想用activerecord-jdbc連SQLServer確定目前不可行,我還是乖乖地用jsp或php寫吧。 忘了說,在XP上jruby連sqlserver的測試程式居然抓到亂碼,在Mac上跑反而正常。

找不到FreeBSD可用的JDK 6

實在很誇張,連OSX都有beta的Java 6 SDK可用(JDK 6),在FreeBSD上居然仍然停留在jdk 1.5,連Linux版的port都沒有。 這裏 的Diablo也是1.5,JDK 7都快出來了耶! 本來以為有 OpenJDK 就會比較快有新版,後來找到Greg Lewis 老大在 這裏 說: There are new pieces of code and altered pieces of code that need additional porting and many of the changes need to be sanity checked to make sure they still make sense. 看來還有得等了。 jserv 老大參與的 kaffe 也很久沒更新,難道真的要改用 mono ?