理系学生日記

おまえはいつまで学生気分なのか

Gitで変更のあったファイル一覧をコミットメッセージや空行なしで抽出する

git

課題 ファイル一覧の抽出については--name-onlyを使うのはよく知られているテクニックです。 例えば以下では、一週間前からコミットされたファイルを抽出しています。しかし、コミットハッシュやコミットメッセージは不要です。どうしたものでしょう。 $ git…

「プログラミングTypeScript」を読んだ

プログラミングTypeScriptを読みました。 プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発作者:Boris Chernyオライリー・ジャパンAmazon TypsScript 最近はどこも、JavaScript書くんだったらTypeScript書いてトランスパイルという状…

他者から与えられたミッションに身を投じても良いんじゃないかという仮説

「自分が会社で何をしたいのかわからない、なぜなら人生で何をしたいのか答えが出ていないからだ」というような悩みを聞くことが多くなってきて、うん分かるーという感じがします。 この種の問いに対して、なかなか上手く切り返せずにきました。 それはぼく…

「起業の科学」を読んだ

新規事業開発という分野へ関わることになりました。 右も左もわからんなという状態のぼくにお薦め頂いた本、「起業の科学」を読みました。 起業の科学作者:田所 雅之日経BPAmazon 読後感 これから 読後感 一言で言えば読んで良かったです。 非常に良いなと感…

チームのタスクを全部ソースリポジトリのissueとして記載するのは違うのではないか

先日チームのレトロスペクティブで、タスクがチケット管理できてないよねという話があがった。 チームで仕事をするときのタスク管理はだいたいGitLabやGitHub、Azure DevOpsで行おうとするのだけれど、うまくいかないことが結構多い。 なんでうまくいかない…

Azure Database for MySQLでスロークエリログをLog Analytics Workspaceに連携する

Azure Database for MySQLでも、スロークエリを検出できます。 今回はこのスロークエリログをLog Analytics Workspacesに送信してみます。 Azure Database for MySQLでのスロークエリ取得 動作確認 Terraform コード Azure Database for MySQLでのスロークエ…

Application Insightsをフロントエンドで使うときInstrumentation keyとどう向き合うか

AzureにはApplication InsightsというAPMがあります。 Application Insights は Azure Monitor の機能であり、開発者や DevOps プロフェッショナル向けの拡張可能なアプリケーション パフォーマンス管理 (APM) サービスです。 Application Insights とは何か…

ISUCON11予選で敗退してきました

一昨年同様、@kkasaiさん、@hondaYoshitakaさんとISUCON 11へ参加しました。 一昨年はインスタンスチェックに失敗し、まさかのスコア0でフィニッシュでした。 一方で、今年はきちんとインスタンチェックも無事パスし、最終的なスコアは12,000前後という結果…

TerraformによるAzure Database for MySQLのポイントインタイムリストア・Geoリストア検証

Azure Database for MySQLのリストア検証のお時間です。 Azure Database for MySQLのリストア前提 準備 PointInTimeRestore Geoリストア 注意点 Azure Database for MySQLのリストア前提 Azure Database for MySQLにおいては、データベースのバックアップは…

AWS SDK + LambdaでAWSの前日コストをSlackに通知する

AWSを使っていると、変な使い方をしてると予算をオーバーしてしまいます。 このため、日次でAWS Cost Explorerを確認しているのですが、これはこれで面倒です。 面倒な行為というのはだいたい能動的な確認が求められるのから面倒であるので、 AWS Lambdaから…

自分のグローバルIPアドレスを知る

Azure Database for MySQLに自分のグローバルIPアドレスから接続したいというとき、グローバルIPをCMANで確認をしていました。 さすがに面倒になって、何か良い方法がないかなと思ったら、グローバルIPアドレスを返却してくれる様々なサービスがあることを知…

azurerm_mysql_databaseのcharset、collation指定は効果があるのか

TerraformでAzure Database for MySQLを構築する場合、必ず利用するであろうリソースがazurerm_mysql_databaseです。 このリソースはcharset、 collationが必須パラメータです。 それぞれ文字セット、照合順序を意味しており、MySQLを利用する方は気にしたこ…

Azure PipelinesでPull RequestをトリガーにCIを走らせる (または、CIトリガーとPRトリガーでの重複実行を抑止する)

Pull Requestが作成されたらCIを実行したい。こういったユースケースはよくあります。 Azure Pipelinesでもこの実現はできるのですが、この実現にはかなり癖があります。 結論 PR Triggerの設定は、azure-pipelines.ymlではなく、Azure ReposのBuild validat…

Azureの複数Subscriptionを扱う場合は頻繁にaz logoutすべき

