import sun.misc.BASE64Encoder; 를 임포트 시, 이클립스에서 error로 표시됩니다.
대충 보니 non-public 클래스라는 이유은데요. 아래 사이트에 가보면 좀 더 공식적인 입장을 알 수 있습니다.
http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html 


이 클래스는 실제로 사용가능합니다.
단지 이클립스에서 deprecated(유효하지 않거나 없어질 ) 혹은 restricted(제한/금지된) 라이브러리에 대해서 에러로 표시하기 때문에 컴파일이 되지 않는 것 입니다.

어쨌거나 우리는 모험을 감수하고 컴파일을 해야 겠습니다!

우선 에러(error)를 경고(warning) 혹은 그 이하로 낮출 수 있습니다.
즉, 에러만 피하면 컴파일이 가능하다는 뜻이죠.

이제 직접 한번 해볼까요?

1. 환경
이클립스 인디고 입니다. (다른 버전도 preferences는 비슷할 것 입니다.)

2. window > preferences 으로 이동

3. java > Compiler > Errors/Warnings 이동
-----------------------------------

-----------------------------------

4. Deprecated and restricted API 항목에서

아래와 같이 Forbidden reference (access rules) 의 값을 
Error 에서 Warning 으로 변경합니다.

----------------------------------- 

----------------------------------- 

-----------------------------------  

5. 설정을 적용하고 나옵니다. 


만약 컴파일을 해도 sun.misc.BASE64Encoder 관련 코드에 error 가 보인다면,
이클립스에서
1. project > clean 을 해보시고 컴파일.
2. Problems 뷰 항목의 에러를 선택해서 삭제하고 컴파일

아마 이정도 잘 되실 겁니다.

대한민국 프로그램 엔지니어 파이팅!
^0^

 
 
 
Posted by bestrok
,

앵벌이 프로젝트 작업중에 C#과 VB를 연동하는 부분이 있어서 글로 남긴다.

프로젝트 투입시 C#을 알고 시작한게 아니라서 더 쉬운 방법이 있거나 올바른 방법이 있는지 모르겠다.

검색엔진도 사용해 보았으나 만든 개인만이 알아보게 만들어 놨지 인터페이스 별로 설명한 사용방법은 없었다.

결국 자바나 VB를 했던 통밥으로 들이 박으면서 알아낸 것이다.

잊혀지는게 두렵다. 그래서 남긴다.

 

솔루션 탐색기에서 해당 프로젝트명을 마우스 오른클릭하여...

1. 프로젝트 속성 ==> 응용프로그램 탭 ==> 클래스 라이브러리

2. 프로젝트 속성 ==> 응용프로그램 탭 ==> "어셈블리정보" 버튼클릭 ==> "어셈블리를 COM에 노출"을 체크

3. 프로젝트 속성 ==> 빌드 탭 ==> "COM Interop등록"을 체크

4. 아래의 메서드 추가한다.

//#################################

       public void showBox(String A)
        {
            MessageBox.Show(A);  //물론 "System.Windows.Forms.dll"DLL이 등록되어 있어야 한다.
        }

//#################################

5. 이렇게 하고 해당 프로젝트를 빌드를 하면

프로젝트 속성 ==> 빌드 탭 ==> "출력"섹션에서 정의된 출력경로로 해당 프로젝트의 TLB파일이 생성될 것이다.

 

VB6 에서 C#에서 생성한 TLB파일을 사용하는 방법은 아래와 같다.

1. 프로젝트 ==> 참조 ==> "찾아보기" 버튼클릭 ==> 생성된 TLB파일을 선택한다.

2. C#의 솔루션명이 test이고 클래스명이 test 일 경우.

//#################################

Dim testObj As test.test
Set testObj = New test.test
call testObj.showBox("aa") 'VB메시지박스가 아니라, C#의 메시지 박스가 나온다.

//#################################

3. 실행

==> VB 에서 C# 의 클래스 라이브러리를 호출해서 C#의 메시지 박스가 나온다.


Posted by bestrok
,

Private Sub Option1_Click(Index As Integer)
    MsgBox (Option1(Index).Index)    '선택된 배열값 (integer) 반환

    MsgBox (Option1(Index).value)    '선택된 배열에 대한 선택 유무 값(boolean) 반환
End Sub

