2008年7月アーカイブ

onoverflow

| | コメント(0) | トラックバック(0)
FFのみ
クロスブラウザで使えればfontsizeの変更を感知できそうなんだけど。。。

Object.watch

| | コメント(0) | トラックバック(0)
var o = new Object;
o.watch('hoge', function () {console.log(1)});
o.hoge = 2;
> 1

IE系不可。ただ、HTML Elementに対してならsetExpression使うと代用可能かもしれない。

ごみのように見えて ごみのような価値のものは ごみである

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

BubblesのProxy設定

| | コメント(0) | トラックバック(0)
Bubblesの設定はIEの設定に依存する。
検証目的でProxy設定するとそれに引きずられて
Bubblesの動作も変わる。不便。。。

Test.BuilderのbeginAsync、endAsync

| | コメント(0) | トラックバック(0)
JSANのTest.Builderは非同期実行の検証ができる。
beginAsyncendAsyncで指定時間内に実行がすんでいればOK
(いつ終わるかわからないテストは検証できない)

skypeチャットの文字入力中表示

| | コメント(0) | トラックバック(0)
skypeチャットの相手が文字入力中かどうかわかる機能はUIとして非常に優れていると思う。

widowsアプリだから実装できた部分はあるかもしれないけど、チャットアプリでは非常に便利な機能だと思う。

世の中の嫌なことの大半はメシ代だけでは解決しない

| | コメント(0) | トラックバック(0)
パンプキンシザーズ

恐れられるほど強からず、侮られるほど弱からず

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

眉を顰められ「でしゃばり」と罵られても「いい人ね」と言われるよりよっぽどましだ

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

IE6でselectタグ(プルダウン)がz-indexを無視する対策

| | コメント(0) | トラックバック(0)
from IE6でselectタグ(プルダウン)がz-indexを無視する対策

IE6のselect boxがdivとかswfの上に「乗る」問題はiframe使っても回避可能らしい。
ただ、これが問題になるのって、blog partsとかだからやはりvisibility = "hidden"かも。

IE6のためだけにiframeに入れるとかめんどいし。

mysqlでdelete時のjoin

| | コメント(2) | トラックバック(0)
mysqlでは「DELETE a FROM a_table AS a INNER JOIN b_table AS b ON (nnn) WHERE xxx」できるらしい(他のDBMSでもできるかも)

FROMでASを指定した場合、DELETEの後のテーブル名はASで指定したものを記述する。

「DELETE a_table FROM a_table AS a INNER JOIN b_table AS b ON(nnn) WHERE xxx」
こんな感じでテーブル名を直接しているすると
「ERROR 1109 (42S02): Unknown table 'a_table' in MULTI DELETE」
とかいわれる。

//--------20101124追記

DELETEとFROMのあいだのテーブル名は必須。

FROMでASを使うならDELETEとFROMのあいだのテーブル名はASで指定したテーブル名でなくてはならない。

「DELETE a_table FROM a_table AS a INNER JOIN b_table AS b ON (nnn) WHERE xxx」はできない。

「DELETE a_table FROM a_table INNER JOIN b_table ON (nnn) WHERE xxx」はOK。

Firebird の最新動向

| | コメント(0) | トラックバック(0)
http://www.ospn.jp/osc2007.db/

「Firebird の最新動向」が興味深い(昔ちょっと使った記憶がある)。
(「PostgreSQL Updates」(前半)も面白かったけど)

まだがんばってたんだ。Windows、組み込みでは結構いいらしい。

MySQLの最適化

| | コメント(0) | トラックバック(0)
http://slashdot.jp/~Oliver/journal/26710
http://txqz.net/blog/2006/12/13/0943

若干古いし基本的なところも多いけど、
EXPLAINの読み方とか、
HAVINGはindex使わないとか、
ORDER BYに指定された列で条件指定するとソート済みなので早い(not nullの場合のみ)とか
は興味深かった。

mysqlでupdate時にjoin

| | コメント(2) | トラックバック(0)
mysqlはupdate aaa inner join bbbとかするらしい。

postgresqlはupdate aaa set nnn = bbb.nnn where aaa.id = bbb.id見たいな感じだったはず。

mysqlの方が標準っぽいな(postgresqlでもできるんだろうか?)

array_key_exists

| | コメント(0) | トラックバック(0)
phpはarray_key_existsで指定のkeyがあるかどうかは判断できても配列に対して警告なく新しいkeyを追加することができない。

if (!array_key_exists($array, 'key')) $array['key'] = '';
// -> Undefined index:

$.ajaxSetup

| | コメント(0) | トラックバック(0)
$.ajaxSetupで$.ajaxの初期設定を上書きできる。

あちこちで同じような呼び方するならいっそこれで。

でも影響範囲でかそう。標準でこんなのあっていいのかな?pluginとか動かなくなりそうなきがする。

CocProxy修正

| | コメント(0) | トラックバック(0)
CocProxy修正(勝手に)。主にwindowsでも使えるように。

あと、proxy.rbの放置されっぷりが哀れだったので救済。

swfobject version 2.0

| | コメント(0) | トラックバック(0)
swfobject version 2.0を使ってみた。

getSWFHTMLが使えないのでblog partsでは不便。

あとcreateSWFは指定IDの中身を「置き換える」。
(version 1系のwriteでは指定IDの中身に「追加する」)

でも、getObjectByIdは便利。

ブラウザに埋め込んだ Flash ムービーにキーボードフォーカスを与える

| | コメント(0) | トラックバック(0)
from ブラウザに埋め込んだ Flash ムービーにキーボードフォーカスを与える

swfにfocusをあてるには普通に$('#swf_id').focus()で良い模様。

タブキーでのフォーカス移動をFlash内に制限する

| | コメント(0) | トラックバック(0)
from タブキーでのフォーカス移動をFlash内に制限する

<param name="SeamlessTabbing" value="true|false">でFlash内でtabを押したときの動作を変えられる。

true(規定値)はtabでflash領域から出て行ける。
falseはtabでflash領域から出て行けない。
(flashの中でfocusが回る)

ライン:53 文字:3 エラー:オブジェクトがありません。 の対処法

| | コメント(0) | トラックバック(1)
from 6. How do I fix a "Line 56: Out of Memory" error, when unloading a page in Internet Explorer using earlier versions of Flash Player 9 and multiple SWFs using ExternalInterface?

ライン:53
文字:3
エラー:オブジェクトがありません。
コード:0
URL:http:example.com/swf_file.swf

上記のエラーはswfobject使うか、onbeforeunload時に__flash_unloadHandlerと__flash_savedUnloadHandlerを空のfunctionで上書きせよとのこと。

