2018/10/14

GCP: Google App EngineのランタイムPython3.7を使ってみる1 -- Hello World

GAEのStandard Environment に、Python3のランタイムがbeta版でリリースされていたので使ってみる。SecondGenerationというらしい。OPENCVかPillowが使えるかどうか?までテストする予定。まずはHello Worldまで。
https://cloud.google.com/appengine/docs/standard/python3/
  • Goal
    GAEのStandardEnvironmentにおいて、Python3.7のランタイムを使ってHelloWorldする。
  • How
    1. app.yaml, main.py, requirement.txt を用意する。サンプルは以下。
      https://github.com/pumpkinpietea/py37.git
    $ ls -lt
    total 32
    -rw-r--r--@ 1 Toshi_Admin  staff  817 Oct 14 11:22 app.yaml
    -rw-r--r--  1 Toshi_Admin  staff  101 Oct 14 10:08 README.md
    -rw-r--r--@ 1 Toshi_Admin  staff  956 Oct 14 01:17 main.py
    -rw-r--r--@ 1 Toshi_Admin  staff  197 Oct 14 00:11 requirements.txt
    2. ローカルでテスト
         $ pip install -r requirements.txt
         $ python main.py
    3. deploy

          $ gcloud app deploy ./py37/app.yaml


  • Comment
    1. libフォルダーに、pip -t でインストールは不要。逆にすべてrequirements.txtに記入する必要がある。
    2. ローカルテスト用のdev_appsever.py は、使えない。
      逆に普通に、local で実行すればよい。便利になった!
    3. deploy は、gcloud コマンドで実施が必要、appcfg.py は、使えない。
    4. 普通のpython3をそのままGAE上で動かす事を狙っているようなので、Cとかのライブラリも動くと思われる。別途テスト予定。

2018/10/13

3ヶ月の使い方で人生は変わる 佐々木大輔 ー 本

メモ
 1.ある意味「いらない」と言われていること自体が業界のニッチな状況を作る参入障壁となっている。p57 --- 問題の本質が見えにくくなることはよくあり、Userにいらないと言われたとしても、本当に価値があるかどうかまでUserがわかっている訳ではない。
 2.「これとこれを組み合わせるだけ」=イノベーション p61
 3.長期的なゴールも、3ヶ月ごとのテーマ設定が肝心
 4.まず考えるべきは「理想」や「本質的な価値」。自分の能力や、できることにとらわれる必要はない。理想を軸に考える癖をつければ、自分の能力を自分で制限することはなくなる。P71
 5.目標は自分がコントロールできること。ゴールは、「売上100万円(達成目標)」ではなく、「クライアントへの訪問回数20回(行動目標)」というように自分がやることに的を絞る。P73
 6.グーグルで働きながら、インターネットやAIを中心とするテクノロジーの活用で日本のすべてのビジネスをアップデートできるのではないか、という思いが強くなっていった。P76 
 7.長期的なゴールは、「世の中にどれだけ貢献できるか」p79
 8.どんな条件より「ストーリー」が大切。誰もが納得できる「腹落ち感」が欠かせない。p87
 ・誰に対して、何がしたいのか?
 ・それを実現できたら何がおきるのか?
 ・それにはどんな意味があるのか?
 9.意思決定の場を振り分ける「それは自分で決めたらいいんじゃない」「それは、あのチームの確認だけ取ってすすめる」「それは難しいから、だれを集めてミーティングしてきめよう」p95
 10.「他人の目を気にすると時間を奪われる」P102
 11.「この文書はわかりやすいか?これを読んだ人は行動してくれるか?」mail p111

平積みされてて、帯みて購入。あまり、3ヶ月の使い方って感じの本ではない。後半は、いわゆる仕事の効率化テクの記述がおおい。

2018/09/13

アマゾン 成毛 眞 ー 本

