ヨーキョクデイ

いろいろ雑食

JavaScript

配列の zip メソッドを作り、ECMAScript 6 やら、新しい JavaScript に触れてみた

ここにおける JavaScript とは Mozilla 界隈におけるそれのことである。 しばらく JavaScript から離れており、JavaScript 1.8 あたりからの新機能がわからなかったので、MDN を見ながらがんばってみた。 今回はなぜか Array オブジェクトに zip() メソッド…

chaika いじり

最近の Shiretoko だが、chaika の板スレ一覧が開けなくなったのでプチハック。ちなみに Windows では 2f2d41a60ad6 な 2009-05-16-04-mozilla-1.9.1 なナイトリでは開けたものの、その後のビルドではだめだった。 [chContentHandler_handleContent:198] WAR…

nsIScriptableUnescapeHTML の unescape の罠

嫌な挙動が見受けられるので bbs2chreader のコードを久々に見てみた。そして発覚した。 var unescapeHTML = Components.classes["@mozilla.org/feed-unescapehtml;1"] .getService(Components.interfaces.nsIScriptableUnescapeHTML); unescapeHTML.unescap…

Tango の Stdout のような出力関数を JS で・その 3

前回 の続き。 もう少しカオス度を上げるために、関数にゲッタを付けるよ。 var strangeOutput = (function(){ var buffer = ""; var f = function(){ if(arguments.length){ buffer += Array.prototype.slice.call(arguments); // JS 1.6 ならばこれでよい …

Tango の Stdout のような出力関数を JS で・その 2

前回 の続き。 前回はバッファを関数(立派なオブジェクト)のプロパティとし、あえてプロパティ名の頭に "_" を付けることでプライベートなもの風、つまり人為的に外からは見ちゃいけないものとしておいた。これは結局はパブリックなプロパティなのだが、も…

nsIScriptableIO 死亡のお知らせ

いろいろと問題があったらしく、Bug 414901 – Back out scriptable IO ということで、trunk から消えた。最終的に Fx3 に搭載されるのか Fx4 に持ち越されるのかは知らないが、画期的な代物ではあるので早く復活してほしいなぁ。

配列要素の最大値と最小値を取得したい

JavaScript 1.8 の Array#reduce を使ってみた。 // JavaScript 1.8 Array.prototype.max = function(){ return this.reduce(function(a, b){ return a > b ? a : b; }); } Array.prototype.min = function(){ return this.reduce(function(a, b){ return a …

Tango の Stdout のような出力関数を JS で

D 言語スレでもちょくちょく言及される、Stdout("hoge")(4)(3).newline; といったものの気持ち悪さを JavaScript でも味わうべく、似て非なるものを作ってみた。JavaScript で奇妙なことをしてみたかったので。 function strangeOutput(){ var f = arguments…

Foxage2ch 改造

スレッド情報の mozStorage 化 ということで、bbs2chreader でスレッド情報の取得方法が変わり、従来よりも楽になった。これに伴って Foxage2ch の bbs2chreader との連携強化についての改造箇所も減った。Foxage2ch 2.6.2 でテスト。 --- foxage2ch.js.orig…

Firefox 2 における canvas 要素の putImageData のバグ

canvas 要素で画像にフィルタを適用したい の回で作ったサンプルは Firefox 3 系で動かしながら作ったもので、Firefox 2 系では ctx.putImageData() を使っても再描画されないバグがあるらしいことにその後で気づいた。試してみると、タブを切り替えたり、ウ…

canvas 要素で画像にフィルタを適用したい

ImageData オブジェクトなるものを取得すると、その data プロパティをいじることでピクセルごとに画像をいじることができるらしい。Canvasリファレンス - getImageData/putImageDataメソッド- HTML5.JP を見ればいいわけだけど、結局は data プロパティとい…

EPOCH@まつやまの問題例を解きたい

EPOCH@まつやま なるものがあるらしい。C、Java、C++ のいずれかで解かなければならないらしいが、あえて JavaScript で解いてみる。 問題 6 まで。元の問題文に不備があるところは勝手に解釈した。 function q1(年, 月, 日){ return ["日", "月", "火", "…

配列の差分をとりたい

ある状態を配列で持つことにして、ある状態と別のある状態を比較し、消えた要素と現れた要素を知りたい(ただしどのインデックスの要素が消えたりしたのかは気にしない)という状況を想定。各配列は重複する要素を持たないものとする。 Ruby の配列は集合の…

ローカルファイルを Base64 エンコードしたい

たぶんこんな感じ。 var path = "D:\\hoge\\fuga.xxx"; var localFile = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); localFile.initWithPath(path); var fileInputStream = Components.classes…

FTP でテキストをアップロードしたい

とりあえず、細かいことを気にしなければこんな感じでできるみたい。 var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var uri = ioService.newURI("ftp://user:password@ftp.e…