Jini's Blog

Ing...

  • Home
  • Business
    • Internet
    • Market
    • Stock
  • Parent Category
    • Child Category 1
      • Sub Child Category 1
      • Sub Child Category 2
      • Sub Child Category 3
    • Child Category 2
    • Child Category 3
    • Child Category 4
  • Featured
  • Health
    • Childcare
    • Doctors
  • Home
  • Business
    • Internet
    • Market
    • Stock
  • Downloads
    • Dvd
    • Games
    • Software
      • Office
  • Parent Category
    • Child Category 1
      • Sub Child Category 1
      • Sub Child Category 2
      • Sub Child Category 3
    • Child Category 2
    • Child Category 3
    • Child Category 4
  • Featured
  • Health
    • Childcare
    • Doctors
  • Uncategorized

[Spring] 다국어 처리 동작 과정

 Jini     오후 3:40     spring     No comments   

1. Client(브라우저)에서 요청을 보냄.

2. LocaleChangInterceptor가 request를 인터셉터.

3. request 파라미터중 locale 정보를 가로챈다.(피들러 등으로 locale 정보 확인 가능, Accept-Language)

4. LocaleChangInterceptor가 현재 applicationContext에 설정된 LocaleResolver를 얻어 setLocale 메소드 호출
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

JUNIT 테스트 작성 방법

 Jini     오전 1:44     JUNIT     No comments   

package com.jini.ch4;

import java.io.*;
import junit.framework.*;


public class FileReaderTester extends TestCase {
 
 private FileReader _input;
 private FileReader _empty;
 private static final String FILE_NAME = "c:/Users/jini/Desktop/data.txt";
 
 public static void main (String[] args) {
  //1. 기본적인 Test 실행 방식.
  junit.textui.TestRunner.run(suite());
  
  //2. 해당 클래스에서 test로 시작하는 모든 메소드를 테스트 하도록 함.
  junit.textui.TestRunner.run(new TestSuite(FileReaderTester.class));
  
  //3. 여러 클래스의 Test Suite를 연결하기 위한 MasterTester 클래스 방식/
  junit.textui.TestRunner.run( suite2());
 }

 public FileReaderTester(String name) {
  super(name);
 }
 
 /**
  * 메소드명을 파라미터로 하는 TestSuite 
  * @throws IOException
  */
 public static Test suite() {
  TestSuite suite = new TestSuite();
  suite.addTest(new FileReaderTester("testRead"));
  suite.addTest(new FileReaderTester("testReadAtEnd"));
  return suite;
 }
 
 public static Test suite2() {
  TestSuite result = new TestSuite();
  result.addTest(new TestSuite(FileReaderTester.class));
  result.addTest(new TestSuite(FileReaderTester.class));
  return result;
 }
 
 public void testRead() throws IOException {
  char ch = '&';
  for(int x = 0; x < 4; x++) {
   ch = (char)_input.read();
  }
  
  assertEquals('d', ch);
 }
 
 public void testReadAtEnd() throws IOException {
  int ch = -1234;
  for(int x = 0; x < 141; x++) {
   ch = _input.read();
  }
  
  assertEquals("read at end", -1, _input.read());
 }
 
 public void testReadBoundaries() throws IOException {
  assertEquals("read first char", 'B', _input.read());
  int ch;
  for(int x = 0; x < 140; x++) {
   ch = _input.read();
  }
  
  assertEquals("read last char", '6', _input.read());
  assertEquals("read at end", -1, _input.read());
  assertEquals("read past end", -1, _input.read());
 }
 
 public void testEmptyRead() throws IOException {
  assertEquals(-1, _empty.read());
 }
 
 public void testReadAfterClose() throws Exception {
  _input.close();
  
  try {
   _input.read();
   fail("read past end에 예외가 발생하지 않음");
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 
 protected void setUp() {
  try {
   _input = new FileReader(FILE_NAME);
   _empty = newEmptyFile();
  } catch (IOException e) {
   throw new RuntimeException(e.toString());
  }
 }
 
 protected void tearDown() {
  try {
   _input.close();
  } catch (IOException e) {
   throw new RuntimeException("테스트 파일을 닫는 중 에러 발생");
  }
 }
 
 private FileReader newEmptyFile() throws IOException {
  File empty = new File(FILE_NAME);
  FileOutputStream out = new FileOutputStream(empty);
  out.close();
  return new FileReader(empty);
 }
}

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

해당 달을 기준으로 달력 만드는 쿼리.

 Jini     오전 12:44     Oracle     No comments   

WITH T AS
(SELECT TO_DATE('201309', 'yyyymm') YM FROM DUAL)
SELECT *
FROM   (
           SELECT MIN(DECODE(TO_CHAR(YM + LEVEL - 1, 'D'), '1', LEVEL)) SUN
                , MIN(DECODE(TO_CHAR(YM + LEVEL - 1, 'D'), '2', LEVEL)) MON
                , MIN(DECODE(TO_CHAR(YM + LEVEL - 1, 'D'), '3', LEVEL)) TUE
                , MIN(DECODE(TO_CHAR(YM + LEVEL - 1, 'D'), '4', LEVEL)) WED
                , MIN(DECODE(TO_CHAR(YM + LEVEL - 1, 'D'), '5', LEVEL)) THU
                , MIN(DECODE(TO_CHAR(YM + LEVEL - 1, 'D'), '6', LEVEL)) FRI
                , MIN(DECODE(TO_CHAR(YM + LEVEL - 1, 'D'), '7', LEVEL)) SAT
           FROM   T
           CONNECT BY
                  LEVEL <= LAST_DAY(YM) - YM + 1
           GROUP BY
                  TRUNC(YM + LEVEL, 'IW')
           ORDER BY
                  SAT
        )
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Override, toString()

 Jini     오전 12:37     JAVA     No comments   

왠지 있을 것 같다고 생각만 하고 찾진 않았었는데 실제로 있었다.
이전까지는 toString() 메소드를 Override하기 위해서 노가다성 코딩을 했었는데 역시 자동으로 해주는 라이브러리가 있었네..



[필요패키지]
org.apache.commons.lang.builder.ToStringBuilder

[사용메소드]
ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);

옵션은 "SHORT_PREFIX_STYLE"외에도 다양하게 존재한다.
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Row 단위 데이터를 Column 단위로 변환

 Jini     오전 2:34     Oracle     No comments   

■ 기본원리

1. 각 ROW 데이터가 몇 번째 행의 몇 번째 컬럼에 위치해야 하는지를 결정
2. 예를 들어서 아래와 같은 데이터가 있으며 한 행에 4개의 컬럼으로 표시하고 싶다고 할 경우 각 위치는 다음과 같다.

