Postfix のサンドボックス環境をローカルに作る

この記事は「はてなエンジニア Advent Calendar 2022」の 23 日目の記事です。 昨日は id:onishi さんで はてなのエンジニア×人事の取り組み - 大西ブログ でした。 訳あって Postfix を勉強しています。 Postfix 実用ガイド などを参考に Postfix を動作さ…

「プロフェッショナルSSL/TLS」を読んだ

SSL/TLS が全然分からなかったので、会社の人からおすすめされた プロフェッショナルSSL/TLS を読みました。 体系的に解説されていて、説明も丁寧です。とても面白かったです。 基礎知識としては 第1章 SSL/TLS と暗号技術, 第2章 プロトコル, 第3章 公開鍵…

AWS Lambda with Go のハンドラ

AWS Lambda を Go で実装するとき、ハンドラを lambda.Start() に渡して実行することが多いと思います。1 lambda.Start() が受け取るハンドラの型は interface{} です。これは empty interface なのでどんな型でも入れることができますが、実際には守らない…

AWS-CDK 本体がどうやってユーザが書いたスタックを読み込んでいるか調べた

最近、仕事で AWS-CDK を触っています。 AWS-CDK ではユーザは以下のようにスタックを書いて、AWS リソースを作成します。 import * as cdk from '@aws-cdk/core'; import * as s3 from '@aws-cdk/aws-s3'; export class CdkTestStack extends cdk.Stack { c…

スカイダイビングを体験してきました

2021/12/04 に栃木県の 藤岡スカイダイビングクラブ でスカイダイビングを体験してきました。 藤岡駅からタクシーでスカイダイビング場に行きました。 スカイダイビング場はこんな感じでした。 スタッフさんが飼っている「りょーま」くんです。 かわいい。 …

LVM で論理ボリュームを作成する

Vagrantfile 検証に Vagrant を使います。 1GB のディスクを 2 つ追加しています。 この 2 つのディスクを使い、論理ボリュームを作成します。 # -*- mode: ruby -*- # vi: set ft=ruby : ENV["VAGRANT_EXPERIMENTAL"] = "disks" Vagrant.configure("2") do …

「入門 監視」を読んだメモ

書籍情報 https://www.oreilly.co.jp/books/9784873118642/ 1.1 アンチパターン 1: ツール依存 成功したチームが使っているから、という安直な理由でツールを採用してはいけない 自分や自分のチームにツールが合っている必要がある 1.3 アンチパターン 3: チ…

Go の string と range

string を range したときに返るインデックスは 文字列中でのバイト位置を表しているということを知りました。 今まで何文字目というインデックスが返るものと勘違いしてました。 忘れないようにメモしておきます。 参考 https://golang.org/doc/effective_g…

「新しいシェルプログラミングの教科書」を読んだメモ

一時ファイル名を作る $$ で現在のプロセスのプロセス ID を取得できる。これは一時ファイルの名前生成に利用できる。 $ tmpfile=/tmp/$$ $ echo $tmpfile /tmp/157490 文字列の長さを得る expr を使う。 $ expr length "pewpewpew" 9 $ foo=hello; expr len…

mkcert と golang の net/http を使い、ローカル環境に HTTPS サーバを立てる

mkcert をインストール(ビルド)する https://github.com/FiloSottile/mkcert#linux $ sudo apt install libnss3-tools $ git clone https://github.com/FiloSottile/mkcert && cd mkcert $ go build -ldflags "-X main.Version=$(git describe --tags)" mkce…

Linux のネットワーク関連コマンド

iptables と dnsmasq も後で追記したいです。 nc TCPやUDPのデータが送受信ができるコマンド。 TCP で Listen は nc -l 12345 、Connect は nc localhost 12345 にする。 UDP にする時は -u を付ける。 tcpdump パケットをキャプチャできるコマンド。 -t で…

ip netns でブリッジを作成する

Linuxで動かしながら学ぶTCP/IPネットワーク入門 を読んでいます。 この本の中で登場した ip netns コマンドの使い方をメモしておきます。 ブリッジを作成する

「DNSがよくわかる教科書」を読んだメモ

TLD TLD には ccTLD(Country code top-level domain) と gTLD(Generic top-level domain) がある ccTLD: .jp や .uk などの国や地域に割り当てられる gTLD: 国や地域の制限は無い。 .com や .net など。ただし .edu や .gov などには利用制限がある スタブリ…

iPad から Ubuntu の Vino に接続する

Vino を使うと、実際のデスクトップ画面に接続できます。 環境 Ubuntu 20.04.2 LTS iPad Air Ubuntu の設定 設定 > 共有 > 画面共有 から Vino を有効にしてください。 Vino が起動していないときは /usr/lib/vino/vino-server で手動起動できます。 iPad の…

ip netns でネットワークセグメントを作成する

Linuxで動かしながら学ぶTCP/IPネットワーク入門 を読んでいます。 この本の中で登場した ip netns コマンドの使い方をメモしておきます。 ネットワークセグメントを 2 つ作成し、通信できるようにする 動作確認 $ sudo ./create_netns.sh $ sudo ip netns e…

join コマンドの練習

join コマンドを使ったファイルの結合を練習してみます。 テスト用にファイル breeds と dogs を用意しました。 2 つとも 1 行目はヘッダです。データはソートされていないです。 $ cat breeds id breed 4 maltese 1 poodle 3 frenchbulldog 2 pomeranian 5 …

サービスのログが journald に収集されるか試す

journald について勉強しています。systemd が起動するサービスの標準出力と標準エラー出力が journald に収集されるか、 テスト用のログを出力するサービスを作り、試してみました。 テスト用のログ出力スクリプト 以下のスクリプトを /home/pi/testsh/test…

「Linuxのしくみ」を読んだメモ

試して理解 Linuxのしくみ 実験と図解で学ぶOSとハードウェアの基礎知識 第3刷 を読み終えました。自分用に整理したメモを残しておきます。 勉強用リポジトリ: https://github.com/hiroygo/linux-in-practice 調査用のコマンドやファイル /proc/cpuinfo ファ…

golang で URL を結合する

golang で URL を結合する url.Parse と path.Join を使う path.Join だけだと正しく結合できない場合がある1 実行結果の https:/golang.org/pkg/net/url のようにスラッシュが削除される サンプルコード The Go Playground で実行 package main import ( "f…

golang で UUID を使う

golang で UUID を使う ライブラリは https://github.com/google/uuid を使います GoDoc: https://pkg.go.dev/github.com/google/uuid サンプルコード package main import ( "fmt" "github.com/google/uuid" ) func main() { // uuid.NewRandom() はランダ…

Raspberry Pi 4 でローカル DNS サーバを立てる

Raspberry Pi 4 と BIND 9 で自宅ネットワーク用の DNS サーバを立てました。 ラズパイに sv.homenetwork というドメイン名を付けてみます。 ラズパイ情報 $ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" V…

Raspberry Pi 4 のセットアップ

ラズパイ4スターターキット 4GB版 を秋月電子で購入しました。 行った設定などを書いておきます。 OS 情報 ラズパイ4スターターキット 4GB版 には Raspbian インストール済 microSD が付属してます。 そのため OS は付属の Raspbian を使うことにし…

golang でシグナルを扱う

golang でシグナルを扱う Go でシグナルを扱うには singal.Notify を使う 以下のサンプルコードでは SIGINT = ^C を受信するとアプリケーションが停止する sigC := make(chan os.Signal, 1) のように必ずバッファありチャネルが必要 os.Interrupt と os.Kill…

sed で置換する

実行例 名前が チ で終わる犬に忠犬をつける $ cat sample.xml <root> <dog name="ソフィア" age="7" /> <dog name="ポチ" age="5" /> <dog name="コロ" age="10" /> <dog name="ハチ" age="5" /> </root> $ sed -i -E 's/([ア-ン]+チ)/忠犬\1/g' sample.xml $ cat sample.xml

XPath で指定したノード名でない、ノードを取得する

XPath で指定したノード名でない、ノードを取得する サンプルXML <root> <animals> <dog>sophia</dog> <dog>koro</dog> <panda>xiangxiang</panda> </animals> </root> ノード名が panda でない animals の子ノードを取得する /root/animals/*[not(self::panda)] <dog>sophia</dog> <dog>koro</dog> 参考 XPath: select child elements that do *not* have…

Ubuntu から VPN 経由で Windows へ接続したときのメモ

Ubuntu から VPN 経由で Windows へ接続したときのメモ 接続環境 Ubuntu から ヤマハ RTX1200 に VPN した後、RDP で Windows へ接続する 接続元: Ubuntu 18.04.5 LTS VPN先: ヤマハ RTX1200, L2TP/IPsec RDP 先: Windows 10 Ubuntu に VPN クライアントをイ…