Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

JavaScript

JSONの末尾のカンマにご用心

いつも気をつけているのだが、割とうっかりやらかすので戒めのためにメモ。 JSONは元々JavaScriptの記法を元にしたフォーマットだが、実はJavaScript上では許されているがJSONとしては許されていないものがある。 その代表例の一つが末尾のカンマだ。 例えば…

【JavaScript】データ型の落とし穴

結構ハマっている人がいるので、整理がてらメモ。 JavaScriptでは変数は型を持たないが、値がデータ型を持つ。 例えば以下のプログラムでは、数値(number)が文字列(string)としてキャストされて文字列結合が行われる。 例1: demo1.js let hoge = 128; // num…

【JavaScript】HTMLCollectionsでArray.prototype.forEach()などを使用する

備忘録がてら。 ブラウザ上で[document.getElementsByClassName()]等を実行した場合に返却される[HTMLCollections]はArrayのような動きをするが、最低限の機能しか備わっていない。 もし[Array.prototype.forEach()]等を実行したいのであれば、[Array.protot…

【JavaScript】Infinityへの加算及び減算の挙動について

何遍Infinityについて書いているんだと言われたら、何も言えないのだけれど(白目) plugout.hateblo.jp plugout.hateblo.jp ゼロ除算自体が一般的にアンチパターンなので、意外と知らない事も多いなと。 今回はInfinityを使って加算及び減算した場合につい…

【JavaScript】[JSON.stringify()]にInfinityを与えるとnullになる

自分の備忘録がてら。 [JSON.stringify()]はObjectからJSON文字列を生成する関数だが、結果で一部正確に反映されないものが存在する。 そのうちの一つがInfinityで∞(無限)という意味だ。 JSON文字列上、∞は表現できないためにnullになってしまう。 (尚、Infi…

【JavaScript】指定した文字数のランダムな英数字文字列を生成する

備忘録がてら。 以下のプログラムは200文字のランダムな英数字文字列を生成する。 例: test.js let length = 200; // わかりやすく代入しているが、直指定すればワンライナーで書ける。 let str = Array.from({"length": length}, (v, k) => k) .map(e => Ma…

【JavaScript】ENUMの仕組みを用意する

JavaScriptでは[enum]という単語は予約語だけれど、一般的な[enum]、つまりは列挙型の仕組みは用意されていない。 ja.wikipedia.org [JavaScript enum]でGoogle検索をかけると、連想配列を使って擬似的に実現する方法が出てくるけれども、個人的には[定義時…

【Lua × JavaScript】Fengariのメモ

TypeScriptを弄っていたはずが、いつの間にか楽しくてFengariを弄っていた(?)ので……調べながら試したことのメモ。 fengari.io FengariはJavaScriptで実装されたLuaのVMとのこと。 ブラウザ上でLuaのスクリプトを動かすことができる。 以下は簡単なHello W…

【JavaScript】Object.defineProperty()の落とし穴

備忘録がてらにメモ。 公式ドキュメントを読まないばかりに実装に無駄に時間をかけてしまった自分への戒めとして残しておく。 JavaScriptの[Object.defineProperty()]という関数は、対象のオブジェクトに対して指定したプロパティを定義するという関数となっ…

Twitterのシェアボタン設置の落とし穴

Twitterのシェアボタン設置に関して、ハマってしまったので備忘録がてらにメモ。 Googleで「Twitter シェアボタン」なんて検索すると出てくる通り、以下のTwitterの公式サイトから「シェアボタン」のコードを生成して、自分のウェブサイトなどに埋め込むこと…

JavaScriptのヒアドキュメントについて

JavaScriptでヒアドキュメントを実現したい場合、ES6以降をサポートしていれば「`」で囲むことで実現することができる。 var str = ` hoge fuga `; ただしES6以前の場合は利用できないので、以下のチートを利用することでそれっぽいことを実現できる。 var s…

JSONのObjectとArrayの違いにご注意

まず、JSONについては以下のページが参考になるかと思います。 ja.wikipedia.org JSONは基本的に以下のようなフォーマットで提供されます。 例: サンプルJSON(Object) { "hoge": "fuga" } このJSONの場合、JavaScriptのJSON.parse(string)などで解釈させると…

【JavaScript】Infinityの判定について

JavaScriptでは0除算を行うと結果がInfinityになります。 基本的には他の言語と同様に0除算自体を回避すべきだと思うんですが、Infinityでないことをチェックするには以下のメソッドを使います。 Number.isFinite(128); // true Number.isFinite(128 / 0); /…

【JavaScript】Google Chartでグラフの描写後に処理を行う

JavaScriptにて、Google Chartの描写処理が終わった後で何か処理を行いたい場合(コールバック)はaddListenerという関数を使用する。 google.visualization.events.addListener(chart, 'ready', function () {}); 使用例: google.charts.load('current', {p…

【Bootstrap】「Popovers」でウインドウをリサイズすると表示が崩れる

jQueryでwindowのresizeにフックして調整を行う。 しかし大抵の場合はPopoverを非表示に切り替えていいと思うので、僕は以下のようにしている。 $('[data-toggle="popover"]').popover(); $(window).on('resize', function(){ $('[data-toggle="popover"]').…

Double Submit CookieでのCSRF対策について

※ この記事は[DIGITAL COFFEE]から移動したものです。 久々にエンジニア的な技術ネタを。 RESTfulなWebアプリケーションにおいて、どうCSRF(クロスサイトリクエストフォージェリ)の対策を行うかということについて。 クロスサイトリクエストフォージェリ -…

JavaScriptでQRコードを生成するメモ

※ この記事は[DIGITAL COFFEE]から移動したものです。 今まで全然知らなかったんですが、JavaScriptを使って簡単にQRコードが生成できるようなので個人的なメモを兼ねてご紹介。 と言っても、ただ作るだけなら以下のようなサイトで十分事足りるんですけどね…

連絡先: plugout777★yahoo.co.jp (クローラー対策のため★を@に変更してください)