bouzuya.hatenablog.com

ぼうずやのにっき

bouzuya/purescript-examples に json-stable-stringify を追加した等

昨日 (2019-02-15) の minoki/purescript-tsd-gen を試す件は未対応。

bouzuya/purescript-examplesjson-stable-stringify を追加した。 JSON.stringify とは異なりプロパティ名を昇順に固定している。また JSON.stringify の第三引数にあたる space をとれる。読みやすい形で出力できる。↓の bouzuya/create-bbouzuya/bs の meta json の出力時にちょうど良いかな……と。

bouzuya/create-b をすこしだけ進めた。 simple-json は Foreign -> Record を手軽にできるので options で Foreign をつくってそれを Record にしてみた。単純に Object StringunsafeToForeign でも良さそうだけど……。

育児の関連で病院などにかかるたび世間の子と比べての成長の遅さ・離乳食の種類の少なさ・量の少なさを感じてしまう。

bouzuya/create-purescript-npm-bin 0.2.1 をつくった等

朝から書類の受領・提出 (……と言っても確認してハンコをつくだけ) をするために会社へ。

minoki/purescript-tsd-gen を試そうとするもエラーになるなど手こずってまだ試せていない。エラーは stack のバージョンが古いために起きていた。明日には試せるだろう。

bouzuya/create-purescript-npm-binbouzuya/create-b で試した。見つかった軽微な問題を修正して 0.2.1 にした。 create-b についてはそのうち書く。今日はとりあえずプロジェクトを生成しただけだ。一行も書いていない。これは bouzuya/bbn および bouzuya/black-sam を統合した npm initializer になる予定。

今日はいまひとつ気持ちが落ち着かなくてはかどらなかった。やるべきことがあふれている。あふれているのだけどどうもそちらに向いていかない。

育児。シャワーをはじめて使ったのだけどひどく怖がった。流している間ずっと震えていたし風呂から出たあともしばらく泣いていた。そんなに……。明日は保育所の面接だ。試験のようなものではなく説明会のようなものだと思っている。

bouzuya/create-purescript-npm-bin 0.2.0 をつくった

bouzuya/create-purescript-npm-bin 0.2.0 をつくった。

create-purescript-npm-bin は npm initializer 。 PureScript での npx 向けの npm パッケージのひながたを生成できる。

npm initializer なので↓のように使う。

npm init @bouzuya/purescript-npm-bin

ぼくの用途に特化しているので事前に hub createnpm init --yesauthor が設定できないとダメなどの制約がある。そも npx 向けの npm パッケージを PureScript を使って……という状況自体があまり一般的とは思えないのだけど……。

生成されるプロジェクトは PureScript と spago 。最低限の npm run-scripts を入れている。

はじめ Thimoteus/purescript-snail 5.0.0 を試したのだけど非直感的な挙動が多いのとバグっぽいところがあってつくりなおした。

せっかくなので非直感的な挙動の例を挙げる。たとえば↓のように書いたとき。

cp (file "/foo/file") (folder "/bar") Nothing

第三引数はファイル名。おそらく cp /foo/file /bar な動きを期待すると思うのだけど。実際には cp /foo/file /bar/foo/file

バグっぽいのが↓。

(folder "foo") </> (file "file")

見た目からしfoo/file になりそうだけど。実際は foofile 。区切り文字が挿入されない。バグじゃないの……これ。拡張子の結合に使うのかな……。なら (<.>) とかで良くないか……。 Folder -> File -> File だしな……。

(</>) なら↓もある。

(folder "foo") </> (folder "bar") </> (file "file")

↑で (</>) の型を書いたので分かる通りこれはコンパイルエラー。 Folder を 2 つは取れない。でも普通にありそう……このパスの整形。

あとは (>>) の見た目がモヤモヤしたり……。

諦めた。

代わりに slamdata/purescript-pathy でパスを扱って purescript-node/purescript-node-fs-aff などでファイルを扱った。

pathy は型がいやに厳格だし sandbox の対応が面倒。あとは purescript/package-sets に含まれていない。必要以上に遠回りした。

明日以降は create-purescript-npm-bin を使って CLI を書いていく。週末の w010 もこれを使うつもりで居る。

bouzuya/bs-code 2.1.1 をつくった

bouzuya/bs-code の 2.1.1 (vscode:bouzuya.bs-code) をつくった。それに関連して↓のパッケージを更新した。

bs-code は VS Code: Visual Studio Code の拡張のひとつ。ぼくが個人的なメモのために使っている。

bs-code 2.1.1 では rfc: と vscode: 機能を追加した。