Posted by bestrok
,

fpSpread1.Action = 0 또는 fpSpread1.Action = SS_ACTION_ACTIVE_CELL 으로 사용하면 된다.

 

 

0

 SS_ACTION_ACTIVE_CELL

 Activate Cell

 모든 셀을 활성화 시키면서 지정한 셀로 이동한다.

 

1

 SS_ACTION_GOTO_CELL

 Go To

 지정한 셀이 최상위에 위치한다.

 

2

 SS_ACTION_SELECT_BLOCK

 Select Block

 지정한 셀을 블록화 시킨다.

 

3

 SS_ACTION_CLEAR

 Clear

 지정한 셀의 텍스트를 지운다.

 

4

 SS_ACTION_DELETE_COL

 Delete Col

 지정한 컬럼 삭제

 

5

 SS_ACTION_DELETE_ROW

 Delete Row

 지정한 로우 삭제

 

6

 SS_ACTION_INSERT_COL

 Insert Col

 지정한 컬럼 삽입

 

7

 SS_ACTION_INSERT_ROW

 Insert Row

 지정한 로우 삽입

 

8

 SS_ACTION_LOAD_SPREAD_SHEET

 Load

 데이터 파일을 로드한다.

 

9

 SS_ACTION_SAVE_ALL

 Save All

 현재 스프레드 시트를 화일로 저장한다.

 

10

 SS_ACTION_SAVE_VALUES

 Save Values

 현재 스프레드 시트의 데이터중 텍스트만 파일로 저장한다.

 

11

 SS_ACTION_RECALC

 Recalculate

 모든 Formular의 재계산을 수행한다.

 

12

 SS_ACTION_CLEAR_TEXT

 Clear Text

 스프레드 시트의 모든 텍스트를 지운다.

 

13

 SS_ACTION_PRINT

 Print

 스프레드 시트를 프린터로 출력한다.

 

14

 SS_ACTION_DESELECT_BLOCK

 Deselect Block

 여러 셀을 선택했을때 블록을 해제한다.

 

15

 SS_ACTION_DSAVE

 Data Save

 IDK

 

16

 SS_ACTION_SET_CELL_BORDER

 Set Border

 셀의 Border를 설정한다.

 

17

 SS_ACTION_ADD_MULTISELBLOCK

 Add MultiSel Blocks

 지정한 셀들을 블록 처리한다.

 

18

 SS_ACTION_GET_MULTI_SELECTION

 Get MultiSel Blocks

 IDK

 

19

 SS_ACTION_COPY_RANGE

 Copy Range

 지정한 범위를 Copy해서 목적지에 뿌려준다.

 

20

 SS_ACTION_MOVE_RANGE

 Move Range

 지정한 범위를 잘라내서 목적지에 뿌려준다.

 

21

 SS_ACTION_SWAP_RANGE

 Swap Range

 지정한 범위와 목적지의 데이터를 교환한다.

 

22

 SS_ACTION_CLIPBOARD_COPY

 Clipboard Copy

 마우스로 지정한 블록의 데이터를 복사해서 클립보드에 저장한다.

 

23

 SS_ACTION_CLIPBOARD_CUT

 Clipboard Cut

 마우스로 지정한 블록의 데이터를 잘라내서 클립보드에 저장한다.

 

24

 SS_ACTION_CLIPBOARD_PASTE

 Clipboard Paste

 클립보드에 저장된 데이터를 지정한 블록안에 붙여넣는다.

 

25

 SS_ACTION_SORT

 Sort

 데이터를 소트 시킨다.

 

26

 SS_ACTION_COMBO_CLEAR

 Combo Clear

 콤보박스의 Item을 Clear 시킨다.

 

27

 SS_ACTION_COMBO_REMOVE

 Combo Remove String

 콤보박스의 Item을 삭제 한다.

 

28

 SS_ACTION_RESET

 Reset

 스프레드 시트를 Reset 시킨다.

 

29

 SS_ACTION_SEL_MODE_CLEAR

 Select Mode Clear

 Multiple Selection, Extend Selection Mode

 

30

 SS_ACTION_VMODE_REFRESH

 Vrefresh Buffer

 IDK

 

32

 SS_ACTION_SMARTPRINT

 Smart Print

 스프레드 시트를 프린터로 출력한다.

Posted by bestrok
,

