背景
実行中のファイルに対してcpで上書きする場合だとText file busy
で置き換えられず、mvだと何も聞かれず置き換えられる理由を深掘ってみました。
データ構造
mvやcpの動きを確認する前に必要な前提知識を説明します。
プロセスとinodeとの関係
プロセスとinodeは以下のように
プロセステーブルエントリ
└ファイルテーブルエントリ
└v-node(i-node)
という形で繋がっています。
続きを読む
実行中のファイルに対してcpで上書きする場合だとText file busy
で置き換えられず、mvだと何も聞かれず置き換えられる理由を深掘ってみました。
mvやcpの動きを確認する前に必要な前提知識を説明します。
プロセスとinodeは以下のように
プロセステーブルエントリ
└ファイルテーブルエントリ
└v-node(i-node)
という形で繋がっています。
続きを読む
$ コマンド > outfile 2>&1
と
$ コマンド 2>&1 > outfile
は結果が異なります。
前者は標準出力、標準エラーともにoutfileに出力されるのに対し、後者は標準出力はoutfileに、標準エラーはターミナルに出力されます。
この違いを理解するためにUnixのシステムを深掘ってみます。
Unixシステムでファイルをオープンした場合は以下のようなデータ構造になります。
ref: https://www.usna.edu/Users/cs/aviv/classes/ic221/s16/lec/21/lec.html
続きを読む以前Docker multi stage buildなどビルド環境と実行環境が異なる(クロスコンパイル)時に、単純にGOOS
やGOARCH
をセットするだけではなく
$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ go build -a -installsuffix cgo -o main main.go
のように
CGO_ENABLED=0
-a
-installsuffix cgo
といったおまじないが必要ですよ、という記事を書きました。
ScratchイメージでGolangアプリの超軽量イメージをビルド - Carpe Diem
が、go 1.10からそれらが不要になったようです。
CGO_ENABLED=0 and -installsuffix cgo are no longer required since Go 1.10 | by Адам | Medium
今やWebだけでなく、iOS、Android、TV、カーナビといった多数のクライアントでAPIを利用する時代です。
各クライアントでBFFを置く設計もありますが、開発コストや運用コストを考えて同一のAPIサーバを用意し利用することも多いと思われます。
加えてサービスが大きくなってくると外部企業との連携や有志の開発者のためにAPIを公開するケースもあります。
そういった状況下では単にドキュメントベースでやり取りするのは難しく、しばしばAPIとドキュメントの乖離が生まれ負債となっていきます。
そのためこれらの問題を解決できる
といったスキーマ言語の活用がとても重要になってきます。
今回はOpenAPIについて話します。
続きを読むAppStoreでGrace Period機能がリリースされたました。
これはその機能の検証を行った結果です。
※Appleは気づいたら仕様変更することもちょこちょこあるので、こちらの結果が常に正しいとは信じず参考程度に捉えてください
サブスクリプションは決済手段を登録すると、毎月 or 毎年自動で更新されます。
しかしキャリア決済の上限に達したり、カードの上限・更新期限に達して意図せずお金を支払えないケースはサービス側が想像するよりもずっと多いのです。
なのでAppleに限らずGoogleもStripeも、決済問題が解決するまで一時的に解約させずに猶予期間というものを提供しています。
サービス側は猶予期間に入ってしまったユーザに「決済手段に何らかの問題が発生して支払いできてませんよー」と注意喚起を通知し、ユーザ側で問題を解決してもらえるように促す対応が必要です。
続きを読む以前↓の記事を紹介しましたが、
http.Serverの各Timeoutを使わないと
による大量接続攻撃を受けた時に困るので注意してください。
続きを読む