Object.create(null)

TypeError: Cannot convert object to primitive value

「分割」できる疑似乱数生成器

この記事ははてなエンジニア Advent Calendar 2018 の 6 日目の記事です. こんにちは, id:susisu です. Mackerel のアプリケーションエンジニアをしています. 最近は新しいカスタムダッシュボード機能を開発したりしていました. mackerel.io この記事ではタ…

JavaScript のパーサコンビネータに TypeScript で型を付けた

こんにちは, 口の中パッサパサです. さてパッサパサといえばパーサコンビネータの話をしましょう. 以前作った JavaScript 用パーサコンビネータライブラリ の TypeScript 向けインターフェースをつくりました. github.com こんな感じで使えます. どーしてく…

キーワードの組をハイライトする Atom 拡張を作りました

こんにちは, 自分のことをピカチュウだと思いこんでいる一般人です. 作りました. 標準の bracket-matcher のキーワード版ですね. atom.io こんな感じにカーソル位置のキーワード (struct) と対応するキーワード (end) がハイライトされるです. ハイライト以…

気がつけば Scala を書いていたので読んだものを列挙するよ

私が読んだものを読んだ順に列挙しているだけです. たぶん何の役にも立ちません. Learn You a Haskell for Great Good! Learn You a Haskell for Great Good! Haskell の入門書. いや冗談ではなく. 代数的データ型とかモナドとか, まあ役に立たなかったこと…

JavaScript のオブジェクトのキーや要素の列挙順は保証されているんですか

A. 場合によります オブジェクトのキーまたは要素の列挙といえば次の 2 つくらいでしょう. たぶん. Object.keys, Object.values, Object.entries など Object のメソッド for-in for-of は直接オブジェクトのキーや要素を列挙することはないのでここでは関係…

特に工夫もない紫蘇ジュース

実家にいた頃祖母が作ってくれた紫蘇ジュースが飲みたいと思いつつ就寝, 翌日スーパーに行ったら実家付近で採れた紫蘇が大量に売られており, 運命を感じて即購入. というわけで特に工夫もない紫蘇ジュースを作った話をします. 以下, 紫蘇の鮮やかさをお伝え…

Mackerel で Cookie Clicker を監視してみた

ステマ記事です. みなさん Cookie Clicker を覚えていますか これです. 昔一瞬流行ったなあ, という感想が出てくることを予想してますが (ついこの前言われた), まだまだ続けている人はいて, 私もその一人です. 過去の記事: Mackerel とは はてなが開発して…

近況 2018年春

株式会社はてなに入社しました この文章の信憑性は著しく低いことが知られていますが, 信用していただけますか? というわけで京都に引越したので報告です. Adobe CC を購入した 学割が3月まで使えて1年分までなら購入できるっぽかったので購入しました. 1年…

ソースコードのコメント内でも Markdown のテーブルを編集したいという気持ちだけは誰にも負けません

こんにちは, シーフードです. Atom パッケージ markdown-table-editor の v1.1.0 をリリースしました. atom.io 今回の目玉はテーブルの左側のマージンの文字をカスタマイズできるようになったことです. これで何が嬉しいかというと, 例えばパッケージの設定…

Scala の for ... yield の話

みなさんメリークリスマしておめでとうございます. 2019年もよろしくお願いします. 以下は気まぐれに Scala を書いていたら for ... yield と Haskell の do の微妙な違いでつらみが出てきたときのメモです. Scala 素人もいいとこなのでもっと良い書き方があ…

どこでも Markdown Table Editor

まずは Atom 用のパッケージのアップデートのご報告です. atom.io ファイル内の全ての表をフォーマット, 保存時にフォーマットなどの機能が増えました. こちらの映像は Take 4 です. 閑話休題. 上のパッケージのせいで, Atom 以外のエディタや, たとえばブロ…

ISUCON7 予選通過反省会

ISUCON7 の予選に @amaya382, @spring_raining とチーム名「チーム名を考えるのが苦手すぎる」で参加しました. 私自身は初参加です. 最終スコア 89,047 で学生枠 2 (3) 位通過でした. 私がやったこと ほぼ完全にアプリケーション (Node.js) だけを担当しまし…

差分検出アルゴリズム三種盛り

こんばんは. 気がつけばもうずいぶんと涼しくなってきました. 勢い余って凍ってしまったりせぬよう, くれぐれも普段の言動にはお気をつけください. はじめに さて, 我々人類にはどうしても二つの文字列 (あるいは行ごとに区切られたテキスト) 間の差分を求め…

こんな等幅フォントが欲しい

プログラミング用 0 と O の区別がつきやすいとか 他言語対応 ASCII だけとかだと厳しい ギリシャ文字と種々の記号類は欲しい 日本語があるととても良い wide:narrow が 2:1 Source Han Code JP みたいに 3:2 とかじゃないということ EAW Ambiguous な文字が…

Cookie Clicker 4周年の記録