Bubbles on Vista

| | コメント(0) | トラックバック(0)
Bubblesがversion upしてvistaで動くようになっていた。
すばらしい。

ただ、proxyとかの設定をIEと共有してるらしくてIEの設定かえるとこっちも変わる。

気持ちはわかるけど、別に指定させてほしいなぁ。。。

FoxyProxyとCocProxy

| | コメント(0) | トラックバック(0)
FoxyProxyとCocProxyを使えば、「このURIだけCocProxyで置き換え」とかできる。

CocProxyを通る回数が減るし、認証経由の不安定さも消える。

かなりいい。

あと、IEでも指定アドレスをProxyから除外できる。
ただ、指定アドレスのみProxyを経由させる設定はできない模様。

$('head noscript')

| | コメント(0) | トラックバック(0)
<head>
<noscript>
<meta http-equiv="Refresh" content="1;URL=http://~~~;charset=~~">
</noscript>
</head>

jsが使えない場合にエラーページへ飛ばす方法。
お手軽だけど、文法的にはNG

object tagの使い方

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

meta http-equiv="Refresh" URL=javascript

| | コメント(0) | トラックバック(0)
<meta http-equiv="Refresh" content="1; URL=javascript:document.forms[0].submit();">

IE6や、FF2はこんなことができるらしい(IE7ではできない)

$('head object')

| | コメント(0) | トラックバック(0)
DTD Strictではhead内にobjectがかけるらしい。
headでswf読むとかできる?

できるならJSから使うだけみたいなのはそこがいいかも。
ただ、paramはなかった。どうすんだろう?

ExternalInterface.addCallbackをapplyするコードをもうちょっとよくしたい

| | コメント(0) | トラックバック(0)
http://la.ma.la/blog/diary_200702152107.htm

ExternalInterface用のJSコード読めば、この辺のコードももっとちゃんと書きなおせるかも。

DMM -> DMS, TKY -> WGS

| | コメント(0) | トラックバック(0)
度分表記(DMM)を度分秒(DMS)に変換するコードと、日本測地系を世界測地系に変換するコードを書いてみた。

かなり適当だけど、PHPのものは無かったので一応あげてみる。

書いてる本人もよくわかってないので要注意(Perl版の移植)

No driver has been registered to handle connection type

| | コメント(0) | トラックバック(0)
  [SQLException]
  No driver has been registered to handle connection type:

symfonyでこんなエラーが出てDBに接続できなくなった。。。
やむなく手元の検証環境を破棄。

イベントネームスペース

| | コメント(2) | トラックバック(0)
$('a').bind('mouseover.name_space', fn);
$('a').unbind('mouseover.name_space', fn);

便利だけど、undocumentedなので注意。

$.bind

| | コメント(0) | トラックバック(0)
$('a').bind('mouseover mouseout', fn);

//複数イベントの同時設定

大規模サイトでJS使う場合

| | コメント(0) | トラックバック(0)
jsもuriからaction呼び出すようなコントローラみたいなのあったほうがいいのかな。

ExternalInterface用__flash__* method

| | コメント(0) | トラックバック(0)
ExternalInterfaceを使っている状態でFirebugのDOM tabでwindow object見ると__flash__*が見える。
あとで中覗いとこう。

'string'.methodでAOPは無理?

| | コメント(0) | トラックバック(0)
var hoge = 'huga';
hoge.substr = function () { console.log('foo') };
hoge.substr();
// -> huga

プリミティブ型は扱いが違う?

window.open時のwindow size

| | コメント(0) | トラックバック(0)
http://developer.mozilla.org/ja/docs/DOM:window.open

> >引数 features が使用され、サイズの特性が定義されなかった場合は、
> >新しいウィンドウの寸法は、最も最近に表示されたウィンドウの
> >寸法と同じになります。

ポップアップブロックされているかどうか判断

| | コメント(0) | トラックバック(0)
http://developer.mozilla.org/ja/docs/DOM:window.open

>> >>どのようにすれば、ウィンドウがポップアップブロッカーに
>> >>よってブロックされていることを伝えることができますか?
> >Mozilla/Firefox と Internet Explorer 6 SP2 の組み込み
> >ポップアップブロッカーでは、window.open() の戻り値を調べる
> >必要があります。ウィンドウが開くことが許可されなかった
> >場合の戻り値は、null です。

window.openのURIに空文字列

| | コメント(0) | トラックバック(0)
http://developer.mozilla.org/ja/docs/DOM:window.open
> >url に空文字列を与えることは、ウィンドウのロケーションを変えずに、
> >その名前によって開いたウィンドウの参照を得るための手段です。

var win1 = window.open('http://example.com', 'example');
var win2 = window.open('', 'example');
console.log(win2.location);
// -> http://example.com

あと、window.openの第3引数はスペース不可

ノートンのポップアップブロック用JS

| | コメント(0) | トラックバック(0)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33716&forum=28&8

ノートンはポップアップブロックのために勝手に「window.open = SymWinOpen」こんなコードを突っ込むらしい。
で、SymWinOpenはこんな感じの動作らしい。

> >window.openの最初の引数が空の文字列で、3つ目の引数には
> >window.openの引数として正しくない内容が含まれている場合に、
> >ノートンがポップアップをブロックすることがある。

SymWinOpen.toString()してみたい。

window.openのラグ

| | コメント(0) | トラックバック(0)
http://developer.mozilla.org/ja/docs/DOM:window.open
> > リモート URL は、すぐにはロードされないことに注意してください。
> > window.open() が戻り値を返すとき、ウィンドウは、
> > 常に about:blank を含んでいます。URL が実際にフェッチされるまでには
> > 猶予期間があり、現在のスクリプトブロックが実行を終えた後に
> > 開始されます。ウィンドウの生成と参照されるリソースの読み込みは、
> > 非同期に行われます。

へー。
window.openのあとはすぐsetTimeout(function () {},0)すると
表示が速いかも。

blogparts向けjQueryの読み込み方

| | コメント(0) | トラックバック(0)
if (!name_space) var name_space = undefined;
(function () {
    (load_lib())(function ($) {
        //この中は$(function () {/* ここと一緒 */})
    })();

    function load_lib () {
        //jQuery core
        var jQuery = window.jQuery.noConflict( true ), $ = jQuery;
        //jQuery Plugin
        return $;
    }
});

これでjQuery objectを外部にさらさずに読み込み可能。
jQuery.noConflict( true )はすでに読み込み済みの
jQuery objectを保持したまま自分を削除するので
複数jQuery読み込んでも大丈夫。
これで外から見えるのはname_spaceだけ。

