Panda Noir

JavaScript の限界を究めるブログです。

アクセスするたびにランダムで手牌を表示してくれるサイト作った

10分クオリティですがとりあえずできました。 実際に麻雀をしたときに実現可能な配列のみ表示するので、白14枚のようなありえない手牌は出ません。 まあぶっちゃけると生存報告記事です。

Laravel5.4 でGraphQL式のAPIを実装してみた

一応アクセスしたら結果が返ってくるようにはなりました。なんで動くのかはLaravel初心者の僕には理解できませんでした。

操車場アルゴリズム解説

(本記事はリライト記事です。元の記事は削除しました) 逆ポーランド記法は数式からカッコが消せるという魔法のような記法です。今回は中置記法の数式を逆ポーランド記法にする、操車場アルゴリズムについて解説します。 (逆ポーランド記法は「後置記法」とも…

Node.jsの対話モードが書いてない処理を挟んでくる

といってもふつうにしている分には困ることがあまりないであろう処理なので、気にしなくてもいい気はします。

クラスにProxyを設定したい

ES2015でClassとProxyが追加されました。この二つをうまく組み合わせると強力なツールになりそうですよね。しかし、Proxyを継承するといったことができないので、ややトリッキーなやり方をしなければなりません。

麻雀シミュレーションライブラリを作った

のに記事にするのを忘れていました。 github.com

即席Immutableライブラリを作ってみた

たった17行という超即席ライブラリです。なぜ作ったかというと、この記事のいうImmutableのメリットをJavaScriptでも授かりたいと思ったためです。たった17行でもできてしまってビックリしました。 nekogata.hatenablog.com

Getterのパフォーマンスについて調査してみた

ES5で追加された機能、Getterと生プロパティのパフォーマンスの差について知りたくなったので検証してみました。超今更って感じですがね。

UnitaryJS v0.1.0公開しました

最初のマイナーアップデートです。Ellipse(楕円)、Curve(曲線)クラスを追加した他、様々な修正が行われています。 変更点 スタイルがくずれないように.setStyle()を呼ぶよう変更 lineDashやlineCap、lineDashOffset、lineJoin、lineWidthをサポート .push()…

Atomという神エディタ

Sublime Text 3?そんなやつもいたなぁ(遠い目) Windowsユーザになって早1年。Vimのない環境なのでエディタを一から選びなおすことになり、今日までSublime Text 3を使ってきました。しかし、Atomに触れてみたらすごすぎて一気に引き込まれました。

飯テロ用サイトを作った

飯テロを唐突にしたくなるときありますよね?でも、高クオリティの画像を探すのは意外と骨が折れる作業です。そこで、高品質な飯テロ画像のツイートを一覧表示するサイトを作りました。

ConoHaのVPSに独自ドメインを設定する方法

いろいろ試行錯誤したのでまとめます。 (DNS関連は不勉強なので、詳しい原理の説明はできません)

ドメインを取得しました

バイトを始めたのでお金を気兼ねなく使えるようになりました。そこで早速ドメイン取りました。 これでついにホームページが完成です!独自ドメイン、レンタルサーバ(VPS)なのでようやく正真正銘、自分のサイトです。 ホームページ

ConoHaと契約したのでホームページを移行しました

まだドメイン取ってないのでアレですが。これでようやくFC2とオサラバ!こんにちはデータベース!です。 新しいホームページPanda Noirよりアクセスできます。 追記 ドメイン取得しました。 http://pandanoir.net

逆FizzBuzzを解いてみた

一時期はやっていた逆FizzBuzzをいまさら解いてみました。数年前初めて見たときは難しそうと思ったのですが、今回やってみたらかなりスラスラと解けて驚きました。

Riotのコンポーネント作り4日目 -lazyなcontent

お久しぶりです。クロパンダです。 10月から工学研修という、研究室の体験のようなことをしていたのですが、その研究室から借りていたMacを先週ついに返してしまいました。これで使用マシンのスペックが大きく下がって、プログラミングへのやる気も一緒にダ…

Node.jsでVimライクなエディタをつくる

qiita.com この記事に触発されて、ついでにNodeでコマンドラインツール作ってみたかったので始めてみました。名称はズバリ「JEdit」。 今回の記事では、実装していておもしろかったところを取り上げていこうと思います。

Riotのコンポーネント作り3日目 -日付表示

3ヶ月空けたと思ったら1週間も空けずに次を作る計画性のなさ。どうもクロパンダです。 今回は日付をフォーマットして表示してくれる要素を作りました。 <date format="yyyy/MM/dd(E)"></date>

構文解析に出てくる用語たち

構文解析はプログラマなら誰しも一度はやったことがあると思います。しかし、構文解析には独自の用語がたくさんあります。 そこで、初心者に向けて用語の解説をしたいと思います。「非終端記号って何?」「トップダウンとボトムアップはどう違うの?」と疑問に…

Riotのコンポーネント作り2日目 -アナログ時計

約3ヶ月あきました。今回はアナログ時計を作りました。 <analog-clock></analog-clock> <analog-clock hour="10" minute="10"></analog-clock> <analog-clock utc="+10:30"></analog-clock> こんな感じでつかいます。

Rollupは循環参照をうまくさばけないことがある

Rollupでは、循環参照していてもビルドしてくれます。しかし、子クラスが2つ以上になると意図した通りにビルドしてくれません。 このケースでは、ビルド自体は通るのですが、エラーが起きるコードが出力されます。ビルドは通ってしまうので、落とし穴に気づ…

無限長のイテレータに対してmapする

フィボナッチ数列イテレータなど、無限長であるイテレータに対してmapしたイテレータが欲しくなるときありますよね?ありますよね?

木構造を可視化するツールをつくりました

このように、わかりやすく任意の木構造を表示します。いくらか制限はありますが。

JavaScriptでAVL木の実装をしました

今、応用情報の勉強をしています。その中で平衡二分探索木が出てきました。応用情報を取ろうとしている人間です。平衡二分探索木のひとつやふたつ実装した経験がなければいけない、と思ったので実装してみました。 github.com

Object.keys()やReflect.ownKeys()のまとめ

オブジェクトのプロパティを取得するメソッドが Object.keys() Object.getOwnPropertyNames() Object.getOwnPropertySymbols() Reflect.ownKeys() と、4種類も存在していてややこしかったので整理しました

UnitaryJSで動的にファビコンをつくる

謹賀新年、あけましておめでとうございます。今年最初の記事は「動的にファビコンをつくる」という内容でお送りいたします。

この1年を振り返ってみる -2016年版

今年も振り返り記事を書きます。去年の記事はこちら panda-noir.hatenablog.jp

100回いれ直して分かった:echo has('python3')を1にする方法

ほんと100回は brew uninstall neovim; brew install neovim/neovim/neovim しました。…50回、いや少なくとも10回はやりました。

Riot.js+Redux+Immutable.jsでカレンダーアプリを作った

なんでReactじゃないのかって?Riotの方が好きだからですよ。

Fluxとはなんぞや

github.com ここのFlux conceptsを参考にFluxについて解説したいと思います。

List in JSを更新しました

github.com 以前、List in JSというライブラリを作っていたのですが、同じようなライブラリが存在していたこと、実装がつまったことで放置していました。が、ありがたいことに星を7つもつけていただけたので、このままでは申し訳ないと奮い立ち、アップデー…

JavaScriptテンプレートリテラルのおもしろい例

ES2015でテンプレートリテラルが追加されました。テンプレートリテラルには変数を埋め込むことができるのは周知の事実かと思います。しかし、埋めこむことができるのは実は変数、ではなく式です。今回は式を埋め込むことでできるおもしろいコードを紹介しよ…

Canvasまとめ

canvasに関する知見がたまったのでまとめようと思います(今更)。

3入力のXORがあるらしいです

今まで2入力固定だと思ってました…よく考えると、3入力以上でも問題ないです。

カレンダーを扱いやすくするライブラリfilendarを作りました

filter + calendarでfilendarです。 ある月の平日を求めるプログラムや、ある日が国民の休日であるか判定するプログラムなどを記述するためのJavaScriptライブラリです。

npmパッケージを作るときの雛形を作りました

publishするときに地雷を踏んだり、アップデートするときに落とし穴にはまったり、試行錯誤してなんとなく自分の中でベストプラクティス確立したので、雛形としてまとめてみました。

UnitaryJS 0.0.8公開しました

今回メインとなるのはDoughnutクラスの追加です

UnitaryJSで五芒星を描く

UnitaryJSを使えば星を描くのも簡単です。

UnitaryJS 0.0.7公開しました

補助的なメソッドの追加とバグ修正が主な内容です。

直線と直線の交点を求めるプログラム

これも結構間違えた実装してました…

線分の上に点が載っているか判定する

まあひねりの何もないコードですが、なぜか間違えたまま半年放置してしまっていたという笑えない事態になっていました…

npmでアップデートするときに踏みがちな3つの落とし穴

踏みつけた▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂

UnitaryJSを更新しました

久しぶりにUnitaryJSを更新しました。UnitaryJSの開発が止まっている間に世間ではRollupだのES2015だのと大きく動いていたのでそれへの対応がメインです。 今回の変更点は ベジェ曲線をサポート TypeScriptからES2015へ乗り換え BrowserifyからRollupへ乗り…

bentley-ottmannアルゴリズム

約1ヶ月ぶりの更新です。いやー夏休み終わって部活再開してからめちゃくちゃ忙しくて大変です… 今回は、n本の線分の集合が与えられたとき、それらの交点をO(n log n)で求めるbentley-ottmannアルゴリズムを紹介します。実装はダラダラ進めているのでおまちく…

アロー関数とかclassとかfunctionとか

いろいろ出てきたのでfunction(){}使う機会減ったよねという記事です

Riotのコンポーネント作り1日目 -ダミー画像

いつも通りシリーズにしようとするも続かないやつです。 <dummy-img width="200" height="150"></dummy-img> というコンポーネントを作りました。空タグじゃないけどそこは許してください。空タグできるんですかね…?

ifのあとにブロックつけるつけない問題に新展開が来てたよ!

2015年に!

離散フーリエ変換の解説

離散フーリエ変換とは (以下では離散フーリエ変換をDFTと記述します) DFTとは、「ある関数f(x)から、関数F(t)を求める変換」です。 ただし、f(x)もF(t)も連続した関数ではありません。離散した関数なので、どちらかというと数列に近いです。 F(t)は以下の式…

離散フーリエ変換をC++で実装した

C++

なぜかwolfram alphaの計算結果とずれてるけど、wikiの数式のとおりに実装できてはいるはずです。合っているのかはよくわかりません。 2016/9/14 追記: 正規化係数を1/root(N)にする(ノーマライズする)とwolfram alphaの数値と一致するようです。下のプログ…

Segmentation faultこわい

C++

フリじゃなくてSegmentation faultきらいです(じょしらくにハマってるオタク)。 なんかやけにセグフォールト(セグメンテーションフォールトの略)に出くわしている気がするので、出くわした状況をメモしていこうという記事です。