Home > Latest topics

Latest topics 近況報告

たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。

萌えるふぉくす子さんだば子本制作プロジェクトの動向はもえじら組ブログで。

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

Page 1/248: 1 2 3 4 5 6 7 8 9 »

nsIZipWriterを使ってFirefoxでZIPアーカイブを作る - Jul 16, 2009

nsIZipWriterを使えばアドオンでZIPアーカイブを作れるということを割と最近になってやっと知ったので、アドオンのXPIへのパッケージングまで全部アドオンでできるやん!と思ったんだけど、使い方がよく分からんかったので、実験と練習もかねてコンテキストメニュー拡張の短縮構文で使える汎用的な処理を書いてみた。

要点だけ抜き出すとこんな感じ。

// aSources = nsIFileの配列
// aZipFile = 作るZIPアーカイブのnsIFile
// aCompressionLevel = 圧縮率(0で無圧縮、9で最大圧縮、デフォルトは6)
zipFilesAs : function(aSources, aZipFile, aCompressionLevel) 
{
    // Firefox 3以降じゃないと動かないよ!
    if (!('nsIZipWriter' in Components.interfaces))
        throw Components.results.NS_ERROR_NOT_IMPLEMENTED;

    if (!aSources || !aSources.length || !aZipFile) return;

    if (aZipFile.exists() && !this.isZipFile(aZipFile))
        aZipFile.remove(true);

    const PR_RDWR        = 0x04;
    const PR_CREATE_FILE = 0x08;
    const PR_APPEND      = 0x10;
    const PR_TRUNCATE    = 0x20;

    var writer = Components
                    .classes['@mozilla.org/zipwriter;1']
                    .createInstance(Components.interfaces.nsIZipWriter);

    if (aCompressionLevel === void(0))
        aCompressionLevel = writer.COMPRESSION_DEFAULT;

    // 新規ZIPアーカイブと既存のZIPアーカイブではフラグが違う
    var flags = aZipFile.exists() ?
                    PR_RDWR | PR_APPEND :
                    PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE ;
    writer.open(aZipFile, flags);

    aSources.forEach(function(aFile) {
        var entry = this+aFile.leafName;
        // フォルダに対応するエントリの有無を調べる時は、
        // エントリ名の末尾に「/」が必要
        var entryForCheck = aFile.isDirectory() ? entry+'/' : entry ;

        // すでにあるエントリで、フォルダではない物は削除。
        // (フォルダを削除しないのは、内容をマージするため)
        if (!aFile.isDirectory() && writer.hasEntry(entryForCheck))
            writer.removeEntry(entry, false);

        // 新しいエントリを追加
        if (!writer.hasEntry(entryForCheck))
            writer.addEntryFile(entry, aCompressionLevel, aFile, false);

        if (aFile.isDirectory()) {
            var files = aFile.directoryEntries;
            while (files.hasMoreElements())
            {
                arguments.callee.call(
                    entry+'/',
                    files.getNext().QueryInterface(Components.interfaces.nsILocalFile)
                );
            }
        }
    }, '');

    writer.close();
},

// ファイルの内容を実際にZIPアーカイブとして読んでみて、ZIPアーカイブかどうか調べる
isZipFile : function(aFile)
{
    var isZip = false;

    if (!aFile || !aFile.exists()) return isZip;

    var reader = Components
                    .classes['@mozilla.org/libjar/zip-reader;1']
                    .createInstance(Components.interfaces.nsIZipReader);
    try {
        reader.open(aFile);
        try {
            var entries = reader.findEntries('*');
            while (entries.hasMore())
            {
                entries.getNext();
                isZip = true;
                break;
            }
            if (!isZip) {
                entries = reader.findEntries('*/');
                while (entries.hasMore())
                {
                    entries.getNext();
                    isZip = true;
                    break;
                }
            }
        }
        catch(e) {
        }
        reader.close();
    }
    catch(e) {
    }

    return isZip;
},

