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]]
Oracle Application Express Notes | Apps development Notes | Google Cloud Platform | Python | apps test | Cool Beans | English | Books
2019/01/01
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に流れ込むのを確認する。
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,
Dev Tips,
GCP,
Google Cloud Platform,
仕事
2018/05/27
GCP: GAE appcfg.py の使い方
GAEの appcfg.py の使い方。Deploy以外にも使うことがあり、備忘録
ラベル:
Dev Tips,
GCP,
Google App Engine,
Google Cloud Platform,
仕事
2018/02/25
GCP: GAE上にAPI(POST)を作成ーDatastoreの操作(Create) ー Python
- Goal
GAE(Google App Engine)上にREST API(メソッドはPOST)を作成する。
APIが呼び出されたら、GCP(Google Cloud Platform)のDatastoreに新規Entity(レコード)を追加する。言語・環境はPython+flask。 - case
名前、点数、教科名をjsonでPOSTしたら、GCPのDatastoreに書き込みして、Keyを返信する。 - How
1:開発環境は、以下でセットアップ
Ubuntu16.4 + Pyenv:Python2.7.13 on GCE
GCP: Google App Engine上にPython(Flask)アプリを立ち上げる手順
2:ライブラリのセットアップ
app.yaml に、flaskの記述を追加
- name: flask
version: 0.12
3:mainプログラム と curl 結果
4:Datastoreの結果
- Thanks!
ラベル:
Dev Tips,
Flask,
GCP,
Google App Engine,
Google Cloud Platform,
python,
Restful API,
仕事
2018/02/24
Docker CE のディレクトリを引っ越しする方法
AWSのEC2 RHEL7.4 にDocker CEをセットアップする手順 の後に、Rootディレクトリを引っ越しする方法
・システム領域のハードディスクを大量に消費するので、別ディレクトリへ引っ越しする
以下の例は、/var/lib/docker から /xxx/mnt/docker/ へ引越し
0.初期設定確認
1.ServiceSTOP
2.ディレクトリを作ってコピー
3.設定変更
4.ServiceStart
2018/02/11
GCP: GAE(Google App Engine)のバージョン別のURL
GAEは、バージョン別に個別のURLをもっている。
なので、同時に複数バージョンを公開してテストできる。
知らなかった。。。
サンプル
https://"バージョン名"-dot-"プロジェクト名".appspot.com/
なので、同時に複数バージョンを公開してテストできる。
知らなかった。。。
サンプル
https://"バージョン名"-dot-"プロジェクト名".appspot.com/
GCP: Google App Engine上にPython(Flask)アプリを立ち上げる手順
- Goal
開発環境も何も無い状態から、GAE(Google App Engine)上にFlaskアプリ(Hello World)を30分以内に立ち上げる。GAEは、Standard Environmentなので、Pythonは、2.7 - How
1. GCP上に新プロジェクト作成(xxxxx-test−0001) ⇒ 手順割愛
2. GCP上で、GAEを有効にする。 ⇒ 手順割愛
初めてのアプリ作成で、Pythonを選ぶ。
チュートリアルはやらなくて良いので、途中で抜ける。
1プロジェクトで、1GAEアプリしか持てない。
3. GCP上に新VMインスタンス(Ubuntu16.4)作成(dev001) ⇒ 手順割愛
TYPEはMicro(無料マシン)でOK。
別にローカルマシンがあればそれでもOK。
4. VM(dev001)の設定 ー 開発環境構築
4-1. 初期設定 + Pyenv + GAEのSDKの導入
以下のファイルを実行
~$ . UbuntuSetupForGAE.sh
4-2. Localに開発用フォルダの作成とPyenvのセットアップ
5. Deploy
localでのテスト。main.pyがあるディレクトリで以下を実行
$ dev_appserver.py .
Deploy。 main.pyがあるディレクトリで以下を実行する
$ appcfg.py update --noauth_local_webserver -A "project id" -V "version" .
6. 確認する。以下のURLにアクセスする。
https://”projectid”.appspot.com
これを使って、LineのBotなどマイクロサービスを立ち上げれる
main.pyの編集と必要なlibのインストールが必要
2017/10/28
CSVファイルを読み込んでlist型と辞書型に格納 - Python
- Goal
PythonでCSVファイルを読み込んで、List型と辞書型、集合型に格納する - How
CSVモジュールのreaderメソッドを使う
マスターファイルを作る。 テキストファイル menu.csv
UDON001,500UDON0012,700SUSHI0123,1200TONKATSU001,2000RAMEN10,1000 - Result
(pytest2.7.13)~/pytest$ python CSVtoListDic.pyList[['UDON001', '500'], ['UDON0012', '700'], ['SUSHI0123', '1200'], ['TONKATSU001', '2000'], ['RAMEN10', '1000']]5Dic{'TONKATSU001': '2000', 'UDON001': '500', 'RAMEN10': '1000', 'UDON0012': '700', 'SUSHI0123': '1200'}5Setset(['TONKATSU001', 'UDON001', 'SUSHI0123', 'UDON0012', 'RAMEN10'])
5
2017/10/22
GCP: Google App Engineにアプリーケーションをデプロイする方法 ー GAE/Py
- 備忘メモ
Google App Engine にデプロイするコマンド
EC2上のUbuntu16.04からデプロイ
APP.yamlファイルがあるディレクトリで実行すること
(pytest2.7.13) ubuntu@ip-10-0-0-253:~/pytest$ appcfg.py update --noauth_local_webserver -A "projectid" -V "version" .←Main.pyがあるディレクトリで流しているので。。。
- 結果 --- これは何も更新されてないけど
10:43 AM Application:(was: None); version: (was: None) 10:43 AM Host: appengine.google.com10:43 AM Starting update of app:, version: 10:43 AM Getting current resource limits.10:43 AM Scanning files on local disk.10:43 AM Scanned 500 files.10:43 AM Cloning 896 application files.10:43 AM Compilation starting.10:43 AM Compilation completed.10:43 AM Starting deployment.10:43 AM Checking if deployment succeeded.10:43 AM Deployment successful.10:43 AM Checking if updated app version is serving.10:43 AM Completed update of app:, version:
テキストファイルをRDBのテーブル(イメージは、品番マスターとか)風に使う - Python
- Goal
ChatBotが受信したテキストメッセージと、テキストファイル(CSV)をマッチングさせる。テキストファイルのままで、品番マスタの用に使って参照させる。 - 準備
マスターファイルを作る
テキストファイル menu.csv
UDON001,500
UDON0012,700
SUSHI0123,1200
TONKATSU001,2000
RAMEN10,1000 - How
1. unicodedata を使って、ひらがな・カタカナ・漢字判定と、全角・半角変換する
2. lineでテキストファイルから1行取得して、比較を繰り返す
3. 先頭からで一致したら抜き出す - 結果
(pytest2.7.13) ubuntu@ip-10-0-0-253:~/pytest$ python testmatch.pyUDON001,500 - Thanks!!
以下、参考にさせて頂きました。
http://minus9d.hatenablog.com/entry/2015/07/16/231608
ラベル:
ChatBOT,
Dev Tips,
Google App Engine,
python
2017/01/12
.bash コマンドインデックス
.bash のコマンド集
1. which bash - bash の種類を確認
#/bin/bash
#この結果をスクリプトの一行目に表示す
#!/bin/bash
2. cd - フォルダの変更
3. ls - フォルダの中身を表示
4. rm - ファイル、フォルダの削除
5. cp - ファイルのコピー
2. cd - フォルダの変更
3. ls - フォルダの中身を表示
4. rm - ファイル、フォルダの削除
5. cp - ファイルのコピー
6. mv - ファイルの移動
7. mkdir - ディレクトリを作成
8. pwd - 現在のフォルダパスを表示
9. chmod - ファイル・ディレクトリのアクセス権限変更
10. tee - 標準出力+ファイル出力の同時出力
11. awk - 文字列コントロール/編集
12. xargs - 標準入力から生成したコマンドラインを実行する
9. chmod - ファイル・ディレクトリのアクセス権限変更
10. tee - 標準出力+ファイル出力の同時出力
11. awk - 文字列コントロール/編集
12. xargs - 標準入力から生成したコマンドラインを実行する
タスクマネージャをリモートデスクトップ上で起動
- Issue
リモートデスクトップ接続中Ctrl+Alt+Deleteでタスクマネージャを起動できない。
(知らずにしょーもない時間を潰す…)
リモートデスクトップ接続中Ctrl+Alt+Deleteでタスクマネージャを起動できない。
- 対策
1. Ctrl+Shift+Esc
1. Ctrl+Shift+Esc
2. Run taskmgr
Windows key + R -> taskmgr
3. タクスバー上で右クリックする
- Thanks!
How-to Geek - Six ways to open the windows task manager
Windows key + R -> taskmgr
3. タクスバー上で右クリックする
- Thanks!
How-to Geek - Six ways to open the windows task manager
2016/09/25
2016/09/24
CHECKBOX(チェックボックス)のハンドリング - 目次 - APEX
APEX上でのCHECKBOX(チェックボックス)のハンドリング方法
Table of contents
1.他のテーブルとのマッチングのやりかた
(1列文字列から1行テーブルへ変換)
2.検索する/フィルターをかける
Background
APEXでチェックボックスを使う、コロン(:)区切りの文字列で値が帰ってくる。
それをどう扱うのか?というメモ...
(例)
ラベル:
APEX,
Dev Tips,
Oracle application express,
Oracle DB,
sql
2016/06/26
オブジェクトの名称はすべて小文字にしておくこと - Postgresql
"Postgresqlでは、オブジェクト(テーブル名、カラム名)の名称はすべて小文字にすること"
-理由
DB内には、大文字・小文字で区別して登録される
SQL内では、"(ダブルクォーテーション)で囲まれているとそのままの文字列だが、
囲まれていないと小文字に変換される(らしい)
結果、アンマッチがおきる
-理由
DB内には、大文字・小文字で区別して登録される
SQL内では、"(ダブルクォーテーション)で囲まれているとそのままの文字列だが、
囲まれていないと小文字に変換される(らしい)
結果、アンマッチがおきる
--------------------------------------------------------
testdb=> \d iris
Table "public.iris"
Column | Type | Modifiers
---------------+-----------------------+-----------
Id | integer | not null
SepalLengthCm | numeric(15,2) |
SepalWidthCm | numeric(15,2) |
PetalLengthCm | numeric(15,2) |
PetalWidthCm | numeric(15,2) |
Species | character varying(20) |
Indexes:
"iris_pkey" PRIMARY KEY, btree ("Id")
testdb=> select * from iris where SepalLengthCm > 5.0; -> ダメ
ERROR: 列"sepallengthcm"は存在しません
LINE 1: select * from iris where SepalLengthCm > 5.0;
^
HINT: Perhaps you meant to reference the column "iris.SepalLengthCm".
testdb=> select * from iris where "iris.SepalLengthCm" > 5.0;->ダメ
ERROR: 列"iris.SepalLengthCm"は存在しません
LINE 1: select * from iris where "iris.SepalLengthCm" > 5.0;
^
testdb=> select * from iris where "SepalLengthCm" > 5.0; -> OK
testdb=> select * from iris where iris."SepalLengthCm" > 5.0; -> OK
testdb=>
2016/06/17
2016/06/14
buffer overflow. Use SET command to reduce ARRAYSIZE or increase MAXDATA.
- 状況
SQL*PLUS でSQL実行時に、エラーメッセージ”buffer overflow. Use SET command to reduce ARRAYSIZE or increase MAXDATA.”が表示される。
環境 ー 古いんです (^^;
SQL*Plus: Release 3.3.4.0.0 - Production on Mon Jun 13 10:56:36 2016
Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning option
JServer Release 8.1.7.4.0 - Production
SQL> select * from v$version;
BANNER----------------------------------------------------------------Oracle8i Enterprise Edition Release 8.1.7.4.0 - ProductionPL/SQL Release 8.1.7.4.0 - ProductionCORE 8.1.7.0.0 ProductionTNS for Solaris: Version 8.1.7.4.0 - ProductionNLSRTL Version 3.4.1.0.0 - Production - Solution
SQL> SET ARRAYSIZE 1
上記を実行の上、SQLを実行する。
2016/06/09
2016/04/28
SQL serverからOracleへのデータ移行時の文字列ハンドリング
SQL Server からOracleDBへのデータ移行時に、改行、TAB、"(ダブルクォーテーション)のハンドリングのサンプル
1.NTEXT型から、VARCHAR型へ変換
2.改行(Carriage Return) は、スペースへ変換
3."(ダブルクォーテーション) は、 シングルクォーテーションに変換
そのあと、文字列カラムを"(ダブルクォーテーション)区切りで出力し、OracleDBへロードする
1.NTEXT型から、VARCHAR型へ変換
2.改行(Carriage Return) は、スペースへ変換
3."(ダブルクォーテーション) は、 シングルクォーテーションに変換
そのあと、文字列カラムを"(ダブルクォーテーション)区切りで出力し、OracleDBへロードする
- Source
登録:
投稿 (Atom)























