/dev/null

脳みそのL1キャッシュ

Lambda 関数から ECS Task を起動する

プロジェクト構造 成果物は https://github.com/d2verb/lambda-golang-terraform/tree/run-ecs-task にあります。前回の記事のものをベースに使っています。AWS リソースは Terraform で管理しています。 $ tree . . ├── ecs.tf ├── golang │ ├── artifacts …

Go 言語で書かれた Lambda 関数を Terraform で管理する

プロジェクト構造 成果物は https://github.com/d2verb/lambda-golang-terraform にあります。 $ tree . . ├── golang │ ├── artifacts │ │ ├── sample.exe │ │ └── sample.zip │ └── src │ ├── go.mod │ ├── go.sum │ └── main.go ├── lambda.tf ├── provid…

MySQL で ENUM 型のカラムに無効な値を入れたときの動き

はじめに MySQL の ENUM 型を使う機会があったのですが、ENUM 型のカラムに無効な値をインサートするとなんとそのままデータを投入できたということがあったので、どうしてそんなことが起こったのか調べてみました。 実験 MySQLのバージョンに関してですが、…

WebAssembly を触ってみる

WebAssembly (wasm) とは MDN によると WebAssembly は最近のウェブブラウザーで動作し、新たな機能と大幅なパフォーマンス向上を提供する新しい種類のコードです。基本的に直接記述ではなく、C、C++、Rust 等の低水準の言語にとって効果的なコンパイル対象…

NX bit てなんぞや

はじめに 訳あって NX bit について調べる必要があったので、その際に残したメモをまとめました。 NX bit とは メモリ領域に付与する実行不可属性です。NX bit が立っているメモリ領域上でコードを実行することはできません。なお、NX(No eXecute) bit は AM…

PHP で未定義の定数は文字列として解釈されるよという話

動作環境 $ php -v PHP 7.3.28 (cli) (built: Apr 29 2021 18:47:43) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.28, Copyright (c) 1998-2018 Zend Technologies with Xdebug v3.0.4, Copyright (c) 2002-2021, by Derick Rethans 本…

Docker コンテナ内で Apache と Laravel Queue Worker を同時に動かす

はじめに 仕事で Supervisor を使って Docker コンテナ内で Apache と Laravel Queue Worker を同時に動かすことがあったので、その作業記録としてこの記事を残します。 Supervisor ってのはこいつですね。複数のプロセスを監視、制御できるプログラムです。…

おうち Nomad & Consul クラスタの構築 - Consul 編

はじめに 前回は物理構築までやりました。今回は OS の基本セットアップと Consul のセットアップをしていきます。 d2v.hatenablog.com OS のインストール 以下を参考に Raspberry Pi に Ubuntu Server をインストールします。今回は Ubuntu LTS 20.04 (Pi 3…

ブートローダーの修復

はじめに 先日、ゼロからのOS自作入門をやってたらブートローダーを消し飛ばしてしまいました。具体的に言うと /boot/efi 配下を書き換えちゃったってことです。 これによりしばらく、プライベート用の PC が動かなくなっていたのですが、無事修復できたので…

macOS の launchd を使ってサービスを自動起動する

はじめに Linux には systemd という起動処理やシステム管理を行うプログラムがあります。systemd は /etc/systemd/system 以下に xxxx.service を作り systemctl enable xxxx と実行すれば、起動時処理を追加できます。 これを macOS でもやりたいわけです…

LINE CTF 2021 writeup

LINE CTF 2021 にチーム Tomatosalad で参加しました。結果は 200 ポイント、 73 位でした。 僕は crypto カテゴリの問題を 2 問解きました。 babycrypto1 ソースコード #!/usr/bin/env python from base64 import b64decode from base64 import b64encode i…

Eloquent Model 内の処理の委譲

はじめに Eloquent Model の create メソッ の実装を見てやろうと Laravel Framework のコードを潜ってみたところ、なかなか面白い処理フローになっていたのでメモ TL;DR Model::create() を実行すると処理が Builder::create() に委譲される 処理の委譲は _…

Docker Compose で Firebase のテスト環境を作る

はじめに 仕事で Firebase の Readltime Database を使う機会があり、Firebase Local Emulator Suite を使ったテスト環境を構築したのでメモ 設定ファイル Dockerfile Firebase CLI をインストールして、Realtime Database のエミュレータのみを起動している…

Hugo で tailwindcss を使う

はじめに Hugo でテーマを作ってみようと思い、そのテーマに tailwindcss を使おうと思ったので色々調べたのでここにまとめておく 準備 $ hugo new site hugo-tailwindcss $ cd hugo-tailwindcss 必要なライブラリをインストールする $ npm init -y $ npm in…

Linux Kernel をビルドする

はじめに やむを得ない事情で Linux Kernel 弄って、ビルドして、実験することが度々あるので作業記録をここに残す バージョン ホスト環境を汚したくないので QEMU + Ubuntu Cloud Image を使って仮想環境を準備する。ホスト環境やソフトウェアのバージョン…

おうち Nomad & Consul クラスタの構築 - 物理構築編

はじめに 最近 Nomad や Consul といった Hashicorp プロダクトに興味を持ち、色々勉強しているうちに、実際に物理サーバで実験したくなったので、Raspberry Pi を使って Nomad & Consul のクラスタを構築してみました。 (Kubernetes クラスタを構築するこ…

Unicode の等価性と正規化について

はじめに Unicode には見た目が同じで表現方法が複数ある文字があります。例えば、「で」ひとつを取っても以下のように 2 つの表現方法があります。 $ python Python 3.8.2 (default, Apr 14 2020, 13:29:18) [Clang 11.0.3 (clang-1103.0.32.29)] on darwin…

コンテナイメージ脆弱性スキャンツールの Trivy を使ってみた

はじめに 私が携わってる案件では ECR, ECS (Fargate) を使っていますが、コンテナイメージの脆弱性スキャンをやろうと思い ECR Image scanning を使ってみたところ、スキャンが割と雑で悩んでいました。 そこで類似ツールの Trivy を使ってみたら解決できた…

TryHackMe をやってみた

はじめに 最近、Hack The Box やら TryHackMe が流行っていたり、OSCP を取りましたという報告を Twitter で見かけたりして、ペネトレーションテスト界隈が熱いと感じております。そんな中で、セキュリティに興味があると言っておきながら、どれもやっていな…

「Linuxで動かしながら学ぶTCP/IPネットワーク入門」はいいぞという話

はじめに こやつを読みました。 www.amazon.co.jp 前から気にはなっていて、Kindle Unlimited で読めることがわかったので、1 日かけて(実際は 3 時間程度)読んでみました。 どんな内容か 基本的には Linux の Network Namespace という機能を使って、分離…

TIL: This week I Learned

はじめに 今週最大の知見は、Laravel でテストを書くとき、data provider 内にはファサードやヘルパ関数が一切使えないという事実。 TIL PHP Laravel でテストでサービスコンテナが作られるタイミングと注意すべきこと Python copy と deepcopy について uni…

TIL: This week I Learned

はじめに 今週は Infra と CTF week だった。 TIL Apache のバージョンを隠す serverless framework で CloudWatch Logs にログを吐く lambda function を作る serverless framework で Python のパッケージをインストールしてデプロイしたい Buffer Overflo…

C++ の vtable による動的ディスパッチ

はじめに まず、以下のコードを見てほしい。 // g++ vtable.cpp -o vtable -no-pie #include <iostream> #include <cstdio> using namespace std; class Animal { public: int age; Animal(int age) : age(age) {} virtual void bark() = 0; }; class Cat : public Animal { pu</cstdio></iostream>…

TIL: This week I Learned

はじめに 今週も今週とて色々学んだのでまとめました。 TIL PHP の instanceof は親クラスもインターフェースもチェックできる Laravel で Notifiable なしで通知を送る Fetch API でレスポンスのステータスコードが 404 の場合に reject したい AWS SNS か…

TIL: This week I Learned

はじめに Today I Learned をはじめました。TIL は基本的には GItHub に書いていますが、週末にまとめてこっちにも書こうと思います。 TIL は tips を書きたいとき、ブログはがっつり書きたいとき、的な使い分けをしたいと思います。 TIL Laravel8 でも afte…

CORSについて勉強する

はじめに CORS とは Cross Origin Resource Sharing の略で、クロスオリジンでのリソース共有を可能にする仕組みです。僕はこれまでふんわりとしか CORS のことを認識していなくて、いざ CORS を有効にしてくださいって言われてもどうすればいいのかわかりま…

Python の仮引数で指定できる / と * の意味

はじめに 以下は valid な Python コードなのですが、仮引数リストにある/と*の役割わかりますか? 僕はわかりません。さっぱり動作が想像できなかったので調べてみました。 def func(a, b, /, c, d, *, e, f): print(a, b, c, d, e, f) TL;DR def func(a, b…

Pythonでポートスキャナを作る

はじめに 最近仕事中の雑談で、TCP/IP の勉強として何を作ればいいのかという話になったが、ポートスキャナがいいのではという意見が挙がりました。そういえば、自分はポートスキャナを使ったことはあったが、作ったことはなかったので、これを期に自分で作…

DBスキーマをGitHubで管理したい

はじめに 開発の途中で、DBの構造がころころ変わるのはよくあることです。構造を変えるたびにレビューが必要な場合は、GitHubでDBスキーマを管理できると便利ですよね。DBスキーマがテキストファイル形式であり、DBスキーマからERDを生成するビジュアライザ…

PHPのOPcacheについて調べた

はじめに ふと、PHPのOPcacheってどういう実装になってるんだろと思ったので調べてみることにしました。具体的には、いつ、何を、どこに、どんな形で、キャッシュし、いつキャッシュを使うのかについて調べました。 なお、今回の調査に用いたPHPのバージョン…