コンテキストメニュー拡張の機能を減らした - Dec 02, 2008

コンテキストメニュー拡張を久しぶりにアップデートした……けどアップデートの内容は実質デグレードみたいなものだ。外部アプリケーションでソースを表示する機能、mailto:のリンクをメールソフトやWebメールのサービスに渡す機能、ユーザスタイルシートを編集する機能、任意のスタイルシートを登録して切り替える機能、あたりをゴッソリ削除した。

  • ソースを他のアプリケーションで開く機能はFirefox 3本体にあるし、ソース表示タブあたりを使えばGUIで設定できる。もはや用済み。
  • mailto:の処理をコントロールする機能もFirefox 3に標準で付いてる。オプション→プログラム→mailtoで、外部アプリケーションを指定することもYahoo!メールやGmailを指定することもできる。もはや用済み。
  • スタイルシート関係の機能は、そもそもまともに動かなくなってからだいぶ経ってた。今ではStylishもあればuserstyle.orgもあり、そっち使った方が絶対にいい。

できれば無駄にRDFを使ってるバックエンドも全部捨てたいんだけど、これを捨てると旧版の設定が全部失われてしまうことになるというのが痛い。

ISBNコードからAmazonのアフィリエイトのリンクを生成するカスタムスクリプト for ContextMenu Extensions - Jan 01, 1970

前にも書いた気がするけど、ISBNコードが13桁になって前のやつが使えなくなったので、13桁ISBNコードを10桁ISBNコードに変換するコードを入れて書き直してみた(Amazonの個別商品ページのURIは13桁ISBNではなく10桁ISBNベースなのです)。

var title = prompt('タイトルを入力') || '';
var isbn  = prompt('ISBNコードを入力') || '';

isbn = isbn.replace(/^(urn:isbn:|isbn)/i, '');

if (!isbn) return;

var urn      = 'urn:isbn:'+isbn;
var urn_part = urn.match(/^urn:isbn:(\d{3}-)?(\d-?\d+-?\d+-?[x\d])$/i);
var numRaw   = urn_part[2];
var num      = numRaw.replace(/-/g, '');


/*
    13桁ISBNのチェックディジットは10桁ISBNのチェックディジットと異なるので、
    10桁ISBN基準で再計算する。
*/
var num10 = num;
if (urn_part[2]) {
    var sum = (parseInt(num.charAt(0)) * 10) +
                (parseInt(num.charAt(1)) * 9) +
                (parseInt(num.charAt(2)) * 8) +
                (parseInt(num.charAt(3)) * 7) +
                (parseInt(num.charAt(4)) * 6) +
                (parseInt(num.charAt(5)) * 5) +
                (parseInt(num.charAt(6)) * 4) +
                (parseInt(num.charAt(7)) * 3) +
                (parseInt(num.charAt(8)) * 2);

    var digit = (sum % 11);
    if (digit) {
        digit = 11 - digit;
        if (digit == 10)
            digit = 'X';
    }

    num10 = num.replace(/.$/, digit);
}


_setClipBoard(
'[<img src="http://images.amazon.com/images/P/'+num10+'.01._AA110_FMjpg_SCTZZZZZZZ_V66486851_.jpg" alt="" />'+title+']('+urn+')'+
'([Amazon.co.jp](http://www.amazon.co.jp/exec/obidos/ASIN/'+
num10+
'/outsiderrefle-22/ref=nosim))'
);

昨日から今日にかけてモリモリと書評を書いてたのはこれが原因。

おこづかいかせげるといいなあ!

ちなみにこのスクリプトでは基本のリンク先を urn:isbn:ISBNコード というURN形式のリンクにしてありますが、Firefoxでこれを読み込むにはURN Supportなどを使う必要があります。w3mの場合は近藤氏によるリダイレクタを使うといいでしょう。IEとOperaはシラネ。

ISBNコードからAmazonのアフィリエイトのリンクを生成するカスタムスクリプト for ContextMenu Extensions - Jan 01, 1970

