티스토리 툴바


2010/03/05 13:03 JAVA

지금 설치하신것들은 제대로 설치를 하셨다고 보여집니다.

tomcat을 시동시키고 웹브라우저 상에서 http://localhost:8080

(next만 눌러서 설치하셨다면)

를 입력했을때 고양이 그림과 함께 tomcat index 페이지가 나온다면

tomcat과 jdk는 제대로 설치가 된것이겠죠.

 

mysql도 설치 제대로 하셨다면 찾아서 보신 강좌나 웹페이지를 통해서

제대로 시작시키시면 됩니다.

 

jsp와 mysql을 연동시키려면 서로 알아들을수 있는 무언가가 필요합니다.

이부분을 연결시켜주는것이 jdbc driver입니다.

사용하시는것이 mysql이니 mysql.com에서 connector/j를 찾아서

다운로드 받으신후에 압축을 풀고

tomcat설치폴더/common/lib 밑으로

mysql-connector-java-3.x.x-bin.jar(x는 버전명입니다 현재는 3.1.7인걸로 알고 있습니다.)

를 옮겨주시면 됩니다.


'JAVA' 카테고리의 다른 글

[참고]  (0) 2010/03/05
SPRING 초보  (0) 2010/03/04
posted by 롯데우승
2010/03/04 09:49 JAVA
http://blog.naver.com/cardin9?Redirect=Log&logNo=20032641400

'JAVA' 카테고리의 다른 글

[참고]  (0) 2010/03/05
SPRING 초보  (0) 2010/03/04
posted by 롯데우승
2009/10/21 08:15 DB
Oracle 최고의 함수중 하나를 꽂아보라면 난 단연히 DECODE 함수라고 말하고 싶다.
IF문의 복잡함을 간소화 시켜줄 뿐만 아니라 그 과정에서 은근히 머리쓰게 만들어서 뇌를 말랑말랑하게 만들어 준다는 점이 그 이유이다.

일단 DECODE 함수는 보통 SELECT 부분에서 사용된다. 예를 들어


이라고 쓰면 TEST_TABLE 중 check_field 안의 값이 1이면 'Y' 로 변경하고 아니면 'N' 으로 변경하라는 뜻이다. 이걸 IF문으로 고치게 되면,

 
이와 같이  된다.
물론 위의 IF문은 PLSQL에서 사용되며 커서를 통해 패치하면서 단계적으로 값을 출력해야 한다.

그래서 특이한 경우가 아닌한 SELECT 부분에서만 끝날 수 있는 DEOCDE를 즐겨 사용하고 이렇게 처리함으로써 ORM(Object Relational Mapping)을 이용한 개발에서도 용이하게 사용이 가능하다.

하지만 DECODE함수에는 치명적인 약점이 하나 있는데 바로 '같을때' 만 처리가 가능하고 '크거나', 라던가 '작거나' 등에 대한 처리가 불가능하다는 것이다. 하지만 개발자들은 이런 난감한 상황을 멋지게 해결해 놓았다. 이것이 정말 문제라면 '크거나 같거나' 함수를 만들었을지도 모르는데 묘하게도 그런 함수가 존재하지 않는다는 것을 보면 충분히 써먹을 수 있다는 반증이기도 하다는게 아니겠는가.

'크거나', 혹은 '작거나' 라는것은 그 비교할 값이 '숫자' 라는 명제하에 출발한다.
아래의 예제코드를 보도록 하자

위 코드는 TEST_TABLE의 sum 필드가 10 이하이면 'N' 그렇지 않으면 'Y' 을 출력한다.
FLOOR() 함수는 소수점 버림 함수이며 sum을 10으로 나누어 소수점 이하를 버리게 될때 10보다 작으면 무조건 0이 나오고 10혹은 10보다 더 크면 그 이상이 나온다는것을 이용한 것이다.

이것을 응용하여 날짜 비교도 할 수 있다.

위 코드에서 write_date 필드는 뒤 나눌 날짜와 형식이 같아야 한다. 일반적으로 YYYYMMDD 형식이므로 필드 형이 date일 경우 TO_DATE(write_date, 'YYYYMDDD') 와 같이 날짜 형태를 변환시켜서 둘의 형식을 맞춘 뒤 나누게 된다.
어쨌든 위의 경우 2008년 11월 12일보다 이전이면 'N' 아니면 'Y' 가 출력된다.

DECODE함수는 앞에서 본것처럼 IF, ELSE 외에 파라메터의 수에 따라 If, if else, else 로도 사용이 가능하므로 한번 계속 머리를 굴려 잘 사용해 보도록 하자.

http://eloid.tistory.com/39

'DB' 카테고리의 다른 글

