2021-08-17
jigインターン2021夏第一シーズン2日目、今日から本格開発スタート。5チーム、バリバリと作り始めています。 技術的な質問はSlackや、Zoomで常時受け付けます。 一人で5分悩んだらチームに相談、それでも5分で解決しないなら呼んでもらう感じで進めます。 どうにもハマって抜け出せない、そんな経験がプログラミングを止めてしまう理由になっている?


jigインターンのみなさん、進捗どうですかー?

勉強会での経験を元に、フロントエンド、バックエンド、それぞれ分担しての開発。JSON(ジェイソン)でハマったという声があったので、少し解説。

JSONとは、JavaScript Object Notationの略で、JavaScriptのオブジェクトの表記方法を元に作られたテキストベースのフォーマットです。 同じテキストベースのフォーマット、XMLと違って仕様がシンプルで人間にも読みやすいのが特徴です。

CSVとの違いは階層構造の表現ができるところ。入れ子になっているデータ構造も表現可能です。逆に、入れ子がなく、ほぼ同じ項目がずらっと並ぶ配列はCSVにした方が軽くて、Excelなど表計算ソフトなどで開きやすくなります。 CSVで表現できるものはすべてJSONで表現できます。(CSV.jsを使えばJSONとの相互変換は簡単!)

ハマりやすいポイント1。JavaScript内での表記とちょっと違う。
{ name: "jig", value: 2021, } この表記方法、JavaScriptとしてはOKですが、JSONとしてはNGです。
正しくは、こちら { "name": "jig", "value": 2021 } 微妙な違いがありますね。項目名は必ずダブルクォートで囲む必要があり、最後の項目後にコンマがあってはいけません。
JSONの方が厳格なので、JSONフォーマットはJavaScriptではそのまま使えます。

JavaScriptオブジェクトとJSONの相互変換。
JavaScriptオブジェクト → JSON
console.log(JSON.stringify(json)); 下記のようにパラメータを付けると、改行とインデントを付けて、テキストファイルとして読みやすくできます(ファイルサイズは増える) await Deno.writeTextFile("test.json", JSON.stringify(json, null, 2)); JSON → JavaScriptオブジェクト
console.log(JSON.parse('{"name": "jig", "value": 2021 }')); ファイルから読み込む時はこちら console.log(JSON.parse(await Deno.readTextFile("test.json")));

ハマりやすいポイント2。文字列になることを忘れずに!
下記のように日時を表すデータをJSONにすると・・・ $ deno > JSON.stringify({ date: new Date() })) '{"date":"2021-08-17T23:17:16.916Z"}' このように自動的に何らかの文字列になります。(new Date().toString()したものとも違うので注意)
元のDateオブジェクトとして使いたい場合、new Date("2021-08-17T23:17:16.916Z") などと再度オブジェクトを生成する必要があります。

大きくても小さくても、気軽に保存したり送ったりできるJSON、楽しく使っていきましょう!

情報セキュリティ好きもいる、jigインターン2021夏。掲示板といえばどう荒らし対策をするかが気になりますよね! 電子署名(HANKO)を使った対策も、今風でおもしろいかもしれません。

HANKOsrc on GitHub
前回はEd25519のWebAssembly版で作ったHANKOを、AES-GCMで使ったオープンソースforge内のed25519.jsを使って再実装。

HANKO_ID: ea687927de2d824363b2b1cbc62d1c42ab7a0bd79d26574b816b4f60c05d1e36
メッセージ: jigインターン2021夏、スタート
電子署名: 2719b28c34e89d9c843799d12f022a4216af0b078c477505e7ff3335b4ae1f7c1b4c51c13d551ebbcc691eae38d0c7c7d4094791010a56badcf3b8653b0af006

こちら入れると検証できます。メッセージなどに少しでも改竄あれば、検証に失敗します。

使用したライブラリ、forge-es(src on GitHub)に、ECCを使った鍵共有ECDHもあれば完璧なんだけど・・・。

電子署名はネット時代のハンコ!原理は難解な数学でややこしいですが、使うのはシンプル。いろいろ遊んで学ぶ、情報セキュリティ。

2日目のjigインターンブログ、5チーム分、更新されてます!
⭐jigintern diary⭐

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS