*/ -->
ラベル GAE の投稿を表示しています。 すべての投稿を表示

open-graph-protocol.png

少し前にBloggerをOGPに対応させるためのサービスを作りました。

BloggerをOGPに対応させるときのog:imageをなんとかする

http://rrvf.blogspot.com/2011/10/blogger-ogp-og-image.html

GoogleAppEngineのコンソールを久しぶりに見てみると、意外にアクセス数があるようで少し驚いています。

そこで現在動いているサービスにちょっとした付加機能を付けてみました。

BloggerSpice - PostImageRedirect

http://bloggerspice.appspot.com/postimage/view

上記のページは、OGPでFacebookからアクセスされた記事を一覧表示しています。この機能は、データベースを使用せずにキャッシュ上で動いているので、ガベージされて突然消えたりする可能性があります。

今後はリストをソートしてランキングっぽく表示できるようになればいいなと考えています。

link

この記事の続きを読む

open-graph-protocol.png

BloggerをOGP(Open Graph Protocol)に対応させるときに問題になるのが「og:image」です。この「og:image」には、記事内で使われている画像や、記事のサムネイルを指定するのが一般的です。しかし、Bloggerには利用できそうなデータタグが存在しないので、静的画像ファイルへのリンクを指定することしかできません。

そこで、記事のRSSから画像ファイルが使用されているかをチェックし、使用されていれば一番最初に見つかった画像にリダイレクトするWEBアプリケーションを作ってみました。以下のようなURLで取得が可能です。

BloggerSpice

http://bloggerspice.appspot.com/postimage/[記事のURL]

たとえば、この記事に使用されている画像を取得する場合は以下のように指定します。

http://bloggerspice.appspot.com/postimage/http://rrvf.blogspot.com/2011/10/blogger-ogp-og-image.html

このWEBアプリケーションの仕様は以下の通りです。

  • RSSを利用するので、RSSが利用できない非公開ブログでは利用不可
  • 記事の中に画像が存在しない場合は、http://bloggerspice.appspot.com/bicon.png にリダイレクト
  • RSSから取得した画像へのURLは、24時間キャッシュされる

このWEBアプリケーションをテンプレートに組み込む際は以下のように記述してください。

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<meta expr:content='&quot;http://bloggerspice.appspot.com/postimage/&quot; + data:blog.url' property='og:image'/>
</b:if>

とりあえず自分用に作成したので、要望等ありましたらコメントにてお願いします。

link

この記事の続きを読む

GoogleAppEngineのCookieに関する備忘録です。

java.net.HttpCookie

  • HttpCookie+toStringは、HttpCookie+setMaxAgeしてあっても、HttpCookie+toStringで吐く文字列には”Max-Age”を印字しない。
    • 逆に吐くのは、 name-value, path, domain, portだけ。
    • HttpCookie+toStringを直接”Set-Cookie”ヘッダに利用するときは注意

javax.servlet.http.Cookie

  • 既にセットされたCookieをサーブレットから取得した場合、path値に”/”を指定したにもかかわらず、なぜかnullになる。
    • 自分のミス or GoogleAppEngine固有の問題?

javax.servlet.http.HttpServletResponse

  • HttpServletResponse+addCookieがなぜか動作しない。
    • 自分のミス or GoogleAppEngine固有の問題? もしかしてsession-enableがoffだと使えないとか?
    • HttpServletResponse+setHeaderでSet-Cookieしてあげると正常に動作。
    • GoogleAppEngineでCookieを利用する
link

この記事の続きを読む

MokuMoku!β - http://moku2w.appspot.com/

更新した部分は以下の通りです。

  1. 期限切れ(リプライが2日無い)のロールを自動で削除するCronの停止
  2. ブラウザキャッシュの停止
  3. 外観の再構築
  4. ロールの部分一致検索
  5. ページビューランキングの追加
  6. ロールを作成した際のコメント位置を変更
関連記事:
[GAE] 掲示板サービスの開始!
link

この記事の続きを読む

GAE(GoogleAppEngine)をデプロイしたときにウォームアップ時間(インスタンスの生存時間)がすごく気になるけど、課金すれば大丈夫なんて知らなかった。version 1.4.0から可能になった”Always On”っていう項目で課金可能みたい。大分昔の話だね・・・。

alwayson.png

どうやら課金するとインスタンスが常に3つ起動した状態で保持されるみたい。これはいいなー。値段は、1日0.3$、1ヶ月で9$払えばいいのね。本気でサービスをやっていこうと考えてる人には必須の課金項目だね。でもこの課金を有効にするとGAEの魅力である、無課金である程度のリクエストを捌けますよ!っていう魅力が半減してしまう気がする・・・。

link

この記事の続きを読む

GAE(GoogleAppEngine)でCSS3PIE(PIE.htc)を利用する場合に、HTTPヘッダのContent-Typeヘッダに正しいMIMEタイプがセットされません。なので正しいContent-Typeヘッダを吐き出してあげる必要があります。htcファイルのMIMEタイプは、"text/x-component"なのでそれを正しく吐き出してあげれば大丈夫そうです。以下設定方法です。

{Project}/war/WEB-INF/web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app ...>
...
	<mime-mapping>
		<extension>htc</extension>
		<mime-type>text/x-component</mime-type>
	</mime-mapping>
...
</web-app>

上記のように設定を変更してあげればOKです。

この方法はGAE(GoogleAppEngine)でアーカイブを公開する場合にも利用することが可能で、たとえばZIPアーカイブの場合は、extentionに”zip”、mime-typeに”application/zip”と指定してあげることで対応することが出来ます(指定しなくても自動で出力している可能性あり)。

関連記事:
CSS3でWindows7風のボタンを作る
link

この記事の続きを読む

GAEのコンソール画面の日付のタイムゾーンってどこのタイムゾーンが適応されているのかな?と思ったので調べてみるとどうやらPST:太平洋標準時間らしい。

これをどうにかして日本時間に出来ないかなと思ってLog4jを使ってみたけどコンソール自体のタイムスタンプは変わらないみたいだし、”[appname/*.***************].<stdout>:”みたいなのがくっついてかっこ悪いし、見難い(もしかしたらやり方が間違ってる?)。

そこでjava.util.LoggerのFormatterをSimpleFormatterから独自のものにするため、/war/WEB-INF/logging.propertiesを修正してみる。

link

この記事の続きを読む