Dec 01, 2010
[Kinect] ofxKinect で Kinect の開発環境を用意する
Xcode に Kinect の開発環境を用意してみた。
ofxKinect という OpenFrameworks と OpenKinect を組み込み済みのプロジェクトテンプレートが公開されているのでそれを Xcode から読み込んだだけ。
- ofTheo's ofxKinect at master - GItHub
- https://github.com/ofTheo/ofxKinect
- openFrameworks
- http://www.openframeworks.cc/
以下、作業メモ。
ofxKinect の準備
$ git clone https://github.com/ofTheo/ofxKinect.git $ git clone https://github.com/openframeworks/openFrameworks.git $ cp -r ./ofxKinect ./openFrameworks/xcode\ templates/Project\ Templates/
ofxKinect デモアプリケーションの起動
./openFrameworks/xcode templates/Project Templates/ofxKinect/ofxKinect.xcodeproj を実行し Xcode を起動する。
![[Xcode]](/blog/entries/Kinect/20101201_01/ofxkinect_01.png)
Xcode が起動したらビルドと実行を行う。例によって右上はボカシ済み。
![[Demo]](/blog/entries/Kinect/20101201_01/ofxkinect_02.png)
Nov 30, 2010
[Kinect] MacOS X で Kinect にチャレンジ
Kinect ハックで楽しんでいる人が巷に溢れかえっている昨今。
あんなに楽しそうなことが出来ないのはくやしいので Kinect を購入してマネをして遊ぶことに。
とりあえず今回は MacOS X で Kinect を動作させるところまでの作業メモ。
MacOS X で Kinect を使用するには OpenKinect をインストールすれば良いらしい。
OpenKinect のインストールに関する詳細は以下のサイトを参照のこと。
- OpenKinect
- http://openkinect.org/
- OpenKinect's libfreenect at master - GitHub
- https://github.com/OpenKinect/libfreenect
- Compiling OpenKinect on a stubborn OSX 10.6.5 (Updated 21/Nov)
- http://www.spoofscript.com/blog/?p=327
Kinect を接続する前に
今回使用した MacOS X は Snow Leopard (10.6.5)。予め MacPorts をインストール済み。 まずは OpenKinect のインストールに必要なものを揃える。 使用した環境では git と cmake が足りないので、MacPorts を使用してインストール。
$ sudo port install git-core $ sudo port install cmake $ port list git-core cmake git-core @1.7.3.2 devel/git-core cmake @2.8.3 devel/cmake
OpenKinect のソースコードをダウンロード
git で OpenKinect のソースコードをダウンロードする。 libusb も必要となるので併せてダウンロードしておく。
$ git clone https://github.com/OpenKinect/libfreenect.git $ git clone git://git.libusb.org/libusb.git
libusb のインストール
libusb を configure; make; make install する。 libusb に OpenKinect 用のパッチを当てる必要があるので注意。
$ cd ./libusb/
$ chmod +x autogen.sh
$ ./autogen.sh
$ patch -p1 < ../libfreenect/platform/osx/libusb-osx-kinect.diff
patching file libusb/libusbi.h
patching file libusb/os/darwin_usb.c
patching file libusb/os/darwin_usb.h
patch unexpectedly ends in middle of line
Hunk #2 succeeded at 147 with fuzz 1.
$ ./configure
$ make
$ sudo make install | tee ./install.log
Password:
Making install in libusb
test -z "/usr/local/lib" || .././install-sh -c -d "/usr/local/lib"
/bin/sh ../libtool --mode=install /usr/bin/install -c libusb-1.0.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libusb-1.0.0.dylib /usr/local/lib/libusb-1.0.0.dylib
libtool: install: (cd /usr/local/lib && { ln -s -f libusb-1.0.0.dylib libusb-1.0.dylib || { rm -f libusb-1.0.dylib && ln -s libusb-1.0.0.dylib libusb-1.0.dylib; }; })
libtool: install: /usr/bin/install -c .libs/libusb-1.0.lai /usr/local/lib/libusb-1.0.la
libtool: install: /usr/bin/install -c .libs/libusb-1.0.a /usr/local/lib/libusb-1.0.a
libtool: install: chmod 644 /usr/local/lib/libusb-1.0.a
libtool: install: ranlib /usr/local/lib/libusb-1.0.a
test -z "/usr/local/include/libusb-1.0" || .././install-sh -c -d "/usr/local/include/libusb-1.0"
/usr/bin/install -c -m 644 libusb.h '/usr/local/include/libusb-1.0'
Making install in doc
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/lib/pkgconfig" || ./install-sh -c -d "/usr/local/lib/pkgconfig"
/usr/bin/install -c -m 644 libusb-1.0.pc '/usr/local/lib/pkgconfig'
OpenKinect のインストール
libusb がインストールできたら、本命の OpenKinect をインストール。 途中 ccmake 云々のくだりは手順書通りにやっただけで ccmake を知っているわけではないので不要かもしれない。
$ mkdir ./libfreenect/build $ cd ./libfreenect/build $ ccmake .. ※ccmake が起動したら、'c' → 'g' をタイプ。 $ cmake .. -- Operating system is Apple MacOS X -- Got System Processor i386 -- libfreenect will be installed to /usr/local -- Headers will be installed to /usr/local/include/libfreenect -- Libraries will be installed to /usr/local/lib -- Found libusb-1.0: -- - Includes: /usr/local/include -- - Libraries: /usr/local/lib/libusb-1.0.dylib -- Configuring done -- Generating done -- Build files have been written to: /Users/me/libfreenect/build $ make $ sudo make install | tee ./install.log Password: [ 33%] Built target freenect [ 66%] Built target freenectstatic [ 73%] Built target glview [ 86%] Built target fakenect [ 93%] Built target record [100%] Built target freenect_sync Install the project... -- Install configuration: "" -- Installing: /usr/local/lib/libfreenect.0.0.1.dylib -- Installing: /usr/local/lib/libfreenect.0.0.dylib -- Installing: /usr/local/lib/libfreenect.dylib -- Installing: /usr/local/lib/libfreenect.a -- Installing: /usr/local/include/libfreenect/libfreenect.h -- Installing: /usr/local/include/libfreenect/libfreenect.hpp -- Installing: /usr/local/bin/glview -- Installing: /usr/local/lib/fakenect/libfreenect.0.0.1.dylib -- Installing: /usr/local/lib/fakenect/libfreenect.0.0.dylib -- Installing: /usr/local/lib/fakenect/libfreenect.dylib -- Installing: /usr/local/lib/libfreenect_sync.0.0.1.dylib -- Installing: /usr/local/lib/libfreenect_sync.0.0.dylib -- Installing: /usr/local/lib/libfreenect_sync.dylib -- Installing: /usr/local/include/libfreenect/libfreenect_sync.h
Kinect の動作確認
OpenKinect に添付されているサンプルアプリケーションで Kinect の動作確認をする。 まずはサンプルアプリケーションのビルドから。
$ cd ./libfreenect/examples/ $ cp ../include/* . $ cmake . $ make
make が正常に終了したら、Kinect を Mac に接続する。 接続したらサンプルアプリケーションを起動する。
$ ./glview Kinect camera test Number of devices found: 1 GL thread (略)
起動すると以下の様に Kinect から取得した画像が表示される。 右側に実際はもっときちんとした画が表示されるが、お見せできるような状況ではないためボカしてある。
![[サンプルアプリケーション]](/blog/entries/Kinect/20101130_01/kinect_01.png)
Nov 29, 2010
[Apple] MacPorts の "db46 requires the Java..." エラー
MacPorts でアップデートをしようとしたら以下の様なエラーが発生した。
$sudo port upgrade outdated (略) Error: db46 requires the Java for Mac OS X development headers. Error: Download the Java Developer Package from: <https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719> Error: Target org.macports.configure returned: missing Java headers Error: Failed to install db46 Log for db46 is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_db46/main.log Error: The following dependencies were not installed: python26 db46 gdbm rsync popt Error: Status 1 encountered during processing. To report a bug, see <http://guide.macports.org/#project.tickets>
メッセージの通り https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719 から Java for Mac OS X 10.6 Update 3 Developer Package をダウンロード(要 Apple ID)し、インストールして一件落着。
Oct 22, 2010
[Apple] Apple が MacOS X での Java 提供の打ち切りを示唆
今までも Java に全く力を入れてこなかった Apple が遂に完全にやる気を無くした様だ。 Java for Mac OS X 10.6 Update 3 and 10.5 Update 8 Release Notes によると、
As of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated.願わくは、OS 同梱でなくても構わないので MacOS X 用 JDK を我に与え給へ。
This means that the Apple-produced runtime will not be maintained at the same level, and may be removed from future versions of Mac OS X. The Java runtime shipping in Mac OS X 10.6 Snow Leopard, and Mac OS X 10.5 Leopard, will continue to be supported and maintained through the standard support cycles of those products.
Oct 17, 2010
[Library] Apache Axis2 で SOAP Request/Response を GZIP 圧縮する方法
Apache Axis2 で SOAP Request/Response を GZIP 圧縮する方法をメモ。
コード
Options を生成し、Stub (実際には WSDL から自動生成された Stub のサブクラス) にセットする。 MC_GZIP_REQUEST が SOAP Request の圧縮可否。 MC_ACCEPT_GZIP が SOAP Response の圧縮可否。 詳細は下記のリンクを参照のこと。
Stub stub = Options options = new Options(); options.setProperty(HTTPConstants.MC_GZIP_REQUEST, true); options.setProperty(HTTPConstants.MC_ACCEPT_GZIP, true); stub._getServiceClient().setOverrideOptions(options);
- Options#setProperty
- http://ws.apache.org/axis2/1_5_1/api/org/apache/axis2/client/Options.html#setProperty(java.lang.String,%20java.lang.Object)
- HTTPConstants
- http://ws.apache.org/axis2/1_5_1/api/org/apache/axis2/transport/http/HTTPConstants.html
動作確認
Apache Axis2 で HTTP Request/Response を確認する方法 でログを出力すると、以下のヘッダを確認できる。
ちなみに、某サービスの軽量 SOAP 通信で GZIP 圧縮を ON にしてみたところ通信速度が 30% 速くなった。 サービスが GZIP 圧縮に対応しており、クライアントの CPU に余裕があれが是非 ON にしておきたい。2010-10-17 23:56:29,026 DEBUG [main] (Wire.java:70) - >> "Accept-Encoding: gzip[\r][\n]" 2010-10-17 23:56:29,026 DEBUG [main] (Wire.java:70) - >> "Content-Encoding: gzip[\r][\n]"
但し、GZIP 圧縮を ON にするとログに出力される SOAP Request/Response の目視での確認は困難になる。 デバッグの際には OFF にする必要がある。
Oct 09, 2010
[Library] Apache Axis2 で HTTP Request/Response を確認する方法
Axis2 は通信に Apache HttpComponents を使用しているので Log4j で HTTP Request/Response を確認することができる。 SOAP 通信の内容を見られるのでデバッグの際にとても便利。
log4j.xml の設定方法
"httpclient.wire" カテゴリのログレベルを "debug" にするだけ。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- for Axis2 -->
<category name="httpclient.wire">
<priority value="debug" />
</category>
<!-- /for Axis2 -->
</log4j:configuration>
ログ出力例
2010-10-08 23:02:45,670 DEBUG [main] (Wire.java:70) - >> "POST /services/Soap/u/20.0 HTTP/1.1[\r][\n]" 2010-10-08 23:02:45,682 DEBUG [main] (Wire.java:70) - >> "Content-Type: text/xml; charset=UTF-8[\r][\n]" 2010-10-08 23:02:45,682 DEBUG [main] (Wire.java:70) - >> "SOAPAction: "urn:partner.soap.sforce.com:Soap:loginRequest"[\r][\n]" 2010-10-08 23:02:45,682 DEBUG [main] (Wire.java:70) - >> "User-Agent: Axis2[\r][\n]" 2010-10-08 23:02:45,683 DEBUG [main] (Wire.java:70) - >> "Host: test.salesforce.com[\r][\n]" 2010-10-08 23:02:45,683 DEBUG [main] (Wire.java:70) - >> "Transfer-Encoding: chunked[\r][\n]" 2010-10-08 23:02:45,683 DEBUG [main] (Wire.java:70) - >> "[\r][\n]" 2010-10-08 23:02:46,146 DEBUG [main] (Wire.java:70) - >> "143[\r][\n]" 2010-10-08 23:02:46,146 DEBUG [main] (Wire.java:84) - >> "<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>(略)</soapenv:Body></soapenv:Envelope>" 2010-10-08 23:02:46,147 DEBUG [main] (Wire.java:70) - >> "[\r][\n]" 2010-10-08 23:02:46,147 DEBUG [main] (Wire.java:84) - >> "0" 2010-10-08 23:02:46,147 DEBUG [main] (Wire.java:70) - >> "[\r][\n]" 2010-10-08 23:02:46,148 DEBUG [main] (Wire.java:70) - >> "[\r][\n]" 2010-10-08 23:02:46,488 DEBUG [main] (Wire.java:70) - << "HTTP/1.1 200 OK[\r][\n]" 2010-10-08 23:02:46,488 DEBUG [main] (Wire.java:70) - << "HTTP/1.1 200 OK[\r][\n]" 2010-10-08 23:02:46,490 DEBUG [main] (Wire.java:70) - << "Server: [\r][\n]" 2010-10-08 23:02:46,490 DEBUG [main] (Wire.java:70) - << "Content-Type: text/xml; charset=utf-8[\r][\n]" 2010-10-08 23:02:46,491 DEBUG [main] (Wire.java:70) - << "Content-Length: 1626[\r][\n]" 2010-10-08 23:02:46,491 DEBUG [main] (Wire.java:70) - << "Date: Fri, 08 Oct 2010 23:02:46 GMT[\r][\n]" 2010-10-08 23:02:46,491 DEBUG [main] (Wire.java:70) - << "[\r][\n]" 2010-10-08 23:02:46,499 DEBUG [main] (Wire.java:84) - << "<?xm" 2010-10-08 23:02:46,502 DEBUG [main] (Wire.java:84) - << "l version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body>(略)</soapenv:Body></soapenv:Envelope>"
Oct 08, 2010
[Apple] iPhone, iPad をエンタープライズで利用する
- Apple Developer - iPhone Developer Enterprise Program
- http://developer.apple.com/jp/programs/iphone/enterprise/
- AB's Blog - Apple's iOS4 (iPhone) and enterprise support
- http://avibirnale.blogspot.com/2010/06/apples-ios-4-iphone-and-enterprise.html
Oct 07, 2010
[Apple] MacOS X でコマンドラインからクリップボードを利用する方法
MacOS X では pbcopy と pbpaster というコマンドが用意されており、コマンドラインから簡単にクリップボードにアクセスすることができる。
$ echo "hoge" | pbcopy $ pbpaste hoge $
Oct 06, 2010
[Linux] bash で入力補完を設定する方法
シェルを使っていると必ずお世話になる入力補完。 ls と打って、tab を押さないことはまず無いくらい。 自作コマンドでも入力補完に対応したかったので、設定方法を調べてみた。
- An introduction to bash completion: part 1
- http://www.debian-administration.org/articles/316
- An introduction to bash completion: part 2
- http://www.debian-administration.org/article/An_introduction_to_bash_completion_part_2
- Completion examples
- http://bashcookbook.com/bashinfo/source/bash-3.0/examples/complete/complete-examples
設定の基本
コマンド毎に入力補完用の関数を用意し、complete コマンドでシェルに登録する。 例えば、mycmd コマンド用の入力補完関数はこんな感じで記述する。
_mycmd() {
local cur prev
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
COMPREPLY=()
if (( $COMP_CWORD <= 1)) || [[ "$cur" == -* ]]; then
COMPREPLY=( $(compgen -W '-f --file -h --help -v --version' -- $cur) );
return 0;
fi
if [ "$prev" == '-f' -o "$prev" == '--file' ]; then
COMPREPLY=( $(compgen -f -- $cur) )
return 0;
fi
}
入力中の値が COMP_WORDS から取得できるので、その値を基に補完情報を作成し COMPREPLY にセットする。 補完情報の作成をサポートしてくれる compgen が提供されているので、これを使うと便利。
シェルへの登録は前述の通り complete コマンドで行う。
complete -F _mycmd mycmd
ファイル名を補完する方法
compgen をパラメータ "f" で実行する。
COMPREPLY=( $(compgen -f -- $cur) )
選択肢を補完する方法
compgen をパラメータ "W" で実行する。 "W" の後に選択肢をスペース区切りで指定し、"-- $cur" で入力中の文字とマッチするものだけを補完情報として使用する。
COMPREPLY=( $(compgen -W '-f --file -h --help -v --version' -- $cur) );
Sep 10, 2010
[Library] GWT で Date を文字列化する
GWT で java.util.Date を文字列化する方法をメモ。 Calendar、DateFormat 等が利用できないので Date の deprecated メソッドで年月日などをそれぞれ取得し文字列化するか、 GWT 提供のクラス DateTimeFormat を使用する必要がある。 DateTimeFormat の使用例は以下の通り(使用例を示す程のものでもないけれど・・・)。
import java.util.Date;
import com.google.gwt.i18n.client.DateTimeFormat;
Date date = new Date(dateAsLong);
DateTimeFormat formatter = DateTimeFormat.getFormat("yyyy/MM/dd HH:mm");
String str = formatter.format(date);
Sep 08, 2010
[Cloud] Google App Engine ローカル実行環境のデータストア
GAE のローカル実行環境でのデータストアに関する情報をメモ。
- Google App Engine - データストアの使用
- http://code.google.com/intl/ja/appengine/docs/java/tools/devserver.html#Using_the_Datastore
データストアを参照・編集する
Datastore Viewer を使用する。
サーバを起動した状態で
http://127.0.0.1:8888/_ah/admin/datastoreにアクセスする。 ポート番号は環境に依存する可能性があるので、適宜確認のこと。
データストアをクリアする
以下のファイルを削除することでデータストアをクリアできる。
- $PROJECT_HOME/war/appengine-generated/datastore-indexes-auto.xml
- $PROJECT_HOME/war/appengine-generated/local_db.bin
Blob データ
Blobstore に保存したデータは、以下のファイルに保存される。
- $PROJECT_HOME/war/appengine-generated/<BlobKey の値>
Sep 03, 2010
[Cloud] Salesforce.com Winter '11 release
Salesforce.com の次期リリース WInter '11 を試用できる環境が公開された。
- Sign-up Now: Winter '11 Pre-Release Trial
- http://sites.force.com/blogs/ideaView?c=09a30000000D9xo&id=08730000000IyGzAAK
Winter '11 の正式なリリース日程は以下を参照。
- Winter ’11 General Release Maintenance Windows
- http://trust.salesforce.com/trust/status/
Aug 27, 2010
[Misc] システムの色覚異常への対応について
色覚異常対応について調べたのでメモ。
色覚異常
色覚異常には先天色覚異常と後天色覚異常がある。
先天色覚異常
先天赤緑色覚異常は先天色覚異常の中で最も多く存在し、赤系統や緑系統の色の弁別に困難が生じる人が多いといわれる。 日本人では男性の4.50%、女性の0.165%が先天赤緑色覚異常で、日本全体では約290万人が存在する。 白人男性では約8%が先天赤緑色覚異常であるとされる。
(Wikipedia - 色覚異常)
2型色覚(2型2色覚と2型3色覚)の人が間違えやすい組み合わせは、赤と緑、オレンジと黄緑(きみどり)、緑と茶、青と紫、ピンクと(しろ)・灰色、緑と灰色・黒です。 1型色覚(1型2色覚と1型3色覚)の場合これに、赤と黒、ピンクと青が加わります。
(目と健康シリーズ - 色覚の異常)
後天色覚異常
後天色盲は遺伝的背景に関わらず、誰にでも発症する可能性があるものが多いのが特徴と言える。 その原因は、角膜、水晶体、硝子体といった中間透光体の着色によるもの、網膜病変によるもの、緑内障によるもの、視神経病変によるもの、大脳性病変によるもの、心因性要因によるものなど様々であるが、何よりもすべての人に関係する問題として、加齢に伴う色覚の変化がある。
後天色盲でもっとも多い、後天青黄色盲の色感覚をまとめると次のようになる。
- 青の範囲が広く、健康な眼の 青紫〜青〜青緑〜緑〜黄緑 までを青として知覚し、緑の感覚を失う。
- 黄色は彩度が低下して白っぽく見える。
- 低明度、低彩度の色は、ほとんど青または無彩色に見える。
- 「黄色」→「白」、「緑」→「青または黒」、「茶」→「紫または黒」、「紫」→「青、茶、黒」、「青」→「黒」などの色誤認をする。
(色覚の多様性と視覚バリアフリーなプレゼンテーション - 色覚が変化すると、どのように色が見えるのか?)
Web サイトにおける色覚異常対応のガイドライン
w3c が策定している Web Content Accessibility Guidelines (WCAG) 2.0 に色覚異常対応に関する記載がある。ここでは Level A/AA/AAA の 3 レベルが定義されており、想定するユーザが必要とするレベルの対応を行う。
1.4.1 Use of Color: Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element. (Level A)
1.4.3 Contrast (Minimum): The visual presentation of text and images of text has a contrast ratio of at least 4.5:1, except for the following: (Level AA)
- Large Text: Large-scale text and images of large-scale text have a contrast ratio of at least 3:1;
- Incidental: Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.
- Logotypes: Text that is part of a logo or brand name has no minimum contrast requirement.
1.4.6 Contrast (Enhanced): The visual presentation of text and images of text has a contrast ratio of at least 7:1, except for the following: (Level AAA)
- Large Text: Large-scale text and images of large-scale text have a contrast ratio of at least 4.5:1;
- Incidental: Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.
- Logotypes: Text that is part of a logo or brand name has no minimum contrast requirement.
各レベルの詳細な情報は下記を参照。
- Understanding Guideline 1.4
- http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast.html
- Understanding Success Criterion 1.4.1 [Use of Color]
- http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-without-color.html
- Understanding Success Criterion 1.4.3 [Contrast (Minimum)]
- http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html
- Understanding Success Criterion 1.4.6 [Contrast (Enhanced)]
- http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast7.html
- WCAG 2.0 - contrast ratio
- http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html#contrast-ratiodef
- WCAG 2.0 - relative luminance
- http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
- The Web KANZAKI - 色の組み合わせをチェックしてみる
- http://www.kanzaki.com/docs/html/color-check
- ImageJ
- http://rsb.info.nih.gov/ij/
- Vischeck
- http://www.vischeck.com/
- ImageJ をダウンロード、解凍する。解凍先を $IMAGEJ_HOME とする。
- VischeckJ をダウンロード、解凍する。解凍先を $VISCHECKJ_HOME とする。
- $VISCHECKJ_HOME/*.class を $IMAGEJ_HOME/plugins/VischeckJ/ にコピーする。
- シミュレートしたい画面をキャプチャし、画像として保存する。
- ImageJ を起動し、画像を開く。
-
Plugins > VischeckJ > &Vischeck Panel を選択。
-
Deuteranope(緑色覚異常)、Protanope(赤色覚異常)、Tritanope(青黄色覚異常) ボタンをクリックする。
WCAG 2.0 準拠の評価
WCAG 2.0 の各レベルではコントラスト比が規定されているので、システムがそのコントラスト比を満たすことを確認する。 コントラスト比の算出方法は以下を参照。
色覚異常をシミュレートする
ImageJ と VischeckJ を使用することで色覚異常をシミュレートすることができる。
ImageJ と VischeckJ のインストール
シミュレーションの実施
![]() オリジナル |
![]() 緑色覚異常 |
![]() 赤色覚異常 |
![]() 青黄色覚異常 |
Aug 23, 2010
[Cloud] ApexHighlighter for SyntaxHighlighter
Salesforce の Apex コードをハイライト表示する JavaScript を作成してみた。詳細はこちら。 ApexHighlighter
Aug 12, 2010
[Bookmark] Today's bookmark
[Library] HTML5.jp - レーダーチャート... JavaScript によるレーダーチャート。[Library] A HTTP Proxy Server in 20 Lines of node.js Code... JavaScript による Proxy Server。
[Misc] 情報処理推進機構 - 安全なウェブサイトの作り方 改定第 4 版
[Library] Open Flash Chart 2... LGPL ライセンスの Flash Chart。
[Cloud] Salesforce Winter '11 Logo... Salesforce の次期リリースのロゴ決定。
[WebService] Web屋のネタ帳 - スマートフォン時代の電話番号認証の実装... 使う機会は無さそうだが面白いネタ。
[Misc] CSS による印刷制御に関するメモ
CSS による印刷制御に関して個人的に抑えておきたいことをメモ。
改ページ
page-break-before, page-break-after で改ページの制御が可能。 指定可能な値は auto、always、avoid、left、right のいずれか。
<div class="page" style="page-break-after: always;"> ここが 1 ページ分。 </div>
- Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification - 13 Paged media
- http://www.w3.org/TR/CSS2/page.html#page-break-props
A4 に印刷する場合は 649px x 891px
A4(210mm x 297mm) に印刷する場合は、1 ページを 649px x 891px 以内に抑える。
その他参考
参考になるサイトをメモ。素晴らしい情報に感謝。
- ADP: 印刷用CSSの書き方(基本編)
- http://adp.daa.jp/archives/000690.html
- 無限の翼 : IE6、7用対応:A4サイズで印刷出来るスタイルシート指定
- http://mtw.cocotte.jp/blog/diary/html/2009/05/07-2234.php
- PHP × Ajax = Cool CMS - [CSS] 印刷用ページを実装する方法
- http://blog.aidream.jp/css/css-print-javascript-67.html
- BlogでHTML日進月歩 - 印刷用CSSの導入
- http://cellery.blog21.fc2.com/blog-entry-14.html
Aug 11, 2010
[Apple] MacOS X で秀丸エディタを使う方法
MacOS X の最大の弱点は良いテキストエディタが無い(見つからない?)ことだと思っている。 以前 Darwine メモ で Wine + 秀丸エディタを試した際は、起動は出来るが日本語表示と日本語入力が出来ないという状態であきらめた。 今回、MikuInstaller という Wine お手軽導入キットがあることを知ったので再度 MacOS X + 秀丸エディタにチャレンジしてみた。
MikuInstaller とは
MikuInstaller 公式サイト によると、
MikuInstaller は、 Wine を Intel 搭載 Macintosh に手軽に導入するためのキットです。とのこと。
MikuInstaller のインストール
dmg をダウンロード、マウントして、MikuInstaller.app を /Applications にコピーするだけ。 今回は "MikuInstaller-20080803.dmg" を使用した。 ちなみに、MacOS X は SnowLeopard (10.6.4) を使用している。
秀丸エディタのインストール
秀丸エディタのページからインストーラパッケージをダウンロード(今回は "hm801a_signed.exe" を使用した)し、
ダウンロードした exe を /Applications/MikuInstaller.app にドロップ。
しばらくすると秀丸エディタインストーラのダイアログが開く。
![[インストーラが開始された]](/blog/entries/Apple/20100811_01/hidemaru_01.png)
次の様な警告ダイアログが表示されるかもしれないが、そのまま続行して良い。
![[警告ダイアログ]](/blog/entries/Apple/20100811_01/hidemaru_02.png)
後は普通にインストールを行う。インストールが完了したら /Users/me/Applications/MikuInstaller 内に "秀丸.app" が作成されている。
![[秀丸.app が作成されている]](/blog/entries/Apple/20100811_01/hidemaru_03.png)
秀丸エディタの起動
/Users/me/Applications/MikuInstaller/秀丸.app を起動するだけ。
![[秀丸が起動!!]](/blog/entries/Apple/20100811_01/hidemaru_04.png)
今回は日本語表示、日本語入力共に可能だった。
MacOS X 側のストレージにあるファイル読込・書出も可能。
素晴らしい!!!
Aug 09, 2010
[WebService] mov ファイルを Google Sites に埋め込む Google Gadget
Google Sites に mov ファイルを埋め込む Google Gadget を作成したのでメモ。
URL はこちら。
http://www.in-vitro.jp/software/google/gadget/ggadget_qtobject.xml
実際の埋め込みは QTObject embed という外部のライブラリにお任せしている。多謝。
- QTObject embed
- http://blog.deconcept.com/code/qtobject/qtobject.html
- オリジナルガジェットの作成
- http://code.google.com/intl/ja/apis/gadgets/docs/basic.html
使い方
- 予め Google Sites のページを作成し、mov ファイルとタイトル画像を添付しておく。
- Google Sites の編集画面で Insert > more gadgets... > Add gadget by URL を選択。
- 上記 URL を入力して "Add"。
- mov のタイトル、 mov の URL、タイトル画像の URL、mov の width、height(実際のサイズより少し大きめにする) を入力
Aug 04, 2010
[Flash] Flash on IE6 は gzip 圧縮されたデータを読み込めない
意外と難儀な問題に当たったのでメモ。
現象
IE6 上の Flash Player から ActionScript の URLLoader 等を利用してサーバにデータを取りに行く際、 サーバが gzip で圧縮されたデータを返すと IOErrorEvent.IO_ERROR (Error #2032) が発生する。
回避方法
ActionScript の URLRequestHeader クラスには Accept-Encoding は指定できないとリファレンスに記載があるのでクライアントサイドでの回避は困難。
但し、未検証なので絶対に無理かは不明。
ざっと見た限りでは皆さんサーバサイドで gzip を OFF にして回避している模様。
・・・今の環境だとそんな設定許されないから悩ましい。
関連情報
dmpmorg の日記さんに丁寧な解説があった。多謝!!!
- dmpmorgの日記 - FlexのURLLoaderでIE6だけ「#2032: ストリームエラー」 原因はgzip?CommentsAdd Star
- http://d.hatena.ne.jp/dmpmorg/20090612/1244795718
- Flash not recieving xmls when embedded in IE and GZIP compression is enebled in IIS (server sending xml)
- http://bugs.adobe.com/jira/browse/FP-330
- GZip compression + Flash Player + IE6 = Nightmare
- http://www.ultrashock.com/forums/data-communication/gzip-compression-flash-player-ie6-nightmare-122911.html
[Flash] Open Flash Chart でデータを HTML 内に埋め込む方法
Open Flash Chart でチャート用の JSON データを HTML 内に埋め込む方法をメモ。
<script type="text/javascript" language="javascript" src="swfobject.js" ></script>
<script type="text/javascript">
var chartData = '{"elements":[{"type":"line","values":[1,2,3,4]}]}'; // ここにチャート用の JSON データを埋め込む。
swfobject.embedSWF("open-flash-chart.swf", "chart", "300", "300", "9.0.0", "expressInstall.swf", {"get-data":"getChartData"});
function getChartData() {
return chartData;
}
</script>
<div id="chart"></div>
"get-data" に JSON を返す JavaScript の function を指定するだけ。
詳細な情報は以下を参照のこと。
- Advanced : Many charts on one page
- http://teethgrinder.co.uk/open-flash-chart-2/adv-js-2-charts.php
Jul 28, 2010
[Cloud] Salesforce 用 Ubiquity Command を公開してみる
Salesforce 上での開発作業を楽にするための Ubiquity 用 Command を試しに公開してみる。
またしてもかなりニッチなので(笑)、私以外に使う人が居るかはかなり疑問ではあるが。
解説とインストールは Salesforce 用 Ubiquity Command
- Salesforce.com
- http://www.salesforce.com/
- Ubiquity
- https://mozillalabs.com/ubiquity/
Jul 27, 2010
[Cloud] Salesforce Setup にカスタムメニューを追加する Geasemonkey Script を公開してみる
Salesforce の Setup 画面に 『私が』 良く使う機能へのリンクを追加する Greasemonkey Script を試しに公開してみる。Force.com をメインに開発している人は国内に居るのだろうか??
このスクリプトのニーズ、ほとんど無い気がする(笑)
解説とインストールは Salesforce Setup にカスタムメニューを追加する Geasemonkey Script
- Salesforce.com
- http://www.salesforce.com/
- Greasemonkey
- http://www.greasespot.net/
May 15, 2010
[Apple] MacOS X で .bashrc を使う方法
MacOS X (Snow Leopard) で .bashrc を使う方法をメモ。
.bash_profile の作成
まず ~/.bash_profile を作成する。ユーザ名が me の場合、/Users/me/.bash_profile を作成すれば良い。 .bashrc を使うだけであれば以下の内容で作成するだけで OK。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
.bashrc の作成
後は ~/.bashrc を作成して適宜内容を記述すれば OK。

![[original]](/blog/entries/Misc/20100827_01/sample.png)
![[deuteranope]](/blog/entries/Misc/20100827_01/sample_deuteranope.png)
![[protanope]](/blog/entries/Misc/20100827_01/sample_protanope.png)
![[tritanope]](/blog/entries/Misc/20100827_01/sample_tritanope.png)