前にも書いた気がするけど、ISBNコードが13桁になって前のやつが使えなくなったので、13桁ISBNコードを10桁ISBNコードに変換するコードを入れて書き直してみた(Amazonの個別商品ページのURIは13桁ISBNではなく10桁ISBNベースなのです)。

var title = prompt('タイトルを入力') || '';
var isbn  = prompt('ISBNコードを入力') || '';

isbn = isbn.replace(/^(urn:isbn:|isbn)/i, '');

if (!isbn) return;

var urn      = 'urn:isbn:'+isbn;
var urn_part = urn.match(/^urn:isbn:(\d{3}-)?(\d-?\d+-?\d+-?[x\d])$/i);
var numRaw   = urn_part[2];
var num      = numRaw.replace(/-/g, '');


/*
    13桁ISBNのチェックディジットは10桁ISBNのチェックディジットと異なるので、
    10桁ISBN基準で再計算する。
*/
var num10 = num;
if (urn_part[2]) {
    var sum = (parseInt(num.charAt(0)) * 10) +
                (parseInt(num.charAt(1)) * 9) +
                (parseInt(num.charAt(2)) * 8) +
                (parseInt(num.charAt(3)) * 7) +
                (parseInt(num.charAt(4)) * 6) +
                (parseInt(num.charAt(5)) * 5) +
                (parseInt(num.charAt(6)) * 4) +
                (parseInt(num.charAt(7)) * 3) +
                (parseInt(num.charAt(8)) * 2);

    var digit = (sum % 11);
    if (digit) {
        digit = 11 - digit;
        if (digit == 10)
            digit = 'X';
    }

    num10 = num.replace(/.$/, digit);
}


_setClipBoard(
'[<img src="http://images.amazon.com/images/P/'+num10+'.01._AA110_FMjpg_SCTZZZZZZZ_V66486851_.jpg" alt="" />'+title+']('+urn+')'+
'([Amazon.co.jp](http://www.amazon.co.jp/exec/obidos/ASIN/'+
num10+
'/outsiderrefle-22/ref=nosim))'
);

昨日から今日にかけてモリモリと書評を書いてたのはこれが原因。

おこづかいかせげるといいなあ!

ちなみにこのスクリプトでは基本のリンク先を urn:isbn:ISBNコード というURN形式のリンクにしてありますが、Firefoxでこれを読み込むにはURN Supportなどを使う必要があります。w3mの場合は近藤氏によるリダイレクタを使うといいでしょう。IEとOperaはシラネ。

ISBNコードからAmazonのアフィリエイトのリンクを生成するカスタムスクリプト for ContextMenu Extensions - Jan 01, 1970

前にも書いた気がするけど、ISBNコードが13桁になって前のやつが使えなくなったので、13桁ISBNコードを10桁ISBNコードに変換するコードを入れて書き直してみた(Amazonの個別商品ページのURIは13桁ISBNではなく10桁ISBNベースなのです)。

var title = prompt('タイトルを入力') || '';
var isbn  = prompt('ISBNコードを入力') || '';

isbn = isbn.replace(/^(urn:isbn:|isbn)/i, '');

if (!isbn) return;

var urn      = 'urn:isbn:'+isbn;
var urn_part = urn.match(/^urn:isbn:(\d{3}-)?(\d-?\d+-?\d+-?[x\d])$/i);
var numRaw   = urn_part[2];
var num      = numRaw.replace(/-/g, '');


/*
    13桁ISBNのチェックディジットは10桁ISBNのチェックディジットと異なるので、
    10桁ISBN基準で再計算する。
*/
var num10 = num;
if (urn_part[2]) {
    var sum = (parseInt(num.charAt(0)) * 10) +
                (parseInt(num.charAt(1)) * 9) +
                (parseInt(num.charAt(2)) * 8) +
                (parseInt(num.charAt(3)) * 7) +
                (parseInt(num.charAt(4)) * 6) +
                (parseInt(num.charAt(5)) * 5) +
                (parseInt(num.charAt(6)) * 4) +
                (parseInt(num.charAt(7)) * 3) +
                (parseInt(num.charAt(8)) * 2);

    var digit = (sum % 11);
    if (digit) {
        digit = 11 - digit;
        if (digit == 10)
            digit = 'X';
    }

    num10 = num.replace(/.$/, digit);
}


