kyo: 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突っ込む)けど、
大手がこういうひどいことするとこっちが迷惑するんだよなぁ。。。
もうちょっと考えて行動してほしい。

絵書きとプログラマ

| | コメント(0) | トラックバック(0)
プログラミングのスピードを上げる方法3

「感覚的にプログラムする」ってのはまったく同意。
設計とは別だと思うけど、先に外側(class設計とか)と、内側(DB設計とか)を考えて後は適当。

これは前に人が絵を描くのを見て、その感じで組むようにしてる。
そのほうが楽しいし、楽しそうな感じがするから。


ただ、「スポーツとかだったら、どんな三流のプロでも絶対に論理的に考えてから体を動かすとかして無いと思う。」という点に関しては、スポーツは過去の経験から推測できる部分が多いけど、プログラムはその部分は非常に少ないせいもあると思う。
サッカー未経験者でも物を蹴った経験はあるし、野球未経験者でもものを振り回した経験はある。
でも、プログラムはこれに類する経験は非常に少ないと思う。
(数学とかなら近いのかな?)

Re:どんな企業でも Web2.0化して利益を倍増させるコロンブスの卵が発見された!!

| | コメント(0) | トラックバック(0)
どんな企業でも Web2.0化して利益を倍増させるコロンブスの卵が発見された!!

うちの会社も日報や週報をメールする習慣はあるけど、「多く読まれてる、又は支持されてる人気記事のランキングがわかる」、「人気記事だけ読めば、読むのに時間は取られない」この2点は社内blogならこそだなぁ。

ただ、何でもメールでもらったほうが、読むのに手間がかからないのもある。
「個人がメール送信でblogに書き込み」->「システムがメールで告知」->「全員が良い内容を評価(リンククリック)」->「システムがランキングつくってメールで告知」って感じだと良いかも。

雨が降るまで雨乞いの儀式を毎日続ける100%の成功術

| | コメント(0) | トラックバック(0)
でも、自分の力で雨を降らすには雨乞いを続けるしかない。

夢を語る対価は実現することでしか贖えない

| | コメント(0) | トラックバック(0)
銃夢から

Content-Script-Type

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

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

持っている物を手放すことによってのみ次の物が手にはいる

| | コメント(0) | トラックバック(0)
ただし、次に手に入るものが必ずしも手放したものより良い物とは限らない。

知識についても然り。

初成分献血

| | コメント(0) | トラックバック(0)
週末に初成分献血行ってきました。

やっぱ結構時間かかる。入って出るまでに1時間半くらい。
しかも結局必要なもの抜いた後戻してもらうからあまり調子変わらないし。
(体温は下がったけど)

400mlの方が早いし調子が変わった感じがするからいいな。
2週にいっぺんできるのはいいけど。

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

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

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

静岡DBMS

| | コメント(0) | トラックバック(0)
080316_1804_001.jpg

静岡でDBMSって店見つけた。
輸入おもちゃ店らしい。
ストレージとかは売ってなかった。残念。

| | コメント(0) | トラックバック(0)


顔と認識したw
サイドバーへの乗せ方がわからないのでメイン記事として。

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(非プリミティブ)な値は参照渡しになる。

スケジュール

| | コメント(0) | トラックバック(0)
スケジュールを立てるのは今の自分だが、スケジュールを実行するのは未来の自分。
未来の自分は今の自分と違うので、大抵スケジュール通りには行かない。

何かをやるのに「やったことがない」以上の理由はない

| | コメント(0) | トラックバック(0)

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
あれば便利だと思うけど。。。

mouse調子悪い

| | コメント(0) | トラックバック(0)
clickのつもりがdragになってる場合がある。

またタッピング(だっけ?)かなー

こてと半田はあるから、またスイッチ買ってきて修理しようかな。

読書

| | コメント(0) | トラックバック(0)
本を読むときは携帯と付箋が必須。
本読んでる途中で気になった内容は携帯でメール、読み直したい場所には付箋を貼る。

気になった内容や読み直したい場所を覚えておかないといけない状態だと集中できない。

jQueryで組む場合

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

ものを買う

| | コメント(0) | トラックバック(0)
最近できるだけ安物は買わないようにしている。
高いものはそれだけで満足感が高いし、大抵の場合物がいい。

安物を買っていい物が見つかるまでそれでまかなうこともできるけど、
たとえ安物でもいったん手に入れるといいものに買い換えることはほぼ無い。
とりあえずのものでもあれば用は足りるのでいいものを探そうという気にならないし、
いい物があってもすでにあるものを捨ててでも買うことは無い。

「いい物がほしい」と思うだけで、物が減って片付けが楽。

($_+'='+_$)

| | コメント(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使えないくらいか。

FPSボンバーマン

| | コメント(0) | トラックバック(0)
すげー怖いと思う。

爆弾で開ける道を発見。
道をあけるため爆弾置いて物陰に隠れる。
数秒後背後で爆風が起こる。
道が開いたと思ったらその先には敵。
あわてて爆弾置いていったん引くも、その爆風で敵を見失う。
おかしいと思ったその瞬間、どこかからかの敵の爆風で死亡。


絶対買う。3個買って配る。たとえXBoxでも本体ごと配る。

プロとは

| | コメント(0) | トラックバック(0)
成果を約束することである。

客商売ではなくても、自分に対して成果を約束するときもある。
たとえば、いつ商品ができるか分からない芸術家でも、
自分が必要とする以上のペースで結果を出さないと暮らしていけない。
これは未来の自分に対して結果を約束してる。

もし今非常に大きな報酬を得る仕事をしていても、
それが今後に通じないならプロとはいえない。

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

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

ああ、こうか。

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

The GOAL2より

| | コメント(0) | トラックバック(0)
Web制作 - 高いか安いか、ではない

「マネージャーは原価に対して適切なマージンを乗せたものが正しい市場価値だと信じている」

The GOAL2では上の言葉が一番印象に残った。
この方法では競合他社との価格競争に巻き込まれるとまずい。
(何でまずいかとかは書いてあった気がするけど忘れた)

で、この方法から逃れる方法としては、適切な市場の分割が有効。
(もちろん他にもあると思う)
市場の分割の例として、忙しい時期は高くて、暇な時期は安かったり、エコノミークラスとファーストクラスを分けている航空会社を例に挙げていた。

う~ん。また読みたくなってきた。

http://0-9.sakura.ne.jp/blog/archives/2007/07/02021023.html

週末の行動

| | コメント(0) | トラックバック(0)
清水港まで自転車で往復6時間。
でも、広すぎて何を見に行ったのか自分でもわからない。
とりあえずその辺で売っていたEXTREAME Pringlesを買ってくる。

太平洋はあんまり海のにおいがしませんでした。

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

| | コメント(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の方が楽なんだけど。。。)

耳栓、アイマスクで寝る

| | コメント(0) | トラックバック(0)
http://d.hatena.ne.jp/amachang/20080218/1203356544

十日間くらい続けてみたけど、あんまり変わらないなぁ。
ただ、前から真っ暗&静かじゃないと寝れないので、元々そんなに悪い環境じゃなかったのかも。

最初は目覚ましが聞こえないと朝おきるのが不安だったけど、
耳栓してても普通に聞こえる。耳栓ってすごい。

少なくとも気になって早く起きることは無い。

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には日本語入ってても大丈夫)

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

ありのまま 今 起こった事を話すぜ!

| | コメント(0) | トラックバック(0)
あ...ありのまま 今 起こった事を話すぜ!

『収納家具を買いに行ったと思ったら
     いつのまにか山の頂上にいた』

な... 何を言ってるのか わからねーと思うが
おれも 何をされたのか わからなかった...



大きな地図で見る

実際にはこの辺。すげー疲れた。。。

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

CodeRepos

| | コメント(0) | トラックバック(0)
とりあえずアカウント申請してみる。