2020/06/06

GCP: Google Compute Engine にVSCODD 越しに接続する

  • Goal
    • VSCODEから、GCEインスタンス(開発環境)に接続開発する
    • そのとき、一応SSHのポートも変更する
  • How
    1. gcloud SDK のインストール(詳細はカツアイ)
    2. GCE インスタンスを作成し、静的IPを割り当てる (詳細はカツアイ)
    3. ローカル端末で、Keyを作成する
      ssh-keygen -t rsa -b 4096 -C "testUser"
    4. GCEの設定画面で、Keyを貼り付け
    5. PORT:22での接続テスト
      gcloudコマンド (静的IPの割当が不要。インスタンス名で接続できる)
      gcloud compute ssh testUser@instance-1 --ssh-key-file ./test_rsa
    6. GCEのOS上でのsshdのポート変更
      5で接続した状態で、GCEの内部のsshd_configファイルの設定を変更する
      sudo vi /etc/ssh/sshd_config

      以下に、接続したいポート番号を追加
      #Port 22
      Port 22011
      #AddressFamily any


      そのあとに、サービスのRESTARTとSTATUSを確認
      sudo systemctl restart sshd
      sudo systemctl status sshd
      確認して問題なければ、一旦GCEから抜ける
    7. GCPのネットワークの設定でPORTの変更
      以下のケースでは、22から22011へ変更
    8. ローカルから、SSHでアクセステスト
      ssh testUser@34.67.184.203 -p 22011 -i ~/.ssh/test_rsa
    9. config の設定を加えるとVSCODEのからアクセスできる
  • 編集後記
    GCEインスタンスの開発なら、VSCODE+RemoteDevelopmentで開発して、Cloud Source Repositories へPushし、Cloud BuildでSTG環境と本番へデプロイが良いのでしょうか?
    でも、GAEなら、Cloud Shell で開発して、Cloud Source Repositories+Cloud Buildもできて、それならどこでも開発できるとも思ったりします。
    開発経験の少ない素人なので、良い方法が単純に知りたい・・・

2020/05/31

GCP: Cloud Source Repositories のソースを別プロジェクトにPUSH(コピー)する方法 on Cloud Shell

  • Goal
    類似アプリを作成する必要があり、Cloud Source Repositoriesのソースを別プロジェクトのレポジトリにコピーしたい。
    開発は、cloud shell 上で行っているので、そこでコピーする
  • How
    元のプロジェクト名: s001
    新しいプロジェクト名: s002 とする
    1. プロジェクトs002 に、新しいRepositoryを作成 --- GCPのコンソールで作成


    2. 以下、Cloud Shell上での作業

  • 参考情報
    レポへのリンクは以下から取れる
  • 編集後記
    Cloud ShellとCloud Source Repositories に、加えてCloud Buildで、色々できるようになりたいが、まだ、調べるのに時間がかかりすぎ。。。

2020/05/06

GCP: Bigquery 関数でGROUP BYしようとするとエラーがでる --- bq


  • Goal
    Bigqueryで、Timestamp のデータをdate(日付)にグループ化&集計し、日付の新しいもの順にソートをしたい
  • How
    例1) グループ化して集計は、OK
    SELECT date(timestamp),count(1)
    FROM xxxxxxxxxxx
    GROUP BY date(timestamp)

    例2) 日付の新しいもの順に並べようとしたら。。。
    SELECT date(timestamp),count(1)
    FROM xxxxxxxxxxx
    GROUP BY date(timestamp)
    ORDER BY date(timestamp) DESC

    実行すると、エラー。。。
    SELECT list expression references column timestamp which is neither grouped nor aggregated at [1:13]

    例3) 別名(alias)付けると、エラーはでない。
    SELECT date(timestamp) as TARGET_DATE, count(1)
    FROM xxxxxxxxxxx
    GROUP BY TARGET_DATE
    ORDER BY TARGET_DATE DESC
  • 編集後記
    しょうもない事で、時間を潰してしまったので、メモ。。。
    GROUP BYだけならOKで、ORDER BYを付けるとNG。
    これって結構常識なんでしょうか?しらんかった。

2020/05/03

ファイルのバックアップ時に、ファイル名に時間を追加する -- Linux, dateコマンド


  • GOAL
    Linuxでファイルのバックアップ取るときに、日付情報を追記する
  • HOW
    date コマンドを使う。
-> % ll
total 8
-rw-r--r--  1 toshi  staff    14B  5  3 00:49 testfile.txt

# Unix時間を追記する
-> % cp testfile.txt testfile.txt`date "+%s"`
-> % ll
total 16
-rw-r--r--  1 toshi  staff    14B  5  3 00:49 testfile.txt
-rw-r--r--  1 toshi  staff    14B  5  3 00:50 testfile.txt1588434625

# YYYYMMDDHHMMSSを追記する
-> % cp testfile.txt testfile.txt`date "+%Y%m%d%H%M%S"`
-> % ll
total 24
-rw-r--r--  1 toshi  staff    14B  5  3 00:49 testfile.txt
-rw-r--r--  1 toshi  staff    14B  5  3 00:50 testfile.txt1588434625
-rw-r--r--  1 toshi  staff    14B  5  3 00:51 testfile.txt20200503005117

# ハイフンでつなぐ -YYYY-MM-DDを追記する
-> % cp testfile.txt testfile.txt`date "+-%Y-%m-%d"`
-> % ll
total 48
-rw-r--r--  1 toshi  staff    14B  5  3 00:49 testfile.txt
-rw-r--r--  1 toshi  staff    14B  5  3 00:52 testfile.txt-2020-05-03
-rw-r--r--  1 toshi  staff    14B  5  3 00:50 testfile.txt1588434625
-rw-r--r--  1 toshi  staff    14B  5  3 00:51 testfile.txt20200503005117

