c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

JSONを整形してからdiffをとるtool、diff-with-jsonを作った

JSON を整形してから diff をとる tool、diff-with-json を作った。

github.com JSON を jq command に通して整形し、colordiff が在れば其れを、無ければ diff を使って差分を表示する。

次の a1.json と a2.json が在ったとしやう。

// a1.json
{ "m": 42, "n": 57 }
// a2.json
{ "m": 42, "n": "parrot" }

.n を 57 から"parrot"に変へたものだ。此れを diff で diff -u -L a1.json -L a2.json a1.json a2.json として差分を出すと斯う成って了ふ。

--- a1.json
+++ a2.json
@@ -1 +1 @@
-{"m":42,"n":57}
+{"m":42,"n":"parrot"}

JSON の構造は全く無視される。代はりに diff-with-json を使へば diff-with-json -L a1.json -L a2.json a1.json a2.json として、

--- a1.json
+++ a2.json
@@ -1,4 +1,4 @@
 {
   "m": 42,
-  "n": 57
+  "n": "parrot"
 }

JSON の構造を保った差分が見られる。

情報を JSON で、一行に圧縮して Git や SVN に入れてゐる場合に好く使へる。特に svn diff と共に使ふ樣に作ってある。svn diff --diff-cmd diff-with-json と--diff-cmd option として diff-with-json を指定してやれば、SVN に一行にして格納してゐる JSON の差分が見易い。

使ふ時は jq command と、diff 或いは colordiff command が必要だ。

Crystal で作った。

OCamlでJavaScriptが幸せ

ML Advent Calendar 2016 - Qiita 12/11 參加。

JavaScript[]ふ言語に變換[へんかん]する言語は沢山[たくさん]在った。活溌[かっぱつ]に活動してゐるものは[]だ多いものの、多勢はTypeScriptElmに流れたやうだ。TypeScript の型 system は[やが]て ES.next に[]JavaScript[]の物に成るかもしれない。Elm は軈て ECMAScript で自然に FRP (Functional Reactive Programming) が行なへる機能が提案され役目を終へるだらう。OpalHaste[など]其々[それぞれ]RubyHaskell と云ふ人氣[にんき]の在る言語を JavaScript實行[じっこう]機でも使へる tool として活溌に[つづ]くだらう。

別の觀點[かんてん]を二つ入れてみよう。TypeScript や Elm は、實行時に必要最低限に近い型しか持たぬ JavaScript[たい]してもう少し廣汎[こうはん][]つ compile 時に計算する型を[あた]へるものだ。一つ目の觀點は型だ。Opal や Haste は、[ひろ]い community や長い研究を持つ言語を JavaScript の世界に應用[おうよう]しようとするものだ。二つ目の觀點は言語だ。TypeScript や同等のFlowや、Java 風のDartは、型の觀點から見れば弱い。構造的部分型や漸進的型付けは見事[みごと]なものだ。JavaC#とほぼ同等の廣さの型 system で満足するならばしてもよい。だがより廣汎な型 system が廣く使はれてゐる現代で[]の型 system に不満を持った場合でも、我慢しなければならないだらうか?  Haste (Haskell) や Elm は型の應用範圍[はんい][ひろ]げ不満を[]やして[]れる。だが二つ目の觀點が在るのだ。JavaScriptJavaScript 實行機の上で動く何かである[だけ]でなく、言語だ。言語は思考を持ってゐる。Haskell遲延評價[ちえんひょうか]で非正格な型 system は、先行評價である JavaScript と遠く離れたものだ。[また]Elm の FRP ベースで非 OOP な構造も JavaScript と遠く離れたものだ。

欲張ってみよう。二つの觀點を共に深く滿[]たす事は出來[でき]るだらうか?  OCaml が在る。OCaml は、System F に近い廣汎な型 system を[そな]へてゐる。ML から續く長い研究の伝統を持ち、金融系等の産業界に使はれてきた廣い實用の伝統も持つ。PHP に斬進的型付けを実装したHackや Docker 社に買収[ばいしゅう]されたMirageOSdocker-syncの backend であるUnison、強い型付けの AltJS であるHaxe證明[しょうめい]支援系のCoqOCaml で作られてゐる。Flow や、WebAssembly の現狀[げんじょう]の參照實裝も實裝言語は OCaml なのだ (どうやら Facebook 社は PHP 丈でなく OCaml も好んでゐるやうだ)。又 OCaml は、JavaScript と同じく λ 計算に基附[もとづ]き、JavaScript と同じく OOP に基附いてゐる。OCaml函數[かんすう]JavaScript の函數に對應[たいおう]し、OCaml の class は ECMAScript の class に對應するだらう。OCaml の豊かな型 system は compile 時に計算され、實行時には JavaScript と同等水準の型丈が[のこ]るだらう。JavaScript は正格であり其の評價戦略は先行評價だ。此れも OCaml のものだ。OCaml はごまかしの無い data 構造自體[じたい]の immutable 性を持つが、さうしたければ自然に mutable 性を利用出來る。JavaScript は逆の傾向を持つが、両方が同居する上で immutable 性が中心であるのは過去や遠い未來[みらい]では[][かく]現代では好ましいだらう。

[]まり OCamlJavaScript なのでは?

其處[そこ]BuckleScriptReasonを紹介したのが以下の slide だ。BuckleScript は OCaml を其の[まま]JavaScript に變換する compiler だ。OCaml compiler の一部である Camlp5 等を使ひ美しく仕上げられてゐる。BuckleScript が吐く JavaScript も中々美しい。扱へる言語は、OCaml の亜種ではない、OCaml 其の物である。Reason は、JSX を含む OCaml の亜種である。Camlp5 の力で、BuckleScript は OCaml と Reason を同時に扱へる。OCaml の immutable 性はImmutable.jsが提供する。FRPRxOCamlReact等多くの OCaml での FRP library が担当しよう。Bloomberg 社と Facebook 社が支える將來[しょうらい]は暗くはない。

OCaml で JavaScript が幸せ // Speaker Deck

Crystalで殺せ

Crystal で殺せ // Speaker Deck

Crystal で作る簡單インタラクティブ CUI。Crystal で面倒臭い作業を殺せ

Git の要らない local & remote ブランチを撰んで消すツールを作ったで書いた tool を紹介したものだ。其の後多量の branch が在っても scroll 出來る UI を作ってゐるが、UI を組む DSL がどうあるべきか惱んでゐる。

private-values : Delete private values and private files from your git repos.

private-values // Speaker Deck

private-values: 秘密情報や個人的な file を共有リポジトリから隠す爲のツールで紹介した tool だ。今あたらしい機能を一つ考へてゐる。複數の team で使へるやう、site (假り名) と云ふ概念を入れやうと思ってゐる。後方互換性は保てる見通しでゐる。

Serverless Frameworkとは何か、何故使ふのか

Serverless Framework を本番環境に投入するために // Speaker Deck

Tutorial は以下に書いた。本當に簡單なのだ。 Serverless Framework (1.0) で AWS Lambda と AWS API Gateway を設定する、單純なサンプルを書いた

纏め丈轉記しておかう。

What?

サーバーレスアーキテクチャ
Functionを第一級市民として扱ふインフラ設計
Function
1つの入力と1つの出力を持ち、狀態を變更する
Serverless Framework
FaaSと周邊serviceをdeployするtool

Why?

サーバーレスアーキテクチャ
インフラ管理costが激減する
FaaS
Applicationとインフラ管理を分離出來る
Serverless Framework
FaaSへのdeployが凄く簡單になる

FaaS (Function as a Service) の基本的な graph

f:id:Kureduki_Maari:20161120141716p:plain