개발하면서 쓰고 있는 플러그인과 그외 유용한 플러그인을 정리해보았습니다.
사실은 매번 설치할때마다 뭐가 어디있는 지 다시 뒤적거리는 귀찮음이 싫어서 정리를 했다라는.. /(^o^)/


■ 이클립스 플러그인 관련 사이트

http://www.eclipse-plugins.info 간단한 플러그인 정보와 인기도(?) 확인 가능
http://www.sourceforge.net 각종 이클립스 플러그인 프로젝트들이 등록되어있음
http://www.eclipseplugincentral.com 플러그인 쇼핑몰, 포럼


■ DB 플러그인

1) Quantum DB (http://sourceforge.net/projects/quantum/)

왼쪽 북마크에 접속하고자 하는 DB 추가하고 환경잡기(ID, 비번, 접속드라이버 등)
원하는 북마크를 오른쪽버튼 클릭해서 DB에 connect한 후 오른쪽 쿼리 에디터에서 쿼리.

[참고]
- 오라클 JDBC드라이버 : C:\oracle\ora81\jdbc\lib\clases12.zip 찾아서 추가 (oracle.jdbc.driver.OracleDriver)
- connection URL : jdbc:oracle:thin:@000.00.00.000:1521:ORACLE8

2) dbedit (http://sourceforge.net/projects/dbedit/)

3) jfacedbc #상용# (http://sourceforge.net/projects/jfacedbc/)

소스포지에 있는 버전은 2.X 버전이고 3.0부터는 상용으로 http://www.jfacedbc.com/ 에서 다운/구매 가능 (기능은 확실히 좋을 듯...)


■ XML 플러그인

1) XMLBuddy http://www.xmlbuddy.com/
XMLBuddy pro는 #상용#입니다.

2) oxygen #상용#
url update : http://www.oxygenxml.com/InstData/Eclipse/site.xml

3) MyEclipse Enterprise Workbench #상용# (http://www.myeclipseide.com)
MyEclipse 설치하면 깔리는 XML 에디터.

4) 그 외 JXMLEditor, MetaCoder , Sunbow , X-Men, XML Schema Quality Checker


■ J2EE 개발 플랫폼

1) Lomboz (http://forge.objectweb.org/projects/lomboz)
롬보즈를 쓰기 위해서는 EMF(http://www.eclipse.org/emf)도 깔려있어야 함

2) MyEclipse Enterprise Workbench #상용# (http://www.myeclipseide.com)


■ JSP 에디터 플러그인

1) SolarEclipse (http://sourceforge.net/projects/solareclipse/)
jsp 하이라이팅 기능만 있음

2) Lomboz jsp editor (http://forge.objectweb.org/projects/lomboz)
롬보즈 설치하면 깔리는 jsp 에디터. 코드 어시스턴스 기능 있음.

3) MyEclipse Enterprise Workbench #상용# (http://www.myeclipseide.com)
MyEclipse 설치하면 깔리는 jsp 에디터. 롬보즈가 저장 시 에러 체크를 하는 반면, 실시간으로 에러 체크를 한다고 함.


■ 각종 플러그인

1) Yoxos ( http://www.yoxos.com/ )

유용한 플러그인들을 묶어 프로그램 인스톨하는 형식으로 배포.
종류별로 잘 분류되어 있고 설치시 필요한 플러그인만 선택하여 설치 가능.

2) subversion (svn) 플러그인
url update : http://subclipse.tigris.org/update

3) SWT/Swing 디자이너 #상용# http://www.swt-designer.com/

4) freemem : 메모리 사용현황 모니터링
url update : http://www.junginger.biz/eclipse


■ 플러그인 설치

1) 설치유형 1 : 복사
받은 플러그인 파일을 C:\eclipse\plugins 에 복사하고 재시작

2) 설치유형 2 : url update
Help > Software Updates > Find and Install 메뉴 선택
"search for new features to install" 선택후 next 버튼
new remote site 버튼을 클릭하여 플러그인명과 url update 주소를 입력하면 다운 받을 수 있다.

