Closed4
たぶんこれが一番小さいと思います
極小のファイルサイズを目指す
一覧
ファイル形式 | ファイルサイズ [bytes] |
---|---|
テキスト | 0 |
JSON | 2 |
property list (JSON) | 2 |
property list (XML) | 181 |
property list (binary) | 42 |
GIF | |
JPEG | |
PNG | |
HTML | |
WAV |
環境
項目 | バージョン |
---|---|
OS | macOS 10.14 Mojave |
shell | GNU bash, version 5.1.16 |
shell utilities | OSに準ずる |
FFmpeg | 5.0 "Lorentz" |
ImageMagick | 7.1 |
Python | 3.9 |
テキストファイル(?)
tiny.txt
$ : > tiny.txt
$ od -- 'tiny.txt' # -> empty
$ stat -f 'file size: %z bytes%nblock size: %k blocks' -- 'tiny.txt'
file size: 0 bytes
block size: 4096 blocks
$ file --brief --mime -- 'tiny.txt'
inode/x-empty; charset=binary
解説
空のファイル。
ファイルサイズは0バイトである。
IANAのMedia Typesにはこれに該当するものは登録されていない。macOS 10.14 Mojaveの file(1) からはinode/x-empty; charset=binary
が取得できるが、これはPHP由来らしい。
JSONファイル
tiny.json
{}
$ echo -n '{}' > tiny.json
$ stat -f 'file size: %z bytes%nblock size: %k blocks' -- 'tiny.json'
file size: 2 bytes
block size: 4096 blocks
$ python3 -m 'json.tool' -- 'tiny.json'
{}
解説
中身はJavaScriptのオブジェクトリテラルで空のオブジェクトを表す{}
の2文字で、そのファイルサイズは2バイトである。
Pythonのjson.tool
モジュールはこれを妥当なJSONファイルとして処理している。
property listファイル
tiny.json.plist
{}
tiny.xml1.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
$ echo '' | plutil -convert 'json' -o 'tiny.json.plist' -- -
$ echo '' | plutil -convert 'xml1' -o 'tiny.xml1.plist' -- -
$ echo '' | plutil -convert 'binary1' -o 'tiny.binary1.plist' -- -
$ plutil -lint -- 'tiny.'{json,xml1,binary1}'.plist'
tiny.json.plist: OK
tiny.xml1.plist: OK
tiny.binary1.plist: OK
$ stat -f '%N: %z bytes' -- 'tiny.'{json,xml1,binary1}'.plist'
tiny.json.plist: 2 bytes
tiny.xml1.plist: 181 bytes
tiny.binary1.plist: 42 bytes
$ xxd -- 'tiny.binary1.plist'
00000000: 6270 6c69 7374 3030 d008 0000 0000 0000 bplist00........
00000010: 0101 0000 0000 0000 0001 0000 0000 0000 ................
00000020: 0000 0000 0000 0000 0009 ..........
解説
plutil(1) を使うことで、標準入力から対応する形式のproperty listファイルへ変換できる。
このとき-convert
オプションの引数に応じて、次の異なる3種のファイルが生成される:
-
json
形式の場合、JavaScriptのオブジェクトリテラルで空のオブジェクトを表す{}
の2文字が出力される。 -
xml1
形式 (version 1 of the XML plist format) の場合、plistObject
で空のdict
要素を含むXML文書が出力される。 -
binary1
形式 (version 1 of the binary plist) の場合、先頭が"bplist00" (62
70
6c
69
73
74
30
30
) のマジックナンバーで始まる、Apple独自のバイナリ形式で出力される。
property list形式の詳細については plist(5) のman pageを参考のこと。
このスクラップは2022/04/08にクローズされました