1月 29

起動ディスクをCarbon Copy Clonerを使って外付けのディスクにバックアップしている時に気づいた現象。

なぜかボリューム直下の”home”というフォルダが、Finderから見えない。バックアップコピーに失敗してるかと思いきや、Terminalから/Volumes/外付けHD/にいき、lsしてみたところ、ちゃんとhomeフォルダは存在する。

しかも、

$ open home

とやれば、ちゃんとFinder上で開ける。その開いた状態でcmd + iをしてファイル情報を見ても問題ない。というか、Finder上では可視/不可視の設定ってできないしね。

ls -l で表示される結果をよくよく見てみると、

drwxr-xr-x@   6 hoge  staff   204B  9  3 10:51 home/

と、パーミッションの隣に、なにやら見慣れるアットマークが。あれ?こんな記号、あったっけ?と思い調べてみると、

OSXの拡張属性、@(アットマーク)付きファイル

とのこと。たしかに、ls -la@としてみると、

drwxr-xr-x@   6 hoge  staff   204B  9  3 10:51 home/
com.apple.FinderInfo  32B

上記Blogでは、この拡張属性を消せばいいと書いてあるが、なんかしっくりこないので、追記にあるように、SetFileコマンドを使ってみる。

まず、SetFileと対になる(?)GetFileInfoを使う。

$ GetFileInfo home
directory: "/Volumes/backup/home"
attributes: aVbstclInmedz
created: 05/22/2009 11:13:54
modified: 09/03/2009 10:51:44

この、attributesというのがキモ。attributesの説明は、SetFileコマンドのヘルプか、manをみるとよろし。要するにそれぞれの記号がファイルの属性を表している。このうち、Vのみ大文字なので、manualによると、V = invisible つまり、不可視フラグが立ってるということである。

これを、SetFileコマンドを使ってhomeディレクトリに対し、可視フラグを設定するには、

$ SetFile -a v home

でOK。(つまり、V = 不可視設定、v=可視設定)

なんつーか、1つのファイルに対して、複数方面からの設定やらフラグやらが設定しており、非常にややこしいですな。Macのファイルシステムは。

Popularity: 3% [?]

written by ANN

12月 29

年明けから本気だす為に、WEB制作に便利なチートシート(Cheat Sheet)のまとめです。主に日本語版かつPDFで入手できるものを集めました。日本語版が見つからないものは、非日本語版も掲載しています。

1.CSSのチートシート

from CSS Cheat Sheet 日本語版 | textdrop

2.正規表現のチートシート

from 正規表現 Cheat Sheet 日本語版 | textdrop

3.PHPのチートシート

from PHP Cheat Sheet 日本語版 | textdrop

4.MySQのチートシート

from 漢(オトコ)のコンピュータ道: MySQL Cheat Sheet 1.0

5.SEOのチートシート

from SEO基本技術のチートシート(トラの巻)を作ってみた | Web担当者Forum

6.WordPressのチートシート

from WordPress Help Sheet 日本語版 | textdrop
※その他WordPressの開発用のさまざまなチートシート→WordPressチートシートいろいろ・SEOとかテンプレートタグとか – かちびと.net

7.mod_rewriteのチートシート

from mod_rewrite Cheat Sheet 日本語版 | textdrop

8.Subversionのチートシート

from Subversion Cheat Sheet 日本語版 | textdrop

9.Gifのチートシート

from Git Cheat Sheet 日本語版 | textdrop

以下、英語版です。

10.HTML5のチートシート

from HTML 5 Cheat Sheet (PDF) – Smashing Magazine

11.jQueryのチートシート

from jQuery Cheat Sheet
jQueryは日本語版のチートシートが無かったけど、いずれ誰か作るだろう。とりあえず jQuery 1.3.2 日本語リファレンスがあれば充分。

12.htaccessのチートシート

from the jackol’s den » htaccess Cheatsheet
※htacdessのチートシートの日本語版はどっかにあった気がするんだけどな~

13.PHPの各種演算結果のチートシート

from BlueShoes: PHP Cheat Sheet

14.実体参照文字のチートシート

from XHTML Character Entity Reference

15.adobe Flash CS4 キーボードショートカットのチートシート

from

16.Unix/Linuxのコマンドのチートシート

from Unix/Linuxコマンドリファレンス – よたらぼ 保管庫

17.ActionScript/Tweenerのトランジションのチートシート

from 超訳:Tweenerドキュメント&言語リファレンス

18.ActionScript/Flexのクラス・API相関図ポスター

from Ted On Flash: Cube Wallpaper – AS3 and Flex API Posters

こうやってみると、textdrop – http://www.textdrop.net/さんによる日本語化されたものがおおいですね。ありがたいです。

僕もなにか作ってみようかな。

Popularity: 8% [?]

written by ANN

6月 24

以前、Podcastで、TBSラジオ ストリームという超面白い番組があり、仕事場でコレを毎日聴くのが楽しみであった。
番組はむちゃくちゃ面白く、リスナーからも非常に好かれており、聴取率も良かったハズなのだが、あまりに歯に衣着せぬ内容に、TBSの圧力(?)が掛かったのか、打ち切りになってしまった。

で、その後釜番組として、「TBS RADIO 小島慶子 キラ☆キラ」が始まっただが………これが……あまりに聴くに堪えない。

しかし、曜日によっては、ライムスター宇多丸さん、映画評論家 町山さんが出てるので、この回は聴きたい。

普通にiTunesに登録してると、当然、その他の(僕が)聴きたくない回も入ってくる。いちいち手動で消すのは面倒なので、Yahoo Pipesを触ってみるきっかけとして、RSSを作ってみた。

Yahoo!Pipesの使い方(全モジュール解説)

まず、Yahoo (US)のアカウントが必要。Yahoo USのサイトに行き、アカウントを新しく作ろう。

Yahoo Pipesには、”module”として様々な機能があり、それらを組み合わせて独自のフィードを作成することができる。

Yahoo Pipesでやることは、キラ☆キラのPodcast用RSSを入力し、「宇多丸」「町山」さんの回のみ、フィルタリングして出力すればOK.
具体的に使ったモジュールは、
・Fetch Feed
・Filter
の2つだけ。

編集画面はこんな感じ。
1245835854952.png

結果のフィードはこちら、
Pipes: キラ☆キラ・宇多丸・町山

「小島慶子 キラ☆キラ」から、ライムスター宇多丸さんと、町山智浩の回のみ、聴きたいという人は、上記ページにあるFeedをiTunesなりに登録してください。

ただ一つ残念なのが、TBSが提供しているソースとなるFeedが、過去10件分しか配信してないようなのです。セコい。iTunes内のPodcastには過去アーカイブがあるのになぁ。

Yahoo Pipesの活用法としては…

  • あるブログのフィードに、挿入される広告がうっとうしい。広告抜きのフィードがほしい(フィルタリング)
  • サイトAとサイトBのフィードを別々に読むのが面倒。まとめて読みたい(フィードの合成)
  • ゲームサイトが配信するRSSから、自分の興味あるゲーム記事のみ取得したい(キーワードで絞り込み)
  • Yahooやflickrから、好きな画像・好きなキーワード検索結果をフィードでほしい
  • ニコニコ動画から、自分だけのオリジナルランキングを作成する
  • RSS/feedを配信してないウェブページをスクレイピングしてフィードを生成する!

などなど。それを、画面上でひょいひょいひょ~と編集できるので、非常に面白いです。

あ、ちなみにBasic認証モジュールもあるみたい。まぁ、使いドコが難しそうだけど。(ちょっと矛盾してしまう)

Popularity: 12% [?]

written by ANN

6月 16

以前、某大学のWEBサイトに資料請求フォームのスクリプトを納品したことがあるのだが、そこから、
「フォームページが開けない。スクリプトに問題があるのではないか?」と連絡あり。(その指摘をしたのはサーバ納入したリ●ーらしい)
あげく、こっちで対応してくれないか…と。

調べてみると、https://~フォームのURL にアクセスすると、
yoyyaya-1.png

といった、メッセージがブラウザに表示される。
これはどうみてもスクリプトにアクセスする前にブラウザが表示しているメッセージです。ありがとうございました。

Firefox3やSafari3だと、SSLのチェックに引っかかり、ページにアクセスできない。IEやfirefox2だとアクセスできる模様。

調べると、5月の中頃、ベリサインの中間証明書周りがなにやら変更になってるらしい。

現地サーバ内のSSL設定をチェックできないので、具体的にドコが原因か分からないし、対策をチェックしておく。

HYSPRO diary – Debian USB stick install , Firefox 3.0.3 sec_error_unknown_issuerより

SSL3.xやTSL1.0の仕様では、証明書のchainがあるときは、サイト自身が、サイトの証明書だけでなく中間の証明書も送る義務がある(ルート証明書を送るのはオプションで、送ってもセキュリティ的にそもそも意味がない)。Firefoxはこれに厳密にしたがっていてエラーだが、IE7はそうではないうようだ。特に、2007年1月からVeriSignは積極的にchainを使うようになったので、それ以降に発行を受けたサイトでこの問題が散見される。というわけで、Firefoxの問題ではなく、サイト側の設定に原因がある。

