紆余曲折うねうね(´・ω・`)

キーワード検索のjavascriptコードを追加してデプロイする。
動かない…alertすら動かない(´・ω・`)

最初は外部JSファイルを読み込む形にしているからかと思い、
PrintWriterでjavascriptのコードを直書きするServletにしたが
やっぱり動かない(´・ω・`)

取り敢えずローカルでは動くhtmlファイルを上げて実行。
alertは出るけどもキーワードを取ってきてくれない(´・ω・`)


ぐぐる。
GAEでのクロスドメインの制限があるんかヽ(`Д´)ノ

Google App Engineでクロスドメイン通信
Access-Control-Allow-Origin と Access-Control-Allow-Headers について
[GAE] [Python] Google App EngineのChannel APIを試してみた

なるほどAccess-Control-Allow-Originとかをheaderで設定しなければならないのか。

面倒くさいからhtmlファイルの方で実験したかったが、
headerの設定の仕方が分からない(´・ω・`)

しょうがないから直書きServletの方でheaderで試したがやっぱり動かない_| ̄|○
そういえばalertすら動かなかったんだから他の問題があるんだった。

resp.setHeader("Access-Control-Allow-Origin", "*");
resp.setHeader("Access-Control-Allow-Methods", "POST");
resp.setHeader("Access-Control-Allow-Headers", "*");

ServletのPrintWriterで書きだされたページのソースをterapadにコピーして
整形して中身を見てみる。特に問題はなさそう…htmlで保存してchromeに食わせる。

あれ…動くねぇ( ・´ω・`)?
もう一度Servletの方で試してみる…動かない (ヽ’ω`)
それを同じ手順で…動くねぇ…( ・´ω・`)?

( ゚Д゚)ハッ 違いがあるとすれば整形……
「<!–」の後に改行を入れないと駄目なんかぁぁぁぁヽ(`Д´)ノ


ようやっとGAE上でjavascriptでjsonpデータの取得が出来るようになった。
ただjsonpの絡みか全てを外部JSファイルにして読み込む形にすると動かない。
callback以降は直書きしないと駄目なんかな?面倒なんで全部直書きのまま。

さてこれで動的なキーワード取得が可能になったが、出来ればユーザーの
お気に入りキーワードは別のリストボックスでロード時に表示される方が良いので、
どうにかせねばと調べる。

statuses/keywordsをするためにははてなIDが必要。
fotoUploadの方でcookieの中に保存してhaikingで取り出せばええんや(・∀・)

nullPo……ああ、haikingを単独で使用する場合は意味ないな_| ̄|○

というわけでkeywordFetcherにアクセストークン渡して
n.hatena.com/applications/my.jsonをgetして
url_nameを切り出せばいいのかなとコードを書いた。
取得出来たヽ( ・∀・)ノ

でも今statuses/keywordsの項目をよく見たら
アクセストークンがあれば認証ユーザーのお気に入りは
{domain}/api/statuses/keywords.{format}?{parameters}
で取れることに気づいた…_| ̄|○ マァイイサ…


取り敢えずキーワード系はこれでいいので、入力補助系の準備。
顔文字を3DSブラウザでポチポチ入力するのはメドイので
リストボックスの中にぶち込んでおくことにする。

<html>
  <head>
    <title>リストボックスのテキストをテキストエリアに追加する</title>
    <script type="text/javascript">
    <!--
        
			function textpaste() {
        		var str = document.getElementsByName("text1")[0];
				str.value += document.test.select.options[document.test.select.selectedIndex].text;
    		}
    //-->
    </script>
  </head>
  <body>
	<form name="test">
    <select name="select">
      <option value="1">(・∀・)</option>
      <option value="2">(´・ω・`)</option>
      <option value="3">( ゚Д゚)</option>
    </select>
	<input type="button" value="add" onClick ="textpaste()">
	<textarea name="text1" cols="50" rows="10" >
	</textarea>
	</form>
  </body>
</html>

ローカルでは一応動くのでGAE上でもきっと大丈夫…だといいな(´・ω・`)


もう一つ入力補助系としてユーザー指定ワードのリストボックスの作成。
これはユーザーのプロフィール欄に一定の書式で指定した単語群を
引っ張って来てリストボックスにぶち込むという方法で行う。

さてユーザーのプロフィールを取得するかとAPI表を眺める…
眺める…眺める…眺める…眺める…眺める…眺める…眺める…眺める…
あれ…ない( ;・´ω・`)ゴクリッ?

ユーザーオブジェクトに含まれていないから取得出来ない。
はてなハイクのAPIだからなんだろうか…

面倒くさくなってwww.hatena.ne.jp/はてなID/で取ってきたページを
splitしまくって単語群を取得した。スクレイピング?


と、まあ一応やりたい機能の個別での成功は確認出来たので
これから統合していかないといけないなぁ。

あと気になってたエラーでMalformedURLExceptionがあった。
これは長い文章を入力した時にのみに起きていたので、
それかなと思いぐぐる。

ドンピシャな答えはなかったが人力検索はてなで
携帯電話のブラウザでアクセスできるURLの文字数に制限はありますか?
というのがあった。

エンコード後に2038文字かどうかはわからないが
確かにそのくらいの文字数でエラーを起こしてる気がする。
これもどうにかしないとなぁ…。