すんげー久方ぶりに

加筆してます。
更新が一ヶ月以上滞っていた訳ですが、何かページビューが増えてる気がして、世の中には物好きな人がいるものだとつくづく思い至る今日この頃です。
まあ、以前のページビュー数なんて忘却の彼方ですが。

ただ、この一ヶ月は非常に忙しかったというか、精神的に余裕がなかったというか、まあ色々あったんですよー、いろいろー。
でも、書き留めたいことが無かった訳ではないのです。
ただ単純に、端的に言うのなら、書き留める気が起きなかっただけのことなのです。
…………………
だって、これの編集も結構難儀なんですよ?

んで。
この余裕のない期間はもうしばらく続きそうです。次回、なんちゃって偽術的(変換ミスだけど微妙に正しい)メモを書くとすれば、おそらくGAE関連のものになるでしょう。
そんな訳で、またしばらく更新しませんが、どうぞ気になるところがあれば、指摘するなり、嘲笑うなりしてくださいませ。

大変遅くなりましたが

謹賀新年、あけましておめでとうございます。
本年も変わったご愛顧のほど、よろしくお願い申し上げます。
あるいは、アブノーマルという横文字でも構いませんが。


ここ最近、自分の過失も含めて少々ブルーなことが続いていたので、年甲斐もなく沈み込む毎日だったのですが、まだ完全復帰には程遠いんですが、それでも落ち込んでばかりもいられないので、とりあえず新年のごあいさつです。


まあ、あいさつ程度の軽い気持ちで書いたので、特に何を書こうと思っていた訳ではないのですが、偶然にも『ジンオウガ』というタイムリーなキーワードが目に入ったので、それに関して。
飽きもせず、つらつらと書き連ねようかと思います。


年末に『ジンオウガは狩りやすい』みたいなタイトルの記事を書いたので、実は偶然などではなく当然の如く必然的にその単語は目に入った訳ですが、ただ狩りやすいって感想だけじゃなあなんて思ってしまったので、もう少し語ろうかと。
語ろうかと思っても、僕未だにHR3ですけどね。
集会所面倒なんですよ。
多いわ、強いわ、屈強すぎるわで。
前作の話になってしまいますが、G級の蒼レウスが憎たらしくて狩りまくってた時期がありました。私怨に数少ない貴重な友人を巻き込む訳にもいかないので、当然ソロです。
ただし、いつも討伐ではなく捕獲でした。
理由はいくつかあります。
たとえば、あいつら瀕死になってからが異様に長いんですよ。
たとえば、捕獲報酬ってのがあるんですよ。
たとえば、僕のスキルでは討伐には難ありだったんですよ。
どれが最大の原因であったかは、お察し願います。
まあ、そんな訳で。
双剣両手に全力装備で、大体20から25分くらいでしたかね、捕獲完了までに。
閃光玉でグルグルしてる蒼レウスは本当に可愛い奴でしたよ。
残念ながらノーダメはありませんでしたが、慣れた頃には回復薬グレートが2、3個で事足りるぐらいまでにはなりました。


閑話休題
時間軸を現在に戻しましょう。
ジンオウガは片手がいいと聞いたので、早速片手剣のあの、なんか変わった形のやつでトライ。攻撃力ブーストもくっ付けて果敢にチャレンジ。
太刀で行って「なんじゃこりゃあ!」状態だった僕にとっては、阿呆らしいくらい簡単に討伐できてしまいました。
ガードができるって素晴らしいんですよ、ええ。
そんな訳で。
今はジンオウガ戦は双剣で行ってます。
使ってるのは、あのー、あれですよ、ナルガの奴ですよ。会心率の高い、アレです。
片手、弓、双剣、太刀、とりあえずメインで扱うこの4つは、ナルガで揃えてみました。
まあ、それだけナルガくん(ちゃん?)は狩られたことになりますが(ちなみにこっちも双剣)。
とにかく。
片手だと時間切れになるんじゃ、とか思ってた時期もありましたが、別にそんなこともなく。
際どいタイミングでも果敢に攻め抜くことで、何とかなっちゃうものです。
人生でも、これくらい大胆になれたらなあ……
いえいえ、何でもありませんよ。
……たぶん、ね。


こんな感じで。
本当は趣味の分野で色々と熱く語りたいところもあるんですが、それすると本当にどうでもいいブログになってしまうので、割愛します。
そのうち、再びメモ的な記事に戻ると思います。お待ちかねの失笑タイムですね。
そういうことなので、本日はこの辺で。

