2013年1月23日 星期三

1~100 亂數排序/產生

昨天遇到一個問題 ... 亂數排序1~100

之前曾用過的做法...這算是亂數產生

import java.lang.Math.*;
public class javaTest{
 public static void main(String[] arg){
  int flag=0;
  int[] array = new int[100];
  for(int i=0;i<array.length;i++){
   do{
    int temp =(int)((Math.random()*100)+1);
    for(int j=0;j<i;j++){
     if(temp==array[j]){
      flag=1;
      break;
     }
     flag=0;
    }
    array[i]=temp;
   }while(flag==1);
   System.out.println(temp);
  }
 }
}

昨天腦袋不清醒竟然用了個偷懶的寫法... 這比較像是題目要的 , 亂數排序

import java.lang.Math.*;
public class javaTest{
 public static void main(String[] arg){
  int[] array = new int[100];
  for(int i=0;i<array.length;i++){
   array[i] = i+1;
  }
  for(int i=0;i<array.length;i++){
   int position = (int)((Math.random()*100));
   int temp = array[position];
   array[position] = array[i];
   array[i] = temp;
   System.out.println(array[i]);
  }
 }
}

2013年1月9日 星期三

查詢 Port 佔用

因為最近常常有port 被佔用的問題發生 , 結果一查才發現竟然是 Foobar ... 挺令我感到神奇的, 再查發現是裡面一個component : foo_httpcontrol 搞的鬼~_~ 這component是讓FoobarCon這個APP能用遠端控制Foobar2k所需要的一個component , 平常他的port 可以修改 , 不過因為FoobarCon的緣故 , 造成port 被固定在 8888 .....結果沒想到這麼好死不死他的port 跟 目前的case用一樣 ... 真是太悲劇, 之前就有用過這component , 基本原理就是讓Foobar能傳/收 http的訊息 , 這樣一來可以透過網頁 or APP之類能連上網路收發http訊息的管道來控制Foobar...

以上是題外話 , 以下是查詢步驟

  1. 查詢命令:netstat - ano, 查詢PID
    在 "開始" => "執行" 下鍵入 cmd 會跳出 "命令提示字元視窗", 再輸入上面命令 nestat -ano 會列出目前電腦使用PORT的情形, 我們先查詢佔用程式的PID值
  2.  開啟 "工作管理員" 找尋程式
    ‧按下快速鍵 Crtl+Alt+Del 即可呼叫出工作管理員,或在視窗最下方的藍色工具列上按右鍵, 點選工作管理員
    ‧再到 "處理程序", 若無 PID的欄位, 請先至 "檢視"=> "選擇欄位" 將PID勾選便可以瀏覽
    ‧找出PID值的使用程式名稱即可知道佔用的程式為何

2013年1月4日 星期五

CrystalReport - CheckBox

第三篇的CrystalReport , 其實是要講一個特別的應用 , 在Crystal Report中根據參數的值來顯示CheckBox , 然而因為CR本質上還是個報表軟體而已, 所以像是CheckBox這樣的元件是沒有附贈的 , 只好改用特別的方法來完成這功能. 網路上很多人都有介紹過這應用 , 但是大部分都用Basic的語法XD 我因為不會用Basic所以改用Crystal的語法來做!!

在開始功能之前要先來講講一個字形系列 Wingdings , 借用了百度的介紹 , 非常的落落長, 不過簡單來說就是微軟創造出來取代一些小圖片的文字. 剛好符合我們今天的要求 , 利用文字來呈現勾選以及非勾選.

我們今天應用到這兩個小圖示

    ASCII編碼0xA8(168)
    ASCII編碼0xFE(254)

第一個方法是利用建立公式欄位來完成 , 公式欄位簡單來說就是撰寫一個公式, 然後該公式的東西會表現在這個欄位上.
建立CheckBox步驟為

    1. 欄位總管>公式欄位>新增>設定名稱
    2. 接著在中間寫入
    3. if 判斷式 then
              Chr(168)
        else
              Chr(254)
    4. 然後按下完成, 接著從欄位總管的公式欄位裡面找到該欄位並把欄位拉入表格

