<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>기억하고 싶은 것들</title>
		<link>http://blog.sangpire.pe.kr/</link>
		<description>My Code of The Week</description>
		<language>ko</language>
		<pubDate>Mon, 30 Jan 2012 23:20:59 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<managingEditor>sangpire</managingEditor>
		<image>
		<title>기억하고 싶은 것들</title>
		<url><![CDATA[http://cfile2.uf.tistory.com/image/123DFA4C4D3A8F870CF864]]></url>
		<link>http://blog.sangpire.pe.kr/</link>
		<description>My Code of The Week</description>
		</image>
		<item>
			<title>CoffeeScript, prototype의 단축 표현 &#039;::&#039;</title>
			<link>http://blog.sangpire.pe.kr/120</link>
			<description>&lt;h3&gt;CoffeeScipt 에서 prototype 사용법&lt;/h3&gt;

&lt;div&gt;
	&lt;h4&gt;JavaScript Prototype&lt;/h4&gt;
	&lt;p&gt;JavaScript에서 prototype은 해당 클래스의 모든 인스턴스가 공유하는 메소드입니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
String.prototype.bark = function() {
	return &quot;멍멍!!&quot;;
};
String(&quot;강아지&quot;).bark(); // 멍멍!!
&quot;Dog&quot;.bark();		// 멍멍!!
&quot;고양이&quot;.bark();		// 멍멍!!
&lt;/pre&gt;
	&lt;p&gt;그런데 &lt;code&gt;.prototype.&lt;/code&gt; 이거 입력이 은근 귀찮습니다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;CoffeeScript Prototype&lt;/h4&gt;
	&lt;p&gt;커피스크립트에서는 &lt;code&gt;::&lt;/code&gt; 연산자로 &lt;code&gt;.prototype.&lt;/code&gt;을 대신합니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
String::bark = -&gt; &quot;멍멍!!&quot;
String(&quot;강아지&quot;).bark()		## 멍멍!!
&quot;Dog&quot;.bark()			## 멍멍!!
&quot;고양이&quot;.bark()			## 멍멍!!
&lt;/pre&gt;
	&lt;p&gt;가끔 prototype의 메소드를 static 메소드인양 쓰고 싶다면 그냥 쓰면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
String::bark() ##&quot;멍멍!!&quot;
&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;보다 완벽한 내용은 CoffeeScript 홈페이지에서...&lt;/h4&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;http://coffeescript.org/#classes&quot;&gt;Class에 관한 내용&lt;/a&gt; 바로 다음에 나오네요.&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-120-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-120-1&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/120&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Computer</category>
			<category>::</category>
			<category>Coffeescript</category>
			<category>Prototype</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/120</guid>
			<comments>http://blog.sangpire.pe.kr/120#entry120comment</comments>
			<pubDate>Mon, 30 Jan 2012 22:29:19 +0900</pubDate>
		</item>
		<item>
			<title>vim,  오늘 .vimrc 에 추가된 설정 정보.</title>
			<link>http://blog.sangpire.pe.kr/119</link>
			<description>&lt;h3&gt;vim, 탭이나 개행문자를 보고싶어요.&lt;/h3&gt;

&lt;div&gt;
	&lt;h4&gt;list mode&lt;/h4&gt;
	&lt;blockquote&gt;List mode: Show tabs as CTRL-I is displayed, display $ after end of line.&lt;/blockquote&gt;
	&lt;p&gt;즉, list mode로 들어가면, 탭문자와 줄바꿈 문자가 화면에 표시되게 됩니다. 그리고 list mode는 다음 명령으로 들어갈 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;:set list
&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;&#039;listchars&#039;&lt;/h4&gt;
	&lt;p&gt;list 모드에서, 탭 문자나, 개행문자를 &#039;→&#039;  &#039;↵&#039; 와 같은 문자로... 나타나게 할 수 있습니다.(인코딩이 UTF-8인 경우, UTF-8 문자도 사용 가능.)&lt;/p&gt;
	&lt;p&gt;그리고 탭문자나 개행문자 이외에도 다음과 같은 문자들을 지원합니다.&lt;/p&gt;
	&lt;table class=&quot;zebra-striped&quot;&gt;
		&lt;tbody&gt;&lt;tr&gt;
			&lt;td&gt;eol:c&lt;/td&gt;
			&lt;td&gt;개행문자 &#039;c&#039;로 표시&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tab:xy&lt;/td&gt;
			&lt;td&gt;탭문자 첫 글자는 &#039;x&#039;로 이후는 탭 너비에 따라 하나 이상의 &#039;y&#039;를 표시&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;trail:c&lt;/td&gt;
			&lt;td&gt;구문이 끝난뒤 들어간 불필요한 공백문자를 &#039;c&#039;로 표시&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;extends:c&lt;/td&gt;
			&lt;td&gt;vim이 &#039;nowrap&#039; 상태에서 화면을 뚫고 넘어간 문장이 있는 라인 오른쪽에 &#039;c&#039;표시&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;precedes:c&lt;/td&gt;
			&lt;td&gt;마찬가지로 &#039;nowrap&#039; 상태에서 오른쪽으로 길게 편잡중일때 화면에 가려진 왼쪽 영역에 &#039;c&#039;를 표시&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;conceal:c&lt;/td&gt;
			&lt;td&gt;&#039;conceallevel&#039;이 1인경우, 숨김문자(?, Concealed Text)영역에 &#039;c&#039; 표시.&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;nbsp:c&lt;/td&gt;
			&lt;td&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/%EC%A4%84_%EB%B0%94%EA%BF%88_%EC%97%86%EB%8A%94_%EA%B3%B5%EB%B0%B1&quot;&gt;줄 바꿈 없는 공백(Non-Breakable Space)&lt;/a&gt;를 &#039;c&#039;로 표시&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;&lt;/table&gt;
	&lt;p&gt;위 설정들 중 몇몇을 복합적으로 설정하려면 다음과 같은 방법으로 설정합니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;:set lcs=tab:&amp;gt;-,trail:-
:set lcs=tab:&amp;gt;-,eol:&amp;lt;,nbsp:%
:set lcs=extends:&amp;gt;,precedes:&amp;lt;
&lt;/pre&gt;
	&lt;p&gt;기존의 lcs 속성에 새로운 속성을 추가하려면 다음과 같이 입력하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;:set lcs+=nbsp:_
&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;색을 다르게..&lt;/h4&gt;
	&lt;p&gt;탭이나 줄바꿈 기호가 들어간 뒤로 코드가 더 지저분해진 경우 다음의 명령으로, 해당 기호의 색을 배경색과 비슷하게 수정할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;hi NonText ctermfg=7 guifg=gray
hi SpecialKey ctermfg=7 guifg=gray
&lt;/pre&gt;
	&lt;p&gt;&quot;eol&quot;, &quot;extends&quot; 그리고 &quot;precedes&quot;는 &lt;strong&gt;NonText&lt;/strong&gt;으로 &quot;nbsp&quot;, &quot;tab&quot; 그리고 &quot;trail&quot;은 &lt;strong&gt;SpecialKey&lt;/strong&gt;로 화면 표시 전/배경 색을 수정해 주면 됩니다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;최종 모습&lt;/h4&gt;
&lt;div class=&quot;imageblock&quot; style=&quot;display:inline;&quot;&gt;&lt;a href=&quot;http://cfile30.uf.tistory.com/original/1757D53C4F114102049564&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile30.uf.tistory.com/image/1757D53C4F114102049564&quot; alt=&quot;&quot; filemime=&quot;image/png&quot; filename=&quot;스크린샷 2012-01-14 오후 5.46.11.png&quot; height=&quot;284&quot; width=&quot;461&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-119-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-119-1&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/119&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Computer</category>
			<category>conceal</category>
			<category>LCS</category>
			<category>list</category>
			<category>listchars</category>
			<category>nbsp</category>
			<category>Trail</category>
			<category>VI</category>
			<category>VIM</category>
			<category>vimrc</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/119</guid>
			<comments>http://blog.sangpire.pe.kr/119#entry119comment</comments>
			<pubDate>Fri, 13 Jan 2012 00:55:57 +0900</pubDate>
		</item>
		<item>
			<title>CoffeeScript, CoffeeScript 가 바로 생각나지 않는 JavaScript 코드들.</title>
			<link>http://blog.sangpire.pe.kr/118</link>
			<description>&lt;div&gt;
	&lt;h4&gt;&quot;setTimeout&quot; on JavaScript.&lt;/h4&gt;
	&lt;p&gt;&lt;code&gt;setTimeout&lt;/code&gt; 은 자바스크립트에서 자주 쓰이는 평범한 함수의 형태입니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
setTimeout(function(){
	eat(&#039;food&#039;);
}, 6000);
&lt;/pre&gt;
	&lt;p&gt;CoffeeScript 코드로 바꾸려면 어떻게 해야 할까요?&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;&quot;setTimeout&quot; on CoffeeScript.&lt;/h4&gt;
	&lt;p&gt;저는 이렇게 작성했습니다. 바로 생각이 나지 않더군요.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
setTimeout ()-&gt;
    eat &#039;food&#039;
  , 6000
&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;&quot;assert.response&quot; on JavaScript&lt;/h4&gt;
	&lt;p&gt;JavaScript TDD 프레임웍인 &lt;a href=&quot;http://visionmedia.github.com/expresso/&quot;&gt;expresso&lt;/a&gt;에서 &lt;code&gt;assert.response&lt;/code&gt; 는 이렇게 생겼습니다.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
assert.response(server, {
		url: &#039;/foo&#039;,
		method: &#039;POST&#039;,
		data: &#039;bar baz&#039;
	}, {
		body: &#039;/foo bar baz&#039;,
		status: 200
	}, function(res){
	// All done, do some more tests if needed
	});
&lt;/pre&gt;
	&lt;p&gt;커피 스크립트로, 어떻게 작성해야 할까요?&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;&quot;assert.response&quot; on CoffeeScript&lt;/h4&gt;
	&lt;p&gt;많은 변종을 거쳐서 다음과 같은 코드가 작성되었습니다. &lt;a href=&quot;http://jashkenas.github.com/coffee-script/#try:assert.response%20server%0A%20%20%2C%20%0A%20%20%20%20url%3A%20&#039;%2Ffoo&#039;%0A%20%20%20%20method%3A%20&#039;POST&#039;%0A%20%20%20%20data%3A%20&#039;bar%20baz&#039;%0A%20%20%2C%0A%20%20%20%20body%3A%20&#039;%2Ffoo%20bar%20baz&#039;%0A%20%20%20%20status%3A%20200%0A%20%20%2C%0A%20%20%20%20(res)%20-%3E%0A%20%20%20%20%20%20%23%20All%20done%2C%20do%20some%20more%20tests%20if%20needed&quot;&gt;테스트 링크&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
assert.response server
  , 
    url: &#039;/foo&#039;
    method: &#039;POST&#039;
    data: &#039;bar baz&#039;
  ,
    body: &#039;/foo bar baz&#039;
    status: 200
  ,
    (res) -&gt;
      # All done, do some more tests if needed
&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;뭘 기억하고 싶은 거냐면...&lt;/h4&gt;
	&lt;p&gt;CoffeeScript 코드를 작성하다 자주 오류가 나는 부분을 정리해 놓은 것입니다.&lt;/p&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-118-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-118-1&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/118&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Computer</category>
			<category>Coffeescript</category>
			<category>JavaScript</category>
			<category>자바스크립트</category>
			<category>커피스크립트</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/118</guid>
			<comments>http://blog.sangpire.pe.kr/118#entry118comment</comments>
			<pubDate>Sat, 10 Dec 2011 10:00:58 +0900</pubDate>
		</item>
		<item>
			<title>Ruby, accessors 란?</title>
			<link>http://blog.sangpire.pe.kr/117</link>
			<description>&lt;h3&gt;Ruby, accessors&lt;small&gt;The Day of Code&lt;/small&gt;&lt;/h3&gt;

&lt;div&gt;
	&lt;h4&gt;attr_reader, attr_accessor 는 뭘까요?&lt;/h4&gt;
	&lt;p&gt;흥미만 잔뜩 있던, Ruby에 대해서 알고 싶기도 하고, 리팩터링 책도 읽지 못해본 상태라, 두마리 토끼를 잡아보려, &lt;a href=&quot;http://book.daum.net/detail/book.do?bookid=BOK0001498474211&quot;&gt;&quot;리팩토링:루비 에디션&quot;&lt;/a&gt; 을 읽고 있습니다.&lt;/p&gt;
	&lt;p&gt;그런데 첫 코드에서 막혀 버렸습니다.&lt;/p&gt;
	&lt;p&gt;나머지는 대충 알겠는데, &lt;code&gt;attr_reader&lt;/code&gt;, &lt;code&gt;attr_accessor&lt;/code&gt; 요녀석들은 뭘까요?&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
class Movie
  REGULAR = 0
  NEW_RELEASE =1
  CHILDRENS =2
  
  attr_reader :title
  attr_accessor :price_code
  
  def initialize(title, price_code)
    @title, @price_code = title, price_code
  end
end
&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;Accessors&lt;/h4&gt;
	&lt;p&gt;Yukihiro Matsumoto 님의 &lt;a href=&quot;http://www.rubyist.net/~slagell/ruby/&quot;&gt;Ruby User’s Guide&lt;/a&gt;에 쉽게 설명이 있네요.&lt;/p&gt;
	&lt;table class=&quot;zebra-striped&quot;&gt;
		&lt;thead&gt;
			&lt;tr&gt;&lt;th&gt;Shortcut&lt;/th&gt;&lt;th&gt;Effect&lt;/th&gt;&lt;/tr&gt;
		&lt;/thead&gt;
		&lt;tbody&gt;
			&lt;tr&gt;&lt;td&gt; attr_reader :v  &lt;/td&gt;&lt;td&gt;  def v; @v; end &lt;/td&gt;&lt;/tr&gt;
			&lt;tr&gt;&lt;td&gt; attr_writer :v  &lt;/td&gt;&lt;td&gt;  def v=(value); @v=value; end  &lt;/td&gt;&lt;/tr&gt;
			&lt;tr&gt;&lt;td&gt; attr_accessor :v  &lt;/td&gt;&lt;td&gt;  attr_reader :v; attr_writer :v  &lt;/td&gt;&lt;/tr&gt;
			&lt;tr&gt;&lt;td&gt; attr_accessor :v, :w  &lt;/td&gt;&lt;td&gt;  attr_accessor :v; attr_accessor :w &lt;/td&gt;&lt;/tr&gt;
		&lt;/tbody&gt;
	&lt;/table&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;Links&lt;/h4&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.rubyist.net/~slagell/ruby/accessors.html&quot;&gt;Ruby User&#039;s Guide :: Accessors&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-117-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-117-1&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/117&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Computer</category>
			<category>accessors</category>
			<category>RUBY</category>
			<category>루비</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/117</guid>
			<comments>http://blog.sangpire.pe.kr/117#entry117comment</comments>
			<pubDate>Thu, 01 Dec 2011 07:51:44 +0900</pubDate>
		</item>
		<item>
			<title>CommonJS 두번째 살펴보기.</title>
			<link>http://blog.sangpire.pe.kr/116</link>
			<description>&lt;div&gt;
	&lt;p&gt;CommonJS 는 JavaScript API를 정의하는 단체(=Group)이다.&lt;/p&gt;

	&lt;p&gt;자바스크립트는 빠르고 강력한 언어가 되었지만, 현재의 표준 JavaScript 스팩은 브라우져 환경을 벗어날 수 있는 API를 제공해 주지 못하고 있다.&lt;p&gt;

	&lt;p&gt;CommonJS 는 JavaScript가 갖지 못한 API,&lt;br /&gt;
	즉, Java 나 Ruby, Python이 갖고 있는 Standard Library API와 같은 API를 추가로 정의해서,&lt;br /&gt;
	JavaScript를 범용 언어와 같이 만들고자 하는 것이다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;p&gt;CommonJS 에서 가장 먼저 완성한 스팩은 &lt;a href=&quot;http://www.commonjs.org/specs/modules/1.0/&quot;&gt;Modules/1.0&lt;/a&gt; 이다.&lt;/p&gt;
	&lt;p&gt;(대부분이 말하는 CommonJS 를 따른다. 혹은 CommonJS 이다 라는 표현은, 이 CommonJS 모듈 스팩을 준수하고 있다 라는 뜻이다.)
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;Kris Kowal 님이 만드신, &quot;CommonJS: JavaScript Everywhere&quot; 라는 슬라이드 자료&lt;/h4&gt;
	&lt;div style=&quot;width:425px&quot; id=&quot;__ss_2477363&quot;&gt;
		&lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;
			&lt;a href=&quot;http://www.slideshare.net/kriskowal/commonjs-javascript-everywhere&quot; title=&quot;CommonJS: JavaScript Everywhere&quot; target=&quot;_blank&quot;&gt;CommonJS: JavaScript Everywhere&lt;/a&gt;
		&lt;/strong&gt;
		&lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/2477363&quot; width=&quot;425&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
		&lt;div style=&quot;padding:5px 0 12px&quot;&gt;
			View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/kriskowal&quot; target=&quot;_blank&quot;&gt;kriskowal&lt;/a&gt;
		&lt;/div&gt;
	&lt;/div&gt;
	&lt;div&gt;
		&lt;h3&gt;&lt;strong&gt;매우&lt;/strong&gt; 간단하게 요약하자면,...&lt;/h3&gt;
		&lt;ol&gt;
			&lt;li&gt;Slide 5, 슬라이드에 초반에 Python 코드가 등장, &lt;/li&gt;
			&lt;li&gt;Slide 6, JavaScript 로 Python 코드와 같은 코드를 작성할 수 있지만, 그 모든 방법은 표준이 아니다. &lt;/li&gt;
			&lt;li&gt;Slide 7, 특히, 모듈, 파일 시스템, 웹 서버 게이트 웨이(?), 바이너리 데이터 등등이 표준에 없다.&lt;br /&gt;
			(ECMAScript의 브라우져 관련 API는 표준으로 있는데,...)&lt;/li&gt;
			&lt;li&gt;Slide 8, CommonJS에서 표준화를 하자!&lt;/li&gt;
			&lt;li&gt;Slide 11, CommonJS는 API 이다.&lt;/li&gt;
			&lt;li&gt;Slide 16 ~ 49, CommonJS 표준엔 Modules 1.1 부터.. Packages 까지 정의가 되어 있다.&lt;/li&gt;
			&lt;li&gt;Slide 52 ~ 53, (CommonJS API를 이용해서) 처음 등장한 Python 코드와 같은 역활을 하는 JavaScript 코드로 작성!!&lt;/li&gt;
		&lt;/ol&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;CommonJS에서 표준화 작업중인 내용들&lt;/h4&gt;
	&lt;p&gt;현재(2011.11.18), 아래와 같은 내용(=&lt;a href=&quot;http://wiki.commonjs.org/wiki/CommonJS&quot;&gt;CommonJS 위키 페이지&lt;/a&gt;에서 확인 가능)들이 토론되어지고 있는 중이다.&lt;p&gt;
	&lt;ul&gt;
		&lt;li&gt;Uniform Baseline / 글로벌 (discussion) - 여러 JS  엔진에서 동일하게 동작하도록 하기위한 토론.&lt;/li&gt;
		&lt;li&gt;모듈 (1.1.1)
			&lt;ul&gt;
				&lt;li&gt;&lt;code&gt;binary&lt;/code&gt;: 바이너리 데이터 타입 (byte arrays and/or strings) (proposals, discussion, early implementations)&lt;/li&gt;
				&lt;li&gt;&lt;code&gt;encodings&lt;/code&gt;: 인코딩과 문자열 (proposals, discussion, early implementations) - &lt;/li&gt;
				&lt;li&gt;&lt;code&gt;io&lt;/code&gt;: I/O 스트림 (proposals, discussion)&lt;/li&gt;
				&lt;li&gt;&lt;code&gt;fs&lt;/code&gt;, &lt;code&gt;fs-base&lt;/code&gt;: 파일 시스템 (proposals, discussion, early implementations)&lt;/li&gt;
				&lt;li&gt;&lt;code&gt;system&lt;/code&gt;: 시스템 인터페이스 (stdin, stdout, stderr, &amp;c) (1.0, amendments proposed)&lt;/li&gt;
				&lt;li&gt;&lt;code&gt;assert&lt;/code&gt;, &lt;code&gt;test&lt;/code&gt;: 단위 테스트 (1.0, amendment proposals pending)&lt;/li&gt;
				&lt;li&gt;&lt;code&gt;sockets&lt;/code&gt;: 소켓 I/O TCP/IP 소켓 (early proposals)&lt;/li&gt;
				&lt;li&gt;&lt;code&gt;event-queue&lt;/code&gt;: 리액터(=Reactor, 이벤트 발생자)/이벤트 큐 (early proposals)&lt;/li&gt;
				&lt;li&gt;&lt;code&gt;worker&lt;/code&gt;: 워커(Worker) (공유하지 않는 동시(=concurrent) 프로세스/쓰레드) (proposal)&lt;/li&gt;
				&lt;li&gt;&lt;code&gt;console&lt;/code&gt;: 콘솔(=console) (proposal)&lt;/li&gt;
			&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;패키지 (1.0)&lt;/li&gt;
		&lt;li&gt;Package Mappings (proposal)&lt;/li&gt;
		&lt;li&gt;Web Server Gateway Interface (JSGI) (proposals, discussion, early implementations)&lt;/li&gt;
		&lt;li&gt;Promises (proposal) - 비동기 처리를 위한 스팩&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;참고 사이트&lt;/h4&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.commonjs.org/&quot;&gt;CommonJS 홈페이지(영문)&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://arstechnica.com/web/news/2009/12/commonjs-effort-sets-javascript-on-path-for-world-domination.ars&quot;&gt;CommonJS 자바스크립트 세계정복을 위해 노력(영문)&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-116-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-116-1&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/116&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Computer</category>
			<category>Commonjs</category>
			<category>JavaScript</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/116</guid>
			<comments>http://blog.sangpire.pe.kr/116#entry116comment</comments>
			<pubDate>Thu, 10 Nov 2011 00:37:59 +0900</pubDate>
		</item>
		<item>
			<title>vim, pathogen 플러그인</title>
			<link>http://blog.sangpire.pe.kr/115</link>
			<description>&lt;h3&gt;빔 플러그인 관리를 더 쉽게 해주는, pathogen.vim&lt;/h3&gt;

&lt;div&gt;
&lt;p&gt;빔(Vim) 을 보다 막강하게 쓰기 위해선 적절한 플러그인이 필요하다. 그런데 빔에서 플러그인을 관리하는 일은 생각만큼 쉽지 않다.&lt;/p&gt;
&lt;p&gt;특히, 가장 불편한 점은 여러 플러그인을 ~/.vim 폴더(윈도우즈 사용자의 경우, ~/vimfiles 폴더)에 덮어 씌워놓는 점. 그래서 플러그인을 업데이트하는 것은 언제나 어려웠다.&lt;/p&gt;
&lt;p&gt;이런 나에게 단비 같은 플러그인이 바로 &lt;strong&gt;pathogen.vim&lt;/strong&gt;이다.&lt;/p&gt;	
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;설치&lt;/h4&gt;
&lt;p&gt;pathogen.vim 의 설치는 매우 간단하다.&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;~/.vim/autoload 안에 pathogen.vim 파일은 복사한 뒤,&lt;/li&gt;
	&lt;li&gt;~/.vimrc(윈도우즈의 경우 ~/_vimrc) 에 다음과 같은 코드를 한 줄 추가하면 된다.
&lt;pre class=&quot;prettyprint&quot;&gt;
call pathogen#infect()
&lt;/pre&gt;
	&lt;/li&gt;
	&lt;li&gt;이제 어떤 플러그인이든 ~/.vim/bundle 에 압축을 풀어 놓으면 각각이 플러그인이 인식된다. 버전 컨트롤 되고 있는 플러그인이라면, 그곳에 체크아웃하면 되는 것이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  
&lt;div&gt;
	&lt;h4&gt;동기화&lt;/h4&gt;
	&lt;p&gt;여러 대에서 Vim을 사용하고 있는 경우, 동기화까지 들어가면 더욱 유용하게 쓸 수 있게 된다.&lt;/p&gt;
	&lt;p&gt;나의 경우, D:\Dropbox 로 몇몇 설정파일을 동기화 중인데 그곳에 .vim 폴더도 포함되어 있다.&lt;/p&gt;
	&lt;p&gt;아까 수정했던 _vimrc를 다음과 같이 수정하면,&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
call pathogen#infect(&#039;D:\Dropbox\envs\.vim\bundle&#039;) 
&lt;/pre&gt;
	&lt;p&gt;Dropbox에 있는 설정파일을 자동으로 읽어오게 된다.&lt;/p&gt;
	&lt;p&gt;더 설치하고 싶은 플러그인은 물론, Dropbox\envs\.vim\bundle 안에 설치하면 된다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;DropBox envs 폴더 구조&lt;/h4&gt;
&lt;div class=&quot;imageblock&quot; style=&quot;display:inline;&quot;&gt;&lt;a href=&quot;http://cfile8.uf.tistory.com/original/14255F484EB16ECD0C7D02&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile8.uf.tistory.com/image/14255F484EB16ECD0C7D02&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;pathogen.png&quot; height=&quot;160&quot; width=&quot;178&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/div&gt;

&lt;div&gt;
	&lt;h4&gt;참고자료&lt;/h4&gt;
	&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2332&quot;&gt;pathogen.vim 링크&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://kldp.org/node/125263&quot;&gt;KLDP::vim 사용자를 위한 플러그인 매니저 vundle 을 소개 합니다.&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-115-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-115-1&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/115&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Computer</category>
			<category>pathogen</category>
			<category>plugin</category>
			<category>VIM</category>
			<category>관리</category>
			<category>빔</category>
			<category>플러그인</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/115</guid>
			<comments>http://blog.sangpire.pe.kr/115#entry115comment</comments>
			<pubDate>Wed, 02 Nov 2011 12:48:15 +0900</pubDate>
		</item>
		<item>
			<title>JavaScript, split과 join으로 구현한, replaceAll 함수</title>
			<link>http://blog.sangpire.pe.kr/113</link>
			<description>
&lt;p&gt;Daum 에 사용되고 있는 Jigu 라는 JavaScript 라이브러리 에는 문자를 치환하는 &lt;code&gt;replaceAll&lt;/code&gt; 이라는 함수가 존재한다.&lt;/p&gt;
&lt;p&gt;해당 함수는 정규 표현 식을 통한 치환 역시 지원하지만,&lt;/p&gt;
&lt;p&gt;난 단순히 텍스트를 치환하는 코드를 통해 느낀 바가 커서 이곳에 기록해 두기로 마음 먹었다.&lt;/p&gt;

&lt;h3&gt;Code&lt;/h3&gt;

&lt;pre class=&quot;prettyprint js&quot;&gt;
function replaceAll(s, findstr, newstr) {
	 // .. 생략, 이곳에서 정규 표현식 처리 ..
	return s.split(findstr).join(newstr);
}
&lt;/pre&gt;

&lt;p&gt;코드의 내용은 어렵지 않다, 단순히 찾고자 하는 단어를 기준으로 자른 배열을 만들고(split), 새로운 단어를 구분자로 사용하는 문자열을 만들라(join)는 코드이다&lt;/p&gt;
&lt;p&gt;이 코드가 훌륭하다고 느끼는 이유는 &lt;code&gt;split&lt;/code&gt;, &lt;code&gt;join&lt;/code&gt; 모두 Native 함수라는 것. 그리고 그 연산으로 &lt;code&gt;replaceAll&lt;/code&gt;을 만들어 낸 것이다.&lt;/p&gt;
&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-113-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-113-1&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/113&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Computer</category>
			<category>JavaScript</category>
			<category>join</category>
			<category>replaceAll</category>
			<category>SPLIT</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/113</guid>
			<comments>http://blog.sangpire.pe.kr/113#entry113comment</comments>
			<pubDate>Tue, 25 Oct 2011 13:49:25 +0900</pubDate>
		</item>
		<item>
			<title>초기에는 시시콜콜한 것들은 무시하세요.</title>
			<link>http://blog.sangpire.pe.kr/112</link>
			<description>&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;단 하나의 코드 조각이나 한 부분의 디자인 때문에 하루 온 종일을 소비하는 경우가 얼마나 됩니까?&lt;/strong&gt; 하루동안 열심히 일했지만 실제로 별로 진행된 것이 없다는 것을 깨닫는 경우가 얼마나 자주 있습니까? 이런일은 너무 이른 시점에 세부적인 내용에 집착할 때 생깁니다. 완벽주의자를 위해 준비된 시간은 충분히 있습니다. 그냥 나중에 하면 됩니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;개발 첫 주에 헤더의 폰트 크기에 대해서 걱정하지 마세요. 둘 째 주에 맘에 딱 드는 녹색을 찾으려고 하지 마세요. 세 째 주에 &#039;Submit&#039;버튼을 3픽셀정도 오른쪽으로 옮기는 일 같은 것은 의미가 없습니다. &lt;strong&gt;페이지에 있는 내용들을 그대로 두고 그냥 사용하면서 잘 동작하는 지만 확인하세요. 모든 것이 명확해지고 나서 조정하고 더 완벽하게 만드세요.&lt;/strong&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;시시콜콜한 세부사항들은 그것을 사용해보고 상세한 개발을 진행해봐야 비로소 분명해집니다.&lt;/strong&gt; 어떤 부분에 더 관심을 가져야할 지도 알 수 있습니다. 어떤 부분이 누락되었고, 어떤 부분을 보완해야할 지는 실제로 사용해봐야만 알 수 있습니다. 그런 순간이 왔을 때 작업하면 됩니다. 너무 빨리는 하지 마세요.&lt;/p&gt;
&lt;small&gt;&lt;a href=&quot;http://gettingreal.37signals.com/GR_kor.php#ch03&quot; alt=&quot;원문&quot;&gt;Getting Real by 37signal&lt;/a&gt;&lt;/small&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/112&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Life</category>
			<category>좋은글</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/112</guid>
			<comments>http://blog.sangpire.pe.kr/112#entry112comment</comments>
			<pubDate>Mon, 24 Oct 2011 14:38:16 +0900</pubDate>
		</item>
		<item>
			<title>MySQL, 매달 방문하는 사용자를 확인하는 쿼리문.</title>
			<link>http://blog.sangpire.pe.kr/111</link>
			<description>
&lt;h4&gt;코드&lt;/h4&gt;
&lt;pre&gt;SELECT YEAR(`date`), MONTH(`date`), COUNT(DISTINCT `username`)
FROM `table`
WHERE `date` &amp;gt; &#039;2011-01-01&#039;
GROUP BY MONTH(`date`)
&lt;/pre&gt;
&lt;p&gt;date에 설정된 날짜를 기준으로,&lt;br /&gt;
2011년 1월 1일 부터 매달 기록된 데이터의 개수를,&lt;br /&gt;
username 필드를 기준으로 중복없이 표시.&lt;/p&gt;

&lt;h4&gt;결과&lt;/h4&gt;
&lt;pre&gt;2010,1,89
2010,2,50
2010,3,62
2010,4,17
2010,5,23
2010,6,68
2010,7,69
2010,8,29
2010,9,71
2010,10,38
&lt;/pre&gt;

&lt;h4&gt;용어&lt;/h4&gt;
&lt;dl&gt;
	&lt;dt&gt;COUNT&lt;/dt&gt;
	&lt;dd&gt;필드의 수를 표시.&lt;/dd&gt;

	&lt;dt&gt;DISTINCT&lt;/dt&gt;
	&lt;dd&gt;중복되는 필드는 제거.&lt;/dd&gt;
&lt;/dl&gt;

&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/111&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Computer</category>
			<category>count</category>
			<category>DISTINCT</category>
			<category>SQL</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/111</guid>
			<comments>http://blog.sangpire.pe.kr/111#entry111comment</comments>
			<pubDate>Mon, 24 Oct 2011 13:10:17 +0900</pubDate>
		</item>
		<item>
			<title>디터람스의 &#039;좋은 디자인&#039;을 위한 10가지 원칙</title>
			<link>http://blog.sangpire.pe.kr/109</link>
			<description>&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/184B344D4E3E1B2E32EFD0&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/184B344D4E3E1B2E32EFD0&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;Braun-RT-20.jpg&quot; height=&quot;350&quot; width=&quot;350&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h3&gt;Good design is innovative&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 혁신적이다. 현식의 기능성은 결코 고갈되지 않는다. 기술의 발전으로 항상 혁신적인 디자인을 위한 새로운 기회가 제공된다. 혁신적인 디자인은 언제나 새로운 기술과 나란히 발전하기 때문에 그 자체에 끝이란 없다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design makes a product useful&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 제품을 유용하게 한다. 제품은 필요해서 구입한다. 그 필요성의 기준은 몇가지가 있다.&lt;/p&gt;
&lt;p&gt;제품은 기능적으로 뿐만아니라 심리적으로나 시각적으로 만족을 주어야 한다. 좋은 디자은은 제품의 필요성을 강조하며, 따라서 필요성에 방해되는 모든 것을 무시한다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design is aesthetic&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 아름답다. 제품의 시각적 만족감은 필요성의 일부다. 왜냐하면 우리가 매일 사용하는 제품은 우리 자신과 우리 삷의 질에 영향을 주기 때문이다. 제대로 작업된 대상만이 아름답다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design makes a product understandable&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 제품을 이해하기 쉽도록 한다. 좋은 디자인은 제품의 구조를 명료하게 보여준다.&lt;/p&gt;
&lt;p&gt;제품이 스스로 말하도록 하면 더 좋다. 가장 좋은 것은 스스로 설명하게 만드는 것이다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design is honest&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 정직하다. 좋은 디자인은 제품을 실제보다 더 혁신적이고, 더 강력하고, 더 가치있게 보이도록 하지 않는다. 지킬 수 없는 약속으로 구매자를 속이려 하지 않는다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design is unobtrusive&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 불필요한 관심을 끌지 않는다. 어떤 목적을 달성한 제품은 연장과도 같다. 그것은 장식물도 아니고 예술작룸도 아니다. 따라서 제품의 디자인은 사용자의 자기 표현이 가능한 여백을 남겨두기 위해서 중립적이고 절제되어야 한다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design is long-lasting&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 오래 지속된다. 좋은 디자인은 유행을 쫓지 않으며, 그렇기 때문에 절대로 구식이 되지 않는다. 유행을 쫓는 디자인과 달리 좋은 디자인은 오래 지속된다. 요즘같이 쉽게 쓰고 버리는 시대에도 그렇다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design is thorough down to the last detail&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 마지막 디테일까지 철저하다. 어떤 것도 임의로 혹은 우연히 만들어지지 않는다. 디자인 과정에서의 배려와 정확성은 구매자에 대한 존중을 보여준다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design is environmentally friendly&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 환경 친화적이다. 좋은 디자인은 환경보존에 중요한 공헌을 한다. 자원을 보존하고, 제품의 일생을 통해 발생할 수 있는 물리적, 시각적 공해를 최소화한다.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Good design is as little design as possible&lt;/h3&gt;
&lt;p&gt;좋은 디자인은 할 수 있는 한 최소한으로 디자인한다. 더 적은 게 더 낫다. 좋은 디자인은 존질적인 것에 집중한다. 따라서 제품은 불필요 짐을 지지 않는다. 순수함, 단순함으로 되돌아가자!&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;대림 미술관에서 있던던, Less and More, The Design Ethos of Dieter Rams 전에 다녀온뒤,...&lt;/h3&gt;
&lt;p&gt;당시 브라운은 현재 애플과도 같은 디자인이 멋진 회사였던것 같다. 그 말은 현재의 애플도 언제 그랬냐는 듯 평범한 회사가 될어 버릴 수 있다는 말이겠지...&lt;/p&gt;
&lt;/div&gt;&lt;div style=&quot;text-align:left; padding-top:10px;&quot;&gt;
&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=blog.sangpire.pe.kr/109&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:310px; height:65px;&quot; allowTransparency=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>Life</category>
			<category>dieter rams</category>
			<category>Good Design</category>
			<category>디터람스</category>
			<category>좋은 디자인</category>
			<author>sangpire</author>
			<guid>http://blog.sangpire.pe.kr/109</guid>
			<comments>http://blog.sangpire.pe.kr/109#entry109comment</comments>
			<pubDate>Sun, 07 Aug 2011 13:54:34 +0900</pubDate>
		</item>
	</channel>
</rss>

