顯示具有 Java 標籤的文章。 顯示所有文章
顯示具有 Java 標籤的文章。 顯示所有文章

2015/04/10

[C#][Java] jni4net 基本使用 - Java呼叫C# 函式庫

首先, 到 jni4net 官方網站下載此套件. (我下載的是0.8.8版)
解壓縮後, 會得到三個資料夾:
  • bin: 內有 proxygen.exe 執行檔, 用來產生Java與C#程式間溝通用的Proxy.
  • lib: 包含將來執行時要用到的 .dll 與 .jar 檔.
  • samples: 顧名思義, 放的是 jni4net 的範例程式碼.
使用情境: 撰寫一個 C# 的函式庫, 讓 Java 程式可透過 jni4net 套件執行該 C# 函式庫.
Step 1: 利用 Visual Studio 建立一個名為 CSharpLib 的 C# 函式庫專案, 並簡單寫一個MainTable.cs 程式如下:

2011/11/03

[Java] 讀取 Google Android Market 的 Sales Report

參考資料: http://code.google.com/intl/zh-TW/apis/checkout/developer/index.html
POST URL: https://checkout.google.com/api/checkout/v2/reports/Merchant/{merchantID}
在抓取 Report 前, 先說明如何找到後面程式需要的 Merchant IDMerchant Key.

2011/11/01

[Java] 讀取 App Store 的 Sales and Trends Report

參考文件: iTunes Connect Sales and Trends Guide (PDF)
在第三章 [Downloading, Reading and Understanding Sales and Trends Data] 有提到一個 Auto-Ingest Tool.
因為此 class 可在網路上找到 Source Code, 所以就能瞭解此程式到 App Store 抓 Report 的做法.
此程式的關鍵就在於 Apple 有放出一個 URL (https://reportingitc.apple.com/autoingestion.tft) 讓需要的人可透過簡單的 HTTP POST 來取得一個 .gz 檔.
取得此 .gz 檔後, 可再自行解壓縮以得到一個 .txt 的 CSV 資料檔, 最後再將此 CSV 格式檔匯入資料庫中.

2011/08/18

[Java] Apache 的 Commons Configuration 入門

2011/03/29

[BIRT] BIRT 的 Runtime Connection 設定 (proxool)

BIRT(Business Intelligence and Reporting Tools) 這套 Java 的報表套件其實還蠻好用的. 不過報表設計工具只有整合在 Eclipse.
有用過這一套的人大概都知道, 設計完一個報表後會產生一個 .rptdesign 的檔案.
而一般在程式中呼叫此報表檔, 並繫結資料的程式碼大致如下:
IReportRunnable design = this.birtReportEngine.openReportDesign("test_report.rptdesign");
IRunAndRenderTask task = this.birtReportEngine
                .createRunAndRenderTask(design);
// set report parameters
task.setParameterValue("startTime", "2010-09-01");
task.setParameterValue("endTime", "2010-12-01");
// set output format
HTMLRenderOption options = new HTMLRenderOption();
options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
options.setOutputStream(response.getOutputStream());
task.setRenderOption(options);
// run the report
task.run();
task.close();

2010/08/18

[C#][Java] Excel 日期欄位的數值轉換

在 Excel 中, 如果將儲存格的資料設定至 "日期", 就可以輸入一個數字表示日期. (下圖)
儲存格格式
也因為 Excel 用數字表示日期, 所以有些 API 在讀取 Excel 裡的儲存格資料時, 會讀出一個數字的字串, 而不是一般預期的日期字串.

2010/08/06

[Java] 修改 jForum 預設的 log 等級

最近在研究這一套 open source 的論壇, 一裝起來就發現有一些擾人的 java.sql.SQLWarning 跑出來.
例如:

[C#][Java] 處理讀取 XML 時發生的 The entity "xxx" was referenced, but not declared 例外

在XML的應用上, 有時會處理到一些無預期的資料, 例如以下的 sample:
<?xml version="1.0" encoding="UTF-8" ?>
<message>
  <from>yilin</from>
  <content>copyright &copy; 2008  Power by Test site</content>
<message>


[Java] 客制化 JProgressBar 的進度條顏色

在論壇上看到一個這樣的需求:
  • javax.swing.JProgressBar 的顯示要包含五種顏色, 第一段(0~20%)紅色, 第二段(20%~40%)橙色, 第三段(40%~60%)綠色, 第四段(60~80)黃色, 第五段(80~100)藍色.
我的想法: 寫一個繼承 javax.swing.JProgressBar 的類別, 並複寫 paint() , 來達到此目的.

2010/07/30

[C#] 在 .Net 程式中呼叫 Java 的 Web Service

先前測過 Java 中呼叫 .Net 的 Web Service (here), 現在反過來, 在.Net 中呼叫 Java 的 Web Service.
環境說明:
  • Java 開發工具: Netbeans 6.5.1
  • Java Web Server: Tomcat 6.0.18
  • Java Web Service 套件: JAX-WS 2.1

2010/07/28

[C# & Java] .Net 加密 (DESCryptoServiceProvider) VS. Java 解密

前言: 這邊只列出我工作上有遇到的情況, 並未對所有的加解密做很完整的舉例/說明.
        不過如果有人能提供其他情況, 我是可以試著去解看看.
情境: 在 .Net 中, 利用 DESCryptoServiceProvider 進行加密. 加密的 Mode 為 ECB, Padding 為 None, Zeros 與 PKCS7.

[Java] 在 Java 程式中呼叫 .Net 的 Web Service

開發工具:
  • Java: Netbeans6.5 (plugins: Web Services)
  • dotNet: Microsoft Visual Studio 2008
dotNet 部分 (Web Service Server) :
  1. 透過 VS2008 在網站 (Ex: MyTest) 中建立一個名為 HelloWs.asmx 的 Web 服務.
    HelloWs.cs 的程式碼如下:

2008/07/17

[Java]Netbeans6.1的Java檔中文出現亂碼

原本以為 Netbeans6.1 跟以前的版本一樣, 要到 Tools –> Options 找 Encoding 的設定, 然後改成 Big5 / UTF-8.
沒想到這一版只要在專案上按滑鼠右鍵 –> Properties –> Source –> 畫面下方就有一個 Encoding 可以選.
如果原本檔案是用 Big5 儲存( Notepad 看到的編碼是 ANSI), 就選 Big5 的 Encoding.
如果是 UTF-8 的編碼, 預設應該就是 UTF-8 , 不用另外改 (簡體中文版例外).
注意: 已經用 Netbeans 開啟的檔案, 要關掉再開一次才會正常顯示

2007/06/15

[Java] iText遮罩圖設計

  • 用 java.awt.image.BufferedImage 繪製不規則圖形
    //產生一個200x200的BufferedImage
    BufferedImage img = new BufferedImage(200, 200, BufferedImage.TYPE_BYTE_GRAY);
    //產生一個正三角形與倒三角形,組合成一個六芒星的形狀
    int[] aX = {100, 0, 200, 100};
    int[] aY = {0, 150, 150, 0};
    int[] bX = {100, 0, 200, 100};
    int[] bY = {200, 50, 50, 200};
    img.getGraphics().fillPolygon(aX, aY, 4);
    img.getGraphics().fillPolygon(bX, bY, 4);
    //強制將圖形以黑白兩色呈現, 這樣就可以將不規則圖形成為遮罩圖
    Image mask = Image.getInstance(img, null, true);
    //將繪製的圖形做一次Invert, 不然會變成顯示六芒星以外的圖
    mask.setInverted(true);
    mask.makeMask();
    //讀取欲顯示的圖片
    Image image = Image.getInstance("c:\\image.jpg");
    //設定該圖片的遮罩圖
    image.setImageMask(mask);
    //設定該圖片在pdf版面中的位置
    image.setAbsolutePosition(100, 100);
    //最後透過PdfContentByte的assImage將圖片加入即可

2006/09/04

[Java]在jTds中使用MS950編碼

  1. http://jtds.sourceforge.net/ 中下載jTds這一套JDBC Driver.
  2. 將 jar 檔 (ex:jtds-1.2.jar) 解開.
  3. 在 net\sourceforge\jtds\jdbc 目錄中編輯 Charsets.properties 檔
  4. 在編碼清單中加入一行: MS950=2|MS950, 編輯後儲存
  5. 將目錄再包裝成 jtds-1.2.jar 即可

2006/08/25

[Java]讀取MS Access資料

//設定Connection的URL
String filepath = "./test.mdb";
String url = "jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb);DBQ=" + filepath;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//取得Access的Connection
Connection objAccessConnection = DriverManager.getConnection(url);
DatabaseMetaData objMeta = objAccessConnection.getMetaData();
//取得Access的Table Schema
ResultSet objTables = objMeta.getTables(null, null, null, new String[]{"TABLE"});
//取得Access中的所有表格
while (objTables.next()) {
    //表格名稱
    String strTableName = objTables.getString("TABLE_NAME");
    //查詢的SQL句
    String strQuerySql = "SELECT * FROM " + strTableName;
    //查詢用的Statement
    Statement objAccessStatement = objAccessConnection.createStatement();
    //取得資料集
    ResultSet objData = objAccessStatement.executeQuery(strQuerySql);
}

[C# & Java]GET/POST資料

[C#]
  • GET:
    //設定GET資料
    Uri t_uri = new Uri("http://localhost/Test/Get.asp?id=yilin");
    HttpWebRequest t_req = System.Net.WebRequest.Create(t_uri) as HttpWebRequest;
    t_req.Method = "GET";
    //取得回應的內容
    System.Net.WebResponse t_resp = t_req.GetResponse();
    System.IO.StreamReader t_stream = new System.IO.StreamReader(t_resp.GetResponseStream());
    Console.WriteLine(t_stream.ReadToEnd().Trim());
  • POST:
    string t_url = "http://localhost/Test/Post.asp";
    string t_post = "id=yilin&password=helloworld";
    //將POST資料轉成byte array
    byte[] t_bytdata = Encoding.UTF8.GetBytes(t_post);
    WebRequest t_req = WebRequest.Create(t_url);
    //設定POST資料
    t_req.ContentType = "application/x-www-form-urlencoded";
    t_req.Method = "POST";
    Stream t_ws = t_req.GetRequestStream();
    t_ws.Write(t_bytdata, 0, t_bytdata.Length);
    t_ws.Close();