MarkDownKit 的な物が欲しかった OF THE DEAD
前々から書きたかった MarkDownKit 的な md ⇔ AST(JSON) ⇔ 他のフォーマット
変換ツールを書き始めました(本当はお正月中に仕上げる予定でしたが、風邪で6日ほど倒れてました)
作業から20時間ほどで、やっとそれっぽいJSONを生成するようになってきた感じです。
MarkDown は使う側から見れば、これ以上ないぐらいに単純なのですが、熱と鼻水に侵されたダメダメ脳でパーサーをサクッと実装できるほど単純ではありませんでした。
(ა✘﹏✘)ა なんかね… なかなか綺麗に書けないのよ…
MarkDown parser の実装そのものは車輪の再開発の類なのですが、脳をストレッチするためのプログラミングやリハビリのテーマとして見ると、ちょうどいい規模感がありますね。
Task.js@1.1.0 released
- TaskMap から呼ばれる関数の this を map に変更しました
- TaskMap(taskName, flow, map, callback, arg) の arg を 削除 しました
- arg を使用するとコンソールにエラーを出力します
- map に必要なデータを関連付け、this 経由で参照してください
var map = { data: [111, 222], a: function(task) { console.log(this.data[0]); task.pass(); }, // 111 b: function(task) { console.log(this.data[0]); task.pass(); }, // 222 }; TaskMap("example", "a > b", map);
哲学と共にあらんことを(君は九龍城を見ることになるだろう)
あー、このツールも、アレもこれもと取り込みすぎていつの間にか九龍城になってきてるのか、ワンストップを目指すにはそれが近道なんだけど、それじゃダメなんだよ。身が持たない。
— コラーゲンたっぷりさん (@uupaa) 2015, 12月 22
機能単体で成立するようにミニマムに標準的に設計して、色々な都合は別立てで特殊化したり皮でくるんだりしないとダメなんだよ。そこの設計思想を間違うとゴールには辿りつけないんだよ。
“設計に哲学が必要” と言われている部分はつまり↑の辺りの事だよ
— コラーゲンたっぷりさん (@uupaa) 2015, 12月 22
モジュール化できない物は、
十分にテストもできないし、説明もうまくできないのが通例なので、
疎結合についてもう一回考えなおす良い機会ですね
— コラーゲンたっぷりさん (@uupaa) 2015, 12月 22
KISSの法則++
課題を1つ解決するためにそれ以上の複雑性を持ち込むのが素人の筋悪。
複数の課題を同時に解決するのがプロのアイデア。
時間と共にドロドロの魔女鍋のようなコードにしてしまうのが素人の限界。
時間と共にシンプルで明確なコードになり、後の事まで考えた設計/テストを残すのがプロの精錬。
— コラーゲンたっぷりさん (@uupaa) December 6, 2015
アイデアとは, 解像度を高める, ナイーブ性
“コードが仕様書。我が生涯に悔いなし”は、エンジニアの辞世の句。
創業者が急いで書いたコードは大抵が糞コード。創業者より優秀なエンジニアが入社したら全て書き直してもらうのがベスト。聖域無きリファクタリング
— コラーゲンたっぷりさん (@uupaa) December 6, 2015
フェーズとフォーカス, 事業の継続性, 机の奥のカビパン(リスクを取らない事がリスク, 腐ったミカン)
コードには寿命がありその価値は時間と共に失われる。メタ情報(設計,テスト)があればコードがダメになっても書き直せる。引き継ぎ可能なメタ情報には資産価値がある。
メタ情報のないコードは糞コードに分類される。
コードを利用する事で生まれる価値と、コード自体の価値を混同してはいけない
— コラーゲンたっぷりさん (@uupaa) December 6, 2015
コードの資産的価値, 普遍的な設計の価値, フェニックス性
Update Bit.js, ExpGolomb.js and HexDump.js
Bit.js, ExpGolomb.js, HexDump.js を更新しました。
- Bit.split1 〜 4 を Bit.split8 〜 32 にリネームし、byte 数ではなく bit 数で幅を指定するように統一しました
- BitView の再設計を行い、BitView#u1 〜 u8, u16, u24, u32 を追加しました
- BitView#ug と sg を追加しました。Exponential-Golomb coding で符号化された bit を読み進めることができます
- ExpGolomb.js で negative value (負の値)をサポートしました
- HexDump でスタイルの重ね掛けが可能になりました
- options.rule[tag].bold:Boolean = false を追加しました。"font-weight:bold" を指定する代わりに bold: true が利用できます(太文字になります)