<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="html">- 안영기의 개발실 - (WIZ / CAANOO / bada)</title>
  <id>http://avej.com/textcube/</id>
  <link rel="alternate" type="text/html" hreflang="ko" href="http://avej.com/textcube/" />
  <subtitle type="html">GP2X WIZ와 CAANNO와 bada용 게임 개발을 하자</subtitle>
  <updated>2012-03-01T10:42:39+09:00</updated>
  <generator>Textcube 1.7.5 : Risoluto</generator>
  <entry>
    <title type="html">POD를 상속한 후손의 assignment operator</title>
    <link rel="alternate" type="text/html" href="http://avej.com/textcube/38" />
    <link rel="replies" type="application/atom+xml" href="http://avej.com/textcube/atom/response/38" thr:count="0"/>
    <category term="프로그래밍" />
    <author>
      <name>(슴갈)</name>
    </author>
    <id>http://avej.com/textcube/38</id>
    <updated>2012-03-01T08:37:31+09:00</updated>
    <published>2012-03-01T08:35:15+09:00</published>
    <summary type="html">&lt;div&gt;최근 정적 분석 툴에 의해 다음의 코드에 문제가 있다는 통보를 받았다.&lt;/div&gt;&lt;div&gt;(실제 코드에서 문제점만 최대한 압축하였다)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;	&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;struct &lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;A&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;		&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;int &lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;a;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;};&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;	&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;class &lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;B: &lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#0000ff&quot;&gt;public &lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;A&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;	&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;B&amp;amp; &lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#0000ff&quot;&gt;operator&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;=(&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#0000ff&quot;&gt;const &lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;B&amp;amp; ref);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;};&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;B&amp;amp; B::&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#0000ff&quot;&gt;operator&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;=(&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#0000ff&quot;&gt;const &lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;B&amp;amp; ref)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;		&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;if &lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;(this == &amp;amp;ref)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;			&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;return &lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;*&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#0000ff&quot;&gt;this&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;		&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;this&lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;-&amp;gt;a = ref.a;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;		&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;return &lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;*this;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;대부분의 경우는 정적 분석 툴의 설명만으로 문제를 수정할 수 있었지만 이 경우는 도저히 어떤 문제가 있는 것인지 알 수가 없었다. 이 자체로는 문제 있는 것이 아니었기에 컴파일러의 warning level을 높여도 문제가 검출 되지 않았다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;그래서, 결국은 SE팀에게 분석을 요청했고 이 문제에 대한 명료한 대답이 돌아 왔다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;아래처럼 변수를 직접 대입하면 (현재는 문제가 없지만) 잠재적인 문제가 있기 때문에&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;	&lt;/span&gt;&lt;font color=&quot;#0000ff&quot;&gt;this&lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;-&amp;gt;a = ref.a;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;다음과 같이 자동으로 &lt;b&gt;만들어질&lt;/b&gt; A의 default assignment operator를 불러야 한다고 한다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;A::&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;operator&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;=(ref);&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;반론을 찾기 위해 이래 저래 의심 나는 부분에 대해서 어셈블리어로 만들어서 분석해 보았는데, 위 같이 하면, 나중에 A가 어떻게 변하더라도 &lt;b&gt;A만 제대로 구현하였다면&lt;/b&gt; B의 assignment operator는 문제가 없는 것으로 확인되었다. 컴파일러가 알아서 저 부분의 코드를 그때 그때에 맞게 잘 변경 해 주었던 것이다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title type="html">OpenGL ES 2.0 샘플 (Android ver.)</title>
    <link rel="alternate" type="text/html" href="http://avej.com/textcube/37" />
    <link rel="replies" type="application/atom+xml" href="http://avej.com/textcube/atom/response/37" thr:count="2"/>
    <category term="Android" />
    <author>
      <name>(슴갈)</name>
    </author>
    <id>http://avej.com/textcube/37</id>
    <updated>2011-12-01T23:17:16+09:00</updated>
    <published>2011-12-01T23:04:34+09:00</published>
    <summary type="html">원래는 Android용 게임을 만들어 보려고 OpenGL Es 2.0을 이용하여 3D 및 스프라이트 등을 출력하는 기본 라이브러리를 만들고 있었다. 그렇게 시작한 것이 벌써 1년이 지났다.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;하지만 시간에 쫓기다 보니 우선 순위에서 계속 밀리게 되었고 자칫하다가는 영원히 Android용 게임은 완성되지 않은 채로 프로젝트가 끝나지 않을까 하는 우려까지 하고 있다. 여전히 Android용 게임 제작은 전체 우선 순위에서 밀리고 있고&lt;font color=&quot;#c1c1c1&quot;&gt;(Java에 익숙하지 않은 탓과 Java로는 개인 라이브러리가 구축된 것이 없다는 것이 가장 큰 걸림돌이다)&lt;/font&gt; 끝까지 성공해낼 확률은 꽤 낮은 편이다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;이것은 가장 초기에 만들었던 출력 테스트 샘플이다. Cube가 제대로 도는지 확인 해본 것이고 shader로 vertex, diffuse color, texture 출력까지 만들어 본 것이다. 간단한 터치도 테스트 해보기 위해 터치를 한 위치에 cube가 돈다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://avej.com/textcube/attach/1/2143616241.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;422&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://avej.com/textcube/attachment/1706623564.zip&quot;&gt;&lt;img src=&quot;http://avej.com/textcube/image/extension/zip.gif&quot; alt=&quot;&quot; /&gt; CubeSampleViewActivity.zip&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Android용 OpenGL ES 2.0 출력 샘플 (44K)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;프로젝트가 1.5 이상용인데, 너무 구형 프로젝트인지 실제로 import를 해보면 프로젝트 파일 관련 에러가 난다. 에러가 난 메시지로 구글에 검색해보면 프로젝트 파일 고치는 법이 나오는데, 그 방법을 써서 수정하면 된다.&lt;/font&gt;&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title type="html">동급생2 맵출력 샘플 (bada ver.)</title>
    <link rel="alternate" type="text/html" href="http://avej.com/textcube/36" />
    <link rel="replies" type="application/atom+xml" href="http://avej.com/textcube/atom/response/36" thr:count="0"/>
    <category term="bada, 바다" />
    <author>
      <name>(슴갈)</name>
    </author>
    <id>http://avej.com/textcube/36</id>
    <updated>2011-11-06T08:42:51+09:00</updated>
    <published>2011-11-06T02:22:34+09:00</published>
    <summary type="html">&lt;div&gt;여느 때처럼 아침에 일찍 일어 났다. 하지만 오늘은 토요일이고 모처럼 회사를 안 가도 되는 토요일이다 보니 갑자기 시간이 너무 많아졌던 것이다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;딱 하루짜리 프로젝트를 해 보자는 생각에 15년 전에 한글화 할 때 끄적였던 리소스들을 꺼내어서 간단한 맵 출력 샘플을 만들기로 하고 아침에 app 개발을 위한 manifest.xml 을 발급 받았다. 그리고 오전과 밤시간을 이용해서 만든 것이 아래의 결과물이다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://avej.com/textcube/attach/1/2082334722.png&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;576&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;십 몇 년 전에, 게제동을 통해서 DOS용으로 pascal과 asm을 이용해서 만들어서 소스를 공개했던 것인데 이것을 bada 용으로 만들어 보았다. 언어도 pascal + asm에서 C++로 바뀌었고 구조도 완전히 다 바뀐 것이라 완전히 새로 만드는 기분이었다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;일단 bada app의 이야기인 app을 만든 방법은,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- 기본 C++ project에서 Form-Base app을 선택&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- 처음부터 있는 기본 Form을 타이틀이 없는 Form으로 수정&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- 더불어 UI 관련 xml은 삭제&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- application.xml 에서 auto scaling 관련 옵션 제거&lt;br&gt;&amp;nbsp; (게임에는 사용하지 않는 편이 품질을 보장할 수 있음)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- manifest는 API 1.0 version으로 발급&lt;br&gt;&amp;nbsp; (더 많은 기기와 버전에서 동작하도록 하기 위함)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- Application에는 Timer와 관련 listener를 추가&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- Application의 OnForeground에서는 timer를 ON&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- Application의 OnBackground에서는 timer를 OFF 했습니다.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#9b18c1&quot;&gt;- Timer 이벤트가 발생할 때마다 10 ms의 간격으로 게임의 메인 루프를 실행&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#009966&quot;&gt;- 게임은 1995~6년도의 원작의 resource를 그대로 사용&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#ff3399&quot;&gt;&lt;b&gt;&amp;nbsp; (ELF사에 저작권이 있는 부분입임)&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#009966&quot;&gt;- 당시 4-bit용 게임이었으므로 GetCanvasN()의 포맷인 ARGB8888로 리소스를 변경&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#009966&quot;&gt;- 터치 입력을 추가, 스크린의 4 방향의 가장자리를 누르면 유이가 움직임&lt;/font&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://avej.com/textcube/attachment/1039516659.zip&quot;&gt;&lt;img src=&quot;http://avej.com/textcube/image/extension/zip.gif&quot; alt=&quot;&quot; /&gt; dokyusei2_public_.zip&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;bada용 동급생 2 맵 출력 샘플 (257K)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title type="html">대변 파이터 (bada 이식作)</title>
    <link rel="alternate" type="text/html" href="http://avej.com/textcube/35" />
    <link rel="replies" type="application/atom+xml" href="http://avej.com/textcube/atom/response/35" thr:count="8"/>
    <category term="bada, 바다" />
    <author>
      <name>(슴갈)</name>
    </author>
    <id>http://avej.com/textcube/35</id>
    <updated>2011-10-21T07:58:22+09:00</updated>
    <published>2011-10-17T07:40:00+09:00</published>
    <summary type="html">&lt;div&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Gulim; line-height: normal; font-size: small; &quot;&gt;이번에는 DOS -&amp;gt; Windows -&amp;gt; WIZ -&amp;gt; CANNOO를 거쳐 bada 플랫폼에도 &lt;b&gt;대변 파이터&lt;/b&gt;를 이식해 보았다. (앱스토어에 올릴 수가 없으니 풀소스로 첨부)&lt;br&gt;&lt;br&gt;해상도가 800x480으로 커졌기 때문에 CANNOO에서까지 써왔던 320x240용 리소스는 모두 교체를 했다. 예전의 DOS용 16컬러 데이터를 복원하였고 일부 대사도 현재에 맞게 수정하였다.&lt;br&gt;&lt;br&gt;제일 어려웠던 것은, 키보드 전용 게임을 풀터치로 만드는 일이었는데 결과적으로는 재미없는 게임이 되고 말았다. 처음부터 풀터치로 기획되지 않은 게임을 풀터치에 올리려는 자체가 잘 못 된 것이다. 게다가 2인용도 불가능 해서 하나의 조작으로 둘 다 동시에 움직이는 키배치로 수정을 하였다.&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Gulim; line-height: normal; font-size: small; &quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Gulim; line-height: normal; font-size: small; &quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://avej.com/textcube/attach/1/1662131993.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;864&quot; width=&quot;360&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://avej.com/textcube/attachment/1457466612.zip&quot;&gt;&lt;img src=&quot;http://avej.com/textcube/image/extension/zip.gif&quot; alt=&quot;&quot; /&gt; _ShitFighter_public_.zip&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;div style=&quot;text-align: center;&quot;&gt;bada용 대변 파이터 (569K)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Gulim; line-height: normal; font-size: small; &quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Gulim; line-height: normal; font-size: small; &quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</summary>
  </entry>
  <entry>
    <title type="html">나머지 연산자에 의한 실수</title>
    <link rel="alternate" type="text/html" href="http://avej.com/textcube/34" />
    <link rel="replies" type="application/atom+xml" href="http://avej.com/textcube/atom/response/34" thr:count="0"/>
    <category term="프로그래밍" />
    <author>
      <name>(슴갈)</name>
    </author>
    <id>http://avej.com/textcube/34</id>
    <updated>2011-08-07T21:12:45+09:00</updated>
    <published>2011-08-07T21:12:41+09:00</published>
    <summary type="html">&lt;div&gt;아래와 같은 코드를 만들었다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;예로 들기 위해서 만든 것이라 별 의미는 없는 struct인데, time_stamp라는 값이 들어 왔을 때 이 값을 짝수이면 내부 변수에 -1을, 홀수이면 +1을 대입하도록 하였다. 그리고 다음과 같이 &lt;u&gt;짝수는 2로 나눈 나머지가 0이라는 것&lt;/u&gt;을 이용해 switch - case 문을 만들었다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;	&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#0000ff&quot;&gt;struct &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;Step&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;		&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#0000ff&quot;&gt;explicit &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;Step(&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#0000ff&quot;&gt;int &lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;time_stamp)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#008000&quot;&gt;&lt;i&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt;			&lt;/span&gt;// 어떤 값을 2로 나누었을 때,&lt;/i&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#008000&quot;&gt;&lt;i&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt;			&lt;/span&gt;// 나머지 값은 0 또는 1만 가능하다.&lt;/i&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;			&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#0000ff&quot;&gt;switch &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;(time_stamp % 2)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;			&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#0000ff&quot;&gt;case &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;0:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;m_step = -1; break;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;			&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#0000ff&quot;&gt;case &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;1:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;m_step = +1; break;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;		&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#0000ff&quot;&gt;int &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;m_step;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(0, 0, 0); white-space: pre; &quot;&gt;	&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#0000ff&quot;&gt;private&lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Step();&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#000000&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;};&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;이런 방식의 코드를 Test case를 만들기 위한 유틸리티로 집어 넣었고, 곧바로 정적 코드 분석 툴에 의해 위의 코드는 잠재적인 문제가 있다는 통보를 받았다. 지금 보면 당연한 것인데도 보고를 받고 문제를 알아차리는 데는 십 분 정도 걸렸다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;정답은, 특정 조건에서는 생성자에서 m_step에 값을 대입하지 않아서 가비지 값으로 남아 있을 수 있다는 것이고, 그것에 대한 직접 적인 원인은 &lt;u&gt;time_stamp 변수가 음수일 때&lt;/u&gt;를 고려 하지 않았기 때문이다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;0 이하일 때 나머지 계산의 값을 보면,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot; color=&quot;#ff3399&quot;&gt;time_stamp = 0, -2, -4, -6, -8, … 일 때는 0&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;&#039;Courier New&#039;, courier, monospace&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#ff3399&quot;&gt;time_stamp = -1, -3, -5, -7, -9, … 일 때는 &lt;/font&gt;&lt;b&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#ff0000&quot;&gt;&lt;u&gt;-1&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;의 값이 된다. 따라서 이 경우는 위의 코드에서 case -1: 을 추가 해야만 정적 분석 툴에서 문제를 통보하지 않는다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</summary>
  </entry>
</feed>

