<?xml version="1.0" encoding="UTF-8" ?><feed xmlns="http://www.w3.org/2005/Atom">
   <title type="text">XE Magazine Blog</title>
      <updated>2013-05-22T04:51:11+09:00</updated>
   <id>http://blog.xmz.kr/textyle/atom</id>
   <link rel="alternate" type="text/html" hreflang="ko" href="http://blog.xmz.kr/textyle"/>
   <link rel="self" type="application/atom+xml" href="http://blog.xmz.kr/textyle/atom"/>
   <generator uri="http://www.xpressengine.com/">XpressEngine</generator>
   <entry>
      <title>XE Core 저장소 복제본(svnsync)</title>
      <id>http://blog.xmz.kr/5085</id>
      <published>2012-12-19T10:30:57+09:00</published>
      <updated>2013-05-02T17:02:40+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/5085"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/5085#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;googlecode.com에서 운영중인 XE Core의 저장소 복제본입니다.&lt;/p&gt;
&lt;p&gt;로그보기나 병합 시 속도가 느린 이유로 저장소를 복제하여 개인적으로 사용하고 있는데, 이 저장소 데이터를 공유합니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;저장소의 UUID도 동일하게 맞춰 놨으니 저장소 URL변경 시 UUID 차이로 인한 문제가 없습니다.&amp;nbsp;복제한 저장소는 &lt;b&gt;&apos;svnsync sync file://경로&apos;&lt;/b&gt; 명령으로 계속 동기화 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;다운로드 :&amp;nbsp;&lt;a href=&quot;https://files.ucloud.com/pf/D00913_6022107_657559&quot;&gt;https://files.ucloud.com/pf/D00913_6022107_657559&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2012년 12월 19일 기준 r12431까지 동기화 했습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;체크아웃 받은 작업사본의 저장소 경로 변경 방법 :&amp;nbsp;&lt;a href=&quot;http://junho85.tistory.com/10&quot; target=&quot;_blank&quot;&gt;http://junho85.tistory.com/10&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="xecore"/>
            <category term="svn"/>
            <category term="svnsync"/>
            <category term="저장소"/>
            
   </entry>
   <entry>
      <title>Git의 Staging Area와 Stash</title>
      <id>http://blog.xmz.kr/18690</id>
      <published>2012-09-15T08:52:54+09:00</published>
      <updated>2013-01-24T14:39:03+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/18690"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/18690#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;q4&quot;&gt;이 글은&amp;nbsp;&lt;a href=&quot;http://blog.xmz.kr/7815&quot; target=&quot;_blank&quot;&gt;Subversion과 비교한 Git의 특별함&lt;/a&gt;에 이어서 Staging Area와 Stash 활용에 대한 좀 더 상세한 내용입니다. SVN과 비교되는 큰 특징이기도하며, 개발 중에 자주 겪는 &apos;임시로&apos; 코드를 보관하거나 일부만 커밋하고 싶을 때 유용하게 활용할 수 있습니다.&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2&gt;Staging Area&lt;/h2&gt;&lt;p&gt;Git은 Subversion(SVN)과 달리&amp;nbsp;Staging area를 갖고 있습니다. SVN은 수정한 파일 중 일부를 선택할 수 있습니다. Git은 여기에서 더 나아가 파일내의 일부 코드만 골라 커밋 할 수도 있습니다. 원격에 공유되어 있는 저장소를 클론해서 파일을 수정 후 커밋하기 전에 staging area에 넣어두는 과정을 거칩니다. 우선&amp;nbsp;아래 그림에서 보여주고 있는 것처럼 untracked, unmodified, modified, staged 상태를 가집니다. untracked 상태의 새로운 파일을 추가할 때나 modified 상태… 수정한 파일을 staged 상태로 만드는 과정에 &apos;git add&apos;명령을 이용합니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; &quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/690/018/873db71da659ff0216ac0baf7783bf0e.png&quot; alt=&quot;18333fig0201-tn.png&quot; class=&quot;iePngFix&quot; width=&quot;500&quot; height=&quot;317&quot; style=&quot;width: 500px; height: 317px; border-style: solid; border-width:1px;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; &quot;&gt;[파일 상태와 동작에 따른 상태 변화. 그림 출처&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;http://git-scm.com/book&quot; target=&quot;_blank&quot;&gt;Pro Git&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&apos;svn add&apos;명령은 저장소에서 파일이나 디렉토리의 변경을 추적하기 위한 명령이지만 &apos;git add&apos;는 같은 기능(하지만 Git은 디렉토리를 추적하지 않습니다)을 하면서도 수정한 파일을 Staging area에 넣는 과정을 수행합니다. 이미 추적 중인 파일이라도 커밋하려면 SVN과는 달리 Git은 &apos;git add&apos;명령을 거쳐야 커밋할 수 있습니다(git add -a로 staging area를 거치지 않고 바로 커밋할 수도 있음). staged 상태로 변경하는 과정을 거치는 것이죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/690/018/21090b76f1489fe3a35b7400081762c9.png&quot; alt=&quot;18333fig0106-tn.png&quot; class=&quot;iePngFix&quot; width=&quot;500&quot; height=&quot;460&quot; style=&quot;width: 500px; height: 460px; border-style: solid; border-width:1px;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[staging area에 넣은 후 커밋하게 된다. 그림 출처 : &lt;a href=&quot;http://git-scm.com/book&quot; target=&quot;_blank&quot;&gt;Pro Git&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;이는 과정이 추가되어 매우 불편해 보이지만 큰 장점을 가지고 있습니다. SVN은 수정한 파일을 커밋하면 되돌리는 방법은 롤백 밖에 없지만 Git은 Staging area에 담아 둠으로써 가지는 장점을 간단한 과정을 그려봤습니다. Git은 수정된 상태가 아닌 staged 상태를 커밋하므로 staging area를 잘 이용하면 아래 그림의 SVN처럼 파일을 되돌려야하는 바보 같은 일은 하지 않아도 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/690/018/5a7e65cb36cfa9922d855b619ad25366.png&quot; alt=&quot;git-staging.png&quot; class=&quot;iePngFix&quot; width=&quot;485&quot; height=&quot;641&quot; style=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[Staging area를 잘 이용하면 바보 같은 짓을 안 해도 된다]&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;아래 그림은 &lt;a href=&quot;http://www.sourcetreeapp.com&quot; target=&quot;_blank&quot;&gt;SourceTree&lt;/a&gt;라는 맥(Mac OS)용 프로그램에서 modified 상태(수정은 했지만 staging area에 넣지 않은)의 코드를 라인 단위로 선택해서 staging area에 넣거나 제외 시킬 수도 있습니다.윈도우즈(Windows)에서 많이 사용하는 TotoriseGit은 사용해보지 않았지만… 아마도 지원 할 것 같습니다. 이 기능은 정말 환상적입니다. 올레 ~:)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/690/018/5115d1bd9f2abd2b1c1bcdaa1c63634a.png&quot; alt=&quot;sourcetree.png&quot; class=&quot;iePngFix&quot; width=&quot;566&quot; height=&quot;313&quot; style=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2&gt;Stash&lt;/h2&gt;
&lt;p&gt;Stash는 임시의 저장 공간이라 할 수 있습니다. staging area에 넣기에는 시기가 맞지 않는 상황에서는 수정한 파일들을 그대로 가지고 브랜치를 전환할 때 충돌이 발생할 수 있으며, 때로는 다시 수정되지 않은 최신 상태로 돌려놓고 코딩해야 할 때 Stash를 이용할 수 있습니다. &apos;git stash&apos; 명령으로 수정한 내역을 모두 임시 공간에 넣어두고 자유롭게 브랜치를 넘나 들거나 최신 상태의 코드를 다시 가져와 다룰 수 있습니다. 작업이 끝나면 &apos;git stash apply&apos; 명령으로 임시 공간에 두었던 코드를 다시 꺼내올 수 있습니다.&lt;/p&gt;
&lt;p&gt;&apos;git stash apply&apos; 명령을 사용할 때 staging area에 넣었던 내역은 반영되지 않고 모두 staging area에 들어 있지 않은 상태로 가져오는데 &apos;--index&apos; 옵션을 붙여서 staging area에 넣은 상태까지 복원할 수 있습니다. stash는 &apos;git stash&apos;명령을 수행할 때 마다 순차적으로 쌓이며, apply 명령을 실행할 때 마다 가장 최근에 담아 둔 것을 먼저 가져옵니다(FIFO). 또는 선택적으로 가져올 수도 있고 내역을 비워버릴 수도 있습니다. 공유된 저장소 등 다른 함께 일하는 개발자들에게는 전혀 영향을 미치지 않습니다. SVN에서는 수정한 파일들을 따로 백업해두고 작업을 한 후 다시 백업한 파일을 가져와 붙여야 하는 과정을 쉽게 처리할 수 있습니다. 충돌만 발생하지 않으면 저절로 병합도 됩니다.&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="git"/>
            <category term="svn"/>
            <category term="subversion"/>
            <category term="stash"/>
            <category term="staging area"/>
            <category term="stage"/>
            <category term="sourcetree"/>
            
   </entry>
   <entry>
      <title>XpressEngine Snippets for Sublime Text 2</title>
      <id>http://blog.xmz.kr/18486</id>
      <published>2012-09-11T22:32:05+09:00</published>
      <updated>2012-11-20T15:29:47+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/18486"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/18486#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&apos;&lt;a href=&quot;http://www.sublimetext.com&quot; target=&quot;_blank&quot;&gt;Sublime Text 2&lt;/a&gt;&apos;에서 사용 가능한 XpressEngine(XE)의 스니펫(Snippet)을 만들어 github에 공유해봤습니다. Sublime Text는 개발자용 텍스트 에디터이며, Mac OS, Windows, Linux를 지원합니다. 최근 맥(Mac OS)에서 XE 개발용 에디터를 Coda 2에서 Sublime Text 2로 변경을 했는데, Coda에서 사용하던 것을 sublime에서 사용하려고 만들었습니다.&amp;nbsp;생각보다 쉽게 제작이 가능해서 방법을 익히고 12개의 스니펫을 만드는데 30분도 걸리지 않았습니다.&lt;/p&gt;
&lt;p&gt;우선 만들어 본 12개의 스니펫은 아래 표를 참고해주세요.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: rgb(204, 204, 204); width: 500px;&quot; cellspacing=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;background:#EEE&quot;&gt;&lt;td&gt;&lt;p&gt;트리거&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;&lt;p&gt;완성되는 코드&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;get&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;&lt;p&gt;Context::get(&apos;*&apos;);&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td class=&quot;&quot;&gt;&lt;p&gt;set&lt;/p&gt;
&lt;/td&gt;&lt;td class=&quot;&quot;&gt;&lt;p&gt;Context::set(&apos;*&apos;, $*);&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td class=&quot;&quot;&gt;&lt;p&gt;dp&lt;/p&gt;
&lt;/td&gt;&lt;td class=&quot;&quot;&gt;&lt;p&gt;debugPrint(*);&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;query&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;&lt;p&gt;$output = executeQuery(&apos;*.*&apos;, $*);&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;queryarray&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;&lt;p&gt;$output = executeQueryArray(&apos;*.*&apos;, $*);&lt;br /&gt;if(!$output-&amp;gt;data) $output-&amp;gt;data = array();&lt;br /&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;getcontroller&lt;br /&gt;&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;&lt;p&gt;$o*Controller = &amp;amp;getController(&apos;*&apos;);&lt;br /&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;getmodel&lt;/p&gt;
&lt;/td&gt;&lt;td class=&quot;&quot;&gt;&lt;p&gt;$o*Model = &amp;amp;getModel(&apos;*&apos;);&lt;br /&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td class=&quot;&quot;&gt;&lt;p&gt;getseq&lt;/p&gt;
&lt;/td&gt;&lt;td class=&quot;&quot;&gt;&lt;p&gt;getNextSequence();&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;vars&lt;br /&gt;&lt;/p&gt;
&lt;/td&gt;&lt;td class=&quot;&quot;&gt;&lt;p&gt;$vars = Context::getRequestVars();&lt;br /&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;&amp;lt;load&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;&lt;p&gt;&amp;lt;load target=&quot;*&quot; /&amp;gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;&amp;lt;unload&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;&lt;p&gt;&amp;lt;unload target=&quot;*&quot; /&amp;gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;&amp;lt;include&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;&lt;p&gt;&amp;lt;include target=&quot;*&quot; /&amp;gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;아직 몇 가지 없지만 sublimetext를 사용하면서 수시로 추가하여 계속 공유 할 예정입니다.&lt;/p&gt;

&lt;h2&gt;# 설치 방법&lt;/h2&gt;
&lt;h3&gt;# 내려 받아 설치하기&lt;/h3&gt;
&lt;p&gt;Git 저장소 :&amp;nbsp;https://github.com/bnu/sublime-xpressengine&lt;/p&gt;
&lt;p&gt;위 Git 저장소에서 파일을 내려 받거나 git-clone으로 저장소를 복제하셔도 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/486/018/9c3795c52ff943470a8bd4468583fb64.png&quot; alt=&quot;&quot; class=&quot;iePngFix&quot; width=&quot;859&quot; height=&quot;289&quot; style=&quot;width: 859px; height: 289px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;git-clone이나 내려 받은 압축 파일을 압축을 해제할 경로… 파일을 복사할 경로는 아래와 같이 찾을 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;sublime 메뉴에서 &apos;Preferences &amp;gt; Browse Packages…&apos; 선택&lt;/li&gt;&lt;li&gt;열린 폴더 창에서 상위 디렉토리로 이동&lt;/li&gt;&lt;li&gt;&apos;Packages&apos; 폴더 안에 &apos;XpressEngine&apos;라는 폴더를 생성한 후 내려 받은 파일을 복사 또는 git-clone&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;위 처럼 파일을 제 위치에 복사하면 sublimetext에서 바로 사용할 수 있습니다. 아무 PHP 파일을 열고 &apos;get&apos;이라 타이핑 해보세요.&lt;/p&gt;

&lt;h3&gt;# Package Control을 이용하여 설치하기&lt;/h3&gt;&lt;div&gt;Package Control 설치 방법은&amp;nbsp;&lt;a href=&quot;http://wbond.net/sublime_packages/package_control/installation&quot; target=&quot;_blank&quot;&gt;http://wbond.net/sublime_packages/package_control/installation&lt;/a&gt;에 설명 되어 있습니다.&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;b&gt;[참고]&lt;/b&gt;&amp;nbsp;아직 패키지 저장소에 반영되지 않아 이 글을 쓴 시점에서 1~2주 이후에나 이용할 수 있을 거라 예상 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Command Palette(단축키.&amp;nbsp;Windows, Linux :&amp;nbsp;ctrl+shift+p.&amp;nbsp;OS X :&amp;nbsp;cmd+shift+p) 호출&lt;/li&gt;&lt;li&gt;&apos;package&apos;를 입력한 후 목록에서 &apos;package Control: Install Package&apos; 선택&lt;br /&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/486/018/c04f772e25547ed94d5eedcab8c76ced.png&quot; alt=&quot;&quot; class=&quot;iePngFix&quot; width=&quot;540&quot; height=&quot;343&quot; style=&quot;&quot; /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;(패키지를 목록을 갱신하는 잠깐의 시간이 지나고) 새로 표시되는 대화창에 &apos;xpressengine&apos;를 타이핑하면 목록에 나타나는 &apos;XpressEngine&apos; 선택&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;h2&gt;# 설치 확인 및 사용&lt;/h2&gt;
&lt;p&gt;설치(파일 복사) 후 바로 사용할 수 있으며, 아무 PHP 파일을 열고 &apos;get&apos;이라 타이핑하면 아래와 같이 표시됩니다.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/486/018/e18c21b78b5182de87c2ab40932cd19b.png&quot; alt=&quot;&quot; class=&quot;iePngFix&quot; width=&quot;370&quot; height=&quot;201&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="xe"/>
            <category term="sublimetext"/>
            <category term="sublime"/>
            <category term="sublime text 2"/>
            <category term="snippet"/>
            <category term="스니펫"/>
            <category term="developer"/>
            
   </entry>
   <entry>
      <title>Subversion과 비교한 Git의 특별함</title>
      <id>http://blog.xmz.kr/7815</id>
      <published>2012-09-10T23:43:25+09:00</published>
      <updated>2012-11-11T00:51:47+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/7815"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/7815#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;q4&quot;&gt;&lt;p&gt;Git은 이미 대세입니다. Git은 &lt;strong&gt;분산형 버전 관리 시스템(DVCS)&lt;/strong&gt;입니다. Git으로&amp;nbsp;오픈소스 프로젝트를 관리할 때 Github로 시너지 효과를 얻을 수도 있습니다. Subversion(SVN)과 차이점을 비교하여 Git의 특별함을 살펴보겠습니다.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Git의 특별함을 느낄 수 있는 SVN과 비교되는 몇 가지 차이점이 있습니다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;중앙 저장소를 복제하여 로컬 저장소를 갖는다.&lt;/li&gt;&lt;li&gt;중앙 저장소가 아닌 로컬 저장소에 커밋한다.&lt;/li&gt;&lt;li&gt;스냅샷으로 관리되는 구조이다.&lt;/li&gt;&lt;li&gt;브랜치를 쉽게 만들 수 있으며 전환이 빠르다.&lt;/li&gt;&lt;li&gt;파일 단위가 아닌 데이터를 관리한다.&lt;/li&gt;&lt;li&gt;빈 디렉토리는 커밋할 수 없다.&lt;/li&gt;&lt;li&gt;Staging -&amp;nbsp;Commit - Push.&lt;/li&gt;&lt;li&gt;파일의 일부분(내용)만 커밋할 수 있다.&lt;/li&gt;&lt;li&gt;숫자가 아닌 Hash 문자열로 커밋을 구분한다.&lt;/li&gt;&lt;li&gt;커밋의 순서를 바꿀 수 있고, 나누거나 합칠 수 있다.&lt;/li&gt;&lt;li&gt;여러 개의 원격 저장소(중앙 저장소)를 둘 수 있다.&lt;/li&gt;&lt;li&gt;Branch, Tag를 생성할 때 파일을 전부 복제하지 않고 효율적으로 관리한다.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;분산형 저장소인 Git은 SVN의 checkout과 달리 복제(clone)를 합니다.&amp;nbsp;이것은 단순해 보이지만 SVN과 비교되는 큰 차이로써 SVN을 이용한 코드 관리와 비교되는 많은 변화를 줄 수 있습니다.&amp;nbsp;SVN은 중앙 저장소에 모든 변경을 커밋하지만 Git은 중앙 저장소와 별도로 복제한 저장소에 커밋할 수 있습니다.&amp;nbsp;Git은 스냅샷으로 관리되는 브랜치는 전환이 매우 빠르고 쉬우며 브랜치를 만드는 것이 거추장 스럽지 않습니다. 또한, Git은 커밋 이력을 자유롭게 수정할 수도 있습니다.&lt;/p&gt;