2inc.org – VeriSignの中間証明書がFirefoxでエラー(IEはOK)の件より

セキュア・サーバID用中間CA証明書からそのままコピーして貼り付けていたんですけど、何度やってもエラー。IEだとすんなり通りますのですが、Firefox、Operaではアウトです。

いろいろ試した結果、どうやら文字コードが原因のよう。セキュア・サーバID用中間CA証明書はsjisですが、エラーの出るページの文字コードはEUC。セキュア・サーバID用中間CA証明書を一度Terapadにコピーし、EUCに変換後、サーバに保存するとOK。

グローバルサインの SSL 証明書で「Web サイトが未知の認証局により認証されています」がでる問題: Su-Jine の独り言より

サーバによっては中間証明書を 2 度書くとうまくいくといっていたので、中間証明書の内容をコピーし、ペースとして保存。Apache をリスタートすると Firefox でも正常に動作した。具体的には下記のように 2 つ同じものをコピーして保存しただけ。

—–BEGIN CERTIFICATE—–
~~
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
~~
—–END CERTIFICATE—–

他に同じような現象が報告されていないか聞いても、問題は出ていないとのこと。2 つ同じものを書けばうまくいくなんて言うのはわかるわけがない。

中間CA証明書のインストールについて

同じエラーメッセージではないけど、こちらもSSLでエラーがでている。
総務省

www.soumu.go.jp は不正なセキュリティ証明書を使用しています。
発行者の証明書が信頼されていないためこの証明書は信頼されません。
(エラーコード: sec_error_untrusted_issuer)

総務省なのに…こんなんでいいのだろうか。

Popularity: 20% [?]

written by ANN

5月 22

ニーズが無いだろうけど、書く!

PHPのGDで巨大な画像ファイルを処理すると、負荷がすごい。そこでMacのサーバ限定だけど、sipsコマンドを使うことで低負荷/高速/高画質の画像変換ができるんじゃね?というのが前回のエントリーの内容。

実際に某サーバーの処理を書き換えて試してたところ、うまくいく場合と、いかない場合があることに気づいた。なかなか原因がわからなかったが、やっとわかったので、sipsコマンドをPHPから呼び出す際の注意点について書いてみたい。

sipsコマンドの使い方としては、こんな感じ。

/usr/bin/sips --resampleHeight 100 変換前ファイル --out 変換後ファイル

php内では、ふつうにsystem()でOK.

PHP:
  1. $srcfile = "/var/home/hoge/fuhihi.jpg";
  2. $dstfile = "/var/home/hoge/fuuu.jpg";
  3. system("/usr/bin/sips --resampleHeight 100 $srcfile --out $dstfile");

このとき、出力側のファイルとなる$dstfileのパスに、シンボリックリンクが含まれていると、sipsが書き出しに失敗する。

なぜか、入力側($srcfile)にシンボリックリンクが含まれていても問題ない様子。

画像変換した後のファイルの出力において、なぜ区別する必要があったのだろうか。単純にバグだろうか。
いや、普通に考えて画像変換程度で、区別する必要はないだろう。

しかし、そうなってる以上、考えてもしょうがないで対策。

PHP:
  1. $srcfile = realpath("/var/home/hoge/fuhihi.jpg");
  2. $dstfile = realpath("/var/home/hoge/fuuu.jpg");
  3. system("/usr/bin/sips --resampleHeight 100 $srcfile --out $dstfile");

単純に、sipsに渡すパスに対して、realpath()を通してやることで、シンボリックリンクが実体のパスになるので、これで問題なし。

便宜上、PHPで使う場合…という感じで書いたが、system()からはshell経由で呼ばれるはずなので、shell上でも同じ問題が発生します。

ただし、あくまで出力ファイルのパスにシンボリックリンクが含まれているのがまずいだけであって、たとえば、カレントディレクトリにシンボリックリンクが含まれていても、sipsコマンドのパスに含まれてなければOKです(ややこしい。だからなかなか原因がわからなかった)

最近は、OS X Serverを使ったりしてるので、その周りも後ほど書いてみたい。

Popularity: 11% [?]

written by ANN

4月 16

phpで画像処理する定番といえば、組み込みのGD(PHP: GD - Manual)が定番なのだけれど、どうも処理元の画像が大きいと、非常に処理が重たい気がする。