_setClipBoard(
'[<img src="http://images.amazon.com/images/P/'+num10+'.01._AA110_FMjpg_SCTZZZZZZZ_V66486851_.jpg" alt="" />'+title+']('+urn+')'+
'([Amazon.co.jp](http://www.amazon.co.jp/exec/obidos/ASIN/'+
num10+
'/outsiderrefle-22/ref=nosim))'
);

昨日から今日にかけてモリモリと書評を書いてたのはこれが原因。

おこづかいかせげるといいなあ!

ちなみにこのスクリプトでは基本のリンク先を urn:isbn:ISBNコード というURN形式のリンクにしてありますが、Firefoxでこれを読み込むにはURN Supportなどを使う必要があります。w3mの場合は近藤氏によるリダイレクタを使うといいでしょう。IEとOperaはシラネ。

ISBNコードからAmazonのアフィリエイトのリンクを生成するカスタムスクリプト for ContextMenu Extensions - Jan 01, 1970

前にも書いた気がするけど、ISBNコードが13桁になって前のやつが使えなくなったので、13桁ISBNコードを10桁ISBNコードに変換するコードを入れて書き直してみた(Amazonの個別商品ページのURIは13桁ISBNではなく10桁ISBNベースなのです)。

var title = prompt('タイトルを入力') || '';
var isbn  = prompt('ISBNコードを入力') || '';

isbn = isbn.replace(/^(urn:isbn:|isbn)/i, '');

if (!isbn) return;

var urn      = 'urn:isbn:'+isbn;
var urn_part = urn.match(/^urn:isbn:(\d{3}-)?(\d-?\d+-?\d+-?[x\d])$/i);
var numRaw   = urn_part[2];
var num      = numRaw.replace(/-/g, '');


/*
    13桁ISBNのチェックディジットは10桁ISBNのチェックディジットと異なるので、
    10桁ISBN基準で再計算する。
*/
var num10 = num;
if (urn_part[2]) {
    var sum = (parseInt(num.charAt(0)) * 10) +
                (parseInt(num.charAt(1)) * 9) +
                (parseInt(num.charAt(2)) * 8) +
                (parseInt(num.charAt(3)) * 7) +
                (parseInt(num.charAt(4)) * 6) +
                (parseInt(num.charAt(5)) * 5) +
                (parseInt(num.charAt(6)) * 4) +
                (parseInt(num.charAt(7)) * 3) +
                (parseInt(num.charAt(8)) * 2);

    var digit = (sum % 11);
    if (digit) {
        digit = 11 - digit;
        if (digit == 10)
            digit = 'X';
    }

    num10 = num.replace(/.$/, digit);
}


_setClipBoard(
'[<img src="http://images.amazon.com/images/P/'+num10+'.01._AA110_FMjpg_SCTZZZZZZZ_V66486851_.jpg" alt="" />'+title+']('+urn+')'+
'([Amazon.co.jp](http://www.amazon.co.jp/exec/obidos/ASIN/'+
num10+
'/outsiderrefle-22/ref=nosim))'
);

昨日から今日にかけてモリモリと書評を書いてたのはこれが原因。

おこづかいかせげるといいなあ!

ちなみにこのスクリプトでは基本のリンク先を urn:isbn:ISBNコード というURN形式のリンクにしてありますが、Firefoxでこれを読み込むにはURN Supportなどを使う必要があります。w3mの場合は近藤氏によるリダイレクタを使うといいでしょう。IEとOperaはシラネ。

ISBNコードからAmazonのアフィリエイトのリンクを生成するカスタムスクリプト for ContextMenu Extensions - Jan 01, 1970