3) 플러그인 설치 문제 해결

복사해서 플러그인을 설치 할 때 가끔 반영이 안되는 문제가 있다.
똑같이 설치를 해도 잘 되는 컴이 있는가 하면 그렇지 않은 것도 있으니... -_-a
처음 실행 이전에 플러그인을 모두 복사해야 정상작동할 듯 싶다. 일단 실행 이후에 플러그인을 추가 설치하면 간혹 말썽이다.

첫째, Help > Software Updates > Manage Configuration 에서 설치되지않은 것들이 있으면 enable 시켜준다.
이렇게 해서 해결 된다면 제일 편하게 해결된 것.

둘째, eclipse 폴더 아래 configuration 폴더를 지우고 재시작.

셋째, 이래도 안 깔리면.... 이클립스를 아예 새로 풀고 플러그인들 먼저 다 복사해 둔 후 최초실행 시킨다.
Posted by 고에몽
프로그래밍언어/C#2007/05/30 23:00

C#을 이용한 테트리스 프로그래밍

Posted by 고에몽
TAG c#
 

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

 

#define MAX 6         // 숫자를 뽑아내는 갯수입니다.

#define LOTTO 46     // 뽑히는 숫자의 최대치 입니다.

                             

 

void main()
{
    int num[MAX];
     int i, j, temp;
     char ch;

 

     srand((unsigned)time(NULL));   // rand() 함수를 초기화 시킬때 필요한 구문입니다.

                                                  // 자세한 작동원리는 저도 모름 -,.-;; 아시는 분은 덧글로 좀..
 
    for(i = 0; i < MAX; i++)
    {
         temp = rand() % LOTTO + 1;         // rand() 함수는 상당히 넓은 범위로 정수를 생성하므로

                                                  // 어떤 범위 내에서 숫자를 생성하고 싶을땐 범위의 최대값으로

                                                  // 나눈 나머지를 받도록 하면 됩니다. 이렇게 하면 0~45사이이기

                                                  // 때문에 1을 더 해주면 범위가 1~46이 되는거죠.

        

        for(j = 0; j < MAX; j++)
         {
                if(temp == num[j])        
// rand() 함수에 의해 뽑힌 숫자가 num배열상 존재하는 숫자와
                {                                // 같은 숫자라면 다시 rand()함수를 호출하고 그렇지 않으면

                       i--;                      // 배열에 숫자를 넣은뒤 다음 배열로 넘어갑니다.
                       break;
                 }
               

                else
                {
                       num[i] = temp;
                       break;
                 }
          }

     }

     for(i = 0; i < MAX; i++)
     {
          printf("%d ", num[i]);
     }

     printf("\n");
     printf("엔터를 치시면 종료됩니다...");
     scanf("%c", &ch);

}

Posted by 고에몽
프로그래밍언어/C2007/05/30 22:37
 

/*
 * -------------------------------------
 *     몬테카를로법에 의한 π 계산    *
 * -------------------------------------
 */

 

#include <stdio.h>
#include <stdlib.h>

#define NUM 1000

 

double rnd(void);

int main(void)
{
    double x, y, pai;
    int i,in=0;

    for (i=1; i<=NUM; i++){
        x=rnd();
        y=rnd();
        if (x*x+y*y<=1)
            in++;
    }
    pai=(double)4*in/NUM;
    printf("π값 = %f\n", pai);

    return 0;
}

double rnd(void)        /* 0 ~ 1 사이의 난수 */
{
    return (double)rand()/RAND_MAX;     // 0 ~ 1사이의 난수를 발생 시킨다.
}

 

//  몬테카를로법을 이용해서 PI값을 구한다. 0~1사이의 실수형 난수를 두 개 발생시킨후

이를 x, y라고 하자. 이러한 난수쌍을 어는 정도 발생시키면 1*1크기의 정사각형에 (x, y)로 표시

되는 점이 균일하게 흩뿌려진다. 따라서 정사각형의 면적과 1/4원 면적비는 흩뿌려진 난수의 개수