とある画像データベースサイトでは、デジカメで撮影した画像を大量にアップロード・リサイズする必要があり、GDで処理していたのだが、最近のデジカメは1ファイルが12~15Mバイトもめずらしくなく、コレを何十枚と処理していくと、結局、apacheさんの負荷およびCPUの負荷がハンパなく、すぐにLoad avgが急上昇してしまう。

なんとか改善できないかと考えて、サーバがMac(OS X)だから、sipsコマンド【Scriptable Image Processing System(スクリプト可能イメージ処理システム)】が使えないかと考えた。変換処理をコマンドに任せることでapache(httpd)の負荷も減らせるかもしれないし。

- sips 公式テクニカルノート Technical Note TN2035: ColorSync on Mac OS X
- SIPS コマンド - 画像をコマンドラインで - その1 (リサイズ / 回転 / 反転 など) --- --- 脳みその中身-

試しにいくつかリサイズしてみたところ、体感的にはPHP/GDのリサイズより早い気がした。

気がしただけでは面白くないので、実際に簡単なサンプルを作ってベンチマークをとってみた。
つまり、SIPS vs GDである。

>>>>>続きを読む

Popularity: 19% [?]

written by ANN

11月 21

ページ毎のデータは、普通にアナリティクスさんから提示されたコードを埋め込めばよいけど、内部リンク/外部リンク、たとえば、画像やPDFへリンクした場合、その画像/PDFそのものには解析コードを埋め込めないため、表示数がカウントできない。

そういう場合は、そのリンクにトラッキングコードを埋め込めば、データを解析できる。今回はその方法など。

大きく分けて、urchinのバージョンによって2パターンあるので要注意。
バージョン判別方法は、こちら→トラッキング コードのどのバージョンを使用しているか教えてください。 - Google Analytics ヘルプ センター

旧バージョンの場合(urchin.js)

基本的には、onClickに、urchineTracker関数をコールすればOK。引数はジャンプ先のURLと思われがちだが、かならずしもURLである必要はない。アナリティクス内で識別するためのIDと思えばOK。
たとえば、1ページなりに、同一ページへのリンクが複数あり、それぞれのリンクをトラッキングしたい場合、

HTML:
  1. <a href="/promo/hoge.html" onClick="javascript:urchinTracker('hoge1');">
  2. (コンテンツ)
  3. </a><a href="/promo/hoge.html" onClick="javascript:urchinTracker('hoge2');">
  4. </a>

とすれば、それぞれのリンクからのデータを解析対象にできる。

参考:JavaScript イベントをトラッキングするにはどうすればよいですか。 - Google Analytics ヘルプ センター

新バージョンの場合(ga.js)

基本的には上と同じだけれど、呼び出す関数が違うので注意されたし。

HTML:
  1. <a href="/promo/hoge.html" onClick="javascript:pageTracker._trackPageview('hoge1');">
  2. (コンテンツ)
  3. </a><a href="/promo/hoge.html" onClick="javascript:pageTracker._trackPageview('hoge2');">
  4. </a>

参考:JavaScript イベントをトラッキングするにはどうすればよいですか。 - Google Analytics ヘルプ センター

Popularity: 54% [?]

written by ANN

6月 19

ちょこっとしたTips。というか自分が知らなかっただけかも。

ウェブサイトで調べ物をしていて、とあるページの一部だけ印刷したい場合ってあると思います。
そのサイトがフルにCSS対応していれば、自分でCSSを作って部分的に非表示したり、Firebugでhtml/CSSを修正したりできるけど、がちがちのTableレイアウトのサイトの場合、そうもいかない。

thinkit.png具体的には、thinkit(シンクアイティ)なんかに印刷したい記事があったのだけれど、印刷すると不要なヘッダやらバナーやらがバリバリ印刷されてしまい、本文が非常に見づらい。しかもTableレイアウトでかつHTML要素にIDなどほとんど付いてないので、Firebugで修正するのも面倒。

WEBサイトの一部をクリップして印刷するアプリがあったよなーと探してみたが、簡単なものならIEでできた。

すごく簡単だった。印刷したい部分をドラッグして反転して、右クリック(コンテキストメニュー)から「印刷プレビュー」。「画面で選択されたとおりに印刷する」を選択。選択された場所のみになり、余白ができるので拡大縮小で125~150%くらいにして、プレビューで確認の後、印刷。(XPや2000だとプレビュー周りが違うかも)

Firefoxにはできないことが簡単にできた!シビれるぅ!

Firefoxちゃんだけ!IEちゃんだけ!だとどうしても一長一短あるから、二人仲良く使ってあげないとね!

というか、thinksit が印刷用機能を設けるか、印刷用cssを用意しろ!って話だけど。(ここが一番重要)

Popularity: 15% [?]

