<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Rhymix 개발 팁들</title>
    <link>https://dev-cordelia.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 26 Jun 2026 16:48:50 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>수표</managingEditor>
    <image>
      <title>Rhymix 개발 팁들</title>
      <url>https://tistory1.daumcdn.net/tistory/3648190/attach/8a0ef4c0c5804711b9e4e5968280d24e</url>
      <link>https://dev-cordelia.tistory.com</link>
    </image>
    <item>
      <title>comment.insert_comment 트리거 내용</title>
      <link>https://dev-cordelia.tistory.com/8</link>
      <description>&lt;pre id=&quot;code_1613803844521&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;stdClass Object
(
    [_filter] =&amp;gt; insert_comment
    [error_return_url] =&amp;gt; /board1/537
    [act] =&amp;gt; procBoardInsertComment
    [mid] =&amp;gt; board1
    [document_srl] =&amp;gt; 537
    [content] =&amp;gt; &amp;lt;p&amp;gt;Contents&amp;lt;/p&amp;gt;
    [module] =&amp;gt; board
    [module_srl] =&amp;gt; 351
    [comment_srl] =&amp;gt; 745
    [status] =&amp;gt; 1
    [__isupdate] =&amp;gt; 
    [parent_srl] =&amp;gt; 0
    [uploaded_count] =&amp;gt; 0
    [member_srl] =&amp;gt; 4
    [user_id] =&amp;gt; [User ID]
    [user_name] =&amp;gt; admin
    [nick_name] =&amp;gt; [User Nickname]
    [email_address] =&amp;gt; [User ID]@[domain.com]
    [homepage] =&amp;gt; 
    [list_order] =&amp;gt; -746
    [regdate] =&amp;gt; 20210220154906
    [notify_message] =&amp;gt; N
    [is_secret] =&amp;gt; N
    [updated_file_count] =&amp;gt; 0
)&lt;/code&gt;&lt;/pre&gt;</description>
      <author>수표</author>
      <guid isPermaLink="true">https://dev-cordelia.tistory.com/8</guid>
      <comments>https://dev-cordelia.tistory.com/8#entry8comment</comments>
      <pubDate>Sat, 20 Feb 2021 15:50:59 +0900</pubDate>
    </item>
    <item>
      <title>RX] document.updateVotedCount 트리거 $obj</title>
      <link>https://dev-cordelia.tistory.com/7</link>
      <description>&lt;pre id=&quot;code_1611076241795&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;stdClass Object
(
    [member_srl] =&amp;gt; 4
    [module_srl] =&amp;gt; 351
    [document_srl] =&amp;gt; 411
    [update_target] =&amp;gt; voted_count
    [point] =&amp;gt; 1
    [before_point] =&amp;gt; 0
    [after_point] =&amp;gt; 1
    [cancel] =&amp;gt; 
)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655799874438&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;stdClass Object
(
    [member_srl] =&amp;gt; 148621
    [module_srl] =&amp;gt; 192
    [document_srl] =&amp;gt; 11395989
    [update_target] =&amp;gt; voted_count
    [point] =&amp;gt; 1
    [before_point] =&amp;gt; 47
    [after_point] =&amp;gt; 48
    [cancel] =&amp;gt; 
)&lt;/code&gt;&lt;/pre&gt;</description>
      <author>수표</author>
      <guid isPermaLink="true">https://dev-cordelia.tistory.com/7</guid>
      <comments>https://dev-cordelia.tistory.com/7#entry7comment</comments>
      <pubDate>Wed, 20 Jan 2021 02:11:06 +0900</pubDate>
    </item>
    <item>
      <title>RX] setPoint trigger $obj 내용</title>
      <link>https://dev-cordelia.tistory.com/6</link>
      <description>&lt;pre id=&quot;code_1611068603888&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;stdClass Object