とにかくベイジアンフィルタにかけてみる

| | コメント(0) | トラックバック(0)
RSSで取得した内容を、読んだ、読まないで分類し、ベイジアンフィルタにかける。
->読みたい記事だけ分類可能?

amazonの新書をベイジアンフィルタに。。。

Plaggerでメールとして送信して、POPFileで受信してフィルタすればOK?

varbinary

| | コメント(0) | トラックバック(0)
MySQLでviewのselect句にいろんな型を混ぜて記述するとvarbinaryという型になる。

基本的にはvarcharと一緒?

中で使ってる型をCASTとかで統一すると直る。

firebugで追加されるmethod

| | コメント(0) | トラックバック(0)
Firebugは標準で$0以外にも$('id')とか、$$('CSS Selector')とか、$x('xPath')とかも使えるらしい。

それ以外にもこんなことも可能。

・cd('window')で対象windowを移動できる。

・inspect(Object[, tabname])で適当なタブでObject inspect

・keys(Object),values(Object) // ->objectのkey,valueが全部取れる。

・monitor,debugで記述されているfunction監視。

・HTML tabのLog EventsはmonitorEvents(object [,type])でscriptからも実行可能(profile()もscriptから可能)

・copy()でクリップボードへコピー(出力が非常に長いときとかいいかも)



Consoleのコマンドライン内から実行したときに時たまconsole.logが使えないのは何でだろう。。。?

try catch if else

| | コメント(0) | トラックバック(0)
case DO:
        do {
            try {
                execute(n.body, x);
            } catch (e if e == BREAK && x.target == n) {
                break;
            } catch (e if e == CONTINUE && x.target == n) {
                continue;
            }
        } while (getValue(execute(n.condition, x)));
        break;

catch部分が面白い。ifで条件分岐できるのか。。。

shwoModalDialog

| | コメント(0) | トラックバック(0)
shwoModalDialogはIE,FF,safariで使える。
IE6さえ無視すれば実用?

document.elementFromPoint

| | コメント(0) | トラックバック(0)
document.elementFromPoint(0,0)
//->左上の要素が取れる。

drag開始からdrag終了までの範囲を認識して、四角い領域内の要素が取れればwindowsのファイル選択みたいな取り方ができる?

$.method

| | コメント(0) | トラックバック(0)
var func = function () { alert(func.value) };
func.value = 'func value';
// -> func value

jQueryの$を.でも、()でもべるのがよくわからなかったけど、こうやってるのか。

ただ、このままだと自己参照が入っててメモリリークしそう。

onSizeChangeあるといいかも

| | コメント(0) | トラックバック(0)
DOMAttrModifiedとか以下のなんかを使えば、
文字サイズの変更をイベントとして取れるかも。
.onSizeChangeとか実装できたらいいな。

http://esw.w3.org/topic/List_of_events

この辺のイベントが楽しそう。

| | コメント(0) | トラックバック(0)
IE
layoutcomplete outofsync propertychange readystatechange repeat resize
resume resync reverse rowenter rowsdelete scriptcommand scriptletevent
seek syncrestored selectionchange selectstart trackchange unload
visibilitychange

FF
beforeunload broadcast DOMAttrModified DOMAutoComplete DOMPopupBlocked
ls-load ls-progress PluginNotFound pageshow overflow overflowchanged
popuphidden popuphiding popupshowing popupshown PopupWindow reset resize
underflow unload windowZLevel xforms-moz-hint-off

safari
readystatechange resize search textInput zoom khtmlHorizontalmousewheel

ブルートフォースでイベント登録しまくっていろいろ操作しながら試せば変なイベントとか取れる?

初めて二分探索を実装

| | コメント(0) | トラックバック(0)
JSでここまで速度気にしたことなかったので。

blog partsで使えるjQuery Tips

| | コメント(0) | トラックバック(0)
//パラメータ読み込み
var param = {};
$.each($script.attr('src').split('#').pop().split('&'), function () {
    var kv = (this + '').split('=');
    param[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);
} );

//初期値設定
var options = $.extend({
    'direction' : '0'
}, param);

//IE6以下のブラウザでswfの上に乗るtagを消す
$('object, embed, iframe, select')
    .not('#'+settings.main_id+', [name="'+settings.main_id+'"], :nodden')
    .addClass(settings.hide_class)
    .css('visibility', 'hidden')
;

//消したのを戻す
$('object, embed, iframe, select')
    .filter('.'+settings.hide_class)
    .removeClass(settings.hide_class)
    .css('visibility', '')
;

//ExternalInterfaceの呼び方
$('#settings.jack_id').get(0).method_name();

$.inArray

| | コメント(0) | トラックバック(0)
$.inArrayはIE7で正しい結果を返さない(正しくヒットしない)

数値のみなので、(','+list.join(',')+',').match(','+num+',')して回避。

mysqlのバグ?

| | コメント(0) | トラックバック(0)
mysql> select status_flag AS status, status_flag AS status_flag from
table_name where ID = nnnn;
+--------+-------------+
| status | status_flag |
+--------+-------------+
|      n |           n |
+--------+-------------+
1 row in set (0.00 sec)
//ふつー

mysql> select distinct status_flag AS status, status_flag AS status_flag
from table_name where ID = n;
+-------------+-------------+
| status_flag | status_flag |
+-------------+-------------+
|           n |           n |
+-------------+-------------+
1 row in set (0.00 sec)
//おい!

mysql> select distinct status_flag AS status, status_flag AS status_flag
from table_name limit 1;
+--------+-------------+
| status | status_flag |
+--------+-------------+
|      n |           n |
+--------+-------------+
1 row in set (0.00 sec)
//こっちはふつー?

mysql>
おかしい。明らかにおかしい。
なんでdistinctとかwhereつけるだけでasの名前が無視されるんだ?

$.data(this, 'name_space', {})を初期化しつつ実行

| | コメント(0) | トラックバック(0)
var name_space = 'function_name';
elements.each(function() {
    ( function (v) {
        return ([$.data(v.get(0), name_space, {}), v])[1];
    } )( $(this) )
        .event_name();
    ;
});

日本語正規表現

| | コメント(0) | トラックバック(0)
IE7は「'あああ'.match(/[ぁ-ん]/)」でエラーはく。
(「正規表現内に]が見つかりませんでした」とかいう感じの)

「'あああ'.match(/[ぁ-ん ]/)」はOK
(「'あああ'.match(/[ぁ-んa-z]/)」もOK)

文字コードは当然UTF8
また、マッチ自体もなんか変。safariも微妙。FFは普通。

