ローカル開発中、index.yamlの不要なインデックス設定を削除しても復活してしまう場合

GAE

datastoreのModelクラスを何度もリファクタしながらローカル開発サーバでテストしていると、index.yamlに、不要なインデックス設定が残ったままになってしまう。 これをきれいにするため、index.yamlの中身を全削除してから実行すると、ローカル開発サーバが…

$.Deferredを使って、一定間隔でスリープしながらループする

まずはSleepメソッドを自作する。 function Sleep(msec) { var d = $.Deferred(); setTimeout(function() { d.resolve(); }, msec); return d.promise(); }繰り返したい処理の本体の実装。こちらも、Deferredを返すようにしておく。 function MyFunc(cnt) { …

サーバ上のdatastoreをローカル開発サーバにリストアする

GAE

サーバのデータをローカル開発サーバ上にリストアする方法。 自身のアプリケーションIDを APP_ID とします。 appcfg.py download_data --application=`APP_ID` --url=http://APP_ID.appspot.com/_ah/remote_api --filename=hoge.dump --email=Googleアカウン…

ndbのquery結果の件数を取得する方法

GAE

自分の中でごっちゃになっていたので整理する。 Queryのcount()のリファレンスには、こうある。 This returns the same result as len(q.fetch(limit)) but more efficiently. query = MyModel.query(条件) cnt = query.count() #OK cnt = len(query) #NG cn…

ローカル開発サーバ起動時に import docker でエラーが発生するようになった(2015/02/26時点)

GAE

つい今しがた、1ヶ月ぶりぐらいに、gcloud components update をやったら、ローカル開発サーバが起動しなくなってしまった。 エラーログ Running dev_appserver with the following flags: --skip_sdk_update_check=yes --port=12080 --admin_port=8004 --l…

cron.yaml における target の意味

GAE

targetに指定するものは、app.yaml における version です。 サーバにリリースはしたが、デフォルトは別のバージョンにしている、などの時に使うもの。

ローカル開発サーバでCronJobのテストをする際の注意点

GAE

cron: - description: test job url: /hoge schedule: every day 18:00 timezone: Asia/Tokyo target: rev01という感じでタイムゾーンを指定しても、ローカル開発サーバではタイムゾーンを考慮してくれません。

ndbでDISTINCTなSELECTをするには

DISTINCTのやり方 import pprint from google.appengine.ext import ndb from src.models import my_model #というモジュールがあるとして query = my_model.MyClass.query( projection=[ my_model.MyClass.property1, my_model.MyClass.property2 ], distin…

デプロイ時のアプリケーションIDの指定について

GAE

アプリケーションIDを、仮に、APP_ID とする。 app.yaml application: APP_IDで、これをローカル開発サーバで実行させると、アプリケーションIDは、 dev~APP_IDとなる。これはどこでわかるかというと、ローカル開発サーバの管理コンソール(http://localhost…

bulkloaderの使い方

GAE

bulkloaderの使い方についてググると、古い情報ばかりヒットして混乱するので、まとめる。 やりたいこと csvファイルを本番サーバのdatastoreにインポートする。 前準備 app.yaml に、次の2行を追加する。 builtins: - remote_api: onなお、ググると、次をa…

ファイル選択コントロール(input[type="file"])にて、CSVだけを選択可能にする方法

<input type="file" accept="text/comma-separated-values" />

Google Cloud Storage JSON API Client for JavaScript を試す(2)アクセス制御関係

GCS

http://d.hatena.ne.jp/noazoh/20150115/1421315583 の続き。Googleアカウントによる認証をせずとも、対象バケットへのアクセスが出来るようにしてみる。 コード 次に、サンプルコードを次のように変更する。 531行目〜 /** * Handle authorization. */ func…

バケットに定義済みACLを適用する

GCS

定義済みACLの一覧: https://cloud.google.com/storage/docs/accesscontrol#predefined-aclこれをバケットに適用するには、次のコマンドをたたく。 gsutil acl set public-read gs://バケット名

デフォルトバケットと通常バケットのACLの初期値

GCS

通常バケットの作成直後の状態 gsutil acl get gs://通常バケット名 [ { "entity": "project-owners-プロジェクト番号", "projectTeam": { "projectNumber": "プロジェクト番号", "team": "owners" }, "role": "OWNER" }, { "entity": "project-editors-プロ…

Google Cloud Storage JSON API Client for JavaScript を試す

GCSにjavascriptを用いてアクセスできるライブラリを試した。サンプルコード https://github.com/GoogleCloudPlatform/storage-getting-started-javascript 参考ページ http://qiita.com/noazoh/items/f893e5197f8ef56876a9注意事項は参考ページに書いてある…

Google Cloud Storage JSON APIのテストツール

ここでテストできる。 https://developers.google.com/apis-explorer/#p/storage/v1/テストのやり方は後述

Google Cloud Storegeのローカル開発サーバ

問い:GAEのローカル開発サーバは、devserver.py ですが、GCSのローカル開発サーバに相当するものはあるのか?こたえ:ある(SDK 1.8.1以上であれば) 使い方 通常のローカル実行時と同様、ローカル開発サーバを起動。GAELauncherから実行するとか。 起動し…

PySideインストール on Windows

PySideのインストール手順 1.Pythonのインストール(割愛) 今回はPython2.7を入れてある環境でやってる。2.pipのインストール このファイルをダウンロードする。 コマンドラインから、pythonインタープリタでダウンロードしたpyを実行する。 python get-pip…

gcloudにおけるアカウント管理

GAE

gcloud auth login アカウント認証を行うのと同時に、そのアカウントがアクティブアカウントに設定される。ターミナル内でそのアカウントでログインしている的な状態となり、以降のgcloudやgsutilコマンドでの操作がそのアカウントによる操作となる。新たに…

デフォルトバケットを削除したら再作成する方法が無い(たぶん・2015/01現在)

たわむれに、作成したデフォルトバケットを削除してみたところ、削除は出来たのだが、再作成しようと思い、GAE管理コンソールのApplication Settingsを開いてみると、例のcreateボタンが無く、「作成されましたよ」的なメッセージが表示されている。バケット…

Google Cloud Storageのデフォルトバケットを作る

Google App Engineのプロジェクト毎に、Google Cloud Storageのデフォルトバケットを作成することができる。やり方: AppEngine管理コンソールより Application Settings -> Cloud Integration -> createボタンをクリックGoogle Developers Console(以後、…

続・Excelで作ったツールを業務運用にのせる場合に考えておくべきこと

前日の続きです。こういう考えに基づいて、メリットとデメリットを勘案した上で、Excelツールを作って運用にあげたとします。 そうすると得てして起こりがちなのが、 勘案した上で気にしない事にしたデメリットの存在をすっかり忘れてしまう ということです…

Excelで作ったツールを業務運用にのせる場合に考えておくべきこと

いつもと少し毛色の違った話題。システム屋をやっていると、Excelに数式やVBAマクロを埋め込んだツールを作り込むことがよくあります。自分やチーム用の便利ツールとして作るときもあれば、構築したシステムの補助輪的役割をもつものであったり、逆に業務の…

Google Cloud SDK を完全にアンインストールする方法

GAE

GAELauncherによるupdateでは、/usr/local/bin および /usr/local 配下にシンボリックリンクが作成される。 gcloudでupdateすると、それは作成されない。Cloud SDK を完全にアンインストールするには、次のようにしたらいいんじゃないかと思う。 google-clou…

【未解決】CloudSDKをアップデートしたら、PATHが最新のディレクトリにならない→対処療法あり

GAE

いつからそうなったのか、きっかけがわからないし、未だに解決していないのだが、起こったこと時系列でメモしてみる。 OAuth の検証をしようと思い、とあるサンプルコードをダウンロードして、ローカル開発サーバで実行してみた。 認証処理の途中で、from n…

loggingのログレベルの指定方法

GAE

過去記事 http://d.hatena.ne.jp/noazoh/20140731/1406783304 の補足。開発サーバのログレベルはアプリケーションごとに設定することができる。Google App Engine Launcherにて、プロジェクトのApplication Settings で、起動時フラグを設定してやることによ…

HTTPリクエストのメッセージ長の制限は?

GAE

HTTP GETおよびPOSTのリクエストメッセージにサイズ制限はあるのか?調べ中。GETメッセージ2047byte説がある。2009年の記事。 http://d.hatena.ne.jp/Kazumi007/20090921/1253501500 POSTメッセージ10MByte説がある。2011年の記事。 http://php6.jp/python/2…

リストを逆順に並べ替えるreverse()メソッドには戻り値がない

リストを逆順に並べ替えるにはいくつか方法があるが、そのうちの リストオブジェクト.reverse()であるが、これって、逆順に並べ替えた結果を返すfunctionなのではなく、リストオブジェクトの中身を実際に並べ替えてしまうmethodなんですね。 つまり、こうい…

ウェブブラウザの自動テストにおいて、クリックできない場所にあるエレメントはclick()できない

タイトルだけ見ると、当たり前すぎて何言ってんの感があるわけだが。こんなWebページがあるとする・・・クリッカブルマップがあり、そのマップ上の地点をクリックすると、その地点に関するとあるデータがダウンロードできるようなWebページが。 この地点が膨…

文字コードがUTF-8のCSVファイルを読み込む

絶対忘れるので書いておく。まず、pythonでcsvを読み込むには、csv.reader() を使う。 これは、1行分のデータが配列になって帰ってくるものなので、項目の何番目は何の項目、ってのを自分でわかっている必要がある。次に、csvファイルの先頭行をヘッダとして…