勉強

Kubernetes でちょっとした作業のために Pod を立てる

概要 Kubernetes で運用しているシステムで、ちょっとした作業を行う Pod が欲しくなった。例えば、通信経路が確立できているか確認するため curl を実行するとか。 そういうときは Deployment を用意せず、kubectl run を駆使して一時的に Pod を立てて確認…

Goのfuzzing testを調べる

概要 Go1.18からfuzzing testができるようになった。 fuzzing testの概要と導入して嬉しいかの情報をまとめる。 What’s fuzzing test? ファジングは、プログラムへの入力を継続的に操作して、コードが影響を受けやすいパニック、バグ、データ競合などの問題…

手動作成したDatadogのアラートをTerraformで構成管理する

概要 Infrastructureは構成管理することで、コードのプラクティスを取り込む方法が進んでいる(IaC)。モニタリングツールも同様の考えがあるらしい。 FYI Monitoring as Code: What It Is and Why You Need It – The New Stack 個人としてはプルリクエスト…

AWS Lambda + PHPを技術調査した

概要 qiita.com 数年前に軽く記事にしていたが、改めて技術調査をしたのでまとめてみる。 TL;DR いろいろなユースケースで使えるくらい充実してきた 思ったよりもすんなり動く ワーカーとか動かすと嬉しそう 実行環境 AWS公式でPHPの実行環境は提供されてお…

Laravel Sanctumを試してみる

概要 ISRを利用したサイト開発を行うにあたり、認証周りの調査を行っていた。 その中でLaravel Sanctumの存在を知ったので遊んでみる。 所感 古き良きCookieを使ったセッションの仕組みを、トークンで再現した感。 試してみる Laravel Sanctumとは Laravel S…

初めてのE2E

E2Eテストとは End to Endのテストの略で、システム全体を通したテストを行うこと。 Webサービスで言うと、ブラウザ上からテストを行うこととなる。 メリット ブラウザ上から実行するということで、よりユーザに近い環境でテストを行い、品質を担保すること…

Botmanでテストコードを作成

概要 Botmanで作成したコードをテストする方法。 実装 app/tests/BotMan/ExampleTest.php を例に進めていく。 感覚的にはPHPUnitと同様に、メソッドを実行し、返り値を判定する形となる。 シンプルな Hi のテストをベースに解説していく。 1. $this->bot->re…

画面外clickでポップアップを閉じる

概要 画面外をクリックしたときにポップアップを閉じるってやつ、結構ありますし便利ですよね。 今回はそれを実装します。 やること documentまたは、id要素に対してクリックイベントが発生したときに、クリックした対象が該当DOM以外であれば閉じるようにす…

Laravelで発行されるクエリを確認する

概要 LaravelのORMやクエリビルダで発行されるクエリを見たい時がある。 毎回調べるのが億劫なので、ここにメモする。 やり方 クエリを見たい箇所に下記を挟む。 \DB::enableQueryLog(); モデルでもRepositoryでも可 \DB::getQueryLog(); 参考 Laravelで実行…

(翻訳)フィーチャーファクトリー(機能を作る工場)になってる兆候リストをまとめてみる

概要 フィーチャーファクトリー(機能を作る工場)という記事で、機能を作る工場となってしまっている兆候が記載されていました。 こちらをチェックリストに起こしてみます。 どれくらいチェックがついてしまうかで、自分たちの健康状態が測れそうですね。 チ…

Packerハンズオンをやってみた感想

概要 自分の携わっている開発でPackerを使っているので、共有も兼ねてハンズオンをやってみました。 作成した資料はGitHubに置いてあります。 感想 勉強会を開催してみると、色々と自分の勉強になり良い体験でした。 チームで使ってはいますが、自分で構築し…

AWS Copilotを触ってIAMで躓いた話

概要 先日、ECSの環境構築を簡略化できる AWS Copilot というCLIツールが発表されました。 使用感の確認がてらチュートリアルを行おうとし、躓いた箇所を記載します。 手順と躓き 事前に今件で使うIAMユーザを作成しました。 Classmethodさんの記事を参考に…

Mackerelプラグインを使ってmemcachedのメトリックを取得する

はじめに 社内wikiに2017/12/12に書いたものを移植したものです。 対応 基本はMackerelの中の人の記事→mackerel-plugin-memcachedを参考に進めていきます。 ## memcached 通常通りインストールして、立ち上げておきます。 $ ps aux | grep memca memcached -…

Mackerelプラグインを使ってApacheのメトリックを取得する

はじめに 社内wikiに2017/08/19に書いたものを移植したものです。 対応 基本はmackerel-plugin-apache2を参考に進めていきます。 ## Apache Apacheは通常通りインストールし、httpd.confに下記の設定を行っていきます。 Listen 1080 ExtendedStatus On <VirtualHost 127.0.0.1:1080> <Location /server-status> Set</location></virtualhost>…

Laravelのpaginateで0を投げると15になる

概要 LaravelでAPIを作成しており、ページネーションの処理を実装しようとしてました。 DBから取ってくるデータを使うので、Eloquentのpaginateを使いました。 そこで、試しに0のパラメータを渡したところ、15件が返ってきたので、その調査をしました。 TL;D…