어레이 리스트를 sql 쿼리에서 처럼 그룹바이 하고 카운트 등을 하기 위한 코드 입니다.

 

어레이 리스트는

 

{아이디,이름,A}

{아이디,이름,A}

{아이디,이름,B}

{아이디,이름,B}

{아이디,이름,B}

 

이러한 식으로 된 리스트 받아서

 

{A,2}

{B,3}

을 반환하는 예제 입니다.

 

이하 자바소스

 

############################################################

 

 

 /**
  *  리스트 2 디스팅트_리스트
  *
  * @param List
  * @return List
  * @throws  Exception 
  */ 
 public List getCenterDistinctList(List objList) throws Exception {
  
  List issList = new ArrayList();
  try{
   
   HashMap objMap = new HashMap();
   HashMap issMap = new HashMap();
   int objListSize = objList.size();
   //System.out.println("###############");
   //System.out.println("##objListSize : "+ objListSize);
   //System.out.println("###############");
   String CENTER = ""; //센터코드
   String CENTER2 = ""; //중복카운트 위함.
   int TOTAL_WORK = 1;
   int maxSeq  = this.getCenterIssueMaxNum()+1;   //센터현황 최대시퀀스값
   for (int i=0 ; i<objListSize ; i++) {      //배열은 0부터 시작. 리스트 사이즈 만큼 돌린다.
    objMap = (HashMap) objList.get(i);     //리스트에서 뽑아낸 오브젝트를 HashMap으로 캐스트.
    issMap  =  new HashMap();  
    
    CENTER = (String)objMap.get("CENTER");
    if ( CENTER.equals(CENTER2)  ){      //현재 가져온 센터코드와 바로전 센터코드를 비교하여 중복이면 TRUE
     TOTAL_WORK = TOTAL_WORK+1;      //대상국소수를 증가한다.
     issList.remove(issList.size()-1);     //바로 전 해시맵 오브젝트를 지운다.
    }else{             //현재 가져온 센터코드와 바로전 센터코드를 비교하여 중복이면 TRUE
     TOTAL_WORK = 1;         //국소수를 리셋한다.
    }
    issMap.put("CENTER", objMap.get("CENTER"));  //현재의 해시맵 오브젝트를 추가한다.(센터코드))
    issMap.put("TOTAL_WORK", TOTAL_WORK+"");  //현재의 해시맵 오브젝트를 추가한다.(대상국소수)
    issMap.put("ISSUE_SEQ", maxSeq+issList.size()+"");   //시퀀스 뽑아내기
    issList.add(issMap);         //위에서 만든 해시맵 오브젝트를 리스트에 추가한다.    
    
    CENTER2 = (String)objMap.get("CENTER");
    
   }
   //System.out.println("###############");
   //System.out.println("#getCenterDistinctList#");
   //System.out.println(issList);
   //System.out.println("###############");
   
  }catch(Exception e){
   e.printStackTrace();
  }
  return issList;
 }

Posted by bestrok
,


/*

메서드 부분만 정의하였습니다.

에러나는 부분은 임포트 하여 사용하세요.

*/

 


 /**
  * 특정 엑셀 파일을 List에 Object[]로 컨버트 한다.
  * @param FileName  불러들일 엑셀 파일명
  * @param SheetNum   불러들일 엑셀 시트 인덱스
  * @return Hash(key 는 각 셀번호가 된다.) 로 묶인 Vector Data
  */
 public List getExcel2List(String FileName, int SheetNum){
 List lst = new ArrayList();
 try{
  POIFSFileSystem fs   =   new POIFSFileSystem(new FileInputStream(FileName));
  HSSFWorkbook wb = new HSSFWorkbook(fs);
  HSSFSheet sheet = wb.getSheetAt(SheetNum);
  Iterator iter = sheet.rowIterator();

  while(iter.hasNext()){
   HSSFRow row = (HSSFRow)iter.next();
   HashMap tdHash = new HashMap();
   //Object[] objs = new Object[row.getPhysicalNumberOfCells()];
   //System.out.println(row.getPhysicalNumberOfCells());
   Iterator cellIter = row.cellIterator();
   while(cellIter.hasNext()){
    HSSFCell cell = (HSSFCell)cellIter.next();
                Object obj = null;
                int celltype = cell.getCellType();
                
                switch(celltype){
                 case HSSFCell.CELL_TYPE_STRING :
                  obj = cell.getStringCellValue();
                  break;
                 case HSSFCell.CELL_TYPE_NUMERIC :
                  obj = new Double(cell.getNumericCellValue());
                  break;
                 case HSSFCell.CELL_TYPE_BOOLEAN :
                  obj = new Boolean(cell.getBooleanCellValue());
                  break;
                 case HSSFCell.CELL_TYPE_ERROR :
                  obj = new Byte(cell.getErrorCellValue());
                  break;
                 default :
                  //obj = null;
                  obj =""; 
                 break;
                }
                tdHash.put(new Short(cell.getCellNum()),  obj);
   }
   lst.add(tdHash);
  }
        System.out.println("###################");
  System.out.println("lst:"+lst.toString());
  System.out.println("###################");
 }catch(Exception e){
  e.printStackTrace();
 }
 return lst;
 }


