2019/02/24

MapオブジェクトをObject形式に変換する--- Javascript/ES6


  • Goal
    MapオブジェクトをObject形式に変換する
  • ソース



  • 出力結果

  • Thanks!!
    Map and object: converting nested objects
    https://www.xul.fr/javascript/map-and-object.php
    Arrayがネストされているケースの記載もありました。

2019/01/06

round() の四捨五入では上手くいかない! - python3

Python3 では、round()による四捨五入は使えない!!

How: decimal モジュールを使う。
サンプルコード

# -*- coding: utf-8 -*-
#
from decimal import Decimal, ROUND_HALF_UP
i = float(input())
print("入力値")
print(i)
#
print("roundの結果")
ex_round = round(i,1)
print(ex_round)
#
print("decimalの結果")
o = float(Decimal(str(i)).quantize(Decimal('0.1'), rounding=ROUND_HALF_UP))
print(o)

結果

入力値
12.25
roundの結果
12.2
decimalの結果

12.3

2019/01/05

Colaboratory すごい - Colaboratory + Python3 + Pandas

Google の Colaboratory を使ってデータサイエンス、機械学習にチャレンジをしてみる。

Goal:Google Colaboratory を立ち上げて、機械学習用のデータ・セットを読み込みデータをハンドリングする。主に、Pandas を使ってみるという内容。

How
1. Colaboratoryに新しいノートブックを作成する。以下にアクセスして、Python3のノートブックを作成する。

      https://colab.research.google.com/


2. Notebook

2019/01/04

買い物: CW-X ジェネレーターモデル

破けたから新調します。

ジェネレーターモデル、差はよくわからないけど、ねじれに強いのでこれ。


2019/01/01

標準入力の取扱 input と print - Python3

Goal:Python3での標準入力をハンドリングする。
#1 複数の値が1行に同時に入力された場合、数値として取り込む
入力値 --- 以下の3つの数値を入力したら、int型として取り込む
100 3 123456



(py3) toshi$ python python3-input.py
100 3 123456
output---
a=100
b=3
c=123456


#2 入力行数を最初に入力して、その後、複数行に渡る入力値を、配列として取り込む
入力値 --- 以下のように入力したら、3*3の行列として取り込む
3
1 2 3
4 5 6
7 8 9



(py3) toshi$ python python3-input2.py
3
1 2 3
4 5 6
7 8 9
output---
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

2018/12/16

GCP: IoTデータ分析環境立ち上げ on GCP

Goal:ローカルPCをIoTGateway端末と見立てて、Bigqueryに、気温データをストリーミングインサートする。利用するサービスは、IoT Core --- Pub/Sub --- Dataflow --- Bigquery と連係する。
Gateway側には、データをPushする処理が必要だが、それ以外は、コーディング不要!

How
0. 準備:仮想IoTGateway として、気温/計測時間/デバイスIDを送るプログラムを作成
https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/iot/api-client/mqtt_example
をローカルPCにクローンして、Pythonの環境などをセットする。
cloudiot_mqtt_example.py を加工。変更箇所は、以下の通り。


1. Pub/Subのトピックを作成
(1)APIを有効にする
(2)トピックを作成する
トピックとは、メールボックスみたいなもの




2. デバイスをIoT Coreに登録する
(1)APIを有効にする
(2)端末レジストリを作成する
端末レジストリとは、デバイスのグループを作成すること
トピックの選択が必要。1で作成したトピックを選択する。
そうすると、この端末レジストリ内のデバイスから送られてきたメッセージは、そのトピックに投げ込まれる。
(3)端末を作成する(デバイスを登録する)
公開鍵の登録は一旦せずにデバイスを作成する。
公開鍵の種類は、 RS256_X509 とする。


3. 認証鍵の作成と登録
(1)デバイス側で、Google root certificate を取得する
wget https://pki.goog/roots.pem
あるいは、
curl https://pki.goog/roots.pem > roots.pem
で取得する
(2)鍵のペアを作成する
openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem -nodes -out rsa_cert.pem -subj "/CN=unused"
(3)公開鍵を、IoT Core のデバイスに貼り付ける
(4)private key は、ローカルマシンに保存

4. サブスクライバーのを登録する
デバイスが、パブリッシャーなので、そのトピックの購読者を登録する。
ここでは、Bigqueryにセンサーの値を書き出すので、エクスポート機能を使う。
登録すると、自動的にCloud DataflowのJobが立ち上がる。
(1)Bigqueryに、データを登録するためのテーブルを登録する

(2)トピックのエクスポート登録を行う





5. テスト実行!!
デバイスを稼働させて、データがBigqueryに流れ込むのを確認する。


$ python iotdemo.py --cloud_region=us-central1 --project_id=iotdemo1 --algorithm=RS256 --private_key_file=rsa_private.pem --registry_id=demo-reg --device_id=iotdemo



Bigquery側は。。。。
成功!!
実に簡単に、分析環境の構築が可能。

2018/11/18

GCP: Cloud Shell上でのサンプルコマンド

備忘録
Cloud Shell上でのオペレーション

### Storageの操作
### GCE関連、Snapshotの作成