<Google Cloud Platform> RAND_egd がインポートできんとさ、、

次のエラーメッセージがでた。

ImportError: cannot import name RAND_egd

グーグルっちしたら、、、

stackoverflow.com

読んでいくと、python2.7.12ではだめらしい。
2.7.9にしないといけなと、、

うーん、、、

後日。。。
結局、condaさんで、2.7.9を作った。

<Google Cloud Platform> SSL moduleがないと言われたとき、

Google Cloud Platformで、いそいそとコードを書いて、ローカルで動くか試した時、、、

 % ~/google-cloud-sdk/bin/dev_appserver.py .

してから、http://localhost:8080にアクセスしたら、エラーメッセージがでた。。。

Sorry, unexpected error: Can't connect to HTTPS URL because the SSL module is not available.

うーん、、って悩んだあと、グーグルした結果、次の1文をapp.yamlに追加すればいいとのこと。

# TODO: List any other App Engine SDK libs you may need here.
libraries:
#- name: jinja2
#  version: latest
- name: ssl               # Added by Neko
  version: latest         # Added by Neko

動いた。 なるへそ。

お世話になったstackoverflow。

stackoverflow.com

あとは、マニュアル。

https://cloud.google.com/appengine/docs/python/tools/using-libraries-python-27

https://cloud.google.com/appengine/docs/python/tools/built-in-libraries-27

<Anaconda, msys2, conda, python> バグかな、、msys2上でcondaが失敗したので、直してみた。

バグなのか?
msys2上で、Anacondaパッケージのcondaで、仮想環境に切り替える時、
pipがおかしかったので、少し直してみた。

現象。

 % conda info -e
# conda environments:
#
py27                     C:\Anaconda3\envs\py27
root                  *  C:\Anaconda3

 % source activate py27

py27 % which pip
/C/Anaconda3/Scripts/pip

py27 % which python
/C/Anaconda3/envs/py27/python

となっていて、pipが、envs/py27/Scriptの仮想環境化から呼ばれていない。

なんで??? と思っていろいろ試した結果、
/c/Anaconda3/Scripts/activateスクリプト中で、仮想環境用にPATHを再設定しているところで、
DOSの制御文字が行末についてしまい、/c/Anaconda3/envs/py27/Scriptsの設定をつぶしているっぽいのを発見した。

ちゅうことで、dos2unixを追加した。

_NEW_PART=$("$_CONDA_DIR/conda" ..activate $_SHELL$EXT "$args")
_NEW_PART=$(echo $_NEW_PART | dos2unix)  # Added by Nekoyuki

動いた!

よかったよー。

追記。。。
PYTHONPATHも変更しないと、仮想環境に入った時、pipでコールした時にうまくない。。。

<Google Cloud Platform, Python, gspread> Google Spread Sheet へアクセスする。

グーグル スプレッド シートGoogle Spread Sheetにアクセスする。

最初に下記へ行って、
1... Google Drive APIの発行、有効化、
2... サービス アカウント キーの作成、及びjson形式でキーのダウンロードをする。

console.cloud.google.com

ちと順を追って、、、

その1、 プロジェクトを作成する、を選ぶ。

f:id:nekoyukimmm:20161123192708p:plain

その2、 プロジェクト名を入れて、作成を押す。

f:id:nekoyukimmm:20161123192740p:plain

その3、 Google APIを利用する、を押す。

f:id:nekoyukimmm:20161123192816p:plain

その4、 APIを有効にする、を押す。

f:id:nekoyukimmm:20161123192851p:plain

その5、 Google Apps APIの下にある、Drive API、を押す。

f:id:nekoyukimmm:20161123192916p:plain

その6、 有効にする、を押す。

f:id:nekoyukimmm:20161123193006p:plain

その7、 認証情報、を選ぶ。

f:id:nekoyukimmm:20161123193043p:plain

その8、 サービスアカウントキー、を選ぶ。

f:id:nekoyukimmm:20161123193106p:plain

その9、 JSONを選んで、作成、を押す。

f:id:nekoyukimmm:20161123193130p:plain

その10、 キーがダウンロードされる。

f:id:nekoyukimmm:20161123193157p:plain

で、ちらっと、キーを見てみる。

In [27]: with open('Hage-xxxxx.json', 'r') as f:
    ...:     jd = json.load(f)
    ...:     print(json.dumps(jd, indent=4))
    ...:     
{
    "project_id": "xxxxx-xxxxxx",
    "token_uri": "https://accounts.google.com/o/oauth2/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_email": "xxxxx-xxxxxx@appspot.gserviceaccount.com",
    "private_key_id": "xxxxx",
    "private_key": "-----BEGIN PRIVATE KEY-----xxxxx-----END PRIVATE KEY-----\n",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "client_id": "xxxxxx",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xxxxx-xxxxx%40appspot.gserviceaccount.com",
    "type": "service_account"
}

なるへそ。

そのあと、Google Spread Sheet作って、共有するに上記キーのclient_emailを入力する。

で、実際にアクセス開始。

In [1]: import json

In [2]: import gspread

In [8]: from oauth2client.service_account import ServiceAccountCredentials

In [9]: scope = ['https://spreadsheets.google.com/feeds']

In [10]: doc_id = 'hogehogehagehagegoogleid'

In [11]: import os

In [15]: path = os.path.expanduser('./hagehage-xxxxxxxxxx.json')

In [16]: credentials = ServiceAccountCredentials.from_json_keyfile_name(path, scope)

In [17]: client = gspread.authorize(credentials)

In [18]: gfile = client.open_by_key(doc_id)

In [19]: worksheet = gfile.sheet1

In [20]: records = worksheet.get_all_values()

In [21]: for record in records:
    ...:     print(record)
    ...:     
['a', 'b', 'c']

おおー! できたー! すげー!

参考にさせてもらったところ。

qiita.com

Python3でGoogle SpreadsheetをDBのように利用する

<handsontable> handsontable

ハンドソンテーブルhandsontable
javascriptで、Excel likeなテーブルを提供する。
いいねー。

handsontable.com

こちらで使い方がきれいにまとめられてる。

qiita.com

qiita.com

qiita.com

qiita.com

おためし@JSFiddle

https://jsfiddle.net/s4h6xwub/5/

<Bootstrap> Grid

グリッドGridを、ちょっとやってみた。
ミソは、container --> row --> col という階層で設定要。

おためし@JSFiddle

https://jsfiddle.net/xkqgmrvo/

あとは、マニュアルと、参考にさせてらったところ。

v4-alpha.getbootstrap.com

qiita.com

qiita.com