2008/09/07(日)
ファイル名の先頭がピリオドで始まるファイルが不可視になるのは周知だけれど、通常の命名でも不可視になる。
仕事でZIP等の圧縮ファイルを受け取って、ファイルサイズが大きいにも関わらず、伸長してフォルダを開けると空っぽ[0項目]になっていて、首を傾げることが何度かあった。
それで、ふと思いついて、ターミナルから確認したら、実はちゃんとファイルが存在していることがわかった。
送り主(Windows ユーザ)も意図して不可視にしたわけではないだろうから、そうなってしまう原因はよくわからないのだが、不可視のままだと通常使用するアプリケーションで開けないものもあるので、この属性を解除しなければならない。
解除(不可視属性を無効化)には、SetFile コマンドを使う(Developer Tools がインストールされている必要あり)。ターミナルから、下記コマンドを実行すれば、ファインダーで表示されるようになる。
SetFile -a v [InvisibleFileName]
Filed under: Other,Reference | タグ: Mac
Tail-Lagoon @ 10:44
|
PageUp
2008/08/25(月)
*:first-child+html #Example {
/* for WinIE7 */
margin-top: -1px;
}
*html #Example {
/* for WinIE6 \*/
margin-top: -1px;
/**/
}
\ ← Backslash Entity
Filed under: Reference,ブラウザ | タグ: CSS
Tail-Lagoon @ 16:39
|
PageUp
2008/08/21(木)
WordPress が 2.6 から 2.6.1 にマイナーバージョンアップした。
⇒ http://ja.wordpress.org/2008/08/17/wordpress-261-ja/
以下、単なる備忘録。
Filed under: CMS | タグ: WordPress
Tail-Lagoon @ 20:42
|
PageUp
2008/07/10(木)
ユーザビリティについては、これまで経験的にしか学んでこなかったのだが、何かそういう知識が一冊にまとまった本があるといいなと思っていた。で、ちょっと捜してみたら、やっぱりあるものだね(既に1年ほど前に出版されている)。ざっと目を通してみたけど、これはなかなか役立ちそうだ。
で、紹介がてら下記に目次を付しておく。(この本の目次、第4章のあたりが誤って本文とカテゴリ分けがずれていたので、勝手に訂正してある。最近の出版物って校正が甘いものが増えている気がするよ。)
この目次、基本的にこのままユーザビリティのチェックシートとしても使えると思う。
Filed under: Web Design | タグ: usability
Tail-Lagoon @ 20:56
|
PageUp
2008/07/09(水)
半角のシングルクォートやダブルクォートを記事本文中に使うと、表示時に勝手に変換されるなというのは以前から気づいていたのだけど……半角ハイフンを2個連続で使う(デクリメントの表現 -- )と、— (–) に変換されるとは、今日始めて気づいたよ。
なので、半角ハイフンを連続させる時は - を使わないといけないのだ。
ちなみにシングルクォートの実体参照(エンティティ)は ' 、ダブルクォートは " となる。
どれもたまにしか使わないと、すぐに忘れてしまうんだよなあ。
Filed under: CMS | タグ: entity, WordPress
Tail-Lagoon @ 18:01
|
PageUp
なんとなく、作ってみた。ただし、コード中のコメントにも書いたとおり、接頭記号 978 だけでなく、979 が増えてきたら、たぶん無効になるのだろう。
ただ変換するだけなら既に WEB 上にそういうサービスはいくつも見つかる筈なので、わざわざこんなもの作る必要はないのだけれど、ちょっと自分のページの中で(amazon へのリンクを作成するために、当面の間だけでも)使いたかったので、PHP で書いてみた。……まだきちんと検証はしていないので、間違いがないとはいえない。
Filed under: Sample | タグ: ISBN, PHP
Tail-Lagoon @ 13:07
|
PageUp
2008/07/08(火)
以下は、恥ずかしながら、つい最近知りました。
文字列の変数は、実は各文字を一文字ずつ配列として取り出すことができる。呼び出す時は、左(文字列の頭)からのバイト数を添え字にする。
例 :
$str = ’012345678′;
echo ‘$str[0] = ‘ . $str[0] . ‘<br />’;
echo ‘$str[1] = ‘ . $str[1] . ‘<br />’;
echo ‘$str[2] = ‘ . $str[2] . ‘<br />’;
echo ‘$str[9] = ‘ . $str[9] . ‘<br />’;
結果 :
$str[0] = 0
$str[1] = 1
$str[2] = 2
$str[9] =
(注 : バイト単位で分解されるので、マルチバイトでは使用できない)
Filed under: Reference | タグ: PHP
Tail-Lagoon @ 20:17
|
PageUp
2008/07/06(日)
CakePHP の設置時、.htaccess でつまずいた。
ローカルでは問題なかったのに、レンタルサーバにアップしたら、500エラーが発生。mod_rewrite が使えないせいかと疑ったのだが、しかし WordPress で使っているのだから、mod_rewrite は使用できるはずだ。
そこでそれぞれの .htaccess を比較すると、CakePHP のそれには Rewritebase の指定がなかったため、これを追加してみたら、あっさり動いた。
(他にも、FTP からは同階層に見えている公開エリアと非公開エリアのフルパスが実は全く違う(※1)ということを知らず、それに気づくまでにもかなりてこずったのだが、これはレンタルサーバの仕様およびドキュメント不足のせいなので、別の問題)
いつかまた同様の問題に出くわすかもしれないので、忘れないようメモしておく。
(webroot)/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase / # この行を追加
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
(※1) 自分のためにメモっておくが、公開エリアと非公開エリアについて、フルパスでは全く違うのに、相対パスでは参照可能なのだ。不思議。シンボリックリンクを置いているのだろうか?(でもそれなら、フルパスでだってリンクにアクセス可能なのでは?)……もともと別の箇所で相対パスで使用してうまくいっていたから、ますますフルパスが違うなど思いもよらなかったのである。思い込みってよくないね。しかしどういう仕組みなのだろう?
Filed under: FrameWork,Reference | タグ: Apache, CakePHP, htaccess
Tail-Lagoon @ 16:24
|
PageUp
2008/06/30(月)
CakePHP では htmlspecialchars() を h() と短縮できるのだが……、ちょっと気になることがあって、該当するソースを確認すると、下記のようになっていた。
cake/basics.php
function h($text) {
if (is_array($text)) {
return array_map('h', $text);
}
return htmlspecialchars($text);
}
配列を渡すと、その値をすべて処理してくれるのは便利だけど、htmlspecialchars() はデフォルトのまま使っているから、シングルクォートは変換されない(ENT_COMPACT になる)。これはちょっと危険な気がする。といって、コア部の cake/basics.php を直しても、バージョンアップのたびに対処しなきゃいけないし、むしろ忘れてしまう可能性大。
ではやはり h() は使わず htmlspecialchars($str, ENT_QUOTES, 'UTF-8') ときちんと書くのが一番安全かな。でもかなり長ったらしいから、毎回面倒だ。本当は app/ の中のどこか適当な場所に、改良した h() が定義できればいいんだろうけど、でもどこに置けばいいのかな?
と調べていたら、app/config/bootstrap.php に書き込めばいいらしい。なるほど、このファイル、今後もいろいろ利用価値がありそう。覚えておこう。
function hsc($text, $quoteStyle=ENT_QUOTES, $encoding='UTF-8') {
if (is_array($text)) {
return array_map('hsc', $text, $quoteStyle, $encoding);
}
return htmlspecialchars($text, $quoteStyle, $encoding);
}
Filed under: FrameWork,Reference | タグ: CakePHP
Tail-Lagoon @ 12:54
|
PageUp
[Q] : 配列を、マージではなく、単純に加算したらどうなる?
[A] : 右(下記例の $e)の配列要素のうち、左(下記例の $a)の配列に存在しないキーの要素を追加する。 重複するキーは左の配列の元のまま(上書きされない)。
$a = array('a','b','c','d');
$e = array('e','f','g','h','i');
$Res = $a + $e;
var_dump($Res);
------------------------- 結果 -------------------------
array(4) {
[0]=> string(1) "a"
[1]=> string(1) "b"
[2]=> string(1) "c"
[3]=> string(1) "d"
[4]=> string(1) "i"
}
実は最初、要素数が同数の配列でテストしていた(上記例の $e[4] がなかった)ので、加算は不可でエラーも出ないものなのだと誤認してしまった! それはまったくの間違いで、キー名を変えるなり、上記のように要素数を変えるなりしてみればわかるとおり、重複しないキーの要素が、ちゃんと追加される。
テストする仕方がまずいと、このような思い込みをしてしまうことがあるのだと反省(いや、それ以前に、マニュアルもきちんと確認しておけよ、ってことでもある)。
参考 : PHP マニュアル ⇒ 配列演算子
Filed under: Reference | タグ: PHP
Tail-Lagoon @ 08:01
|
PageUp