メモ
  1. ”プライム”マークは、自社で物流している会社でも表示できる。
    (アマゾンの提示するサービスレベルを満たせばもらえる)
  2. FBAサービス: 倉庫+配送業の請負もしてくれる。アマゾンに出店して、楽天に出店して、でも物流はアマゾン頼むとかできる
  3. ヒット商品だと判ると、中抜き・直販をする。結果、どこよりも低価格を出せる。
  4. 低関与商品(なんでもいいや)をダッシュボタンで取り込み。
  5. ADRS: トナーとかがなくなったら自動で発注。IoTのしかけ。
  6. 安い卸からから順番に必要な数になるまで仕入れる。何も考えなくてよい。結果、常にサプライヤから提示されている最安値で買える。サプライヤは安い値段を出す以外、取引ができない。
  7. アマゾンは、地域・商圏に縛られることも、販売促進協力も関係ない。安いものが売れる。(ECとは、そういうことだと納得する)
  8. KIVA: 物流倉庫のロボットは、アマゾンでしか使えないようにした。
  9. 卸の中抜きは安値の基本。2018年2月から、取次を経由するのを止めた。直販にした。
  10. 間接材のECについて、アマゾンサプライ(卸機能)をまずトライする。しばらくしたら、アマゾンビジネス(直販)をスタートした。B2Bの勉強のため?結果、今はアマゾンサプライは停止している。
  11. 配送業務のシェアリング、アマゾンフレックスというサービスもある。荷物を取りに来た、買い物に来たついでに、隣の家の人の荷物を持って帰る
  12. 音声認識は、家庭内のポストスマホとなる。
  13. ベゾスの考え:コミュニケーションを必要とする組織は、きちんと機能していないという証拠でしかない。協調よりも、個のアイデアが優先される組織がよい。

読みやすいのでサクサク行ける。

2018/09/08

silicon valley シリコンバレー

シーズン1〜シーズン4まで一気に見た。やたらF○ckって単語が出てくるのと、下ネタ重視、ちょっと差別的な話も多いけど面白い。あと、1話30分なので、通勤中に見やすいのと、深く考えずに見れるのがよかった。

英語としては、下ネタ系の言い回しを学ぶにはいいのかもしれない(テキトー)。
アマゾンプライムで視聴。

2018/09/02

GCP: GCP外のサーバーからDatastoreへデータをインポートする(GCPのKeyを使う場合)

  • Goal
    タブ区切りのテキストファイルをローカルマシン(OR AWSのEC2でも同じ)GCPのDatastoreにインポートする。pythonのプログラムで実施。

    前のPOSTのKeyを自分で設定しないバージョン

  • Case
    以下のようなテキストファイルを、Datastoreにインポートする。
    想定するのは、DatastoreをGAEのマスタのように利用していて、バッチで更新をするようなケース。keyは、GCPで自動設定されるKeyを使う。
    list.txtの中身(タブ区切り)
    id     shimei   score
    1234   山田      89
    2341   田中      90
    1238   佐藤      81

  • How
    1.GCPのコンソールで、Service Account Keyを作成する
     形式は、JSON
     権限は、DatastoreのOwner(これは、Import&Exportでも良いのかも?)
     作成された、JSONはローカルマシンのどこかに設置する。
    2.Google cloud datastore のクライアントライブラリをインストールする。
     ~$ pip install google-cloud-datastore
    3.pythonのプログラムでインポートする。
      ##utf-8に変換⇒Unicodeに変換して、インポートすること!
       あとで、Pythonから呼び出しをする事を想定している。


  • Result

GCP: GCP外のサーバーからDatastoreへデータをインポートする(keyを自分で設定する場合)

  • Goal
    タブ区切りのテキストファイルをローカルマシン(OR AWSのEC2でも同じ)GCPのDatastoreにインポートする。pythonのプログラムで実施。
    Keyは自分で設定したい。

    Keyを自分で設定する必要がない場合はこちら
  • Case
    以下のようなテキストファイルを、Datastoreにインポートする。
    想定するのは、DatastoreをGAEのマスタのように利用していて、バッチで更新をするようなケース。id をKeyとして登録したい。
    list.txtの中身(タブ区切り)
    id     shimei   score
    1234   山田      89
    2341   田中      90
    1238   佐藤      81
  • How
    1.GCPのコンソールで、Service Account Keyを作成する
     形式は、JSON
     権限は、DatastoreのOwner(これは、Import&Exportでも良いのかも?)
     作成された、JSONはローカルマシンのどこかに設置する。
    2.Google cloud datastore のクライアントライブラリをインストールする。
     ~$ pip install google-cloud-datastore
    3.pythonのプログラムでインポートする。
      ##utf-8に変換⇒Unicodeに変換して、インポートすること!
       あとで、Pythonから呼び出しをする事を想定している。


  • Result

2018/08/15

GCP: gcloud のバージョンアップ時のエラーと解消方法 on Windows Subsystem for Linux


  • GAEのFlexible environmentを利用するにあたり、コンソール画面でデプロイしたソースを見れるようにするには、gcloudを195以上にしないと駄目らしい。
  • 188から最新版にUPDATEしようとしたら、エラーが出たので経緯と対応手順メモ
  • 開発環境は、Windows10+Bash on windows(Ubuntu 16.04.3)

以下、ログ

