ベスパリブ

プログラミングを主とした日記・備忘録です。ベスパ持ってないです。

Bitbucketでブランチのブランチタイプを変更する

Bitbucketで、masterブランチのブランチタイプ(Branch type)がMAINかつDEVELOPMENTになっていたので、developブランチをDEVELOPMENTにしたいという話です。

f:id:takeg:20190131152325p:plain
masterブランチがMAINかつDEVELOPMENT

設定 > Branching model で、Development branchを変更して、保存します。

f:id:takeg:20190131152408p:plain
Deveropment branchの変更

ブランチ画面に行き、ブランチタイプの変更ができていることを確認します。

f:id:takeg:20190131152704p:plain
developブランチがDEVELOPMENT

ブランチタイプの説明は以下の公式に詳しく書いてあります。

ja.confluence.atlassian.com

はてなブログをHTTPS化した

私のはてなブログHTTPSじゃなくて、「いつになったらはてなHTTPS対応してくれるんだろーー~~~~~~~~~~ばなな」って口を開けて待ってたんですが、普通に公式からアナウンスがありました。

help.hatenablog.com

移行方法

ダッシュボードから設定画面にアクセスし、「変更する」を選択してください。

ワンクリックでHTTPS化できました。はてなさんありがとう。

Access to bucket "staging.PROJECT_ID.appspot.com" denied. You must grant Storage Object Viewer permission to ... エラーの解消

Google App EngineHello Worldチュートリアルを進めていたらデプロイ中にエラーが発生しました。

(python_docs_samples) C:\Users\XXXX\workspace\python-docs-samples\appengine\standard_python37\hello_world>gcloud app deploy
Services to deploy:

descriptor:      [C:\Users\XXXX\workspace\python-docs-samples\appengine\standard_python37\hello_world\app.yaml]
source:          [C:\Users\XXXX\workspace\python-docs-samples\appengine\standard_python37\hello_world]
target project:  [PROJECT_ID]
target service:  [default]
target version:  [20190126t190818]
target url:      [https:/PROJECT_ID.appspot.com]


Do you want to continue (Y/n)?  Y

Beginning deployment of service [default]...
#============================================================#
#= Uploading 5 files to Google Cloud Storage                =#
#============================================================#
File upload done.
Updating service [default]...failed.
ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build AA-BB-CC-DD-EEEEE status: FAILURE.
Build error details: Access to bucket "staging.PROJECT_ID.appspot.com" denied. You must grant Storage Object Viewer permission to 9XXXXXXXX8@cloudbuild.gserviceaccount.com.
.
Check the build log for errors: https://console.cloud.google.com/gcr/builds/AA-BB-CC-DD-EEEEE?project=9XXXXXXXX8

注目すべきエラーメッセージは Build error details: Access to bucket "staging.PROJECT_ID.appspot.com" denied. You must grant Storage Object Viewer permission to 9XXXXXXXX8@cloudbuild.gserviceaccount.com. . の部分で、「バケットへのアクセスが失敗」と言われています。

さらに「9XXXXXXXX8@cloudbuild.gserviceaccount.com」に「Storage Object Viewer権限を与えてくれ」と言われています。

権限のエラーはIAMをいじれば解消できるはず。IAMの設定をろくにしたことがないので以下のリンクを読みます(バケットに対するIAMについても書いてあります)。

Using (Cloud IAM) Permissions  |  Cloud Storage  |  Google Cloud

なんとなくわかったところで、GCPから「IAMと管理」の画面を開き、9XXXXXXXX8@cloudbuild.gserviceaccount.comの編集アイコンをクリックします。

f:id:takeg:20190128160804p:plain
9XXXXXXXX8@cloudbuild.gserviceaccount.comの編集アイコンをクリック

「別の役割を追加」で「ストレージオブジェクトの閲覧者」を追加します。

f:id:takeg:20190128160910p:plain
「ストレージオブジェクトの閲覧者」を追加

そして再度デプロイするといけるはず……たぶん。

(python_docs_samples) C:\Users\XXXX\workspace\python-docs-samples\appengine\standard_python37\hello_world>gcloud app deploy
Services to deploy:

