bouzuya.hatenablog.com

ぼうずやのにっき

bouzuya/purescript-bouzuya-http-client をつくっている

2018-W33 の目標 の『PureScript の HTTP リクエストライブラリのパッケージ化』に取り組んでいる。 bouzuya/purescript-bouzuya-http-client をつくっている。たぶん動く。機能が足りない気はするけど、ここ最近のぼくのプロジェクトの範囲だとこれで良さそう。

明日には v0.1.0 にする。


トリック劇場版』を観た。 Prime Video に来てたので、懐かしさから。こんな感じだった。

2018-W32 ふりかえり

2018-W32 をふりかえる。

2018-W32 の目標 とその記事

目標。

  • ☑ bouzuya/tamaru v1.0.0 のことを書く
  • ☑ bouzuya/cltw v1.0.0 のことを書く
  • ☑ bouzuya/shiba をつくる

記事。

目標。とりあえず OK 。 cltw のことは前に書いていた。 shiba はいま試したら壊れてるっぽい。来週で直す。

つくったもの

2018-08-06/2018-08-12

shiba の作成と、過去につくったものの psc-package 対応とパッケージセットへの追加。自分の道具箱を整えよう。

spacchetti に Pull Request を OK として見るなら、毎日コミットできている。コミット数 > ツイート数はダメっぽい。

よんだもの

(なし)

みたもの

(なし)

2018-05 から週 2 本の制限がある。今週は OK 。

その他

手首の痛みが治らない。病院に行ったらおやすみで、来週は盆だろうな……。

Oxygen Not Included を遊んでいる。 87 時間 7 回目 112 サイクル。今回はまだ伸びそうだ。

2018-W33 の目標

  • 髪を切る
  • bouzuya/shiba v0.2.0 をつくる
  • PureScript の HTTP リクエストライブラリのパッケージ化
  • RALLY の QR コードリストをつくる

Oxygen Not Included 7 回目の進捗

Oxygen Not Included の進捗。

  • 前回の 6 回目は 2018-08-04
  • 7 回目 (途中)
  • 100 サイクル
  • 生存者 8 人
  • 死者 1 人 (#2)
    • 初の墓
  • 食料が 100,000 kcal を超えた
    • 5 人でやっていて↑になったので、人数を増やした
    • ミールライスが主 (量的には多い)
    • 補助のキノコとブリッスルブロッサムで足りていそう
    • 料理で一気にカロリーが増えている
  • 間欠泉を 4 つ発見
  • 初アトモスーツ
    • 必須
    • 精錬金属が必要
  • Morale (士気)
    • 低いとストレスに悪影響が出る
    • 各種ルームボーナスを意識しないと厳しい
    • 娯楽室で雑談すると良くなる

PureScript ではどのパッケージが人気なのだろう

PureScript ではどのパッケージが人気なのだろう。調べてみたくなった。

ここでは多くのパッケージから依存されているものを「人気パッケージ」と考えることにし、現時点で最新のパッケージセットである purescript/package-sets の psc-0.12.0-20180803 を対象に調べた。

調べ方は素朴に jq で。 justinwoo/spacchetti が jq で reverse dependencies をとっていたので、それを参考にした。

https://github.com/justinwoo/spacchetti/blob/d307242e7cb9eb7dc1569ed900f4606d59a525b8/scripts/verify.pl#L50

my @reverseDeps = `cat packages.json | jq 'to_entries[] | select(.value.dependencies[] | contains("$name")) | .key'`;

参考にしたけど、相当改変した。あと contains("$name") だと部分一致になるのはバグっぽかったので、修正する Pull Request を投げた (justinwoo/spacchetti#15) 。

で、↓が調べるためのスクリプト。とりあえず上限 10 (| limit(10; .[])) にしている。

git clone https://github.com/purescript/package-sets
cd package-sets
git checkout psc-0.12.0-20180803
cat packages.json | jq '
  [
    to_entries as $entries
    | $entries
    | .[]
    | .["key"] as $name
    | { "name": $name
      , "count": (
          [ $entries
            | .[]
            | select(.["value"] | .["dependencies"] | .[] | . == $name)
            | .key
          ]
          | length
        )
      }
  ]
  | sort_by(.["count"])
  | reverse
  | limit(10; .[])
  '

結果 (TOP 10) は↓のとおり。

{
  "name": "prelude",
  "count": 88
}
{
  "name": "maybe",
  "count": 54
}
{
  "name": "effect",
  "count": 37
}
{
  "name": "foldable-traversable",
  "count": 35
}
{
  "name": "either",
  "count": 35
}
{
  "name": "tuples",
  "count": 31
}
{
  "name": "newtype",
  "count": 29
}
{
  "name": "control",
  "count": 27
}
{
  "name": "lists",
  "count": 23
}
{
  "name": "strings",
  "count": 21
}

当然のように prelude が一位。ただ全部で 160 パッケージあるのに、依存していないものもあるのは気になる。使っていないのか、それとも dependencies に書かなくても動くのか。とりあえず上位は本当によく見るパッケージなので、特に思うところはない。

2018 につくった PureScript のリポジトリを挙げてみた

目標に従って bouzuya/cltw 1.0.0 のことを書こうと思ったのだけど、 2018-07-19 にすでに書いてあった。

予定が狂ったので、 2018 に入ってつくった PureScript リポジトリを挙げてみた。

作成順ではなく、記事順にした。なので、 tamaru より後につくっているはずの cltw や bouzuya-datetime が上に来ている。

思ったほど、つくっていない。

user:bouzuya で GitHub を検索したところ、 language は↓のようになっている。

208 CoffeeScript
88 JavaScript
67 TypeScript
24 Clojure
12 PureScript
10 Ruby
7 Haskell
6 Java
5 CSS
5 Vim script

数が多ければ良いってものではないけど (CoffeeScriptJavaScript のほとんどは Hubot Script のはず) 、なんとなく不満だ。 TypeScript の 67 を目指していこう。あと 55 リポジトリ……数字を出すと厳しく感じるので、意識せずにやっていこう。

bouzuya/shiba 0.1.0 をつくった

bouzuya/shiba 0.1.0 をつくった。

shiba は今週コミットのあったリポジトリとそれに今週つけたタグを出力するスクリプト

たとえば 2018-W31 ふりかえり にある、 ↓みたいのを出力する。

2018-07-30/2018-08-05

- [bouzuya/package-sets][] ... bouzuya-20180803
- [bouzuya/purescript-bouzuya-datetime][] ... 0.1.0
- [bouzuya/shiba][] ... (none)

Node.js で動く。 PureScript 0.12 から JavaScript に変換する。 psc-package を使っている。 GitHub API を axios 使って呼び出している。ページングや認証などは無視している。件数的に十分なはず。

こういう curljq でできそうなものは、もっとさっと実装できるようになりたいところ。