<?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>likejazz.COM</title>
	<atom:link href="http://www.likejazz.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.likejazz.com</link>
	<description>Working Smart: Getting Better at Work and Life</description>
	<lastBuildDate>Wed, 08 Feb 2012 16:50:42 +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>서울과 제주의 차이</title>
		<link>http://www.likejazz.com/archives/3104</link>
		<comments>http://www.likejazz.com/archives/3104#comments</comments>
		<pubDate>Wed, 08 Feb 2012 15:21:54 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3104</guid>
		<description><![CDATA[얼마전 서울 오피스에서 제주에서 근무하다 올라간 한 여직원과 마주쳤다. 그녀는 몰라보게 달라져 있었다. 화장을 했고 옷차림도 세련되 졌다. 제주에서는 한 번도 화장한 모습을 보질 못했고 항상 수수한 차림이었던 그녀. 무엇이 그녀를 달라지게 했나. 1977년 뉴질랜드 사회학자 Stephen D. Webb은 논문 Rural-urban differences in the use of stress-alleviative drugs를 통해 도시의 항스트레스제 약품 사용은 도시의 크기에 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3104" data-text="서울과 제주의 차이" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>얼마전 서울 오피스에서 제주에서 근무하다 올라간 한 여직원과 마주쳤다. 그녀는 몰라보게 달라져 있었다. 화장을 했고 옷차림도 세련되 졌다. 제주에서는 한 번도 화장한 모습을 보질 못했고 항상 수수한 차림이었던 그녀. 무엇이 그녀를 달라지게 했나.</p>
<p>1977년 뉴질랜드 사회학자 Stephen D. Webb은 논문 Rural-urban differences in the use of stress-alleviative drugs를 통해 도시의 항스트레스제 약품 사용은 도시의 크기에 비례한다는 연구 결과를 발표한 바 있다. 오래된 결과이고 제한된 표본이긴 하나 도시화와 스트레스에 관한 연구 결과로 시사하는 바가 크다. 도시는 스트레스 그 자체다. 이는 경쟁의 산물이요 분주함과 치열함은 항상 긴장감을 갖게 한다. 그것이 좋든 싫든 도시의 특징이며 적당한 긴장감은 일견 긍정적인 효과도 분명 있다.</p>
<p>아침 출근 시간에 지하철에서 느껴지는 긴장감. 그 느낌을 잊을 수 없다. 행여나 경쟁에서 뒤쳐질라 나도 모르게 환승역에서 달리던 모습. 역에서 막 나왔을때 느껴지는 상쾌한 아침 공기. 출근하는 사람들의 활기찬 에너지. 그 느낌은 제주에 온지 6년이 지났지만 아직도 잊혀지질 않는다.</p>
<p>그녀가 화장을 하게 된 것도 매일 출근시간에 마주치는 수백 수천명의 사람들에게서 경쟁 심리를, 묘한 긴장감을 느꼈기 때문이리라. 제주에서는 산중턱에 위치한 회사에 출근하는 동안 마주치는 사람이라곤 채 열명이 되질 않는다. 이 마저도 나이 많은 사람이 대부분이니 긴장이라고는 전혀 느낄 수 없다. 당연히 화장도 하지 않는다. 할 필요가 없다. 보는 사람도 없다.</p>
<p>제주의 여유로움. 분명 포기할 수 없는 매력이 있고 나도 그 매력을 쫓아 제주를 택한지 벌써 6년째다. 하지만 올해는 가능한 출장을 많이 갈 계획이다. 분주함과 치열함, 긴장감이 주는 묘한 매력을 새삼 깨달았기 때문이다. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3104/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>국내 소프트웨어 산업의 문제</title>
		<link>http://www.likejazz.com/archives/3102</link>
		<comments>http://www.likejazz.com/archives/3102#comments</comments>
		<pubDate>Wed, 25 Jan 2012 13:55:52 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3102</guid>
		<description><![CDATA[지경부에 이렇게 통찰력이 뛰어난 분이 계시다니. 국현님 말씀처럼 &#8220;이렇게 꾸준히 고민해 주는, 소프트웨어를 아는 관료가 있다는 것에 한국의 희망&#8221;이 있다. 페이스북 링크에서 원본을 볼 수 있다. 이미 50회가 넘는 Share, 160회가 넘는 Like 기록 중.]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3102" data-text="국내 소프트웨어 산업의 문제" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p><img src="http://farm8.staticflickr.com/7023/6760148905_edeb96bf08.jpg" /></p>
<p>지경부에 이렇게 통찰력이 뛰어난 분이 계시다니. 국현님 말씀처럼 &#8220;이렇게 꾸준히 고민해 주는, 소프트웨어를 아는 관료가 있다는 것에 한국의 희망&#8221;이 있다.</p>
<p><a href="http://www.facebook.com/photo.php?fbid=276112795786633&#038;set=a.147257565338824.30089.100001637431499&#038;type=1">페이스북 링크</a>에서 원본을 볼 수 있다. 이미 50회가 넘는 Share, 160회가 넘는 Like 기록 중.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3102/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>어느 초등학교 축구부의 운동 방식</title>
		<link>http://www.likejazz.com/archives/3093</link>
		<comments>http://www.likejazz.com/archives/3093#comments</comments>
		<pubDate>Sat, 14 Jan 2012 16:25:25 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3093</guid>
		<description><![CDATA[주차하러간 어느 초등학교 운동장에서 우연히 축구부 운동하는 모습을 보게됐다. 주말임에도 불구하고 매우 열심히 코치와 선수들이 땀흘리며 운동하는 모습이 인상적이었다. 그런데 문제가 생겼다. 윙어가 센터링을 제대로 못하자 코치가 선수를 불러다 훈계하는데 &#8220;이 좆같은 새끼, 넌 왜 이렇게 무식하냐? 왜 그걸 제대로 못해? 씨발놈아&#8221; 이런 소릴 운동장이 떠나라 고래고래 고함치며 훈계한다. 초등학생한테. 순간 당황했지만 일부러 더 노골적으로 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3093" data-text="어느 초등학교 축구부의 운동 방식" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>주차하러간 어느 초등학교 운동장에서 우연히 축구부 운동하는 모습을 보게됐다.</p>
<p>주말임에도 불구하고 매우 열심히 코치와 선수들이 땀흘리며 운동하는 모습이 인상적이었다.</p>
<p>그런데 문제가 생겼다. </p>
<p>윙어가 센터링을 제대로 못하자 코치가 선수를 불러다 훈계하는데 <strong>&#8220;이 좆같은 새끼, 넌 왜 이렇게 무식하냐? 왜 그걸 제대로 못해? 씨발놈아&#8221;</strong> 이런 소릴 운동장이 떠나라 고래고래 고함치며 훈계한다. 초등학생한테.</p>
<p>순간 당황했지만 일부러 더 노골적으로 코치를 빤히 바라봤다. 하지만 욕설은 끊이지 않았다. 이런 교육 방식은 이미 일상인듯 했다. 나서서 한마디 하고 싶었지만 그건 너무 주제 넘는 일이 될 것 같고.</p>
<p>때로는 강압적인 훈련도 필요하겠지만 이건 강압을 넘어 비인간적이고 그저 감정적인 배설일 뿐이다. 인성 교육이 더 필요한 초등학생에게 코치의 감정적인 대응은 어떤 영향을 끼칠 것인가. 분명 코치도 어렸을때 그런식으로 훈련 받았을테고 지금 그대로 답습하는 것일게다.</p>
<p>동물을 대하듯 매질하고 오로지 쥐어짜서 결과만 좋으면 다인가. 아니 이런 교육 환경에선 결코 좋은 결과도 나올 수 없다. 만에 하나 결과가 좋다 한들 그런 선수들이 나중에 커서 제대로 된 인성을 갖출리 만무하다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3093/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>혼란스러운 업무 관리</title>
		<link>http://www.likejazz.com/archives/3046</link>
		<comments>http://www.likejazz.com/archives/3046#comments</comments>
		<pubDate>Sat, 07 Jan 2012 16:11:29 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3046</guid>
		<description><![CDATA[일 잘하는 사람의 첫째 조건으로 빠른 피드백을 얘기한 적 있다. 요청을 하는 사람 입장에선 응답이 없는 것 만큼 업무 진행이 힘든 일도 드물기 때문이다. 그래서 나 또한 빠른 피드백을 최우선으로 하며 답신 부터 보내는 편이다. 그 일을 해결할 수 있을지 없을지는 그 다음 문제다. 일단 요청을 받으면 잘 받았다는 응답 부터 보낸다. 그런데 문제가 생겼다. [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3046" data-text="혼란스러운 업무 관리" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>일 잘하는 사람의 첫째 조건으로 <a href="http://www.likejazz.com/archives/1201">빠른 피드백</a>을 얘기한 적 있다.</p>
<p>요청을 하는 사람 입장에선 응답이 없는 것 만큼 업무 진행이 힘든 일도 드물기 때문이다.</p>
<p>그래서 나 또한 빠른 피드백을 최우선으로 하며 답신 부터 보내는 편이다. 그 일을 해결할 수 있을지 없을지는 그 다음 문제다. 일단 요청을 받으면 잘 받았다는 응답 부터 보낸다.</p>
<p>그런데 문제가 생겼다.</p>
<p>예전에는 메일만 확인하고 답신을 해주면 됐지만 어느새 메신저가 생겼다. 바쁜 와중에 메신저가 울리고(대부분은 &#8220;안녕하세요&#8221; 하고 내가 응답이 없으면 그 다음 대화를 진행하지 않는) 열심히 응대해주면 뭔가 요청을 남기고 대화가 끝난다.</p>
<p>이제 나에겐 해야할 일이 하나 더 생겼다. 나중에 지난 대화함을 뒤져서 그 요청이 무엇인지 알아내는 일이다.</p>
<h3>메신저</h3>
<p>회사 업무는 사내 메신저로 대부분 해결된다.</p>
<p>하지만 사내 메신저가 통용되지 않는 일이라면?</p>
<p>내 친구가 제주도에 온다고 네이트온으로 연락이 왔다. 가만 그게 언제였지? 그 친구랑 술 한잔 해야하는데. 깜빡하고 날짜를 잊어버리면 두고두고 원망하겠지. 네이트온의 지난 대화함을 뒤져서 날짜를 찾아내야 한다.</p>
<p>그러고 보니 연락이 뜸하긴 해도 구글톡도 있고 다음 터치 메신저도 있다. 오랫만에 그쪽으로 연락온 대화들도 기억하고 있어야 한다.</p>
<p>언젠가 부터 카카오톡으로 메시지가 오기 시작했고, 심지어 회사에선 업무와 관련된 연락을 마이피플(!)로 보내기로 했다. 벌써 내 스마트폰으로만 카톡과 마이피플을 또 따로 챙겨두어야 한다.</p>
<p>그나마 메신저는 기록이라도 남지만 전화는 끔찍하다. 전화로 뭔가를 요청받았는데 미처 적어두질 못했다. 30분 밖에 안지났는데 벌써 무슨 얘긴지 기억이 안난다.</p>
<h3>메일</h3>
<p>메일도 다르지 않다.</p>
<p>공식적인 회사 업무용 Daum 메일은 별표까지 열심히 해가며 아주 잘 쓰고 있지만 문제는 또 다른 메일이다.</p>
<p>Gmail로 들어오는 요청은 여기다 또 별표 한다. 어떤건 내 개인 Daum 메일이나 심지어 네이버 메일로도 온다. 그럼 또 거기다 일단 별표부터 해둔다.</p>
<p>별표한 중요 메일함을 열어본건 언제였던가. 벌써 일주일이 넘은거 같은데.</p>
<h3>업무(Tasks) 관리</h3>
<p>회사에선 전사 차원의 업무 관리 툴로 JIRA를 이용한다.</p>
<p>그 전에 나는 Things로 업무를 관리하다가 싱크 문제 때문에 Remember the Milk를 쓰다 다시 Wunderlist를 쓰고 있었는데 이게 느려서 다시 Remember the Milk로 돌아갔던 참이었다.</p>
<p>그런데 회사에서 JIRA를 쓰자고 하니 일단 따르기로 했다.</p>
<p>업무와 관련된 Tasks만 골라내 JIRA에 다시 등록했다. 처음엔 이질적인 인터페이스에 힘들었는데 익숙해지니 나름 편하고 특히 다른 사람에게 공유하기 좋다. 만족스럽다.</p>
<p>아무리 만족스러워도 개인적인 일까지 회사의 JIRA를 이용할순 없다. 예를 들어 &#8220;은행 통장 정리&#8221; 같은. 그래서 개인적인 일은 다시 Remember the Milk에 기입한다. 모바일 싱크를 위해 유료 결제도 했다.</p>
<h3>다양한 요청(Requests) 경로</h3>
<p>요청 받는 경로로 메일과 메신저, 요청을 관리하는 도구로 JIRA와 RTM.</p>
<p>좋다.</p>
<p>그런데 문제는 이게 다가 아니란 점이다.</p>
<p><img src="http://farm8.staticflickr.com/7031/6653316875_1c2053d914.jpg" align="right" style="margin-left: 20px" />트위터를 쓰다 보니 언젠가 부터 트위터 개인 메시지로 문의하는 분이 생겼다. 주로 개인적인 일이지만 심지어 업무와 관련된(!) 요청이나 문의를 이쪽으로 하는 분도 있다. 별 수 없다. 일단 챙겨둔다.</p>
<p><img src="http://farm8.staticflickr.com/7151/6653316819_a66b6ff7b9.jpg" align="right" style="margin-left:20px" />페이스북도 마찬가지.</p>
<p>페이스북의 개인 메시지로 뭔가 요청이 온다. 역시 챙겨둔다.</p>
<p>트위터나 페이스북은 주로 모바일로 접속하는 편인데 그러다보니 즉시 응대가 쉽지 않다. 챙겨두고 사무실이나 집에 가서 응대하기로 한다.</p>
<h3>다양한 경로의 요청 처리</h3>
<p>사무실에 와서 개인 메시지를 확인하려 페이스북에 접속한다.</p>
<p>첫 페이지에 다른 사람의 재밌는 글들이 주욱 뜬다. 그냥 지나칠수가 없다. 일단 읽는다. 어느새 다른 사람의 피드를 계속 읽고 있다.</p>
<p>가만, 내가 뭐하러 페이스북에 접속했지?</p>
<p>화장실에서 페이스북을 보다가 정말 중요한 링크를 발견했다. 이건 업무에도 도움 되겠다. 일단 &#8220;좋아요!&#8221;를 누른다.</p>
<p>자리로 돌아와서 그 링크를 찾으려 했는데 도통 찾을 수가 없다. 도대체 그 글은 뭐였더라. 내가 뭘 Like 했더라?</p>
<p>스마트폰으로 트위터를 보다가 정말 좋은 링크를 발견했다. 이건 업무에도 도움 되겠다. 일단 별표 Favorite!</p>
<p>자리에 앉아서 PC로 트위터에 다시 접속했는데 계속 다른 사람의 피드만 본다. 재밌는게 너무 많다. 원래 보기로 했던 Favorites는 끝내 보지 못하고 브라우저를 닫아버린다.</p>
<p>참, 그러고보니 좋은 링크를 발견해서 꼭 봐야겠다며 delicious에 북마크한게 있는데, 정작 북마킹만 하고 delicious 사이트는 일주일째 접속조차 해보지 않았다.</p>
<p>Instapaper에도 일주일전 쯤 집어넣어둔 기사가 있었는데 그게 Wall Street Journal이었나, New York Times였나? 아니 내가 넣어두기라도 했었나?</p>
<p>구글 reader에는 꼭 읽어야겠다고 별표 친 피드가 500개나 쌓여 있다.</p>
<h3>그래서</h3>
<p>아, 방금 페이스북 알림이 스마트폰으로 우렁차게 울린다. 누군가 내 글에 재밌는 댓글을 달았나보다. 좋아, 답글 달러 가야지.</p>
<p>참, 그러고 보니 어제 누군가 페이스북 개인 메시지로 제주 투어에 관한 문의를 했고, Gmail에는 강의 수행 평가서를 작성해달라는 요청이 와있었고, 회사 메일에는 성능 테스트를 진행해야 한다고 JIRA에 등록해달라는 요청 메일에 별표를 쳐둔게 방금 생각났다.</p>
<p>바로 처리하려고 했는데 페이스북은 화장실에서 수신하는 바람에, Gmail은 퇴근길에 스마트폰으로 읽는 바람에, 회사 메일은 회의 때문에 미처 읽지도 못한채 별표만 해두고 까먹은 참이었다.</p>
<p>그나마 지금이라도 생각나서 다행이다. 얼른 답신하고 처리해야지.</p>
<p>가만, 그 전에 페이스북에 답글 달기로 했잖아. 그게 더 재밌을거 같은데 일단 그거부터 해야겠다.</p>
<p>행여나 또 잊어버릴까 연습장에 볼펜으로 세 가지 일을 또박또박 적었다. 그리곤 페이스북에 접속한다. 정말로 답글만 딱 달고 나와야지 다짐하면서.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3046/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012년 새해가 밝았습니다</title>
		<link>http://www.likejazz.com/archives/3043</link>
		<comments>http://www.likejazz.com/archives/3043#comments</comments>
		<pubDate>Sun, 01 Jan 2012 18:22:46 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3043</guid>
		<description><![CDATA[작년처럼 눈도 내리지 않았고 날씨도 많이 춥지 않았지만, 이번 새해는 조촐하게 집에서 맞이했습니다 :) 매 년 꼭 하는 새해 인사를 올해도 인사 드립니다. 2012년 한 해에도 좋은 일만 일어났으면 합니다. &#8220;새해 복 많이 받으세요&#8221;]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3043" data-text="2012년 새해가 밝았습니다" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>작년처럼 눈도 내리지 않았고 날씨도 많이 춥지 않았지만,<br />
이번 새해는 조촐하게 집에서 맞이했습니다 :)</p>
<p><a href="http://www.likejazz.com/archives/2531">매 년 꼭 하는 새해 인사</a>를 올해도 인사 드립니다.</p>
<p>2012년 한 해에도 좋은 일만 일어났으면 합니다.</p>
<p>&#8220;새해 복 많이 받으세요&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3043/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>한정된 예산으로 안정적인 스토리지 구현 [IBM DW 11.12]</title>
		<link>http://www.likejazz.com/archives/3037</link>
		<comments>http://www.likejazz.com/archives/3037#comments</comments>
		<pubDate>Sat, 31 Dec 2011 14:50:18 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3037</guid>
		<description><![CDATA[개발에서 한 발짝 물러나 다시 시스템에 대해 바라볼 시간이다. 이번에는 스토리지 구현에 관해서다. 사실 스토리지는 더 이상 반드시 필요한 요소는 아니다. 아마존의 S3 같은 서비스가 스토리지의 부담을 잘 덜어주고 있기 때문이다. 그래도 기본적인, 새로운 부분은 한 번 살펴보겠다. 특히 이번에 소개하는 ZFS라는 이름부터 거창한(Z는 Zettabyte를 의미) 파일 시스템이다. ZFS는 128비트를 최초로 적용한 파일 시스템으로 거의 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3037" data-text="한정된 예산으로 안정적인 스토리지 구현 [IBM DW 11.12]" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>개발에서 한 발짝 물러나 다시 시스템에 대해 바라볼 시간이다. 이번에는 스토리지 구현에 관해서다.</p>
<p>사실 스토리지는 더 이상 반드시 필요한 요소는 아니다. 아마존의 S3 같은 서비스가 스토리지의 부담을 잘 덜어주고 있기 때문이다.</p>
<p>그래도 기본적인, 새로운 부분은 한 번 살펴보겠다. 특히 이번에 소개하는 ZFS라는 이름부터 거창한(Z는 Zettabyte를 의미) 파일 시스템이다.</p>
<p>ZFS는 128비트를 최초로 적용한 파일 시스템으로 거의 무한대의 용량을 제공한다. 1 제타바이트는 무려 1,073,741,824 테라바이트다. 이 정도면 더 이상의 파일 시스템은 필요없을 것 같다.</p>
<p>아, 설마 나도 빌 게이츠처럼 640KB면 충분하다고 계속 놀림 당하는건 아니겠지?</p>
<ul>
<li><a href="http://www.ibm.com/developerworks/kr/library/os-zfsraidz/index.html">한정된 예산으로 크고 빠르고 안정적인 스토리지 구현</a></li>
</ul>
<p>* 이 글은 <a href="http://www.ibm.com/developerworks/kr/">IBM developerWorks</a> 후원으로 작성한 글입니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3037/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>추가 Boost 유틸리티 [IBM DW 11.12]</title>
		<link>http://www.likejazz.com/archives/3031</link>
		<comments>http://www.likejazz.com/archives/3031#comments</comments>
		<pubDate>Sat, 31 Dec 2011 14:30:23 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3031</guid>
		<description><![CDATA[Boost C++ 라이브러리는 Standard Template Library(STL)과 함께 C++ 핵심 라이브러리 중 하나다. 당연히 Boost는 STL과도 매우 잘 동작하며 Boost에는 STL에 있는 알고리즘, 컨테이너 뿐만 아니라 메모리, 문자열 처리, 정규식! 같은 다양한 기능을 제공한다. 아래 DW 글에서는 압축된 쌍 및 유형 특성과 클래스를 복사할 수 없게 만들거나 어설션 실패 시 특정 함수 콜백을 허용하도록 빠르게 도움을 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3031" data-text="추가 Boost 유틸리티 [IBM DW 11.12]" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>Boost C++ 라이브러리는 Standard Template Library(STL)과 함께 C++ 핵심 라이브러리 중 하나다. 당연히 Boost는 STL과도 매우 잘 동작하며 Boost에는 STL에 있는 알고리즘, 컨테이너 뿐만 아니라 메모리, 문자열 처리, 정규식! 같은 다양한 기능을 제공한다.</p>
<p>아래 DW 글에서는 압축된 쌍 및 유형 특성과 클래스를 복사할 수 없게 만들거나 어설션 실패 시 특정 함수 콜백을 허용하도록 빠르게 도움을 주는 Boost의 일반적인 기능과 같이 유용한 몇 가지 유틸리티에 대해 살펴본다. 또한 백그라운드에서 일어나는 일을 이해하기 위해 Boost 소스를 조사해본다.</p>
<p>실제로 std::swap보다 boost::swap의 우수성을 설명하기 위해 boost::swap의 소스 코드를 엿보는 부분이 있다.</p>
<ul>
<li><a href="http://www.ibm.com/developerworks/kr/aix/library/au-boostutilities/index.html">추가 Boost 유틸리티</a></li>
</ul>
<div class="codesnip-container" >
<div class="cpp codesnip" style="font-family:monospace;"><span class="co2">#include &lt;algorithm&gt; //for std::swap</span><br />
<span class="co2">#include &lt;cstddef&gt; //for std::size_t</span></p>
<p><span class="kw2">namespace</span> boost_swap_impl<br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw2">template</span><span class="sy1">&lt;</span><span class="kw2">class</span> T<span class="sy1">&gt;</span><br />
&nbsp; <span class="kw4">void</span> swap_impl<span class="br0">&#40;</span>T<span class="sy3">&amp;</span> left, T<span class="sy3">&amp;</span> right<span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw2">using</span> <span class="kw2">namespace</span> std<span class="sy4">;</span><span class="co1">//use std::swap if argument dependent lookup fails</span><br />
&nbsp; &nbsp; swap<span class="br0">&#40;</span>left,right<span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; <span class="br0">&#125;</span></p>
<p><span class="kw2">template</span><span class="sy1">&lt;</span><span class="kw2">class</span> T, std<span class="sy4">::</span><span class="kw4">size_t</span> N<span class="sy1">&gt;</span><br />
&nbsp; <span class="kw4">void</span> swap_impl<span class="br0">&#40;</span>T <span class="br0">&#40;</span><span class="sy3">&amp;</span> left<span class="br0">&#41;</span><span class="br0">&#91;</span>N<span class="br0">&#93;</span>, T <span class="br0">&#40;</span><span class="sy3">&amp;</span> right<span class="br0">&#41;</span><span class="br0">&#91;</span>N<span class="br0">&#93;</span><span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>std<span class="sy4">::</span><span class="kw4">size_t</span> i <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> i <span class="sy1">&lt;</span> N<span class="sy4">;</span> <span class="sy2">++</span>i<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="sy4">::</span><span class="me2">boost_swap_impl</span><span class="sy4">::</span><span class="me2">swap_impl</span><span class="br0">&#40;</span>left<span class="br0">&#91;</span>i<span class="br0">&#93;</span>, right<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span> </p>
<p><span class="kw2">namespace</span> boost<br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw2">template</span><span class="sy1">&lt;</span><span class="kw2">class</span> T1, <span class="kw2">class</span> T2<span class="sy1">&gt;</span><br />
&nbsp; <span class="kw4">void</span> swap<span class="br0">&#40;</span>T1<span class="sy3">&amp;</span> left, T2<span class="sy3">&amp;</span> right<span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="sy4">::</span><span class="me2">boost_swap_impl</span><span class="sy4">::</span><span class="me2">swap_impl</span><span class="br0">&#40;</span>left, right<span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>* 이 글은 <a href="http://www.ibm.com/developerworks/kr/">IBM developerWorks</a> 후원으로 작성한 글입니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3031/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>이클립스를 이용한 개발 [IBM DW 11.12]</title>
		<link>http://www.likejazz.com/archives/3024</link>
		<comments>http://www.likejazz.com/archives/3024#comments</comments>
		<pubDate>Sat, 31 Dec 2011 14:00:54 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3024</guid>
		<description><![CDATA[이클립스(Eclipse)는 자바 개발의 사실상 표준(de facto standard) 플랫폼이다. 기능이 풍부하고 사용하기 쉽다. 무한한 확장구조를 갖고 있으며 버전업도 빠르다. 결정적으로 무료다. IBM이 든든하게 후원하면서 무료로 편리하게 사용할 수 있는데 쓰지 않을 이유가 없다. 실제로 이클립스는 자바 기반의 개발 생산성을 엄청나게 높였다. 부작용도 있다. 요즘 나오는 프레임워크는 아예 이클립스를 쓴다는 전제하에 나오기 때문에 쓰지 않으면 진행이 불가능할 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3024" data-text="이클립스를 이용한 개발 [IBM DW 11.12]" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>이클립스(Eclipse)는 자바 개발의 사실상 표준(de facto standard) 플랫폼이다.</p>
<p>기능이 풍부하고 사용하기 쉽다. 무한한 확장구조를 갖고 있으며 버전업도 빠르다. 결정적으로 무료다.</p>
<p>IBM이 든든하게 후원하면서 무료로 편리하게 사용할 수 있는데 쓰지 않을 이유가 없다. 실제로 이클립스는 자바 기반의 개발 생산성을 엄청나게 높였다.</p>
<p>부작용도 있다.</p>
<p>요즘 나오는 프레임워크는 아예 이클립스를 쓴다는 전제하에 나오기 때문에 쓰지 않으면 진행이 불가능할 정도로 생산성이 낮다. 아예 툴의 기능을 반드시 사용해야 할만큼 프레임워크가 점점 더 복잡해지기도 한다.</p>
<p>우리가 책에서 배웠던 모델링이나 설계를 잘 하는 것 보다 툴의 기능에 의존한 개발이 더 편하다는 점은 장점인지 단점인지 헷갈린다.</p>
<p>어쨌든 자바를 하겠다면, 배우겠다면 익히겠다면 이클립스를 모르고는 할 수 없는 세상이다.</p>
<p>마침 DW에 그간 참고 자료를 정리한 유용한 링크를 제공한다. 번역된 부분도 있고 원문도 있지만 스크린캡쳐까지 동원해 자세히 설명하니 그리 큰 어려움은 없을듯 싶다.</p>
<ul>
<li><a href="http://www.ibm.com/developerworks/kr/training/kp/os-kp-eclipsedev/index.html">Eclipse를 이용한 오픈 소스 개발: 기초 지식 마스터</a></li>
</ul>
<p>* 이 글은 <a href="http://www.ibm.com/developerworks/kr/">IBM developerWorks</a> 후원으로 작성한 글입니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3024/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>책 읽기</title>
		<link>http://www.likejazz.com/archives/3011</link>
		<comments>http://www.likejazz.com/archives/3011#comments</comments>
		<pubDate>Tue, 13 Dec 2011 17:56:44 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3011</guid>
		<description><![CDATA[여러 경로를 통해 선물 받거나 증정 받거나 혹은 직접 사는 것을 포함하면 매 달 4-5권의 새 책을 접한다. 하지만 독서 속도는 이를 따라가지 못한다. 사실 한 달에 4-5권쯤이야 마음만 먹으면 얼마든지 읽을 수 있다. 그런데 마음을 먹는게 좀체 쉽지 않다. 핑계를 대자면 가장 큰 주범은 인터넷이다. 인터넷의 매력에 빠지면 좀처럼 헤어나올 수가 없다. 심지어 TV도 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3011" data-text="책 읽기" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>여러 경로를 통해 선물 받거나 증정 받거나 혹은 직접 사는 것을 포함하면 매 달 4-5권의 새 책을 접한다.</p>
<p>하지만 독서 속도는 이를 따라가지 못한다. 사실 한 달에 4-5권쯤이야 마음만 먹으면 얼마든지 읽을 수 있다. 그런데 마음을 먹는게 좀체 쉽지 않다.</p>
<p>핑계를 대자면 가장 큰 주범은 인터넷이다. 인터넷의 매력에 빠지면 좀처럼 헤어나올 수가 없다. 심지어 TV도 안보게된다(이건 좋은 일 같지만 어쨌든) SNS의 중독성은 더 하다. 끊임없이 커뮤니케이션 하게 되고 수시로 울려대는 알림 메시지는 주의력을 분산 시킨다. 알림이 없더라도 새로운 소식이 없나 계속 기웃기웃하게 된다. </p>
<p>이쯤되니 책 볼 시간이 없다. 책을 펼치고 독서를 시작하다가도 끊임없이 울리는 스마트폰에 이내 집중력이 흐트러진다. </p>
<p>집이 어둡다는 것도 문제다. <a href="http://www.likejazz.com/archives/2296">이북리더</a>도 같인 이유로 팔아버렸는데 별도 조명이 필요하다는게 문제였다. 두꺼운 책 하나만 들고 다니기도 번거로운데(최소한 조그만 스마트폰에 비해) 거기다 독서등까지 챙기고 책갈피까지 빠트리지 않으려면 여간 번거로운게 아니다.</p>
<p>침대에 누워서 독서하는걸 즐기는데 이 마저도 조명에, 책갈피에, 불편한 자세로 책을 들고 버티다가 결국 한손에 쏙 들어오는 스마트폰을 찾게 된다.</p>
<p>아직 뾰족한 해결책은 찾질 못했다. 집 안에 별도의 독서룸을 만들까도 생각해봤지만 이 역시 쉬운 일은 아니고. 계속 이렇게 얘기하는건 스스로 반성하고 채찍질하여 좀 더 독서하는 시간을 갖기 위함이다. 이렇게 하지 않으면, 얘기 하지 않으면 책을 보는 시간이 점점 더 줄어들 것 같다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3011/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>inotify를 이용한 리눅스 파일 시스템 모니터 [IBM DW 11.11]</title>
		<link>http://www.likejazz.com/archives/3005</link>
		<comments>http://www.likejazz.com/archives/3005#comments</comments>
		<pubDate>Wed, 30 Nov 2011 05:00:28 +0000</pubDate>
		<dc:creator>likejazz</dc:creator>
				<category><![CDATA[unkategorized]]></category>

		<guid isPermaLink="false">http://www.likejazz.com/?p=3005</guid>
		<description><![CDATA[inotify는 파일 시스템 이벤트 통보 기능을 제공하는 리눅스 커널 서브 시스템 중 하나이다. John McCutchan이 개발했고 Robert Love(현재 구글 직원)와 Amy Griffis가 후에 함께 했다. 리눅스에서는 2.6.13 커널 부터 포함되었고  이 도구를 이용하면 모니터링 프로그램에서 하나의 파일 디스크립터를 열어서 하나 이상의 파일이나 디렉토리에서 지정된 이벤트가 발생하는지 감시할 수 있다. inotify는 몇 분마다 반복하여 파일 시스템을 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 0px; margin-bottom: 10px;">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.likejazz.com/archives/3005" data-text="inotify를 이용한 리눅스 파일 시스템 모니터 [IBM DW 11.11]" data-count="horizontal"  data-via="likejazz" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<p>inotify는 파일 시스템 이벤트 통보 기능을 제공하는 리눅스 커널 서브 시스템 중 하나이다. John McCutchan이 개발했고 Robert Love(현재 구글 직원)와 Amy Griffis가 후에 함께 했다.</p>
<p>리눅스에서는 2.6.13 커널 부터 포함되었고  이 도구를 이용하면 모니터링 프로그램에서 하나의 파일 디스크립터를 열어서 하나 이상의 파일이나 디렉토리에서 지정된 이벤트가 발생하는지 감시할 수 있다.</p>
<p>inotify는 몇 분마다 반복하여 파일 시스템을 스캐닝할 필요 없이 커널에 의해 직접 파일이 바뀌었음을 통보받는다. 따라서 매우 적은 CPU 성능만으로도 사용가능하다.</p>
<p>inotify가 있기 전에 dnotify가 있었으나 불편하고 제약이 많았다. 현재는 하위 호환성을 위해서만 존재하며 inotify로 대체되었다.</p>
<div class="codesnip-container" >
<div class="cpp codesnip" style="font-family:monospace;"><span class="kw4">struct</span> inotify_event<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw4">int</span> wd<span class="sy4">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* Watch descriptor. &nbsp;*/</span><br />
&nbsp; &nbsp; uint32_t mask<span class="sy4">;</span> &nbsp; &nbsp; &nbsp; &nbsp;<span class="coMULTI">/* Watch mask. &nbsp;*/</span><br />
&nbsp; &nbsp; uint32_t cookie<span class="sy4">;</span> &nbsp; &nbsp; &nbsp;<span class="coMULTI">/* Cookie to synchronize two events. &nbsp;*/</span><br />
&nbsp; &nbsp; uint32_t len<span class="sy4">;</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* Length (including NULs) of name. &nbsp;*/</span><br />
&nbsp; &nbsp; <span class="kw4">char</span> name __flexarr<span class="sy4">;</span> &nbsp;<span class="coMULTI">/* Name. &nbsp;*/</span><br />
<span class="br0">&#125;</span><span class="sy4">;</span></div>
</div>
<p>inotify의 이벤트 구조</p>
<p>감시할 수 있는 이벤트는 아래와 같다.</p>
<ul>
<li><tt>IN_ACCESS</tt> &#8211; 파일의 마지막 접근</li>
<li><tt>IN_MODIFY</tt> &#8211; 파일의 마지막 수정</li>
<li><tt>IN_ATTRIB</tt> &#8211; 파일 변경의 속성</li>
<li><tt>IN_OPEN</tt> 및 <tt>IN_CLOSE</tt> &#8211; 파일의 열기 혹은 닫기</li>
<li><tt>IN_MOVED_FROM</tt> 및 <tt>IN_MOVED_TO</tt> &#8211; 파일이 이동(move)되거나 이름이 바뀜(rename)</li>
<li><tt>IN_DELETE</tt> &#8211; 파일/디렉터리의 삭제</li>
<li><tt>IN_CREATE</tt> &#8211; 파일/디렉터리의 생성</li>
<li><tt>IN_DELETE_SELF</tt> &#8211; 모니터되는 파일 자체의 삭제</li>
</ul>
<p>inotify-test.c의 샘플 기본 루틴</p>
<div class="codesnip-container" >
<div class="cpp codesnip" style="font-family:monospace;"><span class="coMULTI">/* Signal handler that simply resets a flag to cause termination */</span><br />
<span class="kw4">void</span> signal_handler <span class="br0">&#40;</span><span class="kw4">int</span> signum<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; keep_running <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw4">int</span> main <span class="br0">&#40;</span><span class="kw4">int</span> argc, <span class="kw4">char</span> <span class="sy2">**</span>argv<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="coMULTI">/* This is the file descriptor for the inotify watch */</span><br />
&nbsp; <span class="kw4">int</span> inotify_fd<span class="sy4">;</span></p>
<p>&nbsp; keep_running <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span></p>
<p>&nbsp; <span class="coMULTI">/* Set a ctrl-c signal handler */</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw4">signal</span> <span class="br0">&#40;</span><span class="kw2">SIGINT</span>, signal_handler<span class="br0">&#41;</span> <span class="sy1">==</span> <span class="kw2">SIG_IGN</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="coMULTI">/* Reset to SIG_IGN (ignore) if that was the prior state */</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw4">signal</span> <span class="br0">&#40;</span><span class="kw2">SIGINT</span>, <span class="kw2">SIG_IGN</span><span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; <span class="coMULTI">/* First we open the inotify dev entry */</span><br />
&nbsp; inotify_fd <span class="sy1">=</span> open_inotify_fd <span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>inotify_fd <span class="sy3">&amp;</span>gt<span class="sy4">;</span> <span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; <span class="coMULTI">/* We will need a place to enqueue inotify events,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this is needed because if you do not read events<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fast enough, you will miss them. This queue is <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;probably too small if you are monitoring something<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;like a directory with a lot of files and the directory <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;is deleted.<br />
&nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; queue_t q<span class="sy4">;</span><br />
&nbsp; &nbsp; &nbsp; q <span class="sy1">=</span> queue_create <span class="br0">&#40;</span>128<span class="br0">&#41;</span><span class="sy4">;</span></p>
<p>&nbsp; &nbsp; &nbsp; <span class="coMULTI">/* This is the watch descriptor returned for each item we are <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;watching. A real application might keep these for some use <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;in the application. This sample only makes sure that none of<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;the watch descriptors is less than 0.<br />
&nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw4">int</span> wd<span class="sy4">;</span></p>
<p>&nbsp; &nbsp; &nbsp; <span class="coMULTI">/* Watch all events (IN_ALL_EVENTS) for the directories and <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;files passed in as arguments.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Read the article for why you might want to alter this for <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;more efficient inotify use in your app. &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw4">int</span> index<span class="sy4">;</span><br />
&nbsp; &nbsp; &nbsp; wd <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>index <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="br0">&#40;</span>index <span class="sy3">&amp;</span>lt<span class="sy4">;</span> argc<span class="br0">&#41;</span> <span class="sy3">&amp;</span>amp<span class="sy4">;</span><span class="sy3">&amp;</span>amp<span class="sy4">;</span> <span class="br0">&#40;</span>wd <span class="sy3">&amp;</span>gt<span class="sy4">;</span><span class="sy1">=</span> 0<span class="br0">&#41;</span><span class="sy4">;</span> index<span class="sy2">++</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wd <span class="sy1">=</span> watch_dir <span class="br0">&#40;</span>inotify_fd, argv<span class="br0">&#91;</span>index<span class="br0">&#93;</span>, IN_ALL_EVENTS<span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>wd <span class="sy3">&amp;</span>gt<span class="sy4">;</span> <span class="nu0">0</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* Wait for events and process them until a <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;termination condition is detected<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; process_inotify_events <span class="br0">&#40;</span>q, inotify_fd<span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es1">\n</span>Terminating<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span></p>
<p>&nbsp; &nbsp; &nbsp; <span class="coMULTI">/* Finish up by closing the fd, destroying the queue,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;and returning a proper code<br />
&nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; close_inotify_fd <span class="br0">&#40;</span>inotify_fd<span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; &nbsp; &nbsp; queue_destroy <span class="br0">&#40;</span>q<span class="br0">&#41;</span><span class="sy4">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<ul>
<li><a href="http://www.ibm.com/developerworks/kr/library/l-inotify/index.html">inotify를 이용한 Linux 파일 시스템 모니터</a></li>
</ul>
<p>* 이 글은 <a href="http://www.ibm.com/developerworks/kr/">IBM developerWorks</a> 후원으로 작성한 글입니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.likejazz.com/archives/3005/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

