선물받은 목도리선물받은 목도리

Posted at 2010. 11. 30. 01:26 | Posted in 이야기 방/일상 이야기


조금 더 예쁘게 놓고 찍을걸 그랬나...

부모님이 일본 다녀오시고 선물로 주신 목도리.

잘 쓰겠습니다~~~


//

윈도우 환경에서 Perl사용, ActivePerl윈도우 환경에서 Perl사용, ActivePerl

Posted at 2010. 8. 27. 15:27 | Posted in 프로그래밍 언어/Java

ActivePerl 설치

ActivePerl(http://www.activestate.com/activeperl)을 받아서 설치한다.
위 사이트에 접속, 오른쪽에 Download ActivePerl을 클릭하여 자신의 플랫폼에 맞는 걸 받아 설치하면 된다.
콘솔창(cmd)에서 리눅스와 마찬가지로 "perl filename.pl" 하면 된다.

   

Perl용 라이브러리 사용

Perl 용 라이브러리를 가져다 써보자. 사실 이게 주 목적이었다.
윈도우 환경에서 Java로 구현된 프로그램에 Perl로 구현된 라이브러리를 이용하고 싶었다.
이용하려 한 것은 WordNet::Similiarty (http://wn-similarity.sourceforge.net/)
WordNet 2.1을 이용할 것이기 때문에 WordNet::Similarity 1.04를 사용한다.
다운받으면 이미 pm(perl module)파일로 떨어져 있지만, 그냥 끝내면 심심하니? 컴파일 시도.

먼저 make를 하려는데 GCC가 필요하단다. 설치하자. 콘솔에서 "ppm install MinGW"을 입력하면 된다.

다음엔 makefile을 만들자. "perl Makefile.PL"
이 때 의존성이 걸린 프로젝트가 있으면 알려준다.
WordNet::Similarity의 경우 Text::Similarity와 WordNet::QueryData이 필요하다 나온다. 컴파일 방법은 똑같으니 계속한다.
(WordNet::Similarity 사이트에서는 WordNet::QueryData 1.45를 쓰라고 함.)

그 다음 리눅스처럼 make & make install을 해야 하는데, 여기선 ActivePerl에서는 dmake가 있다.
dmake
dmake install
에러 없이 완료되면 blib란 폴더가 생기고, 그 안에 결과물이 들어가 있다. blib/lib 들어가보면 모듈 파일이 생성되어 있다.

   

Java에서 Perl 프로그램의 결과를 이용

Java에서 Perl의 모듈을 이용하는 멋들어진 방법이라면 따로 포스팅을 하겠지만,
단순히 Perl 프로그램이 콘솔에 찍는 결과만을 이용할 예정이라 단순한 방법을 택했다.
(멋들어진 방법을 쓰고 싶지만 배보다 배꼽인 상황이라)

Process p = Runtime.getRuntime().exec("perl " + url);
Scanner scanner = new Scanner(p.getInputStream());
while(scanner.hasNextLine())
{
    String line = scanner.nextLine();
}

남은건 String line가지고 파싱하는 것 뿐.

//

Well-formed XML DocumentWell-formed XML Document

Posted at 2009. 1. 23. 22:36 | Posted in 프로그래밍 언어/XML
> Well-formed XML

Well-formed XML이란 xml 문법을 지킨 xml 문서를 의미한다.
비슷한 것으로 Valid XML Document가 있다. 이는 Well-Formed XML이면서, 즉 XML 문서의 문법을 전부 지킨 문서이면서 DTD, XML Schema등으로 정의된 문서의 구조까지 지킨 문서이다.
만약 XML 문서를 지키지 않았다면(Well-Formed하지 않다면) XML Parser는 Fatal Error를 발생시키고 파싱을 중단한다. 그리고 만약 문법은 지켰으나 DTD, XML Schema등으로 정의된 문서의 구조를 지키지 않았다면 ERROR를 발생시킨다. 이 경우 Parser는 끝까지 문서를 파싱한다.

그러면 XML 문법 몇 가지를 이 XML 문서 예제를 기반으로 설명을 하겠다

<?xml version="1.0" encoding="utf-8"?>

<!-- XML MULTIPLE LINE COMMENTS -->
<bookstore>
    <book category="CHILDREN">
        <title>Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title>Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>


> XML Declaration - XML 문서 정의

<?xml version="1.0" encoding="utf-8" standalone="[yes|no]"?>
현재 text파일이 XML 문서임을 나타내는 문장이다. 문서의 가장 처음에 작성해야 하는 문장으로 세 가지 속성을 순서대로 표기해야 한다.
version 속성은 반드시 들어가 있어야 하는데 이는 XML 문법이 ver.마다 달라서 XML Parser가 이 문서를 파싱할 때 참조해야 하기 때문이다.
standalone="yes"는 이 문서가 외부파일을 참조하지 않고 있다는 것을 의미한다.


> XML Element
    <book category="CHILDREN">
            <title>Harry Potter</title>
    </book>

Element(<book>)는 또 다른 element (<title>)나, Text(Harry Potter), attribute(category="CHILDREN")를 여러 개 가질 수 있다. element의 이름은 ID값이 아닌 단지 이름이기 때문에 중복이 되어도 상관 없다. 파일 타입이 utf-8일 경우 한글이름도 지원한다.(위의 xml encoding 말고 파일 저장 타입)
XML 문서는 최상위 element가 반드시 단 한 개 존재해야 한다. 그리고 시작태그(<title>)와 끝 태그(</title>의 이름이 일치해야 한다. 차이점은 끝 태그에는 element의 이름 앞에 /가 들어간다는 것 뿐이다. 또한 <A><B>text</A></B> 처럼 중첩된 구조는 가질 수 없다. Empty Element라는 것이 있다. 이는 Element가 element나 text를 가지지 않은 경우를 말한다.(속성은 가지고 있어도 되..나?) 이 경우 표현이 <empty></empty> 가 되겠고 줄여서 <empty/>로 표현한다.끝 태그와 다르게 /가 뒤에 붙어있음에 주의.


> XML Element - Naming

문자 숫자 _ . : - 가 사용 가능하다. 대소문자를 구별하므로 <upper>와 <Upper>는 다른 이름의 element이다. element의 이름에 공백이 들어가선 안 되고 첫 글자로 숫자 . - 가 와선 안 되며 xml이란 글자가 대소문자 형태 막론하고 와선 안 된다. :, -, .는 element 이름의 중간에 선언 가능하나 다른 연산자와 헷갈리므로 되도록 사용하지 않도록 해야 한다.


> XML Text - PCDATA, CDATA

PCDATA는 XML 파서가 parsing을 시도하는 데이터로 <element></element>로 둘러쌓인 Text contents라 생각하면 되겠다.

<element>PCDATA!!</element>

따라서 <& 는 PCDATA에 올 수 없다. 이는 XML 문서에서 사용되는 keyword이기 때문이다. 이와 같은 값을 표시하기 위해선 두 가지 방법이 있다.
1. < 는 &lt;, & 는 &amp;, > 는 &gt;
    >는 써도 파싱에러는 나지 않지만 < 가 &lt;밖에 안 되므로 통일성 있게 사용해 주면 좋다
    예: <element>(7 &lt; 8) &amp;&amp; (9 &lt; 10)</element>
2. <![CDATA[ contents ]]>
    xml parser가 파싱을 시도하지 않는다. 따라서 다음과 같이 쓸 수 있다.
    <element><![CDATA[ (7 < 8) && (9 < 10)]]></element>
    단, CDATA 구간 내에 ]]>가 오면 안 된다. <![CDATA[CDATA 구간]]> PCDATA 구간]]> 이 아니다. 그냥 parsing error 뜬다.