前にも書いた気がするけど、ISBNコードが13桁になって前のやつが使えなくなったので、13桁ISBNコードを10桁ISBNコードに変換するコードを入れて書き直してみた(Amazonの個別商品ページのURIは13桁ISBNではなく10桁ISBNベースなのです)。

var title = prompt('タイトルを入力') || '';
var isbn  = prompt('ISBNコードを入力') || '';

isbn = isbn.replace(/^(urn:isbn:|isbn)/i, '');

if (!isbn) return;

var urn      = 'urn:isbn:'+isbn;
var urn_part = urn.match(/^urn:isbn:(\d{3}-)?(\d-?\d+-?\d+-?[x\d])$/i);
var numRaw   = urn_part[2];
var num      = numRaw.replace(/-/g, '');


/*
    13桁ISBNのチェックディジットは10桁ISBNのチェックディジットと異なるので、
    10桁ISBN基準で再計算する。
*/
var num10 = num;
if (urn_part[2]) {
    var sum = (parseInt(num.charAt(0)) * 10) +
                (parseInt(num.charAt(1)) * 9) +
                (parseInt(num.charAt(2)) * 8) +
                (parseInt(num.charAt(3)) * 7) +
                (parseInt(num.charAt(4)) * 6) +
                (parseInt(num.charAt(5)) * 5) +
                (parseInt(num.charAt(6)) * 4) +
                (parseInt(num.charAt(7)) * 3) +
                (parseInt(num.charAt(8)) * 2);

    var digit = (sum % 11);
    if (digit) {
        digit = 11 - digit;
        if (digit == 10)
            digit = 'X';
    }

    num10 = num.replace(/.$/, digit);
}


_setClipBoard(
'[<img src="http://images.amazon.com/images/P/'+num10+'.01._AA110_FMjpg_SCTZZZZZZZ_V66486851_.jpg" alt="" />'+title+']('+urn+')'+
'([Amazon.co.jp](http://www.amazon.co.jp/exec/obidos/ASIN/'+
num10+
'/outsiderrefle-22/ref=nosim))'
);

昨日から今日にかけてモリモリと書評を書いてたのはこれが原因。

おこづかいかせげるといいなあ!

ちなみにこのスクリプトでは基本のリンク先を urn:isbn:ISBNコード というURN形式のリンクにしてありますが、Firefoxでこれを読み込むにはURN Supportなどを使う必要があります。w3mの場合は近藤氏によるリダイレクタを使うといいでしょう。IEとOperaはシラネ。

ISBNコードからAmazonのアフィリエイトのリンクを生成するカスタムスクリプト for ContextMenu Extensions - Jan 01, 1970

前にも書いた気がするけど、ISBNコードが13桁になって前のやつが使えなくなったので、13桁ISBNコードを10桁ISBNコードに変換するコードを入れて書き直してみた(Amazonの個別商品ページのURIは13桁ISBNではなく10桁ISBNベースなのです)。

var title = prompt('タイトルを入力') || '';
var isbn  = prompt('ISBNコードを入力') || '';

isbn = isbn.replace(/^(urn:isbn:|isbn)/i, '');

if (!isbn) return;

var urn      = 'urn:isbn:'+isbn;
var urn_part = urn.match(/^urn:isbn:(\d{3}-)?(\d-?\d+-?\d+-?[x\d])$/i);
var numRaw   = urn_part[2];
var num      = numRaw.replace(/-/g, '');


/*
    13桁ISBNのチェックディジットは10桁ISBNのチェックディジットと異なるので、
    10桁ISBN基準で再計算する。
*/
var num10 = num;
if (urn_part[2]) {
    var sum = (parseInt(num.charAt(0)) * 10) +
                (parseInt(num.charAt(1)) * 9) +
                (parseInt(num.charAt(2)) * 8) +
                (parseInt(num.charAt(3)) * 7) +
                (parseInt(num.charAt(4)) * 6) +
                (parseInt(num.charAt(5)) * 5) +
                (parseInt(num.charAt(6)) * 4) +
                (parseInt(num.charAt(7)) * 3) +
                (parseInt(num.charAt(8)) * 2);

    var digit = (sum % 11);
    if (digit) {
        digit = 11 - digit;
        if (digit == 10)
            digit = 'X';
    }

    num10 = num.replace(/.$/, digit);
}


