Tkr Blog

kgtkr
Web Developer.

TypeScriptのunsafeな操作まとめ

2018/06/23

初めに TypeScript(以下TS)はJSに静的型システムを取り入れた言語です。 しかしTS…

TypeScriptでオブジェクトのキー集合の値表現に関する考察

2019/08/27

How to safely use type predicate with TypeScript

2019/07/16

TL;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/16

TL;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/15

When 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/15

TypeScriptの型レベルプログラミングでは様々な型エラーが発生するため、それを抑制しながら作っていかなければいけません。 今回はエラーを回避するテクニックを2つ紹介します。 v3.4.2で動作確認をしています。 型制約エラーを抑制する TS…

Hello GatsbyJS

2019/04/13

I made blog using GatsbyJS. I will write an English article. Blog Repository: kgtkr/kgtkr.net

GatsbyJSでブログ始めました

2019/04/13

GatsbyJSを使ってブログを作ってみました。 これまで通りTwitterメインですが、長い文章はなるべくQiitaなどではなくこっちに書いていきたいなと思います。はてなブログは記事移行したら閉鎖します。 英語での発信も積極的にしていきたい。 ブログのリポジトリ: kgtkr…

TypeScriptで型レベルハイパー演算子

2019/04/12

この記事はTS3.4.3で動作確認をしています。 ハイパー演算子とは のような演算子です(雑) 詳しくは Wikipedia…

TypeScriptでランタイム型チェックを行う「io-ts」の軽い紹介

2019/04/11

TypeScriptのランタイム型チェック 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/02

Extracting 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/03

spread 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/17

CK/CS/TK/TSに認証情報を、LIST_NAMEにリスト名を入れて実行すると同期されます

AGC024-A Fairnessの考察

2018/06/18

AGC024-A Fairness の考察を頑張って書いたので残したいなと。 解説の解き方とは全く違う解き方をしたけど答えは同じになったので数学って凄いなと思いました(こなみ) あと wolframalpha…

AtCoderで水色になりました

2018/06/16

ABC100で水色になりました。せっかくなので色々振り返ってみようと思います 競プロを始めるまで 主に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/02

tc39のリポジトリ を中心に気になる提案をまとめます。 do expressions(stage-1) リポジトリ https://github.com/tc39/proposal-do-expressions 概要 関数型言語のようにifやtry、switch…

immutable.js v4でTypeScriptの型定義が改善された

2017/12/02

strictNullChecks時の改善 今まではmapやforEach関数に渡すコールバックの第一引数が でしたが、v4では になりました。 これによってstrictNullChecks時でも が不要になりました。 例: v3以前もxにundefinedやnull…

ESNextのbind operatorを使って拡張メソッドみたいな事をする

2017/11/18

bind 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…

AngularでYouTube埋め込みをしようとしたらハマった

2017/04/01

解決法 に設定するHTMLはデフォルトでサニタイズされるようになっており、iframeタグが自動的に除去されるのが原因でした。 サニタイズされるのはjavascriptだけだと思っていましたが、iframeも駄目みたいです。 注意 サニタイズすると、iframe…