但是~放入以後會發現怎麼跟想像的不一樣呢! 其實是還沒做完 ,

    5. 接著對該文字物件點右鍵 > 欄位格式設定 > 字型
        把字型改成Wingdings就可以了!


另外一個方法則是改變背景顏色達到填滿的效果, 不是用公式欄位去完成這功能, 而是要先插入一個文字物件再對背景顏色的部分撰寫公式來達到判斷, 這樣就能完成此功能了

    unCheck - 背景填滿白色


    Check - 背景填滿黑色


    1. 頁面上右鍵>插入文字物件>並增加外框
    2. 文字物件上右鍵>文字格式設定>框線>色彩>背景打勾之後再進後面的公式按鈕
    3. if 判斷式 then
              crBlack
        else
              crWhite

     crBlack跟crWhite 都是內建好的顏色 , 這樣一來就不用自己去記憶色碼, 除此之外當然也可以用傳統的RGB 或是CR自身語法的Color, 效果一樣.

2013年1月3日 星期四

Crystal Report 隱藏 / 顯示

不得不說... CR的中文翻譯真的很鳥 , 很多時候看英文原文可能還比看中文還簡單易懂, 例如這個抑制顯示就是很好的例子 , 簡單來說就是 ... 隱藏.
但是在CR裡面要隱藏有很多方法 , 以下擷取CR的線上文件

[區段專家] 中有三種屬性可以用來設定隱藏報表區段。
  • 隱藏 (可擷取細目)

隱藏屬性可隨時在報表執行時隱藏區段。例如,在摘要報表中可使用隱藏屬性來僅顯示摘要,而不顯示摘要背後的細目。當區段上套用隱藏屬性時,若使用擷取細目資料指標來擷取區段內容的細目,就看得見該區段。這項屬性是絕對的;不能使用公式來設定套用的條件。

  • 抑制顯示 (無擷取細目)

抑制顯示屬性也可以在報表執行時隱藏區段。但 [抑制顯示] 屬性不像 [隱藏] 屬性,不能在套用後擷取細目來顯示區段內容。這項屬性可以用絕對的方式來套用,或使用公式來設定套用的條件。這對撰寫信件而言很有用;例如,您可能會在信件中建立兩個 [細目] 區段:當銷售量達到或超過 $X 時抑制顯示其中一個區段,當銷售量低於 $X 時則抑制顯示另一個區段。

  • 抑制顯示空白區段

抑制顯示空白區段屬性可隨時隱藏沒有物件的區段。如果將某個物件放入區段中,而且它會在報表中產生數值,這個物件就會顯示出來。

2013年1月2日 星期三

Crystal Report 群組 總和 累加值

Crystal Report , 之前在使用Visual Stuido 就有看過 , 但是因為本身很少碰DB 所以對這套軟體還是不熟, DotJ的時候是有碰觸iReport ,不過好像也是不了了之 , 之後到了現在的專案才開始真正碰觸到CR , 第一次接觸到的CR只是單純的使用SQL語法來撈出資料(CR把這種方式叫做命令), 這次的CR則是多了很多進階的應用, 包括邏輯判斷或是輸入參數等等 .

首先碰到的就是計算總和, 其實在SQL的時候我個人就覺得要計算總和很麻煩 , 到了CR原本以為要用公式或是什麼下去, 後來Google了一下才發現好像可以用軟體內置的簡單方法完成, 而解決方式就是 - 累加值 , 不得不說, CR本身就附帶了很棒的中文化的使用說明 , 雖然Micro$oft 也做了一個線上的說明版本, 可是說真的... 什麼東西只要經過M$的手, 都會變得又臭又長又看不懂(個人偏見), 所以還是用軟體內建的說明來的簡單明瞭扼要.


首先是一般常見的累加 , 他不只能做到總和功能還可以做到平均等等