2010年4月25日日曜日

画像置換を JavaScript (jQuery) でやってみる

お久しぶり!社会人になってしまったので,Blog 更新する暇なかった!

いま,ちょっとした Web サイトを作成中なんだよね.その制作過程で,「画像置換どうしよう?」ってことになったんで,今回はそれについて書くことにした.

Windows もメイリオが入ってから,フォントがだいぶ綺麗になったと思うけど,見出しに使うフォントとしてはいまいち.でも,Mac OS X ならヒラギノ明朝があるから,それを見出しにすればいいよなぁと思った.

また,Mac OS X の場合はフォントがあるんだから,テキストとしてコピーできるように,フォントがある場合は画像置換をしたくない.そして,見出し1つ1つに id を付けるのは嫌だったし,XHTML を汚したくない.さらに言えば,CSS に置換用画像のファイル名をいっぱい書かなければならないのもどうかなと思うわけだ.

なので,条件としては,

・ヒラギノ明朝が存在すれば,画像置換はしない
・XHTML と CSS を汚さない

ということで考えてみた.

そーなると,CSS でどーにかするっていう画像置換は無理なので,JavaScript で頑張ることにした.まあ,美しいサイトを見たいなら JavaScript くらい有効にしておいてくれということでwアクセシビリティとしても XHTML を汚さないので大丈夫だと思うし.

んで,今回は,jQuery で,

・ヒラギノ明朝の存在判定
・h1, h2 要素のテキストのハッシュ値からの画像名計算
・h1, h2 要素のテキストの img 要素への変換

ということをすることで,画像置換を行ってみた.サンプルは次のとおり.

JavaScript による画像置換サンプル

使用したライブラリは,jquery.js と jquery.fontavailable.jsjquery.md5.js

JavaScript を書くことがないので,こういう書き方が正しいかわからないけど,次のようなかんじで記述したら OK だった.

$(function() {
// Image Replacement
if (!$.fontAvailable("Hiragino Mincho Pro") &&
!$.fontAvailable("ヒラギノ明朝 Pro W3")) {
$("h1").each(function() {
$(this).replaceWith(
'<h1><img src="img/ir/h1_' + $.md5($(this).text()) +
'.jpg" alt="' + $(this).text() + '" /></h1>');
});

$("h2").each(function() {
$(this).replaceWith(
'<h2><img src="img/ir/h2_' + $.md5($(this).text()) +
'.jpg" alt="' + $(this).text() + '" /></h2>');
});
}
});


一応,Mac OS X での Safari と Firefox,Chrome,Opera,Windows での Internet Explorer 6,Internet Explorer 7,Internet Explorer 8,Firefox,Safari,Chrome,Opera での動作を確認.

それにしても jQuery って便利だねぇ.

2010年3月14日日曜日

Office 2010 優待アップグレードキャンペーンで,卒業直前に Office 2007 アカデミックを購入する場合

Office 2007 を3月5日からパッケージ製品発売前日までに購入し, Office 2010 優待アップグレードキャンペーンへ申し込むと,3,000円で Office 2010 にアップグレードできる.

詳細は,キャンペーンサイトに譲るが,どうやら店頭からの購入日がキャンペーン期間中であれば,過去の優待パッケージ製品でもいい.(まあ,過去の優待パッケージが残っているとは思えないけどね.)そして,購入するパッケージがアカデミックでもいい.ここで,本年度卒業の学生は,Office 2007 Professional アカデミックを購入して,Office 2010 Professional アカデミックへのアップグレードが可能なのかが重要になる.

僕は,Office 2010 が学生のうちに出ないかなぁと待ってたんだけど,結局学生のうちにでないということになった.でも,Office 2010 優待アップグレードキャンペーン対象の Office 2007 Professional アカデミックは学生のうちに購入できる.Office 2010 の本国の価格情報から,Office 2010 Professional を入手する場合の費用は,Office 2010 Professional(非アカデミック)購入価格より Office 2007 Professional アカデミック購入価格+3,000円の方が安くなると思う.なので,学生のうちに買った Office 2007 Professional アカデミックから,社会人になってから発売される Office 2010 Professional アカデミックに優待アップグレードキャンペーンによってアップグレードできれば安上がりになる.ちなみに学生時に購入したアカデミック版は,卒業後でも個人用途であればそのまま使用できるからね.