ジンオウガは意外と戦り易い

ということが判明しました。
どうでも良かったですね。


もうすぐ、西暦2010年ともお別れです。
私生活が例年になく騒々しく、パソコンに久々に触れたので、実際のところ書くべきものがないのですが、何か書きたいという気持ちの有無とはまた別の問題で、今回の記事もただの戯言になります。
しかし、まあどうなんでしょうね、実際のところ。
著名人でもない一般人の、その上人となりも知らない他人の日記なんて、読みたいと思うものでしょうか。
僕個人の話を言えば、それなりに楽しめてしまう方です。
まあ、アニメ好きで、マンガ好きで、ゲーム好きで、映画好きで、音楽好きで、読書好きな僕ですから、大体の話題に対して何かしら興味のある部分が含まれているというのもあるんでしょうけど。
だから、日記を見るというのは嫌いではないですけれど、どちらかといえばブログなんかは技術的なメモだったり、二次創作サイトなんかを覗くのが趣味です。
………………。
『覗くのが趣味』という言葉を公の場で声を大にして言える機会というのも珍しいですね。
せっかくなので、言い直してみましょう。
僕は二次創作サイト覗きが趣味です。
ここで、せっかくだから、という発想に至る時点である意味おしまいという気もしますが。
まあ……せっかくなので。
ちなみに、常連サイトあります、血+メインで。
届くことは百パーないですけど、管理人さんお疲れさまです。


そんなこんなで。
二次創作サイト、ご覧になったことのない方もいらっしゃると思います。
ご覧になったことのない方よりも、ご覧になったことのある方の方がマイノリティだとは思いますが。
そんなマイノリティな僕が、マジョリティな貴方に二次創作サイトについて簡単に説明すると、要するにアニメや漫画などのイラストや妄想小説などを(基本的には)サイト管理者が作成したものを掲載したファンサイトみたいなものです。
どっちかというと、僕が好きなのはイラスト系です。
上手い人は本当に上手いんですよ。
ほんとに。
僕の悪い癖で、他人がやってるのを見るとやりたくなるんですよね、スポーツでも、小説でも、マンガでも。
やりたくなるし、書きたくなるし、描きたくなる。
例外もありますよ、もちろん。
罰ゲームとかは、人が受けるのを見て笑ってる方が楽しいに決まってますから。
実際のところ、罰ゲームを受けるのは嫌ですが、受けさせるのは好きです。
お仕置きする側は、したいと思うことはあります。
あの場で一番楽しいのは、きっとそこですから。
マゾでなければ、という大前提のもとに。
ただ、それも笑える罰ゲームならというものに限りますが。
笑えない罰ゲームは、やっても楽しくないでしょう?どうあったところで、される側は楽しくないでしょうけれど。
他に人がしててもしたくならないものは、そうですねえ、仕事ですかね。
ああ、働きたくねぇ。


なんて。
ただ、すべきことがあることの救いを、僕らはもう少しだけ考えてみた方がいいように思います。
問題が山積みなのは困りますが、日々するべきことが、やることがあるということが。
僕という人間にとっては、存外大きな意味を持っているものだと、そう思っています。
すべきことをとりあえずしているという、間違っているのだろうけれども、それでも、そこには安心感があります。
不自由を嘆くことはありますが、だからと言ってまるきり自由になったら、そこにはかりそめの安心すら無いように思います。
義務と権利の話に似てますね。
現実的には、別に義務を果たしたところで、権利が保証される訳ではないんですけど。
もっと言えば。
法が人を守るのではなく、人が法を守るという話でもありますね。
当たり前の話ですが。
人を守るルールなんてありません。ルールは守るものですしね。
だからこそ、守らない人がいたら、その時点で無力化するものなんです。
だから、ルールを守ったところで、ルールが僕らを守ってくれるとは限らないんです。
何言ってんだって方のために、わかりやすいたとえを一つ。
たとえば、貴方が幼女に親しみをこめて微笑みかけたところで、幼女が貴方に微笑みかけてくれるとは限りません。
このご時世です。下手したら、通報されるかもしれません。
我ながら、大変わかりやすいたとえですね。
そうは言っても、ルールは守るべきという、僕はそんな子ですが。


そういう感じで。
何とも脈絡のない内容で申し訳ありませんが、今日はこの辺で。
それでは、よいお年を。

晴れるくらいなら雪降んな