descriptor:      [C:\Users\XXXX\workspace\python-docs-samples\appengine\standard_python37\hello_world\app.yaml]
source:          [C:\Users\XXXX\workspace\python-docs-samples\appengine\standard_python37\hello_world]
target project:  [PROJECT_ID]
target service:  [default]
target version:  [20190126t193649]
target url:      [https://PROJECT_ID.appspot.com]


Do you want to continue (Y/n)?  Y

Beginning deployment of service [default]...
#============================================================#
#= Uploading 0 files to Google Cloud Storage                =#
#============================================================#
File upload done.
Updating service [default]...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [https://PROJECT_ID.appspot.com]

You can stream logs from the command line by running:
  $ gcloud app logs tail -s default

To view your application in the web browser run:
  $ gcloud app browse

デプロイできました!

gcloud app browseを実行するとWEBアプリケーションにアクセスできます。

chcpコマンドは何の略なのか

"CHange CodePage" の略らしいです。

ターミナルでchcp /?と打つと、

>chcp /?
Displays or sets the active code page number.

CHCP [nnn]

  nnn   Specifies a code page number.

Type CHCP without a parameter to display the active code page number.

Specifies a code page numberと書いてあるので、たしかにcode pageの略で間違いなさそうです。ところでcode pageってなんでしょう。

Wikipediaによれば

コードページとは、特定の符号化文字集合を指定するための数字、またはその数字で指定された符号化文字集合、あるいはそのような方法で符号化文字集合を指定するためのシステムのことである。cpと表示されることもある。それぞれの符号化文字集合は「コードページ○○(○○は2桁から5桁の数字)」という形で管理される。

「符号化文字集合」とあるので、文字コード(charset)のイメージでよいのでしょうか。

そして、

コードページという用語は、システムベンダ各社が管理している符号化文字集合を指す時にしか用いられず、ISO等の公的な規格の文字集合を「コードページ○○」などということはない。IBMおよび、マイクロソフトは各自、コードページを定めて管理している。マイクロソフトのコードページ群はMS-DOSWindowsなどで利用されている。IBMのコードページはSystem iやDB2等の文字データ表現体系(CDRA: "Character Data Representation Architecture")をサポートするIBMシステムで利用されている。

とあるので、文字コードをコードページと言い換えてベンダ各社が勝手に定義している…という理解でいいのかな。

最後によく使うchcpコマンド。

# 現在のcode pageを確認する
> chcp
Active code page: 932
# UTF-8に変更する
> chcp 65001
# SJISに変更する
> chcp 932

2019 Japan IT Week 関西 1/23 レポート

インテックス大阪で企業向けイベント2019 Japan IT Week 関西 がありました。それに一般参加し申した。出展はしていません。

朝10:00に入場。

3つのセミナーに参加しました。7000円するセミナーは早割で6000円であった。どの内容も面白く、参考になる部分もあり、大変良かったのだが、6000円は個人的な感覚で高杉晋作なのですけれど、企業向けでは相場価格なのだろうか。まあ会社のお金なんですけど。

名古屋大学の方のお話を聞いたのですけど、自動運転の技術者を増やすためにもAutowareっていうソフトウェアをOSS化していたらしいです。初めて知りました。自動運転OSSデファクトスタンダードみたいな立ち位置になってきているらしいです。

セミナーが終わったら自由にブースを回りました。メインはIoT展で、今後の製造業をIoTでビッグデータしてディープラーニングするための情報収集であった。

スーパーミーティングメモという音声認識議事録はちょうど社内で「こういうの欲し~誰か作って~」みたいに言ってたものなので非常にタイムリーでした。

個人的に驚いたのがSkyの情報資産管理システム(いわゆる社内のPC管理・監視とかのソフト)で、どのPCがなんのファイルをいつ作成したとか、ファイル名を変更してもハッシュ値を保持してるから追跡できたりとか、誰がどのWEBページを見たかとかが履歴でわかりやすく表示されるとこで、情シスの話は噂レベルでしか聞いたことなかったですけど、こんなん私が朝はてブ見てることとか(テクノロジーカテゴリで情報収集のためですよ、先輩)、誤クリックで増田の記事読んでしまったこととかバレバレじゃん!!って思いました。他にもUSBメモリを読み取りのみ・使用不可の制御を端末ごとはもちろんネットワーク、グループごとに出来たり、色々痒いところに手が届いてるな〜〜と言った感じでした。多分大手インフラ企業とか導入してそう…してるに違いないと思うなどしました。

印象に残っているのが日本マイクロソフトのデモプレゼンで、Surfaceのプレゼンのはずなのだけれど、最初の導入が日本の長時間労働の話から始まり、働き方改革の話に続いた。日本マイクロソフト社内の課題を見える化などし、どう働き方改革を進めたかみたいな話が中心で、「行きたくなるオフィス」「使いたくなるデバイス」という話が出て、その「使いたくなるデバイス」の文脈で最後の最後にSurfaceをちょろっと紹介してデモは終了した。 私だったら「今からSurfaceの新機能を紹介します。」とか言ってSurfaceのスペックや機能の話でプレゼンをはじめてしまうと思ったのだが、プレゼン力の違いを見せられた。おそらく百聞は一見に如かず実機を触ってくださいとのことなのでしょう。あとブースのバランスチェアがめっちゃよかったので会社で使いたいなど思った。

個人的に印象が悪いと思ったのが、恐らく営業だと思われる方が説明して、「ほら、あとはお前の番だぞ」と開発者っぽい人に話を振り「え、俺っすかw」みたいな感じで詳しい説明に入るのはやめたほうが良いと思った。自分も出展側に回ることもあり、そういう風に営業の方から話を振られることがあったのだが、内輪ノリとまではいかないまでもそういうのを社外の人に見せるのは諸刃の剣だと感じた。気をつけたい。

あと組み込みシステム・開発技術ブースにGitHubジャパンが出展していた。プライベートリポジトリの宣伝だろうか。でもちょっと謎感が否めなかったが、たくさんステッカーをもらって帰った。

さくらインターネットさんがLoRa製品を出してた。

その他色んな出展企業をまわった。

ところでこういう展示会って本当にその場で商談成立したり企業側にメリットあるんでしょうか。せいぜい企業の存在感をアピールするくらいが関の山で、あとは一般参加者が楽しんで観覧したり、コンパニオンを雇ってる企業を見てその企業のカラーを知って楽しむと思っているのは私だけ……ですね。これ以上はやめましょう。

帰りにタイ料理を食らいました。バナナマンの日村氏がおいしいとかラジオで言ってたような気がするプーパッポンカリーを食した。味は美味しかったけど食感がひどすぎる。

パクチーの酎ハイ、パクチュウはパクチー好きにはたまらない、そうでもない人には地獄のような飲み物だった。見えてる地雷を踏んどいて文句言ってごめんなさい。

余談。

JR大阪駅は乗降人数が多いくせに2列分のエスカレーターかエレベーターしかないし、ホームには時刻表も、どこの駅に行くのかの看板や情報がマジで皆無だし、どうなってるんだ?

WindowsのSSHの設定、備忘録

SSH鍵の保管場所は?

C:/Users/XXXXX/.ssh/

SSHコマンド

SSH-KEYGEN (1)

RSA鍵の生成

# RSA1024ビット
> ssh-keygen -t rsa -b 1024
# RSA2048ビット
> ssh-keygen -t rsa -b 2048
# RSA4096ビット
> ssh-keygen -t rsa -b 4096

ED25519鍵の生成

> ssh-keygen -t ed25519

GitHubでEd25519鍵をつかう - 尋常でないもふもふ

コメント付きの鍵生成

> ssh-keygen -t ed25519 -C "コメント。メールアドレスを入れることが多い"

バージョン確認

> ssh -V

SSH鍵をどう管理する?

サーバが多くSSH鍵の管理が大変です。どんな工夫をしていますか? - Qiita

SSH鍵は使いまわすこともできるし、サービスごとにSSH鍵を分けてもよい。

f:id:takeg:20190122174843p:plain
.sshフォルダ

たとえば.ssh/configファイルは次のようにして、サービスごとのSSH鍵はそのフォルダのconfigに従うようにする。

Host *
  IgnoreUnknown UseKeychain
  UseKeychain yes

Include */config

IgnoreUnknown UseKeychainは、Bitbucketに接続しようとしたらBad configuration option: usekeychainというエラーが出たのでそのエラーを解消をするために追加している。詳しくは以下のStack Overflowを参照。

macos - .ssh/config: "Bad configuration option: UseKeychain" on Mac OS Sierra 10.12.6 - Stack Overflow

そして、.ssh/githubフォルダを以下のような構成にする。

f:id:takeg:20190122175848p:plain
.ssh/githubフォルダ

たとえば.ssh/github/configファイルは次のようにして、専用のSSH鍵を使うように指示する。

Host github github.com
  HostName github.com
  User tanaka_taro
  IdentityFile ~/.ssh/github/id_ed25519

同様に、たとえば.ssh/bitbucket/configファイルは次のようにして、専用のSSH鍵を使うように指示する。

Host bitbucket bitbucket.org
  HostName bitbucket.org
  User tanaka_taro
  IdentityFile ~/.ssh/bitbucket/id_ed25519
  Port 22

設定できる項目は以下の通り。

.ssh/configファイルでSSH接続を管理する - Qiita

設定項目 説明
Host ホスト名
HostName ホストのアドレスかIPアドレス
User ログインユーザ名
IdentiyFile ログインするための秘密鍵パス
Port ポート番号(デフォルト22)
TCPKeepAlive 接続状態を継続したい場合:yes / 継続しない場合:no
IdentitiesOnly IdentityFileが必要な場合:yes / 必要ない場合:no
ServerAliveInterval 一定期間サーバからデータが送られてこないとき、タイムアウトする秒数

SendGridのメールで改行コードが反映されない問題

SendGridでメールを送信するとき、本文に改行コードを入れても、メール受信時には本文が改行がされなくて困りました。

ダメ元でググったらまんまのトラブルシューティングが公式から出てました。

sendgrid.kke.co.jp

PlainContentをActiveにすると症状は直りました。やったね。