さて,ここらへんはどうなってるんだろう.ちょっと,Microsoft に問い合わせてみるかなぁ.

追記(2010年3月15日):
Microsoft に問い合わせてみた結果,Office Professional 2007 アカデミックを在学中に購入し,Office 2010 優待アップグレードキャンペーンに応募すれば,Office Professional 2010 アカデミックが発売後に届くらしい.もちろん,それを使用することはライセンス上問題がないとのことだ.

参考文献:
Microsoft Office 2010 優待アップグレード キャンペーン

2010年2月19日金曜日

Mac OS X で Hex Dump(バイナリビューワー)

Mac OS X でとりあえず16進数でバイナリを表示したいときに使えるツールのメモ.
$ hexdump ファイル名
$ xxd ファイル名

xxd の方のデフォルトの表示フォーマットのが好きだな.機能の差とかはよく知らない.

2010年2月14日日曜日

またたび式 C 入門 #0

どうも,お久しぶりですw

修士論文とレポートで忙しくてほったらかしてたんだよね.一応,修士論文発表会も終わり,単位認定結果を待つのみとなったので,ブログを書くのを復活させよう♪

久しぶりのブログのネタは,いわゆる C 言語の入門ネタをやろうかと思ってる.C の入門ネタなんてインターネット上に腐るほどあるので,いまさら感はあるんだけど,1回くらいは C の入門ってーのを書いてみたいと前々から思っていたのでwほかの言語でちゃんとした入門ネタを書こうとも思ったんだけど,入門ネタを書けるほど修得してる言語って C くらいかなぁと…….そもそも,C ってとんでもない人がわんさかいるから,僕が偉そうに書くというのもいろいろ自爆してる気がするけどwww

ということで,「またたび式 C 入門」と題して,C 言語の入門ネタを書いていこう.またたび式という名前は,とりあえず C 入門じゃ検索し辛いから,適当に付けた名前なのであまり気にせずにwあと,林檎生活なんだけど,ターゲットプラットフォームは,Windows XP にした.とりあえず,Windows ユーザ向けに書いてみたかったからなんだよね.Windows ユーザ向けで書いてどのくらい読む人がいるか知りたかったのと,Windows っていう C に向かない環境でとりあえず学ぶ方法を開拓してみたかったから.

まあ,今回のエントリは,ぐだぐだ僕の C 言語とそれを学ぶことについて思ってることを書くだけにする.#1 からちゃんと入門っぽいエントリにするのでねw

まず,C を学びたい人ってどういう人だろうねという話.とりあえず,C って有名だから学び始める人が多いのかもしれない.実際,僕はそんな感じで勉強し始めた.学校で教えられるから勉強し始めた人も多いと思う.最近だと,実務で必要だからという人もいるかもしれないね.Web アプリケーションでよく使われる言語からプログラミングを始めて,組み込みの仕事もやることになってみたいな友達を知ってるから.

じゃ,C を学んでハッピーになれる人は?とりあえず,大学で研究するために必要な人は,ハッピーになれるはずだね.学ばないと研究にならないわけだしw実務で使用する人もハッピーになれると思うけど,入門書が役に立つとは思えないな.C の案件って組み込みが多いだろうし,入門書じゃそこまでカバーしきれないから.とりあえず,プログラミングを始めたくて C を選んだ人は,ハッピーにならない気がするな.いわゆる Windows アプリケーションを作成することを夢見てたり,ゲームプログラミングを夢見てるのであれば,C という選択肢はイバラの道だ.Windows API を叩いて Windows アプリケーションを作成するよりは,Visual Studio と C# で作った方が簡単だよね.ゲームを作るにしても,いまなら C# でいいんじゃないかなぁ.Direct X を C++ で叩くよりは,C# で叩いた方が行数が少なかったよね.ハッピーになる人なんて,UNIX アプリケーションのソースを読まなきゃならない人とか,C++ や Objective-C の前段階として学ぶ人くらいじゃないかなぁ.

実際のところ C は広く使われてるから,なんでもかんでもやろうと思えばできる.ハードウェアに近いドライバから,GUI アプリケーションや Web アプリケーションまで.でも,C じゃなきゃ困るというところは,組み込み系とか UNIX アプリケーション系とかに限定されてくる.あとは,リバースエンジニアリングをする目的で Windows API を知らなきゃならないとかいう状況かな.その場合は,もちろんアセンブラの知識の方が重要になるけどね.

という感じで,C をいまさらやらなくてもいいよなぁと思うところもあるわけだけど,大学ではまだ C を教えてるみたいだし,UNIX のサーバとかは C で開発されているのが多いし,とりあえず C を学びたい人はいそうだ.OpenGL や OpenMP,OpenCV を使って研究用の書き捨てのコードを書くなら C っていう選択肢は有りだし,C で書かれている便利なものが多くあるんだよな.

うーん,またたび式では,Windows 上で C の UNIX 的な使い方を勉強しつつ,いろんなライブラリを使える程度のスキルを身につけられるようにすることを目標にしようかな.発展的には,Windows API を使ってみることで,C からかけ離れた使い方を勉強してみるとかwあと,UNIX の開発ツールの使い方とかも一緒に学んで,UNIX アプリケーションのソースを読めるようにするとかね.

まっ,こんなことをグダグダと書いてしまったけど,次回からはちゃんと C 入門を書いていきます.全編通しての例題として考えているのは,リバーシ!いわゆる,オセロねwコンピュータの思考ルーチンとかも作って,最終的には GUI 化しようとか企んでるわけです♪

ではでは,お楽しみにw

2009年12月22日火曜日

WILLCOM のメールアドレスに迷惑メール

WILLCOM のメールアドレスに,12月15日から迷惑メールが届くようになった.サイトとかに登録しているメールアドレスでもないので,迷惑メールが届くようになるのはおかしい.そもそも,この現象についていろいろなブログが書いている.WILLCOM の方で,メールアドレスの流出があったのではないかと思ってしまう.

WILLCOM の迷惑メール対策機能は,残念ながらしょぼいので今回の件に対応できそうにない.WILLCOM の方での対策を待つしかない.WILLCOM からの音沙汰がないので,現状について何らかの発表をしてほしいなと思う.

参考文献:
WebDiary: Willcomでスパム爆発中!
何の変哲もない新婚生活…: @willcom.comあての迷惑メールが届くようになった.

2009年11月4日水曜日

Dell Inspiron Mini 12 無線 LAN 換装 Atheros AR5007EG (AR5BXB63)

Dell Inspiron Mini 12 に搭載されている無線 LAN モジュール Broadcom BCM94312MCG を Yahoo! オークションで購入した Atheros AR5007EG (AR5BXB63) に換装した.どちらも 802.11b/g 対応なのは変わらないが,FreeBSD をインストールして無線アクセスポイントとして使用したかったので,対応している Atheros のものにしたのだ.

FreeBSD 7.2-RELEASE で認識し,クライアントとして使用できることは確認できたが,FreeBSD 7.1-RELEASE では認識できなかった.Windows XP でも,Aspire One の無線 LAN ドライバをインストールすることで使用できることを確認した.(ダウンロードできるサイトは参考文献にある.)

以下,その作業手順.

1. バッテリーを外す.

2. 画面を最大まで開く.

3. 左側の F1 のあたりにある隙間を使ってヒンジカバーを浮かせて外していく.

4. ヒンジカバーを外したら,ヒンジカバーの陰に隠れていたキーボードを止めているネジを外す.

5. キーボードを外すときには,キーボードと本体を繋いでいるケーブルに注意する.

6. ケーブルのささっているところの左右のケーブルをロックしている茶色い部分を引き出してケーブルを外す.

7. 無線 LAN モジュールについている白黒のケーブルを外し,ネジを外す.

8. 無線 LAN モジュールが浮くので,交換したい無線 LAN モジュールに交換する.


