スマホだからDBに保存出来ない困ったとボヤいたら
「オールドプログラマーだったらDB以外の保存方法を考えてみろよ!」
的な返事をいただき、凹んだので書きます
※もっと優しく言われてますけど、DBしか使わないと言う発想が思考停止していた
前提条件
・sqlite3は使えますが諸事所により使えないという前提
・保存件数は1件(項目は多数あります)
この実験はスマホではないですが、手始めにバイナリー形式でファイル保存ができるか考えてみました
みんな大好きJSON
Mix.install([{:json, "~> 1.4"}])
# セーブ
{_, x} = JSON.encode([hoge: 123, hoge2: "hogehoge"])
File.write("hoge.txt", x)
# ロード
{_ ,y} = File.read("hoge.txt")
{_, j} = JSON.decode(y)
Map.get(j, "hoge")
やっぱりバイナリーで保存したい!
@mnishiguchi さんからのヒントを元に
# セーブ
:erlang.term_to_binary([hoge: 123, hoge2: "hogehoge"])
File.write("hoge2.txt", x)
# ロード
{_, z} = File.read("hoge2.txt")
:erlang.binary_to_term(z)
つづきの実験はありますが、今回はここまで
PS:めっちゃ悔し、思いつかなかったのが悔しい
別案
@piacerex さんの案
Mix.install([{:jason, "~> 1.4"}])
[hoge: 123, hoge2: "hogehoge"]
|> Enum.into(%{})
|> Jason.encode!
|> then(& File.write!("params.json", &1))
File.read!("params.json")
|> Jason.decode!(keys: :atoms!)
|> Enum.into([])
更に悔しい(案ありがとうございました)