ちょうど始めてから 4 年だったので Cookie Clicker の話をしようとしたら 今週のお題「私のおじいちゃん、おばあちゃん」 というのが出てきて笑いました. 強いて言えばおばあちゃんの話をします. Cookie Clicker とは 知らない人がいるかもしれないので一応…

最近の markdown-table-editor アップデート情報

最近はベジエ曲線の交点を求めるなどの活動をしていたのですが, それは (画像の用意とかそのあたりで) まとめるのに時間がかかるのでまたの機会にするとして. 最近 Atom パッケージの markdown-table-editor をちょいちょい更新して機能を追加したので, その…

ソースコードをダブルクリックで全選択するやつ

コピペしやすくて便利. 右上に言語名を表示するやつ とくっつけてもいいけど, 多分別々に書いても動くことには動くはず. <script type="text/javascript"> window.addEventListener("load", function onLoad() { window.removeEventListener("load", onLoad); var codes = document.querySel…

ソースコードの右上に言語名を表示するやつ

こういう感じのスタイルシートを当てておいて, pre.code { position: relative; } pre.code[data-lang-label]::before { content: attr(data-lang-label); font-family: 'Helvetica Neue', 'Helvetica', 'Arial', 'Hiragino Kaku Gothic Pro', 'Meiryo', 'MS…

Atom パッケージ開発のすゝめ

Kyoto.js 13 で飛び入り LT チャンスがあったのでやりました. Atom で VJ をするパッケージの発表があったのでそれに乗っかった形です. kyoto.js.org kyotojs.connpass.com これは当日 Atom で Markdown を書いてそのまま発表したものをスライドとして体裁を…

近況

ご飯炊けるまでに最近やってることとか書きます. System Fω の実装 js-sandbox/system-f-omega at master · susisu/js-sandbox · GitHub 前回やった System F の続き. 簡単に説明すると System F に加えて型レベルの関数 (type operator とか type construct…

型無しラムダ計算での不動点オペレータの導出

公式は覚えるものではなく, 必要に応じて導出するものだよ (?) 不動点オペレータ 不動点オペレータ (大抵 fix という名前, コンビネータ計算の文脈では Y とも) は Haskell では以下のように定義される関数である. fix f = f (fix f) つまり, fix f は関数 f…

JavaScript 処理分岐どう書く問題

JavaScript で (バリアント的な) 複数の可能性がある値について処理を分岐するときに, どのように書くのが良いかという話. ここでは具体例として簡単な数式の計算プログラムを考えます. 数式を表すクラスは以下の通り. // literal class Lit { constructor(v…

5分で伝えたかった Curry–Howard 同型対応

伝えたかった LT をしました. connpass.com やたら枚数が多い割に密度が高くなってしまっている言い訳をさせてもらうと, なかなか話がまとまらなくて, 結局直前に急いで作った結果, 時間配分をまったく考えていない感じになってしまいました. 当日 System F …

Atom 1.17 でもタブを消す

開いているファイルの管理は tree-view-panes で行っていて, そのためのタブは必要ない とはいえ Dock のタブまで消えてしまうと移動ができなくて困る というわけで以下のようにしている. .tab-bar { display: none; } atom-dock .tab-bar { display: flex; }

npm script の実行順のメモ

npm@4.5 時点. 適当に書いていると (主に prepublish/prepare/prepublishOnly あたりで) 落とし穴に嵌ることがありそうなので. npm install (引数なし) preinstall install postinstall prepublish prepare prepublish は npm@5 以降では prepublishOnly と…

Unicode の East Asian Width 特性値を取得したりするライブラリを作った

また作った報告になってしまい恐縮ですが, 作りましたにゃん. github.com East Asian Width (EAW) とは 参考: UAX #11: East Asian Width 東アジアの文字幅 - Wikipedia 元は Unicode の文字を旧来の文字セット (Shift-JIS や EUC-JP など) にマップする際に…

Atom 1.17 beta の Dock のメモ

詳しくはこちらのブログ記事を参考にしてください (1.16 のリリース記事ですが, 下の方に 1.17 beta についても書いてあります). blog.atom.io 1.16 以前のイメージ Workspace Left Panel(Tree View) Pane 1 Text Editor 1 Text Editor 2 Pane 2 Settings Te…

4月

これは日記です. エイプリルフール 入社はさておき, 今年も一発ネタを作りました. gh-plankton 経緯はこういう感じです. GitHub のデフォルトのユーザーアイコン, 微生物かなにかに見えることがたまにある— 乳等を主原料とする食品 (@susisu2413) 2017年3月3…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

Atom のカーソル上下移動を改良するパッケージを作った

相変わらず Atom の環境を整備し続けています. というわけでまたパッケージを作りました. atom.io カーソルを上下に動かしたとき, デフォルトではこんな感じに全角文字などが間に入るとカーソルの水平位置がぐちゃぐちゃと動いてしまいます (水平位置を文字…