2024年10月7日 星期一

職業專訪--調查官

 


Q: 你的職業是什麼?

A: 我在法務部調查局工作,主要做的是緝毒工作,在第一線工作有11年經歷。

2012年3月30日 星期五

Mantis進階

1. 時區:

如果要讓Mantis所顯示的時間正常,就記得要去設定時區…不然會變成格林威治時間,
Taipei是在Asia的地方,要拉一下選單才找的到


2. 自訂欄位:

為了要自訂一個下拉式選單或Radio Button裡面的選項,每個選項要使用  |  做分隔,如下圖:


3. 自訂顯示、報表的欄位:

如果要修改全域性的檢視顯示,使用Manage Columns,剛才的自訂欄位都會顯示在下面:



如果要針對每個專案或每個帳號進行設定,可使用configuration_report




檢視頁面的參數: view_issues_page_columns
產出Excel的參數: excel_columns

Sample:

array (
  0 => 'selection',
  1 => 'edit',
  2 => 'priority',
  3 => 'id',
  4 => 'sponsorship_total',
  5 => 'custom_notes問題單號',
  6 => 'category_id',
  7 => 'severity',
  8 => 'status',
  9 => 'last_updated',
  10 => 'summary',
  11 => 'custom_參考的POL_XREF',
)

2012年2月23日 星期四

ORA-00913: too many values

當您的程式裡面有類似以下寫法
SELECT * INTO TT_RMAFL_R FROM RMAFL_R
WHERE ...

就要注意TT_RMAFL_R 和 RMAFL_R 的欄位數量型態大小要一模一樣
否則就會發生ORA-00913 Error : too many values

在多人開發環境下,要去Alter TT_RMAFL_R容易發生Table Lock,
必須要Kill 正在使用TT_RMAFL_R的Session
這樣就能進行Alter TT_RMAFL_R

2012年1月28日 星期六

Jakarta POI

POI在我們程式開發中,最常使用的時機是處理Excel檔。是Jakarta底下的一個專案。
網址: http://poi.apache.org/

處理Excel的時機,分為要讀取Excel檔案以及匯出成Excel檔。底下先介紹POI的類別指的是那些部分。

1         讀取Excel檔的流程:
1.1      讀取檔案:使用POIFSFileSystem取得一個InputStream
1.2      建立活頁簿:使用HSSFWorkbook
1.3      取得sheet:使用HSSFSheet  sheet = wb.getSheetAt(0) 表示要取得第一個sheet
1.4      取得row:使用HSSFRow
row = sheet.getRow(0);
表示要取得第一行
1.5      取得cell:使用HSSFCell cell = row.getCell((short) 0); 表示要取得第A個欄位
1.6      取得資料:

字串(String)
cell.getStringCellValue();
數字(double)
cell.getNumericCellValue()
時間(Date)
cell.getDateCellValue();


我們通常會用跑迴圈的方式去讀取資料,因此必須取得迴圈的次數,底下這些是常用的:

sheet數量
HSSFWorkbook
getNumberOfSheets()
row數量
HSSFSheet
getPhysicalNumberOfRows()
cell數量
HSSFRow
getPhysicalNumberOfCells()


HSSFCell取得資料的時候,常會發生NumberFormatException,以致於無法讀取資料,因此建議的寫法如下: 使用try catch去捉到正確的資料
if(cell != null){
                     try {
                           cellValue = cell.getStringCellValue();
                     } catch (NumberFormatException ex) {
                          cellValue = String
                                     .valueOf((int) cell.getNumericCellValue());
                     }
                }else{
                     cellValue = "";
                }

在讀取Excel的檔案,需要注意幾點:
1         通常第一排(row)是標題,不要轉檔
2         不要因為某一筆資料發生錯誤,而導致整個檔案都無法繼續轉檔
3         某一筆資料發生錯誤時,應該要紀錄是第幾筆資料發生錯誤,並回覆給User知道
4         留下Excel的這個範本,以後User上傳Excel檔案時,都應遵照此範本格式



建立Excel檔的流程:
建立Excel分為2種方法:無中生有,或者是讀取一個範本檔去增加資料,這2種方法的差別只在於workbooksheetrowcell,無中生有是用create,讀取範本是用get。底下的流程都是一樣的:
1.        new 一個ByteArrayOutputStream
2.        取得或new一個HSSFWorkbook
3.        取得或create sheet
4.        取得或create row
5.        取得或create Cell
6.        cell塞入資料  cell.setCellValue(value)
7.        HSSFWorkbook寫入ByteArrayOutputStream
因為這個部分的API非常多且雜,所以最好要養成查看API的習慣
set column寬度:
必須在一開始還未createCell之前要設好,否則會有奇怪的bug,數值大概要設到1000以上才有效果…
ex: sheet1.setColumnWidth( (short)1, (short) ( ( 50 * 4 ) / ( (double) 1 / 20 ) ) );

set row 高度:
在每一個row產生之後,在產生cell之前,是設row 高度的最好時機
ex: row.setHeight( (short) 0x349 ); //16進位制

合併儲存格:4個參數分別為(起始row,起始column,結束row,結束column)
sheet1.addMergedRegion(new Region(0,(short)5,0,(short)6));

設置UTF16編碼,避免中文亂碼:
cell.setEncoding(HSSFCell.ENCODING_UTF_16);

HSSFCellStyle
產生方式:HSSFCellStyle cellStyle = wb.createCellStyle();

強制換行
cellStyle.setWrapText(true);
水平對齊方式
cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
垂直對齊方式
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
框線
(上、下、左、右)
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
字型
HSSFFont font = wb.createFont();
font.setFontHeightInPoints((short) 12); //字大小12
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //Bold
cellStyle.setFont(font);
儲存格顏色
(前景顏色當背景)
cellStyle.setFillForegroundColor(HSSFColor.AQUA.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
資料樣式
cellStyle.setDataFormat(format.getFormat("#,##0.00"));
可用樣式:參考HSSFDataFormat  (0代表一個數字、#代表如果為0,則不要顯示)
常用樣式: double num = 1323.21345;
cellStyle.setDataFormat(format.getFormat("0")); à 1323
"0.00" à 1323.21
"#,##0" à 1,323
"#,##0.00" à 1,323.21
double num = 0.3214
"0.00%" à 32.14%




POI Tip:
1.        寫的時候,可以先寫成小程式,之後再把這個小程式套在Web App
2.        Web產生Excel,通常都用Servlet直接轉成outputStream,而不會產生一個檔案放在Server上面。
3.        User上傳檔案,在Struts可以用uploadFileForm…