面白いswitchの使い方

| | コメント(0) | トラックバック(0)
switch (c){
    case 63232: case 63276: case 33: case 38: if (this.hiding){
this.show(); } else { this.focusPrev(); this.set(); } return false;//[↑]キー

    case 63233: case 63277: case 34: case 40: if (this.hiding){
this.show(); } else { this.focusNext(); this.set(); } return false;//[↓]キー

    case 63234: case 39: this.prevRegion(); return false;//[→]キー

    case 63235: case 37: this.nextRegion(); return false;//[←]キー

    case 13: case 27: this.hide(); return false;//[esc]キー or [enter]キー

    case 9: return true;//[tab]キー

    //default: elm.value=c;return false;
}

マイナーなevents

| | コメント(0) | トラックバック(0)
Javascript - Event compatibility tables

DOMNodeInsertedとか、DOMNodeRemovedとか、
DOMSubtreeModifiedとかあるらしい。
IEじゃ使えないけど。

List of events - ESW Wiki

IEのイベントとかどうやって調べたんだろう?
compositionstart、compositionend、contextmenuとかは結構面白そう。
(mouseenterってなんだ?)

$.data

| | コメント(0) | トラックバック(0)
$.dataが超便利な気がすることに今日気づく。

ただ、Internalsなんだけど、これ勝手に使っていいのかな。

RegExp.$1

| | コメント(0) | トラックバック(0)
Core JavaScript 1.5 Reference:Deprecated Features

RegExp.$1とかはJavaScript1.5では非推奨とのこと。やったね。

Stringの参照渡し

| | コメント(0) | トラックバック(0)
var t = new String('aaa');
(function (v) { v = v.replace(/a/, 'b') })(t)
console.log(t);
// -> ["a", "a", "a"]

'string'はプリミティブだけど、new String('string')はObjectじゃないのかな?

文字列の参照渡しできるかと思ったけど。。。

Apple JavaScript Coding Guidelines for Mac OS X

| | コメント(0) | トラックバック(0)
Apple JavaScript Coding Guidelines for Mac OS X > JavaScriptのベストプラクティス

//初期化関数を開放したい
var foo = function(){
    // この関数を動作させるコード
    delete foo;
}
window.addEventListener('load', foo, false);

newを使うときはdeleteも。
var obj = new Object;
obj = {'key':{/* でかいobjct */} };
obj = null;
はobj自体は開放するけど、obj.keyは開放されない。

疑問
初期化関数は無名関数なら気にしなくていいんじゃないかな?
newされたものはGCの対象にならない?

jQueryの「$」

| | コメント(0) | トラックバック(0)
jQueryの「$」はfunction ()だけど、「$.」でmethodも呼べる。

よく考えたらどうやってるんだろう?

$.unique

| | コメント(0) | トラックバック(0)
$.unique([1,1,1]);
// -> [1, 1, 1]
$.uniqueはelementの重複を削除する。
通常の配列は対象外。
$.eachとか$.mapのならびにあるけど要注意。

普通の配列をuniqにしたいならこんな感じで
var tmp = {};
$.grep([1,1,2,2,3,3,4,4], function (i) { return tmp[i] ? !tmp[i]++ : tmp[i] = 1 });
// -> [1, 2, 3, 4]

functionを定義時に一回実行したいとき。

| | コメント(0) | トラックバック(0)
var func = (function () { console.log(1); return arguments.callee; })();

jQueryってCSS SelectorじゃないのKANA?

| | コメント(0) | トラックバック(0)
jQueryのサイトにもbasic XPathって書いてある。
でも、XPathは(検索してみた範囲では)別ものだと思うんだけどなぁ。。。

JSerもCSSいじらなきゃだめですか。そうですか。

| | コメント(0) | トラックバック(0)
コーディング後のデータは必要な要素が表示された状態が多いので、それをJSで消そうとすると読み込み直後の一瞬は表示されていや。

でも、JSerがコーディングいじるとそこだけ明らかに汚くなる。
(直接「style="display:none"」したり)

この辺は先に初期状態をMEと打ち合わせたほうがいいのかな。。。
(読み込み前にformいじってもらうとまずいので上に透過gifはっといてほしいとか)

form tagのnameにuri書く

| | コメント(0) | トラックバック(0)
form tagのactionにAPIのPathを指定すると、JSが読み込まれる前にsubmitされたときにAPIの返り値がそのまま表示される。

で、そうならないようにこんなの考えてみた。
<form action="#" name="/json/が/返る/api/path">
</form>
$(function () {
    $('form[action="#"]').each(function () {
        $(this).attr('action', $(this).attr('name'));
    });
});

nameはCDATAなのでURI入れても大丈夫なはず。

ただ、これでも$(function () {})実行前に$('form').submit()が呼ばれると
location.hrefに飛ぼうとする。

「どこにも飛ばない指定」はできない?(form tagにonsubmit書くしかない?)

本日のひどいコード

| | コメント(0) | トラックバック(0)
('\\1000\\').replace((RegExp('\\\\', 'g')), '$$')
->"$1000$"

('1\\0\\0\\0\\').replace((RegExp('\\\\', 'g')), '$$$&')
->"1$\0$\0$\0$\"

symfonyのviewでhashをgetRawしたい場合

| | コメント(0) | トラックバック(0)
Action
    $this->nnn = array('key' => '<p>htmlを表示したい</p>');
View
    $nnn->getRaw('key');

safariのwindow.onload

| | コメント(0) | トラックバック(0)
win safari3.1は$(function () {})とwindow.onloadが等価ではない。
$(function () {ここ})で画像を読み込むようなライブラリ使ったら、safariだけ50%くらいの確立で表示されなかった。
(キャッシュを消すと表示される確率が上がった)

そこでこんなコード。

($.browser.safari ? $(window).load : $).call($(window), function () {
    new hogehoge($('#id').get(0));
});

これで解決。

try finally

| | コメント(0) | トラックバック(0)
function (func) {
    return function () {
        try {
            func.apply(this, arguments);
        } finally {
            return false;
        }
    }
}

と、いうwrapper作っとくと便利かも。
(必ず別の処理に飛ばすeventを設置したいときとか)

と、思ってたけど、そんなときのpreventDefaultらしい。
$($0).click(function (e) {e.preventDefault();
    console.log('click!');
})
見たいな感じで。でも、もうちょっときれいにできないかな。。。

prototype.js式ブラウザ判定の欠点

| | コメント(0) | トラックバック(0)
ブラウザ互換を取るためにブラウザごとの未定義methodを定義しすぎるとするとprototype.jsでブラウザ判定にミスるかも。

