trifle

技術メモ(最近は hellorusk.net/blog の方が使うことが多いです)

Monadic Memoization in Python

関数の再帰呼び出しにおいて値を保持しておくことで計算が高速化されるメモ化という手法が知られています. 例えば以下のようにして80番目のフィボナッチ数が高速に求まります. d = [0 for i in range(100)] def fib(n): if n <= 1: return n if d[n] != 0: r…

OCaml と TypeScript の比較に見るユーザ定義型

大学の授業の一つで OCaml という言語を今書いていて, ユーザ定義型について整理して学ぶ機会があったので, TypeScript と絡めてメモしてみます. レコード型 レコードは組の各要素に名前が付いたもの. OCaml での定義は type 型名 = {フィールド名: 型; ...}…

A Complete React Redux Tutorial for 2019 を読んで Redux に入門する

これまで名前しか聞いたことがなかった Redux をプライベートで知る必要が出てきたかもしれないので, 入門してみることにしました. ちょうど最近, daveceddia.com という記事が出たようなので, これを手がかりに, 自分用のメモを残してみます. Redux を使う…

その人が GitHub で普段どんな言語を使って開発しているかをすぐ見れるやつ作った

https://github-language-data.now.sh/ ↑これです 例えば自分の今の状況はこうなる. 仕組みといたしましては, GitHub API の GET /users/:username/repos で, 直近の30件のリポジトリ一覧を取得し, それぞれのリポジトリの json の language をみています. O…

簡単な例で考える React Hooks のよさ

最近安定版にも導入された React Hooks が自分の中で面白いので, とても簡単な例で試してみたよという話をします. 例1: フォーム class Home extends React.Component { constructor(props) { super(props); this.state = { value: 'ここにポエムを書いてね'…

Rustで2048をつくる

2048というゲームのブームはとっくに終わっているとは思いますが, 自分は未だに通学中とかライブ開演前とかの空き時間によくやっています. そんな2048をパソコンでもやりたいなと考えたので, つくってみました. Rustのビルドシステム兼パッケージマネージャ…

NFAをDFAに変換して状態数最小化する

大学の試験で「与えられた言語を認識するような状態数最小の有限オートマトンを答える」問題が頻出されているため, 検算用のプログラムを書いてみます. NFA の入力形式 input.txt として以下のように与えます. 2 0 0,0 1,0, 1,2,2, 2,3,3, 3,,,1 一行目は[入…

今TeXを始めるならVSCodeが良いかもしれない, という話と, MacOSで最低限の文書を出せるようにするまで

VSCodeのLaTeXの拡張機能に, 部分的な数式のレンダリングの機能があることを今日知りました. vscodeのtex環境, カーソルを合わせた瞬間数式表示されるの天才か pic.twitter.com/EWtetJRCZN— f_jhr (@f_jhr) 2018年12月22日 どうやらこれは比較的最近追加され…

Rustの配列に関する雑多なメモ

多重配列の初期化 固定長のarrayの場合は[T; N]という形式なので, 例えば2次元配列の場合は, let a: [[i32; 3]; 2] = [[0; 3]; 2]; println!("{:?}", a); // [[0, 0, 0], [0, 0, 0]] let mut b = [[39; 2]; 3]; // 型を省略すると推論される b[1][1] = 8; pr…

Twitter APIに全く頼らずにslack botだけでタイムライン管理をしてみる

※ この記事はISer Advent Calendar 2018の3日目の記事としても書かれています. 最近はTwitterを開くのが面倒でやっていないのですが, 好きな声優 or アーティスト or アニメの最新の情報が手に入らないことに以前より悩まされていました. 昨日デレマスのライ…