読者です 読者をやめる 読者になる 読者になる

15 min/d

ぼうずやのにっき

『shinosaka.hs #4』に参加した

関数型プログラミング勉強会 shinosaka.hs #4』に参加した。

「ラムダ計算と型システムについて」といういかにもデカすぎるテーマだった。ラムダ計算の基本っぽいのを聞いたり、ワイワイ言いながら問題を解いてみたりした。

主催者が大阪から離れてしまうようなので、当分なさそう。うーん。次に開催するころにはいい感じに Haskell を使えているといいな。

雑記

bouzuya/mr-jums をすこしだけ直す。 https 化にともなって壊れていたのを修正したり、 detail の取得を待って表示が遅れるのを title だけ先に表示するよう修正するなど。

斑鳩は今日を含めて 3 日もできていない。

なんだか調子が悪い。

S3 + CloudFront + Certificate Manager

bouzuya/mr-jums の asset (*.js / *.css / *.png) を Heroku ではなく AWS から返すようにした。具体的には AWS の次のサービスの組み合わせだ。

なぜ、この組み合わせなのか。

まず S3 はファイルの保存場所だ。滅多なことでは消失しない。価格も許容範囲だ。直接 Web サイトとしてホストすることもできる。独自ドメインも設定できる。

ただ S3 における問題はいくつかあって、その例が次のものだ。

https のために証明書の取得をする。 そこで使うのが Certificate Manager だ。CloudFront や ELB のための証明書の取得・管理を無料でできる。これは良い。

しかし Certificate Manager を直接 Amazon S3 に適用することはできない。そこで CloudFront を経由する。

CloudFront は CDN だ。エッジロケーションにおけるキャッシュはもちろん。いくつかの機能を提供している。圧縮や、独自ドメインでのアクセス、Certificate Manager への対応もそうだ。

最後は Route 53 だ。 Route 53 は DNS だ。 CloudFront や S3 に独自ドメインを設定する場合に A (ALIAS) レコードを使うことができる。

bouzuya.net には次のように適用している。

blog.bouzuya.net には次のように適用している。

blog.bouzuya.net の https 対応はまだだが、近いうちに実施する。

今回の記事には書かないが、キャッシュは事故のもとなのでできるなら避けたいという考え方はあると思う。そこで rev-hash を付与する対応も mr-jums に入れている。また近いうちに書く。

はじめての DefinitelyTyped への Pull Request が Merge された