DECODE문을 IF문 처럼 사용하기  (0) 2009/10/21
posted by 롯데우승
2009/06/25 19:36 수업자료/ATmega


▶선택 부분 핀 사용

▶Function Explanation
· RED DATA : 신호가 한 클럭 될때 Red data 신호 입력
· GREEN DATA : 신호가 한 클럭 될때 Green data 신호 입력
· CLOCK : 데이터 입력을 위한 신호
· SELECT : 데이터 Display를 위한 신호 
               High일 때 입력 데이터로 표시 
             Low일 때 기억된 데이터로 표시
· BRIGHT : 신호 표시를 ON or OFF
             High일 때 Display OFF
             Low일 때 Display ON
             펄스 신호에 의해 라인 제어
· RESET : LED신호의 초기화
            High일 때 Display 초기화
            Low일 때 정상 모드
            Held data in memory will not be cleared
             -메모리에 데이터가 지워지지 않음








'수업자료 > ATmega' 카테고리의 다른 글

[16*16 Dot Matrix] SLM1606M V1.3  (0) 2009/06/25
posted by 롯데우승
2009/06/05 18:15 분류없음
/* ========================================================================== */
/*    Xtest09_3.c : Stop Watch by PIT Interrupt          */
/* ========================================================================== */
#include "AT91SAM7S256.h"
#include "lib_AT91SAM7S256.h"
#include "OK7S256ads.h"
#include "project.h"

void LCD_2d(unsigned int number)    /* display 2-digit decimal number */
{
  LCD_data(number/10 + '0');                    // 10^1
  LCD_data(number%10 + '0');                    // 10^0
  
  return;
}

volatile unsigned int second, minute, hour;  // time variable
volatile unsigned int run_flag;      // stop watch run flag