2020/04/25

GCP: コンテナイメージから、GCEを立ち上げる方法 with Docker HUB -- GCP,GCE,docker


  • Goal
    • GCE(Google Compute Engine)に、コンテナイメージをDeployして立ち上げる。
    • Dockerのイメージは、DockerHUBから持ってくる。
  • How
    1. 準備:DockerHUBに、コンテナイメージを作成する。
      ①Github のrepositoryと、DockerHUBを連携させる
      ■連携の仕方
      https://docs.docker.com/docker-hub/builds/link-source/

      ドットインストールのPHP環境のテストをしたかったので、Docker fileなどを取得し、DockerHUBと連携させたGithubのrepositoryへpushする。すると、自動でDockerHUBにイメージが作成される!
      ■Githubのレポジトリ
      https://github.com/pumpkinpietea/dockerhub
      ■連携されたDockerhubのレポジトリ
      https://hub.docker.com/repository/docker/pumpkinpietea/github
    2. GCPのコンソールでGCEインスタンスをコンテナイメージを利用して立ち上げる。

      ■コンテナイメージ名に docker.io/アカウント名/レポ名 を入力する

    3. イメージを作成し、SSHでつないで見る。
      ~$ docker ps
      でコンテナIDを調べて
      ~$ docker exec -it コンテナ名 sh
      で、コンテナの中に入れる
  • Thanks!!
  • 編集後記
    • PHPの勉強をしようとして、ドットインストールさんの講座をみて進めようとしたが、Dockerをローカルmacには入れたくないと思い、GCPのf1-microインスタンスを使おうを思って取り組んだ。普通にインスタンス立ち上げて設定しようかとおもったが、少し調べてみたらコンテナイメージをDeployできるみたいなので試してみた。
    • GCE 1インスタンスで、 1コンテナとのこと。GKEの勉強しないと実業務には使えないかもしれないが、1インスタンスの開発環境の立ち上げとかには、。

2020/03/22

ロジスティクス4.0 物流の創造的革新 (日経文庫)  小野塚 征志 ー 本

メモ
1.ドローンーーーwalmartの在庫管理・ドローンで写真撮りチェック、無人遠隔運搬船
2.棚搬送型ロボット(Kiva:ドライブ、日立:ラックル)と協調型ロボット(ローカス・ボット)
3.求貨求車システム:トランコム、HACOBU、ハコベル、ララムーブ(香港)
  →水屋の減少
4.デジタルフォワーダー:フレックスポート
5.DHLのロジスティクスマネジメントシステム:荷主向けの物流システムプラットフォーム。DHL以外の物流会社への委託も可能
6.物流機能会社の統合:家電→日通、三井倉庫へ統合、食品→味の素の物流会社へ統合、飲料→アサヒ、サッポロ、キリン、サントリーの共同物流、化学業界も同様
  ※荷主業界を核としたロジスティクスプラットフォーマー
7.荷物の輸送量・距離は、トラック1台あたりの積載量が変わらない限り、ドライバーの投入工数に準じる。自動運転トラック、ロボット、マッチングシステムはそれを変える可能性がある。
8.高速は、隊列走行(自動運転)して、インターチェンジからドライバーが運ぶ
9.DHLとシスコの「Internet of Things in Logistics」
10.物流サービスを仕組み化し、広く多くの荷主・荷物を取り扱うことに成功した一部の「ロジスティクスプラットフォーマー」のみが高収益を獲得し、あとは下請けとなる
11.物流業界内の再編の加速:日立物流と佐川のような
12.荷主による物流ビジネスの展開:アマゾン=世界最大の物流会社、ロジスティクスカンパニー
13.次世代WMS:ロボットの操作、自動化された設備のコントロール
14.NY5番街   1900年:馬車しかいない。 1913年:車しかない。


2020/02/11

GCP: gcloud コマンドラインで、GAEの全インスタンスを停止する --- GCP,GAE,shellscript,gcloud

・Goal
 テストで作成したGAEの全サービスの全インスタンスをコマンドラインから削除・停止する。バージョン名等を指定せずに、どんどんデプロイすると稼働中のインスタンスが増える。それをコマンドラインで一気に全停止する。コンソール画面からだと、サービス毎/バージョン毎にプチプチと停止する必要があり面倒だった。。。

・How
 これが基本形
 ~$ gcloud app instances delete [instance ID] -v [version] -s [service]

・Example
# step1  一覧で確認
~ $ gcloud app instances list
SERVICE  VERSION  ID                                      VM_STATUS  DEBUG_MODE
default  master   00XXXXXXX                               N/A
test1    master   00XXXXXX1                               N/A
test2    master   00686ff30                               N/A

# step2 削除
~ $ gcloud app instances list | sed 1d | awk '{print $1, $2, $3}' | while read s v id; do gcloud app instances delete $id -v $v -s $s --quiet; done
Deleting the instance [default/master/00XXXXXXX].
Deleted [https://appengine.googleapis.com/v1/apps/---].
Deleting the instance [test1/master/00XXXXXX1].
Deleted [https://appengine.googleapis.com/v1/apps/---].
Deleting the instance [test2/master/00686ff30].
Deleted [https://appengine.googleapis.com/v1/apps/---].

# 説明
~ $ gcloud app instances list | \ # インスタンスのリストを出力
sed 1d | \ # 一行目をカット
awk '{print $1, $2, $3}' | \ # awk できれいにする。(この処理は不要・・・)
# 以下のハイライトの箇所で、順番に消していく。y/nを聞かれるので --quiet を追加
while read s v id; do gcloud app instances delete $id -v $v -s $s --quiet; done