<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Trendism Kelvin</title>
		<link>http://kelvin.co.kr/</link>
		<description>절대 아파트 사지 마세요. 특히 대출 받아서 아파트 사시면 큰일 납니다. 마지막 폭탄돌리기에 걸려들리 마세요. 냉정해 져야 합니다.</description>
		<language>ko</language>
		<pubDate>Wed, 31 Aug 2011 15:07:21 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<image>
		<title>Trendism Kelvin</title>
		<url><![CDATA[http://cfs14.tistory.com/upload_control/download.blog?fhandle=YmxvZzE2MjMzM0BmczE0LnRpc3RvcnkuY29tOi9hdHRhY2gvMC8wLmpwZw%3D%3D]]></url>
		<link>http://kelvin.co.kr/</link>
		<description>절대 아파트 사지 마세요. 특히 대출 받아서 아파트 사시면 큰일 납니다. 마지막 폭탄돌리기에 걸려들리 마세요. 냉정해 져야 합니다.</description>
		</image>
		<item>
			<title>FLEX labelfunction:formatDate</title>
			<link>http://kelvin.co.kr/entry/FLEX-labelfunctionformatDate</link>
			<description>&lt;br /&gt;/**************** Data String Format *********************/&lt;br /&gt;private function formatDate(item:Object, col:DataGridColumn):String {&lt;br /&gt;&amp;nbsp;var date:String = item.ENTRYDATE.toString();&lt;br /&gt;&amp;nbsp;if(date==null || date.length&amp;lt;12)&lt;br /&gt;&amp;nbsp; return &quot;&quot;;&lt;br /&gt;&amp;nbsp;else&lt;br /&gt;&amp;nbsp; return date.substring(2, 4)+&quot;.&quot;+date.substring(4, 6)+&quot;.&quot;+&lt;br /&gt;&amp;nbsp; &amp;nbsp; date.substring(6, 8)+&quot; &quot;+date.substring(8, 10)+&quot;:&quot;+date.substring(10, 12);&lt;br /&gt;}</description>
			<category>Flex</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/40</guid>
			<comments>http://kelvin.co.kr/entry/FLEX-labelfunctionformatDate#entry40comment</comments>
			<pubDate>Tue, 22 Jul 2008 11:10:26 +0900</pubDate>
		</item>
		<item>
			<title>apache commons-fileupload 간단 사용법[펌]</title>
			<link>http://kelvin.co.kr/entry/apache-commons-fileupload-%EA%B0%84%EB%8B%A8-%EC%82%AC%EC%9A%A9%EB%B2%95%ED%8E%8C</link>
			<description>&lt;P&gt;&lt;br /&gt;&lt;br /&gt;사용법을 간단히 살펴보면&lt;/P&gt;
&lt;P&gt;우선 멀티파트인지 체크한다.&lt;/P&gt;
&lt;P&gt;// Check that we have a file upload request&lt;br /&gt;boolean isMultipart = ServletFileUpload.isMultipartContent(request);&lt;/P&gt;
&lt;P&gt;그렇다면 이런 식으로 FileItem 을 얻는다.&lt;/P&gt;
&lt;P&gt;// Create a factory for disk-based file items&lt;br /&gt;FileItemFactory factory = new DiskFileItemFactory();&lt;/P&gt;
&lt;P&gt;// Create a new file upload handler&lt;br /&gt;ServletFileUpload upload = new ServletFileUpload(factory);&lt;/P&gt;
&lt;P&gt;// Parse the request&lt;br /&gt;List /* FileItem */ items = upload.parseRequest(request);&lt;/P&gt;
&lt;P&gt;추가적으로 factory 를 설정할 수 있다.&lt;/P&gt;
&lt;P&gt;// Set factory constraints&lt;br /&gt;factory.setSizeThreshold(yourMaxMemorySize);&lt;br /&gt;factory.setRepository(yourTempDirectory);&lt;/P&gt;
&lt;P&gt;// Set overall request size constraint&lt;br /&gt;upload.setSizeMax(yourMaxRequestSize);&lt;/P&gt;
&lt;P&gt;추가적인 설정이 없으면 기본값은 다음과 같다.&lt;/P&gt;
&lt;P&gt;* threshold 는 10KB.&lt;br /&gt;* 기본 저장 디렉토리는 System.getProperty(&quot;java.io.tmpdir&quot;) 의 값.&lt;/P&gt;
&lt;P&gt;FileItem 에는 첨부파일만 올라오는 것이 아니라 POST Form 으로 넘어오는 다른 값도 포함되나 보다. 다음과 같이 이들을 구분한다.&lt;/P&gt;
&lt;P&gt;// Process the uploaded items&lt;br /&gt;Iterator iter = items.iterator();&lt;br /&gt;while (iter.hasNext()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; FileItem item = (FileItem) iter.next();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; if (item.isFormField()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; processFormField(item);&lt;br /&gt;&amp;nbsp; &amp;nbsp; } else {&lt;br /&gt;&amp;nbsp; &amp;nbsp; processUploadedFile(item);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/P&gt;
&lt;P&gt;폼 필드는 다음과 같이 처리&lt;/P&gt;
&lt;P&gt;// Process a regular form field&lt;br /&gt;if (item.isFormField()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; String name = item.getFieldName();&lt;br /&gt;&amp;nbsp; &amp;nbsp; String value = item.getString();&lt;br /&gt;&amp;nbsp; &amp;nbsp; ...&lt;br /&gt;}&lt;/P&gt;
&lt;P&gt;실제 업로드 한 파일은 다음과 같이 처리&lt;/P&gt;
&lt;P&gt;// Process a file upload&lt;br /&gt;if (!item.isFormField()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; String fieldName = item.getFieldName();&lt;br /&gt;&amp;nbsp; &amp;nbsp; String fileName = item.getName();&lt;br /&gt;&amp;nbsp; &amp;nbsp; String contentType = item.getContentType();&lt;br /&gt;&amp;nbsp; &amp;nbsp; boolean isInMemory = item.isInMemory();&lt;br /&gt;&amp;nbsp; &amp;nbsp; long sizeInBytes = item.getSize();&lt;br /&gt;&amp;nbsp; &amp;nbsp; ...&lt;br /&gt;}&lt;/P&gt;
&lt;P&gt;업로드 된 파일을 대부분은 서버의 어느 곳에 저장할 것이다. 아니면 그냥 바로 읽어 처리할 수도 있다. 아래와 같다.&lt;/P&gt;
&lt;P&gt;// Process a file upload&lt;br /&gt;if (writeToFile) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; File uploadedFile = new File(...);&lt;br /&gt;&amp;nbsp; &amp;nbsp; item.write(uploadedFile);&lt;br /&gt;} else {&lt;br /&gt;&amp;nbsp; &amp;nbsp; InputStream uploadedStream = item.getInputStream();&lt;br /&gt;&amp;nbsp; &amp;nbsp; ...&lt;br /&gt;&amp;nbsp; &amp;nbsp; uploadedStream.close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;* 출처 : &lt;A href=&quot;http://blog.naver.com/shinji0717?Redirect=Log&amp;amp;logNo=10022065506&quot;&gt;http://blog.naver.com/shinji0717?Redirect=Log&amp;amp;logNo=10022065506&lt;/A&gt;&lt;/P&gt;</description>
			<category>Java</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/38</guid>
			<comments>http://kelvin.co.kr/entry/apache-commons-fileupload-%EA%B0%84%EB%8B%A8-%EC%82%AC%EC%9A%A9%EB%B2%95%ED%8E%8C#entry38comment</comments>
			<pubDate>Fri, 27 Jun 2008 11:05:44 +0900</pubDate>
		</item>
		<item>
			<title>FLEX Application  및 RIA 개발 시 5가지 Advice</title>
			<link>http://kelvin.co.kr/entry/FLEX-Application-%EB%B0%8F-RIA-%EA%B0%9C%EB%B0%9C-%EC%8B%9C-5%EA%B0%80%EC%A7%80-Advice</link>
			<description>&lt;P&gt;&lt;STRONG&gt;&lt;br /&gt;1.&amp;nbsp; Avoid embed containers inside other containers. Reducing use of relative size and relative position&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When the element size in container is described by percent, any change of the size or postion will take the re-position for all subset in container. The calculation will be great if the level of embed is deep. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. Using lightweight containers like Canvas As far as possible&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Canvas is the smallest container and only support absolutely positioin. Most time it could instead HBOx and VBox. Besides, Canvas is a first choice for us when custom containers. It has basic container function and good expand ability.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3. Avoid using large components like DataGrid, AdvancedDataGrid&lt;/STRONG&gt; &lt;br /&gt;Large components have powerful function but need high requirement for memory and CPU. Because of the complexity, it is difficult to realize the skin, patterns and itemRenderer.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4. Using paging when deal with data&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When using data type control, as far as possible to minimze the amount of showing data. For example Tilelist, it will create all the data whether need or not. It will waste large resoures. When ViewStack 、TabNavigator, etc. dealing with element, data will not be created until they’re shown first time. The unnecessary cost will be avoided. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5. setStyle and styleName&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In fact,the skin of Flex components is a visual element. In process of components initialization, they will use current style(for example:styleName) to finish all the skin elements.If we reset the style, the size of components by setStyle, the postion will also be adjusted. Link to the first point, if components in a deep level embed container will cost large calculation.&lt;/P&gt;</description>
			<category>Flex</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/37</guid>
			<comments>http://kelvin.co.kr/entry/FLEX-Application-%EB%B0%8F-RIA-%EA%B0%9C%EB%B0%9C-%EC%8B%9C-5%EA%B0%80%EC%A7%80-Advice#entry37comment</comments>
			<pubDate>Wed, 18 Jun 2008 18:01:05 +0900</pubDate>
		</item>
		<item>
			<title>오류를 범하기 쉬운 Flex 코딩 바로잡기 [펌]</title>
			<link>http://kelvin.co.kr/entry/%EC%98%A4%EB%A5%98%EB%A5%BC-%EB%B2%94%ED%95%98%EA%B8%B0-%EC%89%AC%EC%9A%B4-Flex-%EC%BD%94%EB%94%A9-%EB%B0%94%EB%A1%9C%EC%9E%A1%EA%B8%B0-%ED%8E%8C</link>
			<description>&lt;P&gt;&lt;br /&gt;오류를 범하기 쉬운 Flex 코딩 바로잡기&lt;/P&gt;
&lt;P&gt;컴퓨팅 기술은 나날이 빠르게 발전하여 우리의 컴퓨터 환경을 바꾸고 있다. 불과 몇 년 전만 해도 텍스트 위주의 화면구성을 사용자에게 보여주었던 것에 불과한 것이 이제는 이미지와 텍스트 그리고 동영상을 수반한 UCC라는 개념이 등장했다. 이에 사용자들은 좀 더 사용자 위주의 UI를 원하게 되었고, 그에 따라 사용자들을 만족시키기 위해 새로운 개념 RIA(Rich Internet Application)이 탄생하게 되었다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;RIA 기반의 프로그램은 이전의 순차적 웹 페이지 방식이 아닌 이벤트 방식을 수반하고 있으며, 웹 개발자 또한 이에 발맞추어 새로운 방식으로 구조를 설계하고 개발할 필요가 있게 되었다. 그리고 Flex 또한 애플리케이션과 같은 이벤트 방식을 취하고 있다.&lt;/P&gt;
&lt;P&gt;Flex는 애플리케이션과는 또 다르게 Flex만의 UI 특징이 있으며 이를 제대로 숙지하지 않은 상태에서 개발해나간다면 상당한 어려움에 빠질 수 있다. 이 문서는 Flex 개발시 고려해야 할 점을 이야기하며, 실무 개발에 도움이 됐으면 한다. &lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Effect가 지니고 있는 점&lt;/P&gt;
&lt;P&gt;Effect는 Flex에서 아주 빈번하게 사용되지만 때때로 사용자의 예외적인 반응에 의해&lt;/P&gt;
&lt;P&gt;제대로 작동을 하지 않아 사용자나 개발자 둘 다 당혹하게 만드는 경우가 있다. 그 문제는 다음의 Listing 1.1 에서 확인할 수 있다. &lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Left 버튼을 누르고 target으로 이동하는 사이에 Right 버튼을 클릭하면 당장 오른쪽으로 이동하지도 않을뿐더러 중간중간 멈칫하기도 한다. 따라서 Right 버튼을 누른 사용자는 자신이 원하는 방향으로 이동하지 않았기 때문에 이것을 버그라고 생각하게 된다.&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;mx:Application xmlns:mx=&quot;&lt;A href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/A&gt;&quot; layout=&quot;vertical&quot;&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Move id=&quot;btnMover&quot; duration=&quot;2000&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button id=&quot;target&quot; label=&quot;&lt;A href=&quot;http://www.adobeflex.co.kr&quot;&gt;www.adobeflex.co.kr&lt;/A&gt;&quot; moveEffect=&quot;{btnMover}&quot;/&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&quot;Left&quot; click=&quot;target.x = 10&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&quot;Right&quot; click=&quot;target.x = 500&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 1.1 - Effect 오류 가능성이 있는 Flex 소스&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Move의 부모 클래스에 해당하는 Effect의 play() 메쏘드를 살펴보면 그 어디에도&lt;/P&gt;
&lt;P&gt;이팩트가 작동 중이었을 경우 다시 실행하는 문제에 대해 처리하지 않고 있다. 이 문제는 isPlaying&amp;nbsp; 속성을 사용하여 다음과 같은 방법으로 해결해 보았다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;mx:Application xmlns:mx=&quot;&lt;A href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/A&gt;&quot; layout=&quot;vertical&quot;&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Move id=&quot;btnMover&quot; duration=&quot;2000&quot;/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button id=&quot;target&quot; label=&quot;&lt;A href=&quot;http://www.adobeflex.co.kr&quot;&gt;www.adobeflex.co.kr&lt;/A&gt;&quot; moveEffect=&quot;{btnMover}&quot;/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&quot;Left&quot; click=&quot;leftClick()&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&quot;Right&quot; click=&quot;rightClick()&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function leftClick():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; if(btnMover.isPlaying) btnMover.stop();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; target.x = 10;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; btnMover.play();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function rightClick():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; if(btnMover.isPlaying) btnMover.stop();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; target.x = 500;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; btnMover.play();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:Application&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 1.2 - Effect 오류 가능성 제거&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;함수 rightClick() 안쪽을 살펴 보면 isPlaying 속성의 반환 값을 체크한 뒤에 stop()&lt;/P&gt;
&lt;P&gt;메쏘드를 호출하는 방법을 사용하였다.&lt;/P&gt;
&lt;P&gt;이제 rightClick()는 안전하게 중지된 시점부터 다시 새로운 지점으로의 자연스런 이동이 가능하게 구현되었다. 다만 stop() 메쏘드는 SDK 3부터 지원하기 때문에 이전의 버전의 SDK를 사용한 애플리케이션은 이 방법을 사용할 수가 없다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;잘못된 addChild의 사용법&lt;/P&gt;
&lt;P&gt;addChild, removeChild는 컨테이너에 컨트롤들을 등록하는 가장 쉬운 방법이다. 하지만 addChild를 사용할 때 반드시 지켜야 할 점이 있는데, 그것은 사용자 반응과 연동시켜서는 안 된다는 것이다. &lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;mx:Application xmlns:mx=&quot;&lt;A href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/A&gt;&quot; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; layout=&quot;vertical&quot; initialize=&quot;initApp()&quot;&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&quot;addChild&quot; click=&quot;addChildClick()&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&quot;removeChild&quot; click=&quot;removeChildClick()&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; import mx.controls.Label;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private var _child:Label = new Label();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function initApp():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _child.text = &quot;&lt;A href=&quot;http://www.adobeflex.co.kr&quot;&gt;www.adobeflex.co.kr&lt;/A&gt;&quot;; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function addChildClick():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; addChild(_child);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function removeChildClick():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; removeChild(_child);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:Application&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&lt;br /&gt;&amp;nbsp;Listing 2.1 - 컨트롤과 addChild를 연동시킨 예&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 2.1에서 ‘addChild’버튼을 누르면 ‘www.adobeflex.co.kr’ 이라는 문구가 뜨고&lt;/P&gt;
&lt;P&gt;‘removeChild’ 를 누르면 화면에서 사라집니다. 우리는 아주 간단한 동작만으로 치명적인 에러 메시지를 만들 수 있다. Remove 버튼을 두 번 눌러보면 콘솔 창에 다음과 같은 문구가 뜰 것이다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;ArgumentError: Error #2025: 제공된 DisplayObject는 호출자의 자식이어야 합니다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;여기에서 무엇이 잘못된 것일까? removeChild 안쪽에는 반드시 타겟이 해당 메쏘드의 자식으로 등록된 DisplayObject만이 해지할 수 있도록 만들어져 있다. 여기에 엉뚱한 다른 컨테이너의 자식을 넣게 되면 위와 같은 메시지가 발생하게 되는 것이다.&lt;/P&gt;
&lt;P&gt;try~catch로 예외 처리를 하게 되면 이 오류메시지를 피할 수 있다. 하지만 이렇게 등록과 해제를 하게 되는 과정에서 외부 함수가 접근하려 했을 때 _child 의 접근에 신뢰를 가지기가 힘들게 된다. 여기서 말하고자 하는 점은 메쏘드 addChild가 아닌 사용자의 반응에 직접적으로 addChild를 호출한 점이 문제인 것이다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;좀 더 복잡한 경우 이 Label의 showEffect 또는 hideEffect가 등록되어 있다면 이 이팩트의 실행여부를 판단해주어야 하는 점도 있다. 이런 점은 visible 속성을 사용하는 것으로 해결할 수 있다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;mx:Application xmlns:mx=&quot;&lt;A href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/A&gt;&quot; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; layout=&quot;vertical&quot; initialize=&quot;initApp()&quot;&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&quot;addChild&quot; click=&quot;addChildClick()&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&quot;removeChild&quot; click=&quot;removeChildClick()&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; import mx.controls.Label;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; private var btn:Label = new Label();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; public function initApp():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btn.text = &quot;&lt;A href=&quot;http://www.adobeflex.co.kr&quot;&gt;www.adobeflex.co.kr&lt;/A&gt;&quot;; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; addChild(btn);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; public function addChildClick():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btn.visible = true;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; public function removeChildClick():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btn.visible = false;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:Application&amp;gt;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;
&lt;P&gt;Listing 2.2 - visible 속성의 사용&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;addChild를 사용자 반응과 관계 없는 initApp() 메쏘드에 삽입함으로써 유저의 버튼 동작에 신경 쓰지 않아도 되고, 전체적인 버튼 접근에 관한 잠재 가능성을 배제할 수 있게 되었다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;컴포넌트 밖 외부데이터와의 처리&lt;/P&gt;
&lt;P&gt;Flex의 데이터 바인딩은 개발자의 복잡한 소스를 아주 쉽고 간단하게 만들어준다. 그 외에도 외부데이터의 응답시간을 신경 쓸 필요가 없다는 장점이 있다. 이는 itemRenderer&amp;nbsp; 같은 데이터와 해당 컴포넌트의 시점을 가늠할 수 없을 때에도 사용된다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 3.1 은 바인딩 되지 않은 형태로 itemRenderer를 통해 컨트롤에 삽입해 봤다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;mx:itemRenderer&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;mx:Component&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Box&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; override public function set data(value:Object):void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; output.text = value.toString();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; super.data = value;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Label id=&quot;output&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/mx:Box&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:Component&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:itemRenderer&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 3.1 - 외부데이터를 인라인 컴포넌트 컨트롤에 적용&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 3.1은 몇몇의 경우에는 문제를 일으키지 않을 경우가 있다. 하지만 웹 상에서 데이터를 읽어오는 경우 또는 컴포넌트가 생성되지 않았을 시점에 데이터가 들어오는 경우 null 객체 참조 에러가 발생하게 된다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;TypeError: Error #1009: null 객체 참조의 속성이나 메쏘드에 액세스할 수 없다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;그 외에도 null 이 데이터에 들어왔을 경우도 생각해야 한다. 데이터 바인딩은 이러한 경우에 많은 도움이 된다. 컴포넌트의 생성 시점을 생각할 필요가 없기 때문이다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;mx:itemRenderer&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;mx:Component&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Box&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [Bindable] private var outputStr:String;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; override public function set data(value:Object):void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; outputStr = value.toString();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; super.data = value;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Label text=&quot;{outputStr}&quot; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/mx:Box&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:Component&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:itemRenderer&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 3.2 - 바인딩을 이용한 외부데이터 처리&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;위와 같이 외부 데이터와 컨트롤을 바인딩으로 묶어줌으로써 이 문제는 해결된다. 이처럼 외부데이터가 컨트롤에 직접 접근하는 것은 피해야 할 방법 중 하나이다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;코드와 뷰의 완벽한 분리&lt;/P&gt;
&lt;P&gt;현재MXML 기반의 Flex는 화면을 다른 파일로 관리하지 않는 한 코드와 뷰를 분리하기란 쉽지가 않다. 따라서 이를 혼용 사용하다 보면 때때로 서로 섞이게 되어 난잡한 코드를 작성하게 될 경우가 많다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;mx:Panel &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; xmlns:mx=&quot;&lt;A href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/A&gt;&quot; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; layout=&quot;absolute&quot; width=&quot;400&quot; height=&quot;300&quot;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; initialize=&quot;initPanel()&quot;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; import mx.controls.Button;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private var closeBtn:Button = new Button();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private function initPanel():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; closeBtn.width = 100;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; closeBtn.height = 20;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; closeBtn.label = &quot;close&quot;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; override protected function createChildren():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; super.createChildren();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; titleBar.addChild(closeBtn);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;/mx:Panel&amp;gt;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;
&lt;P&gt;Listing 4.1-&amp;nbsp; 코드에 의존한 Panel 컴포넌트&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 4.1은 Panel titleBar에 버튼을 추가하는 내용을 코드에 너무 의존한 형태인데 Flex에 익숙하지 않은 프로그래머들이 자주 사용하게 되는 패턴이라고도 볼 수 있다. Flex 프로젝트의 특성상 디자인은 자주 바뀌게 되는데 이렇게 디자인 요소를 코드상에 표현하게 되면 유지보수가 어렵고 개발에 많은 시간이 소요된다. 이것을 태그 형태로 바꾸어 보도록 하자. &lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;mx:Panel xmlns:mx=&quot;&lt;A href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/A&gt;&quot; layout=&quot;absolute&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; override protected function createChildren():void&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; super.createChildren();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; titleBar.addChild(closeBtn);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]]&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;mx:Button id=&quot;closeBtn&quot; width=&quot;100&quot; height=&quot;20&quot; label=&quot;close&quot;/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:Panel&amp;gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;Listing 4.2 - 디자인을 태그로 표현한 Panel 컴포넌트&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;보기에도 간편할 뿐 아니라 디자인 모드에서도 수정이 가능한 형태로 바뀌었다. 이처럼 태그는 코딩의 속도를 높여줄 뿐만 아니라 유지보수 및 소스분석에도 많은 장점들을 가지고 있다. 그렇다고 무작정 태그가 좋은 건 아니다. 태그의 표현에도 한계가 있기 때문이다. 여기서 태그와 코드가 가져가야 하는 부분을 나누어 생각해 보았다.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;1. 비주얼 컴포넌트(Visual Component)는 모두 태그 기반으로 가야 한다.&lt;/P&gt;
&lt;P&gt;2. 넌 비주얼 컴포넌트 중 이벤트 기반의 컴포넌트는 태그로 가야 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 예) HTTPService , Timer , Effect , TargetTrace … &lt;/P&gt;
&lt;P&gt;3. 넌 비주얼 컴포넌트 중 Formatter, Validator는 태그로 가야 한다.&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;이상으로 Flex 개발시 참고하면 좋은 사항을 살펴봤다. 현재 Flex의 요구가 점점 많아지고 있는 추세이며 새로운 Flex 개발자들이 늘어나고 있기에, 본 글이 개발시 조금이나마 도움이 됐으면 하나 바람이다. Flex의 특징을 이해하고 MXML 자체의 특성을 잘 받아들인다면 훨씬 훌륭한 코드를 작성하게 될 것이다.&lt;br /&gt;&lt;br /&gt;* 출처 : &lt;A href=&quot;http://www.adobeflex.co.kr/iwt/board/board.php?tn=pds_tech&amp;amp;id=163&amp;amp;mode=view&quot;&gt;http://www.adobeflex.co.kr/iwt/board/board.php?tn=pds_tech&amp;amp;id=163&amp;amp;mode=view&lt;/A&gt;&lt;/P&gt;</description>
			<category>Flex</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/35</guid>
			<comments>http://kelvin.co.kr/entry/%EC%98%A4%EB%A5%98%EB%A5%BC-%EB%B2%94%ED%95%98%EA%B8%B0-%EC%89%AC%EC%9A%B4-Flex-%EC%BD%94%EB%94%A9-%EB%B0%94%EB%A1%9C%EC%9E%A1%EA%B8%B0-%ED%8E%8C#entry35comment</comments>
			<pubDate>Wed, 11 Jun 2008 11:23:31 +0900</pubDate>
		</item>
		<item>
			<title>Shallow copy 와 Deep copy [펌]</title>
			<link>http://kelvin.co.kr/entry/Shallow-copy-%EC%99%80-Deep-copy-%ED%8E%8C</link>
			<description>&lt;br /&gt;AS3.0이든 자바든..&lt;br /&gt;&lt;br /&gt;누구나 다 한번씩은 겪었을 참조 복사. 즉 reference복사에 대해 몇 자 끄적여 보겠다.&lt;br /&gt;어딜 가든 이에 대한 질문은 늘 올라오는 듯하여...ㅋㅋ&lt;br /&gt;&lt;br /&gt;어떤 질문인가 들여다보자면...&lt;br /&gt;&lt;br /&gt;&quot;제가 A라는 객체를 B라는 객체로 복사해서 어떤 조작을 했는데 B객체 뿐만 아니라 A객체까지 값이 변했어요&quot;&lt;br /&gt;&quot;제가 A라는 배열을 B라는 배열에 복사해서 B라는 배열의 값들에 대해 정렬을 했는데 A 배열의 값까지 정렬이 되버렸어요.&quot;&lt;br /&gt;&lt;br /&gt;어떤 어플리케이션에서 프로그램 실행중에 저런 문제가 발생했다면 생각만해도 아찔하다.&lt;br /&gt;특히나 돈이 걸려있는 금융쪽이라면 더더욱.^^;(의도되지 않은 코드라는 전제하에..ㅋㅋ)&lt;br /&gt;&lt;br /&gt;자 ...우리 개발자들이 이런 기초적인 실수를 하지 않기 위해선&lt;br /&gt;Shallow copy와 Deep copy에 대해 잘 기억하고 있어야 한다.&lt;br /&gt;&lt;br /&gt;아! 본론으로 돌아와서 왜 저런 문제가 생기나요? 물으신다면...&lt;br /&gt;이에 대한 답변은 당신은 &quot;참조 복사, 즉 주소값만 복사했기 때문입니다.&quot; 이라고 답하겠다.&lt;br /&gt;( Pass by Value 가 아니라 Pass by Reference임을 잊지 마시오~~^^)&lt;br /&gt;&lt;br /&gt;Shallow copy. 얕은 복사. 단순 복사라고 부르는데. &lt;br /&gt;자바나 AS3.0은 객체지향언어로서 모든 객체들은 레퍼런스, 즉 참조값이다.&lt;br /&gt;우리가 흔히 지정하는 변수명은 실제 변수가 있는 메모리 공간을&amp;nbsp; 가리키고 있는 것이다.&lt;br /&gt;(자바와 AS3.0에서 참조(reference)라고 부르며....C언어의 포인터라 생각해도 무방할 듯 하다.&lt;br /&gt;왜냐하면 자바에서도 엄연히 NullPointerException이 있지 않은가.-단순히 이렇게 생각해도 된다는 의미이지 &lt;br /&gt;포인터와 레퍼런스가 똑같다고 하는건 절대 아님^^;-)&lt;br /&gt;&lt;br /&gt;자 어떤일이 생기는지 한번 보자. 플렉스에서 테스트....&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;&amp;nbsp;&lt;FONT color=#000000&gt; import mx.controls.Alert;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public var original_array:Array = new Array(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public var copy_array:Array = original_array;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function array_view():void{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; copy_array[0] = &quot;z&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;Alert.show(original_array.toString()); // z,b,c&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Alert.show(copy_array.toString()); // z,b,c&lt;/FONT&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;br /&gt;original_array와 copy_array를 각각 비교해보면 z,b,c가 나오는 것을 볼 수 있을 것이다.&lt;br /&gt;바로 앞서 말한 Shallow copy가 이루어진 결과는 어떤가?&lt;br /&gt;주소값만이 복사되어&amp;nbsp; 배열의 요소값이 함께 변경되는 결과를 볼수 있다.&lt;br /&gt;&lt;br /&gt;
&lt;P&gt;이를 피하기 위해서 실제 값까지 복사하는 것이 바로 Deep copy이다.&lt;/P&gt;Deep copy. 깊은 복사. 완전 복사라고 부르는데. &lt;br /&gt;AS3.0에선 &lt;STRONG&gt;ByteArray&lt;/STRONG&gt;클래스를 사용해서 다음과 같이 할 수 있다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#000000&gt;&lt;FONT color=#ff0000&gt;import flash.utils.ByteArray;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; import mx.controls.Alert;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#ff0000&gt;public function clone(source:Object):*{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var myBA:ByteArray = new ByteArray();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; myBA.writeObject(source);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; myBA.position = 0;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return(myBA.readObject()); &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public var original_array:Array = new Array(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public var copy_array:Array = &lt;FONT color=#ff0000&gt;clone&lt;/FONT&gt;(original_array);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function array_view():void{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; copy_array[0] = &quot;z&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;Alert.show(original_array.toString()); // a,b,c&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Alert.show(copy_array.toString()); // z,b,c&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;original_array와 copy_array를 비교해보면 원본 객체의 변경없이&lt;/P&gt;
&lt;P&gt;original_array는 a,b,c가 나오며 copy_array는 z,b,c가 나오는 것을 볼 수 있을 것이다.. &lt;br /&gt;&lt;br /&gt;플렉스에는 &lt;FONT color=#333333&gt;&lt;STRONG&gt;mx.utils.ObjectUtil클래스의 copy메소드&lt;/STRONG&gt;가 있어서 이를 사용하면 된다.&lt;br /&gt;&lt;/FONT&gt;다음과 같이 한 줄로.... &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt; &amp;nbsp; import mx.controls.Alert;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public var original_array:Array = new Array(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT color=#333333&gt;&lt;FONT color=#000000&gt;public var copy_array:Array = &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mx.utils.ArrayUtil.toArray&lt;/FONT&gt;(&lt;FONT color=#ff0000&gt;mx.utils.ObjectUtil.copy&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(original_array));&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function array_view():void{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; copy_array[0] = &quot;z&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT color=#0000ff&gt;Alert.show(original_array.toString()); // a,b,c&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Alert.show(copy_array.toString()); // z,b,c&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;위에서 언급한 두가지 방법은&amp;nbsp; generic object에 대하여 Deep copy를 수행하는데 가장 &lt;br /&gt;좋은 방법이지만..문제가 좀 있다..&lt;br /&gt;&lt;br /&gt;사용자 정의 클래스에 대한 Deep copy는 제대로 수행되지 않는다. 이게 머니 이게...&lt;br /&gt;&lt;STRONG&gt;MyInfo&lt;/STRONG&gt;라는 간단한 클래스를 하나 만들고 &lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;테스트 해보겠다.&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000&gt;package guerrilla.test&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;public class MyInfo&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; private var _name:String;&lt;br /&gt;&amp;nbsp; private var _age:int;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; public function MyInfo(){&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; public function get name():String{&lt;br /&gt;&amp;nbsp; &amp;nbsp;return this._name;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; public function set name(name:String):void{&lt;br /&gt;&amp;nbsp; &amp;nbsp;this._name = name&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; public function get age():int{&lt;br /&gt;&amp;nbsp; &amp;nbsp;return this._age;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; public function set age(age:int):void{&lt;br /&gt;&amp;nbsp; &amp;nbsp;this._age = age;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; public function getName():String{&lt;br /&gt;&amp;nbsp; &amp;nbsp;return this.name;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; public function getAge():int{&lt;br /&gt;&amp;nbsp; &amp;nbsp;return this.age;&lt;br /&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;FONT color=#000000&gt;자...다음과 같이 MyInfo 클래스의 인스턴스를 생성하고 테스트를 해보도록 하자..소스내의 &lt;STRONG&gt;clone메소드&lt;/STRONG&gt;는 위에 작성한 그대로이다..&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#000000&gt;var original_MyInfo:MyInfo = new MyInfo();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;original_MyInfo.name = &quot;guerrilla&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;original_MyInfo.age = 32;&lt;br /&gt;&lt;br /&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;var copy_MyInfo:Object =&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;clone(original_MyInfo); //deep copy 수행&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#000000&gt;copy_MyInfo.name=&quot;dora&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;copy_MyInfo.age=27;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;FONT color=#000000&gt;var copy_MyInfo2:Object =&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;mx.utils.ObjectUtil.copy(original_MyInfo); //&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;deep copy 수행&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;FONT color=#000000&gt;copy_MyInfo2.name=&quot;love&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;copy_MyInfo2.age=0;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp; &amp;nbsp;trace(original_MyInfo.name); // guerrilla &lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(original_MyInfo.age);&amp;nbsp; // 32&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(original_MyInfo.getName()); // guerrilla&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(original_MyInfo.getAge()); // 32&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#0000ff&gt;trace(copy_MyInfo.name); // dora&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(copy_MyInfo.age); // 27&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#ff0000&gt;trace(copy_MyInfo.getName()); &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;// &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;TypeError: Error #1006: getName은(는) 함수가 아닙니다&lt;/FONT&gt;.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#ff0000&gt;trace(copy_MyInfo.getAge()); // TypeError&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;: Error #1006: getAge(는) 함수가 아닙니다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt; &amp;nbsp;trace(copy_MyInfo2.name); // love&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(copy_MyInfo2.age); // 0&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &lt;FONT color=#ff0000&gt;&amp;nbsp;trace(copy_MyInfo2.getName()); // TypeError: Error #1006: getName은(는) 함수가 아닙니다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#ff0000&gt;trace(copy_MyInfo2.getAge()); // TypeError&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;: Error #1006: getAge(는) 함수가 아닙니다.&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;FONT color=#000000&gt;자 ... 보시다시피 멤버필드는 이상없이 복사되었지만 어이없게도 멤버메소드는 함수가 아니란다..ㅡ.ㅡ;;&lt;br /&gt;아 왜~~~!!! 함수가 아니라는거니...걍 함수해주면 안되겠니~~ 뭐 이리 쉽게 되는게 없어..이거..&lt;br /&gt;하지만...늘 방법은 존재한다.. 프로그래밍 세계에선 안되는게 없다...무슨 수를 써서라도 되게 만들면 된다.ㅋ&lt;br /&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;바로&amp;nbsp; &lt;STRONG&gt;flash.net&lt;/STRONG&gt; 패키지의 &lt;/FONT&gt;&lt;STRONG&gt;&lt;A href=&quot;http://livedocs.adobe.com/flash/9.0_kr/ActionScriptLangRefV3/flash/net/package.html&quot; target=_blank&gt;&lt;STRONG&gt;registerClassAlias&lt;/STRONG&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;FONT color=#000000&gt;라는 패키지레벨 함수로 해결할 수 있다..&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#000000&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx=&quot;&lt;/FONT&gt;&lt;A href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;&lt;FONT color=#000000&gt;http://www.adobe.com/2006/mxml&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000&gt;&quot; layout=&quot;absolute&quot; height=&quot;271&quot; width=&quot;532&quot;&lt;br /&gt;&amp;nbsp;borderStyle=&quot;solid&quot;&lt;br /&gt;&amp;nbsp;borderColor=&quot;black&quot;&lt;br /&gt;&amp;nbsp;borderThickness=&quot;1&quot; initialize=&quot;initApp()&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;![CDATA[&lt;br /&gt;&amp;nbsp; import mx.controls.Alert;&lt;br /&gt;&amp;nbsp; import mx.utils.ObjectUtil;&lt;br /&gt;&amp;nbsp; import guerrilla.test.MyInfo;&lt;br /&gt;&amp;nbsp; import flash.net.registerClassAlias;&lt;br /&gt;&amp;nbsp; import flash.utils.ByteArray;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp;&lt;FONT color=#ff0000&gt; registerClassAlias(&quot;myClass&quot;,MyInfo);&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;FONT color=#ff0000&gt;private function clone(obj:Object):*{&lt;br /&gt;&amp;nbsp; &amp;nbsp;var myBA:ByteArray = new ByteArray();&lt;br /&gt;&amp;nbsp; &amp;nbsp;myBA.writeObject(obj);&lt;br /&gt;&amp;nbsp; &amp;nbsp;myBA.position = 0;&lt;br /&gt;&amp;nbsp; &amp;nbsp;return(myBA.readObject());&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;FONT color=#000000&gt; private function initApp():void&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;var original_MyInfo:MyInfo = new MyInfo();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;original_MyInfo.name = &quot;guerrilla&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;original_MyInfo.age = 32;&lt;br /&gt;&lt;br /&gt;var copy_MyInfo:Object =&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;clone(original_MyInfo); //deep copy 수행&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;FONT color=#000000&gt; &amp;nbsp;copy_MyInfo.name=&quot;dora&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;copy_MyInfo.age=27;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;var copy_MyInfo2:Object =&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;mx.utils.ObjectUtil.copy(original_MyInfo); //&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;deep copy 수행&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;copy_MyInfo2.name=&quot;love&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;copy_MyInfo2.age=0;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp; &amp;nbsp;trace(original_MyInfo.name); // guerrilla &lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(original_MyInfo.age);&amp;nbsp; // 32&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(original_MyInfo.getName()); // guerrilla&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(original_MyInfo.getAge()); // 32&lt;/FONT&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#0000ff&gt;trace(copy_MyInfo.name); // dora&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(copy_MyInfo.age); // 27&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#0000ff&gt;trace(copy_MyInfo.getName()); // dora&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(copy_MyInfo.getAge()); // 27&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt;&amp;nbsp; trace(copy_MyInfo2.name); // love&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(copy_MyInfo2.age); // 0&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &lt;FONT color=#ff0000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;trace(copy_MyInfo2.getName()); // love&lt;br /&gt;&amp;nbsp; &amp;nbsp;trace(copy_MyInfo2.getAge()); // 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/FONT&gt;&amp;nbsp; &lt;FONT color=#000000&gt;}&lt;br /&gt;&amp;nbsp;]]&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;객체 복사하기 이리 번거로워서야...^^;;&lt;br /&gt;&lt;br /&gt;다음엔 UIComponent 객체 복사에 대해서 알아봐야겠다.&lt;br /&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;SPAN class=m-tcol-c&gt;UIComponent 객체는&amp;nbsp; clone메소드를 implement해야 한다고 한다..&lt;br /&gt;&lt;/SPAN&gt;(아직 위의 방법으로 UIComponent 객체에 대해 복사해보진 않았지만 문서에서는 저렇게 해야 한다함.)&lt;br /&gt;&lt;/FONT&gt;&lt;SPAN class=m-tcol-c&gt;&lt;br /&gt;&lt;FONT color=#000000&gt;내가 알기론 UIComponent를 일괄적으로 복사하는 건 불가능하다고 들었다..&lt;br /&gt;(안해봤지만 강호의 고수분께서 가라사대...-이것도 해봐야겠고..할거 너무 많아..ㅠ.ㅠ-) &lt;br /&gt;특정 클래스 인스턴스의 속성을 동적으로 알아오는 것이 불가능해서.. &lt;br /&gt;(for in 구문은 동적으로 추가된 속성만을 알려준다) &lt;br /&gt;대신 ClassFactory와 ClassFactory의 properties 속성을&amp;nbsp; 잘 이용하면 똑같은 인스턴스들을 &lt;br /&gt;한번에 여러곳에 쓸 수는 있다 &lt;br /&gt;(아이템 렌더러가 이런 방식임...실제 프로젝트에 적용해봤지만 이 부분도 면밀히 파봐야겠다..).&lt;br /&gt;실제로 인스턴스를 on-Line Display List에 추가하기 전, off-Line Display List에 미리 전역으로 ClassFactory에 해당 인스턴스를 등록해 놓고,, 다른 곳에서 쓸 경우 이 ClassFactory의 newInstance() 메소드를 호출해 주면 된다..(이 부분은 예제소스를 올려놔야 겠군.. 제대로 한건지 태클 걸어줄 사람이 필요해..ㅠ.ㅠ)&lt;br /&gt;&lt;br /&gt;아예 이런 방식이 아니고 서브 클래스 단에서 필요한 속성들만 대입해 새로운 인스턴스를 리턴하도록 하는 방식도 있다고 하고..... API에서는 이 방식을 말하는 듯 함...&lt;br /&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;br /&gt;그럼 이만^^&lt;br /&gt;P.S.(python 처럼 copy(),deepcopy() 이렇게 제공되면 월매나 좋을꺼시여~~)&lt;br /&gt;&lt;br /&gt;* 출처 : &lt;A href=&quot;http://gogothing.tistory.com&quot;&gt;http://gogothing.tistory.com&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
			<category>Flex</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/34</guid>
			<comments>http://kelvin.co.kr/entry/Shallow-copy-%EC%99%80-Deep-copy-%ED%8E%8C#entry34comment</comments>
			<pubDate>Thu, 05 Jun 2008 10:55:37 +0900</pubDate>
		</item>
		<item>
			<title>typeof [펌]</title>
			<link>http://kelvin.co.kr/entry/typeof-%ED%8E%8C</link>
			<description>&lt;P&gt;&lt;br /&gt;변경된 typeof &lt;/P&gt;
&lt;P&gt;typeof 는 어떤 값의 기본 데이터 타입을 알려주는 연산자이다.&lt;br /&gt;이 연산자는 클래스 관련 정보를 제공하지 않으며 단순히 변수의 타입만을 알려준다.&lt;br /&gt;관련된 클래스정보를 얻기위해서는 instanceof, getQualifiedClassName 또는 describeType을 함께 사용하면&lt;br /&gt;된다.&lt;/P&gt;
&lt;P&gt;ActionScript 1 과 2 에서&amp;nbsp; typeof는 아래와 같은 값을 반환한다. &lt;br /&gt;boolean &lt;br /&gt;function &lt;br /&gt;movieclip &lt;br /&gt;null &lt;br /&gt;number &lt;br /&gt;object &lt;br /&gt;string &lt;br /&gt;undefined&lt;/P&gt;
&lt;P&gt;ActionScript 3에서&amp;nbsp; typeof는 아래와 같은 값을 반환한다. &lt;br /&gt;boolean &lt;br /&gt;function &lt;br /&gt;number &lt;br /&gt;object &lt;br /&gt;string &lt;br /&gt;xml &lt;br /&gt;undefined&lt;br /&gt;AS3에서는 typeof를 사용해서 MovieClip의 인스턴스를 알아낼 수 가 없으며, 이는 이젠 object로&lt;br /&gt;인식되고. null또한 마찬가지이며(object로...) xml은 이제 xml로 인식한다.&lt;/P&gt;
&lt;P&gt;AS3에서의 새로운 number 타입인 int 와 unit는 typeof를 사용하면 공히 number를 반환하며,&lt;br /&gt;생성자 또는 new 키워드를 사용하여 생성된 프리미티브 값들(boolean, number, string)은 &lt;br /&gt;AS1 과 AS2에서 object로 인식되는 것과는 달리, AS3에선 이젠 그 자체의 프리미티브 값으로 인식된다..&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;//AS1 &amp;amp; AS2&lt;br /&gt;trace(typeof new XML()); // object&lt;/P&gt;
&lt;P&gt;trace(typeof my_mc); // movieclip&lt;/P&gt;
&lt;P&gt;trace(typeof null); // null&lt;/P&gt;
&lt;P&gt;trace(typeof true); // boolean&lt;br /&gt;trace(typeof 1); // number&lt;br /&gt;trace(typeof &quot;&quot;); // string&lt;/P&gt;
&lt;P&gt;trace(typeof new Boolean()); // object&lt;br /&gt;trace(typeof new Number()); // object&lt;br /&gt;trace(typeof new String()); // object &lt;/P&gt;
&lt;P&gt;&lt;br /&gt;// AS3&lt;br /&gt;trace(typeof new XML()); // xml&lt;/P&gt;
&lt;P&gt;trace(typeof my_mc); // object&lt;/P&gt;
&lt;P&gt;trace(typeof null); // object&lt;/P&gt;
&lt;P&gt;trace(typeof true); // boolean&lt;br /&gt;trace(typeof 1); // number&lt;br /&gt;trace(typeof &quot;&quot;); // string&lt;/P&gt;
&lt;P&gt;trace(typeof new Boolean()); // boolean&lt;br /&gt;trace(typeof new Number()); // number&lt;br /&gt;trace(typeof new String()); // string&lt;/P&gt;
&lt;P&gt;trace(typeof int(1)); // number&lt;br /&gt;trace(typeof uint(1)); // number &lt;br /&gt;&lt;br /&gt;* 출처: &lt;A href=&quot;http://gogothing.tistory.com/category/FLEX%202&quot;&gt;http://gogothing.tistory.com/category/FLEX%202&lt;/A&gt;&lt;/P&gt;</description>
			<category>Flex</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/33</guid>
			<comments>http://kelvin.co.kr/entry/typeof-%ED%8E%8C#entry33comment</comments>
			<pubDate>Thu, 05 Jun 2008 10:33:18 +0900</pubDate>
		</item>
		<item>
			<title>대박 동영상[펌]</title>
			<link>http://kelvin.co.kr/entry/%EB%8C%80%EB%B0%95-%EB%8F%99%EC%98%81%EC%83%81%ED%8E%8C</link>
			<description>&lt;br /&gt;정말 대박이다~~~&lt;br /&gt;&lt;br /&gt;누가 만들었는지 참~~~&lt;br /&gt;&lt;br /&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;400&quot; height=&quot;400&quot;&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;/&gt;&lt;param name=&quot;movie&quot; value=&quot;http://play.pullbbang.com/1110502.swf&quot;/&gt;&lt;!--[if !IE]&gt; &lt;--&gt;&lt;object type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; data=&quot;http://play.pullbbang.com/1110502.swf&quot; width=&quot;400&quot; height=&quot;400&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://play.pullbbang.com/1110502.swf&quot;&gt;[Flash] http://play.pullbbang.com/1110502.swf&lt;/a&gt;&lt;/p&gt;&lt;/object&gt;&lt;!--&gt; &lt;![endif]--&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;싱크로율 1만%</description>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/32</guid>
			<comments>http://kelvin.co.kr/entry/%EB%8C%80%EB%B0%95-%EB%8F%99%EC%98%81%EC%83%81%ED%8E%8C#entry32comment</comments>
			<pubDate>Tue, 20 May 2008 14:48:12 +0900</pubDate>
		</item>
		<item>
			<title>노무현 전대통령 VS 이명박 각하</title>
			<link>http://kelvin.co.kr/entry/%EB%85%B8%EB%AC%B4%ED%98%84-%EC%A0%84%EB%8C%80%ED%86%B5%EB%A0%B9-VS-%EC%9D%B4%EB%AA%85%EB%B0%95-%EA%B0%81%ED%95%98</link>
			<description>&lt;br /&gt;
&lt;P&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;노무현은 국민들의 비판은 당연한 것이다 라고 말했고&lt;br /&gt;이명박은 비판하는 국민을 잡아들이라 말한다.&lt;/P&gt;
&lt;P&gt;노무현은 국민90%를 선택했고&lt;br /&gt;이명박은 국민10%를 선택했다.&lt;/P&gt;
&lt;P&gt;노무현 내각은 국민을 사랑했지만&lt;br /&gt;이명박 내각은 땅을 사랑했다.&lt;/P&gt;
&lt;P&gt;노무현은 먼저 대한민국 국민과의 대화를 했고&lt;br /&gt;이명박은 먼저 일본 국민과의 대화를 했다.&lt;/P&gt;
&lt;P&gt;노무현은 e지원을 만들었고&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;노무현의 정책은 야당에서 발목을 잡았지만&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;노무현은 미국이라서 믿을 수 없다고 말했지만&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;br /&gt;
&lt;P&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;노무현은 국민과의 공약을 지키는 것이 자랑스럽고&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;노무현이 주권 확보를 얘기할 때&lt;br /&gt;이명박은 주식 확보를 얘기했다.&lt;/P&gt;
&lt;P&gt;노무현이 부동산 대책을 논할 때&lt;br /&gt;이명박은 부동산 가등기를 고민했다.&lt;/P&gt;
&lt;P&gt;노무현은 조중동이 괴롭혀도 지지율 30% 이상이고&lt;br /&gt;이명박은 조중동이 빨아줘도 지지율 30% 이하이다.&lt;br /&gt;&lt;/P&gt;</description>
			<category>Society &amp; Culture &amp; Politics</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/31</guid>
			<comments>http://kelvin.co.kr/entry/%EB%85%B8%EB%AC%B4%ED%98%84-%EC%A0%84%EB%8C%80%ED%86%B5%EB%A0%B9-VS-%EC%9D%B4%EB%AA%85%EB%B0%95-%EA%B0%81%ED%95%98#entry31comment</comments>
			<pubDate>Fri, 16 May 2008 13:22:07 +0900</pubDate>
		</item>
		<item>
			<title>2MB의 업적들... ㅡ.ㅡ</title>
			<link>http://kelvin.co.kr/entry/2MB%EC%9D%98-%EC%97%85%EC%A0%81%EB%93%A4-%E3%85%A1%E3%85%A1</link>
			<description>&lt;P&gt;&lt;br /&gt;&lt;br /&gt;2MB(2메가 바이트? 2메가 비트...) 업적 &lt;br /&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;핸드폰 요금 20%인하 공약ㅡ&amp;gt;이통사 강력반발로 사실상철회 &lt;/P&gt;
&lt;P&gt;통신요금 누진제 검토발표 ㅡ&amp;gt;강제소비억제 및 서민부담가중 &lt;/P&gt;
&lt;P&gt;통신요금 발,수신자 공동부담제 추진 ㅡ&amp;gt;정작 미국은 공동부담제 사라지는추세 &lt;/P&gt;
&lt;P&gt;경제성장 7% 공약 철회 ㅡ&amp;gt;6%로 하향조정,6%도 재검토발표 &lt;/P&gt;
&lt;P&gt;건강보험,한국전력 민영화검토발표 ㅡ&amp;gt;서민,영세노인 살해행위 &lt;/P&gt;
&lt;P&gt;독거노인 돌봄이1600명 감축 ㅡ&amp;gt;노인복지 및 사회적약자 경시 &lt;/P&gt;
&lt;P&gt;코레일 민영화 추진 ㅡ&amp;gt;요금대폭인상,영국도 민영화후 재매입함 &lt;/P&gt;
&lt;P&gt;담배값 인상 추진 ㅡ&amp;gt;야당시절엔 반대하더니 세금은 걷어야 하니까^^ &lt;/P&gt;
&lt;P&gt;유류세 10%인하방침 발표 ㅡ&amp;gt;정유사 돈잔치 가능성 100% &lt;/P&gt;
&lt;P&gt;공무원 감축 공약 철회 ㅡ&amp;gt;재배치로선회,여론악화로다시감축발표 &lt;/P&gt;
&lt;P&gt;신혼부부주택공급공약 전면적재검토 ㅡ&amp;gt;실효,타당성결여,재원확보여려움으로재검토 &lt;/P&gt;
&lt;P&gt;TV수신료 7500원 인상검토 ㅡ&amp;gt;서민말살 &lt;/P&gt;
&lt;P&gt;대운하 조기추진 강행ㅡ&amp;gt;총선여론 악화로 잠정유보상태 &lt;/P&gt;&lt;br /&gt;
&lt;P&gt;대입 자율화 추진ㅡ&amp;gt;학벌 세습의 법제화 &lt;/P&gt;
&lt;P&gt;자사,특목고 300개 설립추진 ㅡ&amp;gt;사교육 폭발적 증가 &lt;/P&gt;
&lt;P&gt;전과목 영어수업 추진 ㅡ&amp;gt;영어 사교육 열풍에 기름붓기 &lt;/P&gt;
&lt;P&gt;수능영어과목제외,상시영어시험추진ㅡ&amp;gt;영어 사교육 열풍에 기름붓기 &lt;/P&gt;
&lt;P&gt;기자실 복구 발표 ㅡ&amp;gt;정치-언론 합체 &lt;/P&gt;
&lt;P&gt;신문의 방송소유 허용 ㅡ&amp;gt;거대언론의 미디어장악,여론통제 &lt;/P&gt;
&lt;P&gt;주택 지분소유제 추진 ㅡ&amp;gt;부동산 투기 강력촉진 &lt;/P&gt;
&lt;P&gt;양도세완화 ㅡ&amp;gt;강남구를 위한 잔치 &lt;/P&gt;
&lt;P&gt;기업 금산분리 단계적 철폐ㅡ&amp;gt;국민 예금의 기업 쌈짓돈화 &lt;/P&gt;
&lt;P&gt;신불자 공적자금 10조 지원 발표ㅡ&amp;gt;여론악화 및 재원 미확보로 철회 &lt;/P&gt;
&lt;P&gt;출총제 폐지 발표ㅡ&amp;gt;기업 문어발 부실경영 망령부활 &lt;/P&gt;
&lt;P&gt;기업 세무조사 대폭축소 ㅡ&amp;gt;기업 탈세 장려 및 감독의무 포기 &lt;/P&gt;
&lt;P&gt;과학기술부 폐지 ㅡ&amp;gt;그저 삽질이 최고인줄알지? &lt;/P&gt;
&lt;P&gt;농촌진흥청 폐지 ㅡ&amp;gt;기술농업 경쟁력약화 및 퇴보 &lt;/P&gt;
&lt;P&gt;통일부 폐지 ㅡ&amp;gt;통일철학 및 역사인식 결여 &lt;/P&gt;
&lt;P&gt;인권위원회 대통령 직속기구화 추진 ㅡ&amp;gt;인권기관 독립화의 세계적 추세역행 &lt;/P&gt;
&lt;P&gt;부처통폐합으로 거대부처탄생 ㅡ&amp;gt;전문성 결여 및 책임소재불분명 &lt;/P&gt;
&lt;P&gt;이통사 요금인가제 폐지발표ㅡ&amp;gt;후발업자 고사 및 SKT독점 공고화 &lt;/P&gt;
&lt;P&gt;상속세,증여세 단계적 인하발표ㅡ&amp;gt;손쉬운 부의 세습화 &lt;/P&gt;
&lt;P&gt;외국인 공무원임용 검토발표 ㅡ&amp;gt;납세,병역의무한 자국민 역차별 &lt;/P&gt;
&lt;P&gt;일본에 침략역사 사죄요구 포기천명ㅡ&amp;gt;의무포기 및 역사적인식부족 &lt;/P&gt;
&lt;P&gt;산업 평화정착TF구성발표ㅡ&amp;gt;4시간만에 백지화 &lt;/P&gt;
&lt;P&gt;전시작전통제권 재협상 추진 ㅡ&amp;gt;미국의 거부로 사실상백지화 &lt;/P&gt;
&lt;P&gt;언론사 간부 성향조사 ㅡ&amp;gt;5공화국시절에나 하던짓거리 &lt;/P&gt;
&lt;P&gt;금융위원회 신설 추진 ㅡ&amp;gt;관치금융 부활 &lt;/P&gt;&lt;br /&gt;
&lt;P&gt;각종 역사,진실위원회 폐지발표 ㅡ&amp;gt; 역사말살 및 근현대사왜곡 &lt;/P&gt;
&lt;P&gt;1&amp;gt;친일 반민족행위자 재산 조사 위원회 폐지발표(2006년 출범) --------가장 개념 상실한 부분&lt;/P&gt;
&lt;P&gt;2&amp;gt;군 의문사 진상규명 위원회 폐지발표(2006년 출범) &lt;/P&gt;
&lt;P&gt;3&amp;gt;진실 화해를 위한 과거사 정리 위원회 폐지발표(2005년 출범) &lt;/P&gt;
&lt;P&gt;4&amp;gt;친일 반민족 진상 규명 위원회 폐지발표(2004년 출범) &lt;/P&gt;
&lt;P&gt;5&amp;gt;삼청 교육피해자 명예 회복 및 보상 심의위원회 폐지발표(2004년 출범) &lt;/P&gt;
&lt;P&gt;6&amp;gt;노근리 사건 희생자 심사 및 명예 회복 위원회 폐지발표(2004년 출범) &lt;/P&gt;
&lt;P&gt;7&amp;gt;일제 강점하 강제 동원 피해 진상규명 위원회 폐지발표(2004년 출범) &lt;/P&gt;
&lt;P&gt;8&amp;gt;동학 농민혁명 참여자 명예 회복 심의위원회 폐지발표(2004년 출범) &lt;/P&gt;
&lt;P&gt;9&amp;gt;특수 임무 수행자 보상 심의위원회 폐지발표(2004년 출범) &lt;/P&gt;
&lt;P&gt;10&amp;gt;제주 4.3사건 진상 규명 및 희생자 명예 회복 위원회 폐지발표(2000년 출범) &lt;/P&gt;
&lt;P&gt;11&amp;gt;민주화 운동 관련자 명예 회복 및 보상 위원회 폐지발표(2000년 출범) &lt;/P&gt;
&lt;P&gt;12&amp;gt;거창 사건 등 관련자 명예 회복 심의위원회 폐지발표(1998년 출범) &lt;/P&gt;
&lt;P&gt;13&amp;gt;광주 민주화 운동 관련자 보상 지원 위원회 폐지발표(1990년대 출범) &lt;/P&gt;&lt;br /&gt;&lt;br /&gt;
&lt;P&gt;정부예산안에서 이명박이 삭감한 내용들 &lt;/P&gt;
&lt;P&gt;1&amp;gt;사회적 일자리창출 지원금 ㅡㅡㅡㅡㅡ325억원 삭감 &lt;/P&gt;
&lt;P&gt;2&amp;gt;장애아 무상보육 지원금 ㅡㅡㅡㅡㅡㅡ50억 삭감 &lt;/P&gt;
&lt;P&gt;3&amp;gt;보육시설 확충비용ㅡㅡㅡㅡㅡㅡㅡㅡㅡ104억원 삭감 &lt;/P&gt;
&lt;P&gt;4&amp;gt;청소년 안전시설 지원비 ㅡㅡㅡㅡㅡㅡ8천만원 삭감 &lt;/P&gt;
&lt;P&gt;5&amp;gt;장애인차량 지원비ㅡㅡㅡㅡㅡㅡㅡㅡㅡ116억원 삭감 &lt;/P&gt;
&lt;P&gt;6&amp;gt;건강보험 가입자지원금ㅡㅡㅡㅡㅡㅡㅡ568억원 삭감 &lt;/P&gt;
&lt;P&gt;7&amp;gt;학자금대출 신용보증기금 지원액ㅡㅡㅡ1천억원 삭감&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;P&gt;※ 여기서.. 쥐명박의 막말들.. 無개념정책들.. 보시겠습니다..&lt;/P&gt;
&lt;P&gt;(사진은.. 찾는 시간이 아까워서 그냥 패스.. 보면, 그냥 농담조로 건넨 말도 분명히 있겠죠.&lt;/P&gt;
&lt;P&gt;근데 농담인지 아닌지의 문제가 아니라 대통령인걸 떠나서 이건 뭐.. 무개념의 결정체)&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;＊대통령은 개나 소나 하나? (아마도 노무현 전 대통령님 겨낭해서 한 말일거에요)&lt;br /&gt;＊김구는 실패한 정치인이다.&lt;br /&gt;＊광주민주화 운동, 부마항쟁을 연거푸 광주사태, 부마사태로 언급. (역사개념이 없는거죠.)&lt;br /&gt;＊돈 없는 사람이 정치하는 시대는 지났다.&lt;br /&gt;＊나처럼 애를 낳아 봐야 보육을 얘기할 자격이 있고 고3생 네 명은 키워봐야 교육을 얘기할 자격이 있다.&lt;br /&gt;＊요즘 나를 비난하는 사람들을 보면 70-80년대 빈둥빈둥 놀면서 혜택을 입은 사람들인데 비난할 자격이 없다고 본다.&lt;br /&gt;＊대한민국의 수도 서울은 하나님이 다스리시는 거룩한 도시이며, 서울의 시민들은 하나님의 백성이다. &lt;/P&gt;
&lt;P&gt;서울의 회복과 부흥을 꿈꾸고 기도하는 서울 기독청년들의 마음과 정성을 담아 수도 서울을 하나님께 봉헌한다. (뭥미??--)&lt;/P&gt;
&lt;P&gt;＊1시간도 공부 안한것들이 경부운하 반대한다.&lt;br /&gt;＊마사지걸을 고를때에는 못생긴 여자를 골라야한다. (예쁘다면 많은 남자가 거쳐갔다는 뜻이겠죠.)&lt;br /&gt;＊걱정되면 먹지마라. 적게 사라.&lt;br /&gt;＊고려대 등록금 2배 인상 등 대학 등록금 문제에 대해 &quot;그러면 장학금 받으면 되겠네.&quot;&lt;br /&gt;＊나를 찍지 않을 사람은 투표 안 나와도 괜찮지만, 나 찍을 사람들은 다 나와야 한다.&lt;/P&gt;
&lt;P&gt;(이게 대통령 되겠다는 사람이 할 말입니까? 투표를 안해도 된다뇨.ㅋㅋ)&lt;br /&gt;＊국민이 모은 돈으로 숭례문 복원하자.&lt;br /&gt;＊초등학교때부터 국어나 국사등 일부과목을 영어로 가르치면 어학연수를 안 가도 영어에 불편함이 없을 것이다.&lt;/P&gt;
&lt;P&gt;＊복지 예산 현실화를 요구하는 글귀가 새겨진 옷을 입고 1인 시위하는 여성 복지사를 조롱하며&lt;br /&gt;&quot;이런 옷 사입을 돈 있으면 운영비 지원하지 않아도 되겠다.&quot;&lt;br /&gt;이에 여성 복지사가 &#039;사회복지사들이 사비를 모아 마련한 것&#039;이라는 답변에&lt;br /&gt;&quot;돈을 내서 그런 옷을 사입을 정도면 월급 많은 것 아닌가.&lt;/P&gt;
&lt;P&gt;이런것 할 시간이 있으면 겸손한 마음으로 사회복지나 해라.&quot;&lt;br /&gt;＊투기를 목표로 집을 옮기는 것은 정부가 그렇게 관여할 일이 아니다. 세금만 잘받으면 된다. (왜?지도했거든ㅡㅡ)&lt;br /&gt;＊부실 교육의 핵심은 교육을 책임진 사람들이 모두시골 출신이라는데 있다.&lt;br /&gt;＊아이가 세상에 불구로 태어난다든지 이런 불가피한 낙태는 용납이 될 수 밖에 없는 것 같다.&lt;br /&gt;＊일해공원에 대해선 내용을 잘 몰라서 답변할수 없을것 같다. 일해는 횟집이름 아니냐?&lt;br /&gt;&lt;br /&gt;펌 : [http://blog.naver.com/hyukzak/150031016759]&lt;/P&gt;</description>
			<category>Society &amp; Culture &amp; Politics</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/30</guid>
			<comments>http://kelvin.co.kr/entry/2MB%EC%9D%98-%EC%97%85%EC%A0%81%EB%93%A4-%E3%85%A1%E3%85%A1#entry30comment</comments>
			<pubDate>Tue, 06 May 2008 10:33:38 +0900</pubDate>
		</item>
		<item>
			<title>FLEX 화면 이미지로 캡처</title>
			<link>http://kelvin.co.kr/entry/FLEX-%ED%99%94%EB%A9%B4-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C-%EC%BA%A1%EC%B2%98</link>
			<description>&lt;P&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;A href=&quot;http://blog.flexexamples.com/2007/12/08/setting-a-default-encoder-for-the-imagesnapshot-class-in-flex-3/&quot;&gt;http://blog.flexexamples.com/2007/12/08/setting-a-default-encoder-for-the-imagesnapshot-class-in-flex-3/&lt;/A&gt; --&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx=&quot;&lt;A href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/A&gt;&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layout=&quot;vertical&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; verticalAlign=&quot;middle&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; backgroundColor=&quot;white&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; creationComplete=&quot;init();&quot;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;![CDATA[&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; import mx.graphics.ImageSnapshot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; import mx.graphics.codec.*;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private function init():void {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ImageSnapshot.defaultEncoder = PNGEncoder;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private function captureImg():void {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var ohSnap:ImageSnapshot = ImageSnapshot.captureImage(img);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textArea.text = ImageSnapshot.encodeImageAsBase64(ohSnap);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lbl.text = ohSnap.contentType;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]]&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:Script&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:ApplicationControlBar dock=&quot;true&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Button id=&quot;button&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; label=&quot;Capture Image&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; click=&quot;captureImg();&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:ApplicationControlBar&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:Form&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;source:&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Image id=&quot;img&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; source=&quot;@Embed(&#039;images/flex_logo.jpg&#039;)&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;Base64:&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:TextArea id=&quot;textArea&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; editable=&quot;false&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; width=&quot;320&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; height=&quot;160&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;contentType:&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Label id=&quot;lbl&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:Form&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/mx:Application&amp;gt;&lt;/P&gt;</description>
			<category>Flex</category>
			<author>KELVIN_KIM</author>
			<guid>http://kelvin.co.kr/29</guid>
			<comments>http://kelvin.co.kr/entry/FLEX-%ED%99%94%EB%A9%B4-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C-%EC%BA%A1%EC%B2%98#entry29comment</comments>
			<pubDate>Wed, 23 Apr 2008 10:52:11 +0900</pubDate>
		</item>
	</channel>
</rss>