_setClipBoard(
'[<img src="http://images.amazon.com/images/P/'+num10+'.01._AA110_FMjpg_SCTZZZZZZZ_V66486851_.jpg" alt="" />'+title+']('+urn+')'+
'([Amazon.co.jp](http://www.amazon.co.jp/exec/obidos/ASIN/'+
num10+
'/outsiderrefle-22/ref=nosim))'
);

昨日から今日にかけてモリモリと書評を書いてたのはこれが原因。

おこづかいかせげるといいなあ!

ちなみにこのスクリプトでは基本のリンク先を urn:isbn:ISBNコード というURN形式のリンクにしてありますが、Firefoxでこれを読み込むにはURN Supportなどを使う必要があります。w3mの場合は近藤氏によるリダイレクタを使うといいでしょう。IEとOperaはシラネ。

ISBNコードからAmazonのアフィリエイトのリンクを生成するカスタムスクリプト for ContextMenu Extensions - Jan 01, 1970

前にも書いた気がするけど、ISBNコードが13桁になって前のやつが使えなくなったので、13桁ISBNコードを10桁ISBNコードに変換するコードを入れて書き直してみた(Amazonの個別商品ページのURIは13桁ISBNではなく10桁ISBNベースなのです)。

var title = prompt('タイトルを入力') || '';
var isbn  = prompt('ISBNコードを入力') || '';

isbn = isbn.replace(/^(urn:isbn:|isbn)/i, '');

if (!isbn) return;

var urn      = 'urn:isbn:'+isbn;
var urn_part = urn.match(/^urn:isbn:(\d{3}-)?(\d-?\d+-?\d+-?[x\d])$/i);
var numRaw   = urn_part[2];
var num      = numRaw.replace(/-/g, '');


/*
    13桁ISBNのチェックディジットは10桁ISBNのチェックディジットと異なるので、
    10桁ISBN基準で再計算する。
*/
var num10 = num;
if (urn_part[2]) {
    var sum = (parseInt(num.charAt(0)) * 10) +
                (parseInt(num.charAt(1)) * 9) +
                (parseInt(num.charAt(2)) * 8) +
                (parseInt(num.charAt(3)) * 7) +
                (parseInt(num.charAt(4)) * 6) +
                (parseInt(num.charAt(5)) * 5) +
                (parseInt(num.charAt(6)) * 4) +
                (parseInt(num.charAt(7)) * 3) +
                (parseInt(num.charAt(8)) * 2);

    var digit = (sum % 11);
    if (digit) {
        digit = 11 - digit;
        if (digit == 10)
            digit = 'X';
    }

    num10 = num.replace(/.$/, digit);
}


_setClipBoard(
'[<img src="http://images.amazon.com/images/P/'+num10+'.01._AA110_FMjpg_SCTZZZZZZZ_V66486851_.jpg" alt="" />'+title+']('+urn+')'+
'([Amazon.co.jp](http://www.amazon.co.jp/exec/obidos/ASIN/'+
num10+
'/outsiderrefle-22/ref=nosim))'
);

昨日から今日にかけてモリモリと書評を書いてたのはこれが原因。

おこづかいかせげるといいなあ!

ちなみにこのスクリプトでは基本のリンク先を urn:isbn:ISBNコード というURN形式のリンクにしてありますが、Firefoxでこれを読み込むにはURN Supportなどを使う必要があります。w3mの場合は近藤氏によるリダイレクタを使うといいでしょう。IEとOperaはシラネ。

Page 1/248: 1 2 3 4 5 6 7 8 9 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき