LoginSignup
7
3

More than 1 year has passed since last update.

オールドプログラマーだったらDB以外の保存方法を考えてみろよ!

Last updated at Posted at 2022-12-28

スマホだから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([])

更に悔しい(案ありがとうございました)

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3