プログラム: 2008年3月アーカイブ

Test.Base.js

| | コメント(0) | トラックバック(0)
ないならつくろうかなと思ってたけどあった。

http://trac.kwiki.org/trac/browser/trunk/src/ingy/JS-Test-Base

「Test.Base.js」を日本語で検索すると3件、全言語で検索しても8件しかヒットしない。
JSのTest Framework自体そんなに人気がないのかな。

methodとproperty

| | コメント(0) | トラックバック(0)
methodとproperty区別するのめんどくさい。
functionが入ってればmethodで、変数が入ってればpropertyで見てほしい。
これは言語側の仕事だと思うけど、大抵の言語で人間側が判断してるから実装が大変なのかな?

Delphiは基本的に同一視できるから良かった。
最初propertyとして実装して後からmethodへ変更とか普通にできたし。
参照はproperty直接読んで、書き込みはmethodとかもできたし。
(objectの参照追加と書き込みが別扱いなのはちょっとめんどかったけど)

あ、書いてて気づいたけど、methodを参照として代入するときもあるか。
でも、methodを参照として扱うことのほうが少ないんだから、それには特殊な演算しても割り当てればいい気がする。
(perl風)

こんな感じ。

var hoge = {};
hoge.fuga = 1;
alert(hoge.fuga); // alert(1)
hoge.fuga = function () {alert('this')};
hoge.fuga; // -> alert('this')
hoge.gege = &hoge.fuga;
hoge.gege; // -> alert('this')

テキストエディタのフォントサイズ

| | コメント(0) | トラックバック(0)
多少落とすといい感じ。
若干見えにくいけど、画面が広くなった。
1440pxでwindow3枚開ける。

script tagのdefer属性

| | コメント(0) | トラックバック(0)
サイ本から。

script tagにdefer属性をつけるとIEでは実行が遅延される。
(仕様上は「script内でdocument.writeしないことの表明」らしい)

この辺に詳細記事。
http://d.hatena.ne.jp/shogo4405/20070306/1173160753

動画の高速再生

| | コメント(0) | トラックバック(0)
映像を見るならnvPlayerとかの高速再生可能なplayerがお勧め。
特に技術系の講習会は最近映像配信してるので、
ざっくり確認したい場合は手元に落として2倍くらいで見ると早くていい。

mysqlでテーブルを指定してdumpする方法

| | コメント(0) | トラックバック(0)
mysqldump -u root dbname tablename1 tablename2 ... > dump.sql
テーブル指定のオプションはない?

Adobe EDGE Now!

| | コメント(0) | トラックバック(0)
ブログパーツのスクリプトが見たくて登録w

で、内容としてはかなり微妙。
広域空間にjQuery突っ込んだり、wとか、hとかって名前の変数定義したりしてる。

SonyのFLOQもひどかった(prototype.js突っ込む)けど、
大手がこういうひどいことするとこっちが迷惑するんだよなぁ。。。
もうちょっと考えて行動してほしい。

Content-Script-Type

| | コメント(0) | トラックバック(0)
「<meta http-equiv="Content-Script-Type" content="text/javascript">」
で、script tagのtype初期値を設定できるらしい。

まあ、type書かなくてもみんなJSって分かってくれるからいいけど。

高橋メソッドなプレゼンツール in XUL リターンズ

| | コメント(0) | トラックバック(0)
パワポ版も結構制約があるのでこっちのツールを使ったほうがいいんじゃないだろうか?

両方とも使ったことないけど。

jsで追加型UIのテンプレート

| | コメント(0) | トラックバック(0)
JSで検索条件を追加していく感じのUIの場合
「<div id="hoge" style="display:none"><input type="text"></div>」
を上のほうに隠しといて「<button onclick="add_where()">」時に
「$('#where').append($('#hoge').clone(true));」とかする。

他にも.innerHTML('')とか、createElement+addChildとかあるけど、
htmlをテンプレート的に使うことを考えるとこれがいいかなと思う。

ただ、変な隠しelementが増えるので、SEOとか考えるとどうなんだろう?

method呼び出されたときのthis

| | コメント(0) | トラックバック(0)
javascriptで呼び出されたmethod内のthisが何になるかは、
methodがどのObjectのmethodとして呼び出されたかに依存する。

全然別の場所で定義されても、「a.method()」で呼び出された場合、
「method = function () {this}」はaになる。

var a = {'hoge':1};
function b () {console.log(this)};
a.method = b;
a.method();
>Object hoge=1

jsの値渡しと参照渡し

| | コメント(0) | トラックバック(0)
javascriptのfunctionで値渡しになるか参照渡しになるかは、
引数の値がプリミティブか否かで変わる。

String、Number、Boolean等のプリミティブな値は値渡し、
Object(非プリミティブ)な値は参照渡しになる。

jQuery+IEで「selected プロパティを設定できませんでした。未定義のエラーです。 」

| | コメント(1) | トラックバック(0)
jQueryでoption要素を追加した際の諸問題

「selected プロパティを設定できませんでした。未定義のエラーです。 」をgoogleに投げると一件だけヒット。
なんてピンポイントw

症状的にたぶん実行順の問題なので「setTimeout(function () { $('#target').val( value ) },0)」して回避。
(ちなみに、こちらでも$('#target').width();で回避できることを確認)

あと、理由は不明だけど、「alertを入れると直るバグ」は前に経験ある。
(IEのみ。実行順とかの問題?)

無いもの

| | コメント(0) | トラックバック(0)
Windows VistaのSidebar GadgetにSlim Timerとか、Remember The Milkって無いのかな?
特にVista GadgetでReminder系をまったく見ない気がするのは気のせい?

全体的に実用系が弱い気がする>Vista Gadget
あれば便利だと思うけど。。。

jQueryで組む場合

| | コメント(0) | トラックバック(0)
jQueryはselectorがcssなので、elementの指定は楽だけど、
thisを好き勝手置き換えるのでコード自体は組みにくい。
「$('#id1').click($('#id2').submit())」とかできないし。
(「$('#id1').click(function () {$('#id2').submit()})」しないとだめ)

($_+'='+_$)

| | コメント(0) | トラックバック(0)
var $_ = encodeURIComponent($(this).attr('id'));
var _$ = encodeURIComponent($(this).val());
hash.push($_+'='+_$);

ちょっとなごんだ。

「$_」に対の変数で「_$」ってのはいいかも。
仕様上も「_」から変数名開始できるし。

マークアップとJS

| | コメント(0) | トラックバック(0)
うまくマークアップされたhtmlはJSを突っ込みやすい。

JSは「この辺のフォームの値はこっち、この辺の値はこっち」ってのが多いので、うまくマークアップされてると「'#nnn select'はこっち、'#xxx input'はこっち」見たいなコードが書ける。
変にマークアップされてると、入力要素全部にid振って、イベント毎に全部あさってそれぞれまとめるようなことしないといけない。

らくー

Flash Player Update

| | コメント(0) | トラックバック(0)
http://weblogs.macromedia.com/akamijo/archives/2008/03/_20084_flash_pl.cfm

JSの影響はたぶんなさげ。
変則的な呼び出しと、flash7との下位互換破棄だけなので。

続 : call back functionによって動作を変える

| | コメント(1) | トラックバック(0)
call back functionによって動作を変える

Function objectの.lengthで普通にできるし。
まあ、基本的には変わらないけど、こっちのほうがかっこいい!

var each = function (fun) {if ( fun.length != 1 ) var apply = 'apply';return fun[apply || "call"](fun,arguments[1]);};

each( function (a,b,c) { alert(a+' '+b+' '+c) }, [1,2,3] );
#-> alert( '1 2 3' );
each( function (a) { alert(a[0]+' '+a[1]+' '+a[2]) }, [1,2,3] );
#-> alert( '1 2 3' );

prismつかってみた。。。けどやめた

| | コメント(0) | トラックバック(0)
prismを使ってみた。
元々SlimTimer使ってたので、それを外部化したかった。
使ってみた感想は簡単にできるし、リソースも少ないのでかなりお勧め。

が、SlimTimerのHelpページをみると「Bubbles使えよ」って書いてある。
あんまり素性が分からなかったので若干不安だったけど、
せっかくなのでそっちを使ってみる。

結果 : Bubblesいい!

最小化でTaskBarに入ってくれるし、右クリックでSlimTimer用のメニュー出るし、リソースもさらに少ない。
欠点はGreaseMonkey使えないくらいか。

自分の親コードを文字列で

| | コメント(0) | トラックバック(0)
(function () { (function () {console.log(arguments.callee.caller.toString())})() })()

ああ、こうか。

http://0-9.sakura.ne.jp/blog/archives/2008/03/08041235.html

自分自身のコードを文字列で

| | コメント(0) | トラックバック(1)
(function () { (function () {console.log(arguments.callee.toString())})() })()

興味深い。。。
あんまり使い道思い浮かばないけどw

「arguments.caller.toString()
」ができればもう少し使い道もありそうだけど、
Mozillaでは「arguments.caller」がすでに非サポート。

(function () { (function f () {console.log(f.caller.toString())})() })()


これならできるけど、微妙。
まあ、どの道具体的な使い道は思いつかないけど。

Fatal error: Allowed memory size

| | コメント(0) | トラックバック(0)
CentOS 5.1 php 5.1.6で「pecl install json」したらこんなの出た。

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 48 bytes) in /usr/share/pear/PEAR/Registry.php on line 1053
Allowed memory size of 8388608 bytes exhausted (tried to allocate 23 bytes)

ここを元に「@ini_set('memory_limit', '16M');」を「/usr/share/php/pearcmd.php」と(ついでに)、「/usr/share/php/peclcmd.php」の最後に追加したけど直らない。
(念のため「/etc/init.d/httpd restart」もした)

