tech::hexagram

personal note for technical issue.

JavaScript

ES6で書かれたUserscriptでchaiとmochaを使ったテストを走らせるための小技

github.comのcommit一覧ページで、2点のcommit hashからcompareページに簡単に遷移できる Userscript を3年ほど前に開発し、最近ES6を使ってほぼフルスクラッチで書き換えた。 その際に chai と mocha を使ったユニットテストを書けるように整備した。通常の…

Javascriptで連想配列のDeepCopy

Object.assign を実装当初利用したものの、Safariでは9以上でないと動かないらしい。 jQueryの $.extend を利用するとオブジェクトのマージという形でDeepCopyが出来る。 var src = fetchSrc(); // 何かしらで取ってくる var dest = {}; $.extend(true, dest…

関数の呼び出し元を取得する方法まとめ

perl use Data::Dumper; warn Dumper( (caller 1)[3] ); JavaScript console.log( arguments.callee.caller );

user.jsの書き方

// ==UserScript== // @name hogehoge // @namespace jun hashimoto // @include http://d.hatena.ne.jp/* // @include http://b.hatena.ne.jp/* // ==/UserScript== (function(){ //処理をよしなに書く })(); asd asd

スクロールしたらついてくるナビゲーションバー的なもの

○スクロールしていって、ウィンドウ1つ分の高さまではそのまま ○ウィンドウ1つ分を超えてスクロールすると上部に張り付く的なnavigationbarの実装方法。 実装例 var isScrolledOverWindow = false; $(window).scroll(function(){ var scrollValue = $(this).…

ウィンドウの中でスクロールする

普通に書くのであれば window.scrollTo(width, height); jQueryのanimation入のものを使うのであれば $j('html,body').animate({ scrollTop: height }, 'fast');

JavaScriptで定数に正規表現を入れて検索する

正規表現オブジェクトなるものに一旦入れてから使うらしい。 const TIME_REGEXP = "^([01]?[0-9]|2[0-3]):([0-5][0-9])$"; var timeRegExp = new RegExp (TIME_REGEXP); var time = "23:59"; time.match(timeRegExp) //true

textarea内の改行を<br>に置き換える

textareaで入力した改行を含む文字列をhtmlにそのまま渡すと、改行されないまま表示されてしまう。 そこで、以下の手順で改行コードを<br>に置き換える必要がある。 // まず改行らしき文字を\nに統一。\r、\r\n → \n txt = txt.replace(/\r\n/g, '\n'); tx…

Chrome Extensionでさくさく乗換検索できるツールを作ってみた

4月になり、ついに社会人になりました。 社会人になるとやはり平日の自由な時間が少なくなるので、趣味の開発もあまり進みませんね。そんな中、Chrome Extensionをちょっと作り始めた所、結構業務外の細かい時間でそこそこなものができたので、せっかくだし…