JSON is everywhere on the Internet. Servers spend a *lot* of time parsing it. We need a fresh approach. The simdjson library uses commonly available SIMD instructions and microparallel algorithms to parse JSON 4x faster than RapidJSON and 25x faster than JSON for Modern C++. Fast: Over 4x faster than commonly used production-grade JSON parsers. Record Breaking Features: Minify JSON at 6 GB/s, vali
jqはとても便利なコマンドです。 JSONを返すAPIを実装するときや、SaaSのAPIから特定の情報を抜き出してシェル変数に代入するときなど、web開発や運用には欠かせないツールとなっています。 しかし、私にとってjqのクエリを一発で書くのは容易ではなく、思い通りの出力が得られないことがよくありました。 難しいエラーメッセージに悩まされて、jqで書くのを諦めて別の言語で書き直すこともありました。 jqの十八番と思える場面で使いこなせないのは、なかなか悔しいものがあります。 ツールを使うのが難しいなら、同じものを作ってしまえばよいのです。 jqの全ての機能を実装する jqを言語としてきちんと書けるようになる jqを完全に理解する jqの全ての機能を自分で実装してしまえば、jqがどういうものか、クエリがどのように処理されるのか、詳しくなれるはずです。 jqを得意な言語と言えるようになって、ク
joというJSONを組み立てるコマンドがあって、これは2016年からある便利なCLIツールなのですが、昨日急に思い立ってGo実装を作りました。 go get github.com/itchyny/gojo/cmd/gojo brewでもインストールできます。 brew install itchyny/tap/gojo 使い方はこんな感じ。 $ gojo foo=bar qux=quux {"foo":"bar","qux":"quux"} $ gojo -p foo=bar qux=quux { "foo": "bar", "qux": "quux" } $ gojo -a foo bar baz ["foo","bar","baz"] $ seq 10 | gojo -a [1,2,3,4,5,6,7,8,9,10] $ gojo -p foo=$(gojo bar=$(gojo baz
最近、複雑なJSONをElmで扱いたい的なことがあり、JSONとElmについて知ったのでまとめる。 (思いついたまま書いたので、二番煎じ以降だったらごめんなさい) 前置き ElmでJSONを扱うには とりあえず公式の、 https://package.elm-lang.org/packages/elm/json/latest/ を使いましょう。 公式でDecodeできる型 String Bool Int Float List,Array Dict null これとその他の関数を組み合わせて、あらゆる(正しい)JSONをパースして、必要な情報を取り出すことができる。 ただし、取り出すときに、取り出したい情報のkeyと型がすでにわかっていなければならない。 本題 ここで思いついてしまった。 「あらかじめ取り出したい値のkeyや型がわからない場合にも、とりあえずElmの世界に持っていきたい」 や
extendJSON.md JSONが対応していない値をJSONに保存する方法 JSONは NaN / Infinity / -Infinity や Date 型等に対応していない。 しかし、JavaScriptのJSONは、これらを解消する仕組みを持っている。 それは JSON.parse の第二引数の reviver とJSON.stringify の第二引数の replacer だ。 注意が必要なのは、 Date 型は toJSON メソッドを持つため replacer に値が渡る前に文字列になってしまうこと。 これに対応するには toJSON メソッドを一時退避してしまえば良い。 これらを上手く駆使すれば、JSONに型を保ったまま値を保存し復元することができる。 こんな感じ。 var original = { 'nan': NaN, '+inf': Number.POSITIVE_
JSONより出来の良い妹「SION」 今回はSIONというデータシリアライゼーションフォーマット(data serialization format)を提案します。 Wh(at|y)Serialization? その前にシリアライゼーション(serialization)とは何かを復習しておきましょう。「シリアライズ(serialize)すること?」正解です。では、シリアライズとは何? 文字入力を音声入力する(siri)ではありません:-)。プログラムの中のオブジェクト(objects)をバイト列(bytes)に変換することです。実質すべてのプログラムは入力されたバイト列をデシリアライズ(deserialize)し、処理した結果をバイト列で出力、つまりシリアライズしているわけで、それをどのような形式=フォーマットで行うかというのはコード(codes)以上に重要な課題と言えましょう。mp4は
Vega-Lite is a high-level grammar of interactive graphics. It provides a concise, declarative JSON syntax to create an expressive range of visualizations for data analysis and presentation. Vega-Lite specifications describe visualizations as encoding mappings from data to properties of graphical marks (e.g., points or bars). The Vega-Lite compiler automatically produces visualization components in
SIONというシリアライゼーションフォーマットを提案します。Swiftによるレファランス実装はこちら。 https://github.com/dankogai/swift-sion SIONという名前は Swift Interchangeable Object Notation からとりました。名前の通りSwiftのリテラルが元になっています。以下はSIONで表現されたデータの一例です。 [ "array" : [ nil, true, 1, // Int in decimal 1.0, // Double in decimal "one", [1], ["one" : 1.0] ], "bool" : true, "data" : .Data("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"), "date" : .Da
(この記事のレギュレーション: lts-11.9) Dhall という設定記述用言語があり、使ってみたところ良い感じだったので紹介します。 なお、この記事は先日某所で発表したものの拡大版になります。 speakerdeck.com Dhallとは何か Dhallについて短かく表現するなら公式サイトの以下の説明が分かりやすいです。 You can think of Dhall as: JSON + functions + types + imports データ表現にプログラマブルさと静的な検査とファイルのインポートを加えたものというわけです。 まだ開発中のためかあまりアピールされていませんがツールチェインも充実しており、 ちょっとした処理を確かめるためのREPLや、 今どきの言語らしく公式フォーマッタもあります。 あと大事なのはチューリング完全ではないということです。 具体的にはループなどは
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く