trigger時とbind時の値の受け渡し方法

| | コメント(0) | トラックバック(0)
$($0).trigger('click', ['val1','val2']);
$($0).bind('click', {key : val}, function (env) { console.log(env.key) });

//triggerは単純にapplyしてるだけ?bindみたいにhashで受け渡ししたい。。。

ある要素がfocusを受けているかどうか知りたい。

| | コメント(0) | トラックバック(0)
http://www.codingforums.com/showthread.php?t=19503

if (typeof document.activeElement == "undefined")
    document.addEventListener("focus", function(event) {
        document.activeElement = (event.target.nodeType == Node.TEXT_NODE) ?
event.target.parentNode : event.target;
    }, false);


:hiddenに注意

| | コメント(0) | トラックバック(0)
$(':text') == $('input[type="text"]')
$(':password') == $('input[type="password"]')
$(':checkbox') == $('input[type="checkbox"]')
$(':hidden') == $('input[type="hidden"], [style*="display:none"]')
// -> :hiddenだけinput tag以外も返って来る可能性があるので注意

not(this)

| | コメント(0) | トラックバック(0)
$('a').click(function () {
    $('a').not(this).remove();
});
//よく考えたらthisと比較できるってすごいかも。

自分で自分の書き換え

| | コメント(0) | トラックバック(0)
var func = function () {
    console.log(1)
    func = function () { console.log(2) }
}
func() // -> 1
func() // -> 2
func() // -> 2

過去の自分

| | コメント(0) | トラックバック(0)
http://0-9.sakura.ne.jp/perl/modules/

久しぶりに自分のPerlコード読んだ
「$#_ == 1 ? 1 : 0」とか「split /\[\%(.+?)\%\]/so, $target, 2;」に
違和感を感じるようになってた。

HTMLElementのprototype拡張

| | コメント(0) | トラックバック(0)
HTMLDivElementとかHTMLInputElementとかの.prototypeを拡張したい。
$('#id').get(0).originalMethod()とかしたい。


ちょっと調べてみたらExtJSが似たようなことしてた。

Stringとかも独自のString Class作って拡張してる。
(元のStringとは別objectなので他のライブラリと混ぜても安心)

ただ、そのせいか非常に重いのでJSでここまでするのはやりすぎなのかも。

任意のvalueのtextを取得

| | コメント(0) | トラックバック(0)
$('<select><option></option><option value="1">ここが選択される</option></select>').val('1').find(':selected').text();
// -> ここが選択される

stringとnumberによって動作が違う

| | コメント(0) | トラックバック(0)
$('<select><option>ここが選択される</option><option value="1"></option></select>').val(1);
$('<select><option></option><option value="1">ここが選択される</option></select>').val('1');

名前空間を汚さずにselectorを使いまわす

| | コメント(0) | トラックバック(0)
(function (id) {
    var $id = $(id).find('select').click(function () {
        console.log($id);
    })
})('#id');

jQuery select box

| | コメント(0) | トラックバック(0)
$($0).find('select[value=""]')
// ->現在の選択項目が<option value="" />のselectを選択

$($0).find('select').val('nnn')
// ->selectの内容を<option value="nnn" />に変更

jQuery objectを混ぜる。

| | コメント(0) | トラックバック(0)
var select = $.makeArray($('select'));
select.push($.makeArray($(':image')));
var select_image = $(select);

jQuery objectを混ぜる。

(ださい。。。もっといい方法あったら教えてください)

t.substring is not a function

| | コメント(0) | トラックバック(0)
$($0).filter([name=""]);
とかすると「t.substring is not a function」と言われる。

まあ、こっちが悪いんですが。。。

内部のDSLと外部の言語の言語仕様が近いとミスったときに気づきにくい

win safariのselect box

| | コメント(0) | トラックバック(0)
win safariはselect boxがひとつのwindowとして作られている。
(active windowに張り付くmp3 player使ってるとselect field開いたところに張り付く)

何もヒットしないCSS selector

| | コメント(0) | トラックバック(0)
$(',') // -> []
何もヒットしないCSS selector
(「$(' ')」でもいいかも)

複数画面で同じような処理してるけど、ある画面だけは処理が必要ない場合とか?

IE7でtableのtbody

| | コメント(0) | トラックバック(0)
IE7はtableに対してのappendでtbodyがついたり、つかなかったりする。
<table>
<thead><tr></tr></thead>
<tbody><tr></tr></tbody>
</table>
$('table tbody>*').remove();
$('table tbody').append('<tr></tr>');
$('table tbody').append('<tr></tr>');
$('table tbody>*').remove();
//-> 1 == 一番上の一個しか消えない。他は見えてるけどアクセスできない

$('table tr:not(:first), table tbody').remove();
$('table').append('<tr></tr>');
$('table').append('<tr></tr>');
$('table tr:not(:first), table tbody').remove();
//もしかしたらうまくいかなかったのは別の理由かも。
//でもこれが無難だと思う。

firefoxのtext event

| | コメント(0) | トラックバック(0)
$0.addEventListener('text', function () {console.log(1)}, true);
$($0).bind('text', function () {console.log(1)});
FFのみ日本語変換中のkeyPressが取れる。

ただし、押したときに呼ばれるだけで「なにを押したか」が取れない。
(keyCodeが0になる)

当然$($0).text(function () {})では設定できない。
($0の中に(function () {}).toString()が入る)

eventのfilo

| | コメント(0) | トラックバック(0)
$('#formApiMansionSearch').submit(function () {
    setTimeout(通常処理が終わった後に呼び出したいfunction, 0);
});

$('#formApiMansionSearch').submit(function () {
通常処理
});

処理の順番上先に設定するけど、後で呼ばれたい場合。

jQuery使うようになってからの悩み

| | コメント(0) | トラックバック(0)
JSを書いてるときどこまでDOM構造に依存すべきかなやむ。

MEがどう書き換えるかを想定しながらSelector書くとMEとの作業分担がすごい楽になると思う。
(.cssのCSS Selector見ながらやるのがいいのかな?)

beforeのCSS Selector表現

| | コメント(0) | トラックバック(0)
$('#このタグの').before('<div>これを</div>').find('ここで指定したい');
場合、どうするんだろう

append、wrap、insertならその後のfindで指定可能だけど、beforeは無理かも。
(自分の上に位置する兄弟要素ってSelectorだけじゃ無理っぽい)

Traversingを使うなら.prevでできるか。

find('~:first, ここ')みたいな感じでは指定できないのかな?

サーバサイド、JSでの設定の共有