  [원본자료]
  EMP_ID
   ----
   A001 -> 1, 1
   B001 -> 1, 2
   C001 -> 1, 3
   D001 -> 1, 4
   E001 -> 2, 1
   F001 -> 2, 2
   G001 -> 2, 3
   H001 -> 2, 4
   I001 -> 3, 1
   J001 -> 3, 2
   K001 -> 3, 3
   L001 -> 3, 4

3. 위치를 결정했으면 해당 위치 값을 ROWNUM과 CEIL, MOD를 통해서 만든다.
SELECT NO
     , CEIL(NO/4) AS ROWINDEX
     , MOD(NO, 4) AS COLINDEX
     , EMP_ID
FROM ( SELECT ROWNUM AS NO
                   , EMP_ID
        FROM    TEMP )
▶결과는 다음과 같다(COLINDEX값이 0인 경우를 좌표에서는 4번째 위치라고 생각)
NO    ROWINDEX    COLINDEX    EMP_ID
 1           1           1      A001
 2           1           2      B001
 3           1           3      C001
 4           1           0      D001
 5           2           1      E001
 [중략]
12           3           0      L001

4. 다음으로 각 행의 데이터를 DECODE 함수를 이용하여 좌표에 맞게 위치시킨다.
SELECT CEIL(NO/4) AS ROWINDEX
    ,  DECODE(MOD(NO, 4), 1, EMP_ID) AS COL1
    ,  DECODE(MOD(NO, 4), 2, EMP_ID) AS COL2
    ,  DECODE(MOD(NO, 4), 3, EMP_ID) AS COL3
    ,  DECODE(MOD(NO, 4), 0, EMP_ID) AS COL4
FROM ( SELECT ROWNUM AS NO
            , EMP_ID
       FROM    TEMP )
▶결과는 다음과 같다.
ROWINDEX  COL1    COL2    COL3    COL4
1         A001   
1                 B001  
1                         C001 
1                                 D001
2         E001   
2                 F001  
2                         G001 
2                                 H001
[중략]

5. 마지막으로 위 결과를 ROWINDEX 기준으로 GROUPING 해준다.
SELECT CEIL(NO/4) AS ROWINDEX
    ,  MAX(DECODE(MOD(NO, 4), 1, EMP_ID)) AS COL1
    ,  MAX(DECODE(MOD(NO, 4), 2, EMP_ID)) AS COL2
    ,  MAX(DECODE(MOD(NO, 4), 3, EMP_ID)) AS COL3
    ,  MAX(DECODE(MOD(NO, 4), 0, EMP_ID)) AS COL4
FROM ( SELECT ROWNUM AS NO
            , EMP_ID
        FROM    TEMP )            
GROUP BY CEIL(NO/4)

결과는 생략.
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

오라클 한글깨짐 현상해결

 Jini     오전 1:37     Oracle     No comments   

1. 레지스트리 편집기 실행 : 시작 -> 실행 -> regedit
2. HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 하위 경로 폴더중 이름이 "NLS_LANG"인 속성의 데이터 확인
3. "NLS_LANG" 속성을 KOREAN_KOREA.KO16MSWIN949로 변경
4. CMD창에서 SQLPLUS /NOLOG 실행
5. CONN /AS SYSDBA 실행
6. 다음의 쿼리 수행
UPDATE PROPS$ SET VALUE$ ='KO16MSWIN949' WHERE NAME = 'NLS_CHARACTERSET';
UPDATE PROPS$ SET VALUE$ = 'AMERICAN_AMERICA.KO16MSWIN949' WHERE NAME = 'NLS_LANGUAGE';
COMMIT;

SHUTDOWN IMMEDIATE;
STARTUP;

※ 기존에 존재하던 한글 데이터는 깨질 수 있음.
※ 한글깨짐 현상은 위 방법외에 다른 방법도 존재하므로 위 방법으로 해결안될 경우 다른 방식으로 해결 필요.
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

한글이 3byte인 경우 캐릭터셋 확인

 Jini     오전 1:20     Oracle     No comments   

오라클의 문자집합이 KO16KSC5601, KO16MSWIN949 인 경우는 2 Byte로 한글을 인식.
UTF8/AL32UTF8의 경우 3Byte로 한글을 인식.
단 UTF8/AL32UTF8의 경우는 한글 정렬이 가능하다는 장점이 있다.

캐릭터셋 확인하는 방법
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

Builder Pattern

 Jini     오전 2:28     JAVA     No comments   

public class NutritionFacts {

    private final int servingSize;
    private final int servings;
    private final int calories;
    private final int fat;
    private final int sodium;

    public static class Builder {   

        private final int servingSize;
        private final int servings;

        private int calories = 0;
        private int fat = 0;
        private int sodium = 0;

        public Builder(int servingSize, int servings) {
            this.servingSize = servingSize;
            this.servings      = servings;
        }

        public Builder calories(int val) {
            this.calories = val;
            return this;

        }

        public Builder fat(int val) {
            this.fat = val;
            return this;
        }

        public Builder sodium(int val) {
            this.sodium = val;
            return this;
        }

        public NutritionFacts build() {
            return new NutritionFacts(this);
        }
    }

    private NutritionFacts(Builder builder) {

        servingSize   = builder.servingSize;
        servings      = builder.servings;
        calories      = builder.calories;
        fat           = builder.fat;
        sodium        = builder.sodium;
    }
}

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

문법에서 문장까지(대명사)