&lt;p&gt;국내에 나와 있는 Git 관련 서적은 인사이트에서 출판한 번역서인 &quot;&lt;a href=&quot;http://book.naver.com/bookdb/book_detail.nhn?bid=6229324&quot; target=&quot;_blank&quot;&gt;Git, 분산 버전 관리 시스템&lt;/a&gt;&quot;이 있습니다. 저도 이 책을 구입하여 Git을 익혔습니다. 이 외에도 국내에는 아직 종이책으로 출판되지는 않았지만 PDF나 ePub 등 다양한 포맷으로 무료 제공하고 있는 &lt;a href=&quot;http://dogfeet.github.com/articles/2012/progit.html&quot; target=&quot;_blank&quot;&gt;&quot;Pro Git&quot; 한국어판&lt;/a&gt;도 있습니다. 본 글에서는 참조할 정보를 Pro GIt 한국어판의 목차 번호로 기재하겠습니다.&lt;/p&gt;
&lt;h2&gt;# SVN과 비교되는 Git의 특징&lt;/h2&gt;&lt;p&gt;Git의 분산형 저장소는 SVN과 달리 저장소를 복제하여 사용하게 됩니다. SVN 저장소를 checkout하면 커밋한 파일들과 &apos;.svn&apos; 디렉토리에 최소한의 정보만 담고 있지만, Git은 저장소를 통째로 복사 합니다. 그래서 checkout이 아닌 clone 명령을 사용합니다(Git은 checkout를 다른 용도로 사용합니다).&lt;/p&gt;
&lt;h3&gt;## 저장소를 통째로 복제 한다.&lt;/h3&gt;&lt;p&gt;XE Core 저장소를 google code로 옮긴 후 커밋로그 보기가 매우 지루해졌죠.&amp;nbsp;저장소를 복제하는 방식은 특징적이기도 하지만 커밋로그를 볼 때 서버에 접속하지 않고 바로 가져오므로 온라인에 비해 빠르게 가져옵니다. 이 차이점은 SVN에 비해 여러가지 장점을 갖습니다.&lt;/p&gt;
&lt;h3&gt;## 빠른 브랜치 전환과 이로 인한 장점&lt;/h3&gt;&lt;p&gt;Git은 필요하다면 수 십, 수 백 개의 브랜치를 만들어 작업하는 것을 권장하기도 합니다. SVN은 브랜치를 전환하는 비용이 크고 상당히 번거롭지만, Git은 브랜치 전환이 빠르고 매우 간편합니다. 여러 브랜치를 오가며 개발하는 개발자에게 유용하죠. 뿐만 아니라 특정 기능의 개발이나 패치를 진행하는 작은 규모의 작업도 브랜치를 두고 작업하면 중간에 다른 일을 처리해야 할 때도 유용합니다. 패치중이던 코드를 로컬에 커밋해두고 원래 브랜치로 돌아갔다가 일을 처리 한 후 패치하던 브랜치로 돌아가 계속 개발할 수 있죠. 이는 작업중인 코드가 다른 코드에 영향을 주지 않습니다. 같은 파일을 고칠 때 다른 문제를 수정하기 위해 작업 중이던 코드를 되돌리거나 따로 보관해두지 않아도 된다는 것입니다.&lt;/p&gt;
&lt;h3&gt;## 저장소 용량 비교&lt;/h3&gt;&lt;div&gt;저장소를 통째로 복사하기 때문에 용량을 크게 차지 않을까 하는 걱정이 있을까 해서 파일 용량을 비교해 봤습니다.&lt;/div&gt;&lt;p&gt;r10551 기준&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Git 저장소 : 약 100Mb&lt;/b&gt;&amp;nbsp;(1.5.0 브랜치의 파일 용량 포함 - 14Mb)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;SVN 저장소 - 저장소 DB : 약 140Mb&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;SVN 저장소 - 모든 파일을 체크아웃 : 약 960Mb&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SVN 저장소 - trunk만 체크아웃 : 14Mb&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SVN 저장소 - branches만 체크아웃 : 56Mb&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;SVN은 trunk만 체크아웃 했을 때 14Mb의 최소 공간을 차지합니다. 하지만 Git은 100Mb의 공간을 차지하므로, trunk만 놓고 비교했을 때는 꽤 큰 차이가 있습니다. 하지만 Git은 모든 정보를 담고 있으므로, SVN 저장소 DB인 140Mb와 비교 되어야 합니다. 이제 그리 큰 차이는 없어 보이네요. SVN은 여러 브랜치를 오가기 불편하므로 통째로 체크아웃 받아 사용하기도 하는데, 이 때의 SVN 용량은 무려 약 960Mb에 달합니다. 이 용량은 태깅과 브랜치가 많아질 수록 기하급수적으로 증가하죠. tags를 제외한 trunk와 branches의 두 용량은 70Mb정도 됩니다. Git의 장점들에 비하면 큰 용량 차이도 아닙니다.&lt;/p&gt;
&lt;h3&gt;## 숫자로 된 Revision 대신 Hash 문자열을 사용&lt;/h3&gt;&lt;p&gt;SVN은 중앙 서버에 순차적으로 커밋을 하게 되지만, Git은 각 개발자의 로컬 저장소에 커밋을 한 뒤 공유된 저장소에 Push를 합니다. Push를 통해 공유 저장소에 로컬에서 커밋했던 이력이 공유됩니다. 이 때문에 순차적으로 증가하는 숫자는 각 개발자가 중복이 발생하므로 커밋 정보로 Hash 문자열을 만듭니다. r10551의 hash 문자열은 &apos;8824cbfb845b477bb5ecae9cdc3de6cee59a9505&apos;입니다. 도저히 알아볼 수도 없으며, 의미를 부여할 수도 없고 순차적으로 증가한 것이 아니기 때문에 이것이 몇 번째 커밋인지 알아보려면 로그를 참조해야 합니다.&lt;/p&gt;
&lt;p&gt;Git의 Hash 문자열 방식은 리비전 번호 중복을 방지하기 위한 부분입니다. 긴 Hash 문자열은 리비전 번호에 비해 불편하지만 앞 7~8자리만 써도 Git 시스템에서 구분해내므로 Hash 문자열 전체를 입력할 필요는 없습니다.&lt;/p&gt;
&lt;h3&gt;## 로컬에 커밋한다는 것 - 커밋 이력 고쳐 쓰기와 Stash&lt;/h3&gt;&lt;p&gt;로컬에 커밋하는 것은 여러 장점이 있습니다. 저장소를 사용하다보면 임시로 커밋 할 필요가 있는데, 브랜치를 전환하거나 중간중간 기록을 해두기 위함이기도 합니다.&amp;nbsp;완성하지 코드를 커밋하는 것은 함께 코드를 고치는 개발자들에게 방해가 되지만 가끔 필요할 때가 있습니다. &apos;임시로&apos; 커밋하는 것은 좋지 않지만 Git은 이것이 좀 더 자유롭습니다.&lt;/p&gt;
&lt;p&gt;여러개의 커밋을 하나로 합칠 수도 있고 커밋의 순서를 뒤바꾸거나 흔적조차 남기지 않고 이력을 지울 수 있습니다. 공유하는 저장소에 Push하기 전까지는 로컬에서 수행한 커밋은 자유롭게 이력을 고쳐 쓸 수 있죠. 임시로 커밋한 이력을 깔끔하게 정리할 수 있고 Stash를 이용하면 브랜치를 전환하거나 필요로 인해 수정하고 있던 파일들을 임시 공간으로 옮겨두고 이전 상태로 되돌려서 다른 일을 할 수도 있습니다. 새로운 작업이 끝나면 임시로 넣어 두었던 상태로 쉽게 다시 돌아올 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;blockquote class=&quot;q4&quot;&gt;&lt;p&gt;이 글은 오래전에 써두었으나 미뤄두다가 발행한 글 입니다.&lt;br /&gt;좀 더 자세한 내용은 나눠서 다룰 예정입니다.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="git"/>
            <category term="svn"/>
            <category term="subversion"/>
            <category term="stash"/>
            <category term="branch"/>
            <category term="dvcs"/>
            
   </entry>
   <entry>
      <title>XE 애드온 개발할 때 주의 해야 할 것들</title>
      <id>http://blog.xmz.kr/13086</id>
      <published>2012-07-26T13:00:02+09:00</published>
      <updated>2012-07-26T17:11:53+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/13086"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/13086#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;q4&quot;&gt;&lt;p&gt;XE의 애드온은 XE가 동작하는 과정 중간에 관여하여 어떤 기능이 동작하도록 하거나, 무언가를 추가하거나 출력 될 HTML을 변경할 수도 있습니다. &lt;a href=&quot;http://www.xpressengine.com/index.php?mid=download&amp;amp;category_srl=18322925&amp;amp;parent_srl=18322917&quot; target=&quot;_blank&quot;&gt;공개되어 있는 애드온&lt;/a&gt; 중에는 꽤나 유용한 것들이 많습니다. SNS로 공유하기 버튼을 글 아래에 넣어주고, 사진을 다루는 분들은 EXIF 정보를 자동으로 화면에 뿌려줄 수도 있습니다. 스킨이나 XE를 수정 할 필요 없이 쉽게 기능 추가를 할 수 있죠. 이런 애드온을 만들 때 주의해야 할 것을 몇 가지 살펴 보겠습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;애드온의 기본 동작&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/086/013/535c074ec34e51fe72559496cab620d0.png&quot; alt=&quot;스크린샷 2012-07-26 오후 12.13.37.png&quot; class=&quot;iePngFix&quot; width=&quot;200&quot; height=&quot;657&quot; style=&quot;width: 200px; height: 657px; float: right; margin:10px;&quot; /&gt;애드온은 XE 동작 중 네 곳에서 호출되어 동작합니다. 모듈이나 위젯들과는 달리 특별한 처리 없이 include()로 애드온 파일을 가져와 동작하므로 매우 단순하면서도 의도한 코드를 가볍게 실행할 수 있습니다.&lt;/p&gt;
&lt;h3&gt;애드온이 동작하는 시점&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;before_module_info&lt;/b&gt; : XE가 필요한 모듈의 동작을 위해 초기화 되기 이전&lt;/li&gt;&lt;ul&gt;&lt;li&gt;classes/module/ModuleHandler.class.php 파일의 ModuleHandler()&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;before_module_proc&lt;/b&gt; : 모듈의 동작을 수행하기 이전&lt;/li&gt;&lt;ol&gt;&lt;li&gt;classes/module/ModuleObject.class.php 파일의 proc()&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;b&gt;after_module_proc&lt;/b&gt; : 모듈의 동작이 끝난 후&lt;/li&gt;&lt;ol&gt;&lt;li&gt;classes/module/ModuleObject.class.php 파일의 proc()&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;b&gt;before_display_content&lt;/b&gt; : 모든 처리를 마친 후 화면을 출력하기 전&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;classes/context/Context.class.php 파일에서 printContent()&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;주의해야 할 것들&lt;/h2&gt;
&lt;p&gt;앞에서 말한 것처럼 애드온은 단순히 include 구문으로 호출되어 그대로 사용되기 때문에, XE의 동작을 방해하지 않도록 주의해야 할 것이 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;애드온 파일에 함수를 정의하지 말 것&lt;/li&gt;&lt;li&gt;변수명이 중복되지 않도록(재정의 되지 않도록) 주의&lt;/li&gt;&lt;li&gt;정의된 변수를 조작할 때 필요한 부분만 최소한으로 변경 할 것&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;애드온 파일에 함수를 정의하지 말 것&lt;/h3&gt;
&lt;p&gt;애드온이 호출되는 시점은 모두 XE에 정의된 함수 내에서 동작하게 되므로, 애드온 파일에서 새로운 함수를 정의하면 문법 오류가 발생합니다. 함수를 정의해서 사용하려면 파일을 분리하여 필요한 함수나 클래스를 작성해서 include하여 사용할 수 있습니다.&lt;/p&gt;
&lt;h3&gt;변수명이 중복되지 않도록(재정의 되지 않도록) 주의&lt;/h3&gt;&lt;p&gt;위 문제와 마찬가지로 애드온이 동작할 때 이미 정의된 변수를 덮어 버리면 XE의 동작에 영향을 줄 수 있으므로, 변수명이 겹치지 않도록 주의해야 합니다. 사용 중인 변수명은 &lt;a href=&quot;http://kr2.php.net/manual/en/function.get-defined-vars.php&quot; target=&quot;_blank&quot;&gt;get_defined_vars()&lt;/a&gt;로 볼 수 있습니다. debug를 사용 중이라면 debugPrint(get_defined_vars());로 확인할 수 있습니다.&lt;/p&gt;
&lt;h3&gt;정의된 변수를 조작할 때 필요한 부분만 최소한으로 변경 할 것&lt;/h3&gt;&lt;p&gt;&apos;before_display_content&apos; 시점에서 특히 HTML을 추가하거나 변경해야 할 필요가 있을 때는 $output 변수에 담긴 것을 사용할 수 있습니다. &apos;before_display_content&apos; 시점에서 동작할 때는 $output에는 화면에 뿌려질 최종 HTML 코드가 담겨 있습니다. $output의 데이터를 변경해야 할 때는 원본에서 필요한 부분만을 최소한으로 변경해야 합니다.&lt;/p&gt;
&lt;p&gt;데이터를 새로 받아와 $output에 담긴 것을 대체해버리거나 꼭 필요한 변경 외에는 기존의 코드를 제거해서는 안 됩니다. 주로 글이 출력되는 부분을 찾기 위해 &apos;&amp;lt;!--BeforeDocument(문서번호,회원번호)--&amp;gt;&apos;를 정규표현식으로 찾아서 바꾸게 되는데, 이 때 &apos;&amp;lt;!--BeforeDocument(문서번호,회원번호)--&amp;gt;&apos; 이것을 같이 제거해버리면 같은 정규식을 사용하는 다른 애드온이 동작하지 않게 됩니다. &apos;&amp;lt;div class=&quot;document_문서번호_회원번호 xe_content&quot;&amp;gt;&apos;, &apos;&amp;lt;!--AfterDocument(문서번호,회원번호)--&amp;gt;&apos; 등 모두 마찬가지이며, 이런 것들은 여러 곳에서 참조될 수 있으므로 제거하지 않도록 주의해야 합니다.&lt;/p&gt;
&lt;p&gt;위처럼 문서의 내용을 찾은 후 문서 내용을 새로 받아와서 대체해 버리는 사례도 있었습니다. 어차피 같은 내용을 가져와 대체하는 것이기 때문에 문제될 게 없을 것으로 생각할 수 있으나, 에디터 컴포넌트의 동작을 무시해버리는 문제가 발생합니다. 일부 에디터 컴포넌트도 HTML을 변조하여 반환하는 것들이 있는데, 에디터 컴포넌트의 처리가 애드온 보다 먼저 처리되므로 이와 같이 문서 내용을 통째로 대체해버리면 에디터 컴포넌트가 변경하여 반환한 HTML이 원래대로 돌아가 버리기 때문입니다. 또한 일부 트리거도 애드온의 &apos;before_display_content&apos; 시점의 동작 직전에 실행되므로 역시 같은 문제를 발생 시킬 수 있으므로, 애드온에서 최소한의 필요한 데이터만 변경해야 합니다.&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="XE"/>
            <category term="애드온"/>
            <category term="개발자"/>
            <category term="주의사항"/>
            <category term="before_module_info"/>
            <category term="before_module_proc"/>
            <category term="after_module_proc"/>
            <category term="before_display_content"/>
            <category term="변수"/>
            
   </entry>
   <entry>
      <title>XE 통합 툴바. Dock 모듈 만들기.</title>
      <id>http://blog.xmz.kr/12946</id>
      <published>2012-07-24T11:48:42+09:00</published>
      <updated>2012-07-25T10:12:16+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/12946"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/12946#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;요즘 개발하고 있는 모듈이 두 가지 있습니다.&amp;nbsp;TopicFlux와&amp;nbsp;Dock 모듈인데, TopicFlux는 XE 공홈 자유게시판에서 밝혔던 것처럼(참조 :&amp;nbsp;&lt;a href=&quot;http://www.xpressengine.com/freeboard/20882581&quot; target=&quot;_blank&quot;&gt;다음 배포 할 자료 TopicFlux &amp;amp; TopicCast&lt;/a&gt;) 게시물을 선별하는 기능과 임의로 입력한 간단한 정보를 배치하는 데 쓰입니다. 여튼, TopicFlux에서 각 위젯을 편집 할 때 필요한 버튼을 페이지에 항상 고정해 두어야 하는데 이 버튼과 더불어 &lt;a href=&quot;http://xmz.kr/shop&quot; target=&quot;_blank&quot;&gt;알림센터&lt;/a&gt; 모듈의 알림을 표시하기 위해 Dock 모듈을 함께 만들고 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/946/012/23ae21dee71d2fd4426f82fbdb540f58.png&quot; alt=&quot;스크린샷 2012-07-24 오전 11.10.21.png&quot; class=&quot;iePngFix&quot; width=&quot;646&quot; height=&quot;34&quot; style=&quot; border-style: solid; border-width:1px;&quot; /&gt;&lt;br /&gt;[SNS 공유 기능이 있는 보편적으로 사용되는 서비스]&lt;/p&gt;