| | コメント(0) | トラックバック(0)
設定ファイルをJSON化して、サーバサイドからもJSからも同じファイルを読むと設定の共通化が簡単にできていいかもとか思った。
(公開する必要がある設定だけ。文言とか)

外部から普通にアクセスできるファイルをサーバから設定として読むのはちょっと怖いけど。

$(適当な文字列の入った変数).text()

| | コメント(0) | トラックバック(0)
適当な文字列のtextだけがほしくて$(適当な文字列の入った変数).text()してたけど、これだと適当な文字列の中に「>」とかのCSS Selectorっポイものとか、空文字だった場合(=$(document))に微妙な感じになりそう。

やはり無難に「.replace(/<\/?[^>]+>/gi, '');」(from prototype.js)がいいか。

IE6のselect box

| | コメント(0) | トラックバック(0)
IE6はselect boxがhtml elementではなく、windows componentで作られているとかでz-indexの指定が効かない(背景にできない)

ブログパーツで全画面ジャック時にも同じ問題があったので、そのときはselect、iframe、embed、objectはvisibility: hiddenしてた。

ただ、IE6はいったんvisibility: hiddenすると、その要素のExternalInterfaceが呼べなくなることに最近気づく。
どうしろってんだ?

SELECT DISTINCT ALL

| | コメント(0) | トラックバック(0)
$c->setDistinct(); // SELECTにDISTINCTを追加

$c->setALL(); // SELECTにALLを追加

// -> 同時指定でエラー SELECT DISTINCT ALLになる

一度$c->setDistinct()したらもう取り消せないかも。

COUNT(distinct id)

| | コメント(0) | トラックバック(0)
SELECT status, COUNT(status) - (COUNT(id) - COUNT(distinct id)) AS status_count FROM VIEW_NAME GROUP BY STATUS_FLAG

VIEW_NAMEはいろいろJOINしてIDが重複した状態を想定。

そのままCOUNT(status)すると、重複したぶん多い数が返る。

そこから(COUNT(id) - COUNT(distinct id))で重複した分の数を引く。

IEのbutton

| | コメント(0) | トラックバック(0)
IEは<button value="ここと">ここ</button>を区別する方法がない。

$('button').attr('value') == $('button').text() == $('button').val();

FFは普通に区別できる。それともjQueryの問題?

criteria::clearSelectColumns

| | コメント(0) | トラックバック(0)
$c->clearSelectColumns();
$c->addAsColumn('max', 'MAX(id)');

で、「SELECT *, MAX(id) FROM TABLE_NAME」が発行される。
(当然エラー)

//-> Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

clearSelectColumnsでselect columnsが空になって、
select columnsが空だとas columnsがあっても*をつけるから。

何か適当にaddSelectColumnすればいいけど、
addAsColumnだけのSQLを発行することはできないかも。

サイ本の誤記

| | コメント(0) | トラックバック(0)
サイ本(第5版)の誤記みっけ。

334ページ
「getElementByName」(「s」が足りない)->「getElementsByName」

あるある

IEのbutton

| | コメント(0) | トラックバック(0)
IEは<button value="ここと">ここ</button>を区別する方法がない。
$('button').attr('value') == $('button').text() == $('button').val()
FFは普通に区別できる。それともjQueryの問題?

文字列の末尾がほしい

| | コメント(0) | トラックバック(0)
文字列の末尾がほしい場合

var a = '123';
a[a.length - 1];
//上記はブラウザ依存。FFはOK。IEは不可。

a.substr(-1);
//上記はECMA Script標準だけど、IEサポートせず

a.slice(-1);
//IE、FFともにOK

css selectorの@

| | コメント(0) | トラックバック(0)
たまに見る「$('div@[id="nnn"]')」の「@」の意味がよくわからない。

後方互換?

今日のjQuery

| | コメント(0) | トラックバック(0)
$($0).click(function (env) {
    console.log(env.target);
});

でイベントの発生元が取れる。

また、env.targetは拡張されていてクロスブラウザ対応。やったね。

SQL Formatter

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

割といい感じ。CSEよりは。

Criteria::ISNULL

| | コメント(0) | トラックバック(0)
http://propel.phpdb.org/trac/wiki/Ja/Users/Documentation/1.3/Criteria
> >NULLと同等(Equality)

nullがほしい場合、Criteria::ISNULLはCriteria::EQUALと同じだから
「$c->add('column_name', null);」で比較しろとのこと。

でも、SQLではnull = nullはtrueじゃないんだけど
値がnullなら勝手にCriteria::ISNULLに置き換えてるんだろうか?

便利な気もするけど知らないと詰まるかも。

jQuery.eachをLDR eachで置き換える夢を見た。

| | コメント(0) | トラックバック(0)
そのうちやりたい

PHPでun camel case

| | コメント(0) | トラックバック(0)
print(substr(strtolower(preg_replace('/(?![^A-Z])([A-Z])|(?=[A-Z])([A-Z])/','_$1','MyFancyCamelCasedWordAAA')),1));
// -> my_fancy_camel_cased_word_a_a_a

「uncamelcase」で検索しても出なかったので。

車輪の再開発かも。でも、車輪作るの楽しい。

xpath jquery

| | コメント(0) | トラックバック(0)
「xpath jquery」をgoogleに投げると
XPath for jQuery以外の話でもかなりの数が引っかかる。
(「Xpathを記述できるフレームワーク」として紹介されてたり)

素のjQueryってCSS Selectorしか使えないはずだけど。。。
(xpath-jquery使えば可能)

私が勘違いしてる?

今日のひどいコード

| | コメント(0) | トラックバック(0)
var v=[];
'key1=1&key2=2'.replace(/key1=(\w+)/,function (i,i) {
    v.push(i)
}).replace(/key2=(\w+)/,function (i,i) {
    v.push(i)
});
console.log(v); // -> ["1", "2"]


//from jQuery(1.2.5)
(function( first, second ) {
    var a, i = -1;
    while (a = second[++i]) first[first.length] = a;
    return first;
})([1,2,3], [4,5,6]);
// -> [1, 2, 3, 4, 5, 6]


//上の応用
var a, i = -1, tt = [1,2,0,4,5];
while (tt[++i] != undefined) console.log(tt[i]);
// -> 1 2 0 4 5

Firebugショートカット一覧。

| | コメント(0) | トラックバック(0)
Firebugショートカット一覧。

Ctrl+Shift+Lとか非常に使いたいが、
うちはLiveHttpHeaderがサイドバーに開くだけ。。。

ショートカットの優先順位変えるのってどうやるんだろう?
(最後に入れたものがとる?)

今日のひどいコード