あれ、これ本当なのか、という挙動になったのが複数Subscriptionを扱う場合。 例えば私のアカウント状況が以下のようになっているとします。 $ az account list | jq '.[] | { "env": .name, "mail": .user.name }' { "env": "Staging", "mail": "kiririmode…

Azure上のTerraform Backendに対してAD認証を行う

AzureをTerraformで管理する場合、TerraformのRemote Stateとして Azure Blob Storageを設定することになります。 Backend Type: azurerm - Terraform by HashiCorp ここで問題になるのはAzure Blob Storageに対する認証でしょう。 Azure Blob Storageの認証…

Azure Pipelinesのscriptではset -eする

Azure Pipelinesでは様々なPipeline用のタスクが用意されています。例えばMaven taskだったり、 Docker taskだったりです。 Build and release tasks この中で柔軟性が高いのはCommand Line taskや Bask taskでしょう。 例えばCommand Line taskでは、以下の…

例示用ドメインと例示用IPアドレス

rfc

ガイド上でサンプルのドメイン名を例示したい、テストデータでダミーのメールアドレスを登録したい、 ドキュメントでサンプルのIPアドレスを示したいといったケースがあります。 こう言ったときに記述するドメイン等は、記述時点では世界中に存在していなか…

Terraformで学ぶAzure Database for MySQL

Azure Database for MySQLをTerraformで構築してみます。 Terraformの構成 サーバとデータベース ネットワークアクセス制御 ファイアウォールルール VNETサービスエンドポイント 接続確認 インターネットからの接続 VNETからの接続 まとめ Terraformの構成 …

Azure PipelinesのService Connectionを使ってAzure Container RegistryのコンテナをPULLする

Azure Pipelinesにおいて、ジョブを動かすコンテナイメージをAzure Container RegistryからPULLしたい。 これを実行するとき、docker loginでACRにログインするんだろうなと考えていました。そうすると、ログイン用のクレデンシャルを保存しておかなければな…

Dockerイメージの`entrypoint`を複数引数のコマンドで上書きする

hashicorp/terraform:1.0.0のように、entrypointが指定されているコンテナイメージに対して、entrypointを上書きしたいケースがありました。 上書きするのが1引数ならdocker runに--entrypointを指定すれば良いです。 $ docker run --rm -it --entrypoint /b…

Azure PipelinesのジョブがInitialize Containersフェーズでuseradd Permission denied.で失敗する

Azure上でコンテナベースのジョブを作ったら、Initialize Containersフェーズでuseradd: Permission denied.というエラーが発生しました。 Try to create a user with UID '1001' inside the container. /usr/bin/docker exec dee61730d7328016d8d3f56d81cb0…

Azure Pipelinesでalpineベースのコンテナを使うとエラーになる

AzureでCIを行う場合はAzure Pipelinesを使うことになります。 また、最近のCIは都度同じ環境でCIを動かせるようにコンテナの上で実行するのがスタンダードです。 このため、開発しているプロダクトではalpineベースのコンテナでCIジョブを動作させていまし…

Terraform BackendのあるSubscriptionとは別のSubscriptionへリソースを構築する

SubScriptionによって環境分離を実現しようと考えています。つまり、Subscription1がQA環境、Subscription2がProd環境といった具合に。 このように各環境ごとにSubscriptionを分割し、それぞれをTerraformで管理しようとした場合、Terraform Backendをどの粒…

「Azureテクノロジ入門 2019」を読んだ

なかなか見えないAzureの全体像を把握するために読みました。 Azureテクノロジ入門 2019作者:佐藤 直生,久森 達郎,真壁 徹,安納 順一,松崎 剛,高添 修発売日: 2018/12/18メディア: Kindle版 構成 最近の悩み サービスカットで、Azureのさまざまな横断的に紹…

AzureでTerraform Backendを構成する

AzureをTerraformを使って管理する上で、Terraform BackendもAzure上に構成してみます。 AzureにおけるTerraform Backend Blob Storage ストレージアカウントの作成 実際にTerraformを実行してみる 参考文献 AzureにおけるTerraform Backend TerraformのBack…

マスクをつけていてもiPhoneロックを解除できるようになった

iPhoneのFace IDは便利な機能ではあるのですが、コロナ禍でマスクをつける時間が長くなると、Face IDでのアンロックはできなくなります。 これは非常に不便なところで、アンロックの都度いちいち手でiPhoneをアンロックするのはストレスでした。 この問題、i…

ようやくリモート会議環境を整えた

業務がリモートワーク主体になり、会議もリモート主体になりました。 その中で問題になっていたのが、リモート会議への参加がクソめんどくさい問題です。 前から頭を悩ませていたのですが、ようやく一通りの整備が終わりました。 クソめんどくさい問題とは何…

「ひと目でわかるAzure Active Directory」を読んだ

仕事でAzure周りを扱うことになりました。 有識者の方に話を聞いてみたところ、AzureはAzure Active Directory(Azure AD)を中心として構成されているそうです。そうであれば、まずはAzure ADを押さえておかないと話ができないであろうと考え、Azure ADの本を…

TerraformでMSI認証を使うというのはどういうことか

Terraformに関するAzureの認証方法はいくつかあります。これはAzure Providerのページにもまとめられています。 Authenticating to Azure using the Azure CLI Authenticating to Azure using Managed Service Identity Authenticating to Azure using a Ser…

はじめてのAzure+Terraform

TerraformでAzureを触ってみます。 最新版のTerraformのインストール Azure CLIのインストール Azureへのログイン Terraformを実行してみる Azureにログインできていなかった場合はどうなるか まとめ 先週、ついにTerraformの0.15.0がGAになりました。 最新…