티스토리에서 코드 하이라이팅 사용하기

이야… 이렇게 간단한 것을 여태 왜 몰랐는지;;; 그저 티스토리에서 언젠가는 플러그인 목록에 추가해 주겠지~ 하며 마냥 기다리고 있었는데, 멋진분께서 코드 하이라이팅 기능 사용법을 올려주셨습니다.


테스트해 봤습니다. 편집할 때 HTML모드와 Edit모드를 왔다갔다 해야하지만, 그 정도 수고에 비하면~ 매우 귿입니다.

코드 하이라이팅 기능 사용법에 한 가지 추가하고 싶은 것이 있다면, copy to clipboard에 관한 내용입니다.
위의 사용법에서 </body> 위에 붙여넣어야 하는 코드 중에 다음의 한 줄을 추가해주셔야 copy to clipboard라는 메뉴를 보실 수 있습니다.


그리고 제 블로그에서는 왠지 cols 속성이 제대로 적용되지 않고 있는 것 같네요. 흠.. 원인은 아직 모르겠습니다. 아니면 그냥 css에서 뭔가가 안 맞는다거나..

Trang :: XML로 XSD 작성해 주는 도구

XML을 바탕으로 XML 스키마를 생성해주는 도구입니다. 이상한 소리 아닌가요? XML을 XSD를 가지고 작성하는 건데 이건 반대입니다. TDD와 유사합니다. 테스트 케이스를 먼저 작성하고 원래 코드를 작성하는 것 처럼, XML 스키마 정의(XSD)를 작성하기 전에, 먼저 그 스키마를 사용한 XML부터 작성한 다음 그것을 바탕으로 XSD를 생성해 줍니다. 물론 원하는 스키마를 그대로 만들어주진 않기 때문에, 자동 생성된 스키마를 가지고 수정을 해서 사용하면 될 듯 합니다.

1. 사용하고 싶은 XML 작성하기.
2. Trang으로 XSD 생성하기.
3. XSD 수정하기.

이런 과정으로 XML 스키마를 생성하면, 좀 더 쉽고 빠르게 XSD를 작성할 수 있습니다.

http://thaiopensource.com/relaxng/trang.html 여기서 Trang을 다운 받으실 수 있습니다.
2003년 6월 19일에 배포한 파일이 마지막인 것 같습니다.

1. 사용하고 싶은 XML 작성하기.

<EvaluateHandRequest
    xmlns=”http://www.springinaction.com/poker/schemas”>
    <card>
        <suit>HEARTS</suit>
        <face>TEN</face>
    </card>
    <card>
        <suit>SPADES</suit>
        <face>KING</face>
    </card>
    <card>
        <suit>HEARTS</suit>
        <face>KING</face>
    </card>
    <card>
        <suit>DIAMONDS</suit>
        <face>TEN</face>
    </card>
    <card>
        <suit>CLUBS</suit>
        <face>TEN</face>
    </card>
</EvaluateHandRequest>

위와 같은 XML을 사용하고 싶다고 가정하겠습니다. 위의 XML은 SIA 9장에 있는 것을 참조했습니다.

2. 위 XML이 유효하도록 하는 XSD를 만들어보겠습니다.

Trang을 다운로드 하고, 압축을 푼 뒤 다음과 같은 명령을 실행합니다.

java -jar trang.jar cards.xml poker.xsd

trang.jar는 실행가능한 압축파일입니다. 이 파일을 가지고 card.xml을 바탕으로 poker.xsd라는 파일을 만들게 됩니다.

3. 생성된 xsd 파일은 다음과 같습니다.

<?xml version=”1.0″ encoding=”UTF-8″?>
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema” elementFormDefault=”qualified” targetNamespace=”http://www.springinaction.com/poker/schemas” xmlns:schemas=”http://www.springinaction.com/poker/schemas”>
  <xs:element name=”EvaluateHandRequest”>
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs=”unbounded” ref=”schemas:card”/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name=”card”>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref=”schemas:suit”/>
        <xs:element ref=”schemas:face”/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name=”suit” type=”xs:NCName”/>
  <xs:element name=”face” type=”xs:NCName”/>
</xs:schema>

자 여기서 suit와 face의 타입을 ENUM 처럼 사용하기 위해 다음과 같이 변경해야겠습니다. 그리고 card가 무한대로 포함될 수 있도록 정의되어 있는데, 이 부분도 딱 다섯 장을 포함하도록 변경이 필요합니다.

<?xml version=”1.0″ encoding=”UTF-8″?>
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”
    elementFormDefault=”qualified”
    targetNamespace=”http://www.springinaction.com/poker/schemas”
    xmlns:schemas=”http://www.springinaction.com/poker/schemas”>
    <xs:element name=”EvaluateHandRequest”>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs=”5″ maxOccurs=”5″ ref=”schemas:card” />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name=”card”>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref=”schemas:suit” />
                <xs:element ref=”schemas:face” />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name=”suit” type=”schemas:Suit” />
    <xs:simpleType name=”Suit”>
        <xsd:restriction base=”xs:string”>
            <xsd:enumeration value=”SPADES” />
            <xsd:enumeration value=”CLUBS” />
            <xsd:enumeration value=”HEARTS” />
            <xsd:enumeration value=”DIAMONDS” />
        </xsd:restriction>
    </xs:simpleType>
    <xs:element name=”face” type=”schemas:Face” />
    <xs:simpleType name=”Face”>
        <xsd:restriction base=”xs:string”>
            <xsd:enumeration value=”ACE” />
            <xsd:enumeration value=”TWO” />
            <xsd:enumeration value=”THREE” />
            <xsd:enumeration value=”FOUR” />
            <xsd:enumeration value=”FIVE” />
            <xsd:enumeration value=”SIX” />
            <xsd:enumeration value=”SEVEN” />
            <xsd:enumeration value=”EIGHT” />
            <xsd:enumeration value=”NINE” />
            <xsd:enumeration value=”TEN” />
            <xsd:enumeration value=”JACK” />
            <xsd:enumeration value=”QUEEN” />
            <xsd:enumeration value=”KING” />
        </xsd:restriction>
    </xs:simpleType>
</xs:schema>

이런식으로 xsd를 작성한다면, 조금은 쉽게 작성할 수 있을 것입니다.