&lt;p&gt;화면 아래에 위와 같은 툴바가 붙어 다니는 것을 볼 수 있는데 이런 것들은 대부분 페이스북, 트위터 등으로의 공유 기능이 붙어 있죠. 제가 만들려는 목적은 이처럼 SNS 공유 버튼도 붙일 수 있겠지만, 주로 XE내에서 동작하는 기능들을 Dock에 몰아 넣어두기 위해서 입니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/946/012/f54c4a03e40b9d2fb30f31164bc115fc.png&quot; alt=&quot;스크린샷 2012-07-24 오전 10.51.29.png&quot; class=&quot;iePngFix&quot; width=&quot;263&quot; height=&quot;115&quot; style=&quot;width: 263px; height: 115px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;[Dock 모듈. 작게 표시된 아이콘]&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/946/012/43ce039d706f9c15ef85d190b378b2c2.png&quot; alt=&quot;스크린샷 2012-07-24 오전 10.51.40.png&quot; class=&quot;iePngFix&quot; width=&quot;467&quot; height=&quot;228&quot; style=&quot;width: 467px; height: 228px; border-style: solid; border-width:1px;&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;[Dock 모듈.&amp;nbsp;특정 아이콘을 눌렀을 때 기능 수행]&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;지금 XE Magazine에서 이 기능을 테스트하고 있습니다. 아직 개발 초기이므로 UI는 이쁘장하지 않습니다. 기능적으로도 프로토타입 수준으로 여러 방법을 고민하고 있습니다. 위 스크린샷처럼 구석에 위치하고 있다가 각 항목을 누르면 상세 내용을 표시하거나 각 기능에서 지정한 기능을 수행하는 방식입니다. 위 스크린샷은 알림센터의 메시지를 표시하도록 알림센터에 기능을 추가했습니다. Dock 모듈의 개발을 위해 임시로 추가해 본 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/946/012/51a1770307331dceda36dd1a00d28217.png&quot; alt=&quot;스크린샷 2012-07-24 오전 11.12.24.png&quot; class=&quot;iePngFix&quot; width=&quot;264&quot; height=&quot;299&quot; style=&quot;width: 264px; height: 299px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;[페이스북 채팅. 친구 목록]&lt;/div&gt;&lt;p&gt;&lt;/p&gt;

&lt;p&gt;이는 페이스북에서 참조했으며 채팅창을 표시하는 것과는 다르지만 페이스북 개발자 페이지에서 볼 수 있는 일부 화면에서 가져왔습니다. UI를 다양하게 구상해 보고 있는데 jQuery로 만들어진 다양한 플러그인을 하나 씩 실험 중입니다. 그 중 하나는 &lt;a href=&quot;http://srobbin.com/jquery-plugins/pageslide/&quot; target=&quot;_blank&quot;&gt;PageSlide 플러그인&lt;/a&gt;인데 마치 마운틴 라이언의 알림센터를 생각나게 합니다.&amp;nbsp;페이지를 옆으로 스윽 밀어버리면서 감춰져 있던 UI를 표시하는 방식입니다.&lt;/p&gt;

&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/946/012/afe9718e10844fef46076cf7a4495e00.jpg&quot; alt=&quot;mtlion_icon_slide_04a-272701.jpg&quot; width=&quot;606&quot; height=&quot;404&quot; style=&quot;width: 606px; height: 404px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;[Mas OS 마운틴 라이언의 알림센터]&lt;/div&gt;&lt;p&gt;아쉽게도 PageSlide 플러그인은 적용 할 사이트에 표시되는 항목에 따라 영향을 줄 수 있기 때문에 범용성을 생각하면 고민 되는 부분입니다. 아직 여러 UI를 실험하고 있지만 페이스북의 채팅창과 비슷한 방식과 역시 페이스북의 알림 목록을 나태는 말풍선 형태를 추가 할 계획입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/946/012/a6621a009c9a247fd788f4ae0ea0be0e.png&quot; alt=&quot;스크린샷 2012-07-24 오전 11.11.48.png&quot; class=&quot;iePngFix&quot; width=&quot;341&quot; height=&quot;571&quot; style=&quot;width: 341px; height: 571px; border-style: solid; border-width:1px;&quot; /&gt;&lt;br /&gt;[페이스북의 알림 목록 창]&lt;/p&gt;
&lt;p&gt;이건 알림센터 모듈에 딱 이네요. ^^&lt;/p&gt;
&lt;p&gt;Dock 모듈이 얼마나 널리 사용될지는 모르겠습니다. 우선은 TopicFlux와 알림센터, 그리고 XE의 기능을 처리할 수 있는 미니 리모컨의 개념으로 기능을 자체 내장시킬 예정입니다. 예를 들면 글의 카테고리를 변경하려면 글을 수정해야 하는데 이를 간편하게 카테고리만 변경할 수 있도록 하거나 작성일을 변경하는 등의 유틸리티로써 사용할 수 있는 기능을 내장 할 계획입니다.&lt;/p&gt;
&lt;p&gt;뭐 별거 아닌 단순한 기능을 주로 채울 예정이지만 사이트 관리자가 항목을 조정하고 위치를 변경할 수 있도록 계획하고 있습니다. 계획은 큽니다. :)&lt;/p&gt;
&lt;p&gt;TopicFlux의 리모컨으로써 Dock이 사용될 것이고 Dock 모듈 자체에도 앞에서 적은 문서 관리를 포함해 작은 유틸리티를 포함시킬 예정입니다. 아직 시작 단계라서&amp;nbsp;프로토타입으로 만든 것을 바탕으로&amp;nbsp;많은 실험과 개선을 거칠 예정입니다. 어느 정도 완성도를 갖추면 연동할 모듈이 있는지 살펴보고 하나씩 통합을 시도해 볼 계획을 가지고 있습니다.&lt;/p&gt;
&lt;p&gt;Dock 모듈도 오픈소스 라이선스로 공개할 것이고 연동할 수 있는 API 문서도 이쁘장하게 써서 공개하도록 하겠습니다. :)&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</content>
                  <category term="dock"/>
            <category term="알림센터"/>
            <category term="ncenter"/>
            <category term="topicflux"/>
            
   </entry>
   <entry>
      <title>수정한 XE 코어를 간편하게 업데이트 하기</title>
      <id>http://blog.xmz.kr/5654</id>
      <published>2012-03-29T09:06:13+09:00</published>
      <updated>2012-07-24T15:52:45+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/5654"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/5654#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;q4&quot;&gt;&lt;p&gt;XE를 사용하면서 파일을 수정해서 사용하는 일이 있죠. 이러한 수정사항이 많아질수록 XE를 업데이트하기 어려워집니다. 수정한 많은 파일을 또다시 수정해야 하니까요. SVN을 이용해 병합이라는 과정을 통해 이 수고를 덜 수 있습니다. 수정한 이력도 관리되며 좀 더 간편하게 XE 업데이트를 적용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;이 글은 2008년도에 작성했던 &apos;&lt;a href=&quot;http://www.xpressengine.com/tip/17298520&quot; target=&quot;_blank&quot;&gt;SVN을 이용한 수정한 코드 최신화&lt;/a&gt;&apos;글에서 화면 캡쳐 이미지가 보이지 않아 다시 작성한 글입니다. 설명은 크게 다르지 않으나 TSVN의 최근 버전을 기준으로 작성되었습니다.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/24f49ffbd96b542730efa0b193fedc6b.jpg&quot; alt=&quot;TortoiseSVN T-Shirt.Design on Black.Alan Adams.20110907.jpg&quot; width=&quot;431&quot; height=&quot;391&quot; style=&quot;&quot; /&gt;&lt;br /&gt;[이미지 원본 : &lt;a href=&quot;http://goo.gl/JtcXR&quot; target=&quot;_blank&quot;&gt;http://goo.gl/JtcXR&lt;/a&gt;]&lt;/p&gt;