에 비례한다고 할 수 있다.

 

//  num을 1000으로 설정 해주었기 때문에 그다지 정확하지 않다. 값의 정확도는 난수 발생 횟수의

증가와  rnd()에 의해 발생하는 난수가 얼마나 균일하게 퍼지는지에 따라 크게 달라진다.

Posted by 고에몽
프로그래밍언어/C2007/05/30 22:36
 

//*  몬테카를로법에 의한 면적 계산  *//

 

#include <stdio.h>
#include <stdlib.h>

#define NUM 1000

 

double rnd(void);

int main(void)
{
    double x, y, s;
   

    int i, in = 0;

   

   for (i=0; i<=NUM; i++){
        x = 2*rnd();
        y = rnd();
        if (x*x/4+y*y<=1)
            in++;
    }
    s = 4.0*(2.0*in/NUM);

    printf("타원의 면적 = %f\n", s);

   

    return 0;
}

 

double rnd(void)       /* 0 ~ 1 사이의 난수 발생 */
{
    return (double)rand()/RAND_MAX;
}

 

// x에 0~2사이의 난수, y에 0~1사이의 난수를 대입해서 2*1의 직사각형 내부에 균일하게

퍼뜨린다. PI값 계산 알고리즘을 정확하게 이해한다면, 면적 계산은 쉽게 해결 된다.

Posted by 고에몽
프로그래밍언어/C2007/05/30 22:36
 

// 1번 예제

#include <stdio.h>
#include <math.h>             // sin, cos 함수를 사용하기 위해서...

 

void main()
{
  int degree = 0;
  double radian = 0.0;

  printf("원하시는 각(degree)을 입력하세요 :  ");
  scanf("%d", degree);

    // sin, cos 함수들은 일반각을 이용하지 않고 라디안형식의 각을 S
    // 사용하기 때문에 라디안 값으로 변환해야 한다
.
  radian = degree*3.141592/180;

  printf("n");
  printf("cos %d = %fn", degree, cos(radian));
  printf("sin %d = %fn", degree, sin(radian));
}


 

// 2번 예제

#include  <stdio.h>                  
#include  <math.h>                  
#define PI 3.141592654       // <-- 파이값을 정의 합니다

 

void main()
{
     double vSin , vCos , vTan;             // <-- sin , cos , tan 저장할 변수입니다
                                                       // 각 함수들 반환값이 double형이라
                                                      // double형으로 선언합니다
     int Degree;                                 // <-- 각도를 저장할 변수입니다

     printf("각도를 입력하세요 : ");
     scanf("%d" , &Degree);                  // 각도를 입력받습니다

     vSin = sin(Degree * (PI / 180));     // 각도를 라디언으로 바꿔서 sin 함수안에 넣습니다
     vCos = cos(Degree * (PI / 180));
     vTan = tan(Degree * (PI / 180));

     printf("sin = %f \ncos = %f \ntan = %f\n" , vSin , vCos , vTan);
}

Posted by 고에몽
프로그래밍언어/C2007/05/30 22:35
 

/*
 * -------------------------
 *     유클리드 호제법     *
 * -------------------------
 */

 

#include <stdio.h>

int main(void)
{
    int a,b,m,n;

    printf("두 정수를 입력하세요. : ");
    scanf("%d %d", &a, &b);

    m=a; n=b;
   

    while (m!=n){
        if (m>n)
            m=m-n;
        else
            n=n-m;
    }
    printf("최대공약수 = %d\n", m);

    return 0;
}

 

 

// 실행결과

    두 정수를 입력하시오 : 128 72

    최대공약수 = 8

 

// 기계적인  반복으로 최대공약수를 구하는 방법인 컴퓨터 지향 알고리즘으로는

유클리드(Euclid)호제법이 있다. 알고리즘을 간단히 정리하면 다음과 같다.

    

     1. m과 n이 같지 않으면 다음을 반복한다.

    2. m>n이면 m-n, 그렇지 않으면 n=n-m이다.

    3. m(또는 n)이 구하고자 하는 최대공약수 다.

Posted by 고에몽
프로그래밍언어/C2007/05/30 22:35
 

/*
 * ---------------------------
 *      파스칼의 삼각형      *
 * ---------------------------
 */

 

#include <stdio.h>
#define N 12

long combi(int,int);

int main(void)
{
    int n,r,t;

    for (n=0;n<=N;n++){
        for (t=0;t<(N-n)*3;t++)        /* 공백 */
            printf(" ");
        for (r=0;r<=n;r++)
            printf("%3ld   ",combi(n,r));
        printf("\n");
    }

 return 0;
}

long combi(int n,int r)
{
    int i;
    long p=1;

    for (i=1;i<=r;i++)
        p=p*(n-i+1)/i;
    return p;
}

 

// nCr을 구하는 프로그램을 이용해서 파스칼의 삼각형을 위와 같이 나타낼 수 있다.

Posted by 고에몽
프로그래밍언어/C2007/05/30 22:34
 

/*
 * --------------------
 *     순위 매김     *
 * --------------------
 * 시험점수의 점수별 순위를 구한다.

 */

 

#include <stdio.h>

#define Num 10

int main(void)     /* 순위 매김 */
{
    static int a[]={56,25,67,88,100,61,55,67,76,56};
    int rank[Num];
    int i,j;

    for (i=0;i<Num;i++) {
        rank[i]=1;
        for (j=0;j<Num;j++) {
            if (a[j]>a[i])
                rank[i]++;
        }
    }

    printf("   점수  순위\n");
    for (i=0;i<Num;i++){
        printf("%6d%6d\n",a[i],rank[i]);
    }

    return 0;
}

 

// 위의 순위를 구하는 알고리즘에서는 데이터가 n개인 경우, 반복 횟수가 n2이 된다. 따라서

데이터 수가 증가하면 처리하는 데 시간이 많이 걸린다. 따라서 반복 횟수를 줄이기 위한

순위 매김 알고리즘을 생각해본다. 다음 알고리즘이 그 예제이다.

 

// 개선된 순위 매김

 

#include <stdio.h>

#define Num 10

#define Max 100

#define Min 0

 

int main(void)    

{
    static int a[] = {56,25,67,88,100,61,55,67,76,56};
    int i, rank[Max+2];
   

    for (i=Min; i<Max; i++)
         rank[i]=0;                        //  0으로 초기화
        for (i=0; i<Num; i++)         //  각 점수를 첨자로 하는 배열요소에 +1
           rank[a[i]]++;                          
   

    rank[Max+1] = 1;                 //  바로 오른쪽 요소의 값을 더함

    for(i=Max; i>=Min; i--)

       rank[i] = rank[i]+rank[i+1];


    printf("   점수  순위\n");
    for (i=0; i<Num; i++){
        printf("%6d%6d\n", a[i], rank[a[i]+1]);    // 점수 +1의 위치에 순위가 저장됨
    }

    return 0;
}

Posted by 고에몽
프로그래밍언어/C2007/05/30 22:34
 

/*
 * ------------------------------------
 *     랜덤한 순열

 * ------------------------------------
 */

 

#include <stdio.h>
#include <stdlib.h>

#define N 20

int irnd(int);

int main(void)
{
    int i,j,d,a[N+1];

    for (i=1;i<=N;i++)
        a[i]=i;

    for (i=N;i>1;i--){
        j=irnd(i-1);
        d=a[i];a[i]=a[j];a[j]=d;
    }

    for (i=1;i<=N;i++)
        printf("%d ",a[i]);

    printf("\n");

    return 0;
}

 

int irnd(int n)        /* 1 ~ N 의 난수 */
{
    return (int)(rand()%n + 1);
}

 

// a[1]~a[N]에 1~N의 수를 순서대로 저장한다.

1~N-1중에서 난수 j를 얻는다. 이것을 첨자로 하는 배열 a[j]와 a[N]을 교환한다. 이렇게 해서

a[N]항의 순열은 확정된다.

Posted by 고에몽