はじめて DefinitelyTyped/DefinitelyTyped に Pull Request して Merge された (DefinitelyTyped/DefinitelyTyped#15244) 。これにより @types/htmlescape が追加された。

htmlescape は HTML に JavaScript を埋め込むことを考慮した escape をするものだ。browserify をはじめ、多くの npm package で使われている。

使用例を挙げよう。

'<script>window.__STATE__ = ' + JSON.stringify(initialState) + '</script>';

いかにも書きたくなりそうだが、このコードには脆弱性がある。initialState'</script>' のような文字列が含まれていると壊れる。そこで htmlescape を使う。

import * as htmlescape from 'htmlescape';
'<script>window.__STATE__ = ' + htmlescape(initialState) + '</script>';

htmlescape< などを escape するので、問題ない。ちなみに、もちろんだが、上記の例は TypeScript のつもりで書いている。 npm install @types/htmlescape で使える。

さっそく [bouzuya/mr-jums][] にも適用した。良い。

DefinitelyTyped への Pull Request は規則に従うのが面倒なので避けていたが、 Lint や generator も用意されているので、意外と簡単だ。小さいものについては今後は積極的に投げていこうと思う。

ボードゲーム同好会 #9 に参加した

ボードゲーム同好会 #9 に参加した。

遊んだのは次のもの。

隣ではブロックスカルカソンヌも遊ばれていたけど、ぼくは上記の 3 つ。

パンデミックは惜しくも敗北。うまくやれば勝てたのにな……。

ダンジョンオブマンダム。チキンレース。バカっぽいが良い。明らかに無謀な形でダンジョンに挑ませる(される)感じがたまらない。

ナショナルエコノミー。人件費。ずっと人件費のことを考えている。もうちょっと安くてもいいのにと思ったが、 blog を読んだ感じ、あのバランスで意図通りっぽい。

2017-W11 ふりかえり

2017-W11 をふりかえる。

2017-03 の目標

  • [ ]: 『型システム入門』を読む
  • [x]: 斑鳩を続ける
  • [x]: bath 2.0.0 をつくる
  • [ ]: PureScript でなにかつくる

2017-W09 の目標

  • [x]: 毎日、週の目標を確認する
  • [ ]: mr-jums に bath 2.x を適用する
  • [ ]: 斑鳩の動画を投稿する

確認はしていても届かず……。 mr-jums は asset を CDN に切り出した。斑鳩は動画のための HDD を調達した。

今週のふりかえり

つくったもの

2017-03-12/2017-03-19

mr-jums は Heroku で Docker を動かすのを試したり、 Nav や List の挙動を大きく変えている。また、まだ結果を書いていないのだけど、 asset の Amazon S3 + CloudFront + Certificate Manager 化を試している。

dts-gen は軽い気持ちで「 [DefinitelyTyped/DefinitelyTyped][] にはじめて PR した」を書こうとためしてみたら、 TypeScript で Error を拡張すると e instanceof Error などいろいろ動かないという仕様 (既知の問題) を踏んだ。 Microsoft/TypeScript#14702 やそのコメントにある FAQ · Microsoft/TypeScript Wiki に答えがある。

DefinitelyTyped に PR した件も書いていないので、これもまた書く。

その他

斑鳩。最高記録は 6 ミス。 2017-03-14 に過去の記録をまとめた。調子にのってコンティニューオフで挑んだが、ダメだった。とは言え、 C5 の第二形態までノーミスなので、まあ良い結果だった。それ以降は C5 の練習を繰り返している。 C5 のミスがなかなか減らない。 2 〜 5 ミスでほとんどは 3 か 4 。せめて 2 ミスで抑えたいが、それでもまだ 20% 〜 25% くらいな気がする。

『神戸 Rust の会 #1 』で Rust を触った。まだらしさを感じられるところまで試していない。

食洗機。まだ 1 日だけど……。洗濯機が 2 台ある気持ちだ。

2017-W11 の目標

  • [ ] DefinitelyTyped に PR したことを書く
  • [ ] mr-jums で asset を切り出したことを書く
  • [ ] mr-jums に bath 2.x を適用する
  • [ ] 斑鳩の動画を投稿する

食洗機を買った

先日、食器洗い乾燥機 (以下、食洗機) を買った。今日はその工事日だった。

パナソニックのプチ食洗 NP-TCM4 。工事費込みで 60,000 円。分岐水栓がなかったので、それも付けた。

NP-TCM4 は NP-TCR4 の機能削減版だ。NP-TCR4 を買っても長く使えば元は取れるかもしれないが、もしかするとすぐに使うのをやめてしまうかもしれないので、 NP-TCM4 にした。

ねらいは、時間の削減だ。水光熱費の削減ではない。食後のひとときをゆったり過ごせると理想的だ。

まだほとんど使っていないので、あまり詳しいことは書けない。

試し洗いをしたところ、 2 時間ちかくかかった。ただ朝・夜で回して放置で良さそう。

不安な点は容量の少なさだ。時間がかかるのもあって、一度に入らないと困りそうだ。まあ、もともと鍋などは洗えないので、量を減らせるだけでも良しとすべきかもしれない。どこか本末転倒だが、洗わないといけない食器を減らすのも良いかもしれない。また必要なら食洗機に適した食器へ変えるのも良いかもしれない。


今日、いや、昨日から調子が悪い。寒気がする。通院・上記の工事のあとはずっと寝ていた。