인코딩에 관한 애기를 하고자한다.
1. 인코딩이란 무엇인가?
    컴퓨터가 알고있는 문자는 0,1 이 두가지 밖에 없다. 그런데 사람이 쓰는 문자는 영어, 한글, 일본어 등...
    엄청 많다. 그러면 사람이 쓰는 문자를 컴퓨터가 알아먹게 하기위해서 0, 1로 바꿔줘야된다.
    그 바꿔주는 규칙을 정의해놓은것이 바로 인코딩이다. 인코딩중에 대표적인게 ascii 코드다.  ascii 코드는 http://www.asciitable.com/ 여기서 확인가능하다. 그런데 이 ascii 코드는 1Byte로 구성되어 있다. 1Byte로는 각국의 언어를 다 담을수 없어서 2Byte짜리 Unicode를 만들어 냈다. 어..그런데 ascii로도 한글이 표현이 가능한데?
물론 가능하다.. 그렇지만 다른 나라에서는 호환되게 사용할수가 없다. 세계 각국의 언어를 다 담을려면 1Byte로는 모자르기 때문에 2Byte로된 Unicode를 만들어 낸것이다. 이 유니코드에 대한 애기는 하지 않겠다.

2. 보여지는 글자와 컴퓨터가 인식하는 문자는 다르다
 UltraEdit에서 ascii 코드로 문자를 입력하는 경우와 unicode로 문자를 입력하는 경우 어떻게 변환되는지 보도록하자.
사용자 삽입 이미지

ascii 코드


사용자 삽입 이미지
위에 그림은 ascii 변환되었을 때의 값이고 아래 그림은 unicode로 변환되었을 때의 값이다.
같은 문자를 입력했지만 인코딩 방식에 따라서 변환되는 값은 달라지게된다.
보통 문자가 깨지는 경우는 여러가지 경우가 있겠지만 이 인코딩이 안맞아서 그런것이 대부분이다.

3. 자바에서 인코딩을 변환하는 방법
package encodingTest;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class MyEncoding {
   
    public void convertCharSet(String fromCharset, String toCharset){
        InputStreamReader iReader = null;
        OutputStreamWriter oWriter = null;
        try {
            String asciiPath = "files/encoding/asciiSample.txt";
            String outUnicodePath = "files/encoding/asciiSample_out.txt";
            String inputEncoding = "US-ASCII";
            String outputEncoding = "UTF-16LE";
            iReader = new InputStreamReader(
                    new FileInputStream(asciiPath), inputEncoding);
            oWriter = new OutputStreamWriter(
                    new FileOutputStream(outUnicodePath), outputEncoding);
            int c;
            char[] charBuf = new char[1024];
            while((c = iReader.read(charBuf)) != -1){
                oWriter.write(charBuf, 0, c);
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                iReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                oWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

Posted by 즐건세상
l

iCalendar spec 정리

IT/기타 2007. 9. 16. 12:58
iCalendar RFC 2445 문서를 보고 정리한 파일이다.
별다른건 없고, iCalendar 스키마를 정의할 일이 있어서 만들었다.

Posted by 즐건세상
l

SourceSafe 클라이언트 구축

 

Visual Studio 2005 설정

1. Visual Studio 2005 메뉴에서 도구 옵션 선택하면 아래 화면과 같이 Microsoft Visual SourceSafe (Internet)을 선택합니다. 프로젝트가 열려 있으면 프로젝트가 닫히게 됩니다.

그림 7 Visual Studio 2005 플러그인 선택




 

2. 파일 열기 프로젝트 솔루션을 선택합니다.

 

 

사용자 삽입 이미지

그림 8 Visual Studio 2005 프로젝트 열기

그림 8 Visual Studio 2005 프로젝트 열기

 

 

사용자 삽입 이미지
그림 9 소스세이퍼 서버로 연결

그림에서 Add SourceSafe Database를 클릭하면 그림 9과 같은 화면이 나타난다.

 




웹서비스가 돌아가는 주소와, Folder에는 소스 세이퍼 공유폴더의 UNC Location 정보를 입력하면 됩니다

사용자 삽입 이미지

그림 10 웹서비스에 접근

다음을 클릭하면 그림 11와 같은 로그인 창이 뜨면 id와 비번을 입력하면 됩니다.

그림 10에서 진행이 안되고 에러 메시지가 뜨면 그림 5와 같이 웹 서비스가 제대로 실행되는지 확인하시기 바랍니다.


사용자 삽입 이미지

그림 11 소스세이퍼 서버에 로그인

로그인이 되면 소스세이퍼 서버랑 연결이 되고 Connection Name을 입력하는 화면이 나타납니다. 적당한 이름을 입력하고 다음 버튼을 클릭하면 그림 13과 같은 완료화면이 나타난다.

 

사용자 삽입 이미지

 


 

그림 12 Database Connection Name

 

사용자 삽입 이미지
 


그림 13 데이터베이스 추가 완료



데이터베이스가 정상적으로 추가 되면 그림 14와 같은 화면을 볼 수가 있다.

사용자 삽입 이미지

 

그림 14 인터넷으로 접근할 수 있는 데이터베이스 열기

 

새로 추가한 데이터베이스를 클릭하면 그림 13과 같은 화면이 나탄나다.


사용자 삽입 이미지

그림 15 인터넷으로 소스 세이퍼 서버에 로그인
 

소스 세이퍼 서버에 로그인하게 되면 인터넷으로 서버에 연결해서 사용할 수 있게 됩니다.

설정 작업이 잘 안되면 참고 문서, 참고 자료를 참고하십시오..

 

 

■ 참고 문서

 - 구글에서 SourceSafe Internet 으로 검색하면 볼만한 문서가 나옵니다.

 - http://msdn2.microsoft.com/en-us/library/ms230206(VS.80).aspx

 - http://msdn2.microsoft.com/en-us/library/ms230398(VS.80).aspx

 - http://alinconstantin.homeip.net/webdocs/scc/VSS_Internet.htm

 

 

<참고 자료>

IIS 설정 문제

IIS에서 웹서비스를 실행하게 되면, C:\Program Files\Microsoft Visual SourceSafe\VSSWebService 폴더로 가서 web.config 파일을 열어보면

<configuration>

……

<appSettings>

        <add key="\\jung\VSSTest" value="DatabasePath"/>

</appSettings>

</configuration>

 

<appSettings>엘리먼트가 추가 된 것을 알 수가 있다. 위와 같이 UNC Path로 설정되기 때문에 소스세이퍼 서버에서 데이터베이스를 생성할 때 UNC Path로 데이터베이스를 생성해야한다.

 

- 소스세이퍼는 기본 웹사이트의 SourceSafe 가상디렉토를 찾고 없으면 SourceSafe 가상디렉토리를 만들어 버리기 때문에 기본 웹 사이트에 SourceSafe라는 이름으로 가상디렉토리를 만들어 줘야한다. 이는 아래의 프로그램을 이용하면 확인할 수 있다.

http://download.microsoft.com/download/iis50/Utility/5.0/NT45/EN-US/MtaEdt22.exe

metaEdit 프로그램을 실행하면 그림 15와 같은 정보를 확인할 수 있다. 이 그림은 IIS 설정이 그림 16과 같이 되어 있을 때 나타나는 정보다. MetaEdit에서 기본 웹사이트는 W3SVC/1가 되고, WAP 웹 사이트는 W3SVC/2가 된다. MetaEidt에서 W3SVC/1/ROOT/SourceSafe 디렉토리가 존재하는 것을 볼수가 있다.

 

- 정확한 이유는 모르겠지만 아래의 경우 웹 서비스가 안돌아 갈 수도 있습니다.

1. 웹 사이트 운영자에 ASPNET 가 추가 되어 있지 않으면 웹 서비스가 동작하지 않을 수도 있습니다.

2. ASP 버전이 웹 사이트와 가상 디렉토리의 버전이 다를 경우 안될 수도 있습니다. 웹 사이트는 1.0 버전이고 가상 디렉토리는 2.0일 경우 동작하지 안을 수도 있습니다.

 

■ 소스세이퍼 설정

그림 2와 같이 설정하고 나서 소스 세이퍼 데이터 베이스 폴더의 srcsafe.ini 파일을 열어 보면 아래와 같은 설정이 추가 되어 있다.

……

DownloadVDir = VssDownload_db2

UploadVDir = VssUpload_db2

 

Web_Service = http://10.290.49.190/SourceSafe/VssService.asmx

소스 세이퍼 공유폴더에 보면 VssWebDownload, VssWebUpload 폴더가 생긴 것을 폴수가 있고, 웹 서비스 주소는 그림 2에서 설정한 값 그대로인 것을 알 수가 있다. 이런 값들은 소스세이퍼에서 자동으로 생성해주기 때문에 가상디렉토리의 이름을 SourceSafe로 해야한다.

 
 


Posted by 즐건세상
l

자바 정규표현식

IT/java 2007. 7. 11. 23:30

정규표현식에 관한 애기를 해보고자 한다.
정규표현식의 전반적인 내용에 관해서는 자바 튜토리얼(http://java.sun.com/docs/books/tutorial/essential/regex/index.html)
을 참고하시길..
여기서는 몇일동안 안 풀렸던 문제에 대해서 이야기 하고자 한다.
문제는 html 문서에서 <script ...>....</scirpt> 태그를 제거하는 문제다..

처음에는 사용한 정규표현식은 (<script.*>)([\wW]*)(</script>) 이다.

이 정규표현식을 사용할 경우 <script>....</script> <table>...</table>  <script>....</script>

가운데 있는 table 태그까지 삭제 되게 된다..

정확한 개념은 추후에 더 문서를 알아바야 겠지만.. greedy와 관련된것 같다..

간단한 예를 들어 보면

주어진 스트링이 fooooo 이고 정규 표현식이.. ".o*"일 경우 일치하는 패턴은 f 다음의 o 가 아니고 oooo 이 일치하게 된다.

이는 정규표현식이 패턴을 찾을 때 최대로 일치하는것(greedy)을 찾기 때문이다..

최소로 일치하는것(non-greedy)을 찾고 싶을 때에는 ".o+?" 이 정규표현식을 사용하면 해결할 수 있다..

script 태그에서도 적용하게 되면 (<script.*>)([\wW]*?)(</script>) 이 표현식을 사용하게 되면 scrip 태그를 제거할 수 있다.


별로 관계 없는 내요일수 있지만..


원래 정규표현식을 공부하게 된 이유가 html -> text 바꾸는 작업이 필요했기 때문이다.


하나 팁 같은걸.. 적어보자면..


일치하는 패턴을 찾기 위해서 작은 부분부터 조금씩 테스트를 해보면서 전체를 늘려가는 식으로 일치하는 패턴을 찾는 방법이다.


즉... 위의 script 태그를 제거하기 위해서..


<script> 태그와 일치하는 패턴을 먼저 찾아보고... 조금씩 늘려가면서 일치하는 패턴을 찾는다..


이렇게도 해보고 저렇게도 해보면서 이유를 생각하다 보면 조금씩 알아가지 않을까 생각된다..


정확한 개념을 알기 위해서는 문서를 보는것도 잊지말아야 겠지만..








 

Posted by 즐건세상
l

집에 오면 컴퓨터 켜고 제일먼저 실행시키는 프로그램이 미니 mbc.. 인터넷을 통해서 라디오를 들을

 수 있는 프로그램이다.. 라디오를 듣다 보면 디스크자키의 스타일에 따라 음악이 선곡된다..

문세 형님 방송같은 경우에는 클래식부터 팝, 가요, 뮤지컬 음악등 다양한 장르의 음악이 선곡된다..

 철수형님 방송같은 경우는 팝 전문 방송이기 때문에 대부분 팝음악이 많이 나온다.. 가끔은 다른 방

송에서 들을 수 없는 한곡에 15분짜리 곡도 가끔 들려주신다. 디스크 자키의 스타일에 따라서 다양한

음악이 흘러나오는게 라디오다.. 이런 다양한 음악이 흘러다오다 보니.. 처음 듣는 노래인데도 귓가

를 계속 멤도는 노래도 있고, "어.. 이노래가 이 사람 노래였네..!" 하는 경우도 있다.. 물론 얼마 안가

서 누구 노래인지 잊어먹긴하지만.. 뭐.. 난 전문가가 아니니까.. ㅋㅋ

아.. 지금은 얼마전에 문세형님 라디오에서 조규찬씨가 소개해준 lee osca의 연주곡을 듣고 있다..

그 중에 Before the Rain 이라는 곡은 많이 들어봤고.. 나머지 곡은 다 생소하다.. 전체적인 분위기는

하모니카 연주가 많이 들어가 있어서 약간 서정적이면서.. 때론 남미 음악같은 분위기도 나는거 같기

도 하고....

오늘은 음악과 함께..
Posted by 즐건세상
l
그 동안 티스토리를 쓰보고 싶었으나.. 초대해주는 사람이 없어서 못쓰고 있다가

이제야 쓰게 됐다..

앞으로 여기서 자주 놀아야겠다.. 나의 주 놀이터로...
Posted by 즐건세상
l