<?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>ゆるやかなウェブ &#187; NetBeans</title>
	<atom:link href="http://www.yuruyakana.com/tag/netbeans/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yuruyakana.com</link>
	<description>ＩＴコーディネータはＩＴ経営を実現するプロフェッショナルです</description>
	<lastBuildDate>Thu, 26 Jan 2012 04:26:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>空白[%20]の呪縛</title>
		<link>http://www.yuruyakana.com/2009/10/%e7%a9%ba%e7%99%bd%20%e3%81%ae%e5%91%aa%e7%b8%9b/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%25a9%25ba%25e7%2599%25bd%2520%25e3%2581%25ae%25e5%2591%25aa%25e7%25b8%259b</link>
		<comments>http://www.yuruyakana.com/2009/10/%e7%a9%ba%e7%99%bd%20%e3%81%ae%e5%91%aa%e7%b8%9b/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 12:25:37 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ITコーディネータ]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=158</guid>
		<description><![CDATA[NetBeans 上で JavaFX のサンプルプログラムをコンパイルしようとしたら、出ました空白の呪縛が。 例えば、C:/Documents and Settings/purapura とかの文字の間にあるスペース。通 [...]]]></description>
			<content:encoded><![CDATA[<p>NetBeans 上で JavaFX のサンプルプログラムをコンパイルしようとしたら、出ました空白の呪縛が。<br />
例えば、C:/Documents and Settings/purapura とかの文字の間にあるスペース。通常は、%20 に置き換えれば問題ないはずなんだけど、NetBeans の 6.7.1 でも 6.8 Beta でも C: のコロンが文字化けして、コンパイルできない。</p>
<p>ほんでもって、いろいろいじった結果、下記の方法で無事コンパイルできました。同様の躓きを経験されている方はご参考まで。</p>
<p>nbproject フォルダー内の project.properties に main.class=（ソースパッケージ名） を書いておくと、jnlp.codebase.url=file:/c:ぷらぷらなんて自動で付加されて、コンパイルOKでした。</p>
<p>上記の事象は、XP 上の NetBeans で起こりましたが、Vista 上ではきちんと自動で main.class が設定されていました。なんでやねん？？</p>
<p>ちなみに JavaFX のサンプルプログラムは、下記の本を参考にしています。</p>
<p><a title="Amazon で商品の詳細を確認する" href="http://www.amazon.co.jp/JavaFX-Action-Meap-Simon-Morris/dp/1933988991%3FSubscriptionId%3D038NZJ5FX57G706Q3382%26tag%3Dyuruyakanaweb-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1933988991"><img src="http://ecx.images-amazon.com/images/I/51Hsg%2Bg03HL._SL160_.jpg" alt="JavaFX in Action: Meap Edition" /></a> Amazon ではまだ予約のみのようですね。私は、eBook 即入手でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/10/%e7%a9%ba%e7%99%bd%20%e3%81%ae%e5%91%aa%e7%b8%9b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon Product Adv. API でもう少し</title>
		<link>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=amazon-product-adv-api-%25e3%2581%25a7%25e3%2582%2582%25e3%2581%2586%25e5%25b0%2591%25e3%2581%2597</link>
		<comments>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 08:21:34 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[Amazon API]]></category>
		<category><![CDATA[GAE/Java]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=95</guid>
		<description><![CDATA[先日、Amazon Product Advertisng API の Java コマンドタイプのサンプルを Grails で動かしてみようと ItemLookup のサービスとコントローラ、ドメイン、ビューを作ったのです [...]]]></description>
			<content:encoded><![CDATA[<p>先日、Amazon Product Advertisng API の Java コマンドタイプのサンプルを Grails で動かしてみようと ItemLookup のサービスとコントローラ、ドメイン、ビューを作ったのですが、今朝からもう少し進めて ItemSearch のコントローラ、ビューを作ってみました。ドメインはデータ保存しないので今のところ必要ないかな。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
</pre></td><td class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * Amazon Product Advertising API を使ったサンプル
 * API Version: 2009-03-31
 *  ItemSearch-Keywords で Book名を入手　とりあえず。
 *
 */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #a1a100;">com.yuruyakana</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">com.amazon.advertising.api.sample.SignedRequestsHelper</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">org.codehaus.groovy.grails.commons.*</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">net.sf.ehcache.Element</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> AmazonItemSearchService <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #993333;">boolean</span> transactional <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">false</span>
&nbsp;
    <span style="color: #aaaadd; font-weight: bold;">String</span> AWS_ACCESS_KEY_ID
    <span style="color: #aaaadd; font-weight: bold;">String</span> ASSOCIATE_TAG
    <span style="color: #aaaadd; font-weight: bold;">String</span> AWS_SECRET_KEY
    <span style="color: #aaaadd; font-weight: bold;">String</span> ENDPOINT
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> getItemSearch<span style="color: #66cc66;">&#40;</span>searchIndex, keyword<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/* Set up the signed requests helper */</span>
        SignedRequestsHelper helper
&nbsp;
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #66cc66;">&#123;</span>
            helper <span style="color: #66cc66;">=</span> SignedRequestsHelper.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span>ENDPOINT, AWS_ACCESS_KEY_ID, AWS_SECRET_KEY<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span><span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">Exception</span> e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            log.<span style="color: #006600;">error</span> <span style="color: #ff0000;">&quot;Problem communicating with SignedRequestsHelper: ${e.message}&quot;</span>, e
            <span style="color: #000000; font-weight: bold;">return</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #aaaadd; font-weight: bold;">String</span> requestUrl <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> titles <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;_&quot;</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> author <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> imageUrl <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> price <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> totalresults <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// map形式</span>
        <span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Map form example:&quot;</span>
        <span style="color: #aaaadd; font-weight: bold;">Map</span> params <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">HashMap</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Service&quot;</span>, <span style="color: #ff0000;">&quot;AWSECommerceService&quot;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Operation&quot;</span>, <span style="color: #ff0000;">&quot;ItemSearch&quot;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;AWSAccessKeyId&quot;</span>, AWS_ACCESS_KEY_ID<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;AssociateTag&quot;</span>, ASSOCIATE_TAG<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SearchIndex&quot;</span>, searchIndex<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Keywords&quot;</span>, keyword<span style="color: #66cc66;">&#41;</span>
        <span style="color: #808080; font-style: italic;">/**　こっちの方が良いわな
        def params = ['Service':'AWSECommerceService',
	              'Operation':'ItemSearch',
	              'AWSAccessKeyId':'AWS_ACCESS_KEY_ID',
	              'AssociateTag':'ASSOCIATE_TAG',
	              'ResponseGroup':'Medium']
　　　　*/</span>
        requestUrl <span style="color: #66cc66;">=</span> helper.<span style="color: #006600;">sign</span><span style="color: #66cc66;">&#40;</span>params<span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// XML構文解析</span>
        <span style="color: #000000; font-weight: bold;">def</span> uri <span style="color: #66cc66;">=</span> requestUrl.<span style="color: #006600;">toURI</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">def</span> ItemSearchResponse <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XmlSlurper<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">parse</span><span style="color: #66cc66;">&#40;</span>uri<span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Total Results: &quot;</span> <span style="color: #66cc66;">+</span> ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">TotalResults</span>
        <span style="color: #808080; font-style: italic;">//println &quot;Total Pages: &quot; + ItemSearchResponse.Items.TotalPages</span>
&nbsp;
        ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">Item</span>.<span style="color: #006600;">ItemAttributes</span>.<span style="color: #006600;">Title</span>.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
            <span style="color: #808080; font-style: italic;">//　リストをコントローラに渡す方法思いつかなかったのでアンダー</span>
　　　　　 <span style="color: #808080; font-style: italic;">//  スコアで芋づるにしちゃいました。</span>
            titles <span style="color: #66cc66;">=</span> titles <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">&quot;_&quot;</span> <span style="color: #66cc66;">+</span> it
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Author: &quot; + ItemSearchResponse.Items.Item.ItemAttributes.Author</span>
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Medium Image: &quot; + ItemSearchResponse.Items.Item.MediumImage.URL</span>
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Price: &quot; + ItemSearchResponse.Items.Item.ItemAttributes.ListPrice.FormattedPrice</span>
&nbsp;
        totalresults <span style="color: #66cc66;">=</span> ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">TotalResults</span>     
&nbsp;
        <span style="color: #000000; font-weight: bold;">def</span> map <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#91;</span>TotalResults:totalresults, Title:titles<span style="color: #66cc66;">&#93;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">return</span> map
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * Amazon Product Advertising API を使ったサンプル
 * API Version: 2009-03-31
 *  keyword で Book名リストを入手　とりあえず。
 *
 */</span>
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #a1a100;">com.yuruyakana</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> AmazonItemSearchController <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">//def scaffold = AmazonItemSearch</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> AmazonItemSearchService
&nbsp;
    <span style="color: #aaaadd; font-weight: bold;">String</span> searchIndex <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;Books&quot;</span>
    <span style="color: #aaaadd; font-weight: bold;">String</span> keyword <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;IT経営&quot;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> index <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#123;</span>
        redirect<span style="color: #66cc66;">&#40;</span>action:<span style="color: #ff0000;">&quot;search&quot;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> searchFlow <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// 検索</span>
        search <span style="color: #66cc66;">&#123;</span>
            on<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;doSearch&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
                <span style="color: #000000; font-weight: bold;">def</span> amazonBook <span style="color: #66cc66;">=</span> amazonItemSearchService.<span style="color: #006600;">getItemSearch</span><span style="color: #66cc66;">&#40;</span>searchIndex, keyword<span style="color: #66cc66;">&#41;</span>
                <span style="color: #808080; font-style: italic;">/**
                 * サービスからの戻り値を配列で渡す方法分からないので、リストをアンダー
                 * &lt;/code&gt;&lt;code&gt;スコアでつないで&lt;/code&gt;&lt;code&gt;マップで渡して、ここでまたスプリットにかけています。
                 * Groovy の each メソッドはすごい。
                */</span>
                amazonBook.<span style="color: #006600;">Title</span>.<span style="color: #FFCC33;">splitEachLine</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>titles<span style="color: #66cc66;">-&amp;</span>gt<span style="color: #66cc66;">;</span>
                    titles.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
                        <span style="color: #808080; font-style: italic;">//println it</span>
                        <span style="color: #808080; font-style: italic;">//render(view:'search', model:[keyword:keyword, Title:titles])</span>
                    <span style="color: #66cc66;">&#125;</span>
                    <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;keyword&quot;</span>:keyword, <span style="color: #ff0000;">&quot;Title&quot;</span>:titles<span style="color: #66cc66;">&#93;</span>
                <span style="color: #66cc66;">&#125;</span>
            <span style="color: #66cc66;">&#125;</span>.<span style="color: #006600;">to</span> <span style="color: #ff0000;">&quot;search&quot;</span>
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #808080; font-style: italic;">// 詳細</span>
        displayDetail <span style="color: #66cc66;">&#123;</span>
            on<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;search&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
            <span style="color: #66cc66;">&#125;</span>.<span style="color: #006600;">to</span> <span style="color: #ff0000;">&quot;search&quot;</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>ビューはこんな感じ。</p>
<div id="attachment_101" class="wp-caption alignleft" style="width: 280px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemLookupSample.png" rel="lightbox[95]"><img class="size-medium wp-image-101 " title="AmazonItemLookupSample" src="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemLookupSample-300x170.png" alt="AmazonItemLookup　Sample" width="270" height="153" /></a><p class="wp-caption-text">AmazonItemLookup　Sample</p></div>
<div id="attachment_102" class="wp-caption alignright" style="width: 310px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemSearchSample.png" rel="lightbox[95]"><img class="size-medium wp-image-102 " title="AmazonItemSearchSample" src="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemSearchSample-300x236.png" alt="AmazonItemSearch　Sample" width="300" height="236" /></a><p class="wp-caption-text">AmazonItemSearch　Sample</p></div>
<p>さて、次は何をしましょうか？<br />
カートを付けて、plugin とか、GAE 上で実験してみるとか？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Product Advertising API を使わないと</title>
		<link>http://www.yuruyakana.com/2009/07/product-advertising-api-%e3%82%92%e4%bd%bf%e3%82%8f%e3%81%aa%e3%81%84%e3%81%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=product-advertising-api-%25e3%2582%2592%25e4%25bd%25bf%25e3%2582%258f%25e3%2581%25aa%25e3%2581%2584%25e3%2581%25a8</link>
		<comments>http://www.yuruyakana.com/2009/07/product-advertising-api-%e3%82%92%e4%bd%bf%e3%82%8f%e3%81%aa%e3%81%84%e3%81%a8/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 02:48:19 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[Amazon API]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=72</guid>
		<description><![CDATA[先週【重要・あと30日です】メールなんてことで、Amazon アソシエイト Web サービスが ８月１５日以降使えないそうなので、先日の[gTunes] も amazon-a2s-2007-10-29-java-libr [...]]]></description>
			<content:encoded><![CDATA[<p>先週【重要・あと30日です】メールなんてことで、Amazon アソシエイト Web サービスが ８月１５日以降使えないそうなので、先日の[<span style="color: #0000ff;">gTunes</span>] も amazon-a2s-2007-10-29-java-library を使っている関係上、署名認証の機能を含めないと動かなくなりますね。動かないと面白くないので、少し連休中に勉強しました。<br />
<a title="amazon-product-advt-api Java sample" href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2478&amp;categoryID=14" target="_blank">ここ</a> から Amazon の Java Sample をダウンロードしました。詳細な使い方は、付属の README に書かれていますが、コマンド・プロンプトから ant run で 署名認証して、決め打ちの ITEM_ID（ASIN) の ItemLookup から Title が表示されます。早速 NetBeans 6.7、Grails 1.1.1 でプロジェクト名：AmazonBook を作って、Grails 上でも使えるようにしてみました。( ITEM_ID は本以外にも全ての商品が対象のようだから Book でなくてもいいんだけど）</p>
<p>サンプルには、ソースとして SignedRequestsHelper.java と ItemLookupSample.java が提供されているので、SignedRequestsHelper はそのまま、Javaソースパッケージフォルダーにコピー。ItemLookupSample を AmazonItemLookupService.groovy としてサービスフォルダーに作成。<br />
コードは、下記のような感じ。</p>
<pre class="prettyprint">
/**
 * Amazon Product Advertising API を使ったサンプル
 * API Version: 2009-03-31
 *  ASIN で Book名を入手　とりあえず。
 *
 */
package com.yuruyakana

import com.amazon.advertising.api.sample.SignedRequestsHelper
import org.codehaus.groovy.grails.commons.*
import net.sf.ehcache.Element

class AmazonItemLookupService {

    boolean transactional = false
    String AWS_ACCESS_KEY_ID
    String AWS_SECRET_KEY
    String ENDPOINT
    //def titleAuthCache

    def getItemLook(ITEM_ID) {
        /* Set up the signed requests helper */
       SignedRequestsHelper helper

        try {
            helper = SignedRequestsHelper.getInstance(ENDPOINT, AWS_ACCESS_KEY_ID, AWS_SECRET_KEY)
        } catch(Exception e) {
            log.error "Problem communicating with SignedRequestsHelper: ${e.message}", e
            //e.printStackTrace();
            return;
        }

        String requestUrl = null
        String title = null

        // map形式
        println "Map form example:"
        Map params = new HashMap()
        params.put("Service", "AWSECommerceService")
        params.put("Version", "2009-03-31")
        params.put("Operation", "ItemLookup")
        params.put("ItemId", ITEM_ID)
        params.put("ResponseGroup", "Small")

        requestUrl = helper.sign(params)
        println "Signed Request is " + requestUrl

        // XML構文解析
        def uri = requestUrl.toURI().toString()
        //def xml = requestUrl.toURL().text
        println "Response URI: " + uri
        //println "Response XML: " + xml
  // URLだと日本語でEND-Tagで文字化けしてエラーになるので、URIを取得してParseすることでOK。
        def ItemLookupResponse = new XmlSlurper().parse(uri)
        //def ItemLookupResponse = new XmlSlurper().parseText(xml)

        println "ITEM Title: " + ItemLookupResponse.Items.Item.ItemAttributes.Title
        println "ITEM Author: " + ItemLookupResponse.Items.Item.ItemAttributes.Author
    }
}</pre>
<p>変更したところは、概ね以下の３点：</p>
<ol>
<li>AWS_ACCESS_KEY_ID、AWS_SECRET_KEY、ENDPOINT を Config.groovy にbeans として<br />
移行。ENDPOINT は別に移動しなくても６か所ほど選択できるようなので、DOMAINで選択できるよう<br />
にしておいても良いですね。</li>
<li>Controller 側で上記 Service のgetItemLook(ITEM_ID) を呼び出したこと。</li>
<li>XML 構文解析を Java の DocumentBuilder から Groovy の XmlSlurper にしたこと。
<ul>
<li>toURL() メソッドは、<em>URL 内で使用できないエスケープ文字は自動的に変換できないので<br />
非推奨になっています。</em></li>
</ul>
</li>
</ol>
<p>今回は、XMLの階層全て書いてタイトル表示しているので、スマートじゃないけど動作確認できたので まっ、いいか。</p>
<p>ITEM_ID で検索するのは実用的じゃないので、ITEMSearch 作って domain と View を今度作れればいいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/07/product-advertising-api-%e3%82%92%e4%bd%bf%e3%82%8f%e3%81%aa%e3%81%84%e3%81%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iTunes の Library をデータベースに</title>
		<link>http://www.yuruyakana.com/2009/07/itunes-library/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=itunes-library</link>
		<comments>http://www.yuruyakana.com/2009/07/itunes-library/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 09:39:24 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[閑話]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=68</guid>
		<description><![CDATA[先週末、久しぶりに下記の本の AJAX の章を読んでいたのですが、[gTunes] という Grails App のサンプルを使う上で自分の iTunes の Music Library（ｘｍｌファイル）をサンプルアプリ [...]]]></description>
			<content:encoded><![CDATA[<p>先週末、久しぶりに下記の本の AJAX の章を読んでいたのですが、[<span style="color: #0000ff;">gTunes</span>] という Grails App のサンプルを使う上で自分の iTunes の Music Library（ｘｍｌファイル）をサンプルアプリに読み込むためのGroovyスクリプトが、ソースコードとして提供されています。<br />
<a href="http://www.amazon.co.jp/Definitive-Guide-Grails-Experts-Development/dp/1590599950%3FSubscriptionId%3D038NZJ5FX57G706Q3382%26tag%3Dyuruyakanaweb-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1590599950" title="Amazon で商品の詳細を確認する"><img src="http://ecx.images-amazon.com/images/I/51do3cYz-ML._SL160_.jpg" alt="The Definitive Guide to Grails (Expert's Voice in Web Development)" /></a></p>
<p>そのままじゃ動かなかったので、同じような経験された方がいるかどうか分かりませんが、少し変更したらきちんと、MySQLデータベースに artist 名が登録されました。<br />
変更した箇所は、</p>
<blockquote><p>
<div class="note"><div class="notewarning">def artists = handler.artists.values().findAll { it.albums?.artist } を</div></div><br />
<div class="note"><div class="notetip">def artists = handler.artists.values() に。</div></div><br />
<div class="note"><div class="notewarning">else if(songProps &amp;&amp; qName == &#8216;dict&#8217;) { を</div></div><br />
<div class="note"><div class="notetip">else if(songProps &amp;&amp; qName == &#8216;/dict&#8217;) { に。</div></div></p></blockquote>
<p>Album クラスはmap で値をきちんと取れているのですが、データベース登録はエラーになるのはどうしてでしょうかね。<br />
時間ができたらまたチャレンジしてみます。</p>
<p><div class="note"><div class="notehelp">NetBeans で Grails コマンドが使えるので便利ですよ。</div></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/07/itunes-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IASB_Resources</title>
		<link>http://www.yuruyakana.com/2009/06/iasb_resources/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=iasb_resources</link>
		<comments>http://www.yuruyakana.com/2009/06/iasb_resources/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 09:13:39 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ITコーディネータ]]></category>
		<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[Ext GWT]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Taxonomy]]></category>
		<category><![CDATA[XBRL]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=53</guid>
		<description><![CDATA[ITC1 は、毎年資格更新するために必要なポイントを取得する必要があるのですが、その為ばかりだけでもないセミナーを時たま聞いたりします。 昨年、『財務データを中心とした企業分析と定量的評価』2 を聞いていて、恣意的なルー [...]]]></description>
			<content:encoded><![CDATA[<p>ITC<sup><a href="http://www.yuruyakana.com/2009/06/iasb_resources/#footnote_0_53" id="identifier_0_53" class="footnote-link footnote-identifier-link" title="ITコーディネータ">1</a></sup> は、<span style="text-decoration: underline;">毎年</span>資格更新するために必要なポイントを取得する必要があるのですが、その為ばかりだけでもないセミナーを時たま聞いたりします。</p>
<p>昨年、『財務データを中心とした企業分析と定量的評価』<sup><a href="http://www.yuruyakana.com/2009/06/iasb_resources/#footnote_1_53" id="identifier_1_53" class="footnote-link footnote-identifier-link" title="～情報系ITCのための財務分析の基礎と活用法～">2</a></sup> を聞いていて、恣意的なルールがまだしっくりこないなとほったらかしていたのですが、先月たまたま 國貞克則 著 「財務３表一体分析表」 を読んで、またぞろ好奇心が湧いてきました。<br />
<ins><br />
<strong><iframe src="http://rcm-jp.amazon.co.jp/e/cm?o=9&amp;p=8&amp;l=as1&amp;asins=4022732741&amp;t=yuruyakanaweb-22&amp;IS2=1&amp;fc1=000000&amp;lc1=0000FF&amp;bg1=FFFFFF&amp;lt1=_blank&amp;bc1=000000&amp;f=ifr" style="width: 120px; height: 240px;" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe></strong><br />
</ins><br />
<a title="金融庁 EDINET" href="http://info.edinet-fsa.go.jp/" target="_blank">金融庁の EDINET</a> を覗いて、またぞろ財務諸表パターンの多さに辟易したのですが、今回は昔かじったXBRL<sup><a href="http://www.yuruyakana.com/2009/06/iasb_resources/#footnote_2_53" id="identifier_2_53" class="footnote-link footnote-identifier-link" title=" eXtensible Business Reporting Language">3</a></sup> ファイルもダウンロード可能な状態のものもあります。いよいよ日本でも始まったようです。これでPDFファイルから必要なところを転記する手間を省ける理屈です。</span></span></p>
<p><span><span>それで、ITC にとってXBRLファイルの作成は必要ないので、財務データの必要な個所をバードウォッチできるようなアプリケーションを捜してみました。作成を含めたコマーシャルベースのものは、<a title="XBRL JAPAN" href="http://www.xbrl-jp.org/index.html" target="_blank">XBRL JAPAN</a> で見つけることができますが、IASB<sup><a href="http://www.yuruyakana.com/2009/06/iasb_resources/#footnote_3_53" id="identifier_3_53" class="footnote-link footnote-identifier-link" title="the International Accounting Standards Board: 国際会計基準審議会">4</a></sup> で面白いプロジェクトを見つけました。<br />
</span></span></p>
<p style="text-align: center;"><a title="IASAB XBRL Resource" href="http://www.iasb.org/XBRL/Resources/Resources.htm" target="_blank">IASB_Resources.</a></p>
<p><em>SEC</em><sup><a href="http://www.yuruyakana.com/2009/06/iasb_resources/#footnote_4_53" id="identifier_4_53" class="footnote-link footnote-identifier-link" title="アメリカ証券取引委員会">5</a></sup> でもオープンソースプロジェクトがありましたが、今回はIASB で少し勉強してみます。</p>
<p>理由：</p>
<ol>
<li>NetBeans 上でJava Web アプリとして作られている。</li>
<li>GWT、Ext-GWT を使ってヒューマンインターフェースを工夫している。</li>
<li>Groovy を使っている。</li>
<li>モジュールマネージャとして２９ページの開発ガイドが付いている。</li>
</ol>
<p>では、また。</p>
<ol class="footnotes"><li id="footnote_0_53" class="footnote">ITコーディネータ</li><li id="footnote_1_53" class="footnote">～情報系ITCのための財務分析の基礎と活用法～</li><li id="footnote_2_53" class="footnote"> <span id="linkdescription"><span>e<span style="color: #ff0000;"><strong>X</strong></span>tensible <span style="color: #ff0000;"><strong>B</strong></span>usiness <span style="color: #ff0000;"><strong>R</strong></span>eporting <span style="color: #ff0000;"><strong>L</strong></span>anguage</li><li id="footnote_3_53" class="footnote"></span></span>the International Accounting Standards Board: 国際会計基準審議会<span><span></li><li id="footnote_4_53" class="footnote">アメリカ証券取引委員会</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/06/iasb_resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>appengine-java で遊ぼ！</title>
		<link>http://www.yuruyakana.com/2009/06/appengine-java-sdk-121/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=appengine-java-sdk-121</link>
		<comments>http://www.yuruyakana.com/2009/06/appengine-java-sdk-121/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 08:47:13 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[GAE/Java]]></category>
		<category><![CDATA[GAE/Python]]></category>
		<category><![CDATA[Google Apps]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[kenai]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quercus]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/blog/?p=30</guid>
		<description><![CDATA[このブログは、ゆるやかなウェブ （Movable Type 版）からの非継続バージョンとして WordPress 版で始めようと思って、自宅サーバでテスト中ですが、もう一つ Google Apps を使った[隠れ]ゆるや [...]]]></description>
			<content:encoded><![CDATA[<p>このブログは、<a href="http://www.yuruyakana.com/tbmt/" target="_blank">ゆるやかなウェブ</a> （Movable Type 版）からの非継続バージョンとして WordPress 版で始めようと思って、自宅サーバでテスト中ですが、もう一つ Google Apps を使った[隠れ]ゆるやかなウェブサイトがあり、そこで連休明けから Google App Engine のサンプルを使って遊んでいました。GWT も使えば、シュワッウォーンてな感じです。</p>
<p>Eclipse で立派なプラグインも用意されているので 楽ちんなのですが、NetBeans の方は<a href="http://kenai.com/projects/nbappengine" target="_blank">KENAI</a>で少し具体的になってきたようです。４日ほど前にインストールの方法がアップされていました。Grails はEclipse より NetBeans で作るのがちょー楽ちんなので、NB のモジュールサポートに超期待。(他人の褌ばっかりでごめんなさい)<br />
今のところ、NB６．７Beta ではなくてNB の開発版で動作確認できます。<br />
下記の５つのモジュールをインストールします。</p>
<ol>
<li>GAE Server</li>
<li>GAE Configuration Editor</li>
<li>GAE Deployment</li>
<li>GAE Editor Hints</li>
<li>GAE Samples (今時点で GuestBook だけ、JDKのSAmple 取り込めば良いのか)</li>
</ol>
<p>Sample でProject に取り込んで、サーバにGoogle App Engine を登録して、構築して実行。<br />
構築は成功。localhost でこけた。ポート利用されてるていうメッセージ。Apache も Jettyも動かしていないのになんで？Deployment は、マウス右メニュークリックでOK。Eclipseみたいにアイコンまだないけど。GAE上には１０個までID登録できるけど、あんまりサンプルばっかしアップするのも気が引けるし。今日はここまで。</p>
<p>［閑話］<br />
GAE/Java 上でPHP（Quercus) を使って早速 WordPress 2.7.1 を 動かしていますね。デモはOKでした。星５つ付いていて結構面白がる人がいるみたい。カスタマイズが楽しい人向きかも。<br />
Pebble をアップしてる様子はまだないようだけど、こちらの方が扱いよさそうだし、GAE上でBlog を動かしたいと思うほど、まだ面倒になっているわけでもなし。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/06/appengine-java-sdk-121/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