Posted by bestrok
,

재시작 하는데 필터에러 난다면,

소스를 하나 하나 찾기 보다

아래의 경로에 있는 최근 날짜의 로그파일을 확인하면 된다.

 

==>  workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\logs

 

열어보면 아래와 같은 문구들이 나온다.

이 예는 STRUTS.XML 설정에 액션 링크를 걸었으나 실제로 액션클래스 파일이 없는 경우이다.

 

==> Action class [com.project2.test.action.testAction] not found - action -

Posted by bestrok
,

작성자: bestrok(bestrok)

복사http://blog.naver.com/bestrok/memo/20055697620

[설정방법]
1. 관련 파일 이동
- log4sql.jar : 프로젝트 lib 폴더
- log4sql_conf.jsp

2. jdbc driverClassName 설정값 변경
<property name="driverClassName" value="core.log.jdbc.driver.OracleDriver" />
value값에서 oracle.jdbc.driver.OracleDriver를  core.log.jdbc.driver.OracleDriver로 변경.
(value값은 db 종류에 따라 알맞게 설정.)

3. 설정 변경
log4sql_conf.jsp 실행시켜 원하는 설정값 변경.

[log4sql 프로젝트 홈]
http://log4sql.sourceforge.net

http://yukino.tistory.com/ 블러그 발췌

##################################################

 

위의 내용은 발췌한 내용이고... 개인적으로 테스트 해본 결과 실제 적용방법은 조금 달랐다.

0. 기본 환경

 ==> TOMCAT 5.0

 ==> J2SDK 1.5

 ==> ECLIPSE (Dynamic Web Project) (STRUTS)

1. log4sql.jar 복사

 ==> 복사위치 : C:\Tomcat 5.0\common\lib

2. 설치된 JAR 에 대한 위치 설정 수정. (server.xml)

 ==> 이클립스 서버 프라퍼티에서 직접 수정한다.

 ==>

 ==> 웹프로젝트의 server.xml 을 아래와 같이수정한다.

           <!-- 이것이 원래 있던 jdbc 드라이버 설정이므로 주석처리고 아래와 같이 추가한다.
          <value>oracle.jdbc.OracleDriver</value>
          -->
          <value>core.log.jdbc.driver.OracleDriver</value>

 

3. log4sql 제어 방법

  ==> log4sql_conf.jsp 를 진행하는 프로젝트 웹 루트에 복사한다.

  ==> 예) http://localhost/log4sql_conf.jsp

  ==> log4sql 에 대한 수정을 쉽게 할 수 있는 인터페이스를 보여준다.

Posted by bestrok
,
출처 EverClub | 에버클럽
원문 http://blog.naver.com/whitesis1004/60015929397

* 폴더 생성하기

set fso = server.createobject("scripting.filesystemobject")
Folder = Server.MapPath("./")+"/inc" 
FSO.CreateFolder(Folder)

루트(root) : Server.MapPath(".")
현재폴더 : Server.MapPath("./")
상위폴더 : Server.MapPath("../")

 

*파일 생성하기

set fso = server.createobject("scripting.filesystemobject")
File = Server.MapPath("./test/test.asp")
set fcreate=fso.createtextfile(file,true,false)
if fso.fileexists(filepath) then 
response.write " 파일 생성"
else
response.write "파일이 존재합니다."
end if

Posted by bestrok
,