<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>F monologue &#187; CodeIgniter</title>
	<atom:link href="http://blog.fguy.com/tag/codeigniter/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fguy.com</link>
	<description>Taehoon Kang</description>
	<lastBuildDate>Fri, 10 Feb 2012 00:53:34 +0000</lastBuildDate>
	<language>ko</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.fguy.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/302d17afa2133e49879c9121b033814d?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>F monologue &#187; CodeIgniter</title>
		<link>http://blog.fguy.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.fguy.com/osd.xml" title="F monologue" />
	<atom:link rel='hub' href='http://blog.fguy.com/?pushpress=hub'/>
		<item>
		<title>CodeIgniter 살펴보기</title>
		<link>http://blog.fguy.com/2010/02/05/codeigniter-%ec%82%b4%ed%8e%b4%eb%b3%b4%ea%b8%b0/</link>
		<comments>http://blog.fguy.com/2010/02/05/codeigniter-%ec%82%b4%ed%8e%b4%eb%b3%b4%ea%b8%b0/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 02:06:14 +0000</pubDate>
		<dc:creator>fguy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://fguy.krac.kr/2010/02/05/codeigniter-%ec%82%b4%ed%8e%b4%eb%b3%b4%ea%b8%b0/</guid>
		<description><![CDATA[&#160;지금 근무중인 회사에서 Old type PHP 를 사용하고 있어, 이를 개선하기 위해 PHP MVC Framework 도입을 고려하던 중 CodeIgniter 가 긍정적이라는 팀원들의 의견을 듣고 살펴보고 사내 위키에 게시하였다. 다음 내용이 그것이다. &#8212;&#8212;&#8212;&#8212;&#8212; &#160;이 페이지는 본인이 CodeIgniter 를 처음 사용해보고 작성한 &#8230; <a href="http://blog.fguy.com/2010/02/05/codeigniter-%ec%82%b4%ed%8e%b4%eb%b3%b4%ea%b8%b0/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fguy.com&amp;blog=13748523&amp;post=61&amp;subd=fguyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;지금 근무중인 회사에서 Old type PHP 를 사용하고 있어, 이를 개선하기 위해 PHP MVC Framework 도입을 고려하던 중 CodeIgniter 가 긍정적이라는 팀원들의 의견을 듣고 살펴보고 사내 위키에 게시하였다. 다음 내용이 그것이다. </p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>&nbsp;이 페이지는 본인이 CodeIgniter 를 처음 사용해보고 작성한 것으로,<br />
이해부족으로 사실과 다른 내용이 있을 수<br />
있다.</p>
<h1><a name="126984b266edd480_장점">장점</a></h1>
<div>
<ul>
<li>
<div>
 PHP4에서 사용가능하다.</div>
</li>
<li>
<div>
 오픈 소스이다. </div>
</li>
<li>
<div>
 MVC의 기본 개념에 충실한 것 처럼 보인다.</div>
</li>
<li>
<div>
 비교적 단순하고 읽기 쉬운 소스 코드 구조.</div>
</li>
<li>
<div>
 <acronym title="Hypertext<br />
Preprocessor&#8221;>PHP</acronym> 모듈이나 다른 라이브러리에 대한 의존성이 적다.</div>
</li>
<li>
<div>
 충실한 공식 한글 자료.</div>
</li>
</ul>
</div>
<h1><a name="126984b266edd480_단점">단점</a></h1>
<div>
<ul>
<li>
<div>
 PHP4 호환을 위해 PHP5의 좋은 특징을 충분히 수용하지<br />
못했다.</div>
<ul>
<li>
<div>
 객체 참조</div>
</li>
<li>
<div>
 OOP를 위한 Access Modifiers<br />
(public/private/protected)</div>
</li>
<li>
<div>
 Test 를 지원하기 위한 interface 사용의 부재</div>
</li>
<li>
<div>
 가장 아쉬운 것은 예외 처리. <acronym title="Hypertext Preprocessor">PHP</acronym><br />
 의 원시적 오류 처리는 골치 아프다.</div>
</li>
</ul>
</li>
<li>
<div>
 자유롭지 못한 라이센스. 소스코드 수정과 배포에 제약이 따른다.<br />
(배포버전의 license.txt 중)</div>
<ul>
<li>
<div>
 Any files that have been modified<br />
must carry notices stating the nature of the change and the names of<br />
those who changed them.</div>
</li>
<li>
<div>
 Products derived from the Software<br />
must include an acknowledgment that they are derived from CodeIgniter in<br />
 their documentation and/or other materials provided with the<br />
distribution.</div>
</li>
</ul>
</li>
<li>
<div>
 Persistence Layer 의 애매 모호함.</div>
<ul>
<li>
<div>
 단순히 DB Helper Classes. DB를 은닉하지 못함.</div>
</li>
<li>
<div>
 Persistence 관련 코드는 가이드대로 사용하게 되면<br />
지나치게 DBMS에 의존적이 된다. </div>
<ul>
<li>
<div>
 Java 진영의 JPA 나 .NET의 Nhibernate 의<br />
경우는 DBMS 와 완전히 독립적인 코드 생성이 가능하다.</div>
</li>
<li>
<div>
 DBMS 가 변경될 경우나 스키마가 변경될 경우 코드내에서 해당<br />
부분을 찾아 일일히 수정해야 한다.</div>
</li>
</ul>
</li>
<li>
<div>
 Active Record 는 <acronym title="Structured Query Language">SQL</acronym><br />
 을 제거해 DBMS 에 종속적이지 않고,<br />
단순화하려고 했으나, 구현을 단순화하기 위해 결국 <acronym title="Structured Query Language">SQL</acronym><br />
 을 사용하는 것과 동등한 수준의 종속성이 발생하고 단순화되지도 않아 이도 저도 아니게 되어 있는 모습</div>
</li>
<li>
<div>
 Binding 시 Place Holder 로 의미 있는 값을<br />
사용할 수 없다. 단순히 ? 사용..NET, Java 진영의 ibatis 와 비교</div>
</li>
<li>
<div>
 디버깅이 어렵다. 무슨 일이 일어나는지 일일히 찍어보지 않으면 알<br />
 수 없다. </div>
</li>
</ul>
</li>
<li>
<div>
 PEAR 와 중복된 라이브러리. PEAR와 거의 동일한 수준의<br />
OO 적이지도 않은 똑같은 것(PEAR 역시 4.x 호환)들을 왜 만들어 둔 것인가. PEAR는 <acronym title="Hypertext Preprocessor">PHP</acronym> 패키지에 기본 포함 되어 있으므로 중복을 피할 수<br />
 없다.</div>
</li>
<li>
<div>
 IDE 환경의 부재. 단순히 PDT의 Template 을 제공할<br />
뿐. <acronym title="Hypertext Preprocessor">PHP</acronym> 언어의 한계이기도 하다.</div>
</li>
<li>
<div>
 어설픈 I18N. Locale 에 관한 고려가 없다. 반드시<br />
언어를 코드레벨에서 선택해 주어야 한다. 브라우저의 헤더에 따른, 또는 GeoIP 에 따른 자동 지원은 불가능하다.</div>
</li>
<li>
<div>
 디스크 단위의 Cache 모델. 서버가 여럿일 경우 오버헤드 및<br />
동기화에 문제 있을 수 있음.</div>
</li>
<li>
<div>
 Log 가 파일로만 출력된다. 마찬가지로 서버가 여러대일 경우<br />
데이터 취합에 문제.</div>
</li>
<li>
<div>
 Dispatch 모델에서 코드 중복이 발생할 여지가 있다. 동일한<br />
 Action 을 View 만 다르게 한다던지 할 경우 Mapping을 위해 Controller Class를 추가해야만 한다. </div>
</li>
<li>
<div>
 View 와 Controller 이 coupled 이다. 이상적인<br />
 MVC 모델은 Controller 는 화면에 표시되는 것에 대해 전혀 관여하지 않는 것이다.</div>
</li>
<li>
<div>
 View Layer 가 독립적이지 않다. <acronym title="Hypertext Preprocessor">PHP</acronym><br />
 언어의 한계 일수도 있겠으나, 굳이 View<br />
Layer 가 아니어도 사용자에게 출력을 제공할 수 있으므로 통일감을 잃을 수 있고, 실수를 유발할 수 있다. echo,<br />
print 등.</div>
</li>
<li>
<div>
 관점 분리에 대한 배려가 적다. 예를 들어 Form<br />
Validation 은 Business Logic 에 전혀 포함되지 않아도 될 것이다.</div>
</li>
</ul>
</div>
<h1><a name="126984b266edd480_정리">정리</a></h1>
<div>
<ul>
<li>
<div>
 한정된 용도의 작은 웹사이트 개발에 용이할 것 같다. 확장을 위해<br />
 신경써주어야 할 부분이 많다.</div>
</li>
<li>
<div>
 <acronym title="Hypertext<br />
Preprocessor&#8221;>PHP</acronym> 언어의 특징을 잘 살린 가벼운 MVC Framework 이나, <acronym title="Hypertext Preprocessor">PHP</acronym> 4 까지만이다. </div>
</li>
<li>
<div>
 <acronym title="Hypertext<br />
Preprocessor&#8221;>PHP</acronym> 창시자인 Rasmus Lerdorf 가 <acronym title="Hypertext Preprocessor">PHP</acronym> Framework 사용을 반대하면서, 굳이<br />
사용하려면 CodeIgniter 를 사용하라고 한 것은 <acronym title="Hypertext Preprocessor">PHP</acronym><br />
 Framework 를 아예 사용하지 말라는 것을 역설적으로 표현한 것은 아닐까 싶다. (지능적 안티)</div>
</li>
</ul>
</div>
<br /> Tagged: <a href='http://blog.fguy.com/tag/codeigniter/'>CodeIgniter</a>, <a href='http://blog.fguy.com/tag/mvc/'>MVC</a>, <a href='http://blog.fguy.com/tag/php/'>php</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fguyblog.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fguyblog.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fguyblog.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fguyblog.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fguyblog.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fguyblog.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fguyblog.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fguyblog.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fguyblog.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fguyblog.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fguyblog.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fguyblog.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fguyblog.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fguyblog.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fguy.com&amp;blog=13748523&amp;post=61&amp;subd=fguyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.fguy.com/2010/02/05/codeigniter-%ec%82%b4%ed%8e%b4%eb%b3%b4%ea%b8%b0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d10c905edc572a61b5206377c1a36c98?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fguy79</media:title>
		</media:content>
	</item>
	</channel>
</rss>