(
    [member_srl] =&amp;gt; 4
    [mode] =&amp;gt; update //add, minus, update, signup이 있음
    [current_point] =&amp;gt; {이전 포인트}
    [current_level] =&amp;gt; {이전 레벨}
    [set_point] =&amp;gt; {설정하는 포인트}
    [new_group_list] =&amp;gt; Array
        (
        )

    [del_group_list] =&amp;gt; Array
        (
        )

    [new_level] =&amp;gt; {새롭게 된 레벨}
)
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>수표</author>
      <guid isPermaLink="true">https://dev-cordelia.tistory.com/6</guid>
      <comments>https://dev-cordelia.tistory.com/6#entry6comment</comments>
      <pubDate>Wed, 20 Jan 2021 00:03:29 +0900</pubDate>
    </item>
    <item>
      <title>RX] Comment 트리거 $obj 내용</title>
      <link>https://dev-cordelia.tistory.com/5</link>
      <description>&lt;p&gt;comment.insertComment 트리거&lt;/p&gt;
&lt;pre id=&quot;code_1605256632907&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;stdClass Object
(
    [_filter] =&amp;gt; insert_comment
    [error_return_url] =&amp;gt; /gd_dev_world/390
    [mid] =&amp;gt; gd_dev_world
    [document_srl] =&amp;gt; 390
    [content] =&amp;gt; &amp;lt;p&amp;gt;asdfasdf&amp;lt;/p&amp;gt;
    [use_editor] =&amp;gt; Y
    [use_html] =&amp;gt; Y
    [module] =&amp;gt; board
    [act] =&amp;gt; procBoardInsertComment
    [module_srl] =&amp;gt; 391
    [comment_srl] =&amp;gt; 472
    [status] =&amp;gt; 1
    [__isupdate] =&amp;gt; 
    [parent_srl] =&amp;gt; 0
    [uploaded_count] =&amp;gt; 0
    [member_srl] =&amp;gt; 4
    [user_id] =&amp;gt; matthew218
    [user_name] =&amp;gt; admin
    [nick_name] =&amp;gt; Waterticket
    [email_address] =&amp;gt; matthew218@naver.com
    [homepage] =&amp;gt; 
    [list_order] =&amp;gt; -473
    [regdate] =&amp;gt; 20201113173520
    [notify_message] =&amp;gt; N
    [is_secret] =&amp;gt; N
)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;content =&amp;gt; 입력한 댓글 내용&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;comment.deleteComment 트리거&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1605256869054&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;commentItem Object
(
    [comment_srl] =&amp;gt; 472
    [grant_cache] =&amp;gt; 
    [columnList] =&amp;gt; Array
        (
        )

    [error] =&amp;gt; 0
    [message] =&amp;gt; success
    [variables] =&amp;gt; Array
        (
            [comment_srl] =&amp;gt; 472
            [module_srl] =&amp;gt; 391
            [document_srl] =&amp;gt; 390
            [parent_srl] =&amp;gt; 0
            [is_secret] =&amp;gt; N
            [content] =&amp;gt; &amp;lt;p&amp;gt;asdfasdf&amp;lt;/p&amp;gt;
            [voted_count] =&amp;gt; 0
            [blamed_count] =&amp;gt; 0
            [notify_message] =&amp;gt; N
            [password] =&amp;gt; 
            [user_id] =&amp;gt; matthew218
            [user_name] =&amp;gt; admin
            [nick_name] =&amp;gt; Waterticket
            [member_srl] =&amp;gt; 4
            [email_address] =&amp;gt; matthew218@naver.com
            [homepage] =&amp;gt; 
            [uploaded_count] =&amp;gt; 0
            [regdate] =&amp;gt; 20201113173520
            [last_update] =&amp;gt; 20201113173521
            [ipaddress] =&amp;gt; 123.123.123.123 // IP주소
            [list_order] =&amp;gt; -473
            [status] =&amp;gt; 1
        )

    [httpStatusCode] =&amp;gt; 200
    [module_srl] =&amp;gt; 391
    [document_srl] =&amp;gt; 390
    [parent_srl] =&amp;gt; 0
    [is_secret] =&amp;gt; N
    [content] =&amp;gt; &amp;lt;p&amp;gt;asdfasdf&amp;lt;/p&amp;gt;
    [voted_count] =&amp;gt; 0
    [blamed_count] =&amp;gt; 0
    [notify_message] =&amp;gt; N
    [password] =&amp;gt; 
    [user_id] =&amp;gt; matthew218
    [user_name] =&amp;gt; admin
    [nick_name] =&amp;gt; Waterticket
    [member_srl] =&amp;gt; 4
    [email_address] =&amp;gt; matthew218@naver.com
    [homepage] =&amp;gt; 
    [uploaded_count] =&amp;gt; 0
    [regdate] =&amp;gt; 20201113173520
    [last_update] =&amp;gt; 20201113173521
    [ipaddress] =&amp;gt; 123.123.123.123 // IP주소
    [list_order] =&amp;gt; -473
    [status] =&amp;gt; 1
    [isMoveToTrash] =&amp;gt; 
)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;content =&amp;gt; 입력한 댓글 내용&lt;/p&gt;
&lt;p&gt;ipaddress =&amp;gt; 삭제 요청한자의 IP 주소 (여기서는 123.123.123.123 으로 수정함)&lt;/p&gt;</description>
      <category>모듈 개발 tip</category>
      <author>수표</author>
      <guid isPermaLink="true">https://dev-cordelia.tistory.com/5</guid>
      <comments>https://dev-cordelia.tistory.com/5#entry5comment</comments>
      <pubDate>Fri, 13 Nov 2020 17:38:43 +0900</pubDate>
    </item>
    <item>
      <title>1. 모듈의 기본 구성</title>
      <link>https://dev-cordelia.tistory.com/4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqEQKn/btqL7xqsl5X/tv9YT4XbW3luCQrbQgmIvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqEQKn/btqL7xqsl5X/tv9YT4XbW3luCQrbQgmIvK/img.png&quot; data-alt=&quot;example_hoto 모듈&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqEQKn/btqL7xqsl5X/tv9YT4XbW3luCQrbQgmIvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqEQKn%2FbtqL7xqsl5X%2Ftv9YT4XbW3luCQrbQgmIvK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;example_hoto 모듈&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;위 파일은 &lt;a href=&quot;https://dev-cordelia.tistory.com/2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 글&lt;/a&gt;에서 설명한 모듈 생성기를 사용하여 생성한 모듈이다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;파일 구성을 보면 아래와 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1603948816230&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/
