<?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>Monolith &#187; 팁과 트릭</title>
	<atom:link href="http://blog.monolith.pe.kr/archives/category/tips-and-tricks/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.monolith.pe.kr</link>
	<description>Everything is connected to everything else, somehow.</description>
	<lastBuildDate>Wed, 28 Jul 2010 12:52:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>[prezi] new way to make a presentation</title>
		<link>http://blog.monolith.pe.kr/archives/1027</link>
		<comments>http://blog.monolith.pe.kr/archives/1027#comments</comments>
		<pubDate>Fri, 05 Mar 2010 10:03:30 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[devday]]></category>
		<category><![CDATA[insightful]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[prezi]]></category>

		<guid isPermaLink="false">http://blog.monolith.pe.kr/?p=1027</guid>
		<description><![CDATA[며칠전 다른 연구실 애들 몇명과 조촐하게 devday를 했다. 파이썬으로 간단한 매쉬업을 해보는 것이었는데 생각보다 오래걸렸지만 다들 재미있어했다. 게다가 트위터 API를 이용하거나 직접 HTML을 파싱해서 데이터를 손보고 json 형식의 데이터로 내보내는데 17줄 내외면 해결할 수 있었고, 그 17줄은 가독성이 상당히 높으며 의미가 압축되지 않은 코드였다. 발표도 하고 동영상도 남기고 싶었지만, 파이썬이 익숙하지 않은 사람이 대부분이라는 점과 [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F1027"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F1027&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>며칠전 다른 연구실 애들 몇명과 조촐하게 devday를 했다.</p>
				<div id="gallery-9e89ceff" class="flickr-gallery photoset">
													<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=4404561891"><img class="photo" title="devday" src="http://farm5.static.flickr.com/4064/4404561891_556b8d3b21_s.jpg" alt="devday" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=4405327382"><img class="photo" title="devday" src="http://farm5.static.flickr.com/4041/4405327382_231137615c_s.jpg" alt="devday" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=4405327862"><img class="photo" title="devday" src="http://farm3.static.flickr.com/2730/4405327862_ce0685f7e8_s.jpg" alt="devday" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=4405328688"><img class="photo" title="devday" src="http://farm3.static.flickr.com/2682/4405328688_60f23498e5_s.jpg" alt="devday" /></a>
								</div>
															<div class="flickr-thumb">
									<a href="http://flickr.com/photo.gne?id=4404565481"><img class="photo" title="devday" src="http://farm3.static.flickr.com/2744/4404565481_be16d543ef_s.jpg" alt="devday" /></a>
								</div>
												<div class="fg-clear"></div>
				</div>
												<div class="fg-clear"></div>
							<script type="text/javascript">
											jQuery(document).ready(function(){
							jQuery("#gallery-9e89ceff .flickr-thumb img").flightbox({size_callback: get_sizes});
						});
										
										//-->
				</script>
			
<p>파이썬으로 간단한 매쉬업을 해보는 것이었는데 생각보다 오래걸렸지만 다들 재미있어했다.</p>
<p>게다가 트위터 API를 이용하거나 직접 HTML을 파싱해서 데이터를 손보고 json 형식의 데이터로 내보내는데 17줄 내외면 해결할 수 있었고, 그 17줄은 가독성이 상당히 높으며 의미가 압축되지 않은 코드였다.</p>
<p>발표도 하고 동영상도 남기고 싶었지만, 파이썬이 익숙하지 않은 사람이 대부분이라는 점과 html과 json을 처음 다루는 사람도 대부분이라는 점에서 시간의 압박을 느껴서 그건 패스.</p>
<p>어쨌든 기조발표 준비를 하면서 마인드맵을 그리다가 문득 마인드맵으로 발표하는 방법은 없을까 생각했다. 방식은 예전에 졸업식 동영상 만들 때처럼 <a href="http://en.wikipedia.org/wiki/Ken_burns_effect">켄 번 효과</a>로 이동하면서 보여주면 좋겠다는 생각이었다. 그러다 문득 떠오른게 <a href="http://digxtal.egloos.com/2544359">구독하고 있는 블로그</a>에서 소개했던 <a href="http://prezi.com">Prezi</a> 였다.</p>
<div class="prezi-player"><!-- .prezi-player { width: 550px; } .prezi-player-links { text-align: center; } --><object id="prezi_gpxkox3o11ju" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="prezi_gpxkox3o11ju" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="prezi_id=gpxkox3o11ju&amp;lock_to_path=1&amp;color=ffffff&amp;autoplay=no" /><param name="src" value="http://prezi.com/bin/preziloader.swf" /><embed id="prezi_gpxkox3o11ju" type="application/x-shockwave-flash" width="550" height="400" src="http://prezi.com/bin/preziloader.swf" flashvars="prezi_id=gpxkox3o11ju&amp;lock_to_path=1&amp;color=ffffff&amp;autoplay=no" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="true" name="prezi_gpxkox3o11ju"></embed></object></div>
<p>prezi는 slideshare.net 처럼 소셜 pt 서비스이지만 자신들의 서비스를 이용한다는 것이 차이점이고,</p>
<p>서비스의 이용법은 매우매우 단순하면서도 강력하다. 광고홍보학과 졸업한 <a href="http://twitter.com/lpk203">동생</a>한테도 말해줬더니, 이런게 있었으면 학부때 이걸로만 발표했을거라고 설레발까지..</p>
<p>더 첨언할 것도 없고 써보고 다른사람들이 등록한 자료를 몇개 보면 얼마나 유용하면서도 대단한 서비스인지 감이 올 것이다.</p>
<p>P.S. 대학원생이하 학생은 서비스 가입시 학교메일로 등록하고 인증하면 유료버전인 basic을 무료로 사용할 수 있다.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/1027/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>iconv로 인코딩 변환하기</title>
		<link>http://blog.monolith.pe.kr/archives/996</link>
		<comments>http://blog.monolith.pe.kr/archives/996#comments</comments>
		<pubDate>Mon, 25 Jan 2010 04:38:53 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[iconv]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[posix]]></category>
		<category><![CDATA[매뉴얼]]></category>
		<category><![CDATA[인코딩]]></category>

		<guid isPermaLink="false">http://blog.monolith.pe.kr/?p=996</guid>
		<description><![CDATA[일하고 있는 전산정보원에서 학교 민원을 정리해두라고 하셔서 민원건수를 봤더니 3000건 + 600건 = 3600건 이었다. 사람의 힘으로 하는 것은 하나님의 섭리에 어긋난다고 판단하여 파이썬 스크립트를 짜서 돌리고 csv로 저장했다. 그런데, csv를 엑셀로 변환하려고 하는데 UTF-8 인코딩 때문에 한글이 다 깨지는 것이 문제였다. iconv 라는 툴을 써본적이 있어서 다음과 같이 돌렸더니 에러. $ iconv -f UTF-8 -t [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F996"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F996&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>일하고 있는 전산정보원에서 학교 민원을 정리해두라고 하셔서 민원건수를 봤더니 3000건 + 600건 = 3600건 이었다.</p>
<p>사람의 힘으로 하는 것은 하나님의 섭리에 어긋난다고 판단하여 파이썬 스크립트를 짜서 돌리고 csv로 저장했다.</p>
<p>그런데, csv를 엑셀로 변환하려고 하는데 UTF-8 인코딩 때문에 한글이 다 깨지는 것이 문제였다.</p>
<p>iconv 라는 툴을 써본적이 있어서 다음과 같이 돌렸더니 에러.</p>
<blockquote><p>$ iconv -f UTF-8 -t MSCP949 b51.csv &gt; b51.cp949.csv</p>
<p>iconv: illegal input sequence at position 276082</p></blockquote>
<p>근본적인 이유는 입력파일의 인코딩상에서 깨진문자가 들어있으면 에러를 뱉고 죽게끔 iconv가 설계되어 있다고 하지만 소스를 뜯어보지 않아서 명확히 모르겠고, 방법론적 이유를 찾아봤더니 역시나 RTF 문제였다.(read the fxxx manual)</p>
<p>KLDP에서 어떤분은 소스를 분석해가면서 패치를 제공할 방법을 모색하는 모습도 있었는데, 입력 파일에서 깨진문자를 빼고 변환을 해주는 -c 옵션으로 간단히 해결할 수 있었다.</p>
<blockquote><p>$ iconv -c -f UTF-8 -t MSCP949 b51.csv &gt; b51.cp949.csv</p></blockquote>
<p>매뉴얼을 잘 작성하는 것도 중요하지만, 매뉴얼을 읽는 것이 더 중요하다는 것을 새삼 느꼈다.</p>
<p>한줄요약 : 구글링 하기전에 매뉴얼을 읽자</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/996/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>프로그래머를 위한 폰트</title>
		<link>http://blog.monolith.pe.kr/archives/440</link>
		<comments>http://blog.monolith.pe.kr/archives/440#comments</comments>
		<pubDate>Sun, 07 Jun 2009 07:02:05 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[bitstream]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[san serif]]></category>
		<category><![CDATA[폰트]]></category>

		<guid isPermaLink="false">http://blog.monolith.pe.kr/?p=440</guid>
		<description><![CDATA[프로그래머를 위한 폰트라고 불리는 Bitstream vera mono Sans + 맑은고딕 폰트 되겠다. 확실히 monaco나 다른 폰트보다는 코드 가독성이 좋은 것 같다.(어쩌면 확증편향) 다운받기 : veramono]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F440"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F440&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="clear: both">프로그래머를 위한 폰트라고 불리는<br />
 Bitstream vera mono Sans + 맑은고딕<br />
 폰트 되겠다.</p>
<p style="clear: both">확실히 monaco나 다른 폰트보다는 <br />
 코드 가독성이 좋은 것 같다.(어쩌면 확증편향)</p>
<p>다운받기 : <a href="http://blog.monolith.pe.kr/wp-content/uploads/2009/06/veramono.ttf">veramono</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/440/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>좀비 포트 즉시 닫기</title>
		<link>http://blog.monolith.pe.kr/archives/430</link>
		<comments>http://blog.monolith.pe.kr/archives/430#comments</comments>
		<pubDate>Sat, 06 Jun 2009 07:30:40 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.monolith.pe.kr/?p=430</guid>
		<description><![CDATA[Django로 SAML2.0 IdP를 구현하다가, 프로세스를 껐는데도 클라이언트가 제대로 FIN을 안주고 종료되어서 CLOSE_WAIT상태에 끼여 해당 포트가 안닫히는 경우가 생겼다. 한번 걸리면 5~10분은 그냥 날아가는 통에 여기저기 뒤지니깐 바로나와서 간단하게 정리한다. [cc lang="bash"]#lsof -i tcp:포트번호 검색된 해당 pid를 삭제한다 #kill -9 &#8216;pid&#8217; [/cc] PS. Django에서 uuid.uuid1 함수를 호출시 다운되는 현상이 발생했는데 메일링리스트에도 없고 해결해보고 안되면 티켓이나 하나 쏴야겠다.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F430"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F430&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Django로 SAML2.0 IdP를 구현하다가,</p>
<p>프로세스를 껐는데도 클라이언트가 제대로 FIN을 안주고 종료되어서</p>
<p>CLOSE_WAIT상태에 끼여 해당 포트가 안닫히는 경우가 생겼다.</p>
<p><br class="spacer_" /></p>
<p>한번 걸리면 5~10분은 그냥 날아가는 통에 여기저기 뒤지니깐 바로나와서</p>
<p>간단하게 정리한다.</p>
<p>[cc lang="bash"]#lsof -i tcp:포트번호</p>
<p>검색된 해당 pid를 삭제한다</p>
<p>#kill -9 &#8216;pid&#8217; [/cc]</p>
<p><br class="spacer_" /></p>
<p>PS. Django에서 uuid.uuid1 함수를 호출시 다운되는 현상이 발생했는데 메일링리스트에도 없고</p>
<p>해결해보고 안되면 티켓이나 하나 쏴야겠다.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/430/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercurial에서 UTF-8로 커밋메시지 보기</title>
		<link>http://blog.monolith.pe.kr/archives/411</link>
		<comments>http://blog.monolith.pe.kr/archives/411#comments</comments>
		<pubDate>Mon, 25 May 2009 13:46:15 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[utf-8]]></category>
		<category><![CDATA[머큐리얼]]></category>
		<category><![CDATA[설정]]></category>
		<category><![CDATA[유니코드]]></category>
		<category><![CDATA[인코딩]]></category>

		<guid isPermaLink="false">http://blog.monolith.pe.kr/archives/411</guid>
		<description><![CDATA[나는 hg.monolith.pe.kr에서 코드를 관리하고 있다. 그런데 utf-8로 아파치와 mysql을 설정해놨더니 커밋메시지가 전부 ?????로 뜨는 일이 발생했다. 구글링을 했더니 원하는 답이 없었다. 그래서 그냥 가능한 설정 값을 모두 UTF-8로 하는 만행을 저질렀다. 1. locale에서 ko_KR.UTF-8로 모든 로케일 설정(LANG, LC_ALL, 등) 2. apache2, mysql을 utf-8로 설정(구글링) 3. hgrc에서 [web]에 encoding=utf-8 을 추가 4. hgwebdir.cgi에서 os.environ['HGENCODING] = &#8220;UTF-8&#8243; [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F411"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F411&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="clear: both">나는 hg.monolith.pe.kr에서 코드를 관리하고 있다.<br />
 그런데 utf-8로 아파치와 mysql을 설정해놨더니<br />
 커밋메시지가 전부 ?????로 뜨는 일이 발생했다.<br />
 구글링을 했더니 원하는 답이 없었다.<br />
 그래서 그냥 가능한 설정 값을 모두 UTF-8로 하는 만행을 저질렀다.</p>
<blockquote><p style="clear: both">1. locale에서 ko_KR.UTF-8로 모든 로케일 설정(LANG, LC_ALL, 등)<br />
 2. apache2, mysql을 utf-8로 설정(구글링)<br />
 3. hgrc에서 [web]에 encoding=utf-8 을 추가<br />
 4. hgwebdir.cgi에서 os.environ['HGENCODING] = &#8220;UTF-8&#8243; 주석 해제</p>
</blockquote>
<p style="clear: both">했더니 잘된다.</p>
<p style="clear: both">TRAC도 역시나 커밋메시지가 ???로 깨져서 나오길래<br />
 1. 위의단계를 거침<br />
 2. conf/trac.ini 의 default_charset = utf-8 로 수정<br />
 3. trac.wsgi (WSGI나 CGI로 돌릴경우) 에서 os.environ['HGENCODING'] = &#8220;UTF-8&#8243; 추가<br />
 했더니 이상없이 한글이 잘 나온다.</p>
<p style="clear: both"><a class="image-link" href="http://blog.monolith.pe.kr/wp-content/uploads/2009/05/1.png" rel="lightbox[411]"><img class="linked-to-original" style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://blog.monolith.pe.kr/wp-content/uploads/2009/05/1-thumb.png" alt="" width="380" height="124" /></a></p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/411/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>wsgi이용하여 머큐리얼 설치하기</title>
		<link>http://blog.monolith.pe.kr/archives/362</link>
		<comments>http://blog.monolith.pe.kr/archives/362#comments</comments>
		<pubDate>Wed, 06 May 2009 07:25:38 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.monolith.pe.kr/?p=362</guid>
		<description><![CDATA[제목그대로 wsgi를 이용하여 머큐리얼을 설치하는 방법을 소개하겠다. 0. 우분투 8.10 서버, 인텔 x86,  python2.6, apache2 환경에서 설치했다. 1. 일단  머큐리얼을 설치한다. apt-get이나 dselect로 mercurial패키지를 깔거나 tarball로 설치하면 된다. 2.머큐리얼로 원하는 위치에 리파지토리를 생성하고 프로젝트를 커밋한다. [cc lang="bash"]$hg init my_project [/cc] 3. 쉘에서 다음과 같은 명령으로 hgwebdir.cgi파일을 찾아서 머큐리얼용 웹디렉토리로 사용할 위치에 복사해둔다. 나는 /home/hg/webdir폴더를 웹디렉토리로 [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F362"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F362&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>제목그대로 wsgi를 이용하여 머큐리얼을 설치하는 방법을 소개하겠다.</p>
<p><br class="spacer_" /></p>
<p>0. 우분투 8.10 서버, 인텔 x86,  python2.6, apache2 환경에서 설치했다.</p>
<p><br class="spacer_" /></p>
<p>1. 일단  <a href="http://www.selenic.com/mercurial/wiki/UnixInstall">머큐리얼</a>을 설치한다. apt-get이나 dselect로 mercurial패키지를 깔거나 tarball로 설치하면 된다.</p>
<p><br class="spacer_" /></p>
<p>2.머큐리얼로 원하는 위치에 리파지토리를 생성하고 프로젝트를 커밋한다.</p>
<p>[cc lang="bash"]$hg init my_project [/cc]</p>
<p><br class="spacer_" /></p>
<p>3. 쉘에서 다음과 같은 명령으로 hgwebdir.cgi파일을 찾아서</p>
<p>머큐리얼용 웹디렉토리로 사용할 위치에 복사해둔다.</p>
<p>나는 /home/hg/webdir폴더를 웹디렉토리로 사용한다.</p>
<p>아파치 세팅이 되어 있다면 그냥 cgi-bin에 넣어도 된다.</p>
<p>[cc lang="bash"]#find / -name hgwebdir.cgi</p>
<p>/usr/share/doc/mercurial/examples/hgwebdir.cgi</p>
<p>#cp /usr/share/doc/mercurial/examples/hgwebdir.cgi /home/hg/webdir/[/cc]</p>
<p><br class="spacer_" /></p>
<p>4. 머큐리얼 웹디렉토리에 hgweb.config파일을 다음과 같은 내용으로 만든다.</p>
<p>[cc lang="bash"]</p>
<p>[paths]</p>
<p>프로젝트명 = 프로젝트 디렉토리</p>
<p>[web]</p>
<p>base_url =[/cc]</p>
<p><br class="spacer_" /></p>
<p>5. 나는 해당 서버에서 trac과 블로그 등의 서비스를 함께 돌리고 있어서</p>
<p>각각의 서비스에 대한 가상 호스트를 생성하여 관리하고 싶다.</p>
<p>즉, 블로그는 blog.monolith.pe.kr 로 접속하고 트랙은 trac.monolith.pe.kr로 접속하는 식으로.</p>
<p>이럴 경우 다음과 같은 설정을 <strong>/etc/apache2/sites-available/default</strong> 에 추가해준다.</p>
<p>[cc lang="bash"]</p>
<p>ServerAdmin ldg55d@gmail.com<br />
 ServerName hg.monolith.pe.kr<br />
 ErrorLog /home/hg/error_log.hg<br />
 RewriteEngine On<br />
 RewriteRule (.*) /home/hg/webdir/hgwebdir.cgi/$1</p>
<p>Order allow,deny<br />
 Allow from all<br />
 AllowOverride All<br />
 Options ExecCGI<br />
 AddHandler cgi-script .cgi</p>
<p>[/cc]</p>
<p><br class="spacer_" /></p>
<p>6. 아파치를 다시 시작하고 http://hg.monolith.pe.kr에 접속하면 된다.</p>
<p><br class="spacer_" /></p>
<p>7. 작업할 단말에서 hg clone http://hg.monolith.pe.kr/프로젝트이름 하면 잘 클로닝된다.</p>
<p><br class="spacer_" /></p>
<p>8. python2.5에서는 이상이 없지만 2.6에서는 hgext관련해서 다양한 임포팅 오류가 일어난다.</p>
<p>이 경우 PYTHONPATH에<strong> /usr/share/python-support/mercurial-common</strong> 를</p>
<p>다음과 같이 명시적으로 지정해서 모듈위치를 잡아준다.</p>
<p>[cc lang="bash"]export PYTHONPATH = $PATH:/usr/share/python-support/mercurial-common[/cc]</p>
<p><br class="spacer_" /></p>
<p>PS.</p>
<p>1. rewrite모듈이나 wsgi모듈이 깔려서 아파치에 올라와 있다는 전제로 설명했다.</p>
<p>2.rewrite모듈에서 <strong>/(.*)</strong> 이 아니라 (.*)로 해야 <strong>hg.monoilth.pe.kr/프로젝트명</strong> 으로 접근가능하다.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/362/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>오라클XE 사용자 추가 및 삭제</title>
		<link>http://blog.monolith.pe.kr/archives/257</link>
		<comments>http://blog.monolith.pe.kr/archives/257#comments</comments>
		<pubDate>Tue, 17 Mar 2009 12:17:01 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[cx_Oracle]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[파이썬]]></category>

		<guid isPermaLink="false">http://www.monolith.pe.kr/wp/archives/257</guid>
		<description><![CDATA[오라클에서 사용자 추가 / 삭제를 많이 하려다 보니 귀찮아서 cx_Oracle을 깔고 파이썬 스크립트를 만들었다. [cc lang="python" lines="40"] #coding: utf-8 import cx_Oracle users = [학번1, 학번2] def ora_useradd(username): print “add user : %s” %username query = ‘CREATE USER “%s” IDENTIFIED BY “%s” DEFAULT TABLESPACE users TEMPORARY TABLESPACEtemp ACCOUNT unlock’ %(username, username) print query conn = cx_Oracle.connect(”system”, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F257"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F257&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>오라클에서 사용자 추가 / 삭제를 많이 하려다 보니 귀찮아서 cx_Oracle을 깔고 파이썬 스크립트를 만들었다.</p>
<p>[cc lang="python" lines="40"]<br />
#coding: utf-8</p>
<p>import cx_Oracle</p>
<p>users = [학번1, 학번2]<br />
def ora_useradd(username):<br />
    print “add user : %s” %username<br />
    query = ‘CREATE USER “%s” IDENTIFIED BY “%s” DEFAULT TABLESPACE users TEMPORARY TABLESPACEtemp ACCOUNT unlock’ %(username, username)<br />
    print query<br />
    conn = cx_Oracle.connect(”system”, “aksekfls”, “XE”)<br />
    cursor = conn.cursor()<br />
    cursor.execute(query)</p>
<p>    grant_query = “GRANT connect, resource TO %s” %username<br />
    cursor.execute(grant_query)<br />
    cursor.close()</p>
<p>def ora_userdel(username):<br />
    print “del user : %s” %username<br />
    query = ‘DROP USER %s CASCADE’ %username<br />
    print query<br />
    conn = cx_Oracle.connect(”system”, “aksekfls”, “XE”)<br />
    cursor = conn.cursor()<br />
    cursor.execute(query)<br />
    cursor.close()</p>
<p>if __name__ == “__main__“:<br />
    for username in users:<br />
        try:<br />
            ora_useradd(str(username))<br />
        except:<br />
            continue<br />
[/cc]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/257/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>오라클 xe 한글설정</title>
		<link>http://blog.monolith.pe.kr/archives/250</link>
		<comments>http://blog.monolith.pe.kr/archives/250#comments</comments>
		<pubDate>Sun, 15 Mar 2009 14:51:15 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[nls_characterset]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[xe]]></category>
		<category><![CDATA[오라클]]></category>
		<category><![CDATA[한글]]></category>

		<guid isPermaLink="false">http://www.monolith.pe.kr/wp/archives/250</guid>
		<description><![CDATA[오라클 xe설치후 아무런 세팅이 없으면 당연히 한글이 안보인다. 3가지 절차를 거치면 한글을 볼 수 있는데, 1. /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh 에서 NLS_LANG={어쩌구}.{저쩌구} 를 강제로 다움과 같이 수정한다. NLS_LANG=&#8217;KOREAN_KOREA.AL32UTF8&#8242; (위의 설정은 원래 서버 로케일에 맞추어 자동으로 잡아주는 건데 그냥 직접입력해둔다) 2. /etc/profile 에서 export NLS_LANG=&#8217;KOREAN_KOREA.AL32UTF8&#8242; 을 등록한다. 3. 여기서 문제인데 NLS_CHARACTERSET을 변경해야한다. 구글링을 해보면 다음과 같이 입력해서 변경하라고 한다. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F250"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F250&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>오라클 xe설치후 아무런 세팅이 없으면 당연히 한글이 안보인다.</p>
<p>3가지 절차를 거치면 한글을 볼 수 있는데,</p>
<p>1.</p>
<blockquote><p>/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh 에서 NLS_LANG={어쩌구}.{저쩌구}</p>
</blockquote>
<p>를 강제로 다움과 같이 수정한다.</p>
<blockquote><p>NLS_LANG=&#8217;KOREAN_KOREA.AL32UTF8&#8242;</p>
</blockquote>
<p>(위의 설정은 원래 서버 로케일에 맞추어 자동으로 잡아주는 건데 그냥 직접입력해둔다)</p>
<p>2. /etc/profile 에서</p>
<blockquote><p>export NLS_LANG=&#8217;KOREAN_KOREA.AL32UTF8&#8242;</p>
</blockquote>
<p>을 등록한다.</p>
<p>3. 여기서 문제인데 NLS_CHARACTERSET을 변경해야한다.<br />
 구글링을 해보면 다음과 같이 입력해서 변경하라고 한다.</p>
<blockquote><p>update sys.props$ set value$ = &#8216;AL32UTF8&#8242; where name=&#8217;NLS_CHARACTERSET&#8217;</p>
</blockquote>
<p>그런데 막상 system으로 접속해서 위의 명령을 해보면 ORA-01031 에러가 발생한다. 권한이 없다는 것이다.<br />
 sysdba권한이 필요하다는 것이다. 이부분을 찾느라 1시간을 헤맸다. 결론은 간단했는데 무지로 인한 고생이랄까&#8230;</p>
<p>sys계정으로 접속시 뒤에 as sysdba만 붙여주면 된다.(패스워드는 특별한 설정이 없다면 system계정과 동일)</p>
<blockquote><p>SQL&gt;conn sys/password as sysdba<br />
 SQL&gt;update sys.props$ set value$ = &#8216;AL32UTF8&#8242; where name=&#8217;NLS_CHARACTERSET&#8217;</p>
</blockquote>
<p>설정이 끝나면 오라클을 재실행하고 클라이언트도 재실행한다.<br />
 접속하면 아름다운 한글을 insert하고 select할 수 있다.</p>
<p>한편, 오라클 테이블은 위의 설정으로 한글지원이 가능하지만 오라클 서버 자체는 다른 캐릭터 셋을 사용하고 있다.</p>
<p>다음의 명령을 실행해보면</p>
<blockquote><p>BEGIN</p>
<p>DBMS_OUTPUT.PUT_LINE(&#8216;한글&#8217;);</p>
<p>END;</p>
<p>/</p>
</blockquote>
<p>?? 라는 출력메시지를 볼 수 있을 것이다.</p>
<p>(한글미지원) 따라서 오라클 서버 자체의 캐릭터 셋을 변경해주어야 한다.</p>
<blockquote><p>SHUTDOWN IMMEDIATE;<br />
 &lt;서버 백업해둘것&gt;<br />
 SQL&gt; STARTUP MOUNT;<br />
 SQL&gt; ALTER SYSTEM ENABLE RESTRICTED SESSION;<br />
 SQL&gt; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;<br />
 SQL&gt; ALTER SYSTEM SET AQ_TM_PROCESSES=0;<br />
 SQL&gt; ALTER DATABASE OPEN;<br />
 SQL&gt; ALTER DATABASE CHARACTER SET AL32UTF8;<br />
 SQL&gt; SHUTDOWN IMMEDIATE;<br />
 SQL&gt; STARTUP;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/250/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>오라클 xe 원격관리 접속허용</title>
		<link>http://blog.monolith.pe.kr/archives/244</link>
		<comments>http://blog.monolith.pe.kr/archives/244#comments</comments>
		<pubDate>Thu, 12 Mar 2009 06:18:23 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[xe]]></category>
		<category><![CDATA[오라클]]></category>

		<guid isPermaLink="false">http://www.monolith.pe.kr/wp/archives/244</guid>
		<description><![CDATA[apex에 접속해서 하는 방법도 있지만 우분투에 X를 안깔았다면 다음의 방법으로 수동처리하면 된다. SQL&#62; EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); PL/SQL 처리가 정상적으로 완료되었습니다.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F244"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F244&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>apex에 접속해서 하는 방법도 있지만 우분투에 X를 안깔았다면 다음의 방법으로 수동처리하면 된다.</p>
<blockquote><p>SQL&gt; EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);<br />
 PL/SQL 처리가 정상적으로 완료되었습니다.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/244/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle XE cilent 설치</title>
		<link>http://blog.monolith.pe.kr/archives/239</link>
		<comments>http://blog.monolith.pe.kr/archives/239#comments</comments>
		<pubDate>Thu, 12 Mar 2009 06:13:53 +0000</pubDate>
		<dc:creator>Haandol</dc:creator>
				<category><![CDATA[팁과 트릭]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[xe]]></category>

		<guid isPermaLink="false">http://www.monolith.pe.kr/wp/?p=239</guid>
		<description><![CDATA[0. 클라이언트 파일은 http://web.kyonggi.ac.kr/kwonjh 의 수업기타자료실 1번 글 에서 다운 받으시면 됩니다. &#160; 1. 오라클 클라이언트 설치파일을 실행하고 설치하면 됩니다. 설치절차는 매우 간단하므로 생략합니다. 오라클 클라이언트인 sqlplus의 실행방법은 2가지 인데, 시작프로그램 – 프로그램 &#8211; Oracle Client 10g Express Edition &#8211; sql명령줄 실행 을 실행하거나 [윈도우키 + R]로 커맨드창을 띄워 &#34;sqlplus /nolog&#34;로 실행하면 됩니다. &#160; 2. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F239"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.monolith.pe.kr%2Farchives%2F239&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>0. 클라이언트 파일은 <a href="http://web.kyonggi.ac.kr/kwonjh" target="_blank">http://web.kyonggi.ac.kr/kwonjh</a><strong></strong><strong> 의 수업기타자료실 1번 글 에서 다운 </strong>받으시면 됩니다.</p>
<p>&#160;</p>
<p>1.</p>
<p>오라클 클라이언트 설치파일을 실행하고 설치하면 됩니다. 설치절차는 매우 간단하므로 생략합니다. </p>
<p>오라클 클라이언트인 <strong>sqlplus의 실행방법</strong>은 2가지 인데,</p>
<ul>
<li>시작프로그램 – 프로그램 &#8211; Oracle Client 10g Express Edition &#8211; <strong>sql명령줄 실행 을 실행하거나</strong> </li>
<li>[윈도우키 + R]로 커맨드창을 띄워 <strong>&quot;sqlplus /nolog&quot;</strong>로 실행하면 됩니다. </li>
</ul>
<p>&#160;</p>
<p>2.</p>
<p>두 방법 중 하나를 택해서 sqlplus를 실행하면 아래와 같은 화면을 볼 수 있습니다.</p>
<p><a href="http://blog.monolith.pe.kr/wp-content/uploads/2010/04/image10.png" rel="lightbox[239]"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.monolith.pe.kr/wp-content/uploads/2010/04/image_thumb10.png" width="639" height="418" /></a> </p>
<p>&#160;</p>
<p>3.</p>
<p>sqlplus 에서 서버에 있는 데이터베이스에 연결시 다음과 같이 입력합니다.</p>
<blockquote><p>SQL&gt; conn 아이디/비밀번호@서버주<font color="#000000">소</font>:포트번<font color="#000000">호</font>/데이터베이스이름</p>
</blockquote>
<p>각 파라미터를 설명해보면,</p>
<p>수업에 사용하는 <strong>데이터베이스 이름은 XE</strong>이고 <strong>서버주소는 dblab.kyonggi.ac.kr</strong> , <strong>포트번호는 9000</strong> 입니다.</p>
<p>따라서 <strong>아이디가 test</strong>이고 <strong>비밀번호가 test</strong>이면 다음과 같이 입력하면 됩니다.</p>
<blockquote><p>SQL&gt; conn test/test@dblab.kyonggi.ac.kr:9000/XE</p>
<p>연결되었습니다.</p>
</blockquote>
<p><strong>초기 아이디와 비밀번호는 학번으로 설정</strong>되어 있습니다.</p>
<p>&#160;</p>
<p>4.</p>
<p>수업 중 test.sql 등의 <strong>sql파일을 사용할 경우</strong>가 있습니다. 이 때는 sql파일을 <strong>C:\XEClient\sqlplus</strong> 디렉토리에 넣고 작업하면 됩니다.</p>
<p>예를 들면</p>
<blockquote><p>;content of the ‘test.sql’ file</p>
<p>select table_name from tabs;</p>
</blockquote>
<p>라는 쿼리문(의미 : 현재 데이터베이스의 전체 테이블 확인)이 들어있는 test.sql파일이 C:\XEClient\sqlplus 에 있다고 하면</p>
<p>해당 쿼리파일을 실행하기 위해서는 단지</p>
<blockquote><p>SQL&gt;@test.sql</p>
</blockquote>
<p>라고 입력해주면 됩니다. 서버이용에 대해 궁금한 사항은 <a href="mailto:ldg55d@gmail.com">ldg55d@gmail.com</a> 으로 메일 주세요.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monolith.pe.kr/archives/239/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
