Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

2020-01-01から1年間の記事一覧

TypeScriptのExcludeはなぜT extends K ? never : Tで実装できるのか?

直感に反しているExclude型についてconditional typeの話をしつつ解説します。 Exclude型とは? Union型から特定の要素を取り除く型です。ある型から特定のプロパティを取り除きたいときに使えます。 interface Person { name: string; age: number; country…

JavaScriptでPriorityQueue

優先度付きキューを実装する必要に駆られたので書きました。 実装 TypeScript class PriorityQueue<T> { private container: T[] = []; private size = 0; private comp: (a: T, b: T) => boolean; constructor(comp = (a: T, b: T) => a < b) { this.comp = co</t>…

サブディレクトリでNext.jsのアプリをデプロイしたい!!

結構こういう要求はあるとおもいます。 解決する課題 /staticへのリンクが途切れる <Link>で遷移するとbasepathが変わる つまり、サブディレクトリ以下でNext.jsを使ったSPAをしたい!!という人向けの記事です。 /staticへのリンクをサブディレクトリ以下になるよ</link>…

Codeforcesで精進するときに便利なツールの紹介

github.com 今回はこちらのツールを紹介します(なぜか日本語記事でCodeforces向けのツール紹介がなかったので) ツール概要 このツールは以下のような便利機能を提供しています。 テストケースのダウンロード・ディレクトリセットアップ テンプレートファイル…

denite.nvimからfzf.vimに移行してみた

tl;dr 操作性が良い :Agコマンドが強すぎる めっちゃカッコイイ!! fzf.vimとは? fzf.vimとはfzfを使ってファイルオープンやバッファ切り替えを行うツールです。denite.nvimと役割はかなり近いです。 fzf.vimの使い方 requirement fzf本体を別途インストー…

NerdFontがうまく効かないときの対処法

半年くらい悩んでいた問題が解消できたのでまとめです 環境はUbuntu 19.10を想定しています。 1. そもそもフォント選択できていますか? そもそもターミナルの設定でフォントをきちんと設定できていない可能性があります。正しくインストールして、ちゃんと…

tmuxのプラグイン「tmux-respawn-all-panes」を公開しました

卒論ちょっと進んだマン。ドラフトの締切まであと2日…つらい… 昨日書いたこちらの記事の内容をプラグイン化してみました。 tmuxのすべてのpaneでzshrcの再読み込みをする - Panda Noir GitHub - pandanoir/tmux-respawn-all-panes: respawn all panes with o…

tmuxのすべてのpaneでzshrcの再読み込みをする

卒論が全然終わらないしストレスがすごいです…はぁ… とりあえず息抜きにこないだ作ったtmuxの設定を上げておきます。 モチベーション zshrcを書き直したあとに、一括ですべてのpaneに変更を適用したいからです。いちいち全てのpaneに移動してsource ~/.confi…

Reactのリハビリがてらアプリ作った記録

卒業研究とか部活に追われてあまりReactとか触れていなかったのでリハビリのつもりでやった。1日でガーッと書いたときの記録。コケたところとかも(どうせ後でまた同じところでコケるので)記録しておく。 どういうアプリ? graphemesplitという、Unicodeで1文…

まじかる☆ベーカリーのパンはどれほどの確率で焼けるのか?

www.youtube.com こちらは僕が好きでよく見ている動画です。まじかる☆ベーカリーというボードゲームで遊ぶ動画です。 このゲームは「パン」を焼き上げて得点をもらうゲームとなっており、パンにはそれぞれ焼き上げるための条件が書かれています。たとえばコ…