お天気雨とか。
「晴れるくらいなら降るなよ」って思いませんか?
思いませんか、そうですか。
やっぱり人間は分かり合えない生き物なんですね……。


話がいい感じに大げさになったところで、面舵いっぱい。
今回はただの日記です。
いや、まあこのブログのタイトルが日記ですから、『ただの』というのもおかしな話ですが。
そんな訳で。
だらだらと記号を並べていこうと思います。


最近、GAEをいじり始めた僕ですが、まだコンテンツと呼べるものがありません。
ただ、現在検討しているのは、ここよりもより趣味に特化した、どうでもいい内容を詰め込んだページと、後はアプリなんかを少々動かせたらというものです。
ブログのサーバーとして使うだけでも十分だとは思うんですが、やっぱり何か機能があった方がおもしろいかな〜、なんて。
そんな感じです。
そんな感じなので。
ここ以上に見る価値がないのは、言うまでもないということでFAです。
番宣したり、けなしたり、忙しい僕です。


で、GAEの話はここで終了。
ここからは、漫画の話。
フジリューの『封神演義』についてです。
安能務訳『封神演義』を原作として、週刊少年ジャンプで連載されていたマンガです。
ちなみに、僕は原作も漫画も両方とも読んでます。
その上で。
フジリュー版の方についての駄文になります。
まあ、良く言われることですが、原作とはもう別物ですね。
原作をただ絵にしただけのものでは無いです。
第一、原作をそのまま絵にしたら、青年誌行き確定です。
18禁上等になっちゃいますね。
でも、個人的にはとても好きな作品ですよ。
キャラの待遇が色々すごいですが。
特に、聞仲と黄天化。
かっこ良くなりすぎだし、最後まで生きすぎだし。
ちなみに、ネタバレすると原作では天化は紂王まで辿り着きません。途中で死にます。聞仲はまるで死刑執行のような最期ですし。
でも、あの原作からあのストーリーを描いたフジリューは、素直にすごいなと思います。


しかし、原作においてのそもそもの始まりは、好色昏君(ふんちゅん、愚かな王の意)が廟にまつられた女媧像のあまりの美しさに心奪われ、恋文を刻んだところからです。それに対して、『人間ごときが傲慢な』とブチ切れた女媧御前が妲己たちを使って殷を滅ぼそうとかいう流れです。
そこへいくと、フジリュー版では妲己の扱いもかなりバブル弾けちゃってますね。
そういう原作との違いが多いのでダメという方は、まったくの別物というか、封神演義のパロディだと思えば、見方が変わるんじゃないでしょうか。
何度も言いますが、原作そのまま忠実にやってたら、少年誌なんて絶対無理です。
ま。
今なら、可能かもしれませんが。
以前黒猫描いてた方の最近の暴走っぷりが許容されるならという前提ですが。
個人的には「う〜ん……おっけー!」ですけど。
もひとつ言えば、僕もう少年じゃないですけど。


閑話休題
僕が印象的だなあと思ったシーンの一つに、黄飛虎の封神シーンが挙げられます。
何が印象的だったのか。
もう分かる方もいらっしゃるかもしれませんが、その後に挿入された太公望の一礼です。
封神間際の武成王から後を託された太公望が、「まかせよ」とか言ったり、力強く頷くでもなく、ただただ黙して頭を下げる。
その場のノリではなく、キャラの心情を描いたシーンだと思います。
このシーンから、太公望の中で武成王がどれだけ大きい存在だったかが伝わります。
命の恩人であり、戦力の要(人対人において西岐軍を鍛えたこと含め)であり、良き理解者であった男。
武人として、一人の人間として、太公望が信頼をおき、尊敬をもっていたという心情描写があのシーンだと、勝手に解釈しています。
神界大戦パートから殷王朝滅亡までは、何気にあの作品の中では一番の山場ですから、フジリューさんも気合入ってたんでしょうね。
そしてその後の紂王の壊れっぷりは、忙しさのあまり発狂した自分を投影したに違いありません。
いえ、実際どうかは知りませんが。


そういう訳で。
ガイドブック買ったり、色々調べたりしてましたが、結論を言うと僕は原作も漫画もどっちも好きです。
それぞれに、それぞれ好きな部分があります。
こんな感じで、今回はこれにて。

GAEは日本語で『ぎゃえ』と