シェルでDBからデータを取得する

概要 普段はPHPを使って、DBからデータを取得しています。 通常はそれで問題ないですが、PHPだとサーバに入れる必要があります。 ちょっとしたデータを取る際に、いちいちサーバにPHPを入れるのが面倒だと感じました。 そこで、PHPを入れないでもDBからデー…

Go言語を始めるときに色々入れる

概要 Go言語でなにか作る際に、色々準備をするのでメモを残します。 内容 go mod 最近のバージョンで、パッケージ管理が標準で装備されたようです。 ※前は dep とか使っていた 標準のものを使うので、プロジェクトを始める際は初期化をします。 go mod init …

EC2にポリシーをつけて、fluentdでログを飛ばす

概要 EC2のログをfluentdでCloudWatchに投げる - juve534のブログ 前回の実装時に、IAMでユーザを作って、設定ファイルに記載しました。 ただ、設定ファイルにユーザの情報が載ってしまうので、セキュリティが気になると思いました。 そこでロールを作成し、…

LaravelでResponderを使ってみる

概要 Laravel本でADRパターンというのが紹介されていました。 それの実装について、メリットがピンと来ていなかったのですが、下記のスライドで理解できました。 speakerdeck.com そこでLaravelでADRのResponderを使ってみようと思います。 実装 書いてみた…

EC2のログをfluentdでCloudWatchに投げる

概要 fluentd でEC2のログを CloudWatchLog に投げていきます。 導入 まずは公式サイトに沿って導入します。 $ curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent3.sh | sh 次にCloudWatchに投げたいので、プラグインを導入します。 …

EC2のログをawslogsでCloudWatchに投げる

概要 EC2のログをGUI上から確認したいと思っていました。 ログを投げるやり方は、 fluentdでやったことがありましたが、単純に、CloudWatchに投げるなら、 awslogs というのがあるそうです。 そこで下記記事を参考に awslogs を試しています。 【簡単】EC2で…

CloudFormationで値を動的にする

概要 CloudFormation入門 - juve534のブログ でCloudFormationに入門したのでその続き。 今回は値を動的にする方法を学びました。 内容 前回作ったものは値が動的になっており、そのまま使い回しができない状態になっています。 AWSTemplateFormatVersion: '…

CloudFormation入門

概要 AWS用の構成管理ツール JSONやyamlで記載 スタックで管理 リソースの集合体(EC2, WAF) AWSで構成管理できる。 スタック単位で管理し、スタックにはリソースの集合体がぶら下がる。 そのため、スタックの構築や破棄でAWSのリソースを操作できる。 JSON…

LaravelでActionを切って躓いた話

概要 LaravelでControllerではなく、Actionというクラスを定義して、実装しようとして躓いた話をまとめます。 やりたかったこと postsってルーティングにアクセスしたら、 App\Http\Controllers\Posts\IndexAction が呼ばれる 起きたこと postAutoDumpで下記…

Guzzleを使ってAPIのテストを書く

概要 DBの単体テストは、PHPUnitを使うことで手軽に行うことができていました。 しかし、APIのテストはやり方がわかっておらず、テストコードの作成を行えていませんでした。 今回Guzzleを使って、モックを差せることがわかったので、実践したやり方をまとめ…

Laravelのtinkerを使えるとちょっと幸せになれる

概要 Laravelのtinkerでちょっと幸せになれたので、ここに残しておこうと思います。 tinker 説明 php aritisan tinker のことで、Laravelを対話的に動かすことができるコマンドです。 Eloquentはもちろんのこと、自分で作成した独自クラスの読み込みも可能で…

Laravel5.5のmigrationで、外部キー制約を貼ろうとして躓いた話

概要 業務でLaravel5.5を使っているので、家で学習がてらLaravelを触っていました。 そこで、外部キー制約を貼ったテーブルを作成しようとして躓いたので、忘れないように残しておきます。 やろうとしたこと ブログ投稿を管理するpostsテーブルと、そのブロ…

CakePHPのモデルでメモリを消費した話

概要 CakePHP1系のアプリケーションでメモリリミットが起きていました。 原因を調査したところ、Primarykeyに検索をかけるだけの単純なクエリ実行で、メモリを多めに消費していることがわかりました。 原因 CakePHP1系のキャッシングが原因でした。 queryメ…

2回目にvagrantを立ち上げたらディスクエラーが発生した件

概要 swooleを触ってみようとytakeさんのvagrant boxを立ち上げた。 一回目は特に問題なく立ち上がったのだが、再度立ち上げたところディスク共有のところでエラーが…。 Vagrant was unable to mount VirtualBox shared folders. This is usually because th…

PHPUnitでdataProviderが動作せずに時間を食った話

概要 PHPUnitを使って、PHPのテストコードを書いていたところ、dataProviderが動かなくて、数時間悩みました。 備忘録として、情報を残しておきます。 なにがあった? 下記のようなテストコードを書いて、PHPUnitを実行したところ、 rgumentCountError: Too …