3D弾幕生成ライブコーディング言語「BarrageLCL」の解説(EP演習発表会補足資料)
2020/09/16対象読者 明大FMSのEP演習という授業で発表した内容の補足資料なので、同大の同級生を対象読者に基本的なところから解説しています。言語実装をしたことある人にとっては知っている話が多いかと思います。 ソースコード https://github.com/kgtkr…
TypeScriptの型で遊ぶ時、再帰制限を無効化する
2020/09/02初めに TypeScript…
ABC167 C - Skill UpをHaskellで解く
2020/05/11問題 https://atcoder.jp/contests/abc167/tasks/abc167_c 解法 解法としては各本を買う/買わないで全探索するとで解けます。 は型としてはになります。各要素のは単位元を、演算をfstは足す、sndはzip…
TypeScriptで型安全なobjectのpick関数を定義する(型パラメーターを単一のリテラル型に制限する方法)
2020/02/24pick…
TypeScriptで安全にランタイム型チェックを行う〜網羅性チェックとnever型〜
2020/02/06以下のコードを見てください。 型、つまりであるを受け取って出力するだけの単純な関数を定義しています。何も問題がないコードです。 もしTS…
RustでWebAssemblyインタプリタ作った話
2019/12/21はじめに RustでWebAssemblyインタプリタを作ったのでその実装の話や、wasmの仕様についての記事です。 を使ったジェネリックプログラミングの話や、最後の方には「自作言語 on 自作wasmインタプリタ on 自作wasm…
Rustのcatch_unwindでスタックトレースを取得する
2019/12/09Rustにはという関数がありpanicをキャッチすることが出来ます。 Rustのパニック機構 - 簡潔なQ しかしここから得られるエラー情報がかなり少ないです。キャッチして得られるResult…
「第31回 学生LT in 東京」に登壇しました〜RustでWebAssemblyのインタプリタを作った話〜
2019/12/08資料 31回だったのに32回と勘違いしててURLが32になっていますが気にしないでください。ライブデモ多いので多分LT資料だけじゃよく分かりません。 https://gitpitch.com/kgtkr/slide-student-lt-32 LT動画 内容 自己紹介 wasm…
WebAssemblyのbr命令について
2019/11/02はじめに WebAssemblyにはという命令があります。 この命令はという形になっており、が示す制御構造に対して何らかの動作をします。 例えばブロックに対して使えばブロックを抜け、ループの中で使えばのような振る舞いをします。 wasmのループについてはκeen…
TypeScriptのunsafeな操作まとめ
2018/06/23初めに TypeScript(以下TS)はJSに静的型システムを取り入れた言語です。 しかしTS…
TypeScriptでオブジェクトのキー集合の値表現に関する考察
2019/08/27…
How to safely use type predicate with TypeScript
2019/07/16TL;DR GitHub safe-type-predicate type predicate and its dangers TypeScript has a feature called type predicate. This is by coding the…
TypeScriptでtype predicateを安全に使う方法
2019/07/16TL;DR GitHub safe-type-predicate type predicateとその問題点 TypeScriptにはtype predicate…
TypeScriptで型のユニットテストをしたい
2018/09/10やり方 準備 色々複雑になっていますが、これは any や union、never…
Suppress Error of type level programming of TypeScript
2019/04/15When type level programming, various errors occur.So we need to suppress it. This article introduces two ways to suppress errors. I checked…
TypeScript、型レベルプログラミングエラー抑制テクニック
2019/04/15TypeScriptの型レベルプログラミングでは様々な型エラーが発生するため、それを抑制しながら作っていかなければいけません。 今回はエラーを回避するテクニックを2つ紹介します。 v3.4.2で動作確認をしています。 型制約エラーを抑制する TS…
Hello GatsbyJS
2019/04/13I made blog using GatsbyJS. I will write an English article. Blog Repository:kgtkr/kgtkr.net
GatsbyJSでブログ始めました
2019/04/13GatsbyJSを使ってブログを作ってみました。 これまで通りTwitterメインですが、長い文章はなるべくQiitaなどではなくこっちに書いていきたいなと思います。はてなブログは記事移行したら閉鎖します。 英語での発信も積極的にしていきたい。 ブログのリポジトリ:kgtkr…
TypeScriptで型レベルハイパー演算子
2019/04/12この記事はTS3.4.3で動作確認をしています。 ハイパー演算子とは のような演算子です(雑) 詳しくはWikipediaを見て下さい。 定義だけ貼っておきます。 型レベルタプル操作 型レベルのタプル操作を行うので以下の記事を読んでおくといいかもしれません。 TypeScript…
TypeScriptでランタイム型チェックを行う「io-ts」の軽い紹介
2019/04/11TypeScriptのランタイム型チェック TypeScript…
React HooksのuseEffect内でsetInterval等を呼び出すとstate等の値が変化しない問題の解決策
2019/03/20初めに 以下のコードはstateの値が変わった時どのような動作をすると思いますか? 本質ではないので等の処理は省略しています。 このコード、思うようには動かずstateの値が変わってもずっと0が出力され続けます。 何故でしょうか?JS…
JOI2018/2019予選 E - イルミネーション (Illumination)
2018/12/09問題 https://joi2019-yo.contest.atcoder.jp/tasks/joi2019_yo_e 解法 まず{(L,R)}の前処理をします。 サイズNのリストを用意して自分が入っている区間L,RのうちR…
WebAssemblyにコンパイルする言語を実装する
2018/12/02はじめに Haskellでwasmにコンパイルする言語を実装してみたので記事にしました。 LLVMなどには依存せず直接wasmを出力します。 また、現段階ではエラー処理などは未完成なので間違ったコードを入力するとコンパイラがクラッシュするか不正なwasm…
WebAssemblyでGCを実装する
2018/12/01初めに この記事でメモリアロケータを実装したので今回はGCを実装してみます。 様々な事情でアロケータのコードが少し変わっているのでソースはここを見て下さい。 大きな変更点はfreeの返り値でfree…
WebAssemblyでメモリアロケータを実装
2018/12/01初めに WebAssemblyには線形メモリがあるだけで動的なメモリ管理機能はありません。 ライブラリを使うことも出来ますが、今回はmallocとfreeを実際に実装してみます。 方針 パフォーマンスは気にしない。とにかく動くものを作る wasmのテキストフォーマットであるwat…
n^0+n^1+n^2が6a+5の倍数でない事の証明
2018/10/13何かツイート流れてきたので 証明 が整数の時、、すなわちがの倍数にならないことを証明する の倍数はを整数とするとと表す事が出来る がの倍数だと仮定すると、 がの倍数の時、を整数とし、とすると、 よって左辺はの倍数でない、右辺はの倍数となり矛盾する よってはの倍数ではない
TypeScript 3.0のExtracting and spreading parameter lists with tuplesで遊ぼう
2018/10/02Extracting and spreading parameter lists with tuples TS3.…
差分リスト式変形
2018/09/19メモ
TypeScriptで高カインド型(Higher kinded types)
2018/09/18はじめに TypeScript(TS)には高カインド型(HKT)がありません。一応提案がありますが… しかし様々な機能を組み合わせればHKTを実現することが出来るのでそれの方法と解説を行います。 この記事ではHKT…
TypeScriptで型のオーバーライドをしたい
2018/09/03spread operator この時の変数twの型を定義したい時どうしますか? 素直に書いてみましょう 面倒ですね。プロパティが増えるともっと大変です。 typelevel-ts typelevel-ts…
競プロ用、Rust標準入力パースマクロ
2018/08/30競プロで標準入力のパースがめんどうだったのでマクロ作りました。 AtCoderのRust(1.15.1)でテスト済みです。 ソースコード https://github.com/kgtkr/procon-lib-rs/blob/master/src/parser.rs…
順序が変化するデータのページング処理について考えてた(個人的メモ)
2018/08/22今回のデータ ページング処理は大変 要素が追加されていくだけのデータであればページング処理は簡単です。追加されたdateなどをキーにしてlimitするだけで出来ます。 しかしupdate…
Twitterでフォローとリストを同期するスクリプト(Python)
2018/08/17CK/CS/TK/TSに認証情報を、LIST_NAMEにリスト名を入れて実行すると同期されます
AGC024-A Fairnessの考察
2018/06/18AGC024-A Fairnessの考察を頑張って書いたので残したいなと。 解説の解き方とは全く違う解き方をしたけど答えは同じになったので数学って凄いなと思いました(こなみ) あとwolframalphaってのが凄い。 複雑な式変形とか漸化式も自動で解いてくれる。競プロでDP…
AtCoderで水色になりました
2018/06/16ABC100で水色になりました。せっかくなので色々振り返ってみようと思います 競プロを始めるまで 主にWebプログラミングをやってました。というか今もやってますし、ずっとこっちがメインです。 Webと競プロはかなり文化が違うので競プロはかなり戸惑いました。 かなり昔にpaiza…
AtCoder に登録したら解くべき精選過去問 10 問を Scala で解いてみた
2018/03/21初めに けんちょんさんの↓の記事の10問をScalaで解いてみました https://qiita.com/drken/items/fd4e5e3630d0f5859067 せっかくScalaで書くので変数の再代入、破壊的変更とfor/while…
TypeScriptでScalaのcase classのcopyのような物を実装する(継承対応)
2018/01/01初めに 継承が必要ない場合は他の方が書いた下記記事を参考にして下さい。 https://qiita.com/nwtgck/items/bbfd6e3ca16857eb9c34 必要な物 ts-copyable:上で紹介されていたnpmパッケージ applyMixins…
EcmaScriptの個人的に気になる新機能提案
2017/12/02tc39のリポジトリを中心に気になる提案をまとめます。 do expressions(stage-1) リポジトリ https://github.com/tc39/proposal-do-expressions 概要 関数型言語のようにifやtry、switch…
immutable.js v4でTypeScriptの型定義が改善された
2017/12/02strictNullChecks時の改善 今まではmapやforEach関数に渡すコールバックの第一引数がでしたが、v4ではになりました。 これによってstrictNullChecks時でもが不要になりました。 例: v3以前もxにundefinedやnull…
ESNextのbind operatorを使って拡張メソッドみたいな事をする
2017/11/18bind operatorとは をと書けるシンタックスシュガーです。 と書くととなる構文もありますが今回は不要なのでスルーします 今までのJavaScript ここでは例として引数の文字列を2倍して返す関数two…
TypeScriptで型定義されていないモジュールを読み込む方法
2017/11/06普通に 普通に読み込むとエラーになります。 app.ts 推奨 ソースフォルダにファイルを作って以下の内容を書きます。 types.d.ts あとは普通に読みこめばOKです。 app.ts ワイルドカード ワイルドカードも使えます。 types.d.ts…
TypeScriptのArray#filterでType Guard(Like Smart Cast)する
2017/09/10普通に書く arr2にはstringしか入ってないはずなのに型は(number|string)[]になってしまいます。 型ガード これでarr2はstring[]になります。 注意 このような事をしてもコンパイルエラーにはなりません。 arr2の実際の型はstring…
JavaScriptのアロー関数(ラムダ式)でオブジェクトを返す
2017/09/06構文エラー 長い こうしよう
Angularで余計なタグを出力せずに再起してMarkdownのASTを表示したい
2017/08/30余計なタグとは 下記のようなテンプレートがあったとします。 reactやvue.jsの場合以下のように出力されます。 しかしAngularの場合は以下のように出力されます。 つまり余計なタグとはなど独自コンポーネントのセレクターの事です。 一般的な場合の回避方法 selector…
AngularでYouTube埋め込みをしようとしたらハマった
2017/04/01解決法 に設定するHTMLはデフォルトでサニタイズされるようになっており、iframeタグが自動的に除去されるのが原因でした。 サニタイズされるのはjavascriptだけだと思っていましたが、iframeも駄目みたいです。 注意 サニタイズすると、iframe…