アーカイブ

‘開発環境’ カテゴリーのアーカイブ

409 Conflict No transaction is in progress で appengine にデプロイできない

2011 年 11 月 11 日 tdtsh Comments off

今日、GAE/Jでeclipseからデプロイしようとすると、失敗しました。
ダイアログはこんな感じです。

Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/startserving?app_id=XXXXXXX&version=XXXX&
409 Conflict
No transaction is in progress.

前にも何度かやった気がするけどイチイチ忘れるんでメモ。

appengine java sdk がインストールされていればそれを使えばいいんだけど、eclipse の Plugin としてインストールしているなら、eclipse のインストールディレクトリのpluginの中にSDKがそっくり存在します。

私のいまの環境ではこんな感じでした。


cd c:\eclipse\plugins
\com.google.appengine.eclipse.sdkbundle_1.5.5.r36v201110112027
\appengine-java-sdk-1.5.5\bin
(実際は1行)

appcfg.cmd rollback c:\git\PROJECTNAME\war

参考にした先人の知恵

一日一歩: GAE/J デプロイにて 409 conflict が出た場合の対処

カテゴリー: Google App Engine, eclipse, 開発環境 タグ:

Slim3 1.0.14 とCross-Group Transactions

2011 年 11 月 2 日 tdtsh Comments off

Slim3が1.0.14になってる訳ですが、手もとのeclipseを確認したら、slim3-1.0.12.jarじゃないですか。

Slim3 Eclipse Pluginで横着してたんで、気がつきませんでした。

ソフトウェアの更新で出現しないんですけど、勝手にjarを入替えちゃってもいいんですかね。

というかPluginで入れても、更新は手作業なのかな。 (後日ちゃんとslim3pluginのアップデートが配信されました (2011/11/09 追記))

やってみた。いけた。

Slim3 1.0.14から、appengine SDK 1.5.5のリリースを受けて、グローバルトランザクション周りが変わっているようです。

Datastore.beginGlobalTransaction() じゃなく、フツーのDatastore.beginTransaction() で、Cross-Group Transactionsに対応しているとか。

5 entity groupsまでなら、複数Entity Groupをぶっこんでも、問題なく更新とかできる様になっている筈。

今までは複数のEntity Groupをトランザクションに含めると「IllegalArgumentException:can’t operate on multiple entity groups in a single transaction.」とか怒られたんですが、今回からは 5 Entity Group 以上を含んだ場合出るのかな。

また今度ちゃんと試します。

試しました (2011/11/09 追記)

・・・おそらく GTXの実装には苦労された事と思うんですが、ひがさんの心中や如何に。

カテゴリー: Google App Engine, eclipse, slim3, 開発環境 タグ:

EVO と Macbook Air が有ればマクドで仕事できますよね

2011 年 10 月 22 日 tdtsh Comments off

いや、そんなにMac使い込んではいないですけど。

Google App Engine での開発とか、Macでブラウザとeclipse があれば、あとはWiFi か HTC EVOでテザリングで開発できちゃう訳です。
オフィスに居る必要性がどんどん薄くなり、いやむしろマクドやスタバの方が捗るんですけど。

とはいえ実際の仕事はコード書くだけでは無いんですが、IT化が進み、パソコンを持ってないビジネスマンなんか居ないと言っても過言じゃ無い昨今、テキストよりも肉声のコミュニケーションを重視するというか、単にめんどくさいんかタイピングが遅いんか、兎に角会議とか電話とか好きな人もいる訳です。

仕事はチームワーク発揮しないとダメなやつが大半なんで、メンバのコミュニケーションの質と量はそれはそれは大切な訳です。けれども、コーディングしている時とかこっちはフロー状態を維持したいものですから、そりゃもうちゃんとメリハリつけてやりたいんですよ。
時間を決めて、午前中は調整とか会議とかそういうのん、午後は会話禁止、とか。そすると調整や会議が仕事の人は半日で帰れますね!

因みにHTC EVOは会社支給のやつで、会社のIPフォンから内線もかけられるんで、更にどこでもええやん感がアップしています。コレはGJですよ。最終的には社員全員が首の後ろにジャックを設けて、ケーブルを通じて脳から脳へ直接伝達できるのんを情シスのひとたちが導入してくれるのを待っています。

で、スマホにBluetoothのヘッドセットをつないでホワイトノイズを流せば、外界のノイズは遮断されますし、電話があればすぐ出られます。マイク位置が耳のとこなんで声が聞こえにくいとすこし不評ですけど。
で、マクドの2階とかで、40過ぎのオッサンがワイヤレスのヘッドフォンつけてMacbook Airとスマホ2台をカチャカチャやってる訳です。本人はカッコいいつもりですが端から見るとハイパーメディアクリエイターかぶれみたいですかそうですか。

それにしても正直10年以上使い込んでるNT系のWindowsよりMBAが良いと思えるか、使ってみるまで判らなかったです。
あとはeclipseでjavaScriptのコーディングとかデバッグとか良い感じになればもっと良いです。どうすればいいんでしょうね。

因みにヘッドセットはコレです。iPhone と EVOで電話が出来て音楽が聞ければいいんで。安いのにナカナカよいですよ。