> XML Attribute

<book category="CHILDREN">

element에 대한 설명, metadata of metadata라 할 수 있다. 형태는 attr_name = "attr_value(쌍따움표)" 혹은 'attr_value(따움표)'을 사용하고 그 값으로 <&를 가질 수 없다. 속성은 element처럼 여러개가 가능하나 같은 이름의 속성을 가질 수 없다. <book category="children" category="IT"> 가 불가능하단 의미이다. 하지만 xml 문서는 대소문자를 구분하기 때문에 <book category="children" Category="IT"> 식으로 쓸 수는 있지만 좋지 않다.

속성에서 따움표 "를 표현하는 방법으로는 &quot;를 사용하거나 속성값을 작은따움표 ' 로 묶는 방법이 있다..
<book category=" &quot;WEB&quot; app. ">
<book category=' "WEB" app. '>
그러나 html에서 사용하던 방법인 <book category="\"WEB\" app.">는 허용되지 않는다.


> XML 주석

html에서 사용하던 주석과 같다.
<!-- 주석내용 -->
주석내용으론 < & 등 어떤 것도 올 수 있으나 -- 는 올 수 없다.


> Processing Instructions
<?PI_name PI_data?>
예를 들면 <?Query SELECT * FROM table_name?>로 app.에게 어떤 일을 하도록 명령하기 위한 용도. 많이 쓰이지는 않는다.
   