~#
gcloud components update
# 普通にアップデートしようとしたら以下のエラー
ERROR: (gcloud.components.update)
You cannot perform this action because the Cloud SDK component manager is disabled for this installation. You can run the following command to achieve the same result for this installation:
sudo apt-get update && sudo apt-get --only-upgrade install kubectl google-cloud-sdk google-cloud-sdk-datastore-emulator google-cloud-sdk-pubsub-emulator google-cloud-sdk-app-engine-go google-cloud-sdk-app-engine-java google-cloud-sdk-app-engine-python google-cloud-sdk-cbt google-cloud-sdk-bigtable-emulator google-cloud-sdk-app-engine-python-extras google-cloud-sdk-datalab

~# sudo -E apt-get update
# 私の環境では −E が必要
Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Get:2 http://packages.cloud.google.com/apt cloud-sdk-xenial InRelease [6,372 B]
Err:2 http://packages.cloud.google.com/apt cloud-sdk-xenial InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB
(省略)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://packages.cloud.google.com/apt cloud-sdk-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB
(省略)
# よくわからないけど、Public Key が使えないとかなんとか。。。
# Google Groupsのトピによると、以下でKeyを追加せよとのこと

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1326  100  1326    0     0   2062      0 --:--:-- --:--:-- --:--:--  2062
OK

# 再トライ 
~# sudo -E apt-get update
Get:1 http://packages.cloud.google.com/apt cloud-sdk-xenial InRelease [6,372 B]
Hit:2 http://archive.ubuntu.com/ubuntu xenial InRelease
Get:3 http://packages.cloud.google.com/apt cloud-sdk-xenial/main amd64 Packages [45.3 kB]
Hit:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease
Get:5 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
Fetched 158 kB in 1s (84.8 kB/s)
Reading package lists... Done

# うまくいった
# つづいて、SDKのUPDATE 余計なパッケージ名もあるけど、そのまま実行

~# sudo -E apt-get --only-upgrade install kubectl google-cloud-sdk google-cloud-sdk-datastore-emulat
or google-cloud-sdk-pubsub-emulator google-cloud-sdk-app-engine-go google-cloud-sdk-app-engine-java google-cloud-sdk-app
-engine-python google-cloud-sdk-cbt google-cloud-sdk-bigtable-emulator google-cloud-sdk-app-engine-python-extras google-
cloud-sdk-datalab
Reading package lists... Done
Building dependency tree
Reading state information... Done
Skipping google-cloud-sdk-app-engine-go, it is not installed and only upgrades are requested.
Skipping google-cloud-sdk-app-engine-java, it is not installed and only upgrades are requested.
Skipping google-cloud-sdk-app-engine-python, it is not installed and only upgrades are requested.
Skipping google-cloud-sdk-app-engine-python-extras, it is not installed and only upgrades are requested.
Skipping google-cloud-sdk-bigtable-emulator, it is not installed and only upgrades are requested.
Skipping google-cloud-sdk-cbt, it is not installed and only upgrades are requested.
Skipping google-cloud-sdk-datalab, it is not installed and only upgrades are requested.
Skipping google-cloud-sdk-datastore-emulator, it is not installed and only upgrades are requested.
Skipping google-cloud-sdk-pubsub-emulator, it is not installed and only upgrades are requested.
Skipping kubectl, it is not installed and only upgrades are requested.
The following package was automatically installed and is no longer required:
  snap-confine
Use 'sudo apt autoremove' to remove it.
Suggested packages:
  google-cloud-sdk-app-engine-java google-cloud-sdk-app-engine-python google-cloud-sdk-pubsub-emulator
  google-cloud-sdk-bigtable-emulator google-cloud-sdk-datastore-emulator kubectl
The following packages will be upgraded:
  google-cloud-sdk
1 upgraded, 0 newly installed, 0 to remove and 155 not upgraded.
Need to get 19.2 MB of archives.
After this operation, 28.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://packages.cloud.google.com/apt cloud-sdk-xenial/main amd64 google-cloud-sdk all 212.0.0-0 [19.2 MB]
Fetched 19.2 MB in 11s (1,652 kB/s)
(Reading database ... 50185 files and directories currently installed.)
Preparing to unpack .../google-cloud-sdk_212.0.0-0_all.deb ...
Unpacking google-cloud-sdk (212.0.0-0) over (188.0.1-0) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up google-cloud-sdk (212.0.0-0) ...

# 完了 
~# gcloud --version
Google Cloud SDK 212.0.0
alpha 2018.08.13
beta 2018.08.13
bq 2.0.34
core 2018.08.13
gsutil 4.33