&lt;h2&gt;개요&lt;/h2&gt;
&lt;p&gt;Subversion(SVN)은 코드를 관리하는 도구 중 하나입니다. 잘 활용하면 코드를 변경한 이력이 남겨두고 나중에 살펴볼 수 있으며, 병합을 통해 수정한 XE를 좀 더 간편하게 업데이트할 수 있습니다. XE Core나 게시판 모듈 등을 수정하여 사용할 때 업데이트를 적용하기가 상당히 번거로워지죠. 마땅한 방법을 찾지 못하여 수정한 내역을 문서에 기록해두고 매번 다시 적용하신다는 분이 많았습니다. SVN을 이용하여 좀 더 간편하게 관리할 수 있습니다. 물론 SVN의 사용 방법을 익혀야 하지만 변경한 코드가 많을수록 업데이트할 때 매번 다시 적용하는 것보다는 효율적입니다. 단순한 예제로 코드를 수정한 후 병합을 이용해 간편하게 XE 업데이트를 적용하는 방법을 살펴보겠습니다.&lt;/p&gt;
&lt;h2&gt;준비 - TortoiseSVN 설치 및 폴더 구조&lt;/h2&gt;
&lt;p&gt; Windows에서 TortoiseSVN(TSVN)을 설치하여 저장소를 생성하여 이용하는 방법으로 설명하겠습니다. SVN과 TSVN에 대한 내용을 아래 주소에서 미리 익혀두시면 좋습니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://hotcoffee.tistory.com/entry/Tortoise-SVN-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EA%B8%B0%EB%B3%B8%EC%82%AC%EC%9A%A9%EB%B2%95&quot; target=&quot;_blank&quot;&gt;Tortoise SVN 설치 및 기본사용법&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://doodoori2.tistory.com/entry/TortoiseSVN%EC%82%AC%EC%9A%A9%EB%B2%95%EB%B0%8F%EA%B8%B0%EB%B3%B8%EA%B0%9C%EB%85%90&quot; target=&quot;_blank&quot;&gt;Tortoise SVN 사용법 및 기본개념&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://manghon.com/blog/entry/Tortoise-SVN-%EC%84%A4%EC%B9%98-%EB%B0%8F-Checkout-Commit&quot; target=&quot;_blank&quot;&gt;Tortoise SVN 설치 및 Checkout , Commit&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;TortoiseSVN 설치&lt;/h3&gt;&lt;p&gt;TSVN은 아래 주소에서 자신의 운영체제에 맞는 32bit 및 64bit를 골라 설치하시면 됩니다(자신의 운영체제 정보를 모르면 32bit를 설치하세요). 해당 페이지 아래에 한국어 언어팩도 있으니 설치한 TSVN과 같은 **bit의 파일을 내려받아 설치하시면 됩니다. 한국어 언어팩을 설치한 상태로 설명할 것이니 언어팩도 함께 설치해주세요. 설치 과정은 생략합니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tortoisesvn.net/downloads.html&quot; target=&quot;_blank&quot;&gt;TortoiseSVN과 한국어 언어팩 내려받기&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;폴더 구조&lt;/h3&gt;&lt;p&gt;저장소를 위한 폴더와 XE파일을 담아 둘 폴더를 따로 생성해야 합니다&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;svn_repo : SVN 저장소 폴더&lt;/li&gt;&lt;li&gt;my_site : XE 파일을 저장할 폴더&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;두 폴더 모두 적당히 잘 관리할 수 있는 곳에 만들면 됩니다. svn_repo는 보관만 해두면 되고, my_site는 PC에서 테스트용 웹서버를 사용한다면 해당 document root 경로에 만들어도 되겠죠. 저는 C드라이브에 바로 두 폴더를 생성하여 설명하겠습니다.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;저장소 생성과 체크아웃&lt;/h2&gt;&lt;h3&gt;저장소 생성&lt;/h3&gt;&lt;p&gt;svn_repo 폴더에서 Context Menu(우클릭 메뉴)에서 &apos;TortoiseSVN &amp;gt; 현재 위치에 저장소 생성&apos;을 선택합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/955aad68f1645cda0a6b30c51df100c7.png&quot; alt=&quot;Voila_Capture3121.png&quot; class=&quot;iePngFix&quot; width=&quot;456&quot; height=&quot;421&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;저장소는 클릭만으로 아주 간단하게 만들어지며 아래와 같이 생성된 저장소의 정보를 보여줍니다. 여기에 나타난 &apos;file:///…&apos;경로는 SVN에서 사용할 저장소 경로입니다. 복사해 두세요(windows 7의 경우 마우스로 선택할 수 있습니다). 경로를 복사하고 이 창은 닫으세요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/1d7066033179fdecc9e716080cf98630.png&quot; alt=&quot;Voila_Capture3132.png&quot; class=&quot;iePngFix&quot; width=&quot;672&quot; height=&quot;240&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;h3&gt;체크아웃&lt;/h3&gt;&lt;p&gt;my_site 폴더에서 우클릭 메뉴에서 SVN 체크아웃을 누르면 아래와 같은 대화창이 열립니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/0c76c716d73e66e16c0331207f0bbc28.png&quot; alt=&quot;Voila_Capture3142.png&quot; class=&quot;iePngFix&quot; width=&quot;478&quot; height=&quot;397&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;저장소 URL은 앞에서 생성한 경로이며 복사해 두었다면 이미 채워져 있을 겁니다. &apos;체크아웃 받을 디렉토리&apos;는 my_site 폴더의 경로가 채워져 있습니다. [확인]버튼을 누르면 숨김 파일로 &apos;.svn&apos; 폴더가 만들어집니다. 이 폴더는 꼭 필요한 것이니 지우지 마세요. :)&lt;/p&gt;
&lt;h2&gt;XE Core를 넣고 첫 번째 커밋&lt;/h2&gt;&lt;blockquote class=&quot;q4&quot;&gt;&lt;p&gt;XE Core 1.5.2 버전을 기준으로 설명하겠습니다. 이 글을 작성한 최신 XE Core 버전은 1.5.2.1 이지만, 병합하는 방법을 설명하기 위해 한 단계 이전 버전을 기준으로 하겠습니다. 이 글에서는 설명을 위한 것이니 최신 버전을 내려받으시면 됩니다.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;XE Core를 내려받아 압축을 풀어 my_site에 넣어 둡니다. 파일 아이콘에 물음표 아이콘이 붙는데, 이는 SVN에서 관리되지 않는 파일임을 표시하는 상태 아이콘입니다. 파일과 폴더를 모두 선택하여 우클릭 메뉴 &apos;TortoiseSVN &amp;gt; 추가하기&apos;를 선택하면 아래와 같은 대화창이 열립니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/5d734687c678740ee39dceaec3e7fdf8.png&quot; alt=&quot;Voila_Capture3201.png&quot; class=&quot;iePngFix&quot; width=&quot;733&quot; height=&quot;406&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;[확인]버튼을 누른 후 잠시 기다리면 다른 대화창에서 파일을 추가하는 현황을 보여줍니다. 추가가 완료되면 파일과 폴더에 &apos;+&apos; 아이콘으로 변경 됩니다(아이콘이 변경되지 않았다면 새로고침 해보세요. 때때로 아이콘이 바로 변경되지 않을 수 있습니다). 다시 우클릭 메뉴에서 &apos;SVN 커밋&apos; 선택하면 아래와 같이 커밋을 위한 대화창이 열립니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/0293bdf7996ee6b3f68cdbed2d1b76ee.png&quot; alt=&quot;Voila_Capture3211.png&quot; class=&quot;iePngFix&quot; width=&quot;656&quot; height=&quot;496&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&apos;메시지&apos; 부분에 나중에 참고하기 위해 너무 길지 않게 커밋에 대한 설명을 입력하고 [확인] 버튼을 누르면 svn_repo 저장소에 추가한 파일과 메시지를 포함한 모든 정보를 기록합니다. 물음표와 &apos;+&apos; 아이콘이 표시되었던 파일들이 커밋을 완료하면 녹색 체크 아이콘으로 상태가 변경됩니다. 커밋 로그를 살펴보면(우클릭 &apos;SVN 로그 보기&apos;) 입력한 메시지와 추가한 파일 목록이 잘 기록되어 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/3a573c41b9b3e63adc05e7b0cb654e2f.png&quot; alt=&quot;Voila_Capture3221.png&quot; class=&quot;iePngFix&quot; width=&quot;736&quot; height=&quot;422&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;h2&gt;XE Core의 파일을 수정하고 커밋하기&lt;/h2&gt;
&lt;p&gt;XE Core 배포본을 수정하지 않고 그대로 넣어두었고, 이제 코드를 수정하고 커밋 할 때마다 이력을 남길 수 있습니다.&lt;/p&gt;
&lt;p&gt;예시로 modules/document/document.controller.php 파일을 조금 수정하여 저장했습니다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:php;highlight:[195];first-line:194&quot;  title=&quot;&quot;&gt;// If no tile extracted from the contents, leave it untitled.
if($obj-&amp;gt;title == &apos;&apos;) $obj-&amp;gt;title = &apos;제목 없음&apos;; // &apos;Untitled&apos;를 &apos;제목 없음&apos;으로 변경했습니다.
// Remove XE&apos;s own tags from the contents.&lt;/pre&gt;
&lt;p&gt;수정한 파일은 빨간색 느낌표 아이콘으로 상태가 바뀝니다(수정되었으나 커밋하지 않은 파일). document.controller.php 파일을 커밋하여 이력을 남겨 보겠습니다. 이 파일만 선택하거나 my_site 폴더에서 수정한 다른 파일들도 함께 커밋할 수 있습니다. my_site 폴더를 우클릭 메뉴 &apos;SVN 커밋&apos;을 선택하면 변경된 파일 목록이 보이고 메시지를 작성해 커밋할 수 있습니다. 변경된 파일 목록에서 파일을 더블 클릭하면 수정한 내역을 볼 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/3f7093153bb2493bc1c1e26ac209cf88.png&quot; alt=&quot;Voila_Capture3252.png&quot; class=&quot;iePngFix&quot; width=&quot;685&quot; height=&quot;626&quot; style=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;커밋 대화창에서 확인을 누르면 입력한 메시지와 함께 저장소에 반영됩니다. 다시 my_site에서 SVN 로그를 보면 방금 커밋한 이력과 변경된 파일 목록을 다시 볼 수 있습니다. 마찬가지로 변경된 파일을 더블 클릭하면 수정한 내용을 볼 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/ea43c2ac5e859c8a1bf4f0afbe3a7f25.png&quot; alt=&quot;Voila_Capture3261.png&quot; class=&quot;iePngFix&quot; width=&quot;737&quot; height=&quot;404&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;h2&gt;XE Core 업데이트 적용하기 - 코드 병합&lt;/h2&gt;&lt;p&gt;XE Core 1.5.2 버전을 내려 받아 적용하고, 간단하게 파일도 수정해서 커밋했습니다. 보통 업데이트하기 위해 XE Core를 통째로 덮어 쓰면 기존에 수정한 것도 다시 적용해야 하므로, SVN의 &apos;병합&apos;을 이용하여 해결 합니다.&lt;/p&gt;
&lt;p&gt;my_site 폴더에서 우클릭 메뉴 &apos;TortoiseSVN &amp;gt; 병합&apos;을 선택하면 &apos;병합&apos; 대화창이 열리고 &apos;병합 종류&apos;에서는 &apos;리비전 구간 병합&apos;을 선택하여 [다음]으로 넘어가면 아래와 같은 대화창이 열립니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/82249d0a0bfa7b185beba3b941217929.png&quot; alt=&quot;Voila_Capture3281.png&quot; class=&quot;iePngFix&quot; width=&quot;618&quot; height=&quot;459&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&apos;병합할 원본 URL&apos;에는 XE Core의 공식 배포본 경로인 &quot; http://xe-core.googlecode.com/svn/trunk &quot;를 입력합니다. 적용할 범위를 지정하기 위해 [로그 보기] 버튼을 누르면 아래와 같이 &apos;리비전 구간 선택&apos; 대화창에서 범위를 지정할 수 있습니다. 앞에서 수정했던 document.controller.php 파일이 XE Core에서도 수정되었네요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/562569392a0809482d2c3f5bd018c167.png&quot; alt=&quot;Voila_Capture3291.png&quot; class=&quot;iePngFix&quot; width=&quot;659&quot; height=&quot;473&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;이 글에서는 XE 1.5.2를 적용한 상태이고 1.5.2.1이 배포되었으니 목록에 리비전 번호 10466에 1.5.2.1이 커밋되었네요. 한꺼번에 여러 버전을 업데이트할 때는 shift키를 이용해 여러 리비전을 선택할 수 있습니다. 적용하고자 하는 리비전을 선택하고 [확인]버튼을 누르면 &apos;병합할 리비전 구간&apos; 입력란이 채워집니다. [다음]버튼을 눌러 &apos;병합 설정&apos; 대화창에서 미리 병합과정을 테스트해볼 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/6dba3ac1010f5bd62ba14ebafa77c7bd.png&quot; alt=&quot;Voila_Capture3301.png&quot; class=&quot;iePngFix&quot; width=&quot;616&quot; height=&quot;458&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;[시험 병합] 버튼을 누르면 가상으로 병합 결과를 볼 수 있습니다. [병합]버튼으로 실제로 병합합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/b46bfe7757686c2831d9a670d5bbcaf1.png&quot; alt=&quot;Voila_Capture3341.png&quot; class=&quot;iePngFix&quot; width=&quot;775&quot; height=&quot;325&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;병합이 완료된 후 my_site 폴더에서 우클릭 메뉴 &apos;SVN 수정 사항 확인&apos;을 선택하면 이번 병합으로 수정된 파일 목록을 볼 수 있습니다. 앞에서 수정했던 document.controll.php 파일을 보니 수정했던 코드가 그대로 유지되어 있네요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/225e4dd1b637bbb564b0480cf84b8ee7.png&quot; alt=&quot;Voila_Capture3361.png&quot; class=&quot;iePngFix&quot; width=&quot;943&quot; height=&quot;446&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;병합은 했지만, 저장소에 아직 커밋하지 않았기 때문에 파일과 폴더에 빨간색 느낌표로 아이콘이 변경되었습니다. my_site 폴더에서 우클릭 메뉴 &apos;SVN 커밋&apos;을 선택해 커밋 대화창을 열어보면 병합한 파일 목록이 &apos;변경된 파일&apos;목록에 보입니다. [최근 메시지]버튼을 누르면 기존에 작성한 메시지 외 병합한 정보가 자동으로 추가되어 있습니다. 이 메시지를 선택하면 &apos;메시지&apos; 입력란에 채워집니다. 이 메시지 뒤에 &apos;1.5.2.1 적용&apos;이라고 추가해두면 나중에 확인하기 더 좋겠죠. 커밋 대화창에서 [확인]을 눌러 커밋합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/82cda5604f4f914abe8f9c17daf27b33.png&quot; alt=&quot;Voila_Capture3371.png&quot; class=&quot;iePngFix&quot; width=&quot;671&quot; height=&quot;533&quot; style=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;커밋이 완료된 후 my_site에서 우클릭 메뉴 &apos;SVN 로그 보기&apos;를 선택하면 병합한 커밋과 기존 기록을 볼 수 있습니다. 파일의 상태 아이콘도 모두 녹색 체크 아이콘으로 돌아왔네요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/64c2bfb8aa00c347c7f4a1909eaa9134.png&quot; alt=&quot;Voila_Capture3381.png&quot; class=&quot;iePngFix&quot; width=&quot;752&quot; height=&quot;438&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;리비전 1에서 처음 XE Core를 넣었고, 리비전 2에서 document.controll.php 파일을 조금 수정하여 커밋했습니다. 리비전 3에서는 XE Core를 업데이트 병합을 했습니다. document.controller.php 파일을 열어보면 리비전 2에서 수정한 코드가 그대로 유지되어 있고 리버전 3에서 병합한 변경사항도 모두 반영되어 있습니다(이미지 생략^^;).&lt;/p&gt;
&lt;h2&gt;FTP로 업로드하기 위해 수정된 파일만 골라내기&lt;/h2&gt;&lt;p&gt;실제 사이트에 적용하기 위해 다시 XE 전체 파일을 업로드해야 한다면 이것 또한 귀찮고 시간도 오래 걸립니다. TSVN을 이용해 변경된 파일만 추려낼 수 있습니다.&lt;/p&gt;
&lt;p&gt;my_sites에서 우클릭 메뉴 &apos;SVN 로그 보기&apos;를 선택하고 &apos;로그 메시지&apos; 대화창의 리비전 목록에서 자신의 사이트에 적용된 현재 리비전을 포함해 업데이트하려는 리비전 범위를 지정합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/d52d70a0ef3ad494bcd545195f35eb93.png&quot; alt=&quot;Voila_Capture3401.png&quot; class=&quot;iePngFix&quot; width=&quot;660&quot; height=&quot;436&quot; style=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;예시로 제 사이트에는 XE Core 1.5.2를 사용 중이라 가정하면 리비전 1이 적용된 상태입니다. 이 리비전 1을 포함해 1.5.2.1을 병합한 리비전 3까지 선택했습니다. 선택한 목록에서 우클릭 메뉴 &apos;리비전 비교&apos;를 선택하면 &apos;바뀐 파일&apos; 대화창이 열립니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/6fa73ba3708cf928452bb94a14d3a08b.png&quot; alt=&quot;Voila_Capture3391.png&quot; class=&quot;iePngFix&quot; width=&quot;662&quot; height=&quot;613&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;파일 목록에서 &apos;ctrl + A&apos;를 눌러 전체 파일을 선택 후 우클릭 메뉴 &apos;선택된 것을 익스포트&apos;를 선택 후 파일을 저장할 경로를 지정하면 해당 폴더에 리버전 2, 3에서 변경된 파일만 추려 저장됩니다. 리비전 목록 중 가장 낮은 리비전(리비전 1)은 기준점이 되고 나머지 최근 리비전(2와 3)에서 변경된 파일이 추려지는 것이죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/1711e1edb05384f2d66a0d32a483c0f1.png&quot; alt=&quot;Voila_Capture3411.png&quot; class=&quot;iePngFix&quot; width=&quot;338&quot; height=&quot;357&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;document.controller.php 파일도 추려졌네요. 수정하지 않은 파일은 포함되지 않고 변경된 파일들만 추려졌습니다. 모든 파일을 올릴 필요 없이 이 파일들만 서버로 올리면 모두 최신 파일로 바뀌는 것이죠. 이번에 추려진 파일을 보니 12MB나 되는 3천 여개의 파일을 모두 올릴 필요 없이 500KB 정도의 25개 파일만 올리면 되겠네요. :)&lt;/p&gt;
&lt;h2&gt;충돌이 문제&lt;/h2&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/98cc69494862e228bdb0a5baad858521.png&quot; alt=&quot;Voila_Capture3332.png&quot; class=&quot;iePngFix&quot; width=&quot;492&quot; height=&quot;285&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;XE Core의 버그를 먼저 수정하여 적용하는 등 어느 부분을 수정했는데 XE Core에서도 같은 코드가 수정되는 상황이면 병합할 때 위와 같은 충돌 상황이 발생합니다. 많은 코드를 수정했거나, XE Core에서 코드가 많이 수정될수록 충돌 상황은 더욱 잦습니다.&lt;/p&gt;
&lt;p&gt;[충돌 상황 편집]버튼으로 코드를 직접 비교해가며 수정 사항을 반영할 수 있습니다. 하지만 개발자가 아니라면 쉽지 않은 일이죠. 충돌을 해결하기는 코드 수정 내역에 따라 익숙한 개발자도 어려움이 있습니다. 충돌 상황 해결이 익숙하지 않다면 [저장소 선호]버튼으로 자신이 수정한 내역을 모두 날리고 XE Core의 원본을 적용한 후에 다시 기존에 수정했던 이력을 보고 적용하는 방법이 있습니다. 코드 충돌을 해결하는 방법은 여러 문서가 있으니 검색해서 익힌 후 익숙해지면 [충돌 상황 편집]을 이용해보시길 바랍니다. 이 글에서는 생략하겠습니다(^^;).&lt;/p&gt;
&lt;h2&gt;마치며&lt;/h2&gt;
&lt;p&gt;이 글에서 살펴본 것은 아주 단순한 상황을 설정했습니다. 파일 하나를 아주 단순하게 수정해서 큰 장점을 느끼기 부족할 겁니다. 아주 단순한 예시로 설명했지만 복잡하게 느껴지는 과정이죠. 하지만 더 많은 코드를 수정해서 사용할수록 병합의 장점은 더 커집니다. 충돌이 발생하더라도 말이죠. 파일을 수정할 뿐 아니라 저장소가 따로 분리된 게시판(board) 모듈 등을 넣어두고 XE Core처럼 병합하여 관리할 수도 있습니다. 권장할 수는 없지만 개발중인 코드를 미리 적용해보는 것도 가능하죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/654/005/1f2d83d595c508f91ce220b5a83badd6.png&quot; alt=&quot;Voila_Capture342.png&quot; class=&quot;iePngFix&quot; width=&quot;809&quot; height=&quot;443&quot; style=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;병합을 통한 관리 과정만 설명하기 위한 글이므로 설명이 상세하지 않습니다. 웹에서 SVN의 기본적인 사용법을 익힌 후에 시도해보시면 매우 편리하다는 것을 느끼실 수 있을 겁니다. :)&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="XE"/>
            <category term="XE Core"/>
            <category term="svn"/>
            <category term="subversion"/>
            <category term="tsvn"/>
            <category term="tortoisesvn"/>
            <category term="병합"/>
            <category term="merge"/>
            
   </entry>
   <entry>
      <title>브랜치가 복잡하게 나뉘어진 SVN저장소를 Git으로 전환하기</title>
      <id>http://blog.xmz.kr/5376</id>
      <published>2012-03-06T16:06:38+09:00</published>
      <updated>2012-03-06T16:08:20+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/5376"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/5376#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;개인적인 용도로 XE의 오픈프로젝트로 개발되고 있는 Textyle의 SVN 저장소를 Git으로 복제하기로 했습니다. 근데 Textyle의 SVN 저장소에는 trunk와 branch에 textyle 모듈과 textylehub(텍스타일 허브. 메타 블로그) 모듈이 함께 들어 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/376/005/842c3e3e913258addd7faa1694fa0070.png&quot; style=&quot;width: 132px; height: 486px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-color: initial; &quot; alt=&quot;Textyle의 SVN 저장소 구조&quot; width=&quot;132&quot; height=&quot;486&quot; border=&quot;1&quot; margin=&quot;10&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[textyle의 SVN 저장소 구조 : &lt;a href=&quot;http://code.google.com/p/xe-textyle/source/browse/#svn%2Ftrunk%2Ftextyle&quot; target=&quot;_blank&quot;&gt;textyle 저장소 바로가기&lt;/a&gt;]&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;git-svn으로 SVN 저장소를 복제할 때 &apos;-s, --stdlayout&apos; 옵션으로 trunk, branches, tag 디렉토리를 가진 널리 통용되는 일반 적인 구조임을 설정합니다. 하지만 Textyle 저장소를 이 옵션을 사용하면 브랜치에는 &apos;textyle, textylehub&apos;라는 브랜치만 생성됩니다. branches/textyle.1.3.2 와 같이 하위 디렉토리를 브랜치로 가져와야 하는데 말이죠.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;branch, tag의 경로를 지정하여 가져오기&lt;div&gt;방법은 매우 간단합니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;brush:bash;gutter:false&quot;  title=&quot;&quot;&gt;$ git svn clone -T trunk/textyle -b branches/textyle -t tags/textyle {SVN URI}&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;-T, --trunk : trunk 디렉토리. Git의 master 브랜치로 전환 됨&lt;/p&gt;&lt;p&gt;-b, --branches : 브랜치 디렉토리. 여러 경로를 지정하여 각기 다른 경로의 브랜치를 가져올 수 있음&lt;/p&gt;&lt;p&gt;-t, --tags : 태그 디렉토리. 역시 여러 경로 지정 가능&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Textyle의 위 명령으로 Git으로 변환 한 결과는 아래 그림처럼 Git의 구조에 맞게 잘 가져왔습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://xmz.kr/files/attach/images/64/376/005/4a56247b7358c16f51ca1ea459bc4825.png&quot; alt=&quot;git-svn.textyle (Git).png&quot; class=&quot;iePngFix&quot; width=&quot;526&quot; height=&quot;333&quot; style=&quot;width: 526px; height: 333px; border-style: solid; border-width:1px;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>[2012년 9주차] XE 오픈 프로젝트 현황</title>
      <id>http://blog.xmz.kr/5019</id>
      <published>2012-03-03T18:33:44+09:00</published>
      <updated>2012-11-04T09:29:29+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/5019"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/5019#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;q4&quot;&gt;&lt;p&gt;XE Core 프로젝트와 Board, Textyle 모듈의 변경 내역입니다. XE Core의 변경 내역은 2월 25일부터 3월 3일까지의 2012년 9주차 변경 내역입니다.&lt;/p&gt;&lt;p&gt;XE Core 1.5.1.8 버전 이후의 변경 내역은 &lt;a target=&quot;_blank&quot; href=&quot;http://www.xpressengine.com/20562187&quot;&gt;[2012년 7~8주차] XE Core 주간 변경 내역&lt;/a&gt;을 참고해주세요.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;XE Core&lt;/h2&gt;&lt;div&gt;아래 이미지는 코드가 얼마나 수정된 지를 &amp;nbsp;나타내는 이미지 입니다.&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/019/005/89b4e42485a249fb34731cc097e44fe2.png&quot; alt=&quot;Impact · xemagazine_xe-core.png&quot; class=&quot;iePngFix&quot; width=&quot;918&quot; height=&quot;433&quot; style=&quot;width: 918px; height: 433px;          vertical-align: middle; border-style: solid; border-width:1px;&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;XE Core 1.5.2 버전 알파 테스트&lt;/h3&gt;&lt;p&gt;&lt;strike&gt;3월 7일(수요일)&lt;/strike&gt;3월 14일(수요일)에 배포 예정인 XE Core 1.5.2 버전의 알파 테스트가 공지되었습니다. 이번 알파 테스트는&amp;nbsp;&lt;strike&gt;3월 6일까지 4일 간 진행되는 짧은 일정이지만&lt;/strike&gt;(3월 11까지로 연장) 많은 버그 수정이 이뤄진 버전이고 주목하는 이들이 많은 만큼 원활한 테스트가 진행되리라 기대합니다.&lt;/p&gt;&lt;p&gt;알파 테스트 공지는 테스터 그룹에게 공지되었으며, 테스터 그룹은 svn 코드 저장소의 1.5.0 브랜치에서 코드를 내려받아 테스트에 참여할 수 있습니다.&lt;/p&gt;&lt;p&gt;테스트 과정에서 발견한 문제에 따라 아래 이슈 처리 내역이 변동 될 수 있습니다.&lt;/p&gt;&lt;h3&gt;결함 수정 내역&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=850&quot;&gt;850&lt;/a&gt; 큐브리드에서 관리페이지의 즐겨찾기가 동작하지 않던 문제 수정 [체리필터]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1175&quot;&gt;1175&lt;/a&gt; 첨부파일 목록 가져올 때 매개변수가 잘못 지정된 문제 수정 [체리필터,패치 제공 &lt;b&gt;&lt;/b&gt;is4975@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1172&quot;&gt;1172&lt;/a&gt; IE8 이하에서 회원, 문서, 댓글 목록 등에서 닉네임 등이 줄바꿈 되어 보이는 문제 수정 [정찬명]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1548&quot;&gt;1548&lt;/a&gt; 쿼리 캐시파일의 syntax error 수정 [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1455&quot;&gt;1455&lt;/a&gt; 신고된 댓글 목록의 링크 누락 수정 [SOL, 패치제공 divesoap@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1192&quot;&gt;1192&lt;/a&gt; 모듈 삭제 시 문서의 확장 변수 설정 제거하도록 수정 [체리필터]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1258&quot;&gt;1258&lt;/a&gt; 통합 검색 설정 및 스킨 관리의 폼 요소 조정 및 레이아웃 깨짐 수정 [정찬명]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1187&quot;&gt;1187&lt;/a&gt; 게시물, 댓글에서 줄 바꿈 하지 않고 레이아웃을 넘어가는 문제 수정 [정찬명]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1207&quot;&gt;1207&lt;/a&gt; &lt;b&gt;댓글 작성 시 이메일과 홈페이지를 입력하라는 메시지 표시 문제 수정&lt;/b&gt; [체리필터, 패치제공 misol.kr@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1351&quot;&gt;1351&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1373&quot;&gt;1373&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=625&quot;&gt;625&lt;/a&gt; Cpatcha 애드온에 룰셋 사용 시, mid가 지정되지 않은 페이지에서의 문제 수정 [똥똥]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=655&quot;&gt;655&lt;/a&gt; 트랙백 발송 시 문서의 내용이 없으면 발송하지 않도록 수정(발송 실패 오류 회피) [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1246&quot;&gt;1246&lt;/a&gt; 통검검색 시 검색 대상이 지정되지 않는 문제 수정 [체리필터, 패치제공 misol.kr@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1036&quot;&gt;1036&lt;/a&gt; 이미지 에디터 컴포넌트의 정렬이 반영되지 않는 문제 수정 [똥똥]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1038&quot;&gt;1038&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1554&quot;&gt;1554&lt;/a&gt; &lt;b&gt;외부페이지에서 링크 경로가 잘못 표시되는 문제 수정&lt;/b&gt; [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=778&quot;&gt;778&lt;/a&gt; skin.xml의 group 설정 시 설정폼이 깨지는 문제 수정 [헤슨]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1495&quot;&gt;1495&lt;/a&gt; &lt;b&gt;이메일 로그인 시 로그인 유지 기능이 동작하지 않던 문제 수정&lt;/b&gt; [똥똥]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1250&quot;&gt;1250&lt;/a&gt; 다중 항목형 확장변수의 기본 값 지정 시 공백문자로 인한 문제 수정 [체리필터]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1259&quot;&gt;1259&lt;/a&gt; 회원 설정 및 그룹 설정에서 변경 시 수정 완료 메시지 출력하도록 수정 [헤슨]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1028&quot;&gt;1028&lt;/a&gt; 페이지 모듈 설정에서 다국어 입력 문제 수정 [똥똥]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1523&quot;&gt;1523&lt;/a&gt; 문서 수정 시 확장변수 입력 값을 빈 값으로 저장하지 못하는 문제 수정 [체리필터. 패치제공 daehyeok@]&lt;/li&gt;