簡単に交換できるので,802.11n に対応させたりしたい人はやってみるといいかもしれない.Intel Wireless WiFi Link 4965AGN なら普通に購入できるし,ドライバも簡単に手に入ると思う.Windows でクライアントとして使用することを前提としてだけどね.

関連製品:
Intel Wireless WiFi Link 4965AGN

参考文献:
へろへろ日記: Inspiron mini 12 分解
Dell: Inspiron 1210 サービスマニュアル
Acer Europe: Drivers for Aspire One 150

2009年10月30日金曜日

FreeBSD でサーバ構築 #18 Cyrus IMAP 編

林檎生活100: FreeBSD でサーバ構築 #17 UW IMAP 編の続き.今回は,Cyrus IMAP で IMAP サーバを構築してみる.

Cyrus IMAP は,メールボックスを1箇所で集中管理するタイプのサーバで,クウォータを設定できたり,サーバサイドでのメールフィルタ (Sieve) を使用できたりする.UW IMAP に比べ高機能で高性能だが,その分設定する項目も多くなっているので,導入は少し面倒である.このエントリでは,UW IMAP 編で UW IMAP を導入したときと同等の機能の IMAP サーバを構築することを目指すことにする.つまり,IMAP over SSL なサーバであり,クウォータやメールフィルタの設定は行わない.(そのような設定に付いては,参考文献を参照してほしい.)

Cyrus IMAP の動作は,UW IMAP の動作とは大きく異なる.UW IMAP のように UNIX のメール環境と共存するわけではなく,完全に独立したメールボックスを構成する.そのため,サーバにログインして mail コマンドでメールを読むことはできなくなる.あくまで IMAP(設定によっては POP も可能.)でメールボックスにアクセスする.UNIX のメール環境における,ローカルのメールボックス (/var/mail) とユーザのメールボックス (~/mbox) は使用しないのだ.Sendmail のローカル配信が Cyrus IMAP のメールボックスになるように設定するので,このような動作になる.

さて,さっそくインストールと設定をしていこう.

1. Ports からインストールする.
# cd /usr/ports/security/cyrus-sasl23
# make install clean



2. cyrus ユーザの所有権を持つ証明書と秘密鍵を /var/imap/certs などに配置する.

3. 設定ファイル (/usr/local/etc/imapd.conf) を変更する.下記設定項目について,該当行を変更する.
allowplaintext: yes
admins: root
sasl_pwcheck_method: saslauthd
sasl_mech_list: plain
tls_cert_file: /var/imap/certs/cert.pem
tls_key_file: /var/imap/certs/key.pem
tls_ca_file: /var/imap/certs/cacert.pem
tls_ca_path: /var/imap/certs

4. メールスプールなどを作成・設定するスクリプトを実行する.
# /usr/local/cyrus/bin/mkimap

5. /etc/rc.conf に次の行を追加する.
cyrus_imapd_enable="YES"

6.Cyrus IMAP を起動する.DB_ERROR ってのが大量に出るが,ユーザのメールボックスにメールが配信されると,そのメッセージはでなくなるので気にしない.
# /usr/local/etc/rc.d/imapd start

7. ユーザのメールボックスを作成する.
# cyradm --user root localhost
> createmailbox user.takuya
> quit

8. Sendmail のローカル配信を Cyrus IMAP にするので,設定ファイル (僕の環境では,/etc/mail/lucifer.legna.org.mc である.) に以下の行を追記する.
dnl Cyrus IMAP options
define(`confLOCAL_MAILER', `cyrusv2')
MAILER(`cyrusv2')

9. Sendmail に設定を反映し,再起動する.
# cd /etc/mail
# make install
# /etc/rc.d/sendmail restart


設定完了♪メールの送受信をしてテストしてみてほしい.WAN 側から接続するときは TCP の143番へのポートマッピングを設定すること.

残った問題として,IMAP over TLS の状態じゃなく,平文の状態でもログインができてしまうことがある.imapd.conf の allowplaintext を no にすればいいのだけど,そうすると cyradm が使えなくなる.うーん,どうしたらいいのかな.

次回は,メールのちょっとした設定などについて解説して,メール編は終わりの予定♪では,また.

参考文献:
Cyrus IMAP Server v2.3 Documentation
IMAP