void PIT_ISR(void)        /* PIT interrupt service routine */
{
  AT91F_PITGetPIVR(AT91C_BASE_PITC);    
// clear PITS, PIT_PIVR을 읽어서 PIT_SR의 PITS를 클리어

  second++;                  // increment 1/100 second
  if(second == 6000)        // second = 60 ?
    { second = 0;           // if yes, second = 0 and minute++
      minute++;
      if(minute == 60      // minute = 60 ?
        { minute = 0;     // if yes, minute = 0 and hour++
          hour++;
          if(hour == 100)   // hour = 100 ?
            hour = 0;       // if yes, hour = 0
        }
    }

  LCD_command(0xC2);          // display hour
  LCD_2d(hour);
  LCD_command(0xC5);          // display minute
  LCD_2d(minute);
  LCD_command(0xC8);          // display second
  LCD_2d(second/100);
  LCD_command(0xCB);          // display 1/100 second
  LCD_2d(second%100);
  
  return;
}

void Clear_time(void)        /* clear time */
{
  second = 0;             // clear time
  minute = 0;
  hour = 0;
  LCD_string(0xC0,"  00:00:00.00   ");   // clear display
  
  return;
}

// 수신
unsigned char Recv_Char()
{
  while(1)
  {
    if(((*DBGU_SR) & 0x1== 0x1){  
// DBGU_SR의 RXRDY비트가 1이면 읽기준비완료
      break;
    }
  }
  return *DBGU_RHR;
}


int main(void)
{
  
  *DBGU_CR |= 0xC;
  // DBGU_CR의 RSTTX, RSTRX 1로 셋, 송수신부 리셋 & 동작중지
  *DBGU_IDR = 0xFFFFFFFF;  // 관련 인터럽터 Disable
  
  *PIO_ASR |= 0x600;  
// PA9, 10번 핀의 Peripheral A 모드 활성 DRXD, DTXD 1로 셋
  *PIO_BSR = 0;  // Peripheral B 모드 비활성
  *PIO_PDR |= 0x600;  // PA9,10번 핀 병령 I/O포트모드 비활성화

  *DBGU_BRGR = 156;//0x1A;  // 115200bps의 CD는 26 = 0x1A
  *DBGU_MR |= 0x800
 // 포트모드설정, 15,14비트(정상 모드 00), 11,10,9비트(패리티 없음 1xx)
  *DBGU_CR |= 0x50;  // 송수신 모드 활성, TXEN, RXEN 비트 1로 셋
  
  MCU_initialize();  // initialize AT91SAM7S256 & kit
  Delay_ms(50);     // wait for system stabilization
  LCD_initialize(); // initialize text LCD module
  Beep();

  AT91F_PITC_CfgPMC(); // enable peripheral clock for PIT
  // PMC_PCER 주변장치 클록허용 레지스터(system controller에 클록의 공급허용)
  AT91F_PITInit(AT91C_BASE_PITC,1,48);    // enable and initialize PIT
  // PIT 모드 레지스터인 PIT_MR레지스터의 PITEN을 1로 (시간간격 타이머 활성화)
  AT91F_PITSetPIV(AT91C_BASE_PITC,30000-1);  // 48MHz/16/30000 = 100Hz  
                      // PIT_MR레지스터의 PIV = 30000-1

  AT91F_PITEnableInt(AT91C_BASE_PITC);    // initialize PIT interrupt
 // PIT_MR레지스터의 PITIEN을 1로(PIT_SR의 PITS비트가 인터럽트 요청신호 pit_irq로 출력)
  AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_SYS,7,1,PIT_ISR);
 // AIC_SVR[1] = PIT_ISR, AIC_SMR[1] = 0x47

  AT91F_AIC_DisableIt(AT91C_BASE_AIC,AT91C_ID_SYS);

  LCD_string(0x80"** STOP WATCH **");    // display title
  Clear_time();                   // clear time and display
  run_flag = 0;          // default state

  while(1)
    { switch(Recv_Char())            // key input
        { case '1' : if(run_flag == 0)    // if KEY1 & run_flag=0, strat
                  { run_flag =  1;
                          AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_SYS);  // AIC_IECR 인터럽트 허용
                        }
                      else      // if KEY1 & run_flag=1, stop
                        { run_flag =  0;
                          AT91F_AIC_DisableIt(AT91C_BASE_AIC,AT91C_ID_SYS);  // AIC_IDCR 인터럽트 금지
                        }
                      break;
          case '2' : if(run_flag == 1break
          // if KEY2 & run_flag=1, ignore
                      Clear_time();    // if KEY2 & run_flag=0, clear time
                      break;
          default:    break;
        }
    }
}











posted by 롯데우승
2009/06/05 18:05 분류없음


인터럽트 관련 : AT91C_BASE_AIC
0번 타이머 관련 : AT91C_BASE_TC0
PMC 관련 : AT91C_BASE_PMC

void configure_timer(void)
{

 타이머 카운터 0 사용을 위한 PMC 활성화(AT91C_ID_TC0)

1. 시작 : 타이머 클럭 비활성화
 타이머 클럭 비활성화(TC_CCR 설정)

 2. 시작 : 타이머 인터럽트 비활성화
 타이머 인터럽트 비활성화(TC_IDR 설정)
 인터럽트 상태 정보 초기화(TC_SR 읽기)

 분주비 1024, 비교방식 레지스터설정
(TC_CMR, DIVS_CLOCK, AT91C_TC_CPCTRG)
 (TC_RC 설정 = 60000)

 타이머 카운터 0 인터럽트 비활성화(AIC_IDCR, AT91C_ID_TC0)

 3. 시작 : 타이머 카운터0 인터럽트 비활성화
 타이머카운터0 인터럽트 핸들러 등록
 (AIC_SVR[AT91C_ID_TC0], timer_handler)
 타이머카운터0 인터럽트 모드설정
 (AIC_SMR[AT91C_ID_TC0], AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL)
 타이머카운터0 인터럽트 클리어
 (AIC_ICCR, AT91C_ID_TC0)

 TC_RC 값 비교 타이머 인터럽트 활성화(TC_IER, AT91C_TC_CPCS)

 2. 끝 : 타이머 인터럽트 비활성화
타이머 카운터0 인터럽트 활성화(AIC_IECR, AT91C_ID_TC0)
 
 3. 끝 : 타이머카운터0 인터럽트 비활성화
 타이머 클럭 활성화(TC_CCR, AT91C_TC_CLKEN)

 1. 끝 : 타이머 클럭 비활성화
 타이머 시작(TC_CCR, AT91C_TC_SWTRG)


}
volatile unsigned char ucLedState=0;
void timer_handler(void)
{

인터럽트 상태 정보 초기화
 LED 토글 프로그래밍

}


#include "project.h"

// 타이머/카운터0을 이용한 인터럽트

#define TC0    0x00001000    // PID12 = TC0 주변장치 ID


void configure_timer();
unsigned char Interrupt_Status();
void timer_handler();

volatile unsigned char ucLedState=0;

int main()
{
    
  *PIO_PER = 0x4;  // PIO Enable (PA0~PA7, PA11, PA12, PA13, PA14)
  *PIO_OER = 0x4;  // PIO Output Enable (PA0~PA7, PA11, PA12, PA13, PA14)

  configure_timer();

  while(1);
  return 0;
}

void configure_timer()
{
  *PMC_PCER = TC0;  // TC0 사용을 위한 PMC활성화


  // 1.시작  : 타이머 클럭 비활성화
  *TC0_CCR = 0x2;    // TC0 클럭 비활성화
  
  // 2.시작  : 타이머 인터럽트 비활성화
  *TC0_IDR = 0x10;  // 타이머 인터럽트 비활성화
//  Interrupt_Status();  // TC0_SR 읽기

  *TC0_CMR = 0x4004;    // CPCTRG 1= 비교방식, TCCLKS 100 = 1024분주
  *TC0_RC = 60000;    // TC_RC값

  *AIC_IDCR |= TC0;

  // 3.시작  : 타이머카운터0 인터럽트 비활성화
  *AIC_SVR12 = (unsigned int)timer_handler;  // 인터럽트 발생시 timer_handler함수로
  *AIC_SMR12 = 0x40;      // 내부인터럽트 high level, 외부인터럽트 high level
  *AIC_ICCR = TC0;      // 타이머카운터0 인터럽트 클리어
  *TC0_IER = 0x10;      // TC0_RC 값 비교 타이머 인터럽트 활성화 

  // 2.끝    : 타이머 인터럽트 비활성화
  *AIC_IECR = TC0;  // 타이머카운터0 인터럽트 활성화
  
  // 3.끝    : 타이머카운터0 인터럽트 비활성화
  *TC0_CCR = 0x1;    // 타이머 클럭 활성화
  
  // 1.끝    : 타이머 클럭 비활성화
  *TC0_CCR = 0x4;    // 타이머 시작

  return;

}
unsigned char Interrupt_Status()
{
  return *TC0_SR;
}

void timer_handler()
{
  Interrupt_Status();

  if(ucLedState == 0){
    *PIO_SODR = 0x4;
    ucLedState = 1;
  }
  else{
    *PIO_CODR = 0x4;
    ucLedState = 0;
  }

  return;
}

 

posted by 롯데우승
2009/06/05 16:36 수업자료/ARM





x ☞주변장치 번호

posted by 롯데우승
2009/06/05 09:26 수업자료/Embedded
  • 마이크로프로세서는 보통 적은 수의 인터럽트만을 처리할 수 있으므로, 보드에 인터럽트를 필요로 하는 많은 장치가 연결된 경우에는 이를 다 처리할 수 없게 된다. 이를 위해 인터럽트 컨트롤러가 사용되는데, 인터럽트 컨트롤러는 여러 개의 인터럽트를 하나의 인터럽트 라인으로 다중화(multiplexing)하여 프로세서의 인터럽트 처리 능력을 높여준다.

 

  • PIC는 인터럽트의 하드웨어적 우선순위를 제공한다. 이것은 프로세서가 자체적으로 하드웨어 인터럽트 우선순위를 지원하지 않는 경우에는 유용하게 사용된다. 프로세서가 높은 우선순위의 인터럽트를 처리하고 있는 동안 PIC는 프로세서에게 낮은 우선순위의 인터럽트를 보내지 않는다. 또한 두 개의 장치가 동시에 인터럽트를 발생시킨 경우 PIC는 우선 순위 레지스터를 살펴보고 어느 인터럽트가 더 높은 우선순위를 갖는지 판단하여 높은 우선순위의 인터럽트를 먼저 CPU에 전달한다.

 

  • 트리거(trigger) 방식을 변환한다.
    1. 에지-트리거 인터럽트
      • 신호가 어떤 상태에서 다른 상태로(보통은 하이(high)에서 로우(low)로) 넘어가는 순간 발생
      • 인터럽트 공유 못함
      • ISA 버스 구조에서 사용되는 오래된 방식
    2. 레벨-트리거 인터럽트
      • 프로세서가 처리할 때까지 인터럽트 라인을 하이(high)로 유지
      • 인터럽트 공유 가능하지만 부적절한 설계된 경우 무한 인터럽트 루프에 빠질 수 있음

'수업자료 > Embedded' 카테고리의 다른 글

[인터럽트]level triggered 와 edge triggered  (0) 2009/06/05
posted by 롯데우승
2009/06/05 01:11 수업자료/ARM




AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_SYS, 우선순위, src_type(01), PIT_ISR)
    ☞ SRCTYPE: Interrup Source Type
          ▶00 = 내부 인터럽트의 경우 high level sensitive,  외부 인터럽트의 경우 low level sensitive.
          ▶01 = 내부 인터럽트의 경우 positive edge trigger, 외부 인터럽트의 경우 negative edge trigger.
          ▶10 = 내부 인터럽트의 경우 high level sensitive,  외부 인터럽트의 경우 high level sensitive.
          ▶11 = 내부 인터럽트의 경우 positive edge trigger,  외부 인터럽트의 경우 positive edge trigger.





posted by 롯데우승
2009/06/05 01:08 수업자료/ARM

posted by 롯데우승