<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.2" -->
<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/"
	>

<channel>
	<title>Call-151</title>
	<link>http://hanjava.net/call-151</link>
	<description>Lost in development</description>
	<pubDate>Thu, 05 Aug 2010 16:07:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>
	<language>en</language>
			<item>
		<title>test scope의 cyclic dependency</title>
		<link>http://hanjava.net/call-151/2010/08/06/test-scope%ec%9d%98-cyclic-dependency/</link>
		<comments>http://hanjava.net/call-151/2010/08/06/test-scope%ec%9d%98-cyclic-dependency/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 16:07:19 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>5분자바</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/08/06/test-scope%ec%9d%98-cyclic-dependency/</guid>
		<description><![CDATA[calculation-engine project는 test scope에서 calculation-swing를 사용한다.
calculation-swing은 당연히 calculation-engine을 사용한다(default==compile scope).
scope가 다르기 때문에 이게 cyclic이 되는지 헷깔렸는데&#8230; 역시 구글형님은 다 알더라.
tricky cyclic dependency issue &#8230;
컴파일은 project 별로 main과 test code를 한꺼번에 진행하기 때문에 cycle이 발생한다.
calculation-swing을 컴파일 하려면 calculation-engine 프로젝트가 빌드되어야 하고
calculation-engine은 빌드 과정에 test 수행을 위해 test scope의 calculation-swing이 빌드되어야 한다.
무한 반복&#8230;


]]></description>
			<content:encoded><![CDATA[<p>calculation-engine project는 test scope에서 calculation-swing를 사용한다.<br />
calculation-swing은 당연히 calculation-engine을 사용한다(default==compile scope).</p>
<p>scope가 다르기 때문에 이게 cyclic이 되는지 헷깔렸는데&#8230; 역시 구글형님은 다 알더라.<br />
<a href="http://maven.40175.n5.nabble.com/tricky-cyclic-dependency-issue-td117372.html">tricky cyclic dependency issue &#8230;</a></p>
<p>컴파일은 project 별로 main과 test code를 한꺼번에 진행하기 때문에 cycle이 발생한다.</p>
<p>calculation-swing을 컴파일 하려면 calculation-engine 프로젝트가 빌드되어야 하고<br />
calculation-engine은 빌드 과정에 test 수행을 위해 test scope의 calculation-swing이 빌드되어야 한다.<br />
무한 반복&#8230;</p>
<p><img src="http://pds16.egloos.com/pds/200911/25/86/d0008286_4b0d32082baf9.jpg"/>
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/08/06/test-scope%ec%9d%98-cyclic-dependency/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/08/06/test-scope%ec%9d%98-cyclic-dependency/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>APK에 들어있는 AndroidManifest.xml 보는 법</title>
		<link>http://hanjava.net/call-151/2010/08/05/apk%ec%97%90-%eb%93%a4%ec%96%b4%ec%9e%88%eb%8a%94-androidmanifestxml-%eb%b3%b4%eb%8a%94-%eb%b2%95/</link>
		<comments>http://hanjava.net/call-151/2010/08/05/apk%ec%97%90-%eb%93%a4%ec%96%b4%ec%9e%88%eb%8a%94-androidmanifestxml-%eb%b3%b4%eb%8a%94-%eb%b2%95/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 07:41:58 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>android</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/08/05/apk%ec%97%90-%eb%93%a4%ec%96%b4%ec%9e%88%eb%8a%94-androidmanifestxml-%eb%b3%b4%eb%8a%94-%eb%b2%95/</guid>
		<description><![CDATA[이건 뭐 팁도 아니고 그냥 메뉴얼에 나와있는 내용(그럼에도 자꾸 물으시는 분들이 있으셔서)
APK에 들어이쓴 xml file들은 binary encoding되어있어 그냥은 보기 어려운데
SDK에 들어있는 aapt로 볼 수 있다.

$/usr/local/android-sdk/platforms/android-8/tools/aapt dump xmltree com.amazon.kindle.apk AndroidManifest.xml
하면 요렇게 나온다.
N: android=http://schemas.android.com/apk/res/android
  E: manifest (line=2)
    A: android:sharedUserId(0&#215;0101000b)=&#8221;com.amazon&#8221; (Raw: &#8220;com.amazon&#8221;)
    A: android:versionCode(0&#215;0101021b)=(type 0&#215;10)0&#215;64
    A: android:versionName(0&#215;0101021c)=&#8221;1.0.0.76480048&#8243; (Raw: [...]]]></description>
			<content:encoded><![CDATA[<p>이건 뭐 팁도 아니고 그냥 메뉴얼에 나와있는 내용(그럼에도 자꾸 물으시는 분들이 있으셔서)<br />
APK에 들어이쓴 xml file들은 binary encoding되어있어 그냥은 보기 어려운데<br />
SDK에 들어있는 aapt로 볼 수 있다.<br />
<code><br />
$/usr/local/android-sdk/platforms/android-8/tools/aapt dump xmltree com.amazon.kindle.apk AndroidManifest.xml</code><br />
하면 요렇게 나온다.</p>
<p><code>N: android=http://schemas.android.com/apk/res/android<br />
  E: manifest (line=2)<br />
    A: android:sharedUserId(0&#215;0101000b)=&#8221;com.amazon&#8221; (Raw: &#8220;com.amazon&#8221;)<br />
    A: android:versionCode(0&#215;0101021b)=(type 0&#215;10)0&#215;64<br />
    A: android:versionName(0&#215;0101021c)=&#8221;1.0.0.76480048&#8243; (Raw: &#8220;1.0.0.76480048&#8243;)<br />
    A: package=&#8221;com.amazon.kindle&#8221; (Raw: &#8220;com.amazon.kindle&#8221;)<br />
    E: application (line=8)<br />
      A: android:label(0&#215;01010001)=@0&#215;7f0a0000<br />
      A: android:icon(0&#215;01010002)=@0&#215;7f02003f<br />
      A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.application.ReddingApplication&#8221; (Raw: &#8220;com.amazon.kcp.application.ReddingApplication&#8221;)<br />
      A: android:enabled(0&#215;0101000e)=(type 0&#215;12)0xffffffff<br />
      A: android:debuggable(0&#215;0101000f)=(type 0&#215;12)0&#215;0<br />
      E: activity (line=14)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b0000<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.library.HomeActivity&#8221; (Raw: &#8220;com.amazon.kcp.library.HomeActivity&#8221;)<br />
        E: meta-data (line=17)<br />
          A: android:name(0&#215;01010003)=&#8221;android.app.default_searchable&#8221; (Raw: &#8220;android.app.default_searchable&#8221;)<br />
          A: android:value(0&#215;01010024)=&#8221;com.amazon.kcp.search.SearchActivity&#8221; (Raw: &#8220;com.amazon.kcp.search.SearchActivity&#8221;)<br />
      E: activity (line=22)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b0000<br />
        A: android:label(0&#215;01010001)=@0&#215;7f0a0087<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.library.ArchivedItemsActivity&#8221; (Raw: &#8220;com.amazon.kcp.library.ArchivedItemsActivity&#8221;)<br />
        E: meta-data (line=26)<br />
          A: android:name(0&#215;01010003)=&#8221;android.app.default_searchable&#8221; (Raw: &#8220;android.app.default_searchable&#8221;)<br />
          A: android:value(0&#215;01010024)=&#8221;com.amazon.kcp.search.SearchActivity&#8221; (Raw: &#8220;com.amazon.kcp.search.SearchActivity&#8221;)<br />
      E: activity (line=31)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b0003<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.library.TransientActivity&#8221; (Raw: &#8220;com.amazon.kcp.library.TransientActivity&#8221;)<br />
        E: meta-data (line=34)<br />
          A: android:name(0&#215;01010003)=&#8221;android.app.default_searchable&#8221; (Raw: &#8220;android.app.default_searchable&#8221;)<br />
          A: android:value(0&#215;01010024)=&#8221;com.amazon.kcp.search.SearchActivity&#8221; (Raw: &#8220;com.amazon.kcp.search.SearchActivity&#8221;)<br />
      E: activity (line=42)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b0003<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.reader.ReaderActivity&#8221; (Raw: &#8220;com.amazon.kcp.reader.ReaderActivity&#8221;)<br />
        A: android:launchMode(0&#215;0101001d)=(type 0&#215;10)0&#215;2<br />
        A: android:configChanges(0&#215;0101001f)=(type 0&#215;11)0xa0<br />
      E: activity (line=48)<br />
        A: android:label(0&#215;01010001)=@0&#215;7f0a0066<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.reader.NotesActivity&#8221; (Raw: &#8220;com.amazon.kcp.reader.NotesActivity&#8221;)<br />
      E: activity (line=51)<br />
        A: android:label(0&#215;01010001)=@0&#215;7f0a003f<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.info.InfoActivity&#8221; (Raw: &#8220;com.amazon.kcp.info.InfoActivity&#8221;)<br />
        E: meta-data (line=54)<br />
          A: android:name(0&#215;01010003)=&#8221;android.app.default_searchable&#8221; (Raw: &#8220;android.app.default_searchable&#8221;)<br />
          A: android:value(0&#215;01010024)=&#8221;com.amazon.kcp.search.SearchActivity&#8221; (Raw: &#8220;com.amazon.kcp.search.SearchActivity&#8221;)<br />
      E: activity (line=59)<br />
        A: android:label(0&#215;01010001)=@0&#215;7f0a004e<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.info.AboutActivity&#8221; (Raw: &#8220;com.amazon.kcp.info.AboutActivity&#8221;)<br />
        E: meta-data (line=62)<br />
          A: android:name(0&#215;01010003)=&#8221;android.app.default_searchable&#8221; (Raw: &#8220;android.app.default_searchable&#8221;)<br />
          A: android:value(0&#215;01010024)=&#8221;com.amazon.kcp.search.SearchActivity&#8221; (Raw: &#8220;com.amazon.kcp.search.SearchActivity&#8221;)<br />
      E: activity (line=67)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b000b<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.web.WebActivity&#8221; (Raw: &#8220;com.amazon.kcp.web.WebActivity&#8221;)<br />
        A: android:configChanges(0&#215;0101001f)=(type 0&#215;11)0xa0<br />
      E: activity (line=73)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b0002<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.redding.AlertActivity&#8221; (Raw: &#8220;com.amazon.kcp.redding.AlertActivity&#8221;)<br />
      E: activity (line=77)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b0000<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.welcome.WelcomeActivity&#8221; (Raw: &#8220;com.amazon.kcp.welcome.WelcomeActivity&#8221;)<br />
      E: activity (line=81)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b0001<br />
        A: android:label(0&#215;01010001)=@0&#215;7f0a0000<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.search.SearchActivity&#8221; (Raw: &#8220;com.amazon.kcp.search.SearchActivity&#8221;)<br />
        A: android:launchMode(0&#215;0101001d)=(type 0&#215;10)0&#215;1<br />
        E: intent-filter (line=86)<br />
          E: action (line=87)<br />
            A: android:name(0&#215;01010003)=&#8221;android.intent.action.SEARCH&#8221; (Raw: &#8220;android.intent.action.SEARCH&#8221;)<br />
          E: category (line=88)<br />
            A: android:name(0&#215;01010003)=&#8221;android.intent.category.DEFAULT&#8221; (Raw: &#8220;android.intent.category.DEFAULT&#8221;)<br />
        E: meta-data (line=90)<br />
          A: android:name(0&#215;01010003)=&#8221;android.app.searchable&#8221; (Raw: &#8220;android.app.searchable&#8221;)<br />
          A: android:resource(0&#215;01010025)=@0&#215;7f050000<br />
      E: provider (line=94)<br />
        A: android:name(0&#215;01010003)=&#8221;com.amazon.kcp.search.SearchProvider&#8221; (Raw: &#8220;com.amazon.kcp.search.SearchProvider&#8221;)<br />
        A: android:authorities(0&#215;01010018)=&#8221;kindle&#8221; (Raw: &#8220;kindle&#8221;)<br />
        A: android:syncable(0&#215;01010019)=(type 0&#215;12)0&#215;0<br />
      E: activity (line=99)<br />
        A: android:theme(0&#215;01010000)=@0&#215;7f0b0004<br />
        A: android:name(0&#215;01010003)=&#8221;.UpgradePage&#8221; (Raw: &#8220;.UpgradePage&#8221;)<br />
        A: android:screenOrientation(0&#215;0101001e)=(type 0&#215;10)0&#215;1<br />
        E: intent-filter (line=104)<br />
          E: action (line=105)<br />
            A: android:name(0&#215;01010003)=&#8221;android.intent.action.MAIN&#8221; (Raw: &#8220;android.intent.action.MAIN&#8221;)<br />
          E: category (line=106)<br />
            A: android:name(0&#215;01010003)=&#8221;android.intent.category.LAUNCHER&#8221; (Raw: &#8220;android.intent.category.LAUNCHER&#8221;)<br />
        E: intent-filter (line=109)<br />
          E: action (line=110)<br />
            A: android:name(0&#215;01010003)=&#8221;android.intent.action.VIEW&#8221; (Raw: &#8220;android.intent.action.VIEW&#8221;)<br />
          E: category (line=111)<br />
            A: android:name(0&#215;01010003)=&#8221;android.intent.category.DEFAULT&#8221; (Raw: &#8220;android.intent.category.DEFAULT&#8221;)<br />
          E: category (line=112)<br />
            A: android:name(0&#215;01010003)=&#8221;android.intent.category.BROWSABLE&#8221; (Raw: &#8220;android.intent.category.BROWSABLE&#8221;)<br />
          E: data (line=113)<br />
            A: android:scheme(0&#215;01010027)=&#8221;kindle&#8221; (Raw: &#8220;kindle&#8221;)<br />
    E: uses-sdk (line=119)<br />
      A: android:minSdkVersion(0&#215;0101020c)=(type 0&#215;10)0&#215;4<br />
    E: uses-permission (line=121)<br />
      A: android:name(0&#215;01010003)=&#8221;android.permission.INTERNET&#8221; (Raw: &#8220;android.permission.INTERNET&#8221;)<br />
    E: uses-permission (line=122)<br />
      A: android:name(0&#215;01010003)=&#8221;android.permission.READ_PHONE_STATE&#8221; (Raw: &#8220;android.permission.READ_PHONE_STATE&#8221;)<br />
    E: uses-permission (line=123)<br />
      A: android:name(0&#215;01010003)=&#8221;android.permission.WRITE_EXTERNAL_STORAGE&#8221; (Raw: &#8220;android.permission.WRITE_EXTERNAL_STORAGE&#8221;)<br />
    E: uses-permission (line=124)<br />
      A: android:name(0&#215;01010003)=&#8221;android.permission.ACCESS_WIFI_STATE&#8221; (Raw: &#8220;android.permission.ACCESS_WIFI_STATE&#8221;)<br />
</code>
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/08/05/apk%ec%97%90-%eb%93%a4%ec%96%b4%ec%9e%88%eb%8a%94-androidmanifestxml-%eb%b3%b4%eb%8a%94-%eb%b2%95/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/08/05/apk%ec%97%90-%eb%93%a4%ec%96%b4%ec%9e%88%eb%8a%94-androidmanifestxml-%eb%b3%b4%eb%8a%94-%eb%b2%95/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>안드로이드의 사생활 침해 위험성(데모)</title>
		<link>http://hanjava.net/call-151/2010/07/14/%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%9d%98-%ec%82%ac%ec%83%9d%ed%99%9c-%ec%b9%a8%ed%95%b4-%ec%9c%84%ed%97%98%ec%84%b1%eb%8d%b0%eb%aa%a8/</link>
		<comments>http://hanjava.net/call-151/2010/07/14/%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%9d%98-%ec%82%ac%ec%83%9d%ed%99%9c-%ec%b9%a8%ed%95%b4-%ec%9c%84%ed%97%98%ec%84%b1%eb%8d%b0%eb%aa%a8/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 17:26:50 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>android</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/07/14/%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%9d%98-%ec%82%ac%ec%83%9d%ed%99%9c-%ec%b9%a8%ed%95%b4-%ec%9c%84%ed%97%98%ec%84%b1%eb%8d%b0%eb%aa%a8/</guid>
		<description><![CDATA[안드로이드로 먹고 살고 있고 그 자유스러움을 사랑하지만
사랑스러우면 위험한 법.
아래의 동영상은 투명한 Activity(잘 모르면 애플리케이션의 윈도우라고 봐도 무리 없다)로 사진 찍는 앱을 제작한 것이다.




영상을 보면 벅스음악을 듣고 있는듯 하지만(실제로도 틀면 나온다. 벅스 최고!!) 실제로는 그 위에 투명한 앱이 떠있는 것이고 화면을 터치하면 preview없이 사진을 찍어 파일로 저장한다.
여기서는 &#8216;태연&#8217;님이 찍혔지만 지하철에서는 내 못생긴 엉덩이가 찍힐 수도 있다.
찰칵음이 [...]]]></description>
			<content:encoded><![CDATA[<p>안드로이드로 먹고 살고 있고 그 자유스러움을 사랑하지만<br />
사랑스러우면 위험한 법.</p>
<p>아래의 동영상은 투명한 Activity(잘 모르면 애플리케이션의 윈도우라고 봐도 무리 없다)로 사진 찍는 앱을 제작한 것이다.</p>
<p><object width="480" height="385"><br />
<param name="movie" value="http://www.youtube.com/v/_O1Qhw9dCTE&amp;hl=en_US&amp;fs=1?rel=0"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_O1Qhw9dCTE&amp;hl=en_US&amp;fs=1?rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>영상을 보면 벅스음악을 듣고 있는듯 하지만(실제로도 틀면 나온다. 벅스 최고!!) 실제로는 그 위에 투명한 앱이 떠있는 것이고 화면을 터치하면 preview없이 사진을 찍어 파일로 저장한다.<br />
여기서는 &#8216;태연&#8217;님이 찍혔지만 지하철에서는 내 못생긴 엉덩이가 찍힐 수도 있다.</p>
<p>찰칵음이 나는데 이거 없애는 것도 별 문제 아니다(그런 앱이 있는걸 보니). 그리고 난다고 들리겠는가?
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/07/14/%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%9d%98-%ec%82%ac%ec%83%9d%ed%99%9c-%ec%b9%a8%ed%95%b4-%ec%9c%84%ed%97%98%ec%84%b1%eb%8d%b0%eb%aa%a8/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/07/14/%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%9d%98-%ec%82%ac%ec%83%9d%ed%99%9c-%ec%b9%a8%ed%95%b4-%ec%9c%84%ed%97%98%ec%84%b1%eb%8d%b0%eb%aa%a8/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>나이아가라 폭포에 다녀왔습니다</title>
		<link>http://hanjava.net/call-151/2010/07/12/%eb%82%98%ec%9d%b4%ec%95%84%ea%b0%80%eb%9d%bc-%ed%8f%ad%ed%8f%ac%ec%97%90-%eb%8b%a4%eb%85%80%ec%99%94%ec%8a%b5%eb%8b%88%eb%8b%a4/</link>
		<comments>http://hanjava.net/call-151/2010/07/12/%eb%82%98%ec%9d%b4%ec%95%84%ea%b0%80%eb%9d%bc-%ed%8f%ad%ed%8f%ac%ec%97%90-%eb%8b%a4%eb%85%80%ec%99%94%ec%8a%b5%eb%8b%88%eb%8b%a4/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 15:16:41 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>여행</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/07/12/%eb%82%98%ec%9d%b4%ec%95%84%ea%b0%80%eb%9d%bc-%ed%8f%ad%ed%8f%ac%ec%97%90-%eb%8b%a4%eb%85%80%ec%99%94%ec%8a%b5%eb%8b%88%eb%8b%a4/</guid>
		<description><![CDATA[캐나다 토론토 근방에 초단기 출장을 갔다가
돌아오는날 오후에 나이아가라 폭포에 다녀왔습니다.
사실은 도착해서도 출장지가 토론토라고 굳게 믿고있었고 (알고보니 근처 Burlington이란 곳이더군요)
나이아가라 폭포가 근방에 있다는 사실도 몰랐습니다.
역시 장관이더군요. 무지개 구경도 원없이 했습니다.






]]></description>
			<content:encoded><![CDATA[<p>캐나다 토론토 근방에 초단기 출장을 갔다가<br />
돌아오는날 오후에 나이아가라 폭포에 다녀왔습니다.<br />
사실은 도착해서도 출장지가 토론토라고 굳게 믿고있었고 (알고보니 근처 Burlington이란 곳이더군요)<br />
나이아가라 폭포가 근방에 있다는 사실도 몰랐습니다.<br />
역시 장관이더군요. 무지개 구경도 원없이 했습니다.</p>
<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&#038;captions=1&#038;hl=ko&#038;feat=flashalbum&#038;RGB=0x000000&#038;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fbehumble%2Falbumid%2F5492661824425662913%3Falt%3Drss%26kind%3Dphoto%26hl%3Dko" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>
<p><object width="480" height="385"><br />
<param name="movie" value="http://www.youtube.com/v/GPHn-z32Y8w&amp;hl=en_US&amp;fs=1?rel=0"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/GPHn-z32Y8w&amp;hl=en_US&amp;fs=1?rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/07/12/%eb%82%98%ec%9d%b4%ec%95%84%ea%b0%80%eb%9d%bc-%ed%8f%ad%ed%8f%ac%ec%97%90-%eb%8b%a4%eb%85%80%ec%99%94%ec%8a%b5%eb%8b%88%eb%8b%a4/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/07/12/%eb%82%98%ec%9d%b4%ec%95%84%ea%b0%80%eb%9d%bc-%ed%8f%ad%ed%8f%ac%ec%97%90-%eb%8b%a4%eb%85%80%ec%99%94%ec%8a%b5%eb%8b%88%eb%8b%a4/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Scriptroid - easy android framework tester using Beanshell</title>
		<link>http://hanjava.net/call-151/2010/07/06/scriptroid-easy-android-framework-tester-using-beanshell/</link>
		<comments>http://hanjava.net/call-151/2010/07/06/scriptroid-easy-android-framework-tester-using-beanshell/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 09:58:29 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>java</category>
	<category>API</category>
	<category>5분자바</category>
	<category>android</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/07/06/scriptroid-easy-android-framework-tester-using-beanshell/</guid>
		<description><![CDATA[



Beanshell에 초간단 UI입혀놨습니다.
android API 테스트를 위해 프로그램을 작성해 올릴 필요 없습니다.
activity라는 내장 변수가 선언되어 있으니 이를 통해 Context나 Window따위에 접근할 수 있습니다.
&#8216;ASE(Android Scripting Environment)가 있지 않느냐?&#8217; 는 질문이 있을 수있는데 그들이 지원하는 API는 극히 제한되고 별개의 것이어서 app 개발 하는데 도움이 크게 안됩니다.
Beanshell을 선택한 이유는 Dalvik은 동적으로 bytecode를 생성해서 실행시키는 류의 스크립트는 구현이 불가능하기 때문입니다. [...]]]></description>
			<content:encoded><![CDATA[<p><object width="480" height="385"><br />
<param name="movie" value="http://www.youtube.com/v/YEv0_v7iMS0&amp;hl=en_US&amp;fs=1"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/YEv0_v7iMS0&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>Beanshell에 초간단 UI입혀놨습니다.<br />
android API 테스트를 위해 프로그램을 작성해 올릴 필요 없습니다.<br />
activity라는 내장 변수가 선언되어 있으니 이를 통해 Context나 Window따위에 접근할 수 있습니다.<br />
&#8216;<a href="http://code.google.com/p/android-scripting/">ASE(Android Scripting Environment)</a>가 있지 않느냐?&#8217; 는 질문이 있을 수있는데 <a href="http://code.google.com/p/android-scripting/wiki/ApiReference">그들이 지원하는 API</a>는 극히 제한되고 별개의 것이어서 app 개발 하는데 도움이 크게 안됩니다.</p>
<p>Beanshell을 선택한 이유는 Dalvik은 동적으로 bytecode를 생성해서 실행시키는 류의 스크립트는 구현이 불가능하기 때문입니다. 이런 순수 interpreter 방식의 JVM language가 어떤게 또 있는지는 모르겠습니다(찾아보기도 구찮어..T_T)</p>
<p><a href="http://dl.dropbox.com/u/670394/Scriptroid.apk">APK Download</a></p>
<p>토론토로 향하는 인천공항에서..T_T
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/07/06/scriptroid-easy-android-framework-tester-using-beanshell/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/07/06/scriptroid-easy-android-framework-tester-using-beanshell/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>제보-안드로이드에서 네이버메일의 OpenXml 문서 다운로드 문제</title>
		<link>http://hanjava.net/call-151/2010/07/04/android-naver-openxml/</link>
		<comments>http://hanjava.net/call-151/2010/07/04/android-naver-openxml/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 16:53:12 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>android</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/07/04/%ec%a0%9c%eb%b3%b4-%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%97%90%ec%84%9c-%eb%84%a4%ec%9d%b4%eb%b2%84%eb%a9%94%ec%9d%bc%ec%9d%98-openxml-%eb%ac%b8%ec%84%9c-%eb%8b%a4%ec%9a%b4%eb%a1%9c%eb%93%9/</guid>
		<description><![CDATA[안드로이드 폰에서 네이버 웹메일에 접속해서 메일에 첨부된 OpenXML 문서를 다운로드하면 확장자가 바뀌는 문제가 있다. 예를들어 첨부파일명이 &#8217;super.pptx&#8217; 인데 브라우져로 다운로드 하면 &#8217;super.ppt&#8217;로 바뀐다.
왜 이런 일이 발생하는지 좀 살펴봤다.
결론을 먼저 말하면 mime type을 respose에 잘못 넘겨주기 때문인데
이 오류는 모바일 버젼(m.naver.com)에서만 발생한다. ( 그렇다고 desktop 페이지에서도 mime type을 아름답게 넘겨주지는 않더군요 )
아래는 agent를 iphone으로 설정한 후 네이버메일이 [...]]]></description>
			<content:encoded><![CDATA[<p>안드로이드 폰에서 네이버 웹메일에 접속해서 메일에 첨부된 OpenXML 문서를 다운로드하면 확장자가 바뀌는 문제가 있다. 예를들어 첨부파일명이 &#8217;super.pptx&#8217; 인데 브라우져로 다운로드 하면 &#8217;super.ppt&#8217;로 바뀐다.<br />
왜 이런 일이 발생하는지 좀 살펴봤다.</p>
<p>결론을 먼저 말하면 mime type을 respose에 잘못 넘겨주기 때문인데<br />
이 오류는 모바일 버젼(m.naver.com)에서만 발생한다. ( 그렇다고 desktop 페이지에서도 mime type을 아름답게 넘겨주지는 않더군요 )</p>
<p>아래는 agent를 iphone으로 설정한 후 네이버메일이 첨부된 PPTX문서를 다운로드 할때의 header정보다.<br />
<img src="http://dl.dropbox.com/u/670394/pics/navermpptx.png"/><br />
PPTX면 &#8216;application/vnd.openxmlformats-officedocument.presentationml.presentation&#8217;이 나와야 하는데 PPT의 mimetype인 &#8216;application/vnd.ms-powerpoint&#8217;가 나온다.</p>
<p>DOCX, XLSX도 정확히 똑같게 동작한다. (OpenXML이 아닌 binary format의 mimetype이 넘어온다).<br />
&#8216;Content-Disposition&#8217; header에는 파일명이 바르게 입력되어 오는데 이 때문에 다운로드에는 mimetype이 중요하지 않다고 생각할 수 있다.</p>
<p>하지만 Android는 특이하게도 다운로드 할 때 HTTP response의 mimetype으로 저장할 파일명의 확장자를 변경한다. (의도는 정확히 모르겠다)<br />
파일명을 변경시키는 과정은 android API인 <a href="http://www.google.com/codesearch/p?hl=en#uX1GffpyOZk/core/java/android/webkit/URLUtil.java&#038;q=URLUtil&#038;sa=N&#038;cd=1&#038;ct=rc&#038;t=1&#038;l=283">URLUtil.guessFileName()</a> 소스를 보면 알 수 있다.</p>
<p>최강의 기술력 네이버.. 띡 고쳐 주세요.
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/07/04/android-naver-openxml/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/07/04/android-naver-openxml/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>제보 - 안드로이드에서 다음(daum) 웹메일 첨부파일 못 여는 문제</title>
		<link>http://hanjava.net/call-151/2010/07/03/android-daum-attachment/</link>
		<comments>http://hanjava.net/call-151/2010/07/03/android-daum-attachment/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 07:56:53 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>android</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/07/03/%ec%a0%9c%eb%b3%b4-%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%97%90%ec%84%9c-%eb%8b%a4%ec%9d%8cdaum-%ec%9b%b9%eb%a9%94%ec%9d%bc-%ec%b2%a8%eb%b6%80%ed%8c%8c%ec%9d%bc-%eb%aa%bb-%ec%97%ac%eb%8a%94-/</guid>
		<description><![CDATA[요즘 잘 나간다는 &#8216;갤럭시S&#8217;에서 한메일에 첨부된 오피스 파일이 안 열린다는 제보가 들어왔다.
책임감과 호기심에 살펴봤더니 첨부파일 저장이 모두 안되는듯 하다.
일단 모바일 페이지는 잘 만들어 있었다.

다운로드 하면 뭔가 잘 받는다.

잉? 그런데 아까 모바일 페이지에서는 30KB라고 나왔는데 여기선 109B 만 받았다고 나온다. 이러니 안 열리지.
컴퓨터로 받아서 내용을 보니 이런 내용만 덩그라니..

PPT로도 해봤는데 역시 안되는걸 보니 첨부문서의 타입이랑은 전혀 [...]]]></description>
			<content:encoded><![CDATA[<p>요즘 잘 나간다는 &#8216;갤럭시S&#8217;에서 한메일에 첨부된 오피스 파일이 안 열린다는 제보가 들어왔다.</p>
<p>책임감과 호기심에 살펴봤더니 첨부파일 저장이 모두 안되는듯 하다.</p>
<p>일단 모바일 페이지는 잘 만들어 있었다.<br />
<img src="http://dl.dropbox.com/u/670394/pics/daumxls.png"/><br />
다운로드 하면 뭔가 잘 받는다.<br />
<img src="http://dl.dropbox.com/u/670394/pics/downloaded.png"/><br />
잉? 그런데 아까 모바일 페이지에서는 30KB라고 나왔는데 여기선 109B 만 받았다고 나온다. 이러니 안 열리지.</p>
<p>컴퓨터로 받아서 내용을 보니 이런 내용만 덩그라니..<br />
<img src="http://dl.dropbox.com/u/670394/pics/100703-0009.png"/><br />
PPT로도 해봤는데 역시 안되는걸 보니 첨부문서의 타입이랑은 전혀 상관 없는듯 해요.</p>
<p>기술력의 다음님~ 띡! 고쳐주세요..^^
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/07/03/android-daum-attachment/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/07/03/android-daum-attachment/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Exception과 Performance</title>
		<link>http://hanjava.net/call-151/2010/07/01/exception%ea%b3%bc-performance/</link>
		<comments>http://hanjava.net/call-151/2010/07/01/exception%ea%b3%bc-performance/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 15:38:36 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>java</category>
	<category>5분자바</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/07/01/exception%ea%b3%bc-performance/</guid>
		<description><![CDATA[정상적인 로직에 exception을 활용하면 성능이 황이라는건 공부 조금 하면 나오는 이야기다. (하지만 모르는 개발자랑 일 할기회도 있다 ^^)
이론은 잘 모르고 간단한 실험 결과만 보자.
일단 VM정보. 글구 장비는 흰 싸구려 맥북이다.
java version "1.5.0_24"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_24-b02-357-9M3165)
Java HotSpot(TM) Client VM (build 1.5.0_24-149, mixed mode, sharing)
예제는 간단하다. 그냥 object를 100만개 만들고 시간잰다.
PLAIN TEXT
JAVA:




public class [...]]]></description>
			<content:encoded><![CDATA[<p>정상적인 로직에 exception을 활용하면 성능이 황이라는건 공부 조금 하면 나오는 이야기다. (하지만 모르는 개발자랑 일 할기회도 있다 ^^)</p>
<p>이론은 잘 모르고 간단한 실험 결과만 보자.</p>
<p>일단 VM정보. 글구 장비는 흰 싸구려 맥북이다.<br />
<code>java version "1.5.0_24"<br />
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_24-b02-357-9M3165)<br />
Java HotSpot(TM) Client VM (build 1.5.0_24-149, mixed mode, sharing)</code></p>
<p>예제는 간단하다. 그냥 object를 100만개 만들고 시간잰다.</p>
<div class="igBar"><span id="ljava-3"><a href="#" onclick="javascript:showPlainTxt('java-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVA:</span><br />
<div id="java-3">
<div class="java">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ExceptionTest1 <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">String</span></a>... <span style="color: #006600;">args</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333;">long</span> before = <a href="http://www.google.com/search?q=allinurl%3ASystem+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">System</span></a>.<span style="color: #006600;">currentTimeMillis</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i=<span style="color: #cc66cc;color:#800000;">0</span>;i&lt;<span style="color: #cc66cc;color:#800000;">1000000</span>;i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3AObject+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Object</span></a> o = <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?q=allinurl%3AObject+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Object</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333;">long</span> after = <a href="http://www.google.com/search?q=allinurl%3ASystem+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">System</span></a>.<span style="color: #006600;">currentTimeMillis</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3ASystem+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">System</span></a>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Diff : "</span>+<span style="color: #66cc66;">&#40;</span>after-before<span style="color: #66cc66;">&#41;</span>/<span style="color: #cc66cc;color:#800000;">1000</span>.<span style="color: #cc66cc;color:#800000;">0</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
결과 (단위:초)<br />
<code>Diff : 0.013</code></p>
<p>이번엔 Object대신 Exception 객체를 만든다.</p>
<div class="igBar"><span id="ljava-4"><a href="#" onclick="javascript:showPlainTxt('java-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVA:</span><br />
<div id="java-4">
<div class="java">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ExceptionTest2 <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">String</span></a>... <span style="color: #006600;">args</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333;">long</span> before = <a href="http://www.google.com/search?q=allinurl%3ASystem+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">System</span></a>.<span style="color: #006600;">currentTimeMillis</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i=<span style="color: #cc66cc;color:#800000;">0</span>;i&lt;<span style="color: #cc66cc;color:#800000;">1000000</span>;i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3AException+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Exception</span></a> e = <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?q=allinurl%3AException+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Exception</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333;">long</span> after = <a href="http://www.google.com/search?q=allinurl%3ASystem+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">System</span></a>.<span style="color: #006600;">currentTimeMillis</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3ASystem+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">System</span></a>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Diff : "</span>+<span style="color: #66cc66;">&#40;</span>after-before<span style="color: #66cc66;">&#41;</span>/<span style="color: #cc66cc;color:#800000;">1000</span>.<span style="color: #cc66cc;color:#800000;">0</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
<code>Diff : 1.371</code><br />
이 예에서는 한 100배 느렸다. 성능저하의 핵심은 <a href="http://www.google.com/codesearch/p?hl=en#SWrQ0LlxhHw/src/share/classes/java/lang/Throwable.java&#038;q=Throwable&#038;sa=N&#038;cd=4&#038;ct=rc&#038;t=1&#038;l=197">Throwable의 생성자에서 fillStackTrace() 호출</a>에 있다.</p>
<p>이 정도도 만족 못하고 더 느리게 만들고 싶으면 I/O를 유발시키면 된다. 흔히 하는 짓이지만 printStackTrace()를 호출을 추가하면 만족할 수 있을것이다.(여기서는 그냥 stderr에 찍도록 코딩되어있고 local ternimal로 출력)<br />
<code>Diff : 49.082</code><br />
Exception을 생성하기만 하는 예제보다 35배 정도 느려졌다.
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/07/01/exception%ea%b3%bc-performance/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/07/01/exception%ea%b3%bc-performance/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>소외 블로거의 다짐</title>
		<link>http://hanjava.net/call-151/2010/06/06/%ec%86%8c%ec%99%b8-%eb%b8%94%eb%a1%9c%ea%b1%b0%ec%9d%98-%eb%8b%a4%ec%a7%90/</link>
		<comments>http://hanjava.net/call-151/2010/06/06/%ec%86%8c%ec%99%b8-%eb%b8%94%eb%a1%9c%ea%b1%b0%ec%9d%98-%eb%8b%a4%ec%a7%90/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 11:53:26 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>잡생각</category>
	<category>낭만IT</category>
	<category>remixkorea</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/06/06/%ec%86%8c%ec%99%b8-%eb%b8%94%eb%a1%9c%ea%b1%b0%ec%9d%98-%eb%8b%a4%ec%a7%90/</guid>
		<description><![CDATA[
MS의 ReMIX10 행사에 '파워블로거' 자격으로 참관하였다.
하지만 이 블로그는 친절한 블로그가 아닌지라 '소외블로그'일 뿐아니라 java/android의 내용이 주를 이룬다.
잘 알고 계신데도 대인배적인 정신으로 선정해 주신 MS분들께 고마움 보다 죄송함이 앞선다.
위의 사진은 선물로 받은 '전동 드라이버'다. '왜 전동 드라이버냐?'에 대해선 논란이 많지만...
뒷면의 문구를 보고 유치하지만 진지하게 초심을 생각하게 되어서 좋았다.
현실만 탓하지 말고 꾸준히 노력해서 내 프로젝트가 Wikipedia에 한페이지라도 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://lh4.ggpht.com/_J0H1XRGpnQ0/TAtvg5Rpx9I/AAAAAAAAD6o/jut6zBpI0l8/s512/2010-06-04%2013.40.17.jpg" /></p>
<p>MS의 ReMIX10 행사에 '파워블로거' 자격으로 참관하였다.<br />
하지만 이 블로그는 친절한 블로그가 아닌지라 '소외블로그'일 뿐아니라 java/android의 내용이 주를 이룬다.<br />
잘 알고 계신데도 대인배적인 정신으로 선정해 주신 MS분들께 고마움 보다 죄송함이 앞선다.</p>
<p>위의 사진은 선물로 받은 '전동 드라이버'다. '왜 전동 드라이버냐?'에 대해선 논란이 많지만...<br />
뒷면의 문구를 보고 유치하지만 진지하게 초심을 생각하게 되어서 좋았다.</p>
<p>현실만 탓하지 말고 꾸준히 노력해서 내 프로젝트가 Wikipedia에 한페이지라도 남아야지.<br />
멋 훗날 'MS ReMIX10에서 줬던 전동 드라이버 뒷면의 글을 보고 슬럼프를 극복했어요' 라고 말하는 날을 만들어 주마.
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/06/06/%ec%86%8c%ec%99%b8-%eb%b8%94%eb%a1%9c%ea%b1%b0%ec%9d%98-%eb%8b%a4%ec%a7%90/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/06/06/%ec%86%8c%ec%99%b8-%eb%b8%94%eb%a1%9c%ea%b1%b0%ec%9d%98-%eb%8b%a4%ec%a7%90/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Full text search engine for your delicious</title>
		<link>http://hanjava.net/call-151/2010/05/31/full-text-search-engine-for-your-delicious/</link>
		<comments>http://hanjava.net/call-151/2010/05/31/full-text-search-engine-for-your-delicious/#comments</comments>
		<pubDate>Mon, 31 May 2010 10:52:03 +0000</pubDate>
		<dc:creator>유겸애비</dc:creator>
		
	<category>DG</category>
		<guid isPermaLink="false">http://hanjava.net/call-151/2010/05/31/full-text-search-engine-for-your-delicious/</guid>
		<description><![CDATA[
DG(덕구)는 당신의 delicious 북마크 내용을 검색해 줍니다.
북마크시 기록한 커멘트나 태그같은 쓰잘데기 없는 내용 말고 링크의 컨텐츠를 검색해 줍니다.
인증따위 필요없음

]]></description>
			<content:encoded><![CDATA[<p><img src="http://useless-samples.googlecode.com/files/dg.png"/></p>
<p><a href="http://hanjava.net/dg/">DG(덕구)</a>는 당신의 <a href="http://delicious.com">delicious</a> 북마크 내용을 검색해 줍니다.<br />
북마크시 기록한 커멘트나 태그같은 쓰잘데기 없는 내용 말고 링크의 컨텐츠를 검색해 줍니다.</p>
<p>인증따위 필요없음
</p>
<div style='text-align: right'><img src='http://hanjava.net/sera/count.php?url=http://hanjava.net/call-151/2010/05/31/full-text-search-engine-for-your-delicious/'></img></div>]]></content:encoded>
			<wfw:commentRSS>http://hanjava.net/call-151/2010/05/31/full-text-search-engine-for-your-delicious/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