面倒になってあきらめ。本家からpackage落として./configure && make && make installした。
まあ、検証環境だし、uninstallは考えないからいいや。

zshのおせっかい

| | コメント(0) | トラックバック(0)
zshで「ls -la *」でtab押したときに「*」を展開するんじゃなくて
展開候補を一覧表示させる方法がわからない。。。
(「ls -la *」のあと、展開の代わりにC-x gを押した状態にしたい)

この部分だけはbashの方がいいな。

spam bot対策

| | コメント(0) | トラックバック(0)
CAPTCHAは愚策を見て、Wizard Bible WB32の「第1章:SPAMボット対策」を思い出した。
ただ、この方法だとページ自体をUTF-8以外で組む必要があるのでその点はかなり欠点。

とりあえず、私はgoogleのcapchaに10回くらい失敗したので
これ以上読みにくいcapchaにされるとほんとに突破できなくなりそう。

VMware Server 1.0.4 on CentOS 5.1

| | コメント(0) | トラックバック(0)
netinst imageでBusLogicのSCSI選んだら
installerがhddを見つけられず「No Devices Found」って言われた。

いったん落としてhddをIDEで作り直したら成功。

それにしても、何でVMwareってSCSI推奨してるのかな?
(IDEの方が楽なんだけど。。。)

GreasemonkeyでjQuery

| | コメント(0) | トラックバック(0)
from http://d.hatena.ne.jp/brazil/20060821/1156166410
    var j$ = undefined;
( function () {
  var error = false;
  for(var i = 0, lib ; lib = arguments[i] ; i++){
    var name = lib[0];
    var url = lib[1];
    var src = GM_getValue(name);
    
    if(!src){
      error = true;
      GM_xmlhttpRequest({
        method: 'get',
        url: url,
        onload: function(res){
          if(res.status != 200) return;
          GM_setValue(name, res.responseText);
          eval(res.responseText);
          j$ = jQuery.noConflict( true );
        }
      });
    } else {
      eval.call(window, src);
      j$ = jQuery.noConflict( true );
    }
  }
 
  if(error) throw "LackingLibrarySuiteException";
} )( ['jquery.js', 'http://jqueryjs.googlecode.com/files/jquery-1.2.3.min.js'] );
 
これでどこでもjQuery使い放題!

Dashboardをアプリ化

| | コメント(0) | トラックバック(0)
Amnesty Singlesを使ってDashboardを単独アプリ化する。
最初普通にMac OS X 10.5で変換して、まったく何も表示されなくてあせる。

原因はindex.htmlに日本語が含まれていたことのよう。消したら結構動いた。
(JS、CSSには日本語入ってても大丈夫)

ただ、なんか特定のディレクトリ内の画像が格納されない。
まあ、なんか使わなくなりそうなのでもういいけど。

CodeReposで255人目だった!

| | コメント(0) | トラックバック(0)
すごい!(気がする)

CodeReposのはじめ方

| | コメント(0) | トラックバック(0)
近くにコミッターが何人かいるので、頼めばいくらでもやってくれたと思うけど
せっかくなのでコミット権もらった。

と、いうわけでCodeReposの具体的なはじめ方。

1、自分のアカウント名を決める。
ログとか、Trac上で表示されます

2、決めたアカウントのhtpasswdを作る。
こんな感じとかで。
htpasswd -n アカウント名
New password:
Re-type new password:
アカウント名:JhGFmg8uuiz.U

3、表示結果のアカウント部分とコミット権がほしい旨をトップに載ってるメールアドレスへ送る。

4、svnで必要な箇所をインポート(winな方はTortoiseSVNとかお勧め
全部落とすと重そうなので必要な場所だけおとした。

5、修正してコミット。
ログの書き方だけ注意。
全部のログが流れるのでログの先頭に修正対象のファイル名を記述。
lang/lang_name/project_name/target_file.xx: 修正内容を普通に記述

6、どきどきして待つ
修正はすぐTrac上で見える。

備考
・修正内容がたいしたことないならsvkいらないよ!
(svnだけでいいよ!)
・CodeReposにあげるのは怖くないよ!
(最初の反映は結構どきどきしたけど、みんな慣れてるわけじゃない
・とりあえず、手元でsvn管理している公開してもいいコードがあるならアカウントもらおう。
(上げる、上げないはそのあと考えればいいと思うよ!)

勘違い

| | コメント(0) | トラックバック(0)
alert((170).toString(16)) // -> aa
動くね。

http://0-9.sakura.ne.jp/blog/archives/2008/02/29125001.html

このアーカイブについて

このページには、2008年3月以降に書かれたブログ記事のうちプログラムカテゴリに属しているものが含まれています。

前のアーカイブはプログラム: 2008年2月です。

次のアーカイブはプログラム: 2008年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.1