//

XML이 뭐임?XML이 뭐임?

Posted at 2009. 1. 23. 21:03 | Posted in 프로그래밍 언어/XML
XML은 Extensible Markup Language의 약자로 데이터를 저장하고 전송하는 데 목적을 갖고 있다.

<letter>
    <to>to name</to>
    <from>from name</from>
</letter>


HTML vs. XML

HTML하고 비슷한 모양이지만 HTML과 XML은 목적이 다르다. HTML데이터를 어떻게 보여줄 것인가에 중점을 두고 있다. HTML 태그들 마다 브라우저가 브라우징하는 모습이 다른 것을 보면 알 수 있다. 그에 반해 브라우저로 암만 여러 형태의 XML 문서를 열어 봤자 그 형태는 똑같다. 이는 XML은 문서에 기술된 데이터가 무엇인가에 중점을 두고 있기 때문이다.


특징

XML 문서에 쓰이는 태그들은 작성자가 직접 정의할 수 있다. 어떤 이름을 써도 상관 없지만 XML 문법에서 정의한 naming 규칙을 따라야 한다. 또한 XML문서는 TEXT 파일이다. Text 파일은 ASCII로 구성되어 HW, SW에 독립적이기 때문에 여러 app.에서 부담 없이 처리 가능하다. 즉 보편성이 특징이다. 이와는 다르게 Binary 파일은 파일의 구조 정의가 사용되는 app.마다 다르지만 해당 app.가 빠르게 이해할 수 있다는 효율성이 장점이다.

이와 같은 특징 때문에 다음과 같은 일이 가능하다
<letter>
    <to>to name</to>
    <from>from name</from>
</letter>

이 문서에
<letter>
    <date>2009/01/21</date>
    <to>to name</to>
    <from>from name</from>
</letter>

이럴 경우 binary 파일이라면 해당 파일이 사용되는 app.라 하더라도 구조가 달라졌기 때문에 파싱 과정에서 에러가 날 가능성이 매우 높다. 하지만 XML 문서는 text 파일이기 때문에 보편적인 XML Parser를 사용하더라도 에러가 발생하지 않는다.
//

XML 공부하는거 빨리 포스팅 해야 되는데..XML 공부하는거 빨리 포스팅 해야 되는데..

Posted at 2009. 1. 22. 15:26 | Posted in 이야기 방/일상 이야기
안 그럼 다 까먹는데 ㄱ-
까먹기 전에 포스팅 해야 되는데 ㄱ-
시간이 애매하다 흑
구정 연휴 때 해야 할 듯 어흝흝
//