written by ANN

5月 08

これまたあんまりニーズが無いと思うけど、ニーズが無いが故に、書いておけば誰かの役に立つかも。

状況

Windows XP/Vistaにおいて、有線LANでは、ネットワークAに接続し、無線LANでは、ネットワークBに接続したいとする。
もちろん、同時には接続できないので、基本的には、有線LANが優先され接続される。
1つのネットワークデバイスにおいて、IPやDNSの設定を変えるユーティリティソフトは沢山あるし、netshコマンドでもOKなのだが、2つのネットワークデバイスを使い、それぞれを切り替えたい。

※ネットワークケーブルを引っこ抜けば、必然的に無線LANに接続されるが、デスクトップPCなど、LANコネクタが背面にある場合、そうそう抜くこともできない。

ネットワークデバイスを、右クリックから無効/有効を設定すれば、もう一方のネットワークに自動的に接続されるが、もっと簡単にやりたい。

方法

コントロールパネル>システム>デバイスマネージャのコマンドラインインターフェースコマンド(?)が、マイクロソフトのサイトからダウンロードできるので、それを持ってくる。devcon.exe
デバイス マネージャとして機能する DevCon コマンド ライン ユーティリティ
Zip圧縮されてるので、適当なところに展開すると、中にdevcon.exeが入っている。これを使いやすいところにコピーしておく。

>>>>>続きを読む

Popularity: 100% [?]

written by ANN

4月 25

超ニッチな話題なので、ほとんど誰にも役に立たないと思うけど、自分用の備忘録です。(時々、ボウビロクかビボウロクか訳がわからなくなる・・)

Flashからプロジェクタ形式にパブリッシュすると、hoge.exeという実行形式のファイルが出来るのですが、swfに一皮かぶせただけなので、Windows/Macのアプリとしての機能はかなり貧弱。
しかし、ブラウザを必要としないし、タダのswfよりexeというだけでエラそうな感じではある。
まだはっきりとした保障はないのだが、swfのままだと、Flash Playerのセキュリティの制限をかなり受ける(クロスドメインで通信できないとか)のだが、exeだとすこし緩くなるようだ。(かなり自信ないけど)

実際、swf(つまりFlash Player)ではポリシーファイルが無いためSocket接続できなかったものも、プロジェクタ形式だと、ふつうに通信できた。

ActionScript2.0には、バイナリのSocketが無いため、シリアル通信には不向きということは先日書いた。
だから、AS2.0で作ったアプリとLocalConnectionで接続できるAS3.0のプロクシアプリを作って、AS3.0のプロクシアプリが、シリアルプロクシのserproxy.exeと通信するというヤヤコシイ方法でシリアル通信をしたのだが、この方法だと、メインのアプリ以外に常に2つのプロクシアプリが起動しておく必要がある。

fscommandからコマンドを起動できるのはできるけど、かなり使い勝手が悪い。
そこで、プロクシ2つ→メインアプリと起動するbatファイルを作ったのだが、今度は、既に起動してる状態でbatファイルを起動されると、全てのアプリが2重に起動してしまう。

ちゃんとしたアプリなら、アプリケーションアイコンをダブルクリックしても、プロセスが多重起動することなく、既存のプロセスに移行するのだが、Flashプロジェクタはそこまで賢くない。
(たとえば、@IT:.NET TIPS Windowsアプリケーションの多重起動を禁止するには?

serproxy.exeには手を入れることができないので、AS3.0のLocalConnection⇔Socketプロクシアプリに、

  1. 多重起動チェック用のLocalConnection ID宛に接続を試みる(この時点ではまだconnectしてない)
  2. もし、接続できた場合、多重起動なので、fscommandでquitする
  3. 接続できない場合、シングル起動なので、多重起動チェック要のLocalConnection IDにてconnectし、待機する
  4. という方法で、このプロクシアプリの多重起動についてはなんとか対処できた。

    ・・・しかし、もっとシンプルな方法があった。バッチファイルに

    CODE:
    1. taskkill /IM app2.exe
    2. taskkill /IM serproxy.exe
    3. start /MIN app2.exe
    4. start /MIN serproxy.exe

    というふうに、起動する前に、同じプロセス名のプロセスがあったら強制的にぬっころす!というふうに書けばOK.
    killallみたいな感じだね。

    serproxyは、Flashでシリアル通信する人にとっては超必須なアプリなので、上記のようなバッチファイル作っておけば、毎回、起動したり終了したりをしなくて便利です。

    mProjectorで同様のことができたら、そっちに移行するんだけどなー

Popularity: 16% [?]

written by ANN