式年遷宮メモ

ES6 以降で書きなおしたい 読みやすさ モジュールごとに package 分けたい 各モジュール (ファイル) が肥大化しすぎて扱いにくい テストのファイル分割したい 関数ごとにファイルわけないとひどい (現状) エラーメッセージの localization 機能追加 正規表現…

DOM オブジェクトを canvas に描画する方法について

方法1: SVG の foreignObject を使って HTML を埋め込む 参考: Drawing DOM objects into a canvas - Web APIs | MDN SVG の <foreignObject> という要素内に描画したい HTML 要素を埋め込み, それを ctx.drawImage() とかで canvas に描画するという流れ. 利点は, 描画する</foreignobject>…

2016年8月19日

諸々 適切. 食事 魚介類!!!!!!!!!1 魚介類に見えた人は手を挙げてください.

2016年8月18日

水分 過剰だった. カプサイシン 過剰だった. 食事 魚類から進化したものみな魚類という思想のもとで, 魚介類です.

2016年8月17日

水分 不足しなかった. 食事 また魚介類じゃなかった. 深夜に食べると翌朝厳しい.

2016年8月16日

起床 5時に起きる必要はない. 水分 不足しがち. 食事 完全に, 魚介類ではなかった.

2016年8月15日

視力 何度か倒れてくる松葉杖状のものを幻視して虚無を避けたりしていた. 食事 ほぼ魚介類です.

任意サイズテトリスを JS / HTML Canvas に移植した

こちらから遊べます → dotris 昔Flash で作ったもの (なんと最初のバージョンは 5 年も前らしい) を JS / HTML Canvas に移植しました. 最新の Firefox か Chrome ならとりあえず動くと思います. 2016年7月31日追記: たぶん flag 変更しなくても大丈夫になり…

HTML canvas のビットマップ操作のメモ

未だに Flash 脳の私は canvas の操作をする時に「BitmapData のあのメソッドと同じことをしたい」と考えるのですが, canvas の API はパッと見では必要最低限以下なんじゃないかというくらいの機能しか提供していないので, どうしたら実現できるのかすぐに…

Grass 生成コードの乱択アルゴリズムによる最適化を試みる回

ラムダ計算から Grass へのコンパイラ作ったったwWWwwwwWWww - Object.create(null) の続きです. 経緯 ラムダ計算から Grass への変換ができたのは良かったものの, 生成コードはそのままでは無駄が多く, 例えば Brainfuck インタプリタの場合, 生成さ…

ラムダ計算から Grass へのコンパイラ作ったったwWWwwwwWWww

github.com いつものように JavaScript で書いたので, npm でインストールできます. npm i -g @susisu/grasspiler 例えば, (* fixed-point operator *) let fix = fun f -> (fun x -> f (fun y -> x x y)) (fun x -> f (fun y -> x x y)) (* infinite loop *…

楽しく学ぶ難解プログラミング言語

connpass.com タイトルの通りの LT をしました. 先日の Grass インタプリタはその伏線だったというわけですね. 当初は真面目路線で作ってたのですが, LT の制限時間 (5分) で簡潔にまとめるのが難しくて, 結局こんな感じになってしまいました. まだまだ修行…

コールバック地獄から async/await に至るまでと, 非同期処理以外への応用

継続渡しスタイル (CPS: Continuation-assing style) 例えば以下は引数として与えられた数に 1 を加えるだけの関数と, それを呼び出すプログラム. function succ(x) { return x + 1; } console.log(succ(2)); // -> 3 CPS では関数がその継続 (callback) を…

チキンティッカを作ったら最高だった

辛辛魚の在庫が去年より二ヶ月ほど早く無くなってしまい, 世界は悲しみに包まれております. www.amazon.co.jp というわけで, これからどう QOL を維持していこうかと考えていたところ, 深夜急にタンドリーチキン (チキンティッカ) を無限に食べたくなったの…

Grass インタプリタを書いた

いつものように JavaScript で書きました. github.com npm があればnpm install -g @susisu/grass-js でインストールできて, grass /path/to/progfile とかで遊べます. Grass とは Grass the grass-planting programming language の通り, 草を生やす言語で…

ボゴソートより効率の悪いアルゴリズムを考える回

Bogosort ボゴソート - Wikipedia 配列の要素をランダムに並び替えて, 運良くソートできていればソート完了というソートアルゴリズム. 配列のサイズが で, 要素がすべて異なるとしたとき, 平均計算時間は . 要素の交換回数の期待値は となる *1. Bozosort Bo…

2016年エイプリルフール反省会

こういうのを作りました. Lazy Jiro - 神域プログラミング言語 毎年思ってるけどこれ別に嘘じゃないし馬鹿なの私だよね— すしす (@susisu2413) March 31, 2016 なんでこうなったのか 当初やろうと思っていたものが, 急がずに時間をかけてやればそこそこ面白…

鳴かぬなら 作ってしまえ メカほととぎす

LT をしました (定期). connpass.com 肝心の成果物は https://github.com/susisu/est にあって, npm install -g @susisu/est でインストールできますので, 使いたい方がいたらどうぞ.

ジェネレータを使ってパーサを綺麗に書けるようにした

ライブラリ側の実装は ES2015 の構文を使わずに ES5 互換のままできることに気がついたので, ちゃっちゃーとやりました. github.com 今までは, var lq = require("loquat"); // 愚直に >>= (bind) と >> (then) を使う // do 構文なんてなかった var parser …

間違えて al とタイプするとアリスが歌うコマンドを作った

私は ls -la のエイリアスとして la を使っているのですが, 万が一 al とミスタイプしても問題ないように, アリスが歌ってくれるだけのコマンドを作りました. github.com インストール Node.js (最新版なら確実) と npm のある環境で npm install -g @susisu…

**いろ****をランダムに出力するだけのコマンドを作った

github.com $ npm install -g https://github.com/susisu/kinmosa-gen.git $ kinmosa きんいろモザイク きんいろモザイクは 900 回に 1 回くらい出ます.

How to 言語実装

この記事は OUCC Advent Calendar 2015 の 13 日目の記事です. 昨日は @yuntan_t 氏による 量子力学 matplotlibで図を描く,保存する,アニメーションさせる でした. さて, 今年 (というか去年の後半から) は何かと言語実装に縁があり, まとめると大体以下の…

Node.js で異なるオブジェクトを親にして Object.create すると速度が死ぬ話

なんですぐ死んでしまうん. 以下の 2 つをご覧ください. 前者 (A) は毎回同じオブジェクトを親にして Object.create() でオブジェクトを作成, 後者 (B) は違うオブジェクトを親にしています. console.time("A"); var parent = {}; var dummy; for (var i = 0…

Node.js (V8) で長い prototype chain を作ったら速度が死ぬ話

Object.create() 大好き人間の私としては, 京都銀行のように長〜〜〜い prototype chain を日常的に作りたくなるわけですが, そんなことをしていたらまた死んでしまいました. 以下は具体的な例で, 浅いケース (shallow) では, ひとつの同じオブジェクトを親…

部室の入り口に張り紙を貼った

この記事は OUCC Advent Calendar 2015 の1日目の記事です. 1日目ということで, 「入り口」に関する出来事についてです. 起 公式ツイッターフォロワー30000人突破を記念して、作中に出てくるアレを作っちゃいました!ぜひ、ご自宅や、学校、職場に貼ってお使…

昼間から自己 (Self) と格闘する人

していたら夜になっていた. Self とは プロトタイプベースのオブジェクト指向の元祖にして JavaScript の先祖のひとつ. Self - Wikipedia インストール 当方 OS X Mavericks (10.9.5) です. Self 言語のサイト http://www.selflanguage.org から OS X 用のデ…

深夜に GNU Smalltalk をインストールする人

タイトルで完結している. GNU Smalltalk Reference や GNU Smalltalk - Smalltalk によると, OS X に (Homebrew で? そうじゃなくても?) インストールする場合, 浮動小数演算周りがバグったりする (たぶんこれ osx - floating point raises divide by zero e…

ここ二週間の進捗

ほとんど進捗がない いちいち数値データを集計して和とか分散とかを計算するコードを書くのが面倒だったので, 適当にコマンド一発で計算してくれるようなのを作ろうとした わざわざ作る必要があるのかという感じがあるので, 誰かいい感じのを知っている方が…

今週末の進捗

17時まで寝た 以上です.

JavaScript で Lazy K インタプリタを実装した

github.com Emscriptenを使って変換したもの? は見つかったのですが, 生の JavaScript で書かれたものが見つからなかったので書きました. たぶん上手く動いてるんじゃないかしら. Lazy K ってなんですか 詳しくは Lazy K - Wikipedia とか The Lazy K Progra…