블로그 이미지
좋은느낌/원철
이것저것 필요한 것을 모아보렵니다.. 방문해 주셔서 감사합니다..

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

    2008. 11. 6. 14:29 취미/사진



    누군가 심심풀이로 만들 거랜다...

    내 카메라는 보급기 중 맨 앞에 있는 넘...
    posted by 좋은느낌/원철
    2008. 11. 3. 15:42 Database
    euc-kr에서 utf-8로 넘어가는데 장애가 좀 큽니다. ㅡㅡ;
    개인 홈페이지라면 별 신경 안쓰는데 회사 홈페이지 작업시 그냥
    utf-8로 바꾸었다가 글씨 다 깨지면 난리나니까 걱정입니다. OTL

    [애로사항]
    1. 현재 작업중인 사이트가 euc-kr 인코딩으로 저장된 것들인데
    utf-8로 바꾸려면 파일들 전부 열어서 utf-8로 저장해야 되죠? ㅠ_ㅠ

    2. 사이트 제작시 사용하는 엔진프로그램이 있는데 이것도 당연히
    euc-kr로 되어 있으므로 전부 열어서 새로 저장해야 할텐데 이럴경우
    어떤 프리랜서 디자이너가 euc-kr로 작업해서 가져올경우 대략 난감
    해집니다. 프로그램을 euc-kr, utf-8 두가지 버전으로 가지고 있어야
    할까요? ㅡ0ㅡ;

    3. euc-kr로 저장된 파일을 utf-8로 저장하면 한글 다 깨지는거 아닐
    까요?

    4. 어차피 지금 euc-kr로 작업한 사이트는 지나가고 다음부터 utf-8로
    작업할시 주의해야 할 사항이 있다면 가르쳐주세요. 하지만 위의
    엔진프로그램은 앞으로도 계속 사용해야 하기 때문에 위와같은 문제
    발생시 난감해집니다. 파일을 열지않고 모두 인코딩 변환해주는거
    없을까요?


    이번에 css레이아웃 기반의 사이트를 2개 오픈하였는데 정말 너무
    힘들었습니다. 아직 디자이너들이 css레이아웃을 잘 사용하지 못해서
    제가 코딩을 거의 다했거든요. 교육은 수시로 하지만 테이블 레이아웃
    개념에서 잘 못빠져 나오고 id와 class의 조합등 여러 응용력이 너무
    부족한게 현실입니다. 이 상태에서 euc-kr을 utf-8로 바꾸는 작업
    했다가는 저 죽을지도 모릅니다. ㅡㅡ; 과로사!

    그리고 이번에 오픈한 사이트중 하나는 다국어 사이트 입니다.
    뭐 해봤자 중국어, 영어, 일본어 일텐데 영어는 문제 없을 것 같지만
    중국어, 일본어는 euc-kr로 작업하면 안되겠죠? 큰일이다 ㅠ_ㅠ

    겁나서 손을 못대고 있습니다. euc-kr에서 utf-8로 옮겨가는 것에
    대한 허와 실을 가르쳐 주십시오. .(__).

    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


    일반적인 리눅스 배포본에는 iconv라고 거의 있을겁니다.(glibc패키지에 딸려있는)

    Code: Select all
    $ iconv --from-code=cp949 --to-code=utf-8 원하는파일.txt --output=바뀐파일.txt


    이런식으로 인코딩을 변경해서 씁니다.

    저런 툴이 윈도우즈 환경에도 있을겁니다. 정적인 페이지의 경우는 일괄적으로 변경하고 헤더에 인코딩 지정을 utf-8로 바꿔주시면 될것 같습니다.

    동적으로 생성되는 페이지들의 경우는 잘 모르겠습니다.


    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


    뭐, 그렇게 길게 쓰셔도 상관 없습니다만, 짧은 옵션을 쓸 수도 있습니다. :-)

    Code: Select all
    iconv -f  cp949 -t UTF-8 input > output
    iconv -f cp949 -t utf-8 -o output input


    Windows용으로도 libiconv를 이식해 놓은 것이 있으므로 거기에 들어 있는 iconv를 쓸 수 있습니다. 또 다른 방법은 Win32 API인 MultiByteToWideChar와 WideCharToMultiByte를 써서 변환하는 C 프로그램을 하나 짤 수도 있습니다.
    (Perl 5.8 이상이나 Python 2.4 이상에 들어 있는 인코딩 변환 모듈을 써도 물론 되고요)

    아니면, JDK에 들어 있는 native2ascii를 2개 연결해서 쓰는 수도 있습니다.

    Code: Select all
    native2ascii -encoding MS949 inputfile  tempfile
    native2ascii -encoding UTF-8 -reverse tempfile outputfile



    html 파일 뿐 아니라 php, jsp. javascript 등도 파일에서 한글을 'raw string'(literal string)으로 쓰고 있었다면 위와 같은 식으로 일단 바꾸십시오. 그 후에 각 파일에서 euc-kr로 charset 선언을 한 부분도 모두 utf-8로 바꿔야겠지요. 혹시, 웹 서버 설정으로 (apache와 tomcat 등) http header를 통해 'charset=EUC-KR'을 내보내도록 된 부분이 있으면 명시적으로 http header를 통해 charset을 내보내지 않도록 하거나, UTF-8를 내보내도록 바꾸십시오.

    jsp의 경우 다음처럼 문자 인코딩 설정을 해 주세요:

    Code: Select all
    <%@ page contentType="text/html; charset=UTF-8"
             pageEncoding="UTF-8"
    %>


    contentType은 http 헤더를 통해 내보낼 C-T의 값일 뿐 아니라 실제로 밖으로 나가는 문서의 인코딩입니다. pageEncoding은 jsp 파일의 인코딩입니다. jsp 파일은 EUC-KR이면서 밖으로 나가는 (jsp를 컴파일한 후에 servlet engine이 내보내는) 문서의 인코딩은 UTF-8일 수 있습니다. 그 경우에는 다음과 같이 선언하면 됩니다.

    Code: Select all
    <%@ page contentType="text/html; charset=UTF-8"
             pageEncoding="EUC-KR"
    %>


    jsp나 servlet을 써서 form processing을 할 때에는 또 다른 값을 설정해 주어야 합니다.
    Code: Select all
    javax.servlet.ServletResponse.setCharacterEncoding("UTF-8")
    (jsp에서는
    Code: Select all
    request.setCharacterEncoding("UTF-8")
    )일 것입니다.
    이렇게 해도 get으로 받은 form의 인코딩이 이상할 것입니다. (post는 이상 없습니다).
    http://okjsp.pe.kr/bbs?act=VIEW&seq=410 ... word=&pg=5
    ('KSC5601'을 쓰라고 한 자리에 'UTF-8'을 쓰세요)애 았는 방법도 쓸 수 있지만, 다음을 server.xml에 넣는 것이 더 나을 것입니다.

    Code: Select all
    <Connector port="8080" maxThreads="150" minSpareThreads="25"
    maxSpareThreads="75" enableLookups="false" redirectPort="8443"
    acceptCount="100" debug="0" connectionTimeout="20000"
                   disableUploadTimeout="true"
                   useBodyEncodingForURI="true">



    http://java.sun.com/developer/technical ... ingualJSP/


    php라면 mbstring, iconv 모듈이 포함되어 있는 것을 쓰시는 것이 좋습니다.

    어느 경우라도 한글은 2byte, 라틴 글자는 1byte라는 가정 하에 바이트 수를 세어서 글자 수를 계산하던 방식은 통하지 않는다는 것에도 유의하십시오.

    DB backend에서도 UTF-8 혹은 다른 Unicode transformation form을 쓰도록 설정하셔야겠지요. MySQL이라면 필히 4.x 이상을 쓰셔야 multibyte encoding을 제대로 지원해 줍니다. posgresql은 최근 몇 년 사이에 나온 것은 다 잘 지원합니다. Oracle, Sybase, DB2 등도 잘 지원하고요. (단, Oracle에서 UTF8은 진짜 UTF-8이 아니므로 - Oracle이 유니코드 표준을 잘못 이해해서 만든 이상한 인코딩임- altutf8을 쓰셔야 합니다. Unicode의 첫번째 65,536자만 쓸 경우에 차이가 없기는 하지만, 혹시 나중에 그 이후의 글자를 써야할 일이 있을 때 생길 문제를 미리 방지하기 위함입니다.)

    JDBC로 DB에 연결할 때에도 문자 인코딩을 지정하는 것을 잊지 마십시오.



    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


    txt 파일이야...다시 만드는 거니까 문제가 없지만...DB 가 문제더군요.
    저같은 경우 리뉴얼작업을 주로 해왔는데 DB 가 utf-8 로 되어 있는 경우는 한번도 못봤습니다.
    서버를 새로 까는 경우는 한번도 없었어요.
    기존의 서버 설정을 따라야 하는데...그러한 것들이 utf-8 로 넘어가는데 큰 걸림돌인것 같아요.

    제가 개발쪽을 잘 몰라서 어렵게 느껴지는 것일 지도...ㅎㅎ

    제 개인 홈페이지는 아주 간단하게 utf-8 로 바꿨습니다.
    파일 다 열어서 utf-8 로 바꾸고, Data 파일(저는 text data 만 사용합니다. --;;) 다 열어서 바꾸고....끝

    제 생각인데 utf-8 을 사용하려면 server level 을 마음대로 수정 할 수 있을 때에나 가능 할 것 같네요.





    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    hyeonseok 님의 글:txt 파일이야...다시 만드는 거니까 문제가 없지만...DB 가 문제더군요.
    저같은 경우 리뉴얼작업을 주로 해왔는데 DB 가 utf-8 로 되어 있는 경우는 한번도 못봤습니다.
    서버를 새로 까는 경우는 한번도 없었어요.
    기존의 서버 설정을 따라야 하는데...그러한 것들이 utf-8 로 넘어가는데 큰 걸림돌인것 같아요.


    기존의 DB를 UTF-8로 바꾸는 가장 쉬운 방법은 현재 내용을 모두 덤프한 다음에 그 덤프한 파일을 iconv나 다른 인코딩 변환 도구로 UTF-8로 바꾸고, 그 결과를 DB에 다시 넣는 것입니다. 즉, 벡업으로부터 복구하는 과정과 비슷한데, 다만 인코딩을 바꾸는 과정이 중간에 들어간 셈입니다. 물론, DBMS에 따라서 필드 크기 등을 조절할 필요가 있을 수도 있습니다.

    DBMS에 따라 다르지만, 전체 DBMS 수준의 인코딩, 그 안에서 개별 DB의 인코딩, 개별 DB 안의 table 인코딩(심지어 테이블 안의 field 별 인코딩도 따로 지정할 수 있는 DBMS도 있지요)을 독립적으로 지정할 수 있으므로 DBMS 전체의 설정을 변경할 필요(혹은 그런 변경을 하는데 필요한 권한을 가질 필요)는 없을 것입니다.

    참, UTF-8을 쓸 경우 DBMS의 데이터 저장 방식에 따라 다르겠지만, EUC-KR에 비해 크기가 늘어난다는 점은 유의해야할 것입니다. 따라서, 한글이나 한자가 차지하는 비중이 매우 높다면, UTF-8 대신 UTF-16을 쓰는 것도 고려해 볼 수 있습니다. DB에서 UTF-16을 쓰는 경우라도 바깥 세상과 소통을 할 때에는 (html을 만들어 내보낼 때) UTF-8을 쓰는 것이 더 나을 것입니다.



    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


    한국 웹의 현실을 개선하기 위해 일선 현장에서 실천하시면서 결과물을 내놓고 계셔서 제가 오히려 감사 드려야 할 듯 싶습니다.참, 위에 적을 때 깜박 잊었는데, 혹시 UTF-8 편집기(윈도우즈용)를 고르고 계신다면 다음 글에서 언급한 jEdit가 꽤 괜찮은 것 같아 보입니다.

    http://www.ktug.or.kr/jsboard/read.php? ... 558&page=2

    UTF-8을 잘 지원하는 Windows용 ssh client로는 putty가 있습니다.
    (Appearance | Translation에서 UTF-8을 고를 수 있습니다)

    http://www.chiark.greenend.org.uk/~sgtatham/putty/

    한국에서 개발한 token도 ssh를 지원하면서 UTF-8도 지원했던 것 같은데, 확실하지 않습니다.
    posted by 좋은느낌/원철
    2008. 11. 3. 10:33 일상/교회
    아내는 성균관대 기독학생회 겟세마네 동문회에서 일한다..

    재택을 할 수 있는 일이라 여러 어려움 속에서도 꿋꿋이 일하고 있다..(애들 둘 데리고 일하는 게 쉽지 않을 텐데..)

    그 겟세마네에서 일 년 중 가장 큰 행사인 홈커밍데이를 지난 토요일에 치뤘다..

    여러 가지로 마음고생을 하였지만 큰 행사를 잘 치뤄낸 아내가 대견스럽다..


    난 이번 프로젝트의 막바지라 그날 출근을 했다..

    겟세마네 홈피에서 동영상을 하나 봤다..

    아내의 동기이자 아끼는 동생인 호영이가 편집한 영상인데 혼자 보기 아까워서 스크랩을 해본다..

    저런 아이디어를 내다니 대단한 재치꾼임이 틀림없다...




    posted by 좋은느낌/원철
    2008. 10. 30. 20:29 개발/DB2
    난이도 : 초급

    Paul Yip, Database Consultant, IBM Toronto Lab


    2003 년 8 월 28 일

    Windows, UNIX, 리눅스 플랫폼용 DB2 Universal Database에서 SQL을 사용하여 날짜, 시간, 타임스탬프를 조작하는 방법을 설명한다.
    © 2002 International Business Machines Corporation. 저작권 소유.

    알림:이 글을 읽기 전에 디스클레이머를 읽기 바란다.
    IBM® DB2® Universal DatabaseTM에 관한 글이다.

    머리말

    DB2 UDB에 익숙하지 않은 사람들에게 날짜와 시간을 조작하는 방법을 설명한다. 다른 데이터베이스를 다뤄본 많은 사람들에게 DB2 UDB가 얼마나 쉬운지를 설명하겠다.

    기초

    SQL을 사용하여 날짜, 시간, 타임스탬프를 파악하려면 해당 DB2 레지스터리를 참조하라.


    SELECT current date FROM sysibm.sysdummy1
    SELECT current time FROM sysibm.sysdummy1
    SELECT current timestamp FROM sysibm.sysdummy1



    sysibm.sysdummy1 테이블은 위에서 설명한 대로 DB2 레지스터의 값을 찾는데 사용할 수 있는 특별한 인메모리(in-memory) 테이블이다. VALUES 키워드를 사용하여 레지스터나 식을 계산할 수 있다. 예를 들어, DB2 Command Line Processor (CLP)에서 다음 SQL 문장에는 비슷한 정보들이 나타난다.


    VALUES current date
    VALUES current time
    VALUES current timestamp



    남아있는 예제에는 SELECT ... FROM sysibm.sysdummy1을 반복하거나 VALUES 구문을 사용하지 않고 함수 또는 식을 제공하도록 하겠다.

    GMT/CUT에 맞춘 현재 시간이나 현재 타임스탬프를 얻으려면 현재 시간 또는 타임스탬프에서 현재 타임존 레지스터를 제거한다.


    current time - current timezone
    current timestamp - current timezone



    날짜 시간, 타임스탬프의 경우, 적절한 함수를 사용하여 년도, 달, 요일, 시간, 분, 초, 마이크로초를 추출할 수 있다.


    YEAR (current timestamp)
    MONTH (current timestamp)
    DAY (current timestamp)
    HOUR (current timestamp)
    MINUTE (current timestamp)
    SECOND (current timestamp)
    MICROSECOND (current timestamp)



    타임스탬프와 관계없이 날짜와 시간을 추출하는 것 역시 매우 쉽다.


    DATE (current timestamp)
    TIME (current timestamp)



    영어로도 날짜와 시간 계산을 할 수 있다. :


    current date + 1 YEAR
    current date + 3 YEARS + 2 MONTHS + 15 DAYS
    current time + 5 HOURS - 3 MINUTES + 10 SECONDS



    두 날짜 간에 날수가 얼마나 되는지를 계산하려면 날짜를 빼면 된다.


    days (current date) - days (date('1999-10-22'))



    다음은 마이크로초 부분을 0으로 재설정하고 현재 타임스탬프를 얻는 방법이다.


    CURRENT TIMESTAMP - MICROSECOND (current timestamp) MICROSECONDS



    날짜 또는 시간 값을 다른 텍스트와 연결시키려면 그 값을 문자열로 변환해야 한다. CHAR() 함수를 사용한다.


    char(current date)
    char(current time)
    char(current date + 12 hours)



    문자열을 날짜 또는 시간 값으로 변환하려면 다음과 같이 한다.


    TIMESTAMP ('2002-10-20-12.00.00.000000')
    TIMESTAMP ('2002-10-20 12:00:00')
    DATE ('2002-10-20')
    DATE ('10/20/2002')
    TIME ('12:00:00')
    TIME ('12.00.00')



    TIMESTAMP(), DATE(), TIME() 함수는 여러 포맷들을 허용한다. 위 포맷은 단순한 예제일 뿐이다. 독자 여러분이 스스로 해 보길 바란다.

    경고:
    DB2 UDB V8.1 SQL Cookbook (Graeme Birchall) 발췌 (http://ourworld.compuserve.com/homepages/Graeme_Birchall).

    DATE 함수에서 쿼트를 없애면 어떻게 될까? 함수는 여전히 작동하겠지만 정확하지 않은 DATE가 나올 것이다.



    SELECT DATE(2001-09-22) FROM SYSIBM.SYSDUMMY1;



    결과:


    ======
    05/24/0006




    위 결과에서 어떻게 2000년 이나 차이가 났을까? DATE 함수가 입력으로 문자열을 취하면 DB2 날짜의 유효 문자로 간주되고, 따라서 이를 변환하는 것이다. 반대로, 입력이 숫자라면 이 함수는 현재 년도(0001-01-01)에서 1을 제한 날 수를 나타내는 것으로 간주한다. 위 쿼리에서 입력은 2001-09-22였고 이것은 (2001-9)-22과 동일하다. 또한 이것은 1970이다.





    위로




    날짜 함수

    가끔씩, 두 개의 타임스탬프들이 어떻게 차이가 있는지 알아야 한다. 이를 위해 DB2는 TIMESTAMPDIFF()라고 하는 빌트인 함수를 제공한다. 하지만 리턴된 값은 근사값이다. 윤년을 고려하지 않고 한 달을 30일로만 가정하기 때문이다. 다음은 두 날짜들 간 차이를 찾아내는 방법이다.


    timestampdiff (, char(
    timestamp('2002-11-30-00.00.00')-
    timestamp('2002-11-08-00.00.00')))



    의 자리에, 다음 값들을 사용하여 시간 단위를 나타낸다.

    1 = 초의 소수부분
    2 = 초
    4 = 분
    8 = 시간
    16 = 요일
    32 = 주
    64 = 달
    128 = 분기
    256 = 년
    timestampdiff()를 사용하면 날짜가 비교적 가까이 있을 때 더 정확한 결과가 나온다. 보다 정확한 계산을 원하면 다음을 사용하여 시간 단위로(초 단위로) 차이를 결정한다.


    (DAYS(t1) - DAYS(t2)) * 86400 +
    (MIDNIGHT_SECONDS(t1) - MIDNIGHT_SECONDS(t2))



    SQL의 사용자 정의 함수를 사용할 수도 있다.


    CREATE FUNCTION secondsdiff(t1 TIMESTAMP, t2 TIMESTAMP)
    RETURNS INT
    RETURN (
    (DAYS(t1) - DAYS(t2)) * 86400 +
    (MIDNIGHT_SECONDS(t1) - MIDNIGHT_SECONDS(t2))
    )
    @



    윤달일 경우 날 수를 결정할 때 쓸 수 있는 유용한 SQL 함수가 있다.


    CREATE FUNCTION daysinyear(yr INT)
    RETURNS INT
    RETURN (CASE (mod(yr, 400)) WHEN 0 THEN 366 ELSE
    CASE (mod(yr, 4)) WHEN 0 THEN
    CASE (mod(yr, 100)) WHEN 0 THEN 365 ELSE 366 END
    ELSE 365 END
    END)@



    마지막으로 다음은 날짜 조작에 쓰이는 빌트인 함수들이다. 여러분의 필요에 맞는 함수를 빠르게 선택하는데 사용하기 바란다. 보다 자세한 정보는 SQL 레퍼런스를 참조하기 바란다.

    SQL 날짜와 시간 함수
    DAYNAME 인자에 요일 이름(예, 금요일)이 포함된 혼합 문자열을 리턴.
    DAYOFWEEK 1에서 7까지 정수 값으로 요일을 나타낸다. 여기에서 1은 일요일을 의미한다.
    DAYOFWEEK_ISO 1에서 7까지 정수 값으로 요일을 나타낸다. 여기에서 1은 월요일이다.
    DAYOFYEAR 1에서 366 까지의 정수로 날(day)을 리턴.
    DAYS 날짜를 정수로 리턴.
    JULIAN_DAY January 1, 4712 B.C. (Julian 달력의 시작)부터 인자에 지정된 날짜 값까지 정수로 날수를 나타냄.
    MIDNIGHT_SECONDS 0에서 86400 까지의 정수 값으로 자정(midnight)과 인자에서 지정된 시간 값 사이의 초의 값을 나타냄.
    MONTHNAME 달의 이름(예를 들어, January)을 포함하고 있는 혼합 문자열 리턴.
    TIMESTAMP_ISO 날짜, 시간, 타임스탬프 인자에 기반한 타임스탬프 값을 리턴.
    TIMESTAMP_FORMAT 문자 템플릿을 사용하여 인터프리팅 된 문자열에서 타임스탬프를 리턴.
    TIMESTAMPDIFF 두 타임스탬프들 간 차이에 기반하여, 첫 번째 인자에서 정의된 유형의 인터벌 수를 리턴.
    TO_CHAR 문자 템플릿을 사용하여 포맷된 타임스탬프의 문자 구현을 리턴. TO_CHAR는 VARCHAR_FORMAT의 동의어이다.
    TO_DATE 문자 템플릿을 사용하여 인터프리팅 된 문자열에서 타임스탬프를 리턴. TO_DATE는 TIMESTAMP_FORMAT의 동의어이다.
    WEEK 1에서 54까지 정수 값으로 주(week)를 리턴함. 주는 Sunday로 시작한다.
    WEEK_ISO 1에서 53까지 정수 값으로 주를 리턴함.




    위로




    날짜 포맷 변경

    날짜 표현에 관한 질문을 자주 받는다. 날짜에 사용되는 기본 포맷은 데이터베이스의 영역(territory) 코드로 결정된다. (이것은 데이터베이스 생성 때 지정될 수 있다.) 예를 들어, 데이터베이스가 territory=US를 사용하여 만들어졌다면 날짜 포맷은 다음과 같을 것이다.



    values current date
    1
    ----------
    05/30/2003

    1 record(s) selected.



    말하자면 이것은 MM/DD/YYYY 포맷이다. 이 포맷을 변경하려면 db2 유틸리티 패키지 컬렉션을 다른 날짜 포맷으로 바인딩한다. 다음은 포맷 종류이다.

    DEF 영역 코드와 관련된 날짜 포맷과 시간 포맷을 사용.
    EUR IBM 유럽 표준의 날짜와 시간 포맷을 사용함.
    ISO International Standards Organization의 날짜와 시간 포맷을 사용.
    JIS Japanese Industrial Standard의 포맷 사용.
    LOC 해당 데이터베이스의 영역 코드와 관련된 로컬 형식의 날짜와 시간 포맷을 사용함.
    USA IBM U.S. 표준을 사용함.


    ISO (YYYY-MM-DD)로 디폴트 포맷을 변경하려면 다음과 같이 한다.

    명령행에서, 현재 디렉토리를 sqllib\bnd로 변경한다.
    예:
    On Windows: c:\program files\IBM\sqllib\bnd
    On UNIX: /home/db2inst1/sqllib/bnd

    SYSADM 권한을 가진 사용자로서 OS 쉘에서 데이터베이스로 연결한다
    db2 connect to DBNAME
    db2 bind @db2ubind.lst datetime ISO blocking all grant public




    (여러분의 상황에 적용할 때에는 데이터베이스 이름과 선호하는 날짜 포맷으로 대체한다.)


    이제 데이터베이스가 ISO 날짜 포맷을 사용한다.



    values current date
    1
    ----------
    2003-05-30

    1 record(s) selected.








    위로





    날짜/시간 포맷 커스터마이징

    마지막 예제에서는 DB2가 로컬 포맷으로 날짜를 나타내는 방식을 어떻게 변경하는지를 설명하였다. 하지만 'yyyymmdd'처럼 커스텀 포맷으로 하고싶다면? 최선의 방법은 커스텀 포맷팅 함수를 다시 작성하는 것이다.

    UDF:


    create function ts_fmt(TS timestamp, fmt varchar(20))
    returns varchar(50)
    return
    with tmp (dd,mm,yyyy,hh,mi,ss,nnnnnn) as
    (
    select
    substr( digits (day(TS)),9),
    substr( digits (month(TS)),9) ,
    rtrim(char(year(TS))) ,
    substr( digits (hour(TS)),9),
    substr( digits (minute(TS)),9),
    substr( digits (second(TS)),9),
    rtrim(char(microsecond(TS)))
    from sysibm.sysdummy1
    )
    select
    case fmt
    when 'yyyymmdd'
    then yyyy || mm || dd
    when 'mm/dd/yyyy'
    then mm || '/' || dd || '/' || yyyy
    when 'yyyy/dd/mm hh:mi:ss'
    then yyyy || '/' || mm || '/' || dd || ' ' ||
    hh || ':' || mi || ':' || ss
    when 'nnnnnn'
    then nnnnnn
    else
    'date format ' || coalesce(fmt,' ') ||
    ' not recognized.'
    end
    from tmp



    이 함수 코드는 복잡해보인다. 하지만 자세히 살펴보면 매우 단순하면서도 좋은 코드임을 알 수 있다. 우선, common table expression (CTE)를 사용하여 타임스탬프(첫 번째 입력 매개변수)를 개별 컴포넌트에서 분리한다. 그런 다음, 제공된 포맷(두 번째 입력 매개변수)을 검사하고 요청된 포맷과 부분을 사용하여 타임스탬프를 다시 정렬한다. 이 함수는 매우 유연하다. 또 다른 패턴을 추가하려면 원하는 포맷과 함께 WHEN 구문을 붙이면 된다. 예상하지 못했던 패턴이 나타났다면 에러메시지가 리턴된 것이다.

    사용 예제:


    values ts_fmt(current timestamp,'yyyymmdd')
    '20030818'
    values ts_fmt(current timestamp,'asa')
    'date format asa not recognized.'
    posted by 좋은느낌/원철
    2008. 10. 30. 18:50 개발/DB2

    안녕하세요.
    다국어지원 홈페이지를 만들어야 하는데 어떻게 해야할지 방향이 잡히지 않아 글을 올립니다.

    아래의 내용은 제가 그냥 테스트해본 후 적어본 것입니다.
    1. 울트라에디터에서 아래의 내용을 입력한 후 UTF-8코드로 저장하여 ,
       브라우저에서 불러오면 정상적으로 보임
       <meta http-equiv="content-type" content="text/html;charset=utf-8">  
       테스트
      
    2. 위의 파일내용에서 charset부분만  EUC-KR로 변경한후 브라우저에서 불러오면 깨져보임

    3. character set이 KO16MSWIN949인 오라클에 UTF-8코드로 변환된 문자를 입력하면
       TOAD툴에서 select시 깨져보이고, select한 자료를 확장자가 html파일로 저장한 후,
       브라우저에서 읽어들이면 인코딩을 UTF-8설정해도 깨져보임.
      
    4. character set이 UTF-8인 오라클에 한글을 입력하면 TOAD툴에서 select시 정상적으로 보이나,
       조회한 내용을 확장자가 html인 파일로 저장하여 브라우저에서 UTF-8코드로 인코딩하여보면
       깨져보임. 그러나 EUC-KR로 인코딩하여 보면 정상적임.
      
    5. character set이 UTF-8인 오라클에 직접 UTF-8코드로 인코딩한 한글을 입력한후,
       TOAD툴에서 select하면 깨져보임. 입력된 자료를 파일로 만들어 UTF-8코드로
       웹브라우저에서 읽어봐도 역시 깨져보임.
      
    어거저거 테스트해보는데 정리가 되지 않습니다.-.-;;
    제가 궁금한 것은,
    1. character set이 UTF-8인 오라클 데이타베이스에서 한글을 insert문으로 입력시
       오라클이 자동으로 UTF-8코드로 변환하여 테이블에 입력하여 주고,
       저장된 내용을 파일로 만들기 위해 select할때에는 자동으로 UTF-8코드를 한글코드로 변환해주나요?
      
    2. 하나의 웹페이지 테이블내에 일본어, 중국어, 러시아어등등 여러국가의 언어를 표시해야 하는
       웹서버를 구축하려 할때 어떤방식으로 데이타베이스를 생성하고, 자료를 입출력해야하는지 궁금합니다.

    이와 관련된 일을 해보신 분은 도움주시면 고맙겠습니다.
    맛있는 식사도 대접하겠습니다.^^

    이 글에 대한 댓글이 총 1건 있습니다.

    제가 알고 있는 사항을 말씀드리겠습니다.


    1. character set 은 다국어 지원을 위해서는 UTF-8 / AL32UTF8 이어야 합니다.

    2. oracle서버와 client-server 환경일 경우에는 client의 nls_lang설정에 따라 문자열의 값이

        UTF-8로 conversion되어 주고 받게 됨으로 client의 nls_lang설정이 중요합니다.

        토드에서의 테스트가 이경우 입니다.

    3. 웹브라우저의 경우 소스파일이 unicode로 저장되어야 하며

        <meta http-equiv="content-type" content="text/html;charset=utf-8"> 로 설정해

        사용하는 문자열을 unicode로 하여야 합니다.

    4. oracle과의 연결객체 jdbc나 windows의 ado-connection등이 unicode string을 지원해야 합니다.


    이런 조건이 만족된다면 웹을 통한 server page에서 저장된 문자열은 utf-8로 저장되며

    저장된 문자열중 한글은 toad와 같은 툴을 통해서 ( 물론 client nls_lang=ko16ksc5601혹은 ko16mswin949 ) 정상적으로 확인이 가능합니다.

    posted by 좋은느낌/원철
    2008. 10. 29. 10:08 시사/요즘 세상은
    며칠 전 작업을 하다가 무슨 뉴스동영상을 볼려고 어디 뉴스사이트에 접속한 적이 있다..

    뉴스가 끝나고 보통의 경우 창을 닫든지, 다른곳으로 이동하는데 그날따라 그냥 켜두고 있었더니..

    모닝케어 CF 동영상이 흐른다..

    근데 그날 한 번 들은 CM송이 계속 귓가를 맴돈다...

    .....사표를 날려라..내일 아침까지만..


    요즘 계속되는 강행군에 지친 것일까?

    어젠 모처럼만에 일찍 퇴근했더니 아내가 좋아하더만..


    그 CM송 다시 듣고 싶어서 네이버씨를 이용했다.

    검색했더니 바로 나오네..

    좀 외워 볼까?


    posted by 좋은느낌/원철
    2008. 10. 25. 20:12 개발/JavaScript

    자바스크립트 날짜 계산 함수

    <script language="JavaScript">
    <!--
    /**
     param date : Date Objeet
     return string "YYYYMMDD"
     usage : getDateObjToStr(new Date());
    */
    function getDateObjToStr(date){
     var str = new Array();

     var _year = date.getFullYear();
     str[str.length] = _year;
     
     var _month = date.getMonth()+1;
     if(_month < 10) _month = "0"+_month;
     str[str.length] = _month;
     
     var _day = date.getDate();
     if(_day < 10) _day = "0"+_day;
     str[str.length] = _day
     var getDateObjToStr = str.join("");

     return getDateObjToStr;
    }

    /**
     getDateObjToStr 함수 필요
     return Today "YYYYMMDD"
    */
    function getToday(){
     var d = new Date();
     var getToday = getDateObjToStr(d);
     return getToday;
    }

    /**
     데이트 계산 함수
     param date : string "yyyymmdd"
     param period : int
     param period_kind : string "Y","M","D"
     param gt_today : boolean
     usage : calcDate("20080205",30,"D");
    */
    function calcDate(date,period, period_kind,gt_today){

     var today = getToday();

     var in_year = date.substr(0,4);
     var in_month = date.substr(4,2);
     var in_day = date.substr(6,2);
     
     var nd = new Date(in_year, in_month-1, in_day);
     if(period_kind == "D"){
      nd.setDate(nd.getDate()+period);
     }
     if(period_kind == "M"){
      nd.setMonth(nd.getMonth()+period);
     }
     if(period_kind == "Y"){
      nd.setFullYear(nd.getFullYear()+period);
     }
     var new_date = new Date(nd);
     var calcDate = getDateObjToStr(new_date);
     if(gt_today){ // 금일보다 큰 날짜 반환한다면
      if(calcDate > today){
       calcDate = today;
      }
     }
     return calcDate;
    }
    //-->
    </script>

    posted by 좋은느낌/원철
    2008. 10. 25. 10:40 Project/Mobis Claim Analysis
    출처 : http://bloggernews.media.daum.net/news/1959161?pos=1&RIGHT_VIEW3=R3

    +++++++++++++++++++++++++++++++++++++++

    제네시스 쿠페, 2% 부족한 이유

    뉴욕에서 바라본 세상 2008/10/23 22:59 by 고수민

    제가 자동차에 대해서 잘 모르던 시절에는 현대의 스쿠프나 티뷰론과 같은 차가 스포츠카라고만 생각하던 적도 있었습니다. 자동차에 점점 관심을 더 가지게 되고 자동차 관련 책들을 보기 시작하니까 표현도 어색한 스포츠루킹카라는 이상한 표현을 접하게 되었습니다. 처음에는 몰랐지만 이것이 sports car라는 영어표현에 대비해서 스포츠카의 흉내만 낸(혹은 모양은 스포츠카인데 성능은 받쳐주지 못한다는 의미) sports looking car의 표기라는 것을 나중에 알게 되었습니다. 이런 표현을 쓰는 자동차 전문 기자들이나 칼럼니스트들이 이런 콩글리쉬까지 만들어낸 이유는 아마도 스포츠카 근처도 못 갈 기술력을 가지고 겉모양만 가지고 스포츠카라고 강변하는 국내 자동차사에 대한 조롱이 담겨있기도 했을 것 같다는 생각을 해보았습니다.

    스포츠카의 정의는 무엇?

    저도 모양만 예쁘고 문이 두 개면 다 스포츠카가 아닌가 생각하던 시절도 있었습니다만 스포츠카의 정의를 집단 지성의 대표주자인 위키피디어는 다음과 같이 말하고 있습니다.

    A sports car is a term used to describe a class of automobile. The exact definition varies, but generally it is used to refer to a low to ground, light weight vehicle with a powerful engine. Most vehicles referred to as sports cars are rear-wheel drive, have two seats, two doors, and are designed for more precise handling, acceleration, and aesthetics. A sports car's dominant considerations can be superior road handling, braking, maneuverability, low weight, and high power, rather than passenger space, comfort, and fuel economy.


    정리를 해보면 정의는 분분하나, 지상고가 낮고, 가벼운 차체를 가졌으나 강한 엔진을 가진 자동차라고 볼 수 있다는 것. 그리고 후륜구동 방식이어야 하고, 두 개의 좌석과 두 개의 차문을 가지고, 좀 더 정확한 핸들링과 가속 그리고 미학적인 면을 염두에 두고 디자인이 된 차를 말하는 것으로 정리가 될 것 같습니다. 이 정도면 아마 여러분들 중 그 누가 생각하고 있는 스포츠카와도 크게 다른 정의는 아니리라고 생각합니다.


    무엇인가에 앞서려면 정말 남들이 생각하지 못하는 새로운 개념을 만드는 창의성이 있어야 하는 것이 분명합니다. 과거에 럭셔리 자동차의 대표였던 벤츠를 도저히 넘지 못하고 2인자의 자리에서 머물러있던 BMW가 스포츠카의 핸들링과 성능을 세단에 접목시킨 스포츠세단이라는 것을 유행시키더니 이젠 벤츠가 새 모델이 나올 때마다 자동차 전문가들에 의해서 BMW의 핸들링에 비교당하면서 아직 부족하다는 말을 듣는 수모를 당하고 있습니다. 물론 누구도 전체적으로 봐서 벤츠가 BMW보다 못하다는 말은 하지 않지만 핸들링에 관해서는 벤츠가 떨어진다는 말은 항상 미국 자동차 전문기자의 자동차 평에서 보이는 말입니다. 또한 제네시스가 출시되었을 때에도 거의 모든 미국 잡지의 시승기에서 빠짐없이 나오는 말이 “BMW의 핸들링을 기대하지는 못하지만 그래도 잘 만든 편이다”라며 칭찬 같지 않은 칭찬을 해주었었습니다.

    새로운 기준을 제시한 BMW

    즉, BMW는 스포츠세단의 새로운 기준을 만들었고 이제 벤츠를 비롯한 모든 럭셔리 자동차들이 좋던 싫던 BMW에 비교당하고 있다는 것입니다. 어감이 좋아서 인지, BMW가 개척한 길이 옳은 길이라는 것을 인정한 것인지 이제는 거의 모든 럭셔리 자동차 메이커들이 자동차를 출시할 때마다 스포츠세단임을 표방하고 있습니다. (현대 제네시스도 포함해서) 각 업체들은 자사의 자동차가 스포츠 세단임을 증명이라도 하듯 엔진의 출력이나 속칭 제로백이라고 하는(정지상태에서 시속 100km에 도달하는 데 걸리는 시간) 수치를 부각해서 광고하는 시대가 되었습니다.

    실상 모든 자동차 소비자가 칼날 같은 핸들링을 바라는 것도 아니고, 이런 기민한 핸들링이 일상의 운행에서 꼭 필요하지는 않다고 주장하는 사람도 많지만 스포츠세단이라는 단어는 그 자체가 주는 첨단 자동차의 이미지는 부정하기 힘든 것 같습니다. 더욱이 푹신하고 묵직한 느낌을 좋아하는 운전자가 많은 우리나라에서 조차도 럭셔리 자동차 메이커들이 자신들의 자동차를 스포츠세단이라고 광고하는 것도 아이러니가 아닐 수 없습니다.

    여담인데 이 스포츠라는 것이 과연 무슨 종목의 스포츠일까요. 당연히 모터 스포츠 즉, 자동차 경주대회를 말하는 것일 것입니다. 자동차 경주대회에 나가기 위해서 경주용 자동차가 갖추어야 할 조건은 어떤 것들이 있을까요. 일단 빨라야 하니까 엔진의 출력이 높아야 할 것이고, 차체도 가벼워야 할 것입니다. 하지만 필요할 때는 바로 바로 설 수도 있어야 하니까 브레이크의 성능도 좋아야 할 것 같습니다. 또한 빠질 수 없는 것이 핸들링입니다.

    여담인데 영어로는 steering wheel을 우리는 핸들이라는 콩글리쉬로 쓰다 보니 핸들링이라는 말도 의미가 잘못 해석되기도 했던 시절이 기억이 납니다. 얼마 전에 기아자동차가 IMF시절에 부도가 나기 전에 야심작으로 출시했던 크레도스를 기억하실 것입니다. 이 차는 많은 자동차 기자들이 핸들링이 경쟁차종인 소나타3에 비해서 낫다고 칭찬을 한 적이 있었는데 많은 사람들의 반응이 핸들이 얼마나 쉽게 잘 돌아가는가 하는 의미로 받아들여서 “내가 몰아보니 소나타가 핸들링이 더 좋더구먼!” 하면서 기자들이 틀렸다고 하는 사람도 보았었습니다.

    핸들링이라는 말은 자동차가 얼마나 운전자의 의도에 따라 정확하게 움직여 주는냐라고 정의할 수 있습니다. 이런 성능은 직진 가속시보다 코너를 돌아 나갈 때 확연한 차이를 가져옵니다. 특히 고속으로 코너구간을 달리다 보면 아무리 엔진이 힘 센 자동차라 할지라도 트랙바깥으로 벗어나지 않기 위해 감속을 할 수 밖에 없고 특히 트랙이 구불구불하다고 한다면 좋은 핸들링이 없이는 높은 엔진의 출력은 무용지물이 될 수 밖에 없습니다. 이는 안정성을 위해 광폭타이어를 끼우는 정도로 해결될 문제가 아니고 단단하게 세팅된 서스펜션에다가 자동차 전후의 무게 배분을 적절히 해야 하고 때로는 트랙션 컨트롤 장치와 같은 전자장비도 필요하게 되며, 전륜구동보다는 후륜구동이 나은 핸들링을 제공하는데 요즘은 승용차에 아예 전륜구동 (全輪驅動) 시스템을 적용함으로써 좀 더 나은 핸들링을 구현하려는 노력이 일반화되고 있습니다.



    많은 사람들이 이런 향상된 핸들링이 필요하느냐를 떠나서, 일상의 운전에서 진짜로 차이를 느낄 수 있느냐고 묻는 경우가 많은데 전문가들은 일반 운전자도 실제로 일상의 주행에서 고속운행이나 코너 주행 시 분명히 차이를 느낄 수 있다고 합니다. 좋은 예는 아닐지 모르겠는데 얼마 전에 타시던 BMW를 팔고 현대자동차의 베라크루즈를 사신 교포분과 이야기를 나눈 적이 있습니다. 이 분 이야기가 BMW를 타다가 베라쿠르즈를 타니 오히려 베라쿠르즈의 승차감이 너무 좋다고 하신 것을 들었습니다. 분명 이 분은 한국식의 무른 승차감이 체질에 맞는 분이었음이 분명하지만 승차감의 차이는 긍정적인 방향으로든 그 반대로든 차를 잘 모르는 사람도 느낄 수 있다는 것은 분명한 것 같습니다.

    제네시스 쿠페, 진정한 스포츠카?

    요즘 현대자동차는 한국에서 새로이 출시된 제네시스 쿠페를 두고 이제 진정한 스포츠카가 탄생하였다고 선전하고 있습니다. 똑 같은 이름을 가진 제네시스 세단에 기반을 두어 쿠페로 변형한 차라고 하는데 의외로 가격이 적정해서 제네시스가 데뷔했을 때만큼의 가격에 대한 큰 논란은 없는 것 같습니다. 그리고 이 차가 미국시장에도 곧 데뷔할 예정이고 이 소식은 미국의 자동차 팬들과 전문가들에게도 물론 전해져서 약간의 기대를 불러일으키고 있습니다.

    일반적으로 미국시장에서 현대자동차 가격의 책정이 국내 가격보다 저렴했던 것을 감안하면(현대자동차는 그렇지 않다고 부인하고 있습니다만) 제네시스 쿠페의 가격도 의외로 저렴하게 나올 가능성이 높고, 현대 측에서 잡고 있는 연간 3만대 정도의 판매목표가 불가능하지만은 않은 것으로 보입니다.  하지만 제네시스 쿠페의 판매전망이 기대에 어긋날 수도 있는 데 저는 제네시스 쿠페의 성능 중에서도 제로백에 관해서만 따져 보려고 합니다.

    국내 양산형 자동차들의 제로백은 보통 10-14초 사이라고 합니다. 보통 스포츠 세단이라고 하면 7초 내의 제로백을 보여야 한다고들 하는데 미국 시판 형인 제네시스 세단은 이 기준에는 쉽게 부합됩니다. (측정값이 조사기관마다 다르나 3.8모델은 6초대 초 중반, 4.6모델은 5초대 후반으로 발표가 되고 있으니까요.) 그런데 쿠페는 어떨까요. 스포츠세단은 스포츠세단이지 스포츠카라고 부르지는 않습니다.

    스포츠카라면 스포츠 드라이빙에 더 적합해야 하므로 쿠페 형으로 나오는 것이 더 맞고 위에 소개 드린 스포츠카의 정의도 그것을 뒷받침합니다.(BMW의 M시리즈 같은 예외는 있습니다만) 우리나라 최초의 진짜 스포츠카라는 3.8리터 엔진을 가진 제네시스 쿠페의 제로백이 6.5초라고 하니까 일반 자동차의 기준과 비교하면 정말 많이 빠른 것은 맞습니다. 그리고 가격대비 이 정도의 고성능의 자동차는 수많은 수입차 속에서도 찾아보기가 힘듭니다.

    큰 엔진의 제네시스 세단, 렉서스보다 느리다

    문제는 이 제로백은 미국의 자동차 소비자들에게 별다른 감흥을 줄만한 수치가 아니라는 데 있습니다. 얼마 전에 에드먼즈닷컴이라는 미국 자동차 전문사이트에서 제네시스 4.6 세단과 렉서스 GS의 3.5 세단을 비교 평가한 적이 있었습니다. 여러 가지 항목에 대해 다양한 비교를 했고 결론적으로는 가격의 절대적인 우위를 지닌 제네시스가 비교평가에서 더 낫다는 평가를 받았지만 이 비교평가를 읽는 내내 찜찜했던 것이 바로 이 제로백이었습니다.

    According to our scales, the GS 350 weighs in 320 pounds less than the Genesis and that helped it score a 5.7-second 0-60-mph time and run through the quarter-mile in 14.0 seconds at 99.5 mph. The Genesis, despite its larger, more powerful V8, was slower, completing those same feats in 5.9 seconds and 14.1 seconds at 101 mph.


    본문의 내용은 결국 렉서스는 더 작은 엔진을 가지고도 제로백이 5.7이 나왔고 제네시스는 더 큰 엔진과 출력을 가지고도 5.9초가 나와서 렉서스가 더 빠르다는 것입니다. 자동차의 제로백은 단지 엔진의 출력만으로 결정되는 것은 아니고, 변속기나 타이어, 차체 무게 등에 의해서 영향을 받기 때문에 제로백이 느리다고 열등한 차라고 판단되는 것은 억울한 일입니다만 적어도 스스로 스포츠 세단이라고 표방한다면 더 나은 스포츠적인 성능을 가지는 것이 호의적으로 평가될 수 밖에 없습니다.



    그런데 제네시스 세단은 같은 6기통의 비교도 아니고 6기통 대 8기통의 비교에서 뒤졌다는 것에서 불편한 기분이 들었던 것입니다. 하지만 이런 느낌은 저만이 아니었던지 이 비교평가에 댓글을 달았던 많은 미국의 독자들이 비교가 공정하지 않다면 불만을 표했습니다. 차라리 6기통끼리 비교해서 졌으면 차이는 더 벌어졌을지언정 자존심은 덜 상했을까요.

    기대에 못 미치는 제네시스 쿠페

    그래서 미국의 현대자동차 팬들 사이에서는 차체가 훨씬 작고 가벼울 제네시스 쿠페에 대한 기대가 더 컸었던 것 같습니다. 그런데 발표된 제로백을 보니 제네시스 3.6 세단과 비교해서 별로 나아진 것도 없는 수치가 나온 것입니다. 니싼 자동차에서 나오는 350z라는 스포츠카가 있습니다. 가격이 28000불에서 38000불 정도로 나와있고 후륜구동에다가 쿠페이므로 현대 제네시스와 여러모로 비교대상이 되는 차입니다. 이 차의 2008년식 모델이 3.5리터의 엔진에다가 307마력의 출력을 가졌고 제로백이 5.3초로 나와있습니다. (에드먼즈닷컴 자료) 물론 가격은 현대의 3.8모델이 근소하게 싸게 나올 가능성이 높습니다만 1.2초나 되는 차이로 느리다는 사실은 미국의 자동차 팬들을 결코 설레게 할 만한 요소가 되지 못합니다.

    사람들이 세단을 사지 않고 작고 불편한 쿠페를 사는 이유는 미적인 면을 빼면 “빠르다”는 것밖에는 이유가 없습니다. 그런데 같은 니싼의 쿠페도 아닌 맥시마라는 세단을 보면(가격은 3만불 정도) 이 역시 3.5리터 엔진에 제로백이 에드먼즈는 6.3초, 모터트랜드는 6.1초의 기록이 나온다고 밝히고 있습니다. 또 다른 어큐라의 세단인 TL도 6초대 초반으로 이야기가 나오고 있습니다. 물론 가격도 비싸고, 전륜구동인 위 두 모델을 예로 들어서 제네시스 쿠페와 비교하는 것이 옳은가 하는 의문이 들 수도 있는데 초점은 덩치도 크고, 세단인 즉, 여러 면에서 동력성능에 제네시스 쿠페에 비해 손해인 차들보다도 제네시스 쿠페가 느리다는 것이 실망스럽다는 것입니다.


    미국 시장에서 어필하기 위해서 제네시스 쿠페의 제로백과 같은 성능의 열세는 결국 저렴한 가격으로 보상이 되어야 합니다. 그래서 많은 미국 전문가들이 제네시스 쿠페의 가격을 2만불 초 중반으로 잡고 있습니다. 미국인들이 흔히 하는 이야기가 미국시장에서 현대의 성장의 비결로 일본 차 대비 90-95% 만큼 성능의 자동차를 85-90%의 가격으로 팔았기 때문이라고 이야기합니다. 그리고 어떻게 보면 일본 차와 비교자체가 가능할 정도로 좋은 차를 만든 현대에 대해 자부심을 가질 수도 있습니다.

    문제는 럭셔리자동차나 고성능 차 시장에서도 조금 떨어지지만 값은 더 많이 싼 전략이 먹힐 것인가 하는 점입니다. 제네시스 쿠페가 럭셔리자동차의 범주라고 보기는 힘들 수도 있습니다. 하지만 럭셔리자동차에다 스포츠 세단이라는 제네시스와 같은 플래폼에다가 같은 이름까지 타고 나올 예정이니 억지로라도 럭셔리 스포츠카가 될 수 밖에 없는 운명입니다. 국내 신문에서 인피니티의 G37쿠페와도 비교하는 것을 보았습니다만 훨씬 비싸지만 이야기가 나왔으니 말인데 G37의 제로백이 5.4초입니다. 



    현대가 캐딜락에서 배울 점, 캐딜락이 현대에서 배우고 있는 점

    전혀 다른 카테고리의 자동차 이야기입니다만 얼마 전에 빈사상태의 캐딜락을 살렸다는 평가를 받고 있는 CTS의 스포츠버전인 CTS-V와 BMW M5와의 비교시승기를 읽다 보니  놀랍게도 캐딜락이 4.6초의 제로백을 보이는 등 월등한 성능으로 BMW M5를 으로 꺾고 승자가 되었다는 뉴스를 보았습니다. 글을 쓴 기자가 이렇게 끝을 맺더군요. 이제 캐딜락이 왕이다라고 말이죠. 노인들이나 타는 캐딜락이 핸들링과 성능을 위주로 한 CTS를 내놓은 것부터가 절박했던 GM 경영진과 기술진의 위기의식에서 출발했고 이제 한 발 더 나아가 경쟁차를 성능으로 압도하는 차를 내놓기에 이르렀습니다. 대중의 인식은 쉽게 바뀌지 않습니다.

    이런 대중의 인식을 바꾸는 길은 95% 성능의 자동차를 85% 가격에 공급하는 것 보다는 105% 성능의 자동차를 95%의 가격에 공급하는 것이 훨씬 더 유리합니다. 캐딜락은 그것을 이미 알아챈 것 같고 현대는 아직 모르는 것 같습니다. 미국시장 진출 넉 달 만에 마이너스로 판매 감소세로 돌아선 제네시스가 시사하는 바는 그래서 더 뼈가 아픈 교훈이 될지도 모릅니다. 제네시스 쿠페는 한국 차로서는 혁명적이라고 할 정도로 성장한 자동차입니다. 하지만 헤비급 선수들이 즐비한 미국시장에서 센세이션을 불러 일으키기에는 정말 2%가 부족합니다. 이제 막 럭셔리 자동차를 만들기 시작한 판에 재를 뿌리려는 것은 아닙니다만 차가 나쁘다는 것이 아니라 기대에 못 미쳐서 아쉽다는 것입니다.

    얼마 전에 모터트랜드에서 캐딜락의 새로운 플래그쉽 세단이 될 2012년형 DT7을 예고하는 기사에서 한 문장을 인용해봅니다.

    The DT7 is precisely the sort of flagship car Cadillac needs to be considered a legitimate player in the luxury segment, a car that should play with Mercedes S-Class, BMW 7 Series, Lexus LS 460, and-yes-Hyundai's astounding new Genesis sedan. GM will be watching the national/global zeitgeist to determine whether building a new, large sedan makes better sense in late 2009 than it does in late 2008.

    DT7은 캐딜락이 필요로 하는 럭셔리 세그먼트에서 벤츠 S클래스, BMW 7시리즈, 렉서스 LS460, 그리고 현대의 놀라운 제네시스 세단과 경쟁할 제대로 된 경쟁자로 간주될 바로 그런 종류의 기함이다. (후략)


    제가 이 글을 읽다가 놀랐던 것은 3년 후에 나올 캐딜락의 기함이 놀라운 것이 아니라, 이 명차들의 대열에 제네시스를 끼워준 것에 놀랐습니다. 어쩌면 캐딜락을 설명했지만 제네시스 한 단어를 끼워 넣어 줌으로서 한국 차에 가능성이 있다는 것을 보여주는 기사 같아서 기분이 좋기도 하지만, 자동차 전문가만 알아주고 일반 소비자들에게는 외면 받아서 사라져간 모델들을 생각해보면 반드시 성공해야 할 제네시스 형제의 2% 부족함이 더욱 아쉽게 다가옵니다.


    posted by 좋은느낌/원철
    2008. 10. 24. 10:27 개발/JavaScript
    <input type="text" name="txtTitle" size="90" maxlength="100" onKeyPress="if(event.keyCode == 13) return false;">

    posted by 좋은느낌/원철
    2008. 10. 22. 14:48 Web
    Character Code
    Points
    (Hex)
    Code
    Points
    (Dec)
    Why encode?
    Reserved
    characters
    Dollar ("$")
    Ampersand ("&")
    Plus ("+")
    Comma (",")
    Forward slash/Virgule ("/")
    Colon (":")
    Semi-colon (";")
    Equals ("=")
    Question mark ("?")
    'At' symbol ("@")
     
    24
    26
    2B
    2C
    2F
    3A
    3B
    3D
    3F
    40
    36
    38
    43
    44
    47
    58
    59
    61
    63
    64
     
    Unsafe
    characters
    Space 20 32 Significant sequences of spaces may be lost in some uses (especially multiple spaces)
    Quotation marks
    'Less Than' symbol ("<")
    'Greater Than' symbol (">")
    22
    3C
    3E
    34
    60
    62
    These characters are often used to delimit URLs in plain text.
    'Pound' character ("#") 23 35 This is used in URLs to indicate where a fragment identifier (bookmarks/anchors in HTML) begins.
    Percent character ("%") 25 37 This is used to URL encode/escape other characters, so it should itself also be encoded.
    Misc. characters:
    Left Curly Brace ("{")
    Right Curly Brace ("}")
    Vertical Bar/Pipe ("|")
    Backslash ("\")
    Caret ("^")
    Tilde ("~")
    Left Square Bracket ("[")
    Right Square Bracket ("]")
    Grave Accent ("`")

    7B
    7D
    7C
    5C
    5E
    7E
    5B
    5D
    60

    123
    125
    124
    92
    94
    126
    91
    93
    96
    Some systems can possibly modify these characters
    posted by 좋은느낌/원철