<?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>A2 Devlog</title>
	<atom:link href="http://ani2life.com/wp/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://ani2life.com/wp</link>
	<description>당신이 있기 때문에 내가 있다 (I am because you are)</description>
	<lastBuildDate>Tue, 28 May 2013 02:51:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>블로그 호스팅 서버 변경으로 인한 댓글 분실</title>
		<link>http://ani2life.com/wp/?p=661</link>
		<comments>http://ani2life.com/wp/?p=661#comments</comments>
		<pubDate>Tue, 28 May 2013 02:51:27 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[기타]]></category>
		<category><![CDATA[백업]]></category>
		<category><![CDATA[호스팅]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=661</guid>
		<description><![CDATA[원래 000webhost.com 에서 무료로 블로그를 잘 운영하고 있었습니다. 그런데 갑자기 무료 사용량을 초과했다며 유료로 전환하라고 하는 겁니다. 트래픽이 많지도 않은 조용한 블로그인데 왜 초과되었는지 모르겠습니다. 그래서 백업받고 호스팅 변경하려고 했는데 유료 결재를 해야지만 비활성 계정이 풀려서 백업이 가능하더군요. OTL 할 수 없이 3월달에 백업 받은 데이터로 복구했습니다. 덕분에 최근 댓글들이 사라졌네요. ㅠㅠ]]></description>
				<content:encoded><![CDATA[<p>원래 000webhost.com 에서 무료로 블로그를 잘 운영하고 있었습니다.</p>
<p>그런데 갑자기 무료 사용량을 초과했다며 유료로 전환하라고 하는 겁니다.</p>
<p>트래픽이 많지도 않은 조용한 블로그인데 왜 초과되었는지 모르겠습니다.</p>
<p>그래서 백업받고 호스팅 변경하려고 했는데 유료 결재를 해야지만 비활성 계정이 풀려서 백업이 가능하더군요. OTL</p>
<p>할 수 없이 3월달에 백업 받은 데이터로 복구했습니다.</p>
<p>덕분에 최근 댓글들이 사라졌네요. ㅠㅠ</p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=661</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>git bad default revision &#8216;HEAD&#8217; 오류시 디렉토리 접근권한 확인</title>
		<link>http://ani2life.com/wp/?p=652</link>
		<comments>http://ani2life.com/wp/?p=652#comments</comments>
		<pubDate>Thu, 07 Feb 2013 13:06:36 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[리눅스/시스템]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[권한]]></category>
		<category><![CDATA[오류]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=652</guid>
		<description><![CDATA[git의 bare 저장소에서 git 명령어를 실행시 아래와 같은 오류가 출력되었습니다. git bad default revision &#8216;HEAD&#8217; 처음에는 저장소에 뭔가 문제가 있는 줄 알았는데 다른 사용자 계정으로는 문제가 없음을 알았습니다. 확인해보니 저장소/refs/heads/ 디렉토리의 하위 디렉토리에 읽기 권한이 없다는 것을 발견했습니다. 권한을 다시 설정하니 문제없이 동작했습니다. 하지만 다시 커밋을 하니까 디렉토리 권한이 바뀌었습니다. 알아보니 git 저장소의 디렉토리 권한에 [...]]]></description>
				<content:encoded><![CDATA[<p>git의 bare 저장소에서 git 명령어를 실행시 아래와 같은 오류가 출력되었습니다.</p>
<p style="padding-left: 30px;">git bad default revision &#8216;HEAD&#8217;</p>
<p>처음에는 저장소에 뭔가 문제가 있는 줄 알았는데 다른 사용자 계정으로는 문제가 없음을 알았습니다.</p>
<p>확인해보니 저장소/refs/heads/ 디렉토리의 하위 디렉토리에 읽기 권한이 없다는 것을 발견했습니다.</p>
<p>권한을 다시 설정하니 문제없이 동작했습니다.</p>
<p>하지만 다시 커밋을 하니까 디렉토리 권한이 바뀌었습니다.</p>
<p>알아보니 git 저장소의 디렉토리 권한에 대한 설정이 있었습니다.</p>
<p>아래와 같은 설정을 추가하면 다른 계정도 읽을 수 있도록 권한이 부여됩니다.</p>
<p style="padding-left: 30px;">$ git config core.sharedRepository all</p>
<p>주의할 점은 위의 방법을 적용해도 이미 만들어진 저장소의 디렉토리 권한은 유지되므로 한번은 권한을 직접 변경해야 합니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=652</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>레드마인(Redmine) 2.2.0 attachments_storage_path 문제</title>
		<link>http://ani2life.com/wp/?p=640</link>
		<comments>http://ani2life.com/wp/?p=640#comments</comments>
		<pubDate>Thu, 17 Jan 2013 13:31:25 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[리눅스/시스템]]></category>
		<category><![CDATA[attachment.rb]]></category>
		<category><![CDATA[attachments_storage_path]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[레드마인]]></category>
		<category><![CDATA[버그]]></category>
		<category><![CDATA[첨부파일]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=640</guid>
		<description><![CDATA[Ubuntu 12.04 + Ruby 1.8.7 + Rails 3.2 환경에서 Redmine 2.2.0 을 설치했습니다. 레드마인의 환경설정 파일인 configuration.yml 을 열어서 attachments_storage_path 에 첨부파일이 저장될 경로를 넣었습니다. attachments_storage_path: /첨부파일_저장_경로 그리고 레드마인을 재시작 했지만 attachments_storage_path 에 설정한 값이 적용되지 않았습니다. 레드마인 소스코드를 살펴보니 {Redmine}/app/models/attachment.rb 파일에서 attachments_storage_path 를 부르는 코드에 연산자 우선순위 관련한 버그가 있었습니다. # 원본 코드 @@storage_path [...]]]></description>
				<content:encoded><![CDATA[<p>Ubuntu 12.04 + Ruby 1.8.7 + Rails 3.2 환경에서 Redmine 2.2.0 을 설치했습니다.</p>
<p>레드마인의 환경설정 파일인 configuration.yml 을 열어서 attachments_storage_path 에 첨부파일이 저장될 경로를 넣었습니다.</p>
<p style="padding-left: 30px;">attachments_storage_path: /첨부파일_저장_경로</p>
<p>그리고 레드마인을 재시작 했지만 attachments_storage_path 에 설정한 값이 적용되지 않았습니다.</p>
<p>레드마인 소스코드를 살펴보니 {Redmine}/app/models/attachment.rb 파일에서 attachments_storage_path 를 부르는 코드에 연산자 우선순위 관련한 버그가 있었습니다.</p>
<p style="padding-left: 30px;"><strong># 원본 코드<br />
</strong>@@storage_path = Redmine::Configuration['attachments_storage_path'] || ENV['RAILS_VAR'] ? File.join(ENV['RAILS_VAR'], &#8220;files&#8221;) : File.join(Rails.root, &#8220;files&#8221;)</p>
<p style="padding-left: 30px;"><strong># 수정 코드<br />
</strong>@@storage_path = Redmine::Configuration['attachments_storage_path'] || <span style="color: #ff0000;">(</span>ENV['RAILS_VAR'] ? File.join(ENV['RAILS_VAR'], &#8220;files&#8221;) : File.join(Rails.root, &#8220;files&#8221;)<span style="color: #ff0000;">)</span></p>
<p>이렇게 괄호를 씌워주니까 정상적으로 동작했습니다.</p>
<p>아마 루비 버전의 차이로 위의 코드가 정상으로 돌아가는 루비 버전이 있을 것이라고 생각됩니다.</p>
<p>위와 같은 예상치 못한 버그가 발생하지 않도록 평소 코딩을 할 때 괄호로 잘 묶어주면 가독성도 좋고 버그도 예방할 수 있습니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=640</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>나이키 푸쉬업 그립 FE0168 구입</title>
		<link>http://ani2life.com/wp/?p=636</link>
		<comments>http://ani2life.com/wp/?p=636#comments</comments>
		<pubDate>Wed, 09 Jan 2013 20:39:12 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[생활]]></category>
		<category><![CDATA[FE0168]]></category>
		<category><![CDATA[Nike]]></category>
		<category><![CDATA[Push-Up]]></category>
		<category><![CDATA[나이키]]></category>
		<category><![CDATA[운동]]></category>
		<category><![CDATA[팔굽혀펴기]]></category>
		<category><![CDATA[푸쉬업바]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=636</guid>
		<description><![CDATA[작년에 이사를 하면서 기존에 다니던 헬스장을 이용이 어렵고 주변에 마땅한 헬스장이 없어서 집에서 운동을 하고 있습니다. 평벤치랑 원반교체 가능한 바벨로 그럭저럭 운동을 하고 있습니다. 등, 팔, 어깨 등은 가지고 있는 원판(1kg, 1.25kg, 1.5kg, 2.5kg, 3kg)을 조합하여 중량에 만족하고 있지만 가슴운동에 있어서는 많이 부족합니다. 그렇다고 집에 큰 중량의 원판을 구비하는건 부담됩니다. 그래서 자신의 몸무게를 이용한 푸쉬업(팔굽혀펴기)을 [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://ani2life.com/wp/wp-content/uploads/2013/01/nike_push-up_grips_FE0168.jpg"><img class="alignnone size-full wp-image-637" alt="nike_push-up_grips_FE0168" src="http://ani2life.com/wp/wp-content/uploads/2013/01/nike_push-up_grips_FE0168.jpg" width="500" height="667" /></a></p>
<p>작년에 이사를 하면서 기존에 다니던 헬스장을 이용이 어렵고 주변에 마땅한 헬스장이 없어서 집에서 운동을 하고 있습니다.<br />
평벤치랑 원반교체 가능한 바벨로 그럭저럭 운동을 하고 있습니다.</p>
<p>등, 팔, 어깨 등은 가지고 있는 원판(1kg, 1.25kg, 1.5kg, 2.5kg, 3kg)을 조합하여 중량에 만족하고 있지만 가슴운동에 있어서는 많이 부족합니다.<br />
그렇다고 집에 큰 중량의 원판을 구비하는건 부담됩니다.<br />
그래서 자신의 몸무게를 이용한 푸쉬업(팔굽혀펴기)을 주력으로 가슴운동을 하고 있습니다.</p>
<p>벤치에 다리를 올려놓고 푸쉬업을 하면 몸무게가 분산되더라도 수십kg의 중량을 얻을 수 있습니다.<br />
제 몸무게가 현재 약 62kg인데 벤치에 발을 올린 푸쉬업 자세에서 손바닥에 체중계를 놓고 확인해보니 약 44kg 정도 나왔습니다.<br />
중량을 더 늘리고 싶을때는 원판을 넣은 가방을 매고 푸쉬업을 하는 방법도 있지만 헬스장에서 처럼 80kg, 100kg 이런건 어렵죠.</p>
<p>이렇게 가슴운동으로 푸쉬업을 하는데 맨손으로 바닥에 하다보니 불편한 점이 있습니다.<br />
매 세트마다 손의 위치를 다시 잡아주는 것도 번거롭고 힘을 짜내다 보면 손이 밀려나서 위치가 변합니다.<br />
그래서 푸쉬업바를 구매했고 써보니 확실히 좋습니다.<br />
푸쉬업바가 바닥에 밀려나지 않고 고정되니 매 세트마다 같은 자세로 운동이 되고 맨손보다 힘을 짜내기가 좋습니다.<br />
그리고 바를 잡고 하니까 벤치 프레스 하는 것 같은 느낌도 듭니다.</p>
<p>운동은 자세가 중요한데 푸쉬업바를 이용하면 바른 자세를 유지하는데 도움이 됩니다.<br />
집에서 운동하시는 분들에게 정말 추천합니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=636</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>등산 초보의 등산용품 구입부터 눈덮힌 겨울 한라산 등반까지</title>
		<link>http://ani2life.com/wp/?p=632</link>
		<comments>http://ani2life.com/wp/?p=632#comments</comments>
		<pubDate>Fri, 04 Jan 2013 12:35:16 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[생활]]></category>
		<category><![CDATA[겨울]]></category>
		<category><![CDATA[고어텍스]]></category>
		<category><![CDATA[등반]]></category>
		<category><![CDATA[등산]]></category>
		<category><![CDATA[등산용품]]></category>
		<category><![CDATA[등산화]]></category>
		<category><![CDATA[산행]]></category>
		<category><![CDATA[아이젠]]></category>
		<category><![CDATA[여행]]></category>
		<category><![CDATA[제주도]]></category>
		<category><![CDATA[한라산]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=632</guid>
		<description><![CDATA[저는 평소 등산을 즐기지도 않았고 등산화 조차 없었습니다. 어쩌다 등산을 가게 되면 청바지에 운동화 신고 산을 올랐습니다. 그러다가 이번에 제주도 여행을 가면서 한라산 정상에 도전하기로 했습니다. 한겨울 눈덮힌 산을 아무런 준비없이 오른다는건 위험한 짓입니다. 그래서 처음으로 등산용품을 제대로 갖추기로 마음먹고 겨울 산행 정보를 조사했습니다. 등산용품 구입 1. 등산화 첫번째로 등산화부터 구입했습니다. 여기저기 매장을 둘러보며 기능과 [...]]]></description>
				<content:encoded><![CDATA[<p>저는 평소 등산을 즐기지도 않았고 등산화 조차 없었습니다.<br />
어쩌다 등산을 가게 되면 청바지에 운동화 신고 산을 올랐습니다.<br />
그러다가 이번에 제주도 여행을 가면서 한라산 정상에 도전하기로 했습니다.</p>
<p>한겨울 눈덮힌 산을 아무런 준비없이 오른다는건 위험한 짓입니다.<br />
그래서 처음으로 등산용품을 제대로 갖추기로 마음먹고 겨울 산행 정보를 조사했습니다.</p>
<h2>등산용품 구입</h2>
<h3>1. 등산화</h3>
<p>첫번째로 등산화부터 구입했습니다.<br />
여기저기 매장을 둘러보며 기능과 가격을 확인했습니다.<br />
상설 할인매장 같은 곳에서 라퓨마 고어텍스 등산화를 약 17만원에 구입했습니다.<br />
가격은 저렴해도 고어텍스 재질의 좋은 등산화였습니다.<br />
한라산을 오르내리는 동안 발에 땀도 안차고 시렵지도 않았습니다.</p>
<h3>2. 아이젠, 스패츠</h3>
<p>눈덮힌 산을 오르려면 아이젠과 스패츠는 필수 입니다.<br />
오픈마켓에서 코베아 짚신5라는 2만원대의 체인형 아이젠과 2만원대의 스패츠를 샀습니다.신발 전체에 씌워지는 체인형 아이젠은 미끄러짐을 꽉 잡아줬습니다.<br />
스패츠는 바지 밑단과 발목에 눈이 들어가지 않는 기능에 충실했습니다.<br />
좋은 스패츠는 고어텍스 재질도 있더군요.</p>
<h3>3. 등산바지</h3>
<p>등산바지는 브랜드도 알 수 없는 완전 싸구려 29,000원 짜리를 샀습니다.<br />
다리는 땀이 많이 나지 않는 부위로 등산바지 하나면 충분합니다.<br />
땀이 적게 난다고 하지만 그냥 보온만 되는 값싼 재질이라 바지 안쪽이 축축해지더군요.<br />
하지만 다리가 시렵거나 춥지는 않았습니다.<br />
싸구려 등산바지로도 충분했지만 고어텍스 재질의 바지가 탐나네요.</p>
<h3>4. 등산 외피, 내피</h3>
<p>처음에 저는 노스페이스 같은 두툼한 구스다운 입으면 될 줄 알았습니다.<br />
하지만 자료를 찾아보니 외피, 내피 따로 구입을 해야 한다는 것을 알았습니다.<br />
이건 정말 중요한 겁니다. 그냥 두툼한 옷 입고 갔다가는 땀에 젖고 떨다가 엄청 고생할 겁니다.</p>
<p>외피는 바람과 물기를 막아주고 내부의 습기는 방출하는 고어텍스와 같은 재질이 필수 입니다.<br />
내피는 얇은 구스다운으로 꽁꽁 접어서 휴대주머니 같은 곳에 넣을 수 있는 제품이 있습니다.<br />
저는 동네의 등산용품 매장(블랙야크, K2, 네파, 노스페이스)을 전부 몇번씩 돌아다녔습니다.<br />
가성비를 비교해본 결과 네파에서 모두 구입하였습니다.<br />
외피는 고어텍스와 같은 기능의 네파에서 개발한 엑스벤트(XVENT)를 사용한 것으로 45만원짜리 이월상품을 27만원에 구입했습니다.<br />
내피는 신상품이지만 세일해서 약 16만원에 구입했습니다.</p>
<h3>5. 등산 가방</h3>
<p>등산 가방도 네파에서 구입했습니다.<br />
20만원이상의 가방은 7만원 할인 해준다고 해서 40리터 짜리 가방을 약 13만원에 구입했습니다.<br />
그리고 등산양말 한켤레를 선물로 받았습니다. ^^</p>
<h2>필독! 겨울 등산 옷차림과 보조 용품</h2>
<p>하의는 등산 바지만 입으면 되는데 상의를 어떻게 해야할지 고민되었습니다.<br />
인터넷에서 찾은 정보로는 면재질은 절대 입지 말고 산을 오를때는 &#8216;쿨맥스티 + 외피&#8217;, 쉴때는 &#8216;쿨맥스티 + 내피 + 외피&#8217;라고 되어있었습니다.<br />
그런데 저는 &#8216;쿨맥스티 + 외피&#8217;만 입으면 엄청 추울 것 같아서 &#8216;쿨맥스티 + 러닝방풍자켓 + 외피&#8217;를 입었습니다.<br />
그 결과 첫번째 대피소에서 땀에 쩔고 후회하며 러닝방풍자켓을 가방에 넣었습니다. ㅠㅠ<br />
저는 이렇게 말하고 싶습니다. &#8220;비싼 등산복 외피를 믿자.&#8221;<br />
고어텍스 같은 기능의 외피는 정말 훌륭합니다. 진짜로 바람과 물을 차단하고 내부의 습기는 배출합니다.<br />
저는 쉬는 동안에도 내피는 한번도 입지 않고 &#8216;쿨맥스티 + 외피&#8217;로 등산을 마쳤습니다.<br />
그래도 오랫동안 쉬면 추울 수 있으므로 내피는 꼭 챙겨가세요.</p>
<p>장갑은 집에 있는 얇은 러닝 장갑과 보드 장갑을 챙겼습니다.<br />
올라갈때는 러닝 장갑만으로도 손시렵지 않았고 내려올때는 눈을 손으로 짚기도 해서 보드 장갑을 같이 꼈습니다.</p>
<p>귀마개, 버프, 모자도 챙겼는데 오르는 동안은 더워서 착용하지 않았습니다.</p>
<p>갈아입을 쿨맥스티와 양말도 챙겼는데 쓸 일이 없었습니다.</p>
<p>핫팩은 외피 주머니에 넣고 가다가 쉬는동안 손이 시렵거나 할때 유용하게 썼습니다.</p>
<h2>한라산 등반을 마치고</h2>
<p>한라산의 여러 코스중 정상에 갈 수 있으며 험하지 않은 성판악 코스를 이용했습니다.<br />
빠르지도 느리지도 않은 걸음으로 약 8시간이 걸렸습니다.<br />
안전하고 편리한 겨울 등산을 위해 제가 느낀 점은 아래와 같습니다.</p>
<ul>
<li>다른건 몰라도 등산화와 외피는 고어텍스 같은 재질의 좋은 것을 구입한다.</li>
<li>등산 용품은 많이 비싸므로 세일과 이월상품을 구입한다.</li>
<li>아이젠은 체인형이 확실히 좋다.</li>
<li>옷 두껍게 입어서 땀나면 축축하고 땀이 식을때 엄청 춥다. 오르다 추우면 더 껴입으면 되니까 비싼 외피를 믿고 가볍게 입자.</li>
<li>만일에 대비해서 가방에 핫팻, 갈아입을 옷, 뜨거운 물 담은 보온병 등을 챙겨가자.</li>
</ul>
<p>꼼꼼한 준비로 안전한 겨울등산 하세요~ ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=632</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3종 OS별 XULRunner 배포판을 만들면서</title>
		<link>http://ani2life.com/wp/?p=620</link>
		<comments>http://ani2life.com/wp/?p=620#comments</comments>
		<pubDate>Fri, 07 Dec 2012 07:27:01 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[개발]]></category>
		<category><![CDATA[MAC]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[XUL]]></category>
		<category><![CDATA[XULRunner]]></category>
		<category><![CDATA[리눅스]]></category>
		<category><![CDATA[리눅스/시스템]]></category>
		<category><![CDATA[맥]]></category>
		<category><![CDATA[운영체제]]></category>
		<category><![CDATA[윈도우]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=620</guid>
		<description><![CDATA[XUL로 개발한 프로그램을 리눅스, 맥, 윈도우 3종 OS별로 XULRunner를 포함시켜 배포판을 만들어봤습니다. 별것 아니지만 몰라서 고생했던 내용을 몇가지 적어보겠습니다. &#160; 맥 터미널에서 xulrunner 실행시 &#8216;Mozilla XULRunner &#60;Error&#62; &#8211; &#60;Error&#62;&#8217; 메시지가 출력되면 다른 버전의 xulrunner로 교체합니다. 6.0 버전이 안정된 버전이라고 합니다. 저는 6.0에서 정상적으로 실행했습니다. XULRunner와 직접적인 연관은 없는 내용인데 *.app 폴더의 아이콘을 변경해도 바뀌지 않는다면 [...]]]></description>
				<content:encoded><![CDATA[<p>XUL로 개발한 프로그램을 리눅스, 맥, 윈도우 3종 OS별로 XULRunner를 포함시켜 배포판을 만들어봤습니다.</p>
<p>별것 아니지만 몰라서 고생했던 내용을 몇가지 적어보겠습니다.</p>
<p>&nbsp;</p>
<h2>맥</h2>
<p>터미널에서 xulrunner 실행시 &#8216;Mozilla XULRunner &lt;Error&gt; &#8211; &lt;Error&gt;&#8217; 메시지가 출력되면 다른 버전의 xulrunner로 교체합니다.<br />
6.0 버전이 안정된 버전이라고 합니다. 저는 6.0에서 정상적으로 실행했습니다.</p>
<p>XULRunner와 직접적인 연관은 없는 내용인데 *.app 폴더의 아이콘을 변경해도 바뀌지 않는다면 .DS_store 파일을 지워봅니다.</p>
<p>터미널에서 실행시 키입력을 터미널이 가로채는 등의 문제가 있었습니다. 근본적인 해결방법은 찾지 못해서 터미널을 이용하지 않고 직접 실행시켰습니다. 이 경우 터미널에서 실행하는 것 처럼 -jsconsole 옵션으로 자바스크립트 콘솔창을 띄우지 못합니다. 그래서 스크립트로 직접 띄웠습니다.</p><pre class="crayon-plain-tag">function showErrorConsole() {
&nbsp;&nbsp;&nbsp; var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'];
&nbsp;&nbsp;&nbsp; var windowManagerInterface = windowManager.getService(Components.interfaces.nsIWindowMediator);
&nbsp;&nbsp;&nbsp; var errorConsoleWindow = windowManagerInterface.getMostRecentWindow(&quot;global:console&quot;);

&nbsp;&nbsp;&nbsp; if ( errorConsoleWindow ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorConsoleWindow.focus();
&nbsp;&nbsp;&nbsp; } else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.open(&quot;chrome://global/content/console.xul&quot;, &quot;_blank&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;chrome,extrachrome,menubar,resizable,scrollbars,status,toolbar&quot;);
&nbsp;&nbsp;&nbsp; }
}</pre><p>* 출처: <a href="http://aadima.com/xulrunner/xrdebug.html" target="_blank">http://aadima.com/xulrunner/xrdebug.html</a></p>
<p>&nbsp;</p>
<h2>윈도우</h2>
<p>XULRunner 실행 후 오류가 나서 아무런 윈도우가 뜨지 않았어도 프로세스가 종료되지 않고 동작을 하고 있을 가능성이 높습니다. 다시 실행하기전에 프로세스가 완전하게 종료되었는지 확인해야 합니다.</p>
<p>&nbsp;</p>
<h2>리눅스</h2>
<p>별다른 문제없이 쉽게 성공했습니다.</p>
<p>&nbsp;</p>
<h2>공통</h2>
<p>XULRunner 버전별로 XUL 프로그램 파일 구조가 다를 수 있습니다.</p>
<p>chrome.manifest 파일의 위치가 다르면 chrome.manifest 내의 경로도 달라집니다.</p>
<p style="padding-left: 30px;"><strong>chrome.manifest가 chrome 폴더랑 경로가 같다면</strong><br />
- content myapp chrome/content/</p>
<p style="padding-left: 30px;"><strong>chrome.manifest가 chrome 폴더내에 있다면</strong><br />
- content myapp content/</p>
<p>&nbsp;</p>
<p>XULRunner로 XUL 프로그램을 실행시 -jsconsole 옵션을 추가하면 디버깅 및 문제를 해결하는데 도움이 됩니다.</p>
<p style="padding-left: 30px;"><strong>$ xulrunner application.ini -jsconsole</strong></p>
<p>&nbsp;</p>
<p>-jsconsole 옵션을 추가하고 xulrunner를 실행하면 프로그램의 코드를 수정하고 재시작 하여도 캐쉬로 인해 수정하기 이전의 코드로 동작하는 문제가 있습니다.<br />
이때는 prefs.js 파일에 아래의 코드를 추가하여 캐쉬가 되지 않도록 하면 됩니다.</p>
<p style="padding-left: 30px;"><strong>pref(&#8220;nglayout.debug.disable_xul_cache&#8221;, true);</strong><br />
<strong>pref(&#8220;nglayout.debug.disable_xul_fastload&#8221;, true);</strong></p>
<p>&nbsp;</p>
<p>XUL이 제공하는 콘솔창에 메시지를 출력하는 방법</p><pre class="crayon-plain-tag">function jsdump(str) {
&nbsp;&nbsp;&nbsp; Components.classes['@mozilla.org/consoleservice;1']
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getService(Components.interfaces.nsIConsoleService)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .logStringMessage(str);
}</pre><p>* 참고: <a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIConsoleService?redirectlocale=en-US&amp;redirectslug=nsIConsoleService#Logging_a_simple_message" target="_blank">https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIConsoleService?redirectlocale=en-US&amp;redirectslug=nsIConsoleService#Logging_a_simple_message</a></p>
<p>&nbsp;</p>
<h2>기타 참고 자료</h2>
<ul>
<li>https://developer.mozilla.org/en-US/docs/XULRunner/Deploying_XULRunner_1.8</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=620</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XtraBackup을 이용한 MySQL 백업 및 복구</title>
		<link>http://ani2life.com/wp/?p=606</link>
		<comments>http://ani2life.com/wp/?p=606#comments</comments>
		<pubDate>Thu, 29 Nov 2012 04:57:35 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[리눅스/시스템]]></category>
		<category><![CDATA[ARCHIVE]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[Hot Backup]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[MyISAM]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[XtraBackup]]></category>
		<category><![CDATA[백업]]></category>
		<category><![CDATA[핫백업]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=606</guid>
		<description><![CDATA[mysql 백업시 보통은 mysqldump를 사용합니다. 하지만 데이터가 커질수록 mysqldump로 백업한 데이터는 복구에 걸리는 시간이 길어집니다. mysql 서버를 중단시키지 않고 InnoDB 엔진도 핫백업이 가능한 도구로 XtraBackup이라는 오픈소스 프로그램이 있습니다. 소개를 보면 mysql 상용 백업 프로그램인 InnoDB Hot Backup 보다 더 많은 기능을 제공합니다. XtraBackup은 기본적으로 InnoDB와 XtraDB의 백업을 지원하지만 같이 설치되는 innobackupex 스크립트를 통해서 MyISAM 방식도 [...]]]></description>
				<content:encoded><![CDATA[<p>mysql 백업시 보통은 mysqldump를 사용합니다. 하지만 데이터가 커질수록 mysqldump로 백업한 데이터는 복구에 걸리는 시간이 길어집니다.</p>
<p>mysql 서버를 중단시키지 않고 InnoDB 엔진도 핫백업이 가능한 도구로 <a href="http://www.percona.com/software/percona-xtrabackup" target="_blank">XtraBackup</a>이라는 오픈소스 프로그램이 있습니다. 소개를 보면 mysql 상용 백업 프로그램인 InnoDB Hot Backup 보다 더 많은 기능을 제공합니다.</p>
<p>XtraBackup은 기본적으로 InnoDB와 XtraDB의 백업을 지원하지만 같이 설치되는 innobackupex 스크립트를 통해서 MyISAM 방식도 백업이 가능합니다. 그리고 직접 해본 결과 ARCHIVE 방식의 DB도 백업되는 것을 확인했습니다.</p>
<p>개인적인 의견인데 이제 MySQL에서 꼭 MyISAM을 써야될 이유가 퇴색했기에 MyISAM을 돌리기 위해서 할당할 자원을 InnoDB에 최적화 시키는게 좋습니다.</p>
<p>XtraBackup은 증분백업도 지원하는데 InnoDB와 XtraDB만 지원합니다. 이런점 때문이라도 MyISAM 보다는 InnoDB를 쓰는게 좋습니다.</p>
<p>이 글에서는 제가 직접 테스트한 전체백업만 소개하겠습니다. 자세한 사용법은 <a href="http://www.percona.com/doc/percona-xtrabackup/?id=percona-xtrabackup:start" target="_blank">Percona Xtrabackup &#8211; Documentation</a>을 참고하시거나 구글링을 통해서 정보를 얻으실 수 있습니다.</p>
<p>XtraBackup의 설치는 데비안, 레드햇 계열 모두 저장소를 제공하고 있으므로 저장소만 추가하면 apt-get, yum으로 쉽게 설치하실 수 있습니다. 각 리눅스 패키지별 저장소 추가 및 설치도 구글링에 맡기겠습니다. ^^</p>
<p>설치가 끝났으면 아래의 명령으로 풀백업이 가능합니다.</p>
<p style="padding-left: 30px;"><strong>$ innobackupex /백업경로</strong></p>
<p>지정한 백업경로에 /백업경로/년-월-일_시-분-초/ 디렉토리가 생성되며 백업이 됩니다. 자동으로 디렉토리명이 백업시간으로 정해지니까 무척 편리합니다.</p>
<p>복구도 어렵지 않습니다.</p>
<p>먼저 mysql 서버를 중지시킵니다.<br />
mysql이 데이터를 기록하는 디렉토리를 옮겨놓습니다.(mysql 설정 파일 my.cnf의 datadir 참고)</p>
<p style="padding-left: 30px;"><strong>$ mv /var/lib/mysql /var/lib/mysql-old</strong></p>
<p>다시 빈 디렉토리를 만듭니다.</p>
<p style="padding-left: 30px;"><strong>$ mkdir /var/lib/mysql</strong></p>
<p>아래의 명령어로 복구를 시작합니다.</p>
<p style="padding-left: 30px;"><strong>$ innobackupex &#8211;copy-back /백업경로/년-월-일_시-분-초/</strong></p>
<p>저는 22GB의 파일을 복구하는데 10분 걸렸습니다.<br />
이걸 mysqldump로 백업한 sql로 복구했다면 수시간이 걸립니다.</p>
<p>복구된 mysql 디렉토리의 권한을 변경합니다.</p>
<p style="padding-left: 30px;"><strong>$ chown -R mysql. /var/lib/mysql</strong></p>
<p>마지막으로 mysql을 재시작 합니다.</p>
<p>참고자료: <a href="http://www.tekovic.com/mysql-hot-backup-with-xtrabackup-on-centos" target="_blank">http://www.tekovic.com/mysql-hot-backup-with-xtrabackup-on-centos</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=606</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XenServer에서 우분투 싱글모드 부팅</title>
		<link>http://ani2life.com/wp/?p=602</link>
		<comments>http://ani2life.com/wp/?p=602#comments</comments>
		<pubDate>Wed, 28 Nov 2012 08:33:35 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[리눅스/시스템]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[single]]></category>
		<category><![CDATA[XenCenter]]></category>
		<category><![CDATA[XenServer]]></category>
		<category><![CDATA[리눅스]]></category>
		<category><![CDATA[부팅]]></category>
		<category><![CDATA[싱글모드]]></category>
		<category><![CDATA[우분투]]></category>
		<category><![CDATA[젠서버]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=602</guid>
		<description><![CDATA[XenServer에 설치한 우분투의 root 패스워드를 초기화 하기 위해서 싱글모드 부팅을 하려고 했습니다. 몇번씩 재시작을 하며 부팅시 Shift키를 누르고 있어도 싱글모드 선택 메뉴가 나오지 않더군요. 결국은 한참을 구글링하여 알아냈습니다. XenCenter의 좌측 VM 목록에서 원하는 VM을 선택합니다. 우측의 VM General Properties 에서 Properties 버튼을 클릭합니다. 새로 뜬 창에서 Boot Options 항목을 선택합니다. OS boot parameters의 값을 &#8216;&#8211; [...]]]></description>
				<content:encoded><![CDATA[<p>XenServer에 설치한 우분투의 root 패스워드를 초기화 하기 위해서 싱글모드 부팅을 하려고 했습니다.</p>
<p>몇번씩 재시작을 하며 부팅시 Shift키를 누르고 있어도 싱글모드 선택 메뉴가 나오지 않더군요.</p>
<p>결국은 한참을 구글링하여 알아냈습니다.</p>
<ol>
<li>XenCenter의 좌측 VM 목록에서 원하는 VM을 선택합니다.</li>
<li>우측의 VM General Properties 에서 Properties 버튼을 클릭합니다.</li>
<li>새로 뜬 창에서 Boot Options 항목을 선택합니다.</li>
<li>OS boot parameters의 값을 &#8216;&#8211; quiet console=hvc0&#8242;에서 &#8216;single&#8217;로 바꿉니다.</li>
<li>VM을 재시작하면 root로 접속이 됩니다.</li>
<li>passwd 명령으로 비밀번호를 바꿉니다.</li>
<li>OS boot parameters의 값을 다시 원래대로 &#8216;&#8211; quiet console=hvc0&#8242;로 바꿉니다.</li>
<li>재부팅 완료</li>
</ol>
<p><a href="http://ani2life.com/wp/wp-content/uploads/2012/11/zencenter_boot_options.png"><img class="alignnone  wp-image-603" title="zencenter_boot_options" src="http://ani2life.com/wp/wp-content/uploads/2012/11/zencenter_boot_options.png" alt="" width="674" height="345" /></a></p>
<p>&nbsp;</p>
<p>참고자료: <a href="http://www.kevintaber.com/2012/08/01/reset-ubuntu-root-password-in-xenserver/" target="_blank">http://www.kevintaber.com/2012/08/01/reset-ubuntu-root-password-in-xenserver/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=602</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>맥에서 아이폰 개인용 핫스팟 USB 테더링 문제</title>
		<link>http://ani2life.com/wp/?p=593</link>
		<comments>http://ani2life.com/wp/?p=593#comments</comments>
		<pubDate>Fri, 26 Oct 2012 05:13:57 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[MAC]]></category>
		<category><![CDATA[USB]]></category>
		<category><![CDATA[맥]]></category>
		<category><![CDATA[맥북]]></category>
		<category><![CDATA[아이튠즈]]></category>
		<category><![CDATA[아이폰]]></category>
		<category><![CDATA[인터넷]]></category>
		<category><![CDATA[테더링]]></category>
		<category><![CDATA[핫스팟]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=593</guid>
		<description><![CDATA[이전부터 맥에서 아이폰으로 개인용 핫스팟 USB 테더링을 잘쓰고 있었습니다. 그런데 언제부터인가 아이폰을 연결해도 네트워크에서 &#8216;연결 안됨&#8217;으로 표시 되었습니다. 하지만 아이튠즈에서는 아이폰이 연결된 것으로 표시되었습니다. 저에게 문제가 일어난 정확한 시점은 모르겠지만 검색결과 아이튠즈 1.7 업데이트와 연관된 것으로 보입니다. 다행히 해결법을 찾았습니다. 아래 2개의 링크에서 파일을 각각 받아서 압축을 풉니다. http://www.mediafire.com/file/44rgtt5k6ot0t72/AppleUSBEthernetHost.kext.zip http://cvad-mac.narod2.ru/Kext_Utility AppleUSBEthernetHost.kext 파일을 마우스로 잡아서 Kext [...]]]></description>
				<content:encoded><![CDATA[<p>이전부터 맥에서 아이폰으로 개인용 핫스팟 USB 테더링을 잘쓰고 있었습니다.</p>
<p>그런데 언제부터인가 아이폰을 연결해도 네트워크에서 &#8216;연결 안됨&#8217;으로 표시 되었습니다.</p>
<p><a href="http://ani2life.com/wp/wp-content/uploads/2012/10/iphone_연결안됨.png"><img class="alignnone size-full wp-image-594" title="iphone_연결안됨" src="http://ani2life.com/wp/wp-content/uploads/2012/10/iphone_연결안됨.png" alt="" width="589" height="107" /></a></p>
<p>하지만 아이튠즈에서는 아이폰이 연결된 것으로 표시되었습니다.<br />
저에게 문제가 일어난 정확한 시점은 모르겠지만 검색결과 아이튠즈 1.7 업데이트와 연관된 것으로 보입니다.</p>
<p>다행히 해결법을 찾았습니다.<br />
아래 2개의 링크에서 파일을 각각 받아서 압축을 풉니다.</p>
<ol>
<li><a href="http://www.mediafire.com/file/44rgtt5k6ot0t72/AppleUSBEthernetHost.kext.zip">http://www.mediafire.com/file/44rgtt5k6ot0t72/AppleUSBEthernetHost.kext.zip</a></li>
<li><a href="http://cvad-mac.narod2.ru/Kext_Utility">http://cvad-mac.narod2.ru/Kext_Utility</a></li>
</ol>
<p>AppleUSBEthernetHost.kext 파일을 마우스로 잡아서 Kext Utility.app 에 떨어뜨립니다.<br />
그러면 Kext Utility 프로그램이 실행되면서 어떠한 처리가 진행됩니다.<br />
처리가 끝나면 이제 아이폰을 연결하고 개인용 핫스팟을 켜고 USB 연결을 시도하시면 됩니다.</p>
<p>* 출처 &#8211; <a href="https://discussions.apple.com/thread/4386838" target="_blank">https://discussions.apple.com/thread/4386838</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=593</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>파이어폭스 16의 새기능 개발자 도구 모음</title>
		<link>http://ani2life.com/wp/?p=585</link>
		<comments>http://ani2life.com/wp/?p=585#comments</comments>
		<pubDate>Wed, 10 Oct 2012 04:55:28 +0000</pubDate>
		<dc:creator>A2</dc:creator>
				<category><![CDATA[웹]]></category>
		<category><![CDATA[Firefox 16]]></category>
		<category><![CDATA[개발자 도구 모음]]></category>
		<category><![CDATA[불여우]]></category>
		<category><![CDATA[파이어폭스 16]]></category>
		<category><![CDATA[파폭]]></category>

		<guid isPermaLink="false">http://ani2life.com/wp/?p=585</guid>
		<description><![CDATA[파이어폭스 16에 새로운 기능이 추가되었습니다. 메뉴의 도구 -&#62; 웹 개발 도구 -&#62; 개발자 도구 모음 을 선택합니다. 브라우저 하단에 명령창과 웹 콘솔, 문서 검사, 스크립트 디버거가 나타납니다. 명령창에 help 를 입력하면 위와 같이 사용 가능한 명령들이 나타납니다. &#160; 위 스크린샷은 help screenshot 을 입력한 모습 입니다. 재밌어 보이는 이 기능은 알고보면 엄청 좋은 기능 입니다. [...]]]></description>
				<content:encoded><![CDATA[<p>파이어폭스 16에 새로운 기능이 추가되었습니다.</p>
<p>메뉴의 <strong>도구 -&gt; 웹 개발 도구 -&gt; 개발자 도구 모음</strong> 을 선택합니다.<br />
브라우저 하단에 명령창과 웹 콘솔, 문서 검사, 스크립트 디버거가 나타납니다.</p>
<p><a href="http://ani2life.com/wp/wp-content/uploads/2012/10/개발자_도구모음.png"><img class="alignnone size-full wp-image-586" title="개발자_도구모음" src="http://ani2life.com/wp/wp-content/uploads/2012/10/개발자_도구모음.png" alt="" width="512" height="482" /></a></p>
<p>명령창에 <strong>help</strong> 를 입력하면 위와 같이 사용 가능한 명령들이 나타납니다.</p>
<p>&nbsp;</p>
<p><a href="http://ani2life.com/wp/wp-content/uploads/2012/10/help_screenshot.png"><img class="alignnone size-full wp-image-587" title="help_screenshot" src="http://ani2life.com/wp/wp-content/uploads/2012/10/help_screenshot.png" alt="" width="463" height="288" /></a></p>
<p>위 스크린샷은 <strong>help screenshot</strong> 을 입력한 모습 입니다.</p>
<p>재밌어 보이는 이 기능은 알고보면 엄청 좋은 기능 입니다.<br />
여러분들이 개발하는 과정에서 여러번 반복해야 하는 일을 명령어 복사/붙여넣기로 반복 수행 할 수 있습니다.</p>
<p>예로 특정 쿠키를 지우고 싶다면 아래의 명령어로 지울 수 있습니다.</p>
<p><strong>&gt;&gt; cookie remove KEY</strong></p>
<p>그런데 아직 버그가 있는지 쿠키가 지워지지는 않더군요.<br />
앞으로 이 기능이 발전하면 명령어로 파이어폭스를 다양하게 제어할 수 있을 것 입니다.</p>
<p>* 파이어폭스 16 릴리즈 노트: <a href="https://www.mozilla.org/en-US/firefox/16.0/releasenotes/" target="_blank">https://www.mozilla.org/en-US/firefox/16.0/releasenotes/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ani2life.com/wp/?feed=rss2&#038;p=585</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