これはたとえば [rfc:8259][] に対して [rfc:8259]: https://tools.ietf.org/html/rfc8259 を生成してくれる。あるいは [vscode:bouzuya.bs-code][] に対して [vscode:bouzuya.bs-code]: https://marketplace.visualstudio.com/items?itemName=bouzuya.bs-code を生成してくれる。

更新の理由は GitHub の security alerts 。 lodash と何だったかの関連で警告が来ていた。 dependencies にはないのだけど devDependencies に babel や cpx などのツールがあるとそれが依存しているために警告を受ける。迷惑だ。

ちなみに bouzuya/bs は PureScript で書いた npm パッケージになっている (2018-06-04) 。 bouzuya/bs-code は TypeScript なので *.d.ts が提供されていなくて困った。 PureScript から TypeScript の *.d.ts を生成するようにしたほうが良いかもしれない。


ゴミ箱を買った。 30l の容量のペダル式の。また使ってみて感想を書く。

bouzuya/purescript-cat 1.0.0 をつくった

bouzuya/purescript-cat 1.0.0 をつくった。 mockmock.dev #203 における w010 の成果物。これまでのルール・活動は bouzuya/w010 を参照。

cat は cat コマンド。指定したファイルの内容を表示する。オプションは本家のものより少ない。

0.1.0 から 1.0.0 では↓の変更を加えた。

  • --number-nonblank オプションの追加
  • --squeeze-blank オプションの追加

今回は Web lumihq/purescript-react-basic から離れて CLI だ。

プログラミング言語は PureScript 。パッケージマネージャーに spago と npm 。 purescript-node/purescript-node-fs-aff / purescript-node/purescript-node-process を使っている。

すべてをバッファしており空間効率が悪いもののそこはあまり気にしていない。本来は行ごとに出力するのが正解だろうと思う。

コマンドラインオプションの解釈は雑に fold している。引数を取らないオプションならこれでも良さそう。

気にしているのは次回以降の構成。ひとまず今回の形で bouzuya/create-purescript-react-basic と同様につくってみようと思っている。 npm initializer もまた CLI なので……。

『インシテミル』を読んだ

米澤穂信さんの『インシテミル』を読んだ。 2019-01-09 の『ボトルネック』以来。前にも読んだことがあるはずだけど内容はすっかり忘れていた……。設定を登場人物たちが批判するくだりでなごむ。


いろいろ考えごとをしているうちに時間が……。探索と活用 (2019-02-09) じゃないけど考える時間と行動する時間のバランスは調整しないとな……。

2019-W06 ふりかえり

2019-W06 をふりかえる。

2019-W06 の目標 とその記事

目標。

  • [x] 髪を切る
  • [x] CoffeeScript & JavaScript リポジトリの廃止を進める
  • [x] bouzuya/purescript-react-basic-calendar-heat-map の 1.0.0 をつくる
  • [x] w010 v3 およびアプリの方針を考える
  • [ ] bouzuya/yzrh の 0.1.0 をつくる

記事。

目標。おおむねできた。リポジトリの廃止は思ったほど進まなかった。残り 10 。

つくったもの

2019-02-04/2019-02-10

node-hatena-blog-api 。中途半端な仕上がり。 bouzuya/node-hatena-fotolife-api というほとんど同じつくりの npm パッケージがあるのでどうしようか悩んでいる。さらにそれぞれの CLI もあり迷っている。

purescript-react-basic-calendar-heat-map の関連で purescript-bouzuya-datetime や purescript-datetime のバグを直している。

purescript-examples に UNIX time を DateTime へ変換する例を追加した。

今日は mockmock.dev #203 w010 v3 で purescript-cat 0.1.0 をつくった (Slack のスレッド) 。 Web アプリケーションのクライアントサイドから CLI に環境を移している。この環境で何回かやっていきたい。

よんだもの

昨日ピープルウエアを読んだのだけど書いていなかった。次は『インシテミル』その次が『入門監視』そして 2018-12-05 の『みんなのデータ構造』かな。

みたもの

週 2 本におさまっている。

その他

ゲーム。 2018-11-24 からの BLUE REVOLVER 。停滞中。 2019-01-03 からの大乱闘スマッシュブラザーズ SPECIAL 。クリアゲッターのコンプリートを狙っている。スピリッツボードをコンプリート。大乱闘・勝ち上がり乱闘・オンラインを進めている。

体調。毎日のストレッチを継続できている。 2019-02 に入って決まった時間に起きることができている。続けていく。

育児。先週からかもしれないが「んまんま」と言うようになった。

今週はリポジトリ削減のための作業で XML などへ脱線している。動けば OK で妥協していくほうが良さそう。 PureScript は CLI に方向を変えている。 Google Tasks API のアレなど身の回りの実用的なところを整えたら Web に戻りたい。 w010 v3 をつくった。それに関連して目標などを 5 つに絞る方法を試している。

2019-W07 の目標