Panda Noir

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

JavaScript

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

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

UnitaryJS v0.1.0公開しました

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

逆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で動的にファビコンをつくる

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

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に関する知見がたまったのでまとめようと思います(今更)。

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

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

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

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

UnitaryJS 0.0.8公開しました

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

UnitaryJSで五芒星を描く

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

UnitaryJS 0.0.7公開しました

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

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

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

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

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

UnitaryJSを更新しました

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

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

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

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

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

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

2015年に!

二分ヒープによるハフマン符号の効率化

二分ヒープを用いることでハフマン符号を効率よく計算できるようにしました

ハフマン符号をJavaScriptで実装した

え?C++を体得したんじゃなかったって? 知りませんね、そんなこと。私はC++なんて使わないでJavaScriptでコードを書きます。

JavaScriptのブロックスコープの作り方

わざわざブロックスコープ作るためにforやifを使う必要がないって知ってましたか?

forもifも使わないプログラミング入門(終)

シリーズ物書ききったの初めてかも

Riotでカスタムタグを作る3つのやり方

まとまった記事がなくて四苦八苦したので書きました。

Can't load the js.babel riot parser: Error: Cannot find module 'babel-core' と出たときの解決方法

riotのプリコンパイルで $: riot --type babel ./ ./ Error: Can't load the js.babel riot parser: Error: Cannot find module 'babel-core' みたいなエラーが起きてしばらくの間悩んでたのでメモ。

forもifも使わないプログラミング入門3

そろそろforなしifなしでは限界を迎えます。が、まだいけるのでいけるところまで行ってみます。

forもifも使わないプログラミング入門2

前回は1から2016までの総和を取りました。今回はもうちょっと応用していきます。

forもifも使わないプログラミング入門

入門記事を量産してる気がするけど気にしたら負け。

SuperAgentからpostするときの注意

$_POSTで受け取れなくて困ったのでメモ。

演算子の右結合性、左結合性とは

なぜか日本語wikiにないright associativity、left associativity。小学生でもわかるくらい簡単だからだれか翻訳してもいいのではないですかね(他力本願)

immutableとconstの違いがわかりやすいコードを考えた

immutableとconstはとてもよく似ていて混乱しがちですよね。

配列をバラバラに入れ替えて元の配列と重複しないようにする

配列をシャッフルし、それぞれのインデックスの要素が、元の配列の該当インデックス要素と異なるようにするアルゴリズムです。 A, B, Cを A, C, Bではなく、 C, A, Bのようにシャッフルします。 あ、前回の記事が400番目の記事でした。また記念イベントを忘…

0で埋まった二次配列の作り方

0で埋まった二次配列、つまり零行列の作り方に関して。

正規表現のアンカーについて

つい先日 \b がアンカーであると知って驚いたので共有。 (注意: \b は [] で囲ってないときはアンカーですが、[] で囲うとアンカーではなく文字扱いになります)

canvasに描画されたオブジェクトにイベントリスナを設定する

「canvas上の円をクリックしたら色を変えたい!」「canvasでゲームを作りたい!」そういう時、canvasに対してイベントリスナを設定したくなります。しかし、円をクリックしたかどうかの判定を書くのは煩雑で面倒な作業です。 本記事ではUnitaryJSを用いて、c…

UnitaryJS 0.0.6公開しました

ついに!ついに!canvas内の三角形や円にイベントハンドラーをつけることができるようになりました!誰もが待ち望んだ機能ですよね!最高です!

うるう年の判定王を決めよう

(この記事はQiitaで僕が書いたものを移行した記事です。記事中のコメントはQiitaの該当記事を参照ください) 今年2016年はうるう年です。2月は29まであり1年が366日でオリンピックが開かれます。 そして、うるう年判定はプログラマにとって熱いものがこみ上げ…

C++のIterator学んだらJavaScriptのIterator理解できた

(この記事はQiitaで僕が書いたものを移行した記事です。記事中のコメントはQiitaの該当記事を参照ください) 「C++ 入門書の次に読む本」という本を読み終わりました。中身はとても良かったです。まあ書評は置いときます。この本にIteratorが出てきたので、そ…

ずっと気が付かなかったけどインスタンスのprototypeはundefined

(この記事はQiitaで僕が書いたものを移行した記事です。記事中のコメントはQiitaの該当記事を参照ください) function Hoge(){ this.hoge = 'hoge'; } console.log(new Hoge().prototype); // undefined console.log(new Hoge().constructor); // [Hoge] 知ら…

i++はスペース挟んでi ++でもok

(この記事はQiitaで僕が書いたものを移行した記事です。記事中のコメントはQiitaの該当記事を参照ください) コメント頂いて雑に書きすぎたと思い書き直し。 本記事は「i++と書きがちだけど実はi ++って書いてもいいんだよ」と新しい視点を提供…というと大げ…