 Jini     오후 11:00     문법에서 문장까지     No comments   

1. 대명사

■ 인칭대명사
1) 대명사는 숙어 동사(phrasal verb) 사이에 쓴다.
* I cut up half of one large banana and put it in cereal.
2) 소유격 대명사와 관사는 같이 쓸 수 없다.
* The our employees and juggling work with having to look after children.(T/F)
3) 소유격 대명사와 숫자는 대명사가 앞에 나온다.
* Two my kids have been begging for a little puppy all year.(T/F)
4) 소유대명사
* mine, yours, his, hers, ours, theirs는 그 자체가 대명사이므로 뒤에 명사를 쓰지 않는다.
    - DNA testing has verified to more men to discover that their children are not biologically theirs children.(T/F)

■ 부정대명사의 대명사
개념상 단수이므로 he(his) or she(her)로 쓰는게 맞으나 편의상 복수 사용
* Anyone can learn to dance if he or she wants to.
* Anyone can learn to dance if they want to.

* Everyone has his or her own way of learning.
* Everyone has their own way of learning.

■ 집합명사의 대명사
audience, class, committee, company, council, crew, crowd, family, government, group, gang, jury, staff, team
* My family is large. It is composed of nine members. : family라는 그룹에 대한 대명사
* My family is loving and supportive. They are always ready to help me.
    : 각 구성원에 대한 대명사
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg

문법에서 문장까지(관사/무관사)

 Jini     오후 10:36     문법에서 문장까지     No comments   

1. 관사

■ 부정관사 A/An
1) 하나임을 표시
2) 어떤 / 어느정도
3) 직업 앞에 쓰여 사람의 소속 표시(Categorization)
4) 대표단수 -> 일반화(Categorization)
5) 단수 가산 명사를 처음 언급할 때 : uncertain, not specific
6) per : Some people can cycle at 50km an/per hour

■ 정관사 The
1) 앞에 나온 명사를 다시 반복할 때(부정관사 5)
2) 특정한 사물, 사람을 말 할 때 the를 쓴다
* 유일무이한 것
* 상황 또는 문맥에서 무엇을 말하는지 speaker/writer와 listener/reader가 서로 알 수 있을 때
* 내가 <the + N>라고 말하는 순간, 상대방이 그 명사를 떠올릴 수 있다고 생각하면 the를 쓴다.
3) 일반적인 사람, 사물, 개념을 말할 때는 the를 쓰지 않는다.

■ 암기로 해결 가능한 the
1) 최상급 앞에는 the를 쓴다
2) 일반적으로 same 앞에는 the를 쓴다
3) 일반적으로 물(water)과 관련된 ocean, sea, river, canal은 이름 앞에 the를 붙인다
4) the United States, the Netherlands, the Philippines처럼 여러 개의 주나, 섬으로 이루어진 복수형 국가 앞에는 the를 붙인다
5) 반도, 제도, 산맥은 the를 붙인다
6) '~한 사람들'이나 '~한 것'이라는 추상적인 것을 말할 때 the 형용사를 슨다
* In addition to the dead, a total of 7,000 residents were affected by the disaster.
* Mother Teresa won the Nobel Prize in 1979 for her tireless work with the poor and the sick.
7) the radio / television
* I was listening to the radio.
* I was watching television.

2. 무관사
 : 정관사/부정관사 쓰지 않는 경우.
   특정한 것이 아닌 일반적인(general) 사물, 상황, 개념을 말 할 때 쓴다.

■ 식사 : breakfast / lunch / dinner 앞에는 정관사 the를 쓰지 않는다.
■ 과목 : mathematics, physics, history... 에는 일반적으로 부정관사 a/an를 쓰지 않는다.
■ sport, game에는 일반적으로 부정관사를 쓰지 않는다.
■ 관용적인 표현
  - go to school / go to church / go to jail / go to bed / go to work / go home
■ (등수) ~ 위하다.
  - Joe took part in a local singing contest and came second.
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
최근 게시물 이전 게시물 홈

Popular Posts

  • Redmine Text Format
    1. 글자색상 변경 %{color:red}dev% 2. 음영색상 변경 %{background:lightgreen} lightgreen% 3. 문단 넘버링(띄어쓰기 주의) # 큰 제목 ## 큰제목의 하위 제목 # 두번째 큰 제목 # ...
  • 오라클 한글깨짐 현상해결
    1. 레지스트리 편집기 실행 : 시작 -> 실행 -> regedit 2. HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 하위 경로 폴더중 이름이 "NLS_LANG"인 속성의 데이터 확인 3. "...
  • 오브젝트 : 코드로 이해하는 객체지향 설계
    오브젝트 - 코드로 이해하는 객체지향 설계 / 조영호 지음 / 위키북스 객체지향에 대해 그 동안 잊고 있었던 것들을 상기시켜주고 새로운 인사이트를 줬으며 그 동안의 설계에 대해 돌이켜 보게 해준 유익한 책. 객체 사이의 의존성을 완전히 없애는 것이 정...
  • New Features Java 1.7(JDK 1.7)
    ■ The New Objects Class   1) Objects.requireNonNull(T), Objects.requireNonNull(T, String)     #. 아래 Person 객체 생성시 newLastName이나 newFirstNa...
  • MongoDB Array Query(With MongoTemplate)
    Mongo Collection 구조 컬렉션명 : bookstore { "_id": "1234567890", "books": [ { "bookId": ...

Recent Posts

Recent Posts Widget

Blog Archive

  • ►  2023 (4)
    • ►  3월 (1)
    • ►  2월 (1)
    • ►  1월 (2)
  • ►  2022 (1)
    • ►  2월 (1)
  • ►  2020 (8)
    • ►  7월 (1)
    • ►  4월 (3)
    • ►  3월 (4)
  • ►  2018 (1)
    • ►  7월 (1)
  • ►  2015 (1)
    • ►  5월 (1)
  • ►  2014 (5)
    • ►  8월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
    • ►  1월 (1)
  • ▼  2013 (10)
    • ▼  12월 (1)
      • [Spring] 다국어 처리 동작 과정
    • ►  11월 (1)
      • JUNIT 테스트 작성 방법
    • ►  9월 (2)
      • 해당 달을 기준으로 달력 만드는 쿼리.
      • Override, toString()
    • ►  8월 (3)
      • Row 단위 데이터를 Column 단위로 변환
      • 오라클 한글깨짐 현상해결
      • 한글이 3byte인 경우 캐릭터셋 확인
    • ►  7월 (3)
      • Builder Pattern
      • 문법에서 문장까지(대명사)
      • 문법에서 문장까지(관사/무관사)
  • ►  2012 (1)
    • ►  3월 (1)

Categories

  • 객체지향 (1)
  • 도서요약 (1)
  • 문법에서 문장까지 (2)
  • 일상 (1)
  • 자기계발 (1)
  • 책 (1)
  • 키보드 (1)
  • 키크론 (1)
  • blogspot (2)
  • error (1)
  • exception (1)
  • GIT (1)
  • JAVA (6)
  • JUNIT (1)
  • K8 PRO RGB (1)
  • kafka (1)
  • markdown (1)
  • mongodb (2)
  • mongotemplate (1)
  • optional (1)
  • Oracle (4)
  • Redmine (1)
  • spring (1)
  • stackedit (1)
  • troubleshooting (1)
  • Visual Studio (1)
  • Webflux (1)

Unordered List

Pages

  • 홈

Text Widget

Categories

Tags

Facebook

  • Home
  • Features
  • _Multi DropDown
  • __DropDown 1
  • __DropDown 2
  • __DropDown 3
  • _ShortCodes
  • _SiteMap
  • _Error Page
  • Documentation
  • Video Documentation
  • Download This Template

Footer Menu Widget

  • Home
  • About
  • Contact Us

Social Plugin

JINI. Powered by Blogger.

Copyright © Jini's Blog | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates