<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>빛을 담고 세상 넓히기 &#187; 패턴</title>
	<atom:link href="http://fantazic.com/archives/tag/%ed%8c%a8%ed%84%b4/feed" rel="self" type="application/rss+xml" />
	<link>http://fantazic.com</link>
	<description>마음의 빛으로 넓은 세상을 비추고 싶다. JAVA, 고양이, 사진들이 있는 곳.</description>
	<lastBuildDate>Tue, 27 Jul 2010 04:38:45 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Java Singleton Pattern 구현</title>
		<link>http://fantazic.com/archives/92</link>
		<comments>http://fantazic.com/archives/92#comments</comments>
		<pubDate>Fri, 29 Jun 2007 08:07:35 +0000</pubDate>
		<dc:creator>따지크</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[singleton]]></category>
		<category><![CDATA[패턴]]></category>

		<guid isPermaLink="false">http://fantazic.com/archives/92</guid>
		<description><![CDATA[최근 singleton 패턴 구현에 대한 질문을 받은 적이 있다. singleton 패턴은 인스턴스를 하나만 생성해서 그 객체를 공유해서 사용하는 패턴이다. 일반적으로 DB Pool과 같이 전체 시스템에서 하나의 자원을 공유해서 사용할 때 이 패턴을 활용할 수 있다.
이 패턴을 구현하는 방법은 synchronized getInstance(), double-checked getInstance(), static final instance 등 다양한데, 내 경우는 Singleton 클래스를 구현하기 위해 static initializer를 [...]]]></description>
			<content:encoded><![CDATA[<p>최근 singleton 패턴 구현에 대한 질문을 받은 적이 있다. singleton 패턴은 인스턴스를 하나만 생성해서 그 객체를 공유해서 사용하는 패턴이다. 일반적으로 DB Pool과 같이 전체 시스템에서 하나의 자원을 공유해서 사용할 때 이 패턴을 활용할 수 있다.</p>
<p>이 패턴을 구현하는 방법은 synchronized getInstance(), double-checked getInstance(), static final instance 등 다양한데, 내 경우는 Singleton 클래스를 구현하기 위해 static initializer를 활용한 방법을 제안했다.</p>
<pre>
public class Singleton {
  private static Singleton _instance;

  static {
    _instance = new Singleton();
  }

  private Singleton() {}

  public static Singleton getInstance() {
    return _instance;
  }

}
</pre>
<p>이렇게 구현한 경우 클래스가 로딩되면서 객체가 생성되기 때문에 객체가 이중으로 생성될 수 없고, 가장 확실한 방법인 synchronized getInstance()에 비해서 매번 메소드 호출시에 동기화 작업을 안해줘도 되는 장점이 있다. (synchronized 키워드가 있는 경우 메소드 실행이 약 100배 정도 늦어진다고 한다.)</p>
<p>하지만 오늘 <a href="http://wiki.java.net/bin/view/Javapedia/Singleton">관련 정보</a>를 찾아보니, 글 작성자는 명백히 이 방법보다는 synchronized getInstance()가 좋다고 한다.</p>
<p>getInstance()에서 객체를 생성할 때 장점은 lazy initialization(객체가 사용될 때까지 객체 생성을 연기)이 가능하다는 점과 내부 구현을 Pooling 등으로 변경할 때 쉽게 변경이 가능하다는 것이다. (이 부분은 static initializer도 가능하다.)</p>
<p>다만 Singleton 패턴을 사용해도 ClassLoader 마다 개별적으로 인스턴스가 생성되기 때문에 이 부분은 주의를 기울여야 한다. 특히 Servlet Container는 여러개의 ClassLoader를 사용할 수 있으니 이 점을 인지하고 있어야 한다.</p>
]]></content:encoded>
			<wfw:commentRss>http://fantazic.com/archives/92/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fearless Change 변화를 가져오는 패턴</title>
		<link>http://fantazic.com/archives/79</link>
		<comments>http://fantazic.com/archives/79#comments</comments>
		<pubDate>Sun, 11 Feb 2007 05:28:51 +0000</pubDate>
		<dc:creator>따지크</dc:creator>
				<category><![CDATA[그들의 이야기]]></category>
		<category><![CDATA[조직의 변화]]></category>
		<category><![CDATA[패턴]]></category>

		<guid isPermaLink="false">http://fantazic.com/archives/79</guid>
		<description><![CDATA[조직에 변화를 가져오기 위해서 필요한 것은 무엇일까? 왜 정말 좋은 아이디어가 다른 사람들에게 받아들여지지 않고 사라져가는 것일까? Fearless Change는 새로운 아이디어를 조직에 도입하기 위해 사용할 수 있는 패턴들을 정리한 책이다.
최근 내가 속해있는 조직은 큰 변화를 앞두고 있다. 글로벌로 분산된 환경의 웹개발을 지원할 수 있는 새로운 형태로의 변화를 준비하고 있는데, 이 변화의 움직임은 주로 Top-Down 방식으로 [...]]]></description>
			<content:encoded><![CDATA[<p>조직에 변화를 가져오기 위해서 필요한 것은 무엇일까? 왜 정말 좋은 아이디어가 다른 사람들에게 받아들여지지 않고 사라져가는 것일까? <a href="http://www.cs.unca.edu/~manns/intropatterns.html">Fearless Change</a>는 새로운 아이디어를 조직에 도입하기 위해 사용할 수 있는 패턴들을 정리한 책이다.</p>
<p>최근 내가 속해있는 조직은 큰 변화를 앞두고 있다. 글로벌로 분산된 환경의 웹개발을 지원할 수 있는 새로운 형태로의 변화를 준비하고 있는데, 이 변화의 움직임은 주로 Top-Down 방식으로 진행되고 있다. 또 하나의 변화는 Agile 방법론을 조직에 적용시키려는 나를 중심으로 한 노력이 있다. 결국 변화에 능동적인 조직과 개인의 능력이 급변하는 환경에서 살아남을 수 있는 바탕이 된다고 생각한다. 그리고 무엇보다 조직 구성원 한명 한명이 새로운 아이디어를 받아들이고 실천할 때 그 조직이 변화할 수 있는 잠재력이 커지는 것이다.</p>
<p>Fearless Change 에서는 이런 상황에서 사용할 수 있는 다양한 패턴들을 소개하고 있다. 새로운 아이디어를 소개하는 큰 줄거리를 살펴보면 다음과 같다.</p>
<ol>
<li>Where Do I Start?</li>
<li>What Do I Do Next?</li>
<li>Meetings and More</li>
<li>Take Actions!</li>
<li>It&#8217;s All About People</li>
<li>A New Role: Now You&#8217;re Dedicated!</li>
<li>Convince the Masses</li>
<li>More Influence Strategies</li>
<li>Keep It Going</li>
<li>Dealing with Resistance</li>
</ol>
<p>새로운 아이디어를 소개하고, 전파하는 것부터 마지막 남은 보수적 성향의 사람들까지도 변화에 합류시킬 수 있는 다양한 패턴들을 볼 수 있다. 그 중 도입 단계에서 사용할 수 있는 몇가지 패턴을 소개하려고 한다.</p>
<p><strong>[Where Do I Start?]</strong><br />
<strong>Evangelist</strong> : 변화를 가져오기 위해서는 확신과 열정이 있어야 한다.<br />
<strong>Small Successes</strong>, <strong>Step by Step</strong> : 많은 실패 속에서도 조그만 성공을 축하해야 한다. 또한 너무 크고 빠른 결과보다는 장기간의 목표를 가지고 단계적으로 실패를 바탕으로 성공을 이끌어가야 한다.</p>
<p><strong>[What Do I Do Next?]</strong><br />
<strong>Connector</strong> : 많은 사람들이나 조직과 연관이 있는 사람들을 참여시키면 그 효과가 매우 클 수 있다.<br />
<strong>Guru on Your Side</strong> : 전문가를 나의 편으로 만들면 쉽게 다른 사람들을 설득시킬 수 있다.<br />
<strong>Ask for Help</strong> : 주위에 도움을 요청하면 내 짐을 덜 수도 있지만, 그보다 그들을 변화에 참여시킴으로써 더 적극적으로 주인의식을 느낄 수 있게 하는 효과가 있다.</p>
<p><strong>[Meetings and More]</strong><br />
<strong>Piggyback</strong> : 따로 회의를 잡기 보다는, 월간 회의와 같은 정기 회의에 편승해서 아이디어를 공유할 수 있도록 한다.<br />
<strong>Next Steps</strong> : 회의의 마지막 30분은 다음에 어떤걸 할지 함께 논의하는 자리로 사용한다. 변화에 모두가 참여한다는 느낌을 부여해 줄 수 있다.</p>
<p><strong>[Take Action!]</strong><br />
<strong>Just Do It</strong> : 완벽을 기하기 보다는 우선 시작해서 경험을 얻는 것이 중요하다.<br />
<strong>Study Group</strong> : 돌아가면서 발표하는 형태의 스터디는 참가자가 새로운 아이디어에 대한 학습을 체계적이고 점진적으로 할 수 있게 해준다.<br />
<strong>Mentor</strong> : 새로운 변화를 시도할 때, 주위에 나보다 조금 더 많이 아는 사람이 있을 때 심적 안정감을 얻을 수 있고 실질적으로 많은 도움을 받을 수 있다.</p>
<p>이런 패턴들은 적합한 타이밍에 적절하게 사용될 때 큰 효과가 발휘될 수 있다. 변화를 시작하기 전에 &#8216;Test the Waters&#8217;를 하게 되는데, 지금의 근무 환경은 변화에 매우 적극적이라고 생각된다. 하지만 그 변화가 조직별로 다르게 적용되고 있고 다른 모습으로 결과가 나타나고 있다. 관리자가 주도적으로 변화를 주도하려는 지금, 내가 할 수 있는 것은 무엇일지 고민해보게 된다.</p>
]]></content:encoded>
			<wfw:commentRss>http://fantazic.com/archives/79/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