| | コメント(0) | トラックバック(0)
var param = 'key=value1,value2', ar = param.split('='), key = ar[0], val
= ar[1].split(',')
console.log(val);// -> ["value1", "value2"]


//'0'でボタン系の制御をしたい
$($0).attr('checked', !!('0' - 0));


//要素の値をクリアして''を返したい
return $($0).val('').val();


//最初の引数を無視したい
'0-0'.replace(/-(\d+)/, function (v,v) { return v + 1 });

モバゲータウンのソース

| | コメント(0) | トラックバック(0)
svn updateの合間にモバゲータウンのソースをちょっと見てみた。

・Template Engine高速って言っても機能少ない気がする。
(TTと比べて)

・xsはかなり多いけど、pmは結構少ない。
(でも依存moduleは少ないように見える)

・書き方がわりとベタ。
(ネストが深かったり、条件分岐が多かったり。でも結構読みやすい)

読みやすいのでさっくり読めますが、そんなに得るものはなかったかも。
(携帯の機種依存部分は役に立つかも)

今日のひどいコード

| | コメント(0) | トラックバック(0)
var obj = function () {};
obj.prototype = {};
obj = new obj();
//classを作ってると見せかけてobjectを作ってるだけ。


if ( true ) {
    func1();
    func2();
}

true && [ func1(), func2() ];
//false || dieはよくやるけど。。。


var y = 1;
if ( y == ( y = 2 ) ) false;
if ( ( y = 2 ) == y ) true;
//評価順によって結果が変わる


$('label[for="' + $(this).attr('id') + '"]').text();
//エラー表示用にlabelをとってみたり

breakとsyntax errorとifとelse

| | コメント(0) | トラックバック(0)
while(len--) array[len] ? break : array.pop();
// -> syntax error

while(len--) if (array[len]) break else array.pop();
// -> syntax error

while(len--) if (array[len]) { break } else array.pop();
// -> ok

微妙に納得いかねー

JSで配列をコピーする方法

| | コメント(0) | トラックバック(0)
var big_array = [0..10000];
var copy_array = [];

for( var i = 0; i < big_array.length; i++ ) {
    copy_array.push(big_array[i]);
}
//遅いし重い

var max_length = big_array.length;
for( var i = 0; i < max_length; i++ ) {
    copy_array.push(big_array[i]);
}
//まだまし

var max_length = big_array.length;
copy_array[max_length - 1] = undefined;
for( var i = 0; i < max_length; i++ ) {
    copy_array[i] = big_array[i];
}
//もっとまし。したの方法はループがないので、ループ中に一緒に何か処理したい場合これかも

copy_array = Array.apply(null,big_array);
//いい

copy_array = big_array.concat();
//いい

ベンチとってくれる方募集。

javascriptの配列表現

| | コメント(0) | トラックバック(0)
{ '1' : 1, '2' : 2, };
はエラーになるのに
[ 1, 2, 3, ]
はエラーにならない。
(IE7,FF2で確認。FF2は最初の例もエラーにならないけど、仕様上はだめ)

どっちかにせいよといいたい。

jQuery.mapで入れ子配列

| | コメント(0) | トラックバック(0)
$.mapで入れ子になったの配列の配列がほしいときは[]でくくって返す。

var count1 = 5, count2 = 5, array1 = [];
array1[count1 - 1] = undefined;
$.map(array1, function (v, i) {
    var t = [];t[count2 - 1] = undefined;
    return $.map(t, function (v, f) { return f });
});
//->[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1,
2, 3, 4]

var count1 = 5, count2 = 5, array1 = [];
array1[count1 - 1] = undefined;
$.map(array1, function (v, i) {
    var t = [];t[count2 - 1] = undefined;
    return [$.map(t, function (v, f) { return f })];
});
//->[[0, 1, 2, 2 more...], [0, 1, 2, 2 more...], [0, 1, 2, 2 more...],
[0, 1, 2, 2 more...], [0, 1, 2, 2 more...]]

try cache

| | コメント(0) | トラックバック(0)
こないだ使った他所製のJSのライブラリは
独自イベント内をtry catchでくくってるっぽかった。

error出なくてしばらく気づかなかった。
気持ちはわかるけど。。。

zshのcd

| | コメント(0) | トラックバック(0)
zshはcd -[tab]でcdの履歴表示。さすが。

MySQLのTEXT型

| | コメント(0) | トラックバック(0)
MySQLのTEXT型は約60KB以上は保存できない(で、勝手に切り捨てる)
それ以上の文字数を保存するにはMEDIUMTEXT(最大1.6GB)かLONGTEXT(最大
4.2GB)を使う。
違いは格納できる容量+3バイト必要(MEDIUMTEXT)か+4バイト必要(LONGTEXT)か。
(TEXTは+2バイト必要、TINYTEXTは+2バイト)
BLOB型とTEXT型の違いはソートと比較時に大文字と小文字を区別するか否か。
(BLOBはする。TEXTはしない)

http://oshiete1.goo.ne.jp/qa1596880.html
ただ、LONGTEXTを使うならmax_allowed_packetも変えること。

http://dev.mysql.com/doc/refman/4.1/ja/blob.html
TEXTにINDEX張ったり、ORDER BY、GROUP BYしたいなら
SUBSTRINGで固定長に変える。

TEXT系はDEFAULT指定できない。

http://www.rottel.net/imbe/4819
MySQLの文字列検索はREGEXPが早いらしい。
(LIKEやInStrよりも)

http://karasu.net/blog/537
LIKEは一部バージョンで検索漏れが出るうわさ。

CentOSでSELinuxを無効化する方法

| | コメント(0) | トラックバック(0)
# perl -pi 's/^SELINUX=.+/SELINUX=disabled/' /etc/selinux/config && reboot
CentOSがようやくまともに使えるようになった。よかった。

htmlとjsの対応はO/H mappingとはいわないのか?

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

「html属性名が」JavaScriptのキーワードと同じになる場合は、「html」という
文字列を先頭に追加します。」

$('label').attr('for') == $('label').get(0).htmlFor;

ただし、「class」除く(「class」は「className」になる)

延々JSを書いた後の感想

| | コメント(0) | トラックバック(0)
PHPってテンプレートエンジンとして使うととっても楽!
JSでDOM考えながら中入れ替えるのとは比べ物にならない。。。

ブラウザ互換も気にしなくていいし。

Symfonyのview.ymlでcss読み込み時にmediaを指定する方法。

| | コメント(0) | トラックバック(0)
Symfonyのview.ymlでcss読み込み時にmediaを指定する方法。

stylesheets:    [/shared/css/print: { media: print }]

WinMerge+TortoiseSVN

| | コメント(0) | トラックバック(1)
WinMerge+TortoiseSVNの組み合わせがようやく文字化けしなくなった。
よかった。。。本当によかった。。。

document.writeに複数の引数

| | コメント(0) | トラックバック(0)
document.write( 'hoge', 'huga' );// -> hogehuga
//へー

VMware Server on Vista

| | コメント(0) | トラックバック(0)
VMware Server 1.0.5をVista SP1に入れたら
ゲストOS起動後、メモリの使用率が100%になってOSごと落ちました。

やむなくVMware Playerを落としてそっちで対応。
VMware入れちゃったし、AHKやめてmayuにしようかな。。。


この辺の方法ならいけるのかな?
VistaでVMWare Serverを使う

functionの意味

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

「...function も var も、変数を宣言するキーワードです...」

なんとなく理解してたけど、はっきり言ってもらってすっきりした。
(ってか、「functionも変数宣言」って言い切っちゃっていいんだ)

scrollIntoView

| | コメント(0) | トラックバック(0)
elem.scrollIntoView()でelemが見える位置までブラウザをスクロール。

今日のjQuery

| | コメント(0) | トラックバック(0)
<input type="radio">は「$(':radio:checked').val() == ''」になるのに、
<input type="checkbox">は「$(':checkbox:checked').val() == 'on'」になる。

なぞ。
(<input type="checkbox" value="">は「$(':checkbox:checked').val() == ''」になる)


jQuery使ってると、JSで操作するだけのフォームはnameつけなくなる。
$('select:first')とか、$(':checkbox:checked')とか、
$('select').not(this)とかするので。

method override

| | コメント(0) | トラックバック(0)
obj.method = (function (old) {
    var self = this, arg = arguments;
    return function () {
        old.apply(self, arg);
        //...
    }
})(obj.method);

jQuery tips

| | コメント(0) | トラックバック(0)
$('form').submit(function () {
    try { to_submit.apply(this, arguments); }
    catch (e) { console.log(e); }
    finally { return false; }
});
ajaxでformを送信する場合いいかも。
finallyがまともに使えそうな珍しい事例。

$('button').click(function () { $(this).toggleClass('selected') })
いままで「.toggle( fn, fn )」ってやってました。
CSSの切り替えだけならこっちの方がいい。

var $this = $(this);
this -> jQuery Objectのコストってどのくらいなんだろう。。。

$("input").map(function(){ return $(this).val() }).get().join(", ")
興味深い。。。引数なし「get()」で「$.makeArray()」してくれるのか

DOM Range

| | コメント(0) | トラックバック(0)
DOMのRangeあたりがよくわからない。
使えれば便利そうなんだけど。。。
あと、document.styleSheetsらへんとか。

jQueryの覚え方

| | コメント(0) | トラックバック(0)
jQueryは癖が強いけど、一貫性はあるので覚えやすい。
これ自体が別言語と考える。
(jQueryの中にJSが入っていると考える)

豊富な言語仕様を別の概念で統合するのは
日本語プログラム言語と似てるかも。
(覚えることは多くても推測できるのでわかりやすい)

今日のライフハック google編

| | コメント(0) | トラックバック(0)
・任意の一字「-」
Java-Scriptで「JavaScript」も「Java Script」も一致

・グルーピング「()」
ORと同時使用。

・OR
「(JavaScript OR JScript)」でいずれかの一致。
「(JavaScript OR JScript) (click OR OnClick)」とかもいける。
どの単語がより一般的か確認したり、
(ORでつなげた中で一番上に見たものが一般的)
複数条件を同時に検索したりできて便利。
(「(JavaScript OR JScript) (click OR OnClick)」を普通に検索すると8通り必要)

・code search
http://www.google.co.jp/codesearch
プログラムは記号が多くて検索しにくいので、こっちで検索。
普通に検索しても正規表現での検索なので注意。
(「()」とか「?」とかは要エスケープ)

・GM
「Google のラジオボタン押したら検索」
http://a-h.parfe.jp/einfach/archives/2006/0106171150.html
地味に便利。

・NOT
単語の前に「-」で除外。

・""
複数単語を一単語として検索。
エラーメッセージ等を検索するとき便利。
http://www.google.co.jp/advanced_search

FirebugのLog Events

| | コメント(1) | トラックバック(0)
FirebugでEventが追跡できることを知った。
これはすごい。。。
いままで、「この要素で起こってるイベント全部見たいなー」とか思っても
いちいちJS書くの面倒で別の方法考えてたんですが
これがあればリファレンス見るより早いです。
見方は「HTML tab」でイベントを見たい要素を右クリック
「Log Events OR イベントを記録」からいけます。
(出力は「Console tab」)
ただ「(Log Events OR イベントを記録) firebug」で検索しても
あんまりヒットしない。最近入った機能なのかな?
(tenjin.webのFirebugの講習会資料くらい)
http://tenjin-web.jottit.com/workshop/firebug

ちなみに、tenjin.webの第2回はGreasemonkeyだったそうです。
いいなー
http://d.hatena.ne.jp/kiwanami/20080501#1209657184
http://tenjin-web.jottit.com/workshop/greasemonkey
もっとGMをまともに使えるようにしたい。
(中でjQueryが普通に使えたりしたい)

リダイレクト時のURI

| | コメント(0) | トラックバック(0)
サーバからリダイレクトされた場合、
local.hrefはブラウザが要求したURLが、
document.URLにはリダイレクト先のURLが格納される。

現在選択中のselect boxの表示値を取る方法

| | コメント(0) | トラックバック(0)
(<option value="ここじゃなくて">ここがほしい</option>)

$($0).find('option:selected').text()

pngfix

| | コメント(0) | トラックバック(0)
IE6でのpng表示。

jQueryPngfixがあったので使ってみたけど、imgの上にspan入れるのでDOMが書き換わって結構面倒。
(idとかが引き継がれない)

また、ライブラリによってはspanじゃなくてdivだったりとかするのでselecterが書きづらい。

断線

| | コメント(0) | トラックバック(0)
イヤホンが断線したので急遽半田で修理。
絶縁はセロテープ。熱収縮チューブほしいなぁ。。。

# ln -s /var/log /_var

| | コメント(0) | トラックバック(0)
# ln -s /var/log /_var

便利!(「/var/log/」がtab補完されないので)

本を読んでて思うこと。

| | コメント(0) | トラックバック(0)
実際その本を読んで得られることより、
得た知識を共有できることの方が重要かも。

すごい人は大抵本読んでる。

「最近どんな本読んでる?」に返せることは非常に重要。