GAE/J で Python の bulkloader をつかってみる

2011 年 8 月 16 日 tdtsh Comments off

 
Java版のbulkloaderが出ると信じて待つこと1年以上、for businessもスベッてしまい、いまだその気配もなく。

痺れを切らして、普段 GAE/Jな私が、Python版のbulkloaderを使ってみました。

普段GAE/Jなので、スタートガイド Python 開発環境 / Google codeを参考に、環境作りからはじめます。

 

Pythonをインストール

Download – Pythonから手繰り、私の場合はWindows (未だにXPデス)なので、Windows x86 MSI Installer なんをインストールします。最新は2.7.2の様です。
Macなら最初から入っていますし、Linuxも大概のディストリビューションで最初から入っています。

 

Google App Engine SDK for Python をインストール

GAE/JなヒトでもPython版SDKを既に入れている方もいるかもしれませんが、入れてないヒトは入れましょう。

Google App Engine SDK のダウンロードから、Google App Engine SDK for Pythonをインストールします。最新は1.5.2でした。

とりあえずCドライブ直下に置きました。
インストールディレクトリは c:\appengine-python-sdk-1.5.2 となりました。
これを環境変数PATHに追加しときます。

 

GAE/J側の準備

既存プロジェクトの web.xmlを編集し、GAE/J側のRemoteApiServletを有効化?します。

	<servlet>
		<servlet-name>remoteapi</servlet-name>
		<servlet-class>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>remoteapi</servlet-name>
		<url-pattern>/remote_api</url-pattern>
	</servlet-mapping>

勿論この後デプロイします。

 

設定ファイル (yaml) を作成

cmd.exe を起動し、appcfg.py で create_bulkloader_config を実行します。

cd c:\appengine-python-sdk-1.5.2
appcfg.py create_bulkloader_config --url=http://{appId}.appspot.com/remote_api --application={appId} --filename=config.yml

High Replicationの場合は、–application の引数のアタマに s~ をつけないといけないみたいです。
こんな風に。

cd c:\appengine-python-sdk-1.5.2
appcfg.py create_bulkloader_config --url=http://{appId}.appspot.com/remote_api --application=s~{appId} --filename=config.yml

自動生成されたconfig.yml には、そのとき appengine側に存在する kind のスキーマを反映したものになっているようです。

アップロード/ダウンロードするkindが限定されている場合などは、このymlファイルを編集して対象kindだけのymlファイルを作っても良い。

自動生成されたymlファイルは、TODO: の記述がいくつかあり、ココを適宜修正する必要があります。
最低でもconnector (と connector_options )を編集します。

  connector: # TODO: Choose a connector here: csv, simplexml, etc...
  connector_options:
    # TODO: Add connector options here--these are specific to each connector.
↓
  connector: csv
  connector_options:
    encoding: utf-8

 

CSVアップロード

ダウンロードするには、こんな感じ。

appcfg.py download_data --filename=test2.csv --config_file=test.yml --url=http://{appId}.appspot.com/remote_api --application=s~{appId} --kind={ClassNameOfKind} -v

アップロードはこんな感じ。

appcfg.py upload_data --filename=test.csv --config_file=test.yml --url=http://{appId}.appspot.com/remote_api --application=s~{appId} --kind={ClassNameOfKind} -v

参考にさせて頂いた先人の知恵

pomu0325: [GAE] bulkloaderをGAE/Jで使う

Javaプログラマの為のGAE/py bulkloader – GAE/py環境設定 – - 高卒文系プログラマの日常 by zetta1985

きのふよりけふ、けふよりあした  未分類

CSVファイルのデータをアップロードする方法 – 気楽に開発メモ

Using the bulkloader with Java App Engine – Ikai Lan says

カテゴリー: Google App Engine, java, クラウド, 開発環境 タグ:

eclipse で slim3 のbuild.xmlを開いてもアウトラインに何もでない

2011 年 5 月 24 日 tdtsh Comments off

eclipse で slim3 の開発をやるとき、build.xmlを開いて「アウトラインビュー」でコントローラとかモデルとか作れて便利ですよね。

私は手で作っちゃう事も結構ありますけど、大量に書くときはやはりeclipseです。

で、久しぶりにやろうと思ったら、なんかOutlineが真っ白です。
eclipse(Gallileo)の調子が悪いのかな。そういえばAndroidのプラグインとか入れてエミュレータを動かしたとき、エミュレータを終了できなくなっちゃったり、最近怪しいです。
日本語化とかするんじゃなかった。
とか思いながら、この際だからとHeliosに入れなおしました。
今回は日本語化もせず、プラグインとかも最低限にしました。

で、slim3のブランクプロジェクトを作って、build.xmlを開いたんですが、やっぱりアウトラインは真っ白です。

原因は全然別にあって、[Preferences] – [General] – [Editors] – [File Associations]で、*.xmlがJavaエディタとかに関連づけられてたからでした。
Ant Editorをデフォルトにすると治りました。

冷静に考えれば判ったはずですが、最初はググっても情報なくて焦りました。

カテゴリー: Google App Engine, eclipse, slim3, 開発環境 タグ: