<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/style/rss/style.xsl" type="text/xsl" media="screen"?>
<rss version="2.0">
	<channel>
		<title>Dragonkun in Tistory</title>
		<link>http://dragonkun.tistory.com/</link>
		<description></description>
		<language>ko</language>
		<pubDate>Wed, 13 Aug 2008 21:54:56 +0900</pubDate>
		<generator>Tistory 1.1</generator>
		<image>
		<title>Dragonkun in Tistory</title>
		<url><![CDATA[http://cfs4.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNC50aXN0b3J5LmNvbTovYXR0YWNoLzAvMDEwMDAwMDAwMDAwLmdpZg==]]></url>
		<link>http://dragonkun.tistory.com/</link>
		<description></description>
		</image>
		<item>
			<title>공개 SW 공모대전에 참가합니다.</title>
			<link>http://dragonkun.tistory.com/entry/%EA%B3%B5%EA%B0%9C-SW-%EA%B3%B5%EB%AA%A8%EB%8C%80%EC%A0%84%EC%97%90-%EC%B0%B8%EA%B0%80%ED%95%A9%EB%8B%88%EB%8B%A4</link>
			<description>&lt;img style=&quot;cursor: -moz-zoom-in;&quot; alt=&quot;http://kldp.org/files/(080731)2008%EA%B3%B5%EA%B0%9CSW%EA%B3%B5%EB%AA%A8%EB%8C%80%EC%A0%84_%EC%B5%9C%EC%A2%85.jpg&quot; src=&quot;http://kldp.org/files/%28080731%292008%EA%B3%B5%EA%B0%9CSW%EA%B3%B5%EB%AA%A8%EB%8C%80%EC%A0%84_%EC%B5%9C%EC%A2%85.jpg&quot; width=&quot;574&quot; height=&quot;807&quot;&gt;&lt;br /&gt;공개 SW 공모대전에 참가합니다.&lt;br /&gt;&lt;br /&gt;별 일이 없으면 공개 SW 챌린지 Linux System Monitoring Tool 쪽으로 제출하려고 합니다.&lt;br /&gt;Flex 공부도 할 겸, UI 는 레일스 + Flex 쪽으로 생각하고 있습니다.&lt;br /&gt;사실 그래프 컴포넌트 등이 있는 Flex 로 하는 게 마감까지 맞출 수 있을 같더군요.&lt;br /&gt;현재 확정 인원은 3명이고, 가능하기는 최대 5명까지 가능하니 주변에 떡밥 좀 뿌리고 다니고 있습니다;;&lt;br /&gt;&lt;br /&gt;다들 학생이고 주중에는 회사 다니기에 주말밖에 시간이 안 나긴 하지만;;&lt;br /&gt;되는 데까진 열심히 해봐야 겠습니다.&lt;br /&gt;&lt;br /&gt;이번 주말 쯤엔 서점가서 Flex 책 좀 뒤져봐야 겠군요.&lt;br /&gt;&lt;br /&gt;Ps. 이번 기회에 Redmine 좀 써보면 되겠군요. :)&lt;br /&gt;</description>
			<category>프로젝트</category>
			<category>F/OSS</category>
			<category>flex</category>
			<category>Ruby</category>
			<category>공개SW</category>
			<category>공모대전</category>
			<category>오픈소스</category>
			<category>프로젝트</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/53</guid>
			<comments>http://dragonkun.tistory.com/entry/%EA%B3%B5%EA%B0%9C-SW-%EA%B3%B5%EB%AA%A8%EB%8C%80%EC%A0%84%EC%97%90-%EC%B0%B8%EA%B0%80%ED%95%A9%EB%8B%88%EB%8B%A4#entry53comment</comments>
			<pubDate>Wed, 13 Aug 2008 21:54:55 +0900</pubDate>
		</item>
		<item>
			<title>Flex와 Rails, 그리고 REST</title>
			<link>http://dragonkun.tistory.com/entry/FlexRails-and-REST</link>
			<description>&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228); text-align: center; font-weight: bold;&quot;&gt;이 글은 작업 중에 있는 글입니다.&lt;br /&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;차후에 설명을 붙이도록 하고 우선 소스만 올려둡니다.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Internal Action Script 가 포함된 Flex mxml 파일&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!-- 게시판 --&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; creationComplete=&quot;svcPosts.send();&quot;&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:HTTPService id=&quot;svcPosts&quot; url=&quot;http://localhost:3000/posts.xml&quot; method = &quot;GET&quot; resultFormat=&quot;e4x&quot; result=&quot;postsResultHandler(event)&quot; fault=&quot;postsFaultHandler(event)&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:request&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;limit&amp;gt;20&amp;lt;/limit&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:request&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:HTTPService&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:HTTPService contentType=&quot;application/xml&quot; &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; id=&quot;svcCreatePost&quot; &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; url=&quot;http://localhost:3000/posts&quot; &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; useProxy=&quot;false&quot; method=&quot;POST&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:request xmlns=&quot;&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;post&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;{tAuthor.text}&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;subject&amp;gt;{tSubject.text}&amp;lt;/subject&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body&amp;gt;{tBody.text}&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/post&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:request&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:HTTPService&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:HTTPService id=&quot;svcDeletePost&quot; &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; result=&quot;svcPosts.send();&quot; &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; url=&quot;http://localhost:3000/posts&quot; &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; method=&quot;POST&quot;&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; useProxy=&quot;false&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:HTTPService id=&quot;svcEditPost&quot; &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; result=&quot;svcPosts.send();&quot; &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; url=&quot;http://localhost:3000/posts&quot; &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; method=&quot;POST&quot;&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; useProxy=&quot;false&quot;&amp;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;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:request xmlns=&quot;&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;post&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;{oldAuthor.text}&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;subject&amp;gt;{oldSubject.text}&amp;lt;/subject&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;body&amp;gt;{oldBody.text}&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/post&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:request&amp;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;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:HTTPService&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:Style&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Panel { font-size: 12pt }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:Style&amp;gt; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;![CDATA[&lt;br /&gt;&amp;nbsp; &amp;nbsp; import mx.rpc.events.FaultEvent;&lt;br /&gt;&amp;nbsp; &amp;nbsp; import mx.rpc.events.ResultEvent;&lt;br /&gt;&amp;nbsp; &amp;nbsp; import mx.controls.Alert&lt;br /&gt;&amp;nbsp; &amp;nbsp; import mx.events.CloseEvent;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; [Bindable]&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; private var posts:XML;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; public function postsResultHandler(event:ResultEvent):void &lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; posts = event.result as XML&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //Alert.show(posts);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; public function postsFaultHandler(event:FaultEvent):void&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Alert.show(event.fault.message, &quot;Could not load posts!&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; private function deleteHandler(event:Event) : void&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Alert.show(&quot;정말 이 항목을 삭제하시겠습니까?&quot;, &quot;포스트 삭제&quot;, 3, this,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; function(event:CloseEvent):void&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (event.detail==Alert.YES)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; svcDeletePost.url = &#039;http://localhost:3000/posts/&#039;+dgPosts.selectedItem.id+&#039;.xml&#039;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; svcDeletePost.send({id: dgPosts.selectedItem.id, _method:&#039;DELETE&#039;});&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; ]]&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:Script&amp;gt; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;mx:Panel title=&quot;Flexible Board&quot; height=&quot;100%&quot; width=&quot;100%&quot; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; paddingTop=&quot;10&quot; paddingLeft=&quot;10&quot; paddingRight=&quot;10&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Label width=&quot;100%&quot; color=&quot;black&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text=&quot;게시판입니다.&quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:DataGrid id=&quot;dgPosts&quot; width=&quot;100%&quot; height=&quot;100%&quot; rowCount=&quot;20&quot; dataProvider=&quot;{posts.post}&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:columns&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:DataGridColumn dataField=&quot;id&quot; headerText=&quot;No&quot; width=&quot;40&quot; textAlign=&quot;center&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:DataGridColumn dataField=&quot;name&quot; headerText=&quot;이름&quot; width=&quot;100&quot; textAlign=&quot;center&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:DataGridColumn dataField=&quot;subject&quot; headerText=&quot;제목&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:DataGridColumn dataField=&quot;created_at&quot; headerText=&quot;글 쓴 날짜&quot; width=&quot;150&quot; textAlign=&quot;center&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:DataGridColumn dataField=&quot;updated_at&quot; headerText=&quot;변경된 날짜&quot; width=&quot;150&quot; textAlign=&quot;center&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:columns&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:DataGrid&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Form width=&quot;100%&quot; height=&quot;100%&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;이름&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:TextInput text=&quot;{dgPosts.selectedItem.name}&quot; id=&quot;oldAuthor&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &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;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;제목&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:TextInput text=&quot;{dgPosts.selectedItem.subject}&quot; id=&quot;oldSubject&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &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;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;글 쓴 날짜&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Label text=&quot;{dgPosts.selectedItem.created_at}&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &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;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;변경된 날짜&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Label text=&quot;{dgPosts.selectedItem.updated_at}&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:FormItem&amp;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; &amp;lt;mx:FormItem label=&quot;내용&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:TextArea width=&quot;400&quot; height=&quot;100&quot; text=&quot;{dgPosts.selectedItem.body}&quot; id=&quot;oldBody&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &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;nbsp; &amp;nbsp; &amp;lt;mx:Button label=&quot;글 수정&quot; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; click=&quot;svcEditPost.url=&#039;http://localhost:3000/posts/&#039;+dgPosts.selectedItem.id+&#039;.xml&#039;;svcEditPost.send({_method:&#039;PUT&#039;});svcPosts.send();&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Button label=&quot;글 삭제&quot; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; click=&quot;deleteHandler(event);&quot;/&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:Form&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Form width=&quot;100%&quot; height=&quot;100%&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;이름&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:TextInput id=&quot;tAuthor&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &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;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;제목&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:TextInput id=&quot;tSubject&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &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;nbsp; &amp;nbsp; &amp;lt;mx:FormItem label=&quot;내용&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:TextArea id=&quot;tBody&quot; width=&quot;400&quot; height=&quot;100&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &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;nbsp; &amp;nbsp; &amp;lt;mx:Button label=&quot;글 등록&quot; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; click=&quot;svcCreatePost.send();svcPosts.send();&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:Form&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:ControlBar horizontalAlign=&quot;center&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;mx:Button label=&quot;새로 고침&quot; click=&quot;svcPosts.send();&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/mx:ControlBar&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/mx:Panel&amp;gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;레일스 어플리케이션의 DB 스키마&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;create_table &quot;posts&quot;, :force =&amp;gt; true do |t|&lt;br /&gt;&amp;nbsp; &amp;nbsp; t.string &amp;nbsp; &quot;name&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; t.string &amp;nbsp; &quot;subject&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; t.text &amp;nbsp; &amp;nbsp; &quot;body&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; t.datetime &quot;created_at&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; t.datetime &quot;updated_at&quot;&lt;br /&gt;end&lt;/div&gt;&lt;br /&gt;레일스 어플리케이션 컨트롤러(REST)&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;class PostsController &amp;lt; ApplicationController&lt;br /&gt;&amp;nbsp; # GET /posts&lt;br /&gt;&amp;nbsp; # GET /posts.xml&lt;br /&gt;&amp;nbsp; def index&lt;br /&gt;&amp;nbsp; &amp;nbsp; @posts = Post.find(:all, :order =&amp;gt; &#039;created_at desc&#039;)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.html # index.html.erb&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @posts.to_xml(:dasherize =&amp;gt; false) }&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # GET /posts/1&lt;br /&gt;&amp;nbsp; # GET /posts/1.xml&lt;br /&gt;&amp;nbsp; def show&lt;br /&gt;&amp;nbsp; &amp;nbsp; @post = Post.find(params[:id])&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.html # show.html.erb&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @post.to_xml(:dasherize =&amp;gt; false) }&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # GET /posts/new&lt;br /&gt;&amp;nbsp; # GET /posts/new.xml&lt;br /&gt;&amp;nbsp; def new&lt;br /&gt;&amp;nbsp; &amp;nbsp; @post = Post.new&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.html # new.html.erb&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @post.to_xml(:dasherize =&amp;gt; false) }&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # GET /posts/1/edit&lt;br /&gt;&amp;nbsp; def edit&lt;br /&gt;&amp;nbsp; &amp;nbsp; @post = Post.find(params[:id])&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # POST /posts&lt;br /&gt;&amp;nbsp; # POST /posts.xml&lt;br /&gt;&amp;nbsp; def create&lt;br /&gt;&amp;nbsp; &amp;nbsp; @post = Post.new(params[:post])&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if @post.save&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flash[:notice] = &#039;Post was successfully created.&#039;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format.html { redirect_to(@post) }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @post.to_xml(:dasherize =&amp;gt; false), :status =&amp;gt; :created, :location =&amp;gt; @post }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format.html { render :action =&amp;gt; &quot;new&quot; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @post.errors, :status =&amp;gt; :unprocessable_entity, :dasherize =&amp;gt; false }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # PUT /posts/1&lt;br /&gt;&amp;nbsp; # PUT /posts/1.xml&lt;br /&gt;&amp;nbsp; def update&lt;br /&gt;&amp;nbsp; &amp;nbsp; @post = Post.find(params[:id])&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if @post.update_attributes(params[:post])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flash[:notice] = &#039;Post was successfully updated.&#039;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format.html { redirect_to(@post) }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { head :ok }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format.html { render :action =&amp;gt; &quot;edit&quot; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @post.errors, :status =&amp;gt; :unprocessable_entity }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # DELETE /posts/1&lt;br /&gt;&amp;nbsp; # DELETE /posts/1.xml&lt;br /&gt;&amp;nbsp; def destroy&lt;br /&gt;&amp;nbsp; &amp;nbsp; @post = Post.find(params[:id])&lt;br /&gt;&amp;nbsp; &amp;nbsp; @post.destroy&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.html { redirect_to(posts_url) }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { head :ok }&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;end&lt;/div&gt;&lt;br /&gt;생성된 SWF&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs8.tistory.com/image/26/tistory/2008/08/13/09/15/48a227b6ee648&quot; alt=&quot;생성된 SWF 파일 결과&quot; height=&quot;737&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;</description>
			<category>프로그래밍/개발</category>
			<category>flex</category>
			<category>Rails</category>
			<category>rest</category>
			<category>Ruby on Rails</category>
			<category>개발</category>
			<category>레일스</category>
			<category>루비</category>
			<category>삽질</category>
			<category>웹</category>
			<category>프로그래밍</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/52</guid>
			<comments>http://dragonkun.tistory.com/entry/FlexRails-and-REST#entry52comment</comments>
			<pubDate>Wed, 13 Aug 2008 09:08:50 +0900</pubDate>
		</item>
		<item>
			<title>우분투 Hardy에서 Phusion Passenger(A.K.A mod_rails) 설정하기</title>
			<link>http://dragonkun.tistory.com/entry/Phusion-PassengerAKA-modrails-setting-in-Ubuntu-Hardy</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;설치&lt;/span&gt;&lt;br /&gt;우선 Phusion Passenger (A.K.A mod_rails)를 설치합니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;sudo gem install passenger&lt;/div&gt;&lt;br /&gt;우분투에서는 설치 후 패스가 제대로 걸려 있지 않습니다.&lt;br /&gt;/var/lib/gems/1.8 아래에 설치가 되더군요.&lt;br /&gt;아래와 같이 아파치 모듈을 설치하는 명령어를 실행합니다.&lt;br /&gt;(apache2-prefork-dev 같은 아파치 개발 패키지가 필요할지도 모릅니다.)&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;sudo /var/lib/gems/1.8/bin/passenger-install-apache2-module&lt;/div&gt;&lt;br /&gt;엔터 몇 번을 치면 자동으로 모듈을 빌드하고 설치를 끝마칩니다.&lt;br /&gt;그리고 아래와 같은 설정을 /etc/apache2/mods-availabe/mod_rails.load 라는 파일을 만들어 놓습니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so&lt;br /&gt;PassengerRoot /var/lib/gems/1.8/gems/passenger-2.0.3&lt;br /&gt;PassengerRuby /usr/bin/ruby1.8&lt;/div&gt;&lt;br /&gt;쉘에서 아래와 같은 명령으로 mod_rails 모듈을 활성화 시킵니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;sudo a2enmod mod_rails&lt;/div&gt;&lt;br /&gt;그리고 아래와 같이 아파치 설정을 합니다.&lt;br /&gt;&lt;a href=&quot;http://dragonkun.tistory.com/entry/Ruby%EC%9D%98-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B4%80%EB%A6%AC-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-Redmine&quot; target=&quot;_blank&quot;&gt;전 포스팅&lt;/a&gt;에서 다뤘던 redmine 을 예제로 합니다.&lt;br /&gt;&lt;br /&gt;우선 /etc/apache2/sites-enable/default 파일을 아래에 아래와 같이 수정합니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;&amp;lt;VirtualHost *&amp;gt;&lt;br /&gt;&amp;nbsp; ServerName www.yourdomain.com&lt;br /&gt;&amp;nbsp; DocumentRoot /home/redmine/public&lt;br /&gt;&amp;nbsp; RailsEnv development&lt;br /&gt;&amp;nbsp; ....(이하 생략)&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/div&gt;&lt;br /&gt;아파치를 설정을 다시 불러들입니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;sudo /etc/init.d/apache2 force-reload&lt;/div&gt;&lt;br /&gt;이걸로 설정이 끝났습니다.&lt;br /&gt;다른 어떤 배포 환경보다도 간단하게 설치/설정이 가능합니다.&lt;br /&gt;nginx+몽그렐 클러스터, 아파치+프록시 밸런서+몽그렐 클러스터 등등의 설정에 비하면 정말 간단해진 것을 알 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;우아한 재시작&lt;/span&gt;&lt;br /&gt;레일스 어플리케이션을 구동하다 보면 새로운 모델을 추가한다던가 새로운 플러그인을 설치한다던가, 웹 서버를 재시작해야 할 일이 종종 생깁니다.&lt;br /&gt;기존에는 우아하게 재시작하기 위해서 seesaw 와 같은 gem으로 몽그렐 클러스터를 관리했었는 데, mod_rails 는 한 술 더 뜹니다.&amp;nbsp; 그저 어플리케이션 디렉토리에서 아래와 같은 명령어면 됩니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;touch tmp/restart.txt&lt;/div&gt;&lt;br /&gt;이렇게 restart.txt 파일만 만들어 놓으면 접속이 있을 때, 새로 레일스 설정을 불러들입니다.&lt;br /&gt;&lt;br /&gt;어느 정도 mod_rails 를 이용하여 어플리케이션을 돌려봤는 데, 성능도 좋고 정말 안정적으로 돌아갑니다.&lt;br /&gt;예전 초창기에 FCGI 썼을 때의 악몽(정말 이유를 알 수 없는 500에러...) 따위는 이제 생각하지 않아도 됩니다.&lt;br /&gt;게다가 서버 재시작을 위해서 루트 권한도 필요없으니 한 번 설정만 해 놓으면 사용자 계정에서 무리없이 쓸 수도 있구요.&lt;br /&gt;루비의 배포환경도 나날이 발전하고 있습니다.&amp;nbsp; 아직 완벽해졌다고는 할 수 없지만, 이 정도만 되고 꽤나 편리해 진 셈이지요.&lt;br /&gt;</description>
			<category>프로그래밍/개발</category>
			<category>mod_rails</category>
			<category>phusion passenger</category>
			<category>Rails</category>
			<category>Ruby</category>
			<category>개발</category>
			<category>레일스</category>
			<category>루비</category>
			<category>배포 환경</category>
			<category>삽질</category>
			<category>우분투</category>
			<category>프레임워크</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/51</guid>
			<comments>http://dragonkun.tistory.com/entry/Phusion-PassengerAKA-modrails-setting-in-Ubuntu-Hardy#entry51comment</comments>
			<pubDate>Sun, 10 Aug 2008 16:07:17 +0900</pubDate>
		</item>
		<item>
			<title>Flex 그리고 웹에 대한 짧은 생각</title>
			<link>http://dragonkun.tistory.com/entry/flex-and-web</link>
			<description>redmines 는 주말쯤에 시간이 날 때, 다뤄보기로 하고 이번엔 Flex에 대한 생각을 정리하려 합니다.&lt;br /&gt;왜 갑자기 Flex 냐 하면.. 제가 새 직장을 얻게 되어서 앞으로 Flex를 가지고 벌어 먹고 살게 되기 때문이죠.&lt;br /&gt;&lt;br /&gt;이번 주는 실제 Flex를 다루지는 않았고, 약간 실제 프로젝트와는 거리가 있는&lt;br /&gt;일종의 수습 기간 중 테스트로서 차후에 쓰이게 될 지도 모르는 커스텀 ssh/sftp 서버를 만들었습니다.&lt;br /&gt;(Python, Paramiko 라이브러리로 제작했는데 이것도 기회가 되면 블로그에 정리해야 겠습니다.)&lt;br /&gt;생각보다 일찍 완성이 되어서 Flex 공부하는 셈 치고, 이거저것 만져보고 rails 와 붙여보는 작업을 해 봤습니다.&lt;br /&gt;&lt;br /&gt;퇴근 시간 전까지 잠깐 시간내서 만들어 본거라 거의 맛만 본 수준인데,&lt;br /&gt;만들어 본 어플리케이션은 간단한 게시판의 형태로 글 쓰기, 수정, 삭제 까지는 못 만들었고;;&lt;br /&gt;그냥 리스트만 가져와서 화면에 출력해 주는 수준이었습니다.&lt;br /&gt;&lt;br /&gt;서버 사이드로는 간단하게 Rails 프로젝트가 REST Web Service 를 서비스하고 있고,&lt;br /&gt;클라이언트 사이드에서 Flex가 작동하여 HTTP Request 를 이용해서 XML 형태로 데이터를 받아오고&lt;br /&gt;리스트를 구성해 화면에 출력해 주는 형태로 작동하게 했습니다.&lt;br /&gt;Flex 에서 기본으로 제공하는 디자인은 깔끔했고 애니메이션 효과도 훌륭했고,&lt;br /&gt;액션 스크립트의 웹 서비스 클라이언트는 REST 도 잘 지원되고 Ajax와 같이 귀찮은 작업도 거의 없고..&lt;br /&gt;오~ 이만하면 훌륭합니다.&amp;nbsp; 조금 반응이 느리고 무거워 보인다는 단점 외에는 별다른 흠 잡을데가 없더군요.&lt;br /&gt;&lt;br /&gt;하지만 아무리 Flex 의 기능이 훌륭하고 멋지다고 해도, 어떻게 보면 결국은 고품질의 swf 를 찍어내기 위한 거대한 프레임워크일 수 밖에 없더군요.&lt;br /&gt;완성되어 나와진 html 에는 swf를 embed 하는 태그와 왜 있는지 잘 모르겠는 iframe 뿐이고..&lt;br /&gt;과연 이것이 웹을 올바른 방향으로 이끄는 것인가에 대한 의문이 들더군요.&lt;br /&gt;&lt;br /&gt;좀 쓰잘데기는 없지만 웹이 나아가야할 올바른 방향은 무엇인가에 대한 이야기는 예전에도 생각했던 적이 있습니다.&lt;br /&gt;초창기의 웹은 분명 연결된 문서의 형태였습니다.&amp;nbsp; 하지만 지금의 웹은 그러한 모습이라고는 보기 힘듭니다.&lt;br /&gt;블로그와 위키 정도만이 그 형태를 유지할 뿐 거의 어플리케이션의 형태로 가고 있다고 보고 있습니다.&lt;br /&gt;Ajax 역시 그 움직임을 가속화 시키기도 했구요. &lt;br /&gt;&lt;br /&gt;그렇다고 웹이 어플리케이션으로 가게 되는 것인가 라고 생각을 해보면 그것 또한 끔찍한 모습입니다.&lt;br /&gt;화려하고 동적인 페이지를 위해서 실제 얻고자 하는 정보와 무관한 큰 크기의 리소스들(Ajax 에는 큰 덩치의 JS 프레임워크, Flex 등의 swf 파일)을 받아야 한다니..&lt;br /&gt;사실 모뎀 말고, 초고속 인터넷이 등장한 후 분명 통신의 속도도 빨라졌고, 사용하는 컴퓨터의 사양도 좋아졌지만,&lt;br /&gt;불필요하게 웹의 덩치도 그것에 맞추어져 예전이나 지금이나 웹의 속도는 별로 빨라지지 않았다는 느낌도 듭니다.&lt;br /&gt;그것 뿐이겠습니까.. 만약 Flex나 Silverlight 런타임 플러그인 위에서 돌아가게되는 구글을 통해 내용 검색을 할 수도 없게 되겠지요. 그렇게 되면 점차 시맨틱 웹이라는 것의 의미는 퇴색되게 되겠지요.&lt;br /&gt;&lt;br /&gt;하지만, 그렇다고 해서 연결된 문서의 형태로 웹이 남아있어야 한다고 생각하지는 않습니다.&lt;br /&gt;확실히 웹이 어플리케이션화 하면서 재미가 있었지고 사람들의 생활을 이롭게 한 것은 사실이니까요.&lt;br /&gt;&lt;br /&gt;그래서 근본적인 취지에 맞게 웹 본래의 장점을 살려보자고 등장하던 것이 REST 였지만...&lt;br /&gt;Flex 에서 REST 서비스를 이용하는 방식을 보면, 글쎄요.. 정말 REST가 답인가 하는 생각마저 들기도 합니다.&lt;br /&gt;&lt;br /&gt;웹은 확실히 가장 성공한 TCP/IP 어플리케이션이지만..&lt;br /&gt;시맨틱 웹, 웹 2.0 등등의 수식어에 여기저기 휘둘리는 웹의 모습이 왠지 안쓰러워 보입니다.&lt;br /&gt;&lt;br /&gt;무슨 글을 쓰고 있는 지도 잘 모르겠습니다.&amp;nbsp; 아주 예전에 있었던 논쟁글 몇 개 링크하고 마무리 짓습니다.&lt;br /&gt;김국현 씨와 윤석찬 씨는 제가 매우 존경하는 분들입니다. &lt;br /&gt;존경하는 분들의 논쟁을 보면 정말.. 즐겁기 그지 없습니다. :)&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.zdnet.co.kr/itbiz/column/anchor/goodhyun/0,39030292,39163561,00.htm&quot; target=&quot;_blank&quot;&gt;차세대 웹은 브라우저를 초월하여&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://channy.creation.net/blog/?p=459&quot; target=&quot;_blank&quot;&gt;반론 : 차세대 웹은 브라우저를 초월하여&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://goodhyun.com/729&quot; target=&quot;_blank&quot;&gt;반론에 대한 기록 : 차세대 웹은 브라우저를 초월하여&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
			<category>프로그래밍/개발</category>
			<category>Ajax</category>
			<category>flex</category>
			<category>RIA</category>
			<category>siverlight</category>
			<category>웹</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/50</guid>
			<comments>http://dragonkun.tistory.com/entry/flex-and-web#entry50comment</comments>
			<pubDate>Thu,  7 Aug 2008 21:44:23 +0900</pubDate>
		</item>
		<item>
			<title>Ruby의 프로젝트 관리 어플리케이션, Redmine - 설치</title>
			<link>http://dragonkun.tistory.com/entry/Ruby%EC%9D%98-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B4%80%EB%A6%AC-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-Redmine</link>
			<description>&lt;a href=&quot;http://www.redmine.org/&quot; target=&quot;_blank&quot;&gt;redmine의 홈페이지&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;오늘 아침 출근해서 이것 저것 웹 서핑하다가 우연히 redmine 의 존재를 알게 되었습니다.&lt;br /&gt;Python 의 trac 처럼 위키, scm, 이슈 트래킹 시스템 등등이 포함되어 있는 통합 프로젝트 관리 어플리케이션이죠.&lt;br /&gt;동아리 홈페이지에 프로젝트를 공유할 수 있는 시스템을 마련하려고 하는 차에 이 놈이 딱 눈에 들어오게 됐네요.&lt;br /&gt;레일스로 만들어진 어플리케이션이라 조금 수정을 하면 다른 레일스 어플리케이션이랑 잘 붙을 것 같더군요.&lt;br /&gt;&lt;br /&gt;우선 기능을 몇 개 살펴보면, 위에 언급한 위키, scm, 이슈 트래킹 시스템 등은 모두 사용할 수 있습니다.&lt;br /&gt;더욱이 기본적으로 멀티 프로젝트가 가능하고 trac 에는 존재하지 않았었던 프로젝트 별 포럼과 파일 저장소를 지원합니다.&lt;br /&gt;단순히 프로젝트 관리 기능에만 충실했던 trac 과는 달리 뉴스, 문서 관리 시스템 등 일종의 커뮤니티 및 배포 사이트로서의 기능이 포함되어 있습니다.&lt;br /&gt;&lt;br /&gt;일단 한 번 설치를 해 봅시다.&lt;br /&gt;우분투 8.10 데스크탑 버젼을 기준으로 설명합니다.&lt;br /&gt;&lt;br /&gt;우선 subversion 클라이언트가 설치되어 있지 않으신 분은&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;sudo apt-get install subversion&lt;/div&gt;으로 subversion 클라이언트를 준비합시다.&lt;br /&gt;&lt;br /&gt;다음은 최신 stable 버젼을 저장소에서 export 합니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;svn co http://redmine.rubyforge.org/svn/branches/0.7-stable redmine-0.7&lt;/div&gt;&lt;br /&gt;디렉토리로 이동 후 webrick을 실행합니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;cd redmine-0.7&lt;br /&gt;./script/server&lt;/div&gt;&lt;br /&gt;제 경우는 레일스를 2.1.0 버젼으로 업데이트 했는 데 config/boot.rb 가 버젼이 맞지 않는다고 하더군요.&lt;br /&gt;redmine 은 레일스 2.0.2 버젼을 필요로 합니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;rake rails:update&lt;/div&gt;&lt;br /&gt;명령으로 boot.rb 를 최신 버젼으로 업데이트 시킬 수 있습니다.&lt;br /&gt;레일스가 설치되지 않으신 분은&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;sudo gem install -v=2.0.2 rails&lt;/div&gt;로 2.0.2의 버젼을 설치하시던가, 최신 버젼의 레일스를 설치하시고 저처럼 아래와 같은 작업을 하시면 됩니다.&lt;br /&gt;&lt;br /&gt;config/environment.rb 를 열어서, 아래와 같은 부분에서 RAILS_GEM_VERSION을 현재 자신이 사용하고 있는 레일스의 버젼과 맞추어 줍시다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;RAILS_GEM_VERSION = &#039;2.0.2&#039; unless defined? RAILS_GEM_VERSION&lt;/div&gt;&lt;br /&gt;다음은 데이터 베이스 설정입니다.&lt;br /&gt;저는 mysql을 이용하므로 mysql 서버에 접속해 데이터 베이스를 만들어 줍니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;&amp;nbsp;create database redmine_development default character set utf8;&lt;br /&gt;&amp;nbsp;create database redmine_production default character set utf8;&lt;br /&gt;&amp;nbsp;create database redmine_test default character set utf8;&lt;/div&gt;&lt;br /&gt;사실 production 환경으로 돌리는 것이 가장 나을 거고 그러면 redmne_production 만 만들어 주면 됩니다.&lt;br /&gt;기본으로는 development 환경으로 서버가 돌아가게 되는 데, config/environment.rb 등에서 RAILS_ENV 를 &#039;production&#039;으로 변경하면 production 환경으로 돌아가게 됩니다. 저는 다른 프로그램들과 연동시킬 생각이라 development 로 돌리기로 했습니다.&lt;br /&gt;&lt;br /&gt;다음은 config/database.yml을 수정합니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;cp config/database.yml.example config/database.yml&lt;/div&gt;&lt;br /&gt;로 샘플 설정을 복사하시고,&amp;nbsp; db 이름, db user 이름, db user 패스워드 등을 잘 설정하시면 됩니다.&lt;br /&gt;우분투의 경우 mysql 소켓의 위치가 rails 기본값과는 달라서 아래와 같이 해 주거나 혹은 mysql gem 을 설치하면 된다고 합니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;development:&lt;br /&gt;&amp;nbsp; adapter: mysql&lt;br /&gt;&amp;nbsp; database: redmine_development&lt;br /&gt;&amp;nbsp; host: localhost&lt;br /&gt;&amp;nbsp; username: root&lt;br /&gt;&amp;nbsp; password:&lt;br /&gt;&amp;nbsp; encoding: utf8&lt;br /&gt;&amp;nbsp; socket: /var/run/mysqld/mysqld.sock&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;./script/server&lt;/div&gt;&lt;br /&gt;웹 서버를 돌려보려 하면, rfpdf 플러그인이 에러를 냅니다.(레일스 2.1 기준)&lt;br /&gt;&lt;br /&gt;/home/alice/redmine/redmine-0.7/vendor/plugins/rfpdf/init.rb 의 소스 중&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;ActionView::&lt;span style=&quot;color: rgb(212, 26, 1); font-weight: bold;&quot;&gt;Base&lt;/span&gt;::register_template_handler &#039;rfpdf&#039;, RFPDF::View&lt;/div&gt;&lt;br /&gt;을 아래와 같이 수정합니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;ActionView::&lt;span style=&quot;color: rgb(212, 26, 1); font-weight: bold;&quot;&gt;Template&lt;/span&gt;::register_template_handler &#039;rfpdf&#039;, RFPDF::View&lt;/div&gt;&lt;br /&gt;그래도 아직 에러를 내는군요.;;&lt;br /&gt;app/controllers/application.rb 에 제일 첫째 줄에 &lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;require &#039;redmine&#039;&lt;/div&gt;이라고 적어줍시다.&lt;br /&gt;&lt;br /&gt;그리고 rake!&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;rake db:migrate&lt;/div&gt;&lt;br /&gt;rake 중에도 또 에러가 나는데..&lt;br /&gt;db/migrate/072_add_enumerations_position.rb&lt;br /&gt;db/migrate/078_add_custom_fields_position.rb&lt;br /&gt;파일의 each_value 라는 메소드를 그냥 each로 바꿔 줍니다.&lt;br /&gt;&lt;br /&gt;rake가 끝나면 마지막으로 webrick을 실행시켜 보기위해 &lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;./script/server&lt;/div&gt;로 서버를 실행시킵니다.&lt;br /&gt;&lt;br /&gt;그리고 localhost:3000 으로 확인해보면 끝!&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs7.tistory.com/image/13/tistory/2008/08/05/22/19/48985355f185e&quot; alt=&quot;redmine 의 시작 페이지&quot; height=&quot;377&quot; width=&quot;600&quot;/&gt;&lt;p class=&quot;cap1&quot;&gt;심플하다 못해 썰렁해서 왠지 모를 허무감마저 든다.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;심플하다 못해 썰렁한 디자인의 redmine 첫 페이지가 나오네요.&lt;br /&gt;이거 삽질하다 보니 그냥 레일스 2.0.2에다 설치하거나 redmine 개발 버젼을 설치할 걸 하는 후회도 좀 드네요. :)&lt;br /&gt;그래도 굳이 난 레일스 2.1에 stable 버젼을 쓰겠다고 고집하시는 분이 계시면 이 글이 도움이 되었으면 하네요.&lt;br /&gt;좀 사용해보고 trac과 비교도 해보고 하려고 했는데, 설치까지만 하도록 하고 다음 포스팅거리로 남겨둬야겠습니다.&lt;br /&gt;사용기 전에 설치편 번외편;; 정도로 mod_rails, svn 연동을 다룰까합니다. mod_rails 설정이야 별 다를 것 없겠지만 이왕 하는 김에 같이 다룰까 합니다.&lt;br /&gt;</description>
			<category>프로그래밍/개발</category>
			<category>2.1</category>
			<category>Ruby</category>
			<category>SCM</category>
			<category>SVN</category>
			<category>trac</category>
			<category>Wiki</category>
			<category>개발</category>
			<category>레일스</category>
			<category>루비</category>
			<category>삽질</category>
			<category>설치</category>
			<category>위키</category>
			<category>프로그래밍</category>
			<category>프로젝트 관리</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/49</guid>
			<comments>http://dragonkun.tistory.com/entry/Ruby%EC%9D%98-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B4%80%EB%A6%AC-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-Redmine#entry49comment</comments>
			<pubDate>Tue,  5 Aug 2008 22:14:00 +0900</pubDate>
		</item>
		<item>
			<title>쉽게 익숙해지지 않는 루비 문법 { 코드 블록 }</title>
			<link>http://dragonkun.tistory.com/entry/ruby-syntax-code-block</link>
			<description>저는 루비를 제대로 공부해 본 적이 없습니다.&lt;br /&gt;다만, 파이썬을 약간 다뤄본 지식으로 몇 개 레일스 프로젝트를 맡아 진행해 왔었고,&lt;br /&gt;간단한 레일스 어플리케이션을 작성하기 위한 최소한의 루비 지식을 가지고 있습니다.&lt;br /&gt;그렇기 때문에 아직도 익숙치 않는 루비 문법들이 많이 있고, 익숙치 않아서 자꾸 쓰기를 꺼려하는 문법들이 몇 개 있습니다.&lt;br /&gt;그런 문법들의 개념을 익히고 잘 사용해 보기 위해서 한 번 정리해 보기로 했습니다.&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;코드 블록&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;루비 코드를 보게 되면서 처음으로 막히는 부분은 바로 코드 블록이었습니다.&lt;br /&gt;코드 중간에 갑작스럽게 등장하는 중괄호나 do/end 키워드는 어떻게 해석해야할지 난해하기만 했습니다.&lt;br /&gt;사실 지금도 루비는 초보 수준이라 코드 블록이 익숙하지는 않습니다. :)&lt;br /&gt;코드 블록은 다음과 같이 쓰입니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;object.method { &lt;br /&gt;&amp;nbsp; # 루비 코드들...&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;혹은&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;object.method do&lt;br /&gt;&amp;nbsp; # 루비 코드들...&lt;br /&gt;end&lt;/div&gt;&lt;br /&gt;메소드 뒤에는 당연히 인자들이 나열되어야 할 것인데.. 어째서 쌩뚱맞게 코드들이 나오는가?&lt;br /&gt;하는 생각이 많이 들었죠. &lt;br /&gt;이렇게 생각해도 되는 건지는 잘 모르겠지만..&lt;br /&gt;코드 블록안의 코드들을 인자처럼 method 에 넘긴다고 생각하면 될 것 같네요.&lt;br /&gt;실제로 메소드에서 인자로 요구하는 건 아니지만, 이해하기엔 그게 가장 쉽게 이해가 되더군요.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;yield 키워드&lt;/span&gt;&lt;br /&gt;위에서 인자처럼 넘긴다고 했는데, 그건 그냥 이해를 쉽게 하기 위해서 그렇게 생각하는 것이고..&lt;br /&gt;실제로는 메소드안에서 yield 키워드 부분이 코드 블록으로 대체가 되는 것이더군요.&lt;br /&gt;더 자세히 보면 메소드가 코드의 일부분을 코드 블록에게 양보(yield)한다는 느낌일까요.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;def yield_test&lt;br /&gt;&amp;nbsp; puts &quot;시작&quot;&lt;br /&gt;&amp;nbsp; yield&lt;br /&gt;&amp;nbsp; puts &quot;끝&quot;&lt;br /&gt;end&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;yield_test { puts &quot;yield 되었음&quot; }&lt;/div&gt;&lt;br /&gt;의 결과는&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;시작&lt;br /&gt;yield 되었음&lt;br /&gt;끝&lt;/div&gt;&lt;br /&gt;이 되겠지요. yield 에서 인자를 넘길 수도 있고 코드 블록에서 리턴된 값을 받을 수도 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;def yield_test&lt;br /&gt;&amp;nbsp; puts &quot;시작&quot;&lt;br /&gt;&amp;nbsp; result = yield(10)&lt;br /&gt;&amp;nbsp; puts &quot;결과는 #{result}&quot;&lt;br /&gt;end&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;yield_test do |x|&lt;br /&gt;&amp;nbsp; x * 5&lt;br /&gt;end&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;시작&lt;br /&gt;결과는 50&lt;/div&gt;&lt;br /&gt;yield 키워드가 함수처럼 10 이란 수를 코드 블록으로 넘겨줬고, 코드 블록은 10을 x라는 블록안의 지역 변수로 넘겨 받았습니다.&lt;br /&gt;또 코드 블록에서 수행된 x*5의 결과를 yield_test 안으로 리턴하여 yield_test의 result가 넘겨받았음을 알 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;font style=&quot;font-weight: bold;&quot; size=&quot;2&quot;&gt;each&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt; 메소드&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;그 의미도 잘 모르고 계속 써 왔었던 Array 클래스의 each 메소드가 코드 블록을 보고 나니 다시 보이기 되더군요.&lt;br /&gt;그냥 원래 그런 형태로 쓰는 거다 정도로만 생각하고 있었는데, yield 와 코드 블록을 이해할 수 있는 대표적인 예가 each 였네요.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;[1,12,20,56].each { |i| puts i* 10 }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;&lt;div&gt;10&lt;br /&gt;120&lt;br /&gt;200&lt;br /&gt;560&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;each는 Array 에서 한 원소씩 돌아가면서 계속 그 원소의 값을 인자로 yield를 하는 형식이겠죠.&lt;br /&gt;yield에서 넘긴 인자를 코드 블록이 받아서 반복하는 형태의 가장 자주 쓰이는 코드 블록/yield의 예라고 할 수 있겠네요.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;사실 최근에 취업과 관련해 면접을 보면서, rails 프로젝트를 진행한 것을 보고 루비를 잘 아시는 면접관 분이&lt;br /&gt;루비와 레일스에 관련한 질문을 몇 개 하셨는데, 코드 블록에 대한 질문을 제대로 답변하지 못한 적이 있었습니다.&amp;nbsp; 그래서 제대로 공부도 할겸 책도 찾아보고 인터넷 사이트도 뒤져보면서 알아보고 개념을 익히게 됐네요.&lt;br /&gt;다음번에도 비슷하게 개념이잘안 잡힌 루비의 문법 등이 있으면, 정리해서 포스팅할 계획입니다.&lt;br /&gt;이번 기회에 루비 공부도 확실히 해 두는 것이 좋을 것 같아서요. :)&lt;br /&gt;</description>
			<category>프로그래밍/개발</category>
			<category>code block</category>
			<category>Ruby</category>
			<category>루비</category>
			<category>코드 블록</category>
			<category>프로그래밍</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/47</guid>
			<comments>http://dragonkun.tistory.com/entry/ruby-syntax-code-block#entry47comment</comments>
			<pubDate>Sun,  3 Aug 2008 01:26:00 +0900</pubDate>
		</item>
		<item>
			<title>REST 와 레일스</title>
			<link>http://dragonkun.tistory.com/entry/rest-and-rails</link>
			<description>레일스를 공부하기 시작한지도 벌써 1년이 다 되어가네요.&lt;br /&gt;1년동안 사용한 것 치고는 크게 실력이 늘지는 않았지만, 이제야 어느 정도 감이 잡히고 있습니다.&lt;br /&gt;레일스로의 입문은 쉽지만 어느 정도 파고들다 보면 새로 공부할 것이 많이 생기기도 합니다.&lt;br /&gt;이제부터 이 블로그에 하나 하나씩 레일스와 관련된 지식들을 정리해 보려 합니다.&lt;br /&gt;그 첫번째로 REST와 rails에 관련한 글로 시작합니다.&lt;br /&gt;&lt;br /&gt;&lt;font style=&quot;font-weight: bold;&quot; size=&quot;3&quot;&gt;REST&lt;/font&gt;&lt;br /&gt;우선 REST란 무엇인가 부터 짚고 넘어가야겠죠.&lt;br /&gt;자세히 설명하기엔 실력도 부족하고, 더 좋은 설명들이 인터넷에 많기 때문에 아래의 링크로 대체 합니다.&lt;br /&gt;REST가 무엇인지에 대해 굉장히 이해하기 쉽게 쓴 글입니다.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.eloitcube.co.kr/43&quot; target=&quot;_blank&quot;&gt;내가 아내에게 REST를 어떻게 설명했는가&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;간단히 말해서 리소스(표현의 대상)라는 것에 대해 URI와 HTTP METHOD로&lt;br /&gt;그 리소스의 표현(html,xml 등등..)에 접근/제어하는 형식의 웹 아키텍쳐이죠.&lt;br /&gt;간단히 말한다고는 했지만 전혀 간단하지는 않아 보이네요 :)&lt;br /&gt;&lt;br /&gt;&lt;font style=&quot;font-weight: bold;&quot; size=&quot;3&quot;&gt;RAILS 2.0 의 scaffold&lt;/font&gt;&lt;br /&gt;제가 레일스를 공부하는 중에 커다란 변화가 하나 있었습니다.&lt;br /&gt;그건 레일스의 버젼이 1.2에서 2.0으로 업그레이드 했다는 점이었죠.&lt;br /&gt;제가 2.0 버젼의 레일스를 쓰면서 가장 처음으로 당황했던 것은 바로&lt;br /&gt;scaffold 가 생성해주는 코드였습니다.&lt;br /&gt;&lt;br /&gt;/:controller/:action/:id 식의 라우팅이 아닌 다른 방식의 라우팅이라던가..&lt;br /&gt;알 수 없는 repond_to 메소드에..&lt;br /&gt;:url =&amp;gt; { :controller =&amp;gt; &#039;controller_name&#039;, :action =&amp;gt; &#039;action_name&#039; } 식이 아닌 url의 표현들이 꽤 낯설었었죠.&lt;br /&gt;아래에 몇 개의 메소드만 붙여넣어 봅니다.&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;# POST /resources&lt;br /&gt;# POST /resources.xml&lt;br /&gt;def create&lt;br /&gt;&amp;nbsp; @resource = Resource.new(params[:resource])&lt;br /&gt;&lt;br /&gt;&amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; if @resource.save&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; flash[:notice] = &#039;Resource was successfully created.&#039;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.html { redirect_to(@resource) }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @resource, :status =&amp;gt; :created, :location =&amp;gt; @resource }&lt;br /&gt;&amp;nbsp; &amp;nbsp; else&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.html { render :action =&amp;gt; &quot;new&quot; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @resource.errors, :status =&amp;gt; :unprocessable_entity }&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# GET /resources/1&lt;br /&gt;# GET /resources/1.xml&lt;br /&gt;def show&lt;br /&gt;&amp;nbsp; &amp;nbsp; @resouce = Resource.find(params[:id])&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.html # show.html.erb&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { render :xml =&amp;gt; @resource }&lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# DELETE /resources/1&lt;br /&gt;# DELETE /resources/1.xml&lt;br /&gt;def destroy&lt;br /&gt;&amp;nbsp; @resource = Resource.find(params[:id])&lt;br /&gt;&amp;nbsp; @resource.destroy&lt;br /&gt;&lt;br /&gt;&amp;nbsp; respond_to do |format|&lt;br /&gt;&amp;nbsp; &amp;nbsp; format.html { redirect_to(resources_url) }&lt;br /&gt;&amp;nbsp; &amp;nbsp; format.xml&amp;nbsp; { head :ok }&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;시작은 routes.rb 부터...&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;레일스에서 REST의 시작은 config/routes.rb 로부터 시작합니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;map.resources :posts&lt;/div&gt;&lt;br /&gt;이 한 라인을 추가 하면, posts 리소스에 접근하기 위한 URI 들이 설정이 됩니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;GET /posts &lt;br /&gt;POST /posts&lt;br /&gt;GET /posts/new&lt;br /&gt;GET /posts/:id/edit&lt;br /&gt;GET /posts/:id&lt;br /&gt;PUT /posts/:id&lt;br /&gt;DELETE /posts/:id&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;위에서부터 각각 PostController의 index, create, new, edit, show, update, destroy를 호출합니다.&lt;br /&gt;그리고 뷰에서는 posts_url, new_post_url, post_url(@post), edit_post_url 등의 헬퍼를 사용해서 url을 표현할 수 있습니다.&lt;br /&gt;&lt;br /&gt;또한 액티브레코드의 has_many 관계처럼 routes.rb 에서도 비슷하게 표현해 줄 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;map.resources :posts, :has_many =&amp;gt; :comments&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;마찬가지로 아래처럼 라우팅이 설정이 되고, 각각의 헬퍼가 만들어 집니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;GET /posts/comments&lt;br /&gt;
POST /posts/comments&lt;br /&gt;
GET /posts/comments/new&lt;br /&gt;
GET /posts/:post_id/comments/:id/edit&lt;br /&gt;
GET /posts/:post_id/comments/:id&lt;br /&gt;
PUT /posts/:post_id/comments/:id&lt;br /&gt;
DELETE /posts/:post_id/comments/:id&lt;/div&gt;&lt;br /&gt;이 때의 헬퍼의 이름들은 comments_url(@post), new_comments_url(@post), comment_url(@post,@comment), edit_comment_url(@post,@comment) 등이 됩니다.&lt;br /&gt;&lt;br /&gt;CRUD(Create, Read, Update, Destroy) 외의 액션에 대해 url을 만들어 주고 싶을 때엔 :collection 과 :member를 이용할 수 있습니다&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;map.resources :posts :member =&amp;gt; {:recommend=&amp;gt;:put}&lt;br /&gt;map.resources :posts, :collection =&amp;gt; {:manage=&amp;gt;:get}&lt;/div&gt;&lt;br /&gt;member의 경우는 /posts/:id/recommend 와 같이 하나의 리소스에 해당하는 액션일 때,&lt;br /&gt;collection은 /posts/manage 같이 모든 리소스에 해당하는 액션일 때 사용합니다.&lt;br /&gt;위의 :put과 :get 은 허용하는 http method를 의미하고 :any라고 쓰면 모든 http method(:get, :post, :put, :delete)를 허용합니다.&lt;br /&gt;&lt;br /&gt;&lt;font style=&quot;font-weight: bold;&quot; size=&quot;3&quot;&gt;respond_to&lt;/font&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt; do |format|&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;그럼 scaffold의 각 메소드 끝에 나와있는 respond_to 에 대해서 살펴봅시다.&lt;br /&gt;사실 위의 URI 매핑에서 생략된 것이 하나 있습니다.&lt;br /&gt;바로 :format 이라는 건데, 리소스를 어떤 형태로 표현할 것인가에 대해서 요청합니다.&lt;br /&gt;사실 위의 7개의 라우팅은 아래와 같은 또 다른 형태의 매핑이 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;GET /posts.:format&lt;br /&gt;GET /posts/:id.:format&lt;br /&gt;GET /posts/new.:format&lt;br /&gt;GET /posts/:id/edit.:format&lt;br /&gt;...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;위와 같은 라우팅 규칙을 통해서 /posts.html, /posts.xml, /posts/1.html, /posts/1.xml 등의 요청이 커버됩니다.&lt;br /&gt;/posts/1.xml 같은 요청의 경우 format 이라는 메소드는 xml 을 리턴하게 됩니다.&lt;br /&gt;respond_to do |format| 에서 format 이 xml일 경우는 format.xml 에 해당하는 블럭을 실행하게 됩니다.&lt;br /&gt;&lt;br /&gt;다시 한 번 말씀드리면 위의 REST 설명에도 잘 나와있듯이 리소스의 표현은 &lt;br /&gt;html 외의 다른 여러가지가 될 수 있습니다.&lt;br /&gt;
가장 주로 쓰이는 예로는 xml이 있겠지요. text가 될 수도 있고, pdf가 될 수도 있겠지요.&lt;br /&gt;오픈API 같은 웹 서비스를 구현할 때 리소스의 표현을 xml로 이용하면 쉽게 구현할 수 있겠죠.&lt;br /&gt;&lt;br /&gt;위의 scaffold 의 코드에서는 format이 html일 경우는 생략이 가능한데..&lt;br /&gt;생략하게 되면 repond_to에서 디폴트로 가장 첫 라인의 format을 선택하기 때문이라고 하더군요.&lt;br /&gt;&lt;br /&gt;----&lt;br /&gt;&lt;br /&gt;REST와 레일스라고 거창하게 시작을 했는 데 결국은 레일스 2.0 scaffold 에서 생성한 컨트롤러 분석이 되버렸네요.&lt;br /&gt;그래도 주위에 레일스 2.0의 접근을 어려워하는 분들이 있어서, 그런 분들에게 도움이 되는 글이었으면 좋겠네요.&lt;br /&gt;&lt;br /&gt;</description>
			<category>프로그래밍/개발</category>
			<category>Rails</category>
			<category>rest</category>
			<category>Ruby on Rails</category>
			<category>레일스</category>
			<category>루비</category>
			<category>웹</category>
			<category>프레임워크</category>
			<category>프로그래밍</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/45</guid>
			<comments>http://dragonkun.tistory.com/entry/rest-and-rails#entry45comment</comments>
			<pubDate>Thu, 31 Jul 2008 21:10:00 +0900</pubDate>
		</item>
		<item>
			<title>플리커, CCL을 이용한 저작권 문제 없는 인터넷 글쓰기</title>
			<link>http://dragonkun.tistory.com/entry/copyrights-safe-writing-using-flickr-and-creative-commons</link>
			<description>포스팅을 하면서 고민되는 문제 중의 하나가 바로 저작권입니다.&lt;br /&gt;내 포스트에 사진을 넣고 싶은 데, 아무데서나 퍼 왔는데, 그게 알고보니 유명 사진 작가의 사진이었다면?&lt;br /&gt;간혹 그냥 인터넷에 떠도는 사진을 자기 홈페이지에 넣었다가 사진 작가들에게 소송을 걸렸다는 이야기가 들리기도하고, &lt;br /&gt;그런것만 전문적으로 찾아서 소송을 걸어서 먹고 산다는 변호사들이 있다는 소문도 있고...&lt;br /&gt;그렇다고 일일이 저작권자를 찾아서 허락을 받기도 힘들고..&lt;br /&gt;&lt;br /&gt;이런 고민을 하시는 분들을 위해서..&lt;br /&gt;Flickr를 이용해서 저작권에 위배되지 않고 사진을 이용할 수 있는 방법을 소개해 드립니다.&lt;br /&gt;Flickr 는 전 세계적인 사진공유/관리 사이트 입니다.&lt;br /&gt;&lt;br /&gt;예를 들어 한우와 관련된 글을 쓴다고 가정합시다.&lt;br /&gt;일단 플리커로 들어가서 &#039;Korean Cow&#039; 라고 검색을 합니다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs5.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNS50aXN0b3J5LmNvbTovYXR0YWNoLzAvMTQwMDAwMDAwMDAwLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;488&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;&lt;br /&gt;아쉽게도 국내의 자료는 많이 등록되어 있지도 않고, 등록된 자료들 중에서도 CCL 이 적용된 것은 매우 드뭅니다.&lt;br /&gt;그래서 검색을 할 땐 영어로 검색을 해야 쓸만한 결과를 얻으실 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs4.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNC50aXN0b3J5LmNvbTovYXR0YWNoLzAvMTUwMDAwMDAwMDAwLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;601&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;&lt;br /&gt;결과들이 나옵니다. 그럼 이 사진들을 그냥 가져다가 쓸 수 있느냐?&lt;br /&gt;그렇지 않습니다. 이 모든 사진들은 사진을 찍은 사람에게 저작권이 있습니다.&lt;br /&gt;아래 사진에 보이는 All rights reserved 가 그것을 의미하고 있습니다.&lt;br /&gt;(사실 All rights reserved 라고 따로 명시를 해 주지 않아도 인터넷의 모든 저작물들은 저작권에 의해서 보호받을 수 있습니다.)&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs4.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNC50aXN0b3J5LmNvbTovYXR0YWNoLzAvMTUwMDAwMDAwMDAxLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;271&quot; width=&quot;478&quot;/&gt;&lt;/div&gt;이런 표시가 있으면 그냥 퍼 오시면 안됩니다.&lt;br /&gt;&lt;br /&gt;그럼 어떻게 해야 할까요? 여기서 우리의 구세주 Creative Commons License(이하 CCL)가 등장합니다.&lt;br /&gt;CCL 은 &lt;b&gt;자신의 창작물에 대하여 일정한 조건하에 모든 이의 자유이용을 허락하는 내용의 라이선스&lt;/b&gt; 입니다.(http://www.creativecommons.or.kr/ 참고)&lt;br /&gt;일정한 조건은 아래 쪽에서 다루기로 하죠. &lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs5.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNS50aXN0b3J5LmNvbTovYXR0YWNoLzAvMTQwMDAwMDAwMDAxLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;601&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs4.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNC50aXN0b3J5LmNvbTovYXR0YWNoLzAvMTUwMDAwMDAwMDAyLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;595&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;&lt;br /&gt;고급 검색 하단에 있는 Creative Commons 관련 옵션을 체크 해 줍니다.&lt;br /&gt;아래 체크박스 아래에 있는 항목도 해당사항이 있으면 체크해 줍시다.&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs5.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNS50aXN0b3J5LmNvbTovYXR0YWNoLzAvMTQwMDAwMDAwMDAyLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;581&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;이제 나오는 목록은 CCL이 적용된 목록입니다.&lt;br /&gt;목록을 주욱 훑어보시다가 이거다 싶은 사진을 클릭해 봅시다.&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs4.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNC50aXN0b3J5LmNvbTovYXR0YWNoLzAvMTUwMDAwMDAwMDAzLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;565&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;맘에 드는 사진을 찾았내요. CCL 표시도 확실히 되어있구요.&lt;br /&gt;그럼 왼쪽 위에 있는 돋보기 아이콘을 클릭해 봅시다.&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs5.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNS50aXN0b3J5LmNvbTovYXR0YWNoLzAvMTQwMDAwMDAwMDAzLnBuZw==&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;341&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;&lt;br /&gt;(사진 7. 사진 다운로드 화면)&lt;br /&gt;여기서 마음에 드는 크기를 클릭합니다. 그리고 드래그 후 복사 후 자신의 블로그에 붙여넣기 합니다.&lt;br /&gt;복사할 때, CCL 마크와 라이선스 이용 허락 조건도 같이 복사합시다.&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://farm1.static.flickr.com/3/3973543_c3a166d5bc.jpg&quot;&gt;&lt;br /&gt;&lt;/p&gt;
		
		
		
	
		&lt;p id=&quot;cc_license&quot;&gt;
				&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/&quot; title=&quot;Click this link to find out details of the Creative Commons license associated with this image.&quot;&gt;&lt;img src=&quot;http://creativecommons.org/images/public/somerights20.gif&quot; alt=&quot;There is a Creative Commons license attached to this image.&quot; style=&quot;border: medium none ;&quot; height=&quot;31&quot; width=&quot;88&quot;&gt;&lt;/a&gt; 

			&lt;span class=&quot;ccIcn&quot;&gt;&lt;img src=&quot;http://l.yimg.com/www.flickr.com/images/cc_icon_attribution.gif&quot; alt=&quot;저작자표시&quot; title=&quot;저작자표시&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://l.yimg.com/www.flickr.com/images/cc_icon_noncomm.gif&quot; alt=&quot;비영리&quot; title=&quot;비영리&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://l.yimg.com/www.flickr.com/images/cc_icon_sharealike.gif&quot; alt=&quot;Share Alike&quot; title=&quot;Share Alike&quot; border=&quot;0&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p id=&quot;cc_license&quot;&gt;&lt;b&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://flickr.com/photos/donut2d/&quot; title=&quot;donut2D님의 포토스트림 링크&quot;&gt;&lt;b&gt;Flickr : donut2D&lt;/b&gt;&lt;/a&gt;님&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p id=&quot;cc_license&quot;&gt;이걸로 완료입니다. &lt;span style=&quot;color: rgb(255, 0, 0); font-weight: bold;&quot;&gt;꼭 저작권자를 표기해 주는 것을 잊지 맙시다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p id=&quot;cc_license&quot;&gt;굳이 사진의 저작권자이신 donut2D 님께 사진을 가져가도 좋다는 허락을 받을 필요가 없이 위에 표기된 CCL 에 의해서 그냥 퍼 올 수 있습니다.&lt;/p&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;&lt;p style=&quot;font-weight: bold;&quot; id=&quot;cc_license&quot;&gt;CCL 의 이용허락조건&lt;/p&gt;CCL이 적용된 컨텐츠를 사용하는 데에는 일종의 대가(?)가 있습니다.&lt;br /&gt;CCL의 컨텐츠에는 작은 아이콘으로 이른바 이용허락조건이 표기되어 있는 데, 그 의미는 아래와 같습니다.&lt;br /&gt;&lt;br /&gt;&lt;img alt=&quot;by&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/by.png&quot;&gt;&lt;br /&gt;저작자 표시&lt;br /&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;(이미지를 찾지 못해서 넣지 못했는 데 위 한우 사진에 BY: 라고 써 있는 아이콘과 같은 뜻입니다. 주로 이 사람 아이콘을 쓰는 데, 플리커는 특이한 걸 쓰는 군요..)&lt;/span&gt;&lt;br /&gt;
&lt;img alt=&quot;by&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/by.png&quot;&gt;&lt;img alt=&quot;nc&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/nc.png&quot;&gt;&lt;br /&gt;
저작자 표시 - 비영리&lt;br /&gt;&lt;img alt=&quot;by&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/by.png&quot;&gt;&lt;img alt=&quot;nd&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/nd.png&quot;&gt;&lt;br /&gt;저작자 표시 - 변경금지&lt;br /&gt;&lt;img alt=&quot;by&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/by.png&quot;&gt;&lt;img alt=&quot;sa&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/sa.png&quot;&gt;&lt;br /&gt;저작자 표시 - 동일조건변경허락&lt;br /&gt;&lt;img alt=&quot;by&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/by.png&quot;&gt;&lt;img alt=&quot;nc&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/nc.png&quot;&gt;&lt;img alt=&quot;nd&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/nd.png&quot;&gt;&lt;br /&gt;저작자 표시 - 비영리 - 변경금지&lt;br /&gt;&lt;img alt=&quot;by&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/by.png&quot;&gt;&lt;img alt=&quot;nc&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/nc.png&quot;&gt;&lt;img alt=&quot;sa&quot; src=&quot;http://mirrors.creativecommons.org/presskit/icons/sa.png&quot;&gt;&lt;br /&gt;저작자 표시 - 비영리 - 동일조건변경허락&lt;br /&gt;&lt;br /&gt;다른 것은 별 설명이 필요없을 것 같고..&lt;br /&gt;&#039;&lt;span style=&quot;font-weight: bold;&quot;&gt;동일조건변경허락&lt;/span&gt;&#039; 만 부가 설명을 하자면, 그 컨텐츠는 수정이 자유롭지만 변경 후에는 반드시 CCL을 적용하고 같은 원본과 같은 조건으로만 배포할 수 있습니다.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;아쉬운 점&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;이렇게 자유롭게 손 쉽게 유용한 컨텐츠들을 공유할 수 있는 CCL이지만, 아쉬운 점이 있습니다.&lt;br /&gt;아직은 CCL이 적용된 국내의 컨텐츠가 부족하다는 점과 국내 커뮤니티 등에서 CCL을 적용하고 있는 곳이 거의 없다는 점이지요. &lt;br /&gt;또한 국내의 저작권에 대한 몰이해(불펌 블로그 등)와 공유 의식의 부재 역시 CCL의 확산을 가로막는 장애물이라고 할 수 있겠죠..&lt;br /&gt;&lt;br /&gt;CCL을 통한 컨텐츠의 올바른 공유&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;text-decoration: line-through; color: rgb(142, 142, 142);&quot;&gt;P2P로 불법 자료 공유하면서 변명으로 내세우는 공유정신이 아닌&lt;/span&gt;)는 서로를 이롭게 합니다.&lt;br /&gt;저작권자는 내 저작물이 많은 사람들에게 읽히거나 사용될 수 있어서, 이용자는 훌륭한 품질의 컨텐츠를 손쉽게 이용할 수 있어서 좋지요.&lt;br /&gt;많은 사람들이 공유했으면 좋겠다고 생각하는 당신의 컨텐츠에도 CCL을 적용해 보는 것은 어떨까요?&lt;br /&gt;</description>
			<category>일상</category>
			<category>CC</category>
			<category>CCL</category>
			<category>Creative commons</category>
			<category>flickr</category>
			<category>공유</category>
			<category>글쓰기</category>
			<category>블로그</category>
			<category>저작권</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/44</guid>
			<comments>http://dragonkun.tistory.com/entry/copyrights-safe-writing-using-flickr-and-creative-commons#entry44comment</comments>
			<pubDate>Mon, 28 Apr 2008 13:34:59 +0900</pubDate>
		</item>
		<item>
			<title>어설픔의 절정, 스무살.  영화 [나의 노래는]</title>
			<link>http://dragonkun.tistory.com/entry/%EC%96%B4%EC%84%A4%ED%94%94%EC%9D%98-%EC%A0%88%EC%A0%95-%EC%8A%A4%EB%AC%B4%EC%82%B4-%EC%98%81%ED%99%94-%EB%82%98%EC%9D%98-%EB%85%B8%EB%9E%98%EB%8A%94</link>
			<description>&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs5.tistory.com/image/2/tistory/2008/04/21/01/18/480b6ce82b0b8&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;429&quot; width=&quot;300&quot;/&gt;&lt;/div&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;무엇을 해도 어설프기만한 &#039;&lt;span style=&quot;font-weight: bold;&quot;&gt;스무살&lt;/span&gt;&#039;의 청년. 그게 바로 희철입니다.&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;br /&gt;저 역시 스무살에는 정말 지나고 나면 아무렇지도 않을 쓸데없는 것들로 고민했던 적이 많았습니다.&lt;br /&gt;지금 생각해보면 얼굴이 화끈거릴 정도로 어설프고 부끄러운 순간들이었지만..&lt;br /&gt;그래도 고민하고 방황했던 그 순간만큼은 정말 진지했고 뜨거웠고 열정적이었던 것 같습니다.&lt;br /&gt;&lt;br /&gt;그래도 희철은 많은 우여곡절 끝에 &#039;영화&#039;라는 꿈을 찾아냅니다. &lt;br /&gt;그리고 그 &#039;영화&#039;라는 목표를 위해 꾾임없이 노력하는 스무살이라는 타이틀을 가지게 됩니다.&lt;br /&gt;사실 꿈을 찾는 다는 것이 그렇게 쉬운 일이 아닙니다.&lt;br /&gt;아직도 저도 너의 꿈이 뭐냐는 질문을 받으면 한참을 버벅이다 그냥 둘러대기만 하기 바쁘니까요.&lt;br /&gt;&lt;br /&gt;이래저래 어설픈 스무살이라는 표현을 쓰고 있지만.. 그래봐야 저도 어설픈 20대 중반일 뿐입니다. :)&lt;br /&gt;그것도 무려 극 중 희철이 보다 못한 그다지 제대로 된 꿈도 가지고 있지 않지요.&lt;br /&gt;20대여 꿈을 가져라~ 하고 비장하게 글의 끝을 맺고 싶지만..&lt;br /&gt;우선 저부터 꿈을 가질 수 있도록 열심히 노력을 해야겠네요.. -_-&lt;br /&gt;&lt;br /&gt;Ps. 영화는 4월 25일 개봉입니다.&lt;br /&gt;</description>
			<category>일상</category>
			<category>On20</category>
			<category>나의 노래는</category>
			<category>리뷰</category>
			<category>시사회</category>
			<category>어설픔</category>
			<category>영화</category>
			<category>인디스페이스</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/43</guid>
			<comments>http://dragonkun.tistory.com/entry/%EC%96%B4%EC%84%A4%ED%94%94%EC%9D%98-%EC%A0%88%EC%A0%95-%EC%8A%A4%EB%AC%B4%EC%82%B4-%EC%98%81%ED%99%94-%EB%82%98%EC%9D%98-%EB%85%B8%EB%9E%98%EB%8A%94#entry43comment</comments>
			<pubDate>Mon, 21 Apr 2008 01:47:12 +0900</pubDate>
		</item>
		<item>
			<title>웹 접근성을 생각하는 자바스크립트</title>
			<link>http://dragonkun.tistory.com/entry/accessibility-friendly-javascript</link>
			<description>요즘의 웹 사이트들은 점점 Ajax 의 사용추세가 늘어나고 있습니다.&lt;br /&gt;하지만 사실 Ajax 에는 치명적인 단점이 있습니다.&lt;br /&gt;바로 웹 접근성이죠.&lt;br /&gt;&lt;br /&gt;Ajax 가 처음 등장했을 때 문제로 제기된 큰 문제가 몇가지가 있었는데..&lt;br /&gt;그 중 하나는 뒤로 가기 버튼이었고, 다른 하나가 이 접근성에 해당하는 문제였습니다.&lt;br /&gt;&lt;br /&gt;물론 모든 Ajax가 웹 접근성을 해치는 것은 아닙니다.&lt;br /&gt;Ajax 를 사용하더라도 접근성을 해치지 않는 방법들이 여럿 고안되었으니까요.&lt;br /&gt;하지만 국내에서 사용되고 있는 Ajax 의 대부분은 Javascript(또는 기타 클라이언트 스크립트)에만 의존하는 경향이 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&amp;lt;a href=&quot;#&quot; onclick=&quot;sampleFunction();&quot;&amp;gt; 는 이제 그만.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;그 중 가장 간단히 생각할 수 있는 것이 &amp;lt;a href=&quot;#&quot; onclick=&quot;javascript:&quot;&amp;gt; 등으로 시작하는 코드입니다.&lt;br /&gt;하지만, Javascript 가 제대로 동작할 수 없는 환경에선 무용지물입니다. 그럼 어떻게 해야하는가..&lt;br /&gt;&lt;br /&gt;&amp;lt;a href=&quot;&lt;span style=&quot;color: rgb(212, 26, 1);&quot;&gt;대체 URL&lt;/span&gt;&quot; onclick=&quot;&lt;span style=&quot;color: rgb(212, 26, 1);&quot;&gt;return !&lt;/span&gt;sampleFunction();&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;여기서 포인트는 두 개입니다. 대체 URL 과 sampleFunction() 앞의 ! 죠.&lt;br /&gt;대체 URL 은 말 그대로 Javascript 가 동작하지 않을 때 이동해야할 페이지입니다. &lt;br /&gt;물론 해당 동작에 대한 대체 페이지가 마련되어야 겠죠.&lt;br /&gt;&lt;br /&gt;그러면 클릭할 때, onclick 이 실행되는게 아니라 대체 URL로 이동해버리는 것이 아니냐..라고 생각하시는 분들이 계실텐데..&lt;br /&gt;!(느낌표) 는 그것을 막기 위해 고려된 것입니다.&lt;br /&gt;여기서 조건은 sampleFuntion 은 xmlHTTPRequest 가 성공하면 True, 실패하면 False 를 리턴하도록 구현되어야합니다.&lt;br /&gt;&lt;br /&gt;만약 sampleFunction 이 동작을 성공하면 True가 리턴되고, &amp;lt;a&amp;gt; 태그의 동작은 return false; 가 되어 실제로 페이지 이동을 하지않게 됩니다.&lt;br /&gt;&lt;br /&gt;</description>
			<category>프로그래밍/개발</category>
			<category>Accessibility</category>
			<category>Ajax</category>
			<category>웹</category>
			<category>자바스크립트</category>
			<category>접근성</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/42</guid>
			<comments>http://dragonkun.tistory.com/entry/accessibility-friendly-javascript#entry42comment</comments>
			<pubDate>Fri,  4 Apr 2008 23:43:39 +0900</pubDate>
		</item>
		<item>
			<title>레일스(Rails)의 함정</title>
			<link>http://dragonkun.tistory.com/entry/trap-of-rails</link>
			<description>&lt;!-- 10Fg1olkzhMOK1HrIIgVzCj3zse 올블로그 인증용--&gt;
Rails 는 정말 훌륭한 웹 프레임워크입니다. &lt;br /&gt;하지만 편하다고 아무렇게나 코딩을 하게 되면 골치아픈 상황들이 여럿 발생합니다.&lt;br /&gt;프레임워크에서 어떤 SQL을 생성하는지, 각 쿼리들은 속도가 어떠한지 꾸준히 확인을 해 줘야합니다.&lt;br /&gt;&lt;br /&gt;이 포스팅은 제가 정말 생각없이 코딩을 하게 되어서 겪은 여러가지 상황을 정리한 것입니다.&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;#1. N+1 문제&lt;/span&gt;&lt;br /&gt;흔히 말하는 N+1 케이스입니다. &lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;ruby&quot; cols=&quot;80&quot; rows=&quot;10&quot;&gt;posts = Post.find :all
posts.each do |post|
  puts &quot;#{post.title} (#{post.comments.length})&quot;
end
&lt;/textarea&gt;
&lt;br /&gt;멀쩡해 보이는 코드지만.. 날아가는 쿼리가.. 대략.. 이렇습니다...-_-&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;sql&quot; cols=&quot;80&quot; rows=&quot;10&quot;&gt;SELECT * from posts
SELECT * from comments where post_id = 1
SELECT * from comments where post_id = 2
.....
SELECT * from comments where post_id = 100
&lt;/textarea&gt;
&lt;br /&gt;Eager Loading 으로 해결가능 합니다만..&lt;br /&gt;Eager Loading 으로 쿼리의 수는 &lt;strong&gt;1개&lt;/strong&gt;로 확실히 적어지지만, 항상 성능이 좋아지는 것은 아닙니다.&lt;br /&gt;&lt;br /&gt;자세한 건 &lt;a href=&quot;http://deepblue.springnote.com/pages/728532&quot; target=&quot;_blank&quot;&gt;이 글&lt;/a&gt; 을 참고하시면 좋겠습니다.&lt;br /&gt;&lt;br /&gt;덧붙여서 윗글의 정보와는 달리 현재 Edgerails 에서는 :preload 옵션이 없고 :include 를 사용해도,&lt;br /&gt;preload 가 가능한 경우는 Eager Loading이 아니라 Preload 를 하도록 패치되어 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;#2. Find conditions 에 시간을 사용할 경우는 한 번 더 생각을...&lt;/span&gt;&lt;br /&gt;얼마전 테스트를 하다가 우연히 발견했습니다.&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;ruby&quot; cols=&quot;80&quot; rows=&quot;10&quot;&gt;Post.find :all #1
Post.find :all, :conditions =&amp;gt; [&#039;created_at &amp;gt; ?&#039;, 1.days.ago], :limit =&amp;gt; 20 #2
&lt;/textarea&gt;&lt;br /&gt;어느 쪽이 더 빠를까요? 당연히 테이블 전체를 가져오는 1번보다 2번이라고 생각하기 쉽습니다.&lt;br /&gt;그런데 실제로 해보면 예상치 못한 결과가 나오더군요.&lt;br /&gt;&lt;br /&gt;첫번째 호출할 때는 2번이 빠른데.. 두번째 이상 호출을 하게 될 경우, 1번이 훨씬 빠릅니다.&lt;br /&gt;답은 각자 생성하는 쿼리에 있었습니다.&lt;br /&gt;&lt;br /&gt;1의 경우는 &lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;sql&quot; cols=&quot;80&quot; rows=&quot;10&quot;&gt;SELECT * from posts
&lt;/textarea&gt; &lt;br /&gt;로 처음이나 두번째 호출 후나 일정한 반면에..&lt;br /&gt;2의 경우는&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;sql&quot; cols=&quot;80&quot; rows=&quot;10&quot;&gt;SELECT * from posts where created_at &amp;gt; &#039;2008-04-02 22:57:01&#039; limit 20
&lt;/textarea&gt; &lt;br /&gt;처럼 &lt;span style=&quot;font-weight: bold;&quot;&gt;초단위가 변해서 쿼리가 날아갑니다.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;한마디로 &lt;span style=&quot;font-weight: bold;&quot;&gt;쿼리 캐시&lt;/span&gt;가 안되고 계속 새로운 쿼리를 보내는 것이죠. &lt;br /&gt;아마 1초단위 까지 정확히 하루 전이라고 하고 싶으면 어쩔 수 없겠지만..&lt;br /&gt;초단위 혹은 분단위를 올림/내림 등을 하는 것만으로도 쿼리 캐시의 효과를 잘 이용할 수 있게 될 겁니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;#3. Pagination 의 함정.&lt;/span&gt;&lt;br /&gt;이번엔 페이지를 나누는 Pagination 에서 생기는 문제입니다.&lt;br /&gt;레일스 2.0 에서는 Pagination이 레일스 코어에서 빠지고 플러그인 식으로 설치를 해야 하는데..&lt;br /&gt;제가 설치해 본 대부분의 Pagination 플러그인이 같은 문제를 가지고 있었습니다.&lt;br /&gt;&lt;br /&gt;Pagination의 동작은 크게 두 부분으로 나눌 수 있습니다.&lt;br /&gt;페이지 표시를 위해 전체 레코드 수를 가져오는 것과 페이지 번호를 이용해 :offset 과 :limit 으로 특정 부분의 레코드를 가져오는 부분입니다.&lt;br /&gt;Pagination 의 플러그인 중 하나인 will_paginate 같은 경우 다음과 같이 Paginate를 합니다.&lt;br /&gt;&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;ruby&quot; cols=&quot;80&quot; rows=&quot;10&quot;&gt; 
@posts = Post.paginate :page =&amp;gt; params[:page], :per_page =&amp;gt; 10, :include =&amp;gt; [:comments]
&lt;/textarea&gt;
&lt;br /&gt;find 의 옵션들을 그대로 쓸 수 있으므로 아주 편하게 paginate를 할 수 있습니다.&lt;br /&gt;그런데 문제는 include 옵션이 들어가게 되면 문제가 발생합니다.&lt;br /&gt;우선은 paginate 는 #1 에서 언급한 preload 가 구현이 되어 있지 않고..&lt;br /&gt;두번째 문제는 전체 레코드 수를 가져오는 부분에서 쓸 데없는 Join 이 일어납니다.&lt;br /&gt;위의 경우는.&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;sql&quot; cols=&quot;80&quot; rows=&quot;10&quot;&gt; 
SELECT COUNT(distinct post_id) from posts LEFT JOIN comments ON comments.post_id = posts.id
&lt;/textarea&gt;
&lt;br /&gt;와 같은 쿼리가 생성됩니다. 그런데, 위의 경우는 굳이 comments와 join 할 필요가 없고,&lt;br /&gt;만약 join을 해아할 테이블이 훨씬 많아지면 오버헤드는 상상할 수 없을 정도로 커집니다.&lt;br /&gt;단순히 레코드가 몇 개인지 세는 것 뿐인데 말이죠.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.igvita.com/2006/09/22/eager-find-by-sql-pagination-in-rails/&quot; target=&quot;_blank&quot;&gt;외국의 글&lt;/a&gt;입니다. 이 paginate 문제 의 해결책을 제시하고 있습니다만 count 를 하는 쿼리와 선택을 하는 쿼리를 직접 SQL 로 만들어서 하는 방식은 가장 유연한 방식이지만 그다지 깔끔해 보이진 않네요.&lt;br /&gt;&lt;br /&gt;will_paginate 의 이슈 트래커에 정확히 &lt;a href=&quot;http://err.lighthouseapp.com/projects/466/tickets/198-paginate-include-something-removing-joins-from-count-query-when-it-s-possible&quot; target=&quot;_blank&quot;&gt;같은 문제를 지적한 티켓&lt;/a&gt;이 올라왔군요.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
			<category>프로그래밍/개발</category>
			<category>Rails</category>
			<category>Ruby</category>
			<category>Ruby on Rails</category>
			<category>개발</category>
			<category>웹</category>
			<category>프로그래밍</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/41</guid>
			<comments>http://dragonkun.tistory.com/entry/trap-of-rails#entry41comment</comments>
			<pubDate>Wed,  2 Apr 2008 22:39:00 +0900</pubDate>
		</item>
		<item>
			<title>블로그 티스토리로 이전합니다.</title>
			<link>http://dragonkun.tistory.com/entry/mIgration-to-tistory</link>
			<description>블로그를 기존 개인 서버에서 티스토리로 이전했습니다.&lt;br /&gt;학교에 개인 서버를 두고 있었는데, 학교 보안 정책상 외부에서 SSH 접근이 복잡하게 되고,&lt;br /&gt;때마침 도메인도 기간이 만료되어서 연장하라고 그러길래 그냥 티스토리로 옮기게 됐습니다.&lt;br /&gt;&lt;br /&gt;그 동안 바쁘다는 핑계로 포스팅을 안하고 있었는데..&lt;br /&gt;그냥 일에 관련된 포스팅이라도 올려야겠습니다.;;&lt;br /&gt;그런고로 앞으로 레일즈나 웹 개발과 관련된 포스팅이 계속될 것 같군요.&lt;br /&gt;&lt;br /&gt;</description>
			<category>일상</category>
			<category>개인서버</category>
			<category>블로그</category>
			<category>이사</category>
			<category>이전</category>
			<category>티스토리</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/39</guid>
			<comments>http://dragonkun.tistory.com/entry/mIgration-to-tistory#entry39comment</comments>
			<pubDate>Wed,  2 Apr 2008 19:59:51 +0900</pubDate>
		</item>
		<item>
			<title>우분투와 데비안의 기형적 관계</title>
			<link>http://dragonkun.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%99%80-%EB%8D%B0%EB%B9%84%EC%95%88%EC%9D%98-%EA%B8%B0%ED%98%95%EC%A0%81-%EA%B4%80%EA%B3%84</link>
			<description>간만의 포스팅입니다.&amp;nbsp; 우분투 7.10 Gutsy Gibbon 의 출시를 약 5일 남기고 있는 시점에서, 데비안과 우분투의 관계에 대해서 그림으로 표현한 포스팅을 보게 되어서 글을 남깁니다.&lt;br /&gt;&lt;br /&gt;http://beranger.org/index.php?page=diary&amp;amp;2007/10/09/15/13/10-ubuntu-vs-debian-graphically-exp&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photo_zoom.gne?id=466275291&amp;amp;context=pool-48889092019@N01&amp;amp;size=o&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://beranger.org/blogo5/ubuntu_parasitism.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;데비안의 Debian Maintainer가 우분투의 SOMEBODY로 대체된 것을 제외하면 거의 비슷한 모습을 하고 있지만, 문제는 &lt;span style=&quot;font-weight: bold;&quot;&gt;왼쪽에서 오른쪽으로 향하는 화살표는 있지만, 오른쪽에서 왼쪽으로 나가는 화살표가 없다&lt;/span&gt;는 점입니다. 우분투가 데비안 기반의 배포판인 만큼 데비안의 패키지를 가져와서 개발을 하게 되지만, 정작 개발 후에는 다시 데비안으로 피드백이 되지 않는다는 거죠.&amp;nbsp; 데비안 메인테이너, 개발자 들이 보기엔 데비안의 단물만 쪽쪽 빨아가고 있는 듯한 느낌이 드는 것도 무리가 아니겠군요.&lt;br /&gt;&lt;br /&gt;데비안은 FSF(Free Software Foundation)로 부터 지원받는 자원 봉사자들로 구성된 데비안 메인테이너들에 의해서 패키지가 관리되고 있고, 우분투는 백만장자인 마크 셔틀워스(Mark Shuttleworth)가 CEO로 있는 캐노니컬(Canonical)이라는 기업에서 관리되는 배포판입니다.&amp;nbsp; 돈 많은 기업이 자원봉사자로 구성된 커뮤니티를 착취한다는 느낌마저 들기도 합니다.&lt;br /&gt;&lt;br /&gt;위와 같은 불만이 데비안 개발자로부터 터져나왔다는 사실 자체가 데비안과 우분투 사이에 불화의 위협이 시작된 것이 아닌가 싶습니다.&amp;nbsp; GPL에 위배되는 것은 아니지만, 캐노니컬의 데비안으로의 피드백을 하지 않는 정책(?)은 데비안 커뮤니티 사이에서 환영받을 일은 아니죠.&amp;nbsp; 결국 같은 작업을 우분투에서 하고 다시 데비안에서 하는 이중적인 개발이 이루어질 테고, 그건 양쪽 모두에게 개발의 지체를 가져오게 되겠죠.&lt;br /&gt;&lt;br /&gt;우분투가 가정 영향력 있는 리눅스 배포판이 된 지금 캐노니컬은 데비안 커뮤니티와의 &#039;기생적 관계&#039;가 아닌 쌍방향의 피드백이 오가는 &#039;공생적 관계&#039;로 나가야 할 필요가 있습니다.&amp;nbsp; 상대가 MS나 레드햇, 노벨과 같은 기업이 아닌 데비안 커뮤니티인 만큼 굳이 경쟁적인 체제를 도입할 필요가 없고, 데비안이 잘 되면 결국 우분투도 잘 될 수 밖에 없는 구조에서 협력, 지원을 하는 것은 손해가 될 것이 전혀 없을텐데 개인적인 의견으로는 캐노니컬의 현재 모습이 잘 이해가 되지 않는군요. 캐노니컬에서 이 문제를 인지하고 긍정적인 방향으로의 정책을 펼쳤으면 합니다.&lt;br /&gt;</description>
			<category>리눅스/오픈소스</category>
			<category>debian</category>
			<category>F/OSS</category>
			<category>Feedback</category>
			<category>Linux</category>
			<category>ubuntu</category>
			<category>데비안</category>
			<category>리눅스</category>
			<category>오픈소스</category>
			<category>우분투</category>
			<category>피드백</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/36</guid>
			<comments>http://dragonkun.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%99%80-%EB%8D%B0%EB%B9%84%EC%95%88%EC%9D%98-%EA%B8%B0%ED%98%95%EC%A0%81-%EA%B4%80%EA%B3%84#entry36comment</comments>
			<pubDate>Sun, 14 Oct 2007 05:19:22 +0900</pubDate>
		</item>
		<item>
			<title>리눅스, 맥용 네이트온 클로즈 베타 시작!</title>
			<link>http://dragonkun.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%A5%EC%9A%A9-%EB%84%A4%EC%9D%B4%ED%8A%B8%EC%98%A8-%ED%81%B4%EB%A1%9C%EC%A6%88-%EB%B2%A0%ED%83%80-%EC%8B%9C%EC%9E%91</link>
			<description>리눅스(혹은 맥)에서 네이트온을 기다리셨던 분들 많으셨을텐데요.&lt;br /&gt;드디어 리눅스 용(맥 용) 네이트온 클라이언트가 완성이 된 모양입니다.&lt;br /&gt;&lt;br /&gt;오픈 소스로 진행되는 네이트온 클라이언트는 과연 어떤 모습이 될까요?&lt;br /&gt;국내 서비스로써 리눅스용 클라이언트를 제공하는 일은 매우 드문일이기에..&lt;br /&gt;이번 일이 다른 많은 서비스들도 윈도우즈 뿐만 아닌 다른 운영체제에 대한 지원을 고려해 보는 계기가 되었으면 좋겠군요.&lt;br /&gt;&lt;br /&gt;http://nateonweb.nate.com/help/beta/linux_mac_tester/index.php&lt;br /&gt;&lt;br /&gt;						&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; width=&quot;590&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;
    &lt;td height=&quot;8&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;
  &lt;/tr&gt;&lt;br /&gt;
  &lt;tr&gt;&lt;br /&gt;
    &lt;td&gt;&lt;img src=&quot;http://nateonweb.nate.com/help/beta/linux_mac_tester/images/img_01.jpg&quot; height=&quot;248&quot; width=&quot;590&quot;&gt;&lt;/td&gt;&lt;br /&gt;
  &lt;/tr&gt;&lt;br /&gt;
  &lt;tr&gt;&lt;br /&gt;
    &lt;td&gt;&lt;img src=&quot;http://nateonweb.nate.com/help/beta/linux_mac_tester/images/img_02.jpg&quot; height=&quot;241&quot; width=&quot;590&quot;&gt;&lt;/td&gt;&lt;br /&gt;
  &lt;/tr&gt;&lt;br /&gt;
  &lt;tr&gt;&lt;br /&gt;
    &lt;td&gt;&lt;img src=&quot;http://nateonweb.nate.com/help/beta/linux_mac_tester/images/img_03.jpg&quot; height=&quot;72&quot; width=&quot;590&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;</description>
			<category>일상</category>
			<category>네이트온</category>
			<category>리눅스</category>
			<category>맥</category>
			<category>멀티플랫폼</category>
			<category>오픈소스</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/34</guid>
			<comments>http://dragonkun.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%A5%EC%9A%A9-%EB%84%A4%EC%9D%B4%ED%8A%B8%EC%98%A8-%ED%81%B4%EB%A1%9C%EC%A6%88-%EB%B2%A0%ED%83%80-%EC%8B%9C%EC%9E%91#entry34comment</comments>
			<pubDate>Sat, 21 Jul 2007 13:51:09 +0900</pubDate>
		</item>
		<item>
			<title>PHP 웹 프레임워크 symfony 로 웹 프로그램 개발하기. &lt; 설정 &gt;</title>
			<link>http://dragonkun.tistory.com/entry/PHP-%EC%9B%B9-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-symfony-%EB%A1%9C-%EC%9B%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0-%EC%84%A4%EC%A0%95</link>
			<description>&lt;span style=&quot;color: rgb(255, 118, 53); font-weight: bold;&quot;&gt;환경은 우분투 리눅스 6.10 Edgy eft 사용했습니다.&lt;/span&gt;&amp;nbsp; &lt;br /&gt;이 문서는 &lt;a href=&quot;http://www.symfony-project.com/content/documentation.html&quot; target=&quot;&quot;&gt;symfony 공식 문서&lt;/a&gt;에 기반하고 있습니다.&lt;br /&gt;&lt;br /&gt;우&lt;br /&gt;
선 symfony를 php에서 cli를 사용할 수 있어야합니다. cli는 command line interpreter의 약자로&lt;br /&gt;
쉘에서 php 프로그램을 실행시킬 수 있게 하는 인터프리터입니다.&amp;nbsp; cli 는 php 4.3.0 이후의 버젼에서 지원하기&lt;br /&gt;
시작했죠.&amp;nbsp; python이나 perl 같이 php를 쉘 스크립트로 사용할 수 있게 됩니다.&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;1. symfony 설치하기&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(201, 237, 255);&quot;&gt;$ sudo apt-get install php5-cli&lt;/div&gt;&lt;br /&gt;symfony 는 아직 우분투 저장소에 올라오지 않은 모양입니다.&amp;nbsp; php-pear를 통해서 써드 파티 extension들을 구할 수 있으니 php-pear 패키지를 설치합니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: rgb(23, 127, 205);&quot;&gt; &lt;div style=&quot;padding: 10px; background-color: rgb(201, 237, 255);&quot;&gt;$ sudo apt-get install php-pear&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;pear 를 이용해서 symfony 를 설치합니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(201, 237, 255);&quot;&gt;$ sudo pear channel-discover pear.symfony-project.com&lt;br /&gt;$ sudo pear install symfony/symfony&lt;/div&gt;&lt;br /&gt;이로써, symfony 의 설치는 완료입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;2. symfony 프로젝트 시작하기&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;프로젝트 초기화&lt;/span&gt;&lt;br /&gt;이제 symfony 를 이용해서 프로젝트를 시작해 봅시다.&lt;br /&gt;일단 자신의 디렉토리로 이동해서 프로젝트 디렉토리를 생성합니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(201, 237, 255);&quot;&gt;$ mkdir myproject&lt;br /&gt;$ cd myproject&lt;br /&gt;$ symfony init-project myproject&lt;/div&gt;&lt;br /&gt;명령어 이후에는 아래와 같은 디렉토리들이 생성됩니다.&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;apps/&lt;br /&gt;batch/&lt;br /&gt;cache/&lt;br /&gt;config/&lt;br /&gt;data/&lt;br /&gt;doc/&lt;br /&gt;lib/&lt;br /&gt;log/&lt;br /&gt;plugins/&lt;br /&gt;test/&lt;br /&gt;web/&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;어플레케이션 생성&lt;/span&gt;&lt;br /&gt;프로젝트는 적어도 하나의 어플리케이션을 포함해야합니다. 아래의 명령으로 어플리케이션을 생성합니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(201, 237, 255);&quot;&gt;$ symfony init-app myapp&lt;/div&gt;&lt;br /&gt;명령어 이후 아래와 같은 디렉토리 및 파일이 생성됩니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(208, 255, 157);&quot;&gt;&lt;code&gt;apps/&lt;br /&gt;  myapp/&lt;br /&gt;    config/&lt;br /&gt;    i18n/&lt;br /&gt;    lib/&lt;br /&gt;    modules/&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;web/&lt;br /&gt;  index.php&lt;br /&gt;  myapp_dev.php&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    templates/&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;웹 서버 설정&lt;/span&gt;&lt;br /&gt;userdir 모듈을 사용하실 경우에는 module의 기본 설정 아래와 같은데..&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;AllowOverride File AuthConfig Limit &lt;/div&gt;&lt;br /&gt;아래와 같이 편집하는 과정이 필요합니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;AllowOverride all&lt;br /&gt;Allow from all&lt;/div&gt;&lt;br /&gt;적어도 &lt;br /&gt;&lt;pre&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;  &amp;lt;Directory &quot;/home/dragonkun/symfony/myproject/web&quot;&amp;gt;&lt;br /&gt;    AllowOverride All&lt;br /&gt;    Allow from All&lt;br /&gt;  &amp;lt;/Directory&amp;gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;같이 해당 프로젝트 디렉토리 아래의 web 의 설정은 위와 같아야 합니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;심볼릭 링크&lt;/span&gt;&lt;br /&gt;프로젝트에서 라이브러리를 가져올 수 있도록 path를 연결해야 합니다.&lt;br /&gt;프로젝트의 디렉토리로 이동 해서 다음과 같이 입력을 합니다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(201, 237, 255);&quot;&gt;$ ln -sf /usr/share/php/data/symfony/web/sf/&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;위의 디렉토리는 리눅스의 배포판이나 pear의 버젼 등등에 따라서 조금씩 달라질 수 있습니다.&amp;nbsp; 이 점 유의하시기 바랍니다.&lt;br /&gt;&lt;br /&gt;http://서버 주소/myproject/web 을 확인하시면 아래와 같은 결과를 얻을 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://cfs5.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNS50aXN0b3J5LmNvbTovYXR0YWNoLzAvMDMwMDAwMDAwMDExLlBORw==&quot; /&gt;&lt;/div&gt;&lt;br /&gt;다음에는 MVC 패턴에 대해서 알아보고, 직접 프로그램을 만드는 것을 다뤄보겠습니다.&lt;br /&gt;</description>
			<category>프로젝트</category>
			<category>php</category>
			<category>Symfony</category>
			<category>웹</category>
			<category>프레임워크</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/32</guid>
			<comments>http://dragonkun.tistory.com/entry/PHP-%EC%9B%B9-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-symfony-%EB%A1%9C-%EC%9B%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0-%EC%84%A4%EC%A0%95#entry32comment</comments>
			<pubDate>Fri,  9 Feb 2007 17:06:31 +0900</pubDate>
		</item>
		<item>
			<title>등골이 오싹한 패스워드 찾기 서비스.</title>
			<link>http://dragonkun.tistory.com/entry/%EB%93%B1%EA%B3%A8%EC%9D%B4-%EC%98%A4%EC%8B%B9%ED%95%9C-%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C-%EC%B0%BE%EA%B8%B0-%EC%84%9C%EB%B9%84%EC%8A%A4</link>
			<description>어제 어떤 웹 서비스에 로그인을 하려 하는데, 오랜만에 접속을 하려 하니.. 갑자기 패스워드가 생각나지 않는 것이었습니다.&lt;br /&gt;그래서 로그인 폼 옆에 친절하게 붙어있는 비밀번호 찾기를 눌러서 개인정보 몇개를 입력을 하니,&lt;br /&gt;패스워드의 앞글자 두개와 *로 이루어진 몇 자리의 문자열이 나오더군요.&lt;br /&gt;그래서 전 제가 쓰는 패스워드 중 그 두자로 시작하는 것을 생각해내서 무리없이 로그인을 할 수 있었는데...&lt;br /&gt;갑자기 찜찜한 기분이 들더군요..&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(255, 118, 53); font-weight: bold;&quot;&gt;내 패스워드는 어떻게 알아서 알려준건데? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;혹시나 제 패스워드가 암호화도 안 되어서 그 쪽 데이터베이스에 저장되어 있을지도 모른다는 생각에 등골이 오싹하더군요.&lt;br /&gt;물론 회원 가입시 앞자리 2자와 패스워드의 길이를 저장하고 있었을지도 모르겠습니다만..&lt;br /&gt;패스워드 앞자리의 두자리와 길이 만으로도 패스워드 전체를 유추해낼 수 있는 경우도 있을지 모릅니다.&lt;br /&gt;제 생일이 84년 11월 1일이고 만약에 패스워드가 841101 인데, 84**** 라고 튀어나오면 패스워드를 알 수 있겠죠.&lt;br /&gt;뭐 저런 패스워드를 쓸 일은 없을테지만 생일/주민등록번호/전화번호 뒷자리 등으로 패스워드를 만드는 사람들도 적지않은 걸로 알고 있습니다.&lt;br /&gt;&lt;br /&gt;게다가 생각을 해보니, 정~말 친절히도 패스워드 찾기 서비스로 자신의 패스워드 전체를 알려주는 경우도 있던 것으로 기억합니다만..&amp;nbsp; 이건 뭐 짤없이 DB에 암호화 안되어서 들어가 있는 거겠죠.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;한 번 제가 사용하는 서비스들 중 비밀번호 찾기 서비스에서 패스워드가 툭 튀어나오는 서비스가 있다면, 한번 사용을 고려를 해봐야겠군요.&amp;nbsp; 패스워드의 암호화 db에 저장할때 코드 상으로 몇 글자만 더 치면 가능한 건데, 그런 것조차 하지 않았다면 뭔가 꿍꿍이가 있어서 일부러 그랬다고 밖에 생각밖에 들지 않거든요. &amp;nbsp;  &lt;br /&gt;</description>
			<category>일상</category>
			<category>보안</category>
			<category>패스워드</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/31</guid>
			<comments>http://dragonkun.tistory.com/entry/%EB%93%B1%EA%B3%A8%EC%9D%B4-%EC%98%A4%EC%8B%B9%ED%95%9C-%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C-%EC%B0%BE%EA%B8%B0-%EC%84%9C%EB%B9%84%EC%8A%A4#entry31comment</comments>
			<pubDate>Fri,  9 Feb 2007 11:19:51 +0900</pubDate>
		</item>
		<item>
			<title>PHP 웹 프레임워크 symfony 로 웹 프로그램 개발하기. &lt; 준비 &gt;</title>
			<link>http://dragonkun.tistory.com/entry/PHP-%EC%9B%B9-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-symfony-%EB%A1%9C-%EC%9B%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0</link>
			<description>간만의 포스팅입니다 :)&lt;br /&gt;&lt;br /&gt;이번에 삼성 SDS IT Festival에서 세미나 준비용으로 여러 웹 프레임워크를 뒤져보고 있습니다.&lt;br /&gt;가장 유명한 조합인 Ruby + &lt;a href=&quot;http://www.rubyonrails.org/&quot; target=&quot;&quot;&gt;Rails&lt;/a&gt; 부터 Python + &lt;a href=&quot;http://www.djangoproject.com/&quot; target=&quot;&quot;&gt;Django&lt;/a&gt;, PHP + &lt;a href=&quot;http://www.symfony-project.com/&quot; target=&quot;&quot;&gt;Symfony&lt;/a&gt; or &lt;a href=&quot;http://www.cakephp.org/&quot; target=&quot;&quot;&gt;CakePHP &lt;/a&gt;등등.&lt;br /&gt;여러 웹 프레임워크들을 사용해보고 특징과 장단점 비교 등등을 하기에는 시간도 부족하고 어느 하나도 제대로 못 다루고 정말 겉핥기식이 될 것 같아서 PHP + Symfony 로 결정했습니다.&lt;br /&gt;&lt;br /&gt;일단 조금이나마 공부해봤던 Ruby on rails 의 경우는 인지도가 가장 높긴한데, 당연한 이야기지만 Ruby 부터 제대로 공부해야 어떻게 프로그래밍이 되겠더군요.&amp;nbsp; 물론 Ruby는 매우 흥미로운 언어인데다가 객체 지향적인 특징도 훌륭해서 공부해서 나쁠 것 없는 언어이긴 하지만 학습에 걸리는 시간이 꽤나 문제였지요.&amp;nbsp; 게다가 80포트는 아파치를 돌리고 있어서 Webrick을 돌릴 수 없는 문제가(외부로 쓸수 있는 포트는 없는 상황).. 아파치랑 궁합도 그렇게 좋아보이지않구요. &lt;br /&gt;&lt;br /&gt;다음은 Python인데, Python은 아파치의&amp;nbsp; mod_python 속도에 대한 불신으로 제외.&amp;nbsp; trac 같은 것도 써보긴 했는데, 속도가 그리 잘 나오지 않더군요.&lt;br /&gt;&lt;br /&gt;다음은 PHP.&amp;nbsp; PHP는 기존에 잘 써 왔던 거라, 설정도 조금만 건드려도 되고. 언어도 이미 능숙한 상태라서 개발하기도 쉽겠다는 생각이 들더군요.&amp;nbsp; 아파치랑 궁합도 잘 맞는데다 세미나를 해도 가장 많은 사람들이 알고 있을 법한 언어라는 생각도 들구요.&amp;nbsp; 개인적으로 그냥 언어에 대한 평가는 Ruby == Python &amp;gt; PHP 쯤이지만, 웹 프레임워크들을 보니 다들 비슷비슷한 느낌이 들어서 그냥 PHP + symfony로 결정했습니다.&lt;br /&gt;&lt;br /&gt;앞으로 조금씩 조금씩 세미나 준비를 하면서 웹 프로그램을 만드는 과정을 포스팅으로 남기려합니다.&lt;br /&gt;그럼 symfony 로 삽질을 하러 가보겠습니다. :0&lt;br /&gt;</description>
			<category>프로젝트</category>
			<category>php</category>
			<category>Symfony</category>
			<category>웹</category>
			<category>프레임워크</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/30</guid>
			<comments>http://dragonkun.tistory.com/entry/PHP-%EC%9B%B9-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-symfony-%EB%A1%9C-%EC%9B%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0#entry30comment</comments>
			<pubDate>Wed,  7 Feb 2007 17:13:47 +0900</pubDate>
		</item>
		<item>
			<title>Wish List - 12월의 신보들.</title>
			<link>http://dragonkun.tistory.com/entry/Wish-List</link>
			<description>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://cfs5.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNS50aXN0b3J5LmNvbTovYXR0YWNoLzAvMDMwMDAwMDAwMDEwLmpwZw==&quot; width=&quot;300&quot; height=&quot;300&quot; /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&amp;lt; My Aunt Mary - Drift &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://cfs4.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNC50aXN0b3J5LmNvbTovYXR0YWNoLzAvMDEwMDAwMDAwMDA2LmpwZw==&quot; width=&quot;300&quot; height=&quot;300&quot; /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&amp;lt; Casker - Between &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://cfs6.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNi50aXN0b3J5LmNvbTovYXR0YWNoLzAvMDEwMDAwMDAwMDA1LmpwZw==&quot; width=&quot;300&quot; height=&quot;300&quot; /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&amp;lt; Bobby Kim - Follow your soul &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;12월달의 신보들.&lt;br /&gt;&lt;br /&gt;갑자기 이렇게들 달리시면 곤란합니다.&lt;br /&gt;그래도 캐롤과 더불어서 이번 달 귀가 즐거울 듯 하군요.&lt;/div&gt;</description>
			<category>bobby kim</category>
			<category>casker</category>
			<category>My Aunt Mary</category>
			<category>음악</category>
			<category>지름</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/29</guid>
			<comments>http://dragonkun.tistory.com/entry/Wish-List#entry29comment</comments>
			<pubDate>Tue, 12 Dec 2006 23:47:55 +0900</pubDate>
		</item>
		<item>
			<title>현실의 현실</title>
			<link>http://dragonkun.tistory.com/entry/%ED%98%84%EC%8B%A4%EC%9D%98-%ED%98%84%EC%8B%A4</link>
			<description>한국공개소프트웨어협회(&lt;a href=&quot;http://osskorea.org&quot; target=&quot;_blank&quot;&gt;http://osskorea.org&lt;/a&gt;) 사람들과 인사 겸 해서 식사를 하고 왔습니다.&lt;br /&gt;같이 식사를 하며 이런저런 이야기를 했지만, 자세한 코멘트를 남기기는 어렵군요.&amp;nbsp; 너무 적나라하게 썼다간 행여나 그쪽에서 보게 될 수도 있지않을까 두렵기도 하고.&lt;br /&gt;&lt;br /&gt;&lt;p id=&quot;more26_0&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;26_0&#039;,&#039;그래서 일단 가립니다.&#039;,&#039;감추기&#039;); return false;&quot;&gt;그래서 일단 가립니다.&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content26_0&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt; 어느 한 사람의 의견이 어떤 모임 전체를 대변하는 것은 아니지만.&amp;nbsp; 역시 이상계 밖 현실계에 존재하는 사람들은 그런 마인드를&lt;br /&gt;
가지게 될 수 밖에 없는 건가 싶더군요.&amp;nbsp; 물론 오픈 소스를 가지고 사업을 해서 돈 벌어 먹고 사는 게 잘못된 거라고 말하는&lt;br /&gt;
것은 아니지만, 너무 이해관계로만 얽힌 눈으로 세상을 바라보는 것 같아서 슬픈 느낌이랄까요.&lt;br /&gt;&lt;br /&gt;전 항상 리눅스&lt;br /&gt;
유저 그룹이 점점 리눅스 디벨로퍼 그룹이 되어가고 리눅스와 오픈 소스가 점점 IT인의 전유물처럼 되어가는 현상에 대해서 아쉬움을&lt;br /&gt;
가지고 있었는데 현실계 쪽의 사람들은 그걸 더 반기고 있었습니다.&amp;nbsp; 요새 동아리 신입들은 자유에 대한 진지한 고찰이나 공유 정신&lt;br /&gt;
같은 것 보다는 단지 기술의 습득에만 급급하고 있는 듯 해서 안타까웠지만, 그 사람들 말에 의하면 예전처럼 실력은 쥐뿔도 없는&lt;br /&gt;
데 성당과 시장 같은 글 하나 읽고 와서는 입만 살아서 싸움만 하는 모임이 아닌 미래를 보고 발전하려는 사람들의 모임이라&lt;br /&gt;
반겨하는 눈치입니다.&amp;nbsp; 전 실력이 없어도 좋으니 성당과 시장같은 글을 찾아읽는 사람이 있었으면 좋겠습니다.&lt;br /&gt;(애초에 &quot;성당과 시장을 읽고 입만 살아서 싸움만 하는 걸 보니 마치 사회주의자 같았다&quot;라는 말을 하는 사람들이 왜 에릭 레이먼드로 대변되는 오픈 소스라는 단어를 입에 붙이고 사는 건지. 원..)&lt;br /&gt;&lt;br /&gt;결국 자리가 너무 불편해서 조용히 술만 받아 마시고 왔습니다.&amp;nbsp; 사실 대학연합LUG 와 한국공개소프트웨어협회가 &quot;후원-인력&quot; 으로 결연을 맺기위해 작업중인데, 이번 자리를 통해서 전 찬성에서 반대 쪽으로 마음을 굳힐 것 같군요.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
			<category>일상</category>
			<category>대학연합LUG</category>
			<category>오픈소스</category>
			<category>한국공개소프트웨어협회</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/26</guid>
			<comments>http://dragonkun.tistory.com/entry/%ED%98%84%EC%8B%A4%EC%9D%98-%ED%98%84%EC%8B%A4#entry26comment</comments>
			<pubDate>Wed,  6 Dec 2006 13:19:15 +0900</pubDate>
		</item>
		<item>
			<title>고려대 네트워크 내 웹서버 이상 사태.</title>
			<link>http://dragonkun.tistory.com/entry/%EA%B3%A0%EB%A0%A4%EB%8C%80-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%82%B4-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%9D%B4%EC%83%81-%EC%82%AC%ED%83%9C</link>
			<description>저녁 11시 쯤 집으로 돌아오는 길에 선배로부터 한 통의 전화를 받았습니다.&amp;nbsp; 지금 동아리 웹 서버(&lt;a href=&quot;http://kuls.net&quot; target=&quot;_blank&quot;&gt;http://kuls.net&lt;/a&gt;)가 이상해서 서버에서 다른 작업들이 불가능하게 되었으니 한 번 확인해 달라고 하더군요.&lt;br /&gt;&lt;br /&gt;동아리 방에 들어서서 서버의 모니터를 확인해 보니.. mysql 이 Out of Memory 라는 메세지를 뱉어내고는 죽어 있는 상태. mysql 을 살리고 프로세스 상태들을 살펴보니 apache 프로세스 들이 비정상적으로 많이 떠 있는데다가 메모리 점유율도 많이 차지하고 있더군요.&lt;br /&gt;&lt;br /&gt;아파치를 내리니 속도는 정상적으로 돌아오지만, 아파치를 시작하기만 하면 곧바로 프로세스들이 fork하기 시작해서 다시 서버가 느려지고..그렇다고 동아리 홈페이지 및 계정 사용자들 홈페이지들을 안 돌릴수도 없는 노릇이고..&lt;br /&gt;원인을 알아보려고 로그를 살펴봤습니다.&lt;br /&gt;&lt;br /&gt;예전에 누군가 게임 CD 이미지를 웹에서 접근할 수 있게 해 놓은 거 검색 봇이 긁어간 적이 있었지요. 플래쉬겟 등의 프로그램으로 접속시도가 계속 있어서 서버가 죽었던 기억이 나서 그걸 위주로 검색을 해봤지만, 아무리 봐도 정상적인 웹 페이지 접근 로그 밖에 없어서 난감했습니다.&amp;nbsp; 그런데 이전에 선배가 혹시 학교 과제 때문에 그런건 아니냐고 말을 해서 곰곰히 생각해보니, 컴퓨터학과 수업 중 &#039;고급 인터넷 프로그래밍&#039; 이란 수업이 있는데, 텀 프로젝트가 *.korea.ac.kr 의 웹 페이지를 수집하는 것.&amp;nbsp; 그러다가 &lt;a href=&quot;http://kuls.korea.ac.kr&quot; target=&quot;_blank&quot;&gt;kuls.korea.ac.kr&lt;/a&gt; 이라는 도메인까지 와서 열심히 긁히고 있는 거구나 하는 생각이 들었습니다.&lt;br /&gt;&lt;br /&gt;마침 하루전에 동아리 게시판에 공과대 어떤 랩에 리눅스 웹서버가 죽어서 수리를 요청한다는 글이 올라와 있는데, 아마 이런 공격 아닌 공격을 당하고서 관리자가 당황해서 이것저것 건드리다가 잘못된건 아닐런지 하는 생각이 들더군요.&amp;nbsp; 학교 전산처에서 관리되는 홈페이지들은 수강신청이나 신입생들에 의한 트래픽을 견딜 수 있는 환경을 갖추고 있기에 모르겠지만, 랩이나 동아리에서 돌리는 서버들은 보통 일반 PC로 돌아가는 경우가 다반사이기 때문에 이런 프로그램에 의한 공격에 버티기 힘들지도 모르겠지요.(더구나 학교 과제에 불과한 이 프로그램 짤 때 robots.txt 따위 신경을 쓸 리 만무하기 때문에...-_-; )&lt;br /&gt;&lt;br /&gt;아무튼 고급 인터넷 프로그래밍 이란 과목 때문에 고려대 내의 연구실 및 동아리 서버들 관리자가 어리둥절해 있을 지 모르겠네요.&amp;nbsp; 이거 사태가 좀 심하다 싶으면 과제를 제출한 교수님한테 컴플레인 해야겠다고 생각하고 있습니다.&lt;br /&gt;</description>
			<category>일상</category>
			<category>고려대</category>
			<category>서버</category>
			<category>아파치</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/25</guid>
			<comments>http://dragonkun.tistory.com/entry/%EA%B3%A0%EB%A0%A4%EB%8C%80-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%82%B4-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%9D%B4%EC%83%81-%EC%82%AC%ED%83%9C#entry25comment</comments>
			<pubDate>Sat, 25 Nov 2006 01:17:00 +0900</pubDate>
		</item>
		<item>
			<title>XUL 프로그래밍에 재미붙이다.</title>
			<link>http://dragonkun.tistory.com/entry/XUL-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%97%90-%EC%9E%AC%EB%AF%B8%EB%B6%99%EC%9D%B4%EB%8B%A4</link>
			<description>이번에 후배들 세미나 도와주느라 XUL을 쭉 훓어보고 있는데..&lt;br /&gt;&lt;br /&gt;
이것저것 건드리다 보니 어느새 재미가 붙어버렸군요.&lt;br /&gt;&lt;br /&gt;
xmlHTTPRequest라던가.. DOMParser 등등 XML을 다루는 기술들도 조금씩 써보고...&lt;br /&gt;&lt;br /&gt;
XUL과 CSS로 구성하는 GUI.&amp;nbsp; 꽤나 매력적으로 보입니다.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
만들고 있는 프로그램은 &lt;a href=&quot;http://www.faser.net/mab/&quot;&gt;MAB(Mozilla Amazon Browser)&lt;/a&gt;를 흉내낸 Naver Daum Open API 검색도구 입니다.&lt;br /&gt;&lt;br /&gt;
GUI 부분은 &lt;a href=&quot;http://solux.sookmyung.ac.kr/&quot;&gt;숙대 리눅스 유저 그룹 SOLUX&lt;/a&gt; 분들이 작업하신 것을 조금 보완해봤고..&lt;br /&gt;&lt;br /&gt;
자바스크립트의 xmlHTTPRequest, DOMParser 를 이용해 Open API 쿼리를 보내고 결과를 받아 파싱을 해서 리스트에 추가 시키는 정도 수준까지 작업해봤군요.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfs6.tistory.com/upload_control/download.blog?fhandle=YmxvZzczODE3QGZzNi50aXN0b3J5LmNvbTovYXR0YWNoLzAvMDEwMDAwMDAwMDA0LlBORw==&quot; alt=&quot;&quot; height=&quot;413&quot; width=&quot;600&quot;/&gt;&lt;p class=&quot;cap1&quot;&gt;현재까지 모습&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;
나름대로 후배 녀석도 잘 따라오고 있고, 또 도와주면서도 스스로 즐길 수 있는 프로젝트라 좋네요.&lt;br /&gt;&lt;br /&gt;
앞으로 기회가 생기면 예제 수준이 아니라 실제로 쓸만한 프로그램 만들 때도 XUL로 작성하는 걸 고려해봐야겠습니다.&lt;br /&gt;&lt;br /&gt;</description>
			<category>프로젝트</category>
			<category>open api</category>
			<category>XUL</category>
			<category>네이버</category>
			<category>다음</category>
			<category>대학연합LUG</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/24</guid>
			<comments>http://dragonkun.tistory.com/entry/XUL-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%97%90-%EC%9E%AC%EB%AF%B8%EB%B6%99%EC%9D%B4%EB%8B%A4#entry24comment</comments>
			<pubDate>Sat, 11 Nov 2006 04:14:40 +0900</pubDate>
		</item>
		<item>
			<title>우분투 edgy 로 업그레이드.</title>
			<link>http://dragonkun.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-edgy-%EB%A1%9C-%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C</link>
			<description>서버를 우분투 edgy 로 업그레이드 완료했습니다.&lt;br /&gt;&lt;br /&gt;
dapper 에서 dist-upgrade 했는데.. 중간에 에러.&lt;br /&gt;&lt;br /&gt;
제가 쓰는 시스템이 nis / nfs 환경인데..&lt;br /&gt;&lt;br /&gt;
nis 부분에서 꼬여서 sudo 를 못 쓰는 상황이 발생.&lt;br /&gt;&lt;br /&gt;
nis 를 내리고 로컬 계정으로 로그인하려니&lt;br /&gt;&lt;br /&gt;
그러려면 sudo 가 필요한데 -_-&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
그래서 결국 데이터 백업하고 CD 로 재설치 후 복구했습니다.&lt;br /&gt;&lt;br /&gt;
과정 중 svn repository 중 하나가 깨지는 불상사가 발생했습니다만..&lt;br /&gt;&lt;br /&gt;
(하필이면 가장 리비젼이 높았던 os 과제가 ㅜ_ㅜ)&lt;br /&gt;&lt;br /&gt;
다행히도 로컬에 소스가 있어서 한 숨 놨습니다만.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
우분투 엣지로 업그레이드 한 소감은..&lt;br /&gt;&lt;br /&gt;
음.. 글쎄요.. 불여우 2.0 외엔 잘 모르겠더군요.&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;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
+) 시험기간에 새 버젼을 내 놓다니.. 우분투도 참 사악한 배포판인 듯?&lt;br /&gt;&lt;br /&gt;</description>
			<category>일상</category>
			<category>Edgy</category>
			<category>삽질</category>
			<category>우분투</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/23</guid>
			<comments>http://dragonkun.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-edgy-%EB%A1%9C-%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C#entry23comment</comments>
			<pubDate>Tue, 31 Oct 2006 19:26:25 +0900</pubDate>
		</item>
		<item>
			<title>리눅스용 Flash Player 9 Plugin 이 나왔군요.</title>
			<link>http://dragonkun.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9A%A9-Flash-Player-9-Plugin-%EC%9D%B4-%EB%82%98%EC%99%94%EA%B5%B0%EC%9A%94</link>
			<description>&lt;a href=&quot;http://labs.adobe.com/downloads/flashplayer9.html&quot;&gt;http://labs.adobe.com/downloads/flashplayer9.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
이젠 리눅스에서도 mncast나 다음 동영상을 볼 수 있겠네요.&lt;br /&gt;&lt;br /&gt;
&lt;span style=&quot;color: rgb(142, 142, 142)&quot;&gt;(잘 나옵니다.. 감동 감동 ㅜ_ㅜ)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;
그냥 다운 받아서 ~/.mozilla/plugins 에 넣어두시면 불여우에서 사용이 가능합니다~&lt;br /&gt;&lt;br /&gt;
64비트용 플래시 플레이어 플러그인만 나오면 딱인데.. 참 늦는군요;;&lt;br /&gt;&lt;br /&gt;</description>
			<category>일상</category>
			<category>리눅스</category>
			<category>플래시</category>
			<author>드래곤군</author>
			<guid>http://dragonkun.tistory.com/22</guid>
			<comments>http://dragonkun.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9A%A9-Flash-Player-9-Plugin-%EC%9D%B4-%EB%82%98%EC%99%94%EA%B5%B0%EC%9A%94#entry22comment</comments>
			<pubDate>Fri, 20 Oct 2006 23:28:26 +0900</pubDate>
		</item>
		<item>
			<title>New21FTP GPL 위반 의심..</title>
			<link>http://dragonkun.tistory.com/entry/New21FTP-GPL-%EC%9C%84%EB%B0%B0-%EC%9D%98%EC%8B%AC</link>
			<description>웹 호스팅 업체로 유명한 New21 에서 New21FTP 라는 프로그램을 만들어서..&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://sw.new21.com/&quot;&gt;http://sw.new21.com/&lt;/a&gt; 에서 배포 중입니다.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
안 그래도 FTP 사용자들이 Filezilla 사용을 좀 어려워하는지라..&lt;br /&gt;&lt;br /&gt;
다른 UTF-8을 지원하는 괜찮은 FTP 클라이언트가 없나 싶었는데 이런게 나왔다고 하니..&lt;br /&gt;&lt;br /&gt;
당장 받아서 사용을 해 봤습니다만..&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;