は誰も呼ばないと思います。
僕以外は。
いや、でも言い訳させてくださいよ。
galaxyは『ギャラクシー』でしょ!?
………………。
まあ、どこでテンションあげてんだって話ですね。
ちなみに普段の会話では『じーえーいー』と言っています。
失礼な人ですね、独り言じゃないですよ。
いや、僕がそう信じているだけかもしれませんが。


そんな訳で。
GAEにアップしたアプリケーションの検索方法がちょっと分からないので、番宣の意味も込めて、ここにURLを載せておきます。
セキュリティの問題とかは大丈夫ですかね……心配はそこに尽きるんですが、まあ世の中に悪い人はいないと思い込んでおきましょう。
クラックする価値もないですし。
Aqua Nora's warehouse


さてさて。
それでは、GAEで、もっと言うとテンプレートで日本語を使おうとしたときに僕が引っかかった罠についてお話しましょう。
まるで自分で仕掛けた罠に自らはまりに行った変態さんのようにも聞こえますが、気のせいです。

GAEのテンプレートで日本語を扱う際の注意点:

チュートリアルでテンプレートを用いる例がありますね。
あれをちょっといじくって日本語を表示してみようと思いました。
たとえば、

template_values = {
  title: "タイトルだ!"
  }

ところがアップロードした途端に文字化けというか、文字化けどころではなくエラー吐いてページ表示されず。
しょうがないので、GoogleにログインしてアプリケーションのLogを見たら、何かキャラクターコードが原因らしい、と。
ふむ、やっちまったな、ってやつでした。


つまり、テンプレートで日本語を扱う際には、日本語をPythonで扱う時と同様の注意が必要ということです。
以下の点にご注意を。

  • まず、*.pyファイルの先頭には、コーディングを必ず書く。(例:#coding: utf-8)
  • 必要なら、ユニコード文字列を指定。(例:u"これね")
  • ファイル自体の文字コード

以上の注意点を踏まえて、

#conding: utf-8

(前略)

template_values = {
  title: u"タイトルだ!"
  }

(後略)

と書いて、きちんとutf-8でファイルを保存したのを確認してからアップロードしたら、無事ページが表示されました。
めでたしめでたし、なのです。

結論:

アプリケーション管理画面を日本語にしたい……僕はそんなゆとりっ子です。
なんて。

GAE Tips Vol.1

そんな訳で、GAEいじり始めたので、恒例のTipsを書いていきます。
要するに、僕が何か調べたことのまとめですね。
普通、調べたってことはそれなりに有益な情報になるはずなんですが、僕みたいな人類もどき程度の視点から調べるという前提において、それは非常識の部類に区分されるようです。
つまり。
いつも通り、ふわふわした記録になるでしょう。


とりあえず、書こうと思っている内容は本家のチュートリアルに沿って一通り実行していった時に思ったことなんかが中心になります。
加えて言うなら、静的に書かれたHTMLファイルの扱いなんかも合わせてかくつもりです。まあ、この辺は単にCSSに関する扱いの応用なんですが。
そんなことに気づかずに四苦八苦していた僕が『単に』と言うのもなんですが。
人生に近道はないという良い教訓になりました。
しかし、その場合ゴールはどこになるんでしょうね。
目的地によっては、近道が回り道になってしまうことも十二分にあり得ます。
近道だと思ってたのに、実際は全然近道でも通り道ですらもなくて、永遠にたどり着けないということも、これまたありがちな事象です。
ほんと。
僕は迷い牛にでも憑かれたんでしょうかね。


置いといて。
それでは、今回の内容ですが、

  • 普通に書かれたHTMLファイルの読み込み

のみです。
ええ、まだ全然なんですよ。
まあ、その辺はよしとして。
始めます。

普通に書かれたHTMLファイルの読み込み:

Googleチュートリアルでは、テンプレートを用いたHTMLの例が掲載されています。
でも、既に書かれたHTMLを使いたい場合もある訳です。
実は、その後に書かれたCSSファイルの扱い方を応用すれば簡単にできるんですが、それに気づくまでに僕は結構時間かかっちゃいました。
そういう訳で、一応メモです。


詳しくはチュートリアルCSSの扱い方に譲るとして、静的なファイル、つまりCGIなどで動的に作るのではないHTMLファイルなどは、プロジェクトのトップディレクトリに置いても見つけてくれませんでした。
たぶん、app.yamlでファイルの所在を明言する、あるいはディレクトリを指定しないと見つけてくれないんでしょう。裏を返せば、存在していても明言しなければないことになるということです。この辺は、また後でも触れます。


で。
チュートリアルにならい、まず以下のようなディレクトリ構成にしました。プロジェクトディレクトリ(僕はそう呼んでます)名は、testです。

test/ 
 |-- index.py
 |-- app.yaml
 |-- html-files/ 
      |-- index.html

で、各ファイルの中身ですが、index.pyは、

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
  def get(self):
    self.response.headers['Content-Type'] = 'text/html'
    self.response.out.write('<a href="/html/index.html">test</a>')

application = webapp.WSGIApplication([('/', MainPage)],debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

次に、app.yaml

application: test
version: 1
runtime: python
api_version: 1

handlers:
-  url: /html
   static_dir: html-files

-  url: /.*
   script: index.py

そして、index.html、

<html>
<body>
Good bye, world.
</body>
</html>

簡単な例ということで、内容は簡素なものです。
試して頂いた上でコードの内容を見ていただければ、尚わかりやすいと思います。


ポイントは以下の2点です。

  • 静的なファイルは、置く場所を作っておく。
  • app.yamlのurlはstatic_dirのエイリアスのようなもの。

この内、2点目に関しては、特にtomcatなどを使ったことがある方は経験があると思いますが、要するにローカルのディレクトリにおけるファイルの位置とウェブ上のURLにおけるアドレスとを対応づけているという感じです。
言葉足らずで申し訳ないですが。
だから、上下で文字が異なるんです。逆に、違っていても構わないんです。app.yamlで対応付けさえ、きちんとなされていれば大丈夫です。
加えて、前述のファイルを見つけてくれない云々の件ですが、今トップのtestディレクトリにあるファイルはapp.yamlにおいてindex.pyのみです。だから、ここにindex.htmlを置いてリンク張ろうとしても、index.htmlを見つけてはくれないのです。
app.yamlは重要です。

2010/12/24 追記:

よくよく考えてみると、チュートリアルにおけるindex.htmlは認識されている訳ですから、存在しないことにはならないということです。
この辺は、まだ要検証ということで「嘘かいてんじゃねぇ!」とか突っ込まないでください。
おそらく、チュートリアルにおける絶対パス指定が鍵になってくるのだと思いますが、それもやりようがある気がしてならないので、色々検証した上で改めて訂正させていただきたいと思います。
仮にここを参照している方がいらっしゃいましたら、ご迷惑おかけしてすみませんでした。
まあ、いちいちこうして謝ってたら、僕はこの日記における全ての記事で謝罪しなければならなくなりそうですが。

追記 Part2:

やっぱり、静的なHTMLファイルは置き場所を作った方が楽だとおもいます。絶対パスなら行けるとか思ったんですが、面倒過ぎて検証もそこそこしかしてませんが……。
何かご存知の方、ご一報くださるとありがたいです。

結論:

実際にチュートリアルを進めると、helloworld.pyは、

import cgi

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
import os
from google.appengine.ext.webapp import template

class Greeting(db.Model):
  author = db.UserProperty()
  content = db.StringProperty(multiline=True)
  date = db.DateTimeProperty(auto_now_add=True)

class MainPage(webapp.RequestHandler):
  def get(self):
    greetings_query = Greeting.all().order('-date')
    greetings = greetings_query.fetch(10)

    if users.get_current_user():
      url = users.create_logout_url(self.request.uri)
      url_linktext = 'Logout'
    else:
      url = users.create_login_url(self.request.uri)
      url_linktext = 'Login'

    template_values = {
      'greetings': greetings,
      'url': url,
      'url_linktext': url_linktext,
      }

    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path, template_values))

class Guestbook(webapp.RequestHandler):
  def post(self):
    greeting = Greeting()

    if users.get_current_user():
      greeting.author = users.get_current_user()

    greeting.content = self.request.get('content')
    greeting.put()
    self.redirect('/')

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/sign', Guestbook)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

こうなるというのが、当初分からなかった。
バカでごめんなさい……。

GAEカテゴリを作りました

Pythonカテゴリでも良かったんでしょうが、何となく何となしに新しいものにカテゴライズしました。
カテゴリ作っただけで更新しないパターンは考慮してません。
あしからず。


そういうことで。
GAE(ぎゃえ)こと、Google App Engineをいじり始めました。
いよいよ、競技開始です。
何言ってるかさっぱりだーという人は、龍巻閃で受け流してください(ただし、暴力反対です)。
今日書くのは、とりあえずアップロードまでの簡単な作業記録になります。とは言え、本家本元正当血統の血統書付きチュートリアルを読んだだけで出来ることなので、ほんとにただの記録です。
もはや、ただの落書きです。
それではそれでは、そんな落書きを読んでくださる方は、続けてどうぞ。

GAEにアプリケーションをアップロードしよう:

と思ったから、わざわざGoogleアカウントまで作った訳ですが。
さて、まあ本店のチュートリアルではプログラミング学習ではもはやお約束と言ってもいい、helloworldプログラムを作っていますが、全くその通りにはしてません
同じことをしてますが、内容が少し違うのでご注意を。


まず、僕はUbuntuPython使って開発する気ですが、Ubuntuに入っているPythonのバージョンは2.6です。Googleでは2.5を推奨してますが、「え?同じ2.x系列なら余裕じゃね?」と安易にそのまま使ってます。
まず、この点をご了承ください。必要によってバージョンを調整するかもしれませんが、それはまたそうなったときに追記します。


では、やったことを列挙します。

  1. SDKをダウンロード
  2. プログラム書き書き
  3. アップロード

大雑把過ぎますね。でも、それだけ簡単に出来てしまうとも言えます。
では、順を追って記録していきます。

SDKをダウンロード:

Google様からSDKをダウンロードします。
僕の場合は、Linux(Ubuntu)でのPythonによる開発なので、『Google App Engine SDK for Python』のLinux対応のSDKをダウンロードします。
ちなみに、この場合の配布形式はzipです。形式は窓がmsi、りんごがdmgです。
そんなことはさておいて、早速展開してみましょう。
どうでもいいですが、季節柄、時事ネタというものですが、クリスマスプレゼントの包装って必要ですか?最後には結局ビリビリに破られてしまうのに……。
まあ、幼少時代の僕が綺麗に外していたかと言うと、案外綺麗にはいだものを取っておくタイプでした。
最終的にはゴミになるんですが、ダンボールでもなんでも、何か作れそうとか思ってとっておく習性があったんですよ。
それはもうプリンのカップだって、コレクションしてるみたいにとってました。
でも、最終的に作ったものも結局ゴミなんです。
ただ、それは作る過程がおもしろいのであって、出来上がるものは気にならないだけなんです。
そういうことが出来るのも、時間や利益をあまり意識しない子供の間だけなのかもしれませんが。
そんな訳で。
どうでもいい話、終了。


以下、Ubuntuにおいての開発記録とお考えください。
さて、展開するとそこに現れるのは、google_appengineディレクトリ。
夢がいっぱい詰まってます。
ここに、一通りのツールが揃っていて、何かのインストールなどは不要でした。
ダウンロードしたのは、これ1式のみです。

プログラム書き書き:

で。
チュートリアルに沿って進めるのなら、ここでhelloworldディレクトリ作るんですが、僕は違う名前でディレクトリを作りました。
どんな構造にしているかと言うと、

~/gae-works/ --- google_appengine/
             |--project/ --- warehouse/ --- index.py
                                        |-- app.yaml

みたいな感じです。
要するに、チュートリアルで言うhelloworldがwarehouseに対応するように、色々ファイル名が違うだけということです。


んで、それぞれのファイルの中身はと言うと、index.pyは、

print 'Content-Type: text/plain'
print ''
print 'This is the test.'
print 'Sorry, a service will be available soon.'

んで、app.yamlは、

application: <application-ID>
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: index.py

にしました。
各記述の詳細は大元に譲ることにして、こんな感じで書きました。
ここで、app.yaml中のですが、これはアップロードの際に登録する識別子のようなものです。
たとえばGoogleが無料で貸してくれるappspot.comを使うのであれば、サイトのURLは以下のようになります。

http://<application-ID>.appspot.com

アップロードの詳細は後述しますが、この時登録したIDによってアプリケーションを識別するので、ここを合わせないと困ったことになります
最後は、アップロードするだけです。

アップロード:

既にGAEのアカウントはある体で話を進めます。
アップロード自体はコマンド一発で終了です。
僕の場合なら、上記のようなディレクトリ構成にて、

% ./google_appengine/appcfg.py update project/warehouse/

とするだけでした。
まあ、ユーザー認証(アドレスとパスワードの入力)はありますが。
アップロードに成功すれば、晴れてweb上にアプリケーションが晒されます。
ページのURLは前述のとおり、

http://<application-ID>.appspot.com

です。

結論:

開発環境が2.6.6でも、凝ったことしなきゃ大丈夫そうだ。