├  conf    &amp;lt;= 모듈의 기본 정보를 담음
│├ info.xml
│└ module.xml
├  lang    &amp;lt;= 모듈에 사용되는 문자열등을 담음
│└ lang.xml
├  m.skins &amp;lt;= 모바일에서 보여지는 스킨
├  queries &amp;lt;= DB 쿼리등을 담고 있음
├  schemas &amp;lt;= DB 테이블 정보등을 담고 있음
├  skins   &amp;lt;= PC에서 보여지는 스킨
│└  default/...
├  tpl     &amp;lt;= 관리자 화면에서 보여지는 설정 페이지
│└  ...
│
├ example_hoto.admin.controller.php
├ example_hoto.admin.model.php
├ example_hoto.admin.view.php
├ example_hoto.class.php
├ example_hoto.controller.php
├ example_hoto.mobile.php
├ example_hoto.model.php
├ example_hoto.view.php&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;상당히 XE의 모듈은 정교하게 만들어져있다.&lt;/p&gt;
&lt;p&gt;MVC 구조를 기반으로 두고 있기에, 유지보수와 단체 개발이 편리한 점이 장점이다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;먼저 파일들을 하나하나 들여다보며, 구조를 설명하겠다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- conf/info.xml: 모듈의 기본 정보를 담음&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0Vmn6/btqL7Pj9m4n/syJ7lLlHLR6dFqT8ByQaQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0Vmn6/btqL7Pj9m4n/syJ7lLlHLR6dFqT8ByQaQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0Vmn6/btqL7Pj9m4n/syJ7lLlHLR6dFqT8ByQaQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0Vmn6%2FbtqL7Pj9m4n%2FsyJ7lLlHLR6dFqT8ByQaQ1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- conf/module.xml: 모듈의 구성요소를 설정함&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccIkon/btqL7wE8XfB/Y5ToJryBtnuM403c5vAHbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccIkon/btqL7wE8XfB/Y5ToJryBtnuM403c5vAHbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccIkon/btqL7wE8XfB/Y5ToJryBtnuM403c5vAHbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccIkon%2FbtqL7wE8XfB%2FY5ToJryBtnuM403c5vAHbk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;action: 도메인/?mid=example_hoto&amp;amp;act={action의 name} 형식으로 접속하는것을 정의한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- lang/lang.xml&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBfLgk/btqL6JdGEQH/rOYVNeKNuVczW9dEMGZ47K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBfLgk/btqL6JdGEQH/rOYVNeKNuVczW9dEMGZ47K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBfLgk/btqL6JdGEQH/rOYVNeKNuVczW9dEMGZ47K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBfLgk%2FbtqL6JdGEQH%2FrOYVNeKNuVczW9dEMGZ47K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;모듈에서 사용하는 string을 정의한다.&lt;/p&gt;
&lt;p&gt;여러개의 언어를 지원할 수 있도록 만들어져 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;queries, schemas, skin 관련 기능은 나중에 문서를 따로 만들어 설명하겠다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;- example_hoto.class.php&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqJpT6/btqLZI8EgVq/S9cxEw1Zixa0i6QXkIsWJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqJpT6/btqLZI8EgVq/S9cxEw1Zixa0i6QXkIsWJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqJpT6/btqLZI8EgVq/S9cxEw1Zixa0i6QXkIsWJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqJpT6%2FbtqLZI8EgVq%2FS9cxEw1Zixa0i6QXkIsWJK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;기본적으로 XE 모듈은 class를 이용하여 기능들을 분리한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1603949929560&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Example_hoto extends ModuleObject
{
   ...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;보통은 위와 같이 시작한다.&lt;/p&gt;
&lt;p&gt;Example_hoto 클래스를 생성하며, ModuleObject 클래스를 상속받았기에, XE Module에서 제공하는 기본적인 함수를 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또 트리거라는 개념이 나오게 되는데, 트리거는 아래 글을 참고하자&lt;/p&gt;
&lt;p&gt;(참조: &lt;a href=&quot;https://conory.com/blog/14432&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://conory.com/blog/14432&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또한 모듈 생성기를 통한 함수들을 살펴보자&lt;/p&gt;
&lt;pre id=&quot;code_1603951072328&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public function setConfig($config)

// stdClass형 데이터를 저장할 수 있다
// getConfig를 통해 불러올 수 있다
// DB에 저장되므로 일시적 저장이 아닌 영구적인 저장이다
// 모듈의 설정 데이터를 저장할때 주로 사용된다


public function getConfig()

// 모듈 설정을 가져온다
// setConfig을 통해 저장했던 Object를 그대로 리턴해준다


public function setCache($key, $value, $ttl = 86400, $group_key = null)

// 모듈 캐시를 설정해준다.
// 잘 변하지 않는 거대한 연산이 필요한 데이터를 저장하는데 요긴하다
// value에는 여러가지 타입의 변수가 들어가도 상관 없다


public function getCache($key, $ttl = 86400, $group_key = null)

// 설정한 캐시를 가져온다.


public function deleteCache($key, $group_key = null)

// 특정한 캐시를 제거한다


public function clearCache($group_key = null)

// 전체 캐시를 제거한다


public function createObject($status = 0, $message = 'success' /* $arg1, $arg2 ... */)

// Object를 리턴한다
// Object는 보통 View와 Controller 사이에서 처리결과 등을 리턴해줄때 사용된다
// return $this-&amp;gt;createObject(-1,'error'); 와 같이 사용한다


public function checkTriggers()

// 위에 $_insert_triggers, $_delete_triggers에 있는 트리거를 확인한다


public function registerTriggers()

// 트리거를 등록한다




/* Rhymix 기본 함수 */
public function moduleInstall()

// 모듈이 최초 설치 될때 실행되는 함수이다


public function checkUpdate()

// 모듈의 변경사항이 있는지 확인하고, 업데이트 여부를 확인한다.
// true를 리턴하면 업데이트가 필요하다는 것이다.
// 업데이트 필요시, 관리자 대시보드에서 모듈 업데이트가 필요하다는 메세지가 표시된다


public function moduleUpdate()

// 관리자 대시보드에서 '모듈 업데이트' 버튼을 클릭시 실행되는 함수이다
// 여기서 업데이트 작업을 실행해주면 된다


public function recompileCache()

// 캐시파일 재생성시 실행되는 함수이다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위와 같은 함수들이 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- example_hoto.view.php&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;사용자들에게 표시되는 view를 위한 파일이다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o99wa/btqL1n4jR18/TLI9FFLYBQnD1RVk7XyIwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o99wa/btqL1n4jR18/TLI9FFLYBQnD1RVk7XyIwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o99wa/btqL1n4jR18/TLI9FFLYBQnD1RVk7XyIwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo99wa%2FbtqL1n4jR18%2FTLI9FFLYBQnD1RVk7XyIwK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;뭔가 함수이름 중 하나가 익숙하지 않은가?&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;conf/module.xml 파일을 다시한번 보자 (위에 있음)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;dispExample_hotoIndex act가 실행시 위에 함수가 실행되게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이를 위해서 module.xml에 미리 등록을 시켜둔것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;만약 module.xml에 act를 등록시켜두지 않거나, view.php에 act 함수를 만들어두지 않는다면 바로 오류를 뿜으며 멈춰버리니, 새로운 act를 등록할때 주의하자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;init() 함수는 해당 모듈을 불러올때 스킨 폴더를 설정해주는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;그리고 &lt;span style=&quot;color: #333333;&quot;&gt;dispExample_hotoIndex 함수 속을 보면 아래 함수가 실행된다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1603951425823&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$this-&amp;gt;setTemplateFile('index');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 함수는 템플릿을 설정해주는 함수인데, 현재는 skins/default/index.html을 불러온다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;dispExample_hotoIndex 함수속에서 DB에서 값을 불러와 설정하거나, 변수를 설정해서 템플릿에 전송해줄 수 있지만, 다음 글에서 설명해보겠다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- example_hoto.model.php&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VlW10/btqL7xxl6FG/uqO0jbVzDqhmXykWxLkG10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VlW10/btqL7xxl6FG/uqO0jbVzDqhmXykWxLkG10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VlW10/btqL7xxl6FG/uqO0jbVzDqhmXykWxLkG10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVlW10%2FbtqL7xxl6FG%2FuqO0jbVzDqhmXykWxLkG10%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이 파일은 너무 깔끔하다&lt;/p&gt;
&lt;p&gt;Model에서는 보통 DB를 통한 데이터 저장/불러오기 등의 작업을 수행하고 view나 controller에서 사용할 수 있는 함수등을 선언한다.&lt;/p&gt;
&lt;p&gt;하지만 지금은 모듈에 특별한 기능이 없기에 Model에도 아무런 함수가 없는것이다.&lt;/p&gt;
&lt;p&gt;나중에 채워줄것이므로, 단순히 데이터를 다룬다는 점을 생각하고 넘어가자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;- example_hoto.controller.php&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dh10bs/btqL7Q4xZGw/h7WeXZt5c2DmjaGYycmWmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dh10bs/btqL7Q4xZGw/h7WeXZt5c2DmjaGYycmWmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dh10bs/btqL7Q4xZGw/h7WeXZt5c2DmjaGYycmWmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdh10bs%2FbtqL7Q4xZGw%2Fh7WeXZt5c2DmjaGYycmWmk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;여기에는 trigger 함수들이 나와있다.&lt;/p&gt;
&lt;p&gt;위에 class.php 파일에서 선언한 trigger가 작동하면, 위에 함수가 실행되는것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또한 trigger 뿐만 아니라, 백그라운드 작업등을 담당하는데, 예를들어 view에서 form을 통해 데이터를 전달하면 그 데이터는 controller로 전송된다.&lt;/p&gt;
&lt;p&gt;사용 방법은 view.php에 설명과 거의 비슷하나, controller에서 사용하는 함수들은 추후 설명하겠다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;admin.view.php, &lt;span style=&quot;color: #333333;&quot;&gt;admin.model.php, &lt;span style=&quot;color: #333333;&quot;&gt;admin.controller.php 들은 어드민용이라는 점을 제외하면 위에 설명한것과 동일하기에 넘어가겠다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이상으로 모듈의 기본구조 설명을 마친다.&lt;/p&gt;</description>
      <category>모듈 개발 기초</category>
      <author>수표</author>
      <guid isPermaLink="true">https://dev-cordelia.tistory.com/4</guid>
      <comments>https://dev-cordelia.tistory.com/4#entry4comment</comments>
      <pubDate>Thu, 29 Oct 2020 15:16:29 +0900</pubDate>
    </item>
    <item>
      <title>다른 모듈에서 특정 모듈이 설치되어 있는지 확인하는 방법</title>
      <link>https://dev-cordelia.tistory.com/3</link>
      <description>&lt;pre id=&quot;code_1603948142829&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php

if(getClass('test') === NULL){
  // test 모듈/애드온이 존재하지 않을경우
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1603948180936&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;getModel('document') &amp;rarr; 오브젝트 반환
getModel('comment') &amp;rarr; 오브젝트 반환
getModel('jgsdvfsiyhfhf') &amp;rarr; NULL 반환

// 기진곰님 답변
// https://xetown.com/questions/1452965&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;예를들어 존재하는 모듈인 document, comment 모듈을 체크하면 클래스 오브젝트를 반환하지만, &lt;span style=&quot;color: #000000;&quot;&gt;jgsdvfsiyhfhf 같이 존재하지 않는 모듈을 가져오면 NULL을 반환하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물론 addon 모듈처럼 Model 클래스를 정의하지 않는 경우도 있으니&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;getModel보다는 getClass로 체크하는 것이 더 확실하지만,&lt;/p&gt;
&lt;p&gt;실제로 사용하는 것이 Model 클래스라면 그걸 직접 확인한다고 문제가 되지는 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;라이믹스나 비교적 최근 버전의 XE라면 클래스 오토로딩이 적용되어 있으니&lt;/p&gt;
&lt;p&gt;그냥 if(class_exists('TestModel')) 로 체크해도 문제가 없다.&lt;/p&gt;</description>
      <category>모듈 개발 tip</category>
      <author>수표</author>
      <guid isPermaLink="true">https://dev-cordelia.tistory.com/3</guid>
      <comments>https://dev-cordelia.tistory.com/3#entry3comment</comments>
      <pubDate>Thu, 29 Oct 2020 14:12:12 +0900</pubDate>
    </item>
    <item>
      <title>0. 모듈 개발시 꼭 들어가는 사이트</title>
      <link>https://dev-cordelia.tistory.com/2</link>
      <description>&lt;p&gt;1. 모듈 생성 사이트: &lt;a href=&quot;https://www.poesis.org/tools/modulegen/&quot;&gt;https://www.poesis.org/tools/modulegen/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1603947781459&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;POESIS - XE 모듈 생성기&quot; data-og-description=&quot;TOOLS XE 모듈 생성기&quot; data-og-host=&quot;www.poesis.org&quot; data-og-source-url=&quot;https://www.poesis.org/tools/modulegen/&quot; data-og-url=&quot;https://www.poesis.org/tools/modulegen/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/zZ5vx/hyH3NCwa2Q/YidSeX1OVXuBjeL2Jvzlk1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/4v7OU/hyH16X1KKA/RseJfqRLebhiHSrOPVwyK1/img.png?width=512&amp;amp;height=256&amp;amp;face=0_0_512_256&quot;&gt;&lt;a href=&quot;https://www.poesis.org/tools/modulegen/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.poesis.org/tools/modulegen/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/zZ5vx/hyH3NCwa2Q/YidSeX1OVXuBjeL2Jvzlk1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/4v7OU/hyH16X1KKA/RseJfqRLebhiHSrOPVwyK1/img.png?width=512&amp;amp;height=256&amp;amp;face=0_0_512_256');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;POESIS - XE 모듈 생성기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;TOOLS XE 모듈 생성기&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.poesis.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Rhymix 모듈의 토대를 자동으로 생성해주는 사이트이다.&lt;/p&gt;
&lt;p&gt;신규 모듈 만들때, 토대를 다지는 작업을 건너뛸 수 있어 정말 좋다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sRynI/btqL2wfr7wC/5plvXL3oOsE3UHMRlgOmJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sRynI/btqL2wfr7wC/5plvXL3oOsE3UHMRlgOmJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sRynI/btqL2wfr7wC/5plvXL3oOsE3UHMRlgOmJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsRynI%2FbtqL2wfr7wC%2F5plvXL3oOsE3UHMRlgOmJ0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이런식으로 설정을 해준다면 자동으로 모듈을 만들어서 토대 파일을 준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. XE타운: &lt;a href=&quot;https://xetown.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://xetown.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1603947959344&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;XETOWN - 웹마스터 커뮤니티&quot; data-og-description=&quot;웹사이트 구축 및 운영에 관한 웹마스터 커뮤니티입니다.&quot; data-og-host=&quot;xetown.com&quot; data-og-source-url=&quot;https://xetown.com/&quot; data-og-url=&quot;https://xetown.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/H2vkY/hyH3MwQoRM/2IUfFYnWZL6xyhN5pcriN0/img.png?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300,https://scrap.kakaocdn.net/dn/WeQsC/hyH3JtlK6n/zdbGUPXty4rRwe5WkZ6Xg1/img.png?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300&quot;&gt;&lt;a href=&quot;https://xetown.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://xetown.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/H2vkY/hyH3MwQoRM/2IUfFYnWZL6xyhN5pcriN0/img.png?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300,https://scrap.kakaocdn.net/dn/WeQsC/hyH3JtlK6n/zdbGUPXty4rRwe5WkZ6Xg1/img.png?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;XETOWN - 웹마스터 커뮤니티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;웹사이트 구축 및 운영에 관한 웹마스터 커뮤니티입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;xetown.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;모르는 함수나 설정이 있을때, 위 사이트에 들어가서 질문/검색을 해보면 어지간한 정보는 전부 나오게 된다&lt;/p&gt;
&lt;p&gt;정말 없으면 안되는 사이트이다&lt;/p&gt;</description>
      <category>모듈 개발 기초</category>
      <author>수표</author>
      <guid isPermaLink="true">https://dev-cordelia.tistory.com/2</guid>
      <comments>https://dev-cordelia.tistory.com/2#entry2comment</comments>
      <pubDate>Thu, 29 Oct 2020 14:07:11 +0900</pubDate>
    </item>
    <item>
      <title>이 블로그는 Rhymix를 이용한 기능 개발을 위한 팁 블로그입니다</title>
      <link>https://dev-cordelia.tistory.com/1</link>
      <description>&lt;p&gt;이 블로그는 Rhymix(&lt;span style=&quot;color: #333333;&quot;&gt;XpressEngine 1의 개선판)를 사용하며 알게된 개발 팁등을 적는 블로그 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;공식 블로그는 아니며, 저 개인이 직접 모듈/애드온 개발을 위해 공부한 지식들을 적습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;RX가 좀 더 활성화되길 바라며 블로그를 만듭니다&lt;/span&gt;&lt;/p&gt;</description>
      <author>수표</author>
      <guid isPermaLink="true">https://dev-cordelia.tistory.com/1</guid>
      <comments>https://dev-cordelia.tistory.com/1#entry1comment</comments>
      <pubDate>Wed, 28 Oct 2020 16:56:34 +0900</pubDate>
    </item>
  </channel>
</rss>