티스토리 뷰

소스 코드를 올리는 일이 종종 있어 소스 코드를 올리는 방법을 간단히 정리해 본다. 결론은 스킨(테마)에 의존하지 않는 안정적인 코드 하이라이트를 원한다면 답은 Color Scripter다. 물론 HTML 코드로 변환하연 붙여넣어야 하는 수고는 덤이다.

1. 티스토리 웹편집기: 기본 모드의 코드블럭 삽입 결과물

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget


class MyApp(QWidget):

    def __init__(self):
       super().__init__()

       self.initUI()


    def initUI(self):

        self.setWindowTitle('Centering')
        self.resize(500, 350)
        self.center()
        self.show()


    def center(self):

        #  현재 창의 위치, 크기 정보를 qr에 넣는다.
        qr = self.frameGeometry()
        #  현재 사용하니 모니터상의 중점을 찾아 cp에 넣는다.
        cp = QDesktopWidget().availableGeometry().center()
        #  창의 중점을 모니터상의 중점으로 수정넵. ㅎㅎ한다.
        qr.moveCenter(cp)
        #  현재 창을 위에서 옭긴 위치로 이동한다.
        self.move(qr.topLeft())


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

편집기 상태에서는 코드 하이라이트가 반영되었으나 실제 블로그 화면에 보이는 것과 같이 코드 하이라이트가 날아가 버린다. 아마도 테마에서 사용된 CSS가 먼저 적용된 까닭으로 보인다. 사용하는 스킨에 이런 문제가 없다면 기본 편집기의 코드블록 삽입도 편한 방법이겠다.

2. 티스토리 웹편집기: 마크다운 모드의 코드 삽입 결과물

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget


class MyApp(QWidget):

    def __init__(self):
       super().__init__()

       self.initUI()


    def initUI(self):

        self.setWindowTitle('Centering')
        self.resize(500, 350)
        self.center()
        self.show()


    def center(self):

        #  현재 창의 위치, 크기 정보를 qr에 넣는다.
        qr = self.frameGeometry()
        #  현재 사용하니 모니터상의 중점을 찾아 cp에 넣는다.
        cp = QDesktopWidget().availableGeometry().center()
        #  창의 중점을 모니터상의 중점으로 수정넵. ㅎㅎ한다.
        qr.moveCenter(cp)
        #  현재 창을 위에서 옭긴 위치로 이동한다.
        self.move(qr.topLeft())


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

이 역시 마찮가지다. 마크다운 모드에서 코드 블록 문법을 이용해서 소스코드를 입력하였다. 마크다운 모드에서 기본모드로 바꾸면 코드 하이라이트가 적용된다. 하지만 실제 웹에서는 코드 하이라이트가 날아가 버린다. 역시 같은 이유로 추정된다. 마크다운 문법을 사용하여 블로깅을 하는 사람에게는 최선의 선택이지만 사용하는 스킨(테마)에 의존된다.

3. Color Scripter 결과물

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
32
33
34
35
36
37
38
39
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget
 
 
class MyApp(QWidget):
 
    def __init__(self):
       super().__init__()
 
       self.initUI()
 
 
    def initUI(self):
 
        self.setWindowTitle('Centering')
        self.resize(500350)
        self.center()
        self.show()
 
 
    def center(self):
 
        #  현재 창의 위치, 크기 정보를 qr에 넣는다.
        qr = self.frameGeometry()
        #  현재 사용하니 모니터상의 중점을 찾아 cp에 넣는다.
        cp = QDesktopWidget().availableGeometry().center()
        #  창의 중점을 모니터상의 중점으로 수정넵. ㅎㅎ한다.
        qr.moveCenter(cp)
        #  현재 창을 위에서 옭긴 위치로 이동한다.
        self.move(qr.topLeft())
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())
 
 
cs

해당 사이트에서 html로 변환한 코드를 생성해서 붙여 넣어야 하는 수고가 따른다. 하지만 사용하는 스킨에 따라 보여지는 상태에 변화가 없다는 점에서 가장 안정적인 방법으로 보인다. 또 아래의 유사한 사이트와 비교해도 소스코드 블록의 시인성과 안정성이 뛰어난 것으로 보인다. 아래의 사이트는 간혹 < > 처리에서 오류가 나는 경우를 경험했다. 아래의 예에서도 코드가 제대로 변환되지 않은 문제점이 드러난다.

4. hilite.me 결과물

 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
32
33
34
35
36
37

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget

class MyApp(QWidget):

<span style="color: #008800; font-weight: bold">def</span> <span style="color: #0066BB; font-weight: bold">__init__</span>(<span style="color: #007020">self</span>):
   <span style="color: #007020">super</span>()<span style="color: #333333">.</span>__init__()

   <span style="color: #007020">self</span><span style="color: #333333">.</span>initUI()


<span style="color: #008800; font-weight: bold">def</span> <span style="color: #0066BB; font-weight: bold">initUI</span>(<span style="color: #007020">self</span>):

    <span style="color: #007020">self</span><span style="color: #333333">.</span>setWindowTitle(<span style="background-color: #fff0f0">&#39;Centering&#39;</span>)
    <span style="color: #007020">self</span><span style="color: #333333">.</span>resize(<span style="color: #0000DD; font-weight: bold">500</span>, <span style="color: #0000DD; font-weight: bold">350</span>)
    <span style="color: #007020">self</span><span style="color: #333333">.</span>center()
    <span style="color: #007020">self</span><span style="color: #333333">.</span>show()


<span style="color: #008800; font-weight: bold">def</span> <span style="color: #0066BB; font-weight: bold">center</span>(<span style="color: #007020">self</span>):

    <span style="color: #888888">#  현재 창의 위치, 크기 정보를 qr에 넣는다.</span>
    qr <span style="color: #333333">=</span> <span style="color: #007020">self</span><span style="color: #333333">.</span>frameGeometry()
    <span style="color: #888888">#  현재 사용하니 모니터상의 중점을 찾아 cp에 넣는다.</span>
    cp <span style="color: #333333">=</span> QDesktopWidget()<span style="color: #333333">.</span>availableGeometry()<span style="color: #333333">.</span>center()
    <span style="color: #888888">#  창의 중점을 모니터상의 중점으로 수정넵. ㅎㅎ한다.</span>
    qr<span style="color: #333333">.</span>moveCenter(cp)
    <span style="color: #888888">#  현재 창을 위에서 옭긴 위치로 이동한다.</span>
    <span style="color: #007020">self</span><span style="color: #333333">.</span>move(qr<span style="color: #333333">.</span>topLeft())

if name == 'main':

app <span style="color: #333333">=</span> QApplication(sys<span style="color: #333333">.</span>argv)
ex <span style="color: #333333">=</span> MyApp()
sys<span style="color: #333333">.</span>exit(app<span style="color: #333333">.</span>exec_())

 

3번과 유사하지만 소스코드 블록의 품질에서 다소 부족함이 느껴진다. 게다가 라인번호를 넣을 경우 스킨(테마)의 CSS와 문제를 일으키는 경우가 발생한다.

물론 위 3, 4번 방법 모두 직접 html 태그를 이용해 구미에 맞게 수정해서 쓸 수 있다. 하지만 일처리의 편의성을 위한 방법이라는 점에서 다시 html 태그로 수정하는 일은 다소 소모적일 것이다. 우선 사용하는 스킨에서 코드블록 삽입이나 마크다운 문법을 통한 하이라이팅이 제대로 구현된다면 이 방법이 가장 간편하다. 하지만 편의성에 더해 안정성까지 추구한다면 3번인 Color Scripter를 사용할 것을 권한다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함
11-25 20:15