&lt;li&gt;[1.5] &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/source/detail?r=10264&quot;&gt;r10264&lt;/a&gt; 에디터 컴포넌트 설정 변경 후 페이지 이동 문제 수정 [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=628&quot;&gt;628&lt;/a&gt; 레이아웃 설정에서 라디오 버튼 타입의 선택했던 항목이 표시되지 않는 문제 수정 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=970&quot;&gt;970&lt;/a&gt; &lt;b&gt;포인트 초기화 시 포인트가 부여되지 않는 회원이 회원포인트 목록에 나타나지 않는 문제 수정&lt;/b&gt; [헤슨]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=731&quot;&gt;731&lt;/a&gt; &lt;b&gt;1.4.x에서 1.5.x로 업데이트 시 db.config.php 변환 시 발생할 수 있는 문제 수정&lt;/b&gt; [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1383&quot;&gt;1383&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1382&quot;&gt;1382&lt;/a&gt; &lt;b&gt;제거된 CSS 파일로 인해 페이지 로딩이 지연되는 문제 수정&lt;/b&gt; [정찬명, 체리필터. 패치제공 misol.kr@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1543&quot;&gt;1543&lt;/a&gt; xe_official 레이아웃에서 logo 이미지 대체 문자 입력 설정 추가 [정찬명]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1562&quot;&gt;1562&lt;/a&gt; 비어있는 파라메터 전송 시 Context 클래스의 오류 수정 [SOL. 패치제공 dowon2308@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1137&quot;&gt;1137&lt;/a&gt; 쉬운 설치페이지에서 FTP 설정 페이지 링크 오류 수정 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1513&quot;&gt;1513&lt;/a&gt; &lt;b&gt;익명으로 작성한 글/댓글 출력 시 주석 정보로 회원을 추정할 수 있는 문제 수정&lt;/b&gt; [체리필터. 패치제공 daehyeok@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1535&quot;&gt;1535&lt;/a&gt; &lt;b&gt;마이그레이션 시 첨부파일의 확장자가 제거되는 문제 수정&lt;/b&gt; [SOL. 패치제공 sejin7940@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1586&quot;&gt;1586&lt;/a&gt; 위젯 코드에 에디터 컴포넌트 속성이 추가되어 발생하는 위젯 생성 문제 수정 [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=781&quot;&gt;781&lt;/a&gt; xe_solid_enterprise layout 회원 정보 스킨에서 패스워드 변경 불가 문제 수정 [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1487&quot;&gt;1487&lt;/a&gt; layouts 디렉토리가 비어 있는 경우 관리페이지 오류 수정 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1533&quot;&gt;1533&lt;/a&gt; 확장변수 순서 변경이 제대로 처리되지 않던 문제 수정 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1023&quot;&gt;1023&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1429&quot;&gt;1429&lt;/a&gt; 일부 기능에서 페이징 문제 수정(refer : &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/source/detail?r=10299&quot;&gt;r10299&lt;/a&gt;) [corina.udrescu@]&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;개선 &amp;amp; 변경 내역&lt;/h3&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1227&quot;&gt;1227&lt;/a&gt; &lt;b&gt;모바일 브라우저 감지 확대&lt;/b&gt; [SOL, 패치 제공 misol.kr@]&lt;/li&gt;&lt;ul&gt;&lt;li&gt;다음과 같이 더 많은 모바일 기기에서 자동으로 모바일 페이지를 보여주게 됩니다.&lt;/li&gt;
&lt;li&gt;UA목록 : &apos;iPod&apos;,&apos;iPhone&apos;,&apos;iPad&apos;,&apos;Android&apos;,&apos;BlackBerry&apos;,&apos;SymbianOS&apos;,&apos;Bada&apos;,&apos;Kindle&apos;,&apos;Wii&apos;,&apos;SCH-&apos;,&apos;SPH-&apos;,&apos;CANU-&apos;,&apos;Windows Phone&apos;,&apos;Windows CE&apos;,&apos;POLARIS&apos;,&apos;Palm&apos;,&apos;webOS&apos;,&apos;Dorothy Browser&apos;,&apos;IEMobile&apos;,&apos;MobileSafari&apos;,&apos;Opera Mobi&apos;,&apos;Opera Mini&apos;,&apos;MobileExplorer&apos;,&apos;Minimo&apos;,&apos;AvantGo&apos;,&apos;NetFront&apos;,&apos;Googlebot-Mobile&apos;,&apos;Nokia&apos;,&apos;LGPlayer&apos;,&apos;SonyEricsson&apos;,&apos;HTC&apos;,&apos;hp-tablet&apos;,&apos;SKT&apos;,&apos;lgtelecom&apos;,&apos;Vodafone&apos;&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1527&quot;&gt;1527&lt;/a&gt; &lt;b&gt;문서, 모듈 복사 시 확장변수를 함께 복사 되도록 개선&lt;/b&gt; [체리필터, 패치 제공 daehyeok@]&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;모듈 복사 시 확장변수 설정도 복사 됩니다.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1541&quot;&gt;1541&lt;/a&gt; 확장 변수의 날짜 입력 값을 지우는 버튼 추가 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1542&quot;&gt;1542&lt;/a&gt; 제거된 .iePngFix CSS 클래스를 사용하던 코드를 제거 [체리필터]&lt;/li&gt;&lt;ul&gt;&lt;li&gt;2011년 8월 iePngFix 클래스가 이미 제거되었습니다&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;[1.5]Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1003&quot;&gt;1003&lt;/a&gt; &lt;b&gt;쪽지 알림 메시지를 좀 더 명확하게 보이도록 개선&lt;/b&gt; [정찬명]&lt;/li&gt;
&lt;li&gt;[1.5]Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1175&quot;&gt;1175&lt;/a&gt; 첨부파일 목록 가져올 때 것을 정렬 기준을 지정할 수 있도록 개선 [체리필터, 패치 제공 &lt;b&gt;&lt;/b&gt;is4975@]&lt;/li&gt;&lt;ul&gt;&lt;li&gt;documentItem::getUploadedFiles($sortIndex = &apos;file_srl&apos;)&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1547&quot;&gt;1547&lt;/a&gt; zh-TW번역 추가 [헤슨, 패치제공 royallin11]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=737&quot;&gt;737&lt;/a&gt; 자기 자신에게 쪽지 발송할 경우 메시지 변경 [헤슨, 패치 제공 aa3753kr]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1549&quot;&gt;1549&lt;/a&gt; Memcache의 truncate 명령 활성화 [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1553&quot;&gt;1553&lt;/a&gt; 댓글 페이징 [document_srl]_cpage 변수 추가(refer : board Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=9&quot;&gt;9&lt;/a&gt;) [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1275&quot;&gt;1275&lt;/a&gt; 파일첨부 폼의 너비를 고려하여 허용확장자 안내 메시지를 짧게 변경 [정찬명]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1165&quot;&gt;1165&lt;/a&gt; 파일 다운로드 트리거에 upload_target_type 컬럼 전달하도록 개선 [체리필터. 패치제공 dowon2308@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1557&quot;&gt;1557&lt;/a&gt; Context::set()에서 값이 NULL이거나 &apos;&apos;이면 해당 키(변수)를 제거하도록 수정 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1520&quot;&gt;1520&lt;/a&gt; 중복된 언어 변수 제거(ratio) [똥똥]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1558&quot;&gt;1558&lt;/a&gt; 바르지 않은 홈페이지 주소는 제거하여 저장 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=908&quot;&gt;908&lt;/a&gt; 레벨별로 해당하는 그룹을 묶어서 표시하도록 수정(이슈 관련 추후 개선 예정) [똥똥]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1561&quot;&gt;1561&lt;/a&gt; 모듈 설정 시 테마 설정에 영향을 받지 않도록 스킨을 고정하는 로직 추가 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1567&quot;&gt;1567&lt;/a&gt; PHP4에서 지원하지 않는 함수 제거. 1.5.1.10 으로 배포되었음 [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1576&quot;&gt;1576&lt;/a&gt; 문서가 작성된 mid와 다른 mid를 지정하여 접근 시 해당 모듈로 이동하도록 수정 [SOL]&lt;/li&gt;
&lt;li&gt;[1.5] &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/source/detail?r=10281&quot;&gt;r10281&lt;/a&gt; FTP 설정에서 디렉토리 목록을 읽을 수 없을 때 메시지 출력 [체리필터]&lt;/li&gt;
&lt;li&gt;[&lt;b&gt;1.6&lt;/b&gt;] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1588&quot;&gt;1588&lt;/a&gt; 소셜 로그인 기능 추가(페이스북, 구글 플러스, 미투데이, 트위터) [ddan.dragan@]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1418&quot;&gt;1418&lt;/a&gt; 컬러 피커 플러그인 변경 [난다날아]&lt;/li&gt;
&lt;li&gt;[1.5] Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1348&quot;&gt;1348&lt;/a&gt; &lt;b&gt;컨텐츠가 출력되지 않는 위젯의 여백이 없어 수정 어려움이 있는 문제 개선&lt;/b&gt; [정찬명]&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;게시판 모듈&lt;/h2&gt;&lt;/div&gt;&lt;p&gt;Board 1.4.3 버전 이후의 변경 내역입니다.&lt;/p&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/source/detail?r=182&quot;&gt;r182&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/source/detail?r=179&quot;&gt;r179&lt;/a&gt;, Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=25&quot;&gt;25&lt;/a&gt;(&lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/source/detail?r=178&quot;&gt;r178&lt;/a&gt;), &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/source/detail?r=164&quot;&gt;r164&lt;/a&gt; HTML/CSS 코드 정리 및 개선 [정찬명]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=73&quot;&gt;73&lt;/a&gt; xe_v3_default, xe_v3_gallery 스킨의 목록에서 제목 컬럼 크기를 확장하여 보기 좋도록 수정 [정찬명]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=26&quot;&gt;26&lt;/a&gt; 댓글 페이징에서 depth 표시 개선 [정찬명]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=83&quot;&gt;83&lt;/a&gt; 테마 설정과 별도로 스킨을 고정 할 수 있도록 설정 추가(refer : XE Core Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1561&quot;&gt;1561&lt;/a&gt;) [난다날아]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=81&quot;&gt;81&lt;/a&gt; &lt;b&gt;블로그/방명록 형으로 펼쳐 보일 때 일부 정보 및 댓글 출력 문제 수정&lt;/b&gt; [난다날아]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=80&quot;&gt;80&lt;/a&gt; remove call-time pass-by-reference [난다날아]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=76&quot;&gt;76&lt;/a&gt; xe_officlal 제거된 blog 타입 관련 코드 제거 [난다날아]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=9&quot;&gt;9&lt;/a&gt; &lt;b&gt;블로그/방명록 형태에서 댓글 페이지 문제 수정&lt;/b&gt; [난다날아]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=58&quot;&gt;58&lt;/a&gt; 댓글을 허용하지 않은 글의 &apos;댓글의 댓글&apos;도 차단 하도록 수정 [난다날아]&lt;/li&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/source/detail?r=169&quot;&gt;r169&lt;/a&gt; 확장변수 정렬 UI 추가&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=43&quot;&gt;43&lt;/a&gt; &lt;b&gt;블로그/방명록 타입에서 댓글을 보여주지 못할 수 있는 문제 수정&lt;/b&gt; [난다날아]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=6&quot;&gt;6&lt;/a&gt; 글 목록에 &apos;비추천 수&apos;를 표시할 수 있도록 추가 [난다날아]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=22&quot;&gt;22&lt;/a&gt; &lt;b&gt;게시판 목록에서 &apos;굵게, 제목 색상&apos; 설정이 반영되지 않는 문제 수정&lt;/b&gt; [난다날아]&lt;/li&gt;
&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-board/issues/detail?id=68&quot;&gt;68&lt;/a&gt; &lt;b&gt;확장변수 검색이 안되는 문제 수정&lt;/b&gt;(refer : XE Core Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1288&quot;&gt;1288&lt;/a&gt;) [난다날아]&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h2&gt;텍스타일&lt;/h2&gt;&lt;p&gt;Textyle 1.3.4.2 버전 이후의 변경 내역입니다.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Issue &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/xe-textyle/issues/detail?id=33&quot;&gt;33&lt;/a&gt; &lt;b&gt;텍스타일 생성 시 관리자 지정 시 문제 수정&lt;/b&gt; [ddan.dragan@]&lt;/li&gt;
&lt;li&gt;r608 ~ r611 HTML/CSS 코드 정리 및 개선 [정찬명]&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;위키 모듈&lt;/h2&gt;&lt;div style=&quot;font-size: 13px; &quot;&gt;Wiki 모듈도 1.3.x 버전이 활발히 개발되고 있습니다. 이슈 처리 위주가 아닌 추가 개발이 활발하게 이루어지고 있으므로 따로 변경 내역을 적기에 무리가 있어 열거하지는 않습니다. 상세 내역을 살피지 못했으나 이슈 내역을 보면 아래와 같은 기능 추가 및 개선이 이루어질 것으로 보입니다.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;사이바에 문서 트리 출력&lt;/li&gt;&lt;li&gt;모바일 뷰 지원&lt;/li&gt;&lt;li&gt;MediaWiki와 Google Code 위키 문법 지원&lt;/li&gt;&lt;li&gt;파일 기반의 cache 기능&lt;/li&gt;&lt;li&gt;외 다수&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;ps. 주차 계산은 편의상 토요일을 기준으로 하겠습니다.&lt;/p&gt;&lt;p&gt;ps1. 1주일 간의 변경 사항이 무척 많습니다.&lt;/p&gt;&lt;p&gt;ps2. 힘들어서 이슈 트래커의 통계는 정리하지 못했습니다.&lt;/p&gt;&lt;p&gt;


&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="코어"/>
            <category term="Core"/>
            <category term="XE현황"/>
            <category term="이슈"/>
            <category term="마일스톤"/>
            <category term="XE프로젝트"/>
            <category term="XE1.5"/>
            <category term="xe-core"/>
            <category term="xe-board"/>
            <category term="xe-textyle"/>
            
   </entry>
   <entry>
      <title>[2012년 7~8주차] XE Core 주간 변경 내역</title>
      <id>http://blog.xmz.kr/4856</id>
      <published>2012-02-26T02:53:06+09:00</published>
      <updated>2012-02-27T01:09:02+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/4856"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/4856#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;q4&quot;&gt;&lt;p&gt;XE Core의 변화를 이슈 처리 내역과 커밋 로그, 코드의 변경 이력으로 살펴봅니다. 수정된 문제와 추가된 기능 등의 변화를 정리해보고자 합니다. 첫 포스팅으로 2012년 7~8주차(2월 13~24일)의 이력을 살펴보겠습니다.&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;이슈 트래커 현황&lt;/h2&gt;&lt;p&gt;2012년 8주차까지 총 1,527건의 이슈가 등록되어 있으며, 완료 또는 예정된 이슈의 비율은 42.4%입니다. 현황은 수시로 변경되며 이슈 수와 커밋 수로 많은 것을 판단하기에 부족하므로 아래의 간략한 현황만 살펴봤습니다.&lt;/p&gt;&lt;p&gt;이슈 상태별 현황 : &lt;a href=&quot;http://goo.gl/NL7b7&quot; target=&quot;_blank&quot;&gt;http://goo.gl/NL7b7&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; &quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/856/004/f226c3770dea47f0208eb2e654f30de6.png&quot; alt=&quot;XE Core 이슈 현황-2012년 8주차까지.png&quot; class=&quot;iePngFix&quot; width=&quot;774&quot; height=&quot;479&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/p&gt;



&lt;table style=&quot;width: 80%; margin:0 auto; border:1px solid #666; border-collapse: collapse; text-align:center;&quot; cellspacing=&quot;1&quot; border=&quot;1&quot;&gt;
&lt;caption&gt;2012년 8주차까지 전체 이슈의 상태별 현황&lt;/caption&gt;
&lt;tbody&gt;
&lt;tr&gt;
	&lt;th rowspan=&quot;2&quot;&gt;합계&lt;/th&gt;
	&lt;th rowspan=&quot;2&quot;&gt;New&lt;/th&gt;
	&lt;th colspan=&quot;2&quot;&gt;Accepted &amp;amp; Fixed&lt;/th&gt;
	&lt;th colspan=&quot;4&quot;&gt;Other&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;th&gt;Accepted&lt;/th&gt;
	&lt;th&gt;Fixed&lt;/th&gt;
	&lt;th&gt;Invalid&lt;/th&gt;
	&lt;th&gt;Duplicate&lt;/th&gt;
	&lt;th&gt;WontFix&lt;/th&gt;
	&lt;th&gt;Other&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;th&gt;1,527&lt;/th&gt;
	&lt;td&gt;263&lt;/td&gt;
	&lt;td&gt;130&lt;/td&gt;
	&lt;td&gt;518&lt;/td&gt;
	&lt;td&gt;428&lt;/td&gt;
	&lt;td&gt;142&lt;/td&gt;
	&lt;td&gt;36&lt;/td&gt;
	&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;&lt;/td&gt;
	&lt;td&gt;17.3%&lt;/td&gt;
	&lt;td colspan=&quot;2&quot;&gt;42.4%&lt;/td&gt;
	&lt;td colspan=&quot;4&quot;&gt;40.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;2012년 7~8주차 이슈 현황&lt;/h2&gt;&lt;p&gt;지난 2주간 등록된 이슈는 78건으로 전체 이슈 중 5.1%를 차지합니다. 이 중 아직 담당자가 지정되지 않은 이슈는 14건 입니다.&lt;/p&gt;&lt;p&gt;7, 8주차에 작성된 이슈 현황 : &lt;a href=&quot;http://goo.gl/zI4g8&quot; target=&quot;_blank&quot;&gt;http://goo.gl/zI4g8&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;8주차까지 열려있는 이슈는 모두 404건 입니다. 이 중 담당자가 지정되지 않은 이슈는 69건이며 351건이 마일스톤이 할당되지 않은 검토 중인 이슈입니다. &lt;a href=&quot;http://www.xpressengine.com/20536897&quot; target=&quot;_blank&quot;&gt;담당자를 지정하는 이슈 정리&lt;/a&gt;를 거쳤지만 실제 문제가 고쳐진 것이 많음에도 아직도 많은 수가 남아 있습니다.&lt;/p&gt;&lt;p&gt;담당자 지정 현황 :&amp;nbsp;&lt;a href=&quot;http://goo.gl/tDLAA&quot; target=&quot;_blank&quot;&gt;http://goo.gl/tDLAA&lt;/a&gt;&lt;/p&gt;&lt;p&gt;마일스톤 현황 :&amp;nbsp;&lt;a href=&quot;http://goo.gl/6tYH1&quot; target=&quot;_blank&quot;&gt;http://goo.gl/6tYH1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;


&lt;table style=&quot;width: 80%; margin:0 auto; border:1px solid #666; border-collapse: collapse; text-align:center;&quot; cellspacing=&quot;1&quot; border=&quot;1&quot;&gt;
&lt;caption&gt;2012년 8주차 - 열려있는 이슈의 마일스톤 할당 현황&lt;/caption&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;
	&lt;th&gt;합계&lt;/th&gt;
	&lt;th&gt;v.1.5&lt;/th&gt;
	&lt;th&gt;v.1.6&lt;/th&gt;
	&lt;th&gt;NeoSky&lt;/th&gt;
	&lt;th&gt;None&lt;/th&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;
	&lt;th&gt;404&lt;/th&gt;
	&lt;td&gt;4&lt;/td&gt;
	&lt;td&gt;27&lt;/td&gt;
	&lt;td&gt;7&lt;/td&gt;
	&lt;td&gt;351&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;하지만 XE개발팀의 2012년 잠정계획에서 상반기에&amp;nbsp;&lt;a href=&quot;http://www.xpressengine.com/blog/20132856&quot; target=&quot;_blank&quot;&gt;XE 코어 버그를 400개 미만으로 줄이려는 목표&lt;/a&gt;를&amp;nbsp;달성했습니다. 꾸준히 이슈가 추가되고 있기 때문에 계속해서 XE개발팀은 바쁜 나날들을 보내야 할 것 같네요.&lt;/p&gt;&lt;p&gt;이슈 타입별 현황 :&amp;nbsp;&lt;a href=&quot;http://goo.gl/eFknT&quot; target=&quot;_blank&quot;&gt;http://goo.gl/eFknT&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;

&lt;table style=&quot;width: 80%; margin:0 auto; border:1px solid #666; border-collapse: collapse; text-align:center;&quot; cellspacing=&quot;1&quot; border=&quot;1&quot;&gt;
&lt;caption&gt;2012년 8주차 - 타입별 이슈 현황&lt;/caption&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;
	&lt;th&gt;합계&lt;/th&gt;
	&lt;th&gt;Defect&lt;/th&gt;
	&lt;th&gt;Patch&lt;/th&gt;
	&lt;th&gt;Enhancement&lt;/th&gt;
	&lt;th&gt;Other&lt;/th&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;
	&lt;th&gt;404&lt;/th&gt;
	&lt;td&gt;236&lt;/td&gt;
	&lt;td&gt;29&lt;/td&gt;
	&lt;td&gt;138&lt;/td&gt;
	&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;2012년 7~8주차에 해결된 이슈(&lt;a href=&quot;http://goo.gl/XFsUc&quot; target=&quot;_blank&quot;&gt;http://goo.gl/XFsUc&lt;/a&gt;)&lt;/h3&gt;&lt;p&gt;2주간 완료된 이슈는 77건입니다. 이슈 정리에 문제가 있어 Invalid 또는 Duplicate로 변경되어야 할 이슈가 Fixed로 변경된 항목이 더러 보입니다. 종류별로 정리하여 살펴보겠습니다.&lt;/p&gt;

&lt;h4&gt;고쳐진 버그&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=804&quot; target=&quot;_blank&quot;&gt;Issue 804&lt;/a&gt; &lt;b&gt;에디터에서 &apos;본문 삽입&apos;시 같은 이미지가 중복으로 삽입되는 문제 수정&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;XpressEditor에 포함된 자바스크립트 코드의 압축본에 문제가 있었음&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1106&quot; target=&quot;_blank&quot;&gt;Issue 1106&lt;/a&gt; &lt;b&gt;content 위젯에서 일부 특수 문자가 깨져 나오던 문제 수정&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;XSS 방지로 적용된 부분이었으나 따옴표 및 제목 색상 표현에 영향을 주었음&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1505&quot; target=&quot;_blank&quot;&gt;Issue 1505&lt;/a&gt;&amp;nbsp;&lt;b&gt;IP가 자주 변경되는 환경(모바일 등)에서 자동로그인이 풀리는 문제 개선&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;IP 대신 브라우저 UA로 대체&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1151&quot; target=&quot;_blank&quot;&gt;Issue 1151&lt;/a&gt; &lt;b&gt;XpressEditor에서 글자, 글자 배경 색상 지정 시 스크립트 오류 수정&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;태그가 나뉘는 부분을 선택하여 적용 시 문제 발생 : &lt;a href=&quot;http://www.xpressengine.com/20537595&quot; target=&quot;_blank&quot;&gt;http://www.xpressengine.com/20537595&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1283&quot; target=&quot;_blank&quot;&gt;Issue 1283&lt;/a&gt; &lt;b&gt;IE8이 다운되던 문제 수정&lt;/b&gt; [중요 정보 제공&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; &quot;&gt;2sis@&lt;/span&gt;]&lt;/li&gt;&lt;ul&gt;&lt;li&gt;body 요소에 배경이미지를 설정한 경우 jQuery등과 충돌하여 IE8에서 발생한 문제&lt;/li&gt;&lt;li&gt;참조 : &lt;a href=&quot;http://me2day.net/naradesign/2012/02/21/pyzxajf-yg&quot; target=&quot;_blank&quot;&gt;http://me2day.net/naradesign/2012/02/21/pyzxajf-yg&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1460&quot; target=&quot;_blank&quot;&gt;Issue 1460&lt;/a&gt; &lt;b&gt;쪽지 전송 시 내용이 길면 실패하던 문제 수정&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;폼을 get으로 전송하고 있었음&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1253&quot; target=&quot;_blank&quot;&gt;Issue 1253&lt;/a&gt; &lt;b&gt;글 등록 지연 시 등록 버튼을 계속 누르면 글이 중복 등록되는 문제 수정&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Ajax 요청을 중복으로 요청하지 않도록 수정 되었으므로 모든 Ajax 요청에 적용 됨&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1235&quot; target=&quot;_blank&quot;&gt;Issue 1235&lt;/a&gt; &lt;b&gt;회원정보 보기에서 이메일 주소의 host를 감추도록 수정&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1094&quot; target=&quot;_blank&quot;&gt;Issue 1094&lt;/a&gt; &lt;b&gt;IE에서 위젯 수정 시 기존 설정 값을 가져오지 못하는 문제 수정&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1294&quot; target=&quot;_blank&quot;&gt;Issue 1294&lt;/a&gt; &lt;b&gt;에디터 추가 설정에서 사용권한 등의 설정이 제대로 저장되지 않는 문제 수정&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/source/detail?r=10164&quot; target=&quot;_blank&quot;&gt;r10164&lt;/a&gt; &lt;b&gt;회원가입 시 &apos;서명&apos;을 입력하지 못해 가입 진행이 안되는 문제 수정&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;서명은 가입 후 정보수정에서만 변경 가능&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1406&quot; target=&quot;_blank&quot;&gt;Issue 1406&lt;/a&gt; &lt;b&gt;에디터 컴포넌트 목록에서 컴포넌트 설정 링크가 빠져있던 문제 수정&lt;/b&gt; [패치 제공 misol.kr@]&lt;/li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=967&quot; target=&quot;_blank&quot;&gt;Issue 967&lt;/a&gt; 회원가입 설정에서 &apos;가입 후 이동 URL&apos;이 잘못 처리되던 문제 수정&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1095&quot; target=&quot;_blank&quot;&gt;Issue 1095&lt;/a&gt; 관리페이지에서 회원정보에서 정보의 항목 표기 문제 수정(언어 변수 문제)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1223&quot; target=&quot;_blank&quot;&gt;Issue 1223&lt;/a&gt; content 위젯에서 페이지 전환이 잘못 되던 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=821&quot; target=&quot;_blank&quot;&gt;Issue 821&lt;/a&gt; 페이지 모듈의 페이지 설정 버튼들이 잘못 정렬되던 문제 수정&lt;/li&gt;&lt;ul&gt;&lt;li&gt;관리자 페이지에서 &apos;페이지 수정&apos;링크를 새 창으로 열리도록 변경&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1262&quot; target=&quot;_blank&quot;&gt;Issue 1262&lt;/a&gt; 관리페이지 회원 목록에서 &apos;가입일, 마지막 로그인&apos; 정렬이 토글 되지 않던 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1336&quot; target=&quot;_blank&quot;&gt;Issue 1336&lt;/a&gt; fileModel::getFile()에서 여러 파일의 정보를 가져오는 경우 오류 수정&lt;/li&gt;&lt;ul&gt;&lt;li&gt;단일 파일의 정보를 가져올 듯한 함수명과 달리 한번에 여러 파일의 정보를 가져올 수 있음. 이 때 문제 발생&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1350&quot; target=&quot;_blank&quot;&gt;Issue 1350&lt;/a&gt; 게시판 확장변수에 &apos;날짜&apos;입력을 위한 달력 출력 시 에디터에 달력이 가려지는 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1369&quot; target=&quot;_blank&quot;&gt;Issue 1369&lt;/a&gt; article 타입의 페이지 모듈에서 &apos;모듈 관리자&apos;의 권한 체크 오류 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1502&quot; target=&quot;_blank&quot;&gt;Issue 1502&lt;/a&gt; MetaWeblog를 통한 원격 등록 시 문서에 삽입한 이미지가 표시되지 않던 문제 수정&lt;/li&gt;&lt;ul&gt;&lt;li&gt;한글 파일명 포맷이 변경되어 영향이 있었던 듯&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1469&quot; target=&quot;_blank&quot;&gt;Issue 1469&lt;/a&gt; 쪽지함에서 전체 선택이 안되는 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1456&quot; target=&quot;_blank&quot;&gt;Issue 1456&lt;/a&gt; 게시판 설정 등에서 설정 폼이 영역 밖으로 넘어가는 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1361&quot; target=&quot;_blank&quot;&gt;Issue 1361&lt;/a&gt; RSS/ATOM feed에서 XE 버전을 출력하지 않도록 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1368&quot; target=&quot;_blank&quot;&gt;Issue 1368&lt;/a&gt; 동일 세션에서 글 작성/수정 시 발생하는 문제 수정 [패치 제공 misol.kr@]&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1407&quot; target=&quot;_blank&quot;&gt;Issue 1407&lt;/a&gt; 관리페이지에서 설치된 위젯 삭제 링크가 잘못된 문제 수정 [패치 제공 misol.kr@]&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/source/detail?r=10175&quot; target=&quot;_blank&quot;&gt;r10175&lt;/a&gt; 쉬운설치에서 ftp 클래스 include 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1412&quot; target=&quot;_blank&quot;&gt;Issue 1412&lt;/a&gt; &apos;메일 입니다&apos; -&amp;gt; &apos;메일입니다&apos; 문장 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1422&quot; target=&quot;_blank&quot;&gt;Issue 1422&lt;/a&gt; moduleModel::getModuleInfoByModuleSrl()에서 만들어진 Object Cache가 비워지지 않는 문제 수정&lt;/li&gt;&lt;ul&gt;&lt;li&gt;cache key를 변경하여 해결&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1041&quot; target=&quot;_blank&quot;&gt;Issue 1041&lt;/a&gt; 관리페이지 &apos;즐겨찾기&apos; 추가 시 접근한 페이지의 파라메터까지 저장되는 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1150&quot; target=&quot;_blank&quot;&gt;Issue 1150&lt;/a&gt; 카테고리가 선택 된 상태에서 잘못 된 페이징 문제 수정 [패치 제공 is4975@]&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/source/detail?r=10184&quot; target=&quot;_blank&quot;&gt;r10184&lt;/a&gt; 관리자가 문서 목록을 볼 때 비밀글, 임시글 리스팅 문제 수정 [패치 제공 is4975@]&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1284&quot; target=&quot;_blank&quot;&gt;Issue 1284&lt;/a&gt; HTML attribute에 dash(-)가 포함 된 경우 cond가 동작하지 않는 문제 수정&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;lt;img data-key=&quot;...&quot;|cond=&quot;...&quot; /&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1516&quot; target=&quot;_blank&quot;&gt;Issue 1516&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1157&quot; target=&quot;_blank&quot;&gt;Issue 1157&lt;/a&gt; Windows 환경에서 애드온 캐시 파일의 경로 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/source/detail?r=10133&quot; target=&quot;_blank&quot;&gt;r10133&lt;/a&gt; 회원정보 보기에서 XSS 위험 요소 차단&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/source/detail?r=10135&quot; target=&quot;_blank&quot;&gt;r10135&lt;/a&gt; 1337 CSS 파일 로드 시 media 속성의 기본 값을 &apos;all&apos;로 설정 [패치 제공 emerald.zhangj@]&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1097&quot; target=&quot;_blank&quot;&gt;Issue 1097&lt;/a&gt; 관리페이지 설문목록에서 종료일이 잘못 표시되는 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1475&quot; target=&quot;_blank&quot;&gt;Issue 1475&lt;/a&gt; 확장변수 미입력 시 오류 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1401&quot; target=&quot;_blank&quot;&gt;Issue 1401&lt;/a&gt; 자동 추가되는 input 태그에 태그 닫기 추가 [패치 제공 misol.kr@]&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=954&quot; target=&quot;_blank&quot;&gt;Issue 954&lt;/a&gt; 커뮤니케이션 애드온이 활성화 하지 않아도 쪽지 목록에 접근할 수 있는 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1010&quot; target=&quot;_blank&quot;&gt;Issue 1010&lt;/a&gt; 애드온 info.xml에서 select type 설정 시 항목이 1개 일 때 오류 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=757&quot; target=&quot;_blank&quot;&gt;Issue 757&lt;/a&gt; FileHandler::removeFile()에서 파일 이동이 실패할 수 있는 문제 수정&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/source/detail?r=10132&quot; target=&quot;_blank&quot;&gt;r10132&lt;/a&gt; 레이아웃 관리에서 XSS 보안 위험 방지&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1393&quot; target=&quot;_blank&quot;&gt;Issue 1393&lt;/a&gt;&amp;nbsp;스팸필터에서 IP차단 시 wild card 처리 개선&lt;/li&gt;&lt;ul&gt;&lt;li&gt;IP차단 설정에서 &apos;123.123.*.*&apos;과 같은 설정이 안되는 문제&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;


&lt;h4&gt;개선/변경 사항&lt;/h4&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1139&quot; target=&quot;_blank&quot;&gt;Issue 1139&lt;/a&gt; Object::adds()의 효율 개선 [패치 제공 dh1024@]&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=171&quot; target=&quot;_blank&quot;&gt;Issue 171&lt;/a&gt; head 영역의 코드 정리. 모듈, 레이아웃 정보를 보여주던 meta tag 제거&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1312&quot; target=&quot;_blank&quot;&gt;Issue 1312&lt;/a&gt; Admin. 레이아웃, 위젯, 모듈, 애드온 목록에서 &apos;간단보기/상세보기&apos; 추가&lt;/li&gt;&lt;ul&gt;&lt;li&gt;부가 정보를 펼쳐보는 기능. 주로 description 정보.&lt;/li&gt;&lt;li&gt;이슈에서 요구하는 것과 관계가 없음&lt;/li&gt;&lt;li&gt;이슈 작성자가 원하는 UI를 구현하기 위한 초석으로 기대 함&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1514&quot; target=&quot;_blank&quot;&gt;Issue 1514&lt;/a&gt; DB 세션 사용의 기본 설정을 비활성으로 변경&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1130&quot; target=&quot;_blank&quot;&gt;Issue 1130&lt;/a&gt; 회원정보를 가져오는 로직의 효율 개선(캐시 활용 개선)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1367&quot; target=&quot;_blank&quot;&gt;Issue 1367&lt;/a&gt; point모듈의 getPoint 쿼리 변경(cond in -&amp;gt; equal) [패치 제공 misol.kr@]&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=949&quot; target=&quot;_blank&quot;&gt;Issue 949&lt;/a&gt; URL에 아이디와 패스워드를 넣어 로그인하지 못하도록 변경&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=1518&quot; target=&quot;_blank&quot;&gt;Issue 1518&lt;/a&gt; 문서 목록을 가져올 때 쿼리에 &apos;비추천 수&apos; 조건 설정 추가&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/source/detail?r=10176&quot; target=&quot;_blank&quot;&gt;r10176&lt;/a&gt; 에디터 스타일의 CSS 정리&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/xe-core/issues/detail?id=998&quot; target=&quot;_blank&quot;&gt;Issue 998&lt;/a&gt;의 문제가 해결되었으리라 예상 됨&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="코어"/>
            <category term="Core"/>
            <category term="XE현황"/>
            <category term="이슈"/>
            <category term="마일스톤"/>
            <category term="XE개발팀"/>
            <category term="XE프로젝트"/>
            
   </entry>
   <entry>
      <title>XE 번역 센터기능 간략한 프리뷰</title>
      <id>http://blog.xmz.kr/4570</id>
      <published>2012-02-17T18:39:08+09:00</published>
      <updated>2012-02-19T01:54:02+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/4570"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/4570#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;XpressEngine의 글로벌 확산 정책에 따라 루마니아와 중국 개발자가 합류하여 XE 개발을 진행 중입니다. 영문 공식 사이트(&lt;a href=&quot;http://xpressengine.org/&quot; target=&quot;_blank&quot;&gt;xpressengine.org&lt;/a&gt;)도 개설되었지만, 국내 제작자가 만든 기능이나 디자인은 한국어 공식 사이트에만 등록되어 있거나 반대의 경우도 있습니다. 이런 격차를 줄이기 위해 글로벌 통합 자료실을 구축하고 있으며, 모듈, 애드온 등의 다국어 지원을 위해 &quot;번역 센터&quot;도 준비 중입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;번역 센터?&lt;/h3&gt;&lt;p&gt;그동안 XE코어는 지원자가 직접 언어팩을 수정하여 번역을 추가해왔습니다. 코드를 직접 고쳐야 하는 어려움과 새로 추가한 단어나 문장에 대해서는 기민하게 대응하지 못하는 일도 있었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;번역 센터는 공동으로 번역에 참여할 수 있는 방식을 도입했습니다. 코드를 직접 고치지 않고도 웹사이트에서 다양한 참여자가 각 단어를 번역하고 좋은 번역을 추천받아 적용하게 됩니다. 또한, XE코어 뿐만 아니라 자신이 개발한 기능을 다국어로 번역을 요청할 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* &lt;a href=&quot;http://code.google.com/p/xe-translation/&quot; target=&quot;_blank&quot;&gt;번역 모듈 프로젝트 페이지 바로가기&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;언어팩의 변화&lt;/h3&gt;&lt;p&gt;다국어 지원을 위해서는 ko.lang.php, en.lang.php라는 파일들을 언어별로 만들어 두 파일을 비교해가며 번역을 해야 했습니다. 이는 lang.xml 파일 하나로 통합하고 번역 센터에 이 파일을 등록하여 번역을 요청할 수 있습니다. 번역이 완료되면 다시 파일을 내려받아 교체하면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;번역 센터 살펴보기&lt;/h3&gt;&lt;p&gt;번역 센터에 사용할 모듈은 구글 프로젝트를 통해 공개 개발되어 왔습니다(번역 센터 모듈의 구글 프로젝트). 이 모듈을 설치하여 간단한 주요 동작만 살펴보겠습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;번역 센터 모듈도 게시판 모듈처럼 여러 개의 번역 센터를 생성하고 설정할 수 있습니다. 생성한 번역 센터는 아래와 같은 모습을 보여 줍니다. 아직 아무것도 설정하지 않은 상태입니다.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/570/004/f95c1d75a5cf30bf03edd614f9085e9d.png&quot; alt=&quot;번역 센터 첫 페이지&quot; class=&quot;iePngFix&quot; width=&quot;759&quot; height=&quot;607&quot; style=&quot;width: 759px; height: 607px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[번역 센터 첫 페이지]&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;왼쪽의 언어 목록에는 XE가 지원하는 언어와 오른쪽에 &quot;프로젝트&quot; 목록이 보여집니다. 아직 등록한 것이 없기에 비어있는 모습이고, &apos;나의 프로젝트 목록&apos; 또는 &apos;새 파일 등록...&apos;에서 새로운 번역을 요청할 수 있습니다. 간단하게 프로젝트와 번역이 필요한 lang.xml 파일만 등록하면 됩니다. 아래는 admin 모듈의 lang.xml 파일을 등록 후 보이는 화면입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/570/004/5bd30aa2d97e483aa17cbccf87c43e8f.png&quot; alt=&quot;Voila_Capture280.png&quot; class=&quot;iePngFix&quot; width=&quot;981&quot; height=&quot;524&quot; style=&quot;width: 981px; height: 524px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[등록한 프로젝트의 번역 현황]&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;프로젝트 목록이나 파일 목록, 언어 목록 등에서 번역하려는 언어를 선택하면 아래와 같이 번역을 추가할 수 있습니다. &apos;한국어&apos;를 기준으로하여 번역이 완료되지 않은 &apos;일본어&apos;를 선택한 화면입니다. 번역이 필요한 단어나 문장을 옮겨가며 입력하게 되어 있습니다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/570/004/786d7a7ca53749adaaf8313bd3230fe3.png&quot; alt=&quot;skitched-20120217-180627.png&quot; class=&quot;iePngFix&quot; width=&quot;978&quot; height=&quot;888&quot; style=&quot;width: 978px; height: 888px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[번역을 진행하는 화면]&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이미 번역이 되어 있는 항목도 좀 더 나은 번역을 제안할 수 있으며, &apos;추천&apos;으로 좀 더 나은 번역을 반영할 수도 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/570/004/3f23ff0dd19652bb8c72b154693d3aca.png&quot; alt=&quot;skitched-20120217-181232.png&quot; class=&quot;iePngFix&quot; width=&quot;975&quot; height=&quot;306&quot; style=&quot;width: 975px; height: 306px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[여러 번역이 있다면 좀 더 나은 번역을 &apos;추천&apos;할 수 있다]&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/570/004/4be394d05101aef74aab2abc16d2abcd.png&quot; alt=&quot;Voila_Capture292.png&quot; class=&quot;iePngFix&quot; width=&quot;988&quot; height=&quot;733&quot; style=&quot;width: 988px; height: 733px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[현황을 보여주는 번역 센터 대시보드]&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;발견한 문제점&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;아직 개발 중이지만, 번역 센터 모듈을 설치해보고 사용해보니 불편한 점도 더러 있습니다. 번역 중에 페이지를 옮기기 전에 저장해야 하고, 프로젝트 목록을 보거나 대시보드로 이동하기가 불편했습니다. 파일 등록 시 이미 번역된 항목은 추천할 수 없어서 &apos;번역완료&apos;로 전환이 안되네요. 또 이미 번역된 항목은 등록자가 기여자로 집계하는 것도 걸리는 부분이지만, 넘어가도 될 부분이기도 하고요.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;정리&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;번역 센터는 한국어, 일본어, 영어 등 다양한 언어로 자신이 개발한 기능의 번역을 집단지성을 활용할 수 있습니다. 하지만 몇 가지 문제들이 보이므로 좀 더 다듬어져야 할 것 같습니다. 현재 서버 구성과 사이트 구축과 글로벌 통합 자료실에도 적용될 회원 정보 연동이 마무리 되었다고 합니다. XE 번역 센터의 오픈일정은 아직 공개되지 않았습니다. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="XE"/>
            <category term="XE프로젝트"/>
            <category term="번역센터"/>
            <category term="번역"/>
            
   </entry>
   <entry>
      <title>XE매거진 공개 저장소</title>
      <id>http://blog.xmz.kr/4394</id>
      <published>2012-02-12T03:19:37+09:00</published>
      <updated>2012-02-16T21:43:50+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/4394"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/4394#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;XE매거진에서 개발하여 배포하는 코드들의 공개 저장소를 만들었습니다.&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;저장소는 Git으로 관리하며 github.com에 등록했습니다.&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;문제 및 개선 요청에 대한 처리 내역은 해당 프로젝트 페이지에서 관리합니다.&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;font-size: 13px; &quot;&gt;&lt;img src=&quot;http://xmz.kr/files/attach/images/64/394/004/d7b99983e65fb8c35a7de9d137f32f5e.jpg&quot; alt=&quot;socialite.jpg&quot; width=&quot;300&quot; height=&quot;300&quot; style=&quot;width: 300px; height: 300px; &quot; /&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;git 사용이 가능하신 분은 fork하거나 프로젝트 멤버로 참여하실 수 있습니다.&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;github&amp;nbsp;저장소 :&amp;nbsp;&lt;a href=&quot;https://github.com/xemagazine&quot; target=&quot;_blank&quot;&gt;https://github.com/xemagazine&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 13px; &quot;&gt;저장소 목록&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;b&gt;Code Highlighter&lt;/b&gt; [에디터 컴포넌트]&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px; font-size: small; &quot;&gt;저장소 : &lt;a href=&quot;https://github.com/xemagazine/code_highlighter&quot; target=&quot;_blank&quot;&gt;https://github.com/xemagazine/code_highlighter&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;다운로드 :&amp;nbsp;&lt;a href=&quot;http://www.xpressengine.com/index.php?mid=download&amp;amp;package_srl=18325803&quot; target=&quot;_blank&quot;&gt;http://www.xpressengine.com/index.php?mid=download&amp;amp;package_srl=18325803&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;b&gt;태그 연관글(tag_relation)&lt;/b&gt;&amp;nbsp;[애드온]&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;저장소 :&amp;nbsp;&lt;a href=&quot;https://github.com/xemagazine/tag_relation&quot; target=&quot;_blank&quot;&gt;https://github.com/xemagazine/tag_relation&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;다운로드 :&amp;nbsp;&lt;a href=&quot;http://www.xpressengine.com/index.php?mid=download&amp;amp;&amp;amp;package_srl=18325813&quot; target=&quot;_blank&quot;&gt;http://www.xpressengine.com/index.php?mid=download&amp;amp;&amp;amp;package_srl=18325813&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;b&gt;가상 사이트 관리&lt;/b&gt; [모듈]&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;저장소 :&amp;nbsp;&lt;a href=&quot;https://github.com/xemagazine/sitemanagement&quot; target=&quot;_blank&quot;&gt;https://github.com/xemagazine/sitemanagement&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;다운로드 : &lt;a href=&quot;http://www.xpressengine.com/index.php?mid=download&amp;amp;package_srl=20533990&quot; target=&quot;_blank&quot;&gt;http://www.xpressengine.com/index.php?mid=download&amp;amp;package_srl=20533990&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>svn을 다룰 때 주의사항</title>
      <id>http://blog.xmz.kr/4381</id>
      <published>2012-02-11T12:44:05+09:00</published>
      <updated>2012-02-14T03:25:15+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/4381"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/4381#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;SVN은 여러 명이 동시에 코드를 다루기에 좋은 도구입니다. 여러 사람이 동시에 코드를 다루므로 자신의 작업 사본(working copy)에 있는 코드를 항상 최신의 리비전으로 업데이트 해두어야 합니다. 특히 코드를 수정하기 전이나 커밋하는 등 저장소에 담긴 코드를 변경하거나 테스트 할 때는 꼭 업데이트를 먼저 해야 합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;코드를 고치기 전에 업데이트하기&lt;p&gt;코드를 수정하기 전에는 먼저 업데이트를 하고 시작해야 합니다. 내가 고치려는 파일을 이미 다른 사람이 수정하여 커밋했을지도 모릅니다. 다른 사람이 이미 같은 코드를 커밋했는데 그 변경을 확인하지 않고 내가 코드를 수정하는 순간 충돌하는 상황이 만들어져 버립니다. 충돌이 발생하지 않더라도 다른 코드의 동작 변경으로 인해 내가 수정중인 코드의 동작이 달라질 수도 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;커밋하기전에 업데이트하기&lt;p&gt;커밋하기 전에 다시 한 번 업데이트 해두면 그 사이에 다른 사람이 변경한 코드를 반영 시킬 수 있습니다. 그 변경 내역을 살펴보고 내가 커밋하려는 코드와 동작에 영향이 있는지 살펴볼 수 있습니다. 이 때 영향이 있다고 판단되는 부분은 점검해두어야 합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;커밋하기 전에 다시 확인하기&lt;p&gt;저장소에는 항상 문제가 없음을 확인한 코드만 커밋해야 합니다. 잘못된 커밋도 쉽게 되돌릴 수 있지만 문제 발견이 늦어지면 프로그램과 협업하는 개발자에게도 영향을 줍니다. 커밋하기 전에는 내가 커밋하려는 코드의 변경사항을 다시 확인해야 합니다. 실수로 키보드를 눌러 엉뚱한 문자가 삽입 되었을 수도 있고, 코드 충돌을 발견하여 처리했는데 그 방법이 잘못되어 엉뚱한 코드가 되어버리는 경우가 있을 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>한겨레 콘텐츠 사이트 XE로 개편</title>
      <id>http://blog.xmz.kr/3820</id>
      <published>2012-02-01T12:16:21+09:00</published>
      <updated>2012-02-09T19:57:49+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/3820"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/3820#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;한겨레 신문사(&lt;a target=&quot;_blank&quot; href=&quot;http://hani.co.kr&quot;&gt;hani.co.kr&lt;/a&gt;)는 지난 해부터 XpressEngine을 적극 활용하고 있습니다. wordpress를 사용하던 &apos;한겨레 스페셜(&lt;a target=&quot;_blank&quot; href=&quot;http://special.hani.co.kr/&quot;&gt;special.hani.co.kr&lt;/a&gt;)&apos;사이트를 XE를 이용해 개편하였으며, 2012년 2월 1일부로 &apos;한겨레TV(&lt;a target=&quot;_blank&quot; href=&quot;http://www.hanitv.com/&quot;&gt;hanitv.com&lt;/a&gt;)&apos;와 &apos;한겨레 스페셜&apos;페이지에 확대 적용했습니다. 한겨레의 뉴스 페이지는 여전히 특화된 별도의 솔루션으로 유지되고 있습니다. 한겨레 사이트에 XE가 사용되고 있는 페이지는 &apos;한겨레 스페셜&apos; 허브 페이지와 해당 섹션에 포함된 &apos;휴심정, 물바람숲, 사진마을, 베이비트리&apos;등과, &apos;한겨레TV&apos;입니다.&lt;/p&gt;&lt;p&gt;&apos;한겨레 스페셜&apos;섹션의 사이트를 위해 기사 관리 기능이 모듈로 제작되어 사용 중이며, 콘텐츠를 신속하고 자유롭게 배치하기 위해 또 다른 특별한 기능을 제작하여 구성되어 있습니다.&lt;/p&gt;&lt;h3&gt;스크린샷&lt;/h3&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/820/003/e56a9f34c6e52cdfd0f29641617f5dd6.png&quot; alt=&quot;Voila_Capture249.png&quot; class=&quot;iePngFix&quot; width=&quot;600&quot; height=&quot;947&quot; style=&quot;width: 600px; height: 947px; border-style: solid; border-width:1px;&quot; /&gt;
&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[XE로 개편한 &apos;한겨레TV&apos; - &lt;a target=&quot;_blank&quot; href=&quot;http://hanitv.com&quot;&gt;hanitv.com&lt;/a&gt;]&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/820/003/04601f411c25119382fbb961ea96d98f.png&quot; alt=&quot;Voila_Capture250.png&quot; class=&quot;iePngFix&quot; width=&quot;600&quot; height=&quot;982&quot; style=&quot;width: 600px; height: 982px; border-style: solid; border-width:1px;&quot; /&gt;
&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[XE로 개편한 &apos;한겨레 스페셜&apos; 허브 페이지 - &lt;a target=&quot;_blank&quot; href=&quot;http://special.hani.co.kr&quot;&gt;special.hani.co.kr&lt;/a&gt;]&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.xmz.kr/files/attach/images/64/820/003/82835ff7aa632863b9af49d17b78d6ab.png&quot; alt=&quot;Voila_Capture251.png&quot; class=&quot;iePngFix&quot; width=&quot;600&quot; height=&quot;1265&quot; style=&quot;width: 600px; height: 1265px; border-style: solid; border-width:1px;&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;[XE는 아니지만, 새롭게 디자인한 한겨레 뉴스 사이트 메인 - &lt;a target=&quot;_blank&quot; href=&quot;http://hani.co.kr/&quot;&gt;hani.co.kr&lt;/a&gt;]&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="한겨레"/>
            <category term="hani"/>
            <category term="쇼케이스"/>
            
   </entry>
   <entry>
      <title>활용 예로 살펴보는 XE 라이선스</title>
      <id>http://blog.xmz.kr/3464</id>
      <published>2012-01-30T04:41:36+09:00</published>
      <updated>2012-09-20T08:09:17+09:00</updated>
      <link rel="alternate" type="text/html" href="http://blog.xmz.kr/3464"/>
      <link rel="replies" type="text/html" href="http://blog.xmz.kr/3464#comment"/>
      <author>
         <name>BNU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;bq&quot; style=&quot;border-left:3px solid #ccc;margin:1em 0;padding-left:1em&quot;&gt;XE가 채택하고 있는 오픈소스 라이선스인 GNU LGPL을 간략히 살펴보고, XE로 웹사이트를 구축하거나 기능을 개발하여 배포할 때 등 몇 가지 사례로 라이선스에 대해 알아두어야 할 점에 대해서 정리해보았습니다.&lt;br /&gt;* 관련 용어에 대한 설명은 생략하였으니 검색하여 참조해주세요.&lt;br /&gt;참조(위키백과) : &lt;a href=&quot;http://ko.wikipedia.org/wiki/GNU_%EC%9D%BC%EB%B0%98_%EA%B3%B5%EC%A4%91_%EC%82%AC%EC%9A%A9_%ED%97%88%EA%B0%80%EC%84%9C&quot;&gt;GNU GPL&lt;/a&gt;, &lt;a href=&quot;http://ko.wikipedia.org/wiki/GNU_%EC%95%BD%EC%86%8C_%EC%9D%BC%EB%B0%98_%EA%B3%B5%EC%A4%91_%EC%82%AC%EC%9A%A9_%ED%97%88%EA%B0%80%EC%84%9C&quot;&gt;GNU LGPL&lt;/a&gt;&lt;/blockquote&gt;&lt;h2&gt;오픈소스 라이선스(OpenSource License)&lt;/h2&gt;&lt;p&gt;오픈소스 라이선스는 GNU GPL, GNU LGPL, BSD, MIT 등 다양한 종류가 있고 자유로운 사용, 복제, 수정, 배포를 보장한다는 공통적인 특성이 있습니다. 이에 대해 라이선스마다 차이는 있지만 기본 이념은 같습니다. 작게나마 오픈소스에 관심을 두었던 분은 &quot;시장과 성당&quot;을 들어보셨으리라 생각합니다. 저는 오픈소스 라이선스를 &quot;지식과 기술을 공유하고 집단지성으로 발전시켜나가기를 희망하는 라이선스이다&quot;라고 말합니다.&lt;/p&gt;
&lt;p&gt;이러한 오픈소스 라이선스에도 제약사항이 있으며, 이는 좀 더 나은 공유를 위한 고민에서 나온 것입니다. 이 제약사항 중 저작자가 지정한 라이선스가 재배포할 때에도 유지해야 합니다. 즉, 모두에게 동등한 권리가 주어진다는 부분이 가장 중요하다고 생각합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2&gt;오픈소스의 저작권(Copyright)&lt;/h2&gt;&lt;p&gt;오픈소스는 흔히, 공짜 또는 마구 가져다 써도 되는 것으로 오해받고 있습니다. 오픈소스 소프트웨어도 법으로부터 저작권(Copyright)을 보호받고 있으며 라이선스 규정을 위반한 경우 처벌될 수 있습니다. 이용 허가를 위한 라이선스(License)와 창작물에 대한 저작자의 권리를 보호하는 저작권(Copyright)은 서로 다른 것입니다. 저작자의 권리는 보호되어야 하며, 라이선스 위반에 대한 법적인 처벌 이전에 공동체에서 이를 지적하고 나설 것입니다.&lt;br /&gt;(저작권까지 양도하는 때는 주로 Copyleft라고 표기하고 있습니다.)&lt;br /&gt;﻿&lt;/p&gt;
&lt;h2&gt;GNU GPL &amp;amp; GNU LGPL&lt;/h2&gt;&lt;p&gt;오픈소스 라이선스의 한 종류인 GPL과 LPGL은 많이 닮아있지만 중대한 차이가 있습니다. GPL로 설정된 소프트웨어는 결합한 소프트웨어도 GPL을 채택해야 하는 필수 제약사항을 가지고 있습니다. 상용 소프트웨어를 판매할 때 GPL 소프트웨어를 포함한 경우 라이선스를 GPL로 해야 하며, GPL 규정에 따라 프로그램 사용자가 요청하면 소스코드를 추가 비용 없이(저장 매체 비용 및 운송 비용은 예외) 전달해야 할 의무가 있습니다. 즉, 결합한 소프트웨어의 독점적인 라이선스를 인정하지 않습니다.&lt;/p&gt;
&lt;p&gt;GNU LGPL은 GPL보다 제약사항을 좀 더 완화한 라이선스로써 독점적인 프로그램과의 결합을 허용하고 있습니다. LGPL과 결합한 프로그램은 독점 라이선스로 배포할 수 있고, 독점 소프트웨어를 제외한 LGPL 소프트웨어의 부분만 공개 의무를 갖습니다. GPL보다는 지식 공유라는 이념에 더욱 가까운 라이선스라고 생각합니다. 상용 프로그램에 LGPL 소프트웨어를 사용함으로써 지식 및 기술 공유와 이를 통해 개선된 LGPL 소프트웨어의 기술 발전을 공유하는 것으로 스스로 생명을 불어넣고 있는 것입니다.&lt;br /&gt;﻿&lt;/p&gt;
&lt;h2&gt;XE의 라이선스 - GNU LGPL&lt;/h2&gt;&lt;p&gt;초기 XE는 GNU GPL을 채택하고 있었지만, 결합한 소프트웨어라고 볼 수 있는 모듈, 위젯, 애드온 등에 대해서는 별도 라이선스를 허용하고 있었습니다. 저작권자가 허용한다 해도 이는 GNU GPL의 규정과 충돌하는 부분입니다. &apos;결합&apos;의 범위에 대한 해석이 다양하고 그 범위를 확정하기 어려운 게 사실입니다.&lt;/p&gt;
&lt;p&gt;GNU LGPL로 라이선스를 변경하여 이 애매한 상황을 벗어날 수 있었습니다. 모듈 등을 독점 라이선스로 배포하거나 유료 판매도 문제가 없으며, 직접 개발한 모듈, 위젯 등 프로그램의 사용과 배포를 제한할 수 있습니다.﻿&lt;br /&gt;﻿&lt;/p&gt;
&lt;h2&gt;오픈소스 라이선스에 따른 XE 활용&lt;/h2&gt;&lt;p&gt;자, XE의 라이선스는 모두에게 열려있습니다. 자유롭게 사용할 수 있으며, 애매했던 라이선스 적용 범위도 해결되었습니다. 이를 맘껏 즐기기 위한 주의사항을 몇 가지 사례로 살펴보겠습니다.&lt;/p&gt;
&lt;h3&gt;- 모듈, 위젯, 스킨 등의 배포&lt;/h3&gt;&lt;p&gt;직접 공들여 제작한 제품에 독점 라이선스를 설정할 수 있습니다. 유료로 판매하거나 재배포를 금지하고 상업적인 목적으로 사용을 금지할 수도 있습니다. 이는 저작권자의 의도대로 제한할 수 있습니다.&lt;/p&gt;
&lt;p&gt;여기서 주의할 점은 직접 제작한 코드가 아닌, XE코어 등에 포함된 코드를 함께 배포해야 할 때는 XE코드에 한하여 LGPL의 규정에 따라야 합니다. 모듈을 제작하면서 불가피하게 XE코어의 코드가 고쳐져야만 하는 경우가 해당하겠죠. 이 때는 수정한 XE코드를 구매자에게 소스코드 상태로 제공해야하며(zend encoding 등을 하지 않은) 이 범위에 포함되지 않는 직접 제작한 코드는 인코딩하여 자신의 지적 재산권인 제품을 보호할 수도 있습니다.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;- 코드를 수정하여 사용하거나 발주하여 제작한 경우&lt;/h3&gt;&lt;p&gt;XE 를 이용하여 직접 수정하여 사용하거나 제작업체에 발주하여 구축한 경우, 개발된 코드를 공개해야만 하는 것으로 오해하는 경우가 많습니다. 불특정 다수에게 배포하는 경우가 아니므로 수정한 코드를 일반에 공개 할 의무는 없으며, 제작을 대행한 경우에는 개발사-발주사 사이에서만 XE의 소스코드를 주고받으면 됩니다. XE코드 외 추가 개발된 프로그램의 권리는 당사자 간 계약으로 소유권 및 기타 권리를 정할 수 있습니다.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;- 공개 이미지 또는 Javascript 코드를 사용한 경우&lt;/h3&gt;&lt;p&gt;이는 XE의 라이선스와 관계된 부분은 아니지만, 공개된 아이콘 이미지를 사용하거나 jQuery 플러그인을 활용한 경우입니다. 인터넷에 공개된 이미지와 자바스크립트 코드 등에도 저작권이 있으며, 오픈소스 라이선스 또는 저작권자가 지정한 라이선스를 먼저 살펴봐야 합니다. 대부분 LGPL보다 덜 제한적인 라이선스를 채택하고 있습니다. 해당 저작물이 사용되었다는 출처를 기재해야 하거나 상용소프트웨어에 사용할 수 없도록 제한하는 경우가 많으니, 해당 라이선스의 규정을 반드시 확인 후 사용하시기 바랍니다.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;- 코어 재배포(개작, fork)&lt;/h3&gt;&lt;p&gt;XE 코어를 개선하거나 별도의 패키지를 만들어 배포하고자 하는 때도 있을 겁니다. 제 닉네임을 붙여 bnuCMS라고 이름과 코드를 변경하여 자유롭게 배포할 수 있습니다. 물론 LGPL에서 규정하고 있는 아래 몇 가지 사항을 지켜야 합니다.&lt;/p&gt;
&lt;p&gt;1) 라이선스 변경 불가&lt;br /&gt;저작권자 외에는 라이선스를 변경할 수 없으며, 개작한 프로그램도 같게 LGPL로 배포되어야 합니다. 모두에게 동등한 권리가 보장되어야 합니다.&lt;br /&gt;&lt;br /&gt;2) 원저작권자 정보 기재할 것&lt;br /&gt;원저작권자의 정보를 기재하여 출처를 밝히되, 이를 개작한 프로그램의 보증이나 홍보용으로 활용해서는 안 됩니다. 예를 들어 &quot;bnuCMS는 NHN이 개발한 XE를 기반으로 하고 있어 안전합니다&quot;처럼 XE 브랜드를 이용하거나 NHN이 보증하는 것처럼 해석될 수 있는 문구를 포함해서는 안 됩니다.&lt;br /&gt;&lt;br /&gt;3) 같은 제품명 사용불가&lt;br /&gt;개작한 프로그램은 원저작물의 이름과 달라야 합니다. 같은 이름을 사용하면 원저작물로 오인하는 일이 없도록 하기 위함입니다. 등록된 상표권 침해의 문제도 있습니다.&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;- 수정 없이 XE배포본을 내 사이트에서 배포&lt;/h3&gt;&lt;p&gt;XE코어를 자신이 운영하는 사이트의 홍보나 회원유치 등의 목적으로 배포본을 수정 없이 올려두는 일도 있습니다. 일명 퍼가는 행위를 말합니다. LGPL로 설정된 XE는 이러한 배포 방식도 제한하고 있지는 않습니다. 하지만 배포본에 문제가 발견된 경우 수정된 버전의 배포에 혼선이나 사용자의 문제 해결에 혼란을 가중시킬 수 있음을 인지하시고 활용하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;또한, XE 코어 외 개별적으로 제작되어 XE공식 홈페이지 등에 공개된 저작물을 가져와서 올려둘 때는 해당 저작물의 라이선스를 어기지는 않는지 주의해야 합니다. 제작자에게 문의하여 허락을 구하거나 알려두는 게 좋겠습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2&gt;마치며 - 모두를 위한 라이선스&lt;/h2&gt;&lt;p&gt;XE는 최종 사용자와 관련 기능을 개발하는 개발자 및 개발사 그리고 XE를 자신만의 이름을 붙여 개작마저도 자유로운 라이선스로 제공하고 있습니다. 모두가 자유롭게 사용할 수 있고 동등한 권리로 프로그램을 발전시켜 나갈 수 있습니다. 자유로운 권리를 주는 만큼 충분히 도움을 받은 후 자그마한 공헌으로 모두에게 돌려주는 일에도 함께해주시길 희망합니다.&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="XE"/>
            <category term="라이선스"/>
            <category term="License"/>
            <category term="저작권"/>
            <category term="GNU GPL"/>
            <category term="GNU LGPL"/>
            <category term="오픈소스"/>
            <category term="개작"/>
            
   </entry>
</feed> 
