datastoreのModelクラスを何度もリファクタしながらローカル開発サーバでテストしていると、index.yamlに、不要なインデックス設定が残ったままになってしまう。 これをきれいにするため、index.yamlの中身を全削除してから実行すると、ローカル開発サーバが…
まずはSleepメソッドを自作する。 function Sleep(msec) { var d = $.Deferred(); setTimeout(function() { d.resolve(); }, msec); return d.promise(); }繰り返したい処理の本体の実装。こちらも、Deferredを返すようにしておく。 function MyFunc(cnt) { …
サーバのデータをローカル開発サーバ上にリストアする方法。 自身のアプリケーションIDを APP_ID とします。 appcfg.py download_data --application=`APP_ID` --url=http://APP_ID.appspot.com/_ah/remote_api --filename=hoge.dump --email=Googleアカウン…
自分の中でごっちゃになっていたので整理する。 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…
つい今しがた、1ヶ月ぶりぐらいに、gcloud components update をやったら、ローカル開発サーバが起動しなくなってしまった。 エラーログ Running dev_appserver with the following flags: --skip_sdk_update_check=yes --port=12080 --admin_port=8004 --l…
targetに指定するものは、app.yaml における version です。 サーバにリリースはしたが、デフォルトは別のバージョンにしている、などの時に使うもの。
cron: - description: test job url: /hoge schedule: every day 18:00 timezone: Asia/Tokyo target: rev01という感じでタイムゾーンを指定しても、ローカル開発サーバではタイムゾーンを考慮してくれません。
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を、仮に、APP_ID とする。 app.yaml application: APP_IDで、これをローカル開発サーバで実行させると、アプリケーションIDは、 dev~APP_IDとなる。これはどこでわかるかというと、ローカル開発サーバの管理コンソール(http://localhost…
bulkloaderの使い方についてググると、古い情報ばかりヒットして混乱するので、まとめる。 やりたいこと csvファイルを本番サーバのdatastoreにインポートする。 前準備 app.yaml に、次の2行を追加する。 builtins: - remote_api: onなお、ググると、次をa…
<input type="file" accept="text/comma-separated-values" />
http://d.hatena.ne.jp/noazoh/20150115/1421315583 の続き。Googleアカウントによる認証をせずとも、対象バケットへのアクセスが出来るようにしてみる。 コード 次に、サンプルコードを次のように変更する。 531行目〜 /** * Handle authorization. */ func…
定義済みACLの一覧: https://cloud.google.com/storage/docs/accesscontrol#predefined-aclこれをバケットに適用するには、次のコマンドをたたく。 gsutil acl set public-read gs://バケット名
通常バケットの作成直後の状態 gsutil acl get gs://通常バケット名 [ { "entity": "project-owners-プロジェクト番号", "projectTeam": { "projectNumber": "プロジェクト番号", "team": "owners" }, "role": "OWNER" }, { "entity": "project-editors-プロ…
GCSにjavascriptを用いてアクセスできるライブラリを試した。サンプルコード https://github.com/GoogleCloudPlatform/storage-getting-started-javascript 参考ページ http://qiita.com/noazoh/items/f893e5197f8ef56876a9注意事項は参考ページに書いてある…
ここでテストできる。 https://developers.google.com/apis-explorer/#p/storage/v1/テストのやり方は後述
問い:GAEのローカル開発サーバは、devserver.py ですが、GCSのローカル開発サーバに相当するものはあるのか?こたえ:ある(SDK 1.8.1以上であれば) 使い方 通常のローカル実行時と同様、ローカル開発サーバを起動。GAELauncherから実行するとか。 起動し…
PySideのインストール手順 1.Pythonのインストール(割愛) 今回はPython2.7を入れてある環境でやってる。2.pipのインストール このファイルをダウンロードする。 コマンドラインから、pythonインタープリタでダウンロードしたpyを実行する。 python get-pip…
gcloud auth login アカウント認証を行うのと同時に、そのアカウントがアクティブアカウントに設定される。ターミナル内でそのアカウントでログインしている的な状態となり、以降のgcloudやgsutilコマンドでの操作がそのアカウントによる操作となる。新たに…
たわむれに、作成したデフォルトバケットを削除してみたところ、削除は出来たのだが、再作成しようと思い、GAE管理コンソールのApplication Settingsを開いてみると、例のcreateボタンが無く、「作成されましたよ」的なメッセージが表示されている。バケット…
Google App Engineのプロジェクト毎に、Google Cloud Storageのデフォルトバケットを作成することができる。やり方: AppEngine管理コンソールより Application Settings -> Cloud Integration -> createボタンをクリックGoogle Developers Console(以後、…
前日の続きです。こういう考えに基づいて、メリットとデメリットを勘案した上で、Excelツールを作って運用にあげたとします。 そうすると得てして起こりがちなのが、 勘案した上で気にしない事にしたデメリットの存在をすっかり忘れてしまう ということです…
いつもと少し毛色の違った話題。システム屋をやっていると、Excelに数式やVBAマクロを埋め込んだツールを作り込むことがよくあります。自分やチーム用の便利ツールとして作るときもあれば、構築したシステムの補助輪的役割をもつものであったり、逆に業務の…
GAELauncherによるupdateでは、/usr/local/bin および /usr/local 配下にシンボリックリンクが作成される。 gcloudでupdateすると、それは作成されない。Cloud SDK を完全にアンインストールするには、次のようにしたらいいんじゃないかと思う。 google-clou…
いつからそうなったのか、きっかけがわからないし、未だに解決していないのだが、起こったこと時系列でメモしてみる。 OAuth の検証をしようと思い、とあるサンプルコードをダウンロードして、ローカル開発サーバで実行してみた。 認証処理の途中で、from n…
過去記事 http://d.hatena.ne.jp/noazoh/20140731/1406783304 の補足。開発サーバのログレベルはアプリケーションごとに設定することができる。Google App Engine Launcherにて、プロジェクトのApplication Settings で、起動時フラグを設定してやることによ…
HTTP GETおよびPOSTのリクエストメッセージにサイズ制限はあるのか?調べ中。GETメッセージ2047byte説がある。2009年の記事。 http://d.hatena.ne.jp/Kazumi007/20090921/1253501500 POSTメッセージ10MByte説がある。2011年の記事。 http://php6.jp/python/2…
リストを逆順に並べ替えるにはいくつか方法があるが、そのうちの リストオブジェクト.reverse()であるが、これって、逆順に並べ替えた結果を返すfunctionなのではなく、リストオブジェクトの中身を実際に並べ替えてしまうmethodなんですね。 つまり、こうい…
タイトルだけ見ると、当たり前すぎて何言ってんの感があるわけだが。こんなWebページがあるとする・・・クリッカブルマップがあり、そのマップ上の地点をクリックすると、その地点に関するとあるデータがダウンロードできるようなWebページが。 この地点が膨…
絶対忘れるので書いておく。まず、pythonでcsvを読み込むには、csv.reader() を使う。 これは、1行分のデータが配列になって帰ってくるものなので、項目の何番目は何の項目、ってのを自分でわかっている必要がある。次に、csvファイルの先頭行をヘッダとして…