2009-11-13 [jQuery] アコーディオンするプラグイン作った

作った後に知った。jQuery UI accordionがあることを…。
<ul id="accordion_example"> <li> <span>2009年</span> <ul> <li>1月</li> <li>2月</li> <li>3月</li> <li>4月</li> </ul> </li> <li> <span>2008年</span> <ul> <li>1月</li> <li>2月</li> <li>3月</li> <li>4月</li> </ul> </li> </ul> <script type="text/javascript"> jQuery.fn.accordion = function(options){ var main = $(this); var itemSelector = options.item || '> li'; // mainからのselector var childSelector = options.child || '> ul'; // itemからのselector var triggerSelector = options.trigger || '> span'; // itemからのselector var showAnimation = options.show || function(e){ e.slideDown(500); } var hideAnimation = options.hide || function(e){ e.slideUp(500); } main.find(itemSelector).each(function(){ var item = $(this); item.find(triggerSelector).click(function(){ var child = item.find(childSelector); if (child.is(':visible')){ hideAnimation(child); }else{ hideAnimation(main.find(itemSelector + ' ' + childSelector + ':visilbe')); showAnimation(child); } }) }); main.find(itemSelector + ' ' + childSelector).hide(); return this; } $('#accordion_example').accordion(); </script>
2009-10-27 [PHP] apache経由で、ブラウザで開くスクリプト

昔作ったやつ。行き場がないのでとりあえずここにコピペ。
「あふ」に登録して使ってた。
とにかく手っ取り早く動かしたかったので動くかどうかよくわからんコードです。
<?php $httpd_conf = "C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf"; $browser = "opera"; $host = "localhost"; $file = file($httpd_conf); foreach ($file as $line){ if (preg_match('/^DocumentRoot\s+(.*)$/', $line, $match)){ $root = tq($match[1]); }else if (preg_match('/^Alias\s+(\S*?)\s+(.*)$/', $line, $match)){ $alias[tq($match[1])] = tq($match[2]); } } function tq($str){ return str_replace('"', '', trim($str)); } if (!(count($argv) > 1)){ echo 'less argument' . "\n"; show_message('less argument'); exit(); } array_shift($argv); $file = array_shift($argv); $file = str_replace('\\', '/', $file); $url = null; if (strpos($file, $root) === 0){ $i = strlen($root); $path = substr($file, $i); $url = "http://$host$path"; }else{ foreach ($alias as $r => $fp){ if (strpos($file, $fp) === 0){ $i = strlen($fp); $path = substr($file, $i); $url = "http://$host$r/$path"; } } } if (!$url){ show_message("not entry path: $file"); exit(); } $cmd = "$browser \"$url\""; //echo $cmd . "\n"; exec($cmd); function show_message($str){ $shell = new COM('WScript.Shell'); $shell->popup($str, 0, "toUrl"); } ?>
2009-08-18 [JavaScript][jQuery] jQueryでIE8でtrのvisibleがおかしい

<table id="target">
<tr>
<td>hoge</td>
<td>moge</td>
<td style="display:none">sage</td></tr>
</table>
<script type="text/javascript">
$(function(){
var str = '';
$('#target tr').children().filter(':visible').each(function(){
str += $(this).text();
});
alert(str);
});
</script>
"hoge moge" が正しいんだけど、IE8では "hoge moge sage" になる。
:visibleはwidthとheightが0以上であればvisibleだと判断してるんだけど、
IE8ではtrがhiddenでもwidthに0以上の値を返すかららしい。
1.3.3では直るっぽい。
2009-07-30 [JavaScript] ブラウザで戻るを押しても戻らないようにする

2009-06-17 [Programming]floatの怪

不思議。
<?php $a = 0.4 + 2 / 10; $b = 0.6; var_dump($a); var_dump($b); var_dump($a == $b); var_dump($a === $b);
float(0.6) float(0.6) bool(false) bool(false)
0.1 や 0.7 のようなシンプルな小数であっても、 それを内部的な二進数表現に変換する際には、どうしても多少精度が落ちてしまいます。 その結果、不思議な結果を引き起こすことがあります。たとえば、 floor((0.1+0.7)*10) の結果はたいてい 7 となるでしょう。おそらくは 8 を想定していらっしゃるでしょうが、そのようにはなりません。 これは、(この計算結果の) 内部的な値が 7.9999999999... のようになっているからです。
こうなる理由のひとつとして、「有限小数に変換できない分数がある」 という事実があります。たとえば 1/3 を小数で表そうとすると 0.3333333. . . となります。
よって、小数の最後の桁を信用してはいけませんし、 小数が等しいという比較を行ってはいけません。より高い精度が必要な場合には、 任意精度数学関数または gmp 関数を代わりに使用してください。
http://jp.php.net/manual/ja/language.types.float.php
1/3とかはダメな感じがするけど、2/10でもダメなんだな。
まてよ、他の言語ではどうだろう。
class CompareFloat{ public static void main(String[] args){ double a = 0.4 + 2d / 10d; double b = 0.6; System.out.println(a); System.out.println(b); System.out.println(a == b); } }
0.6000000000000001 0.6 false
あ、javaでもだめなのか。じゃこれはプログラミング界の常識なのかな?
ってかなんか3年に1度ぐらい同じこと調べてる気がするw
