アーカイブ - 2月, 2010



2010年 2月 6

location.URLなどから取得するのではなく、例えば下記ページのような事を行う関数。

javascriptでURLクエリで、変数を受け取ることはできないでしょうか?
http://q.hatena.ne.jp/1179844292

<script src=”sample.js?key1=value1&key2=value2″></script>

などでクエリー(Javascriptではそう呼ばない??)を取得する。
注意点としては日本語等マルチバイトの文字をvalueにセットするには、URLエンコードしないとだめかも。
(呼び出し元のHTMLがUTF-8だとうまくいったけど。。。)

var getQueryStrings = function (){

    // scriptタグからリクエストされたURIを取得し、クエリー(?以降の部分)を抜き出す
    var script = document.getElementsByTagName( 'script' );
    var request = script[script.length-1].src;
    var query =( request.match(/\?(.+)$/) )[1]; //配列に代入されるため[1]の要素を代入

    //
    var pairs = query.split(/&/);
    var form={};
    for (var i in pairs){
        var val = pairs[i].split(/=/);
        form[decodeURI(val[0])] = decodeURI(val[1]);
    }
return form;
};

使い方は
var form = getQueryStrings();
とするとform にハッシュとして代入される。

form[“key1”]やform[“key2”]のように。
だいたい form.key1 form.key2 でも大丈夫だと思うけど、key1が数字の場合うまくいかないので注意。
例)sample.js?1=val1&2=val2

なんでこんな事するのかというと、以前はCGIでJavascriptを書き出していたので perl.cgi?k=aaa&〜 と、していた。そのスクリプトをJavascriptとして置き換えるのにURIの変更を(ほぼ)せずに行いたかったので。
こうしないとパラメーターを渡すのにscriptタグの変更が必要なので。


Filed under: JavaScript

Trackback Uri






2010年 2月 4

はてなの質問で気になったものを発見。

ファイルの書き込み速度を向上させる方法。 perlで一度に複数のファイルを書き出すプログラムを作っていますが、openで書き出しています。 ファイルの数が増えるとやはり徐々に完了まで時間がかかってきますが、ファイルを書き出す際の速度向上にはどのようなものがあるでしょうか。 ハードウェアの交換等以外でお願い致します。
http://q.hatena.ne.jp/1125455948

この回答にディスクの書き込みによけいなものを排除するというものがあった。
http://www.itmedia.co.jp/help/tips/linux/l0298.html

ようするにアクセス情報(更新時間等)を書き込まないようにする、との事。
速度を重視でファイルの内容のみを必要とするなら良いかも。


Filed under: LINUX,perl

Trackback Uri