Archive for 8月, 2008

Rubyはじめました2:開発環境

金曜日, 8月 29th, 2008

みなさまこんにちは、加賀田です。昨夜の関東は大雨でした。みなさまだいじょうぶでしたか?

さて、ずいぶん日が開いてしまいましたがRubyのお話の続きです。業務用マシンにつっこんだRuby開発環境について、簡単にご紹介しておきます。

メインの業務マシンがWindows XPということで、開発環境にはRDEを選んでみました。Ruby本体は、RDEのインストール解説にならってActiveScriptRubyをインストール。このほか、EclipseやAptanaでもRuby開発環境が構築できるようですね。

文字コードの設定で若干詰まったのでメモ。RDEでUTF-8を使用する際には、設定画面で「UTF8」ではなく「UTF8N」を選択しないとうまくいきません。雀のあっちゃこっちゃさんによれば、「UTF8」はBOM付きで「UTF8N」はBOMなしなんだそうです。

200808291.gif

とりあえず、各種解説サイトで初歩的な文法をさらって遊んでみました。例えば、プログラミングのお勉強ではありがちな階乗の計算。

def factorial(n)
if n == 0
return 1
else
return n * factorial(n – 1)
end
end

print factorial(100)

RDE上でこのスクリプトを書いて、実行するとこんな感じ。

200808292.gif

わはは。たのしいな、たのしいな。

…って、これだけではいつまでたってもWebとつながりませんね。引き続き、お勉強を進めていきたいと思います。あしたはどっちだ!

MT4.1xから4.2へのアップグレード

木曜日, 8月 21st, 2008

皆さん、こんにちは。
最近オリンピックでは連日、金メダルが出たりと盛り上がっているようですが、球技の方は色々と不調続きですね。
まず、昨日のサッカーは、よく見てないですが1-3で完敗だったようですし、野球のオリンピック代表もアメリカにまで負けて4位でなんとか決勝トーナメント進出…寂しい限りです。

さて、では本題にいきましょうか。
なにやら、小粋空間さんの記事で気になるものがあったので、ご紹介しておこうと思います。

【重要】MT4.1x → MT4.2 へのアップグレード注意

上記リンクの通り、カスタムフィールドを使用しているMT4.1xは、アップグレードしないほうが良いようです。
これは、あぶないですね。
とにかく、カスタムフィールドを利用されている方は、修正されたバージョンが出るまで気長に待ちましょう。

Rubyはじめました

水曜日, 8月 20th, 2008

みなさまこんにちは、加賀田です。お盆もあっという間に終わってしまいました。みなさまいかがお過ごしでしょうか。

さて、私事ですが本日からRubyのお勉強を始めることにしました。業務で必要に迫られているわけではないので、ほとんど趣味みたいなものではあります。が、こういう取り組みをしておくとブログの更新材料に困らないですむかなあといった思いもあります…。

あとはやはり、業務で直接使わないとはいえプログラミングの知識を蓄えておくことは業務スキルの向上に欠かせないと思います。自分でプログラムを書く機会はなくとも、システム屋さんなどと意思疎通をする機会はありますからね。そういうときの共通言語として、非常に重要ではないかなと思います。

プログラムのお勉強はしたいなと思っていたのですが、言語の選択でちょっと迷いました。これまでの主な言語経験は以下のとおりです。

  • C:いちばん長く付き合いました。
  • Java:Cの次に付き合いが長いです。大学で卒業論文を書く際には、Javaで書いたプログラムで実験をしました。
  • Perl:学生のときにちょっとかじりました。アルバイトで人に教えたりしていたのですが、今ではかなり忘れてしまいました…
  • JavaScript:現職に就いてから勉強。今の業務でコードを書くほぼ唯一のプログラム言語です。
  • PHP:昨年取り組むも、なんだかなじめなくて挫折…

PHPの、HTMLにPHP文をがんがん埋め込んでいくスタイルにどうにもなじめなかった経緯から、言語の選択には若干慎重になっていました…。最終的にPythonとちょっと迷ったんですが、大学の遠い先輩にあたるまつもとゆきひろ氏に敬意を表するということで(?)、今回はRubyに落ち着きました。

現在、業務用マシンにRubyの開発環境を入れて、ちくちくさわってみています。非常にわくわくしますね。次回は開発環境のインストールについてお送りしようと思います。

MT4.2リリース

金曜日, 8月 15th, 2008

皆さん、こんにちは。
お盆休みですね。日頃はぎゅうぎゅう詰めになっているはずの通勤電車も、今週は平日の昼間のように空いていて楽チンです。

さて、昨日ついにMT4.2がリリースされたようです。
一度リリースを延期したようですが、某大作RPGのように2度目の延期ということにはならなくて良かったです。
4.2になって変わった点はオフィシャルに色々と書いてありますが、注目はやはりコミュニティ関連の機能でしょうか。
掲示板やランキング表示などの機能が追加できるようです。詳細はオフィシャルのドキュメントをご覧下さい。

コーポレートで上記のような機能を生かすのは難しそうですが、個人的には面白そうなのでいじってみたいです。

「ゼロもしくは1」という選択

木曜日, 8月 14th, 2008

みなさまこんにちは、加賀田です。弊社はお盆も無休で営業中です。お盆の間は近所のお弁当屋さんが軒並み店を閉めていて、昼食に困ります…。

さて、今回はHTMLの仕様のお話。とくにフォームコントロールの一つ「ラジオボタン」のお話を取り上げます。

ラジオボタン。複数の選択肢からひとつだけを選べる、あの丸いやつのことですね。HTMLではinput要素にtype=”radio”を指定して実現します。同じname属性値を持つラジオボタンのうち、常にひとつだけ選択することができます。

ここで、この「常にひとつだけ」というのが若干曲者。ではページを開いた直後、まだ何も選んでいない(初期)状態ではどのような表示になるのか?という問題が生じます。これについて、HTML4.01の仕様書では次のように述べられています。

If no radio button in a set sharing the same control name is initially “on”, user agent behavior for choosing which control is initially “on” is undefined. Note. Since existing implementations handle this case differently, the current specification differs from RFC 1866 ([RFC1866] section 8.1.2.4), which states:

At all times, exactly one of the radio buttons in a set is checked. If none of the <INPUT> elements of a set of radio buttons specifies `CHECKED’, then the user agent must check the first radio button of the set initially.

Since user agent behavior differs, authors should ensure that in each set of radio buttons that one is initially “on”.

すなわち、デフォルトで選択されている状態のラジオボタンを必ず一つ指定しないといけないということです。もともとは1番目のラジオボタンを初期状態で選択するようにとのことでしたが、”Since user agent behavior differs”つまり世の中のブラウザ屋さんが言うことを聞いてくれないから…と方針の変更にいたったということのようです。

で、言うことを聞かない世間のブラウザはどういう実装をしているかというと、「いずれのラジオボタンも選択されていない状態」というのを許容している場合が多いですね。IE、Firefox、Safari、Operaいずれもそのような実装になっているようです。

この実装はある種ブラウザ屋さんの過剰な親切なわけですが、とはいえこういう「ゼロもしくは1つの選択肢のみを選択させる」という仕様はしばしば要請されるものです。 HTMLの仕様に沿って解決するには、水無月ばけら氏ヤコブ・ニールセン博士も言及しているとおり「選択しない」という選択肢を設けるという方法もあるにはあります(し、これを用意しないと「選択したら最後、もとの未選択状態に戻せない」ということが問題になる場合があります)…が、上記の要請をしてくる人たちに受け入れられるほど直感的な方法ではないかもしれませんね。

HTMLの知識を持たない人たち(Web関連の仕事に従事している人たちを含めて)がWeb上の入力フォームを想像する際には、やはり紙のアンケート用紙とか質問紙のようなものをもとにイメージするのだろうと思われます。そうすると、「回答する場合はひとつだけチェック、回答しない場合は何も書き込まない」というインタフェースってやはり自然ではありますよね…。

ここはひとつ、「0以上の選択肢を選べるチェックボックス」「唯一の選択肢を選べるラジオボタン」につづく第3の「0もしくは1個の選択肢を選べる」 コントロールをW3Cさんに検討してもらいたいものです。

MTとShift-JIS

水曜日, 8月 13th, 2008

皆さん、こんにちは。
オリンピック真っ盛りですね。2日連続で金メダルが出ているようで、一昨日ご紹介したGoogleの「2008 Summer Games」のメダル数も順調に伸びているようです。

さて、本日は「MTとShift-JIS」についてです。
MTとMySQLで、文字コードをShift-JISで運用されている方がどれだけいらっしゃるか分かりませんが、先日この環境でちょっとした問題に遭遇しましたのでメモメモ。
その問題というのは、文字化け。
どうやらShift-JISは文字化けをおこし易いらしく、それはMTでも例外ではないようです。
以下のような文字を使用すると文字化けが起こります。

表,—,ソ,噂,欺,圭,構,蚕,十,申,貼,能,表,暴,予,禄,兔など

今回の場合、文字化けだけならまだ良かったのかもしれませんが、この問題の影響で記事自体が正常に保存されないという事態に陥りました。
で、いきなり対処法です。
まず、一つ目は問題の文字の直後に半角スペースをいれるというもの。
これが、一番簡単な対処法だと思います。
二つ目。データベースの文字セットをlatin1にするという方法。これは未確認ですが、こちらのサイトの方はこの方法でうまくいったようです。
三つ目。観念して文字コードをUTF-8にする。これは、最終手段でしょうか。

なんにせよ、文字コードの制約がなければUTF-8にしましょう。MTのデフォルトも確かUTF-8ですし。

label要素内に画像を置く

火曜日, 8月 12th, 2008

みなさまこんにちは、加賀田です。今回は最近気がついたInternet Explorerのバグの報告です。

表題にもある「label要素」。フォームコントロールに対してテキスト等を関連づけるものですね。とくに下のように、ラジオボタンやチェックボックスのラベルをちゃんとlabel要素としてマークアップしておくと、ラベル部分をクリックすることでチェックボックスにチェックを入れられるようになったりして非常にべんり。

<input type=”checkbox” id=”hoge” /><label for=”hoge”>チェックする</label>

コントロールひとつひとつにこうしてラベルをつけるのは手間のかかる作業ですが、アクセシビリティ上の利点を考えるときちんとやっておきたいところです。

さて、そんなlabel要素内に、ふだんとは違ってテキストではなく画像を置くようにという指示が舞い込んできました。何の気なしに、label要素内にラベル画像をおいてやったところ、IEではラベルをクリックしても何も起こらない!という事態に。

いろいろ試行錯誤が必要…かと思いきや、すでに先人があの手この手を尽くしているようでした。画像置換してもposition:relativeしても仕様書に当たってもだめとのことで、そうするとわたしにはもう打つ手がないですね…。あとはむりくりJavaScriptで同じ機能を実装するくらいです…が、そこまでするくらいならもうテキストでいいよ!

毎度IEの挙動には振り回されっぱなしですね。やれやれ…。

Googleで北京五輪を楽しむ

月曜日, 8月 11th, 2008

皆さん、こんにちは。
先週も愚痴りましたが、やはりサッカーのフランスリーグの中継はないようです。
その事実に呆然としている加藤がお送りします。

本日は、ついに始まった北京五輪をGoogleで楽しむというお話。
Googleが「2008 Summer Games」というサービスを開始したそうです。

このサービスは、グーグルマップと北京五輪のコラボレーションといった感じで、地図上に獲得メダル数が表示されたり、会場の衛星写真を見たりすることができます。

p_cg1.jpg

日本は、まだ金は1個ですが、銅を2獲っています。
今日は、北島選手が出ます。この2008 Summer Gamesの日本の金の数字を「2」 にしてほしいですね。

Googleソースコード検索

金曜日, 8月 8th, 2008

みなさまこんにちは、加賀田です。きょう、業務で調べ物をしていた際に興味深いものを見つけました。

p_20080808.gif

HTMLのframeborder属性についてGoogleで検索したところです。「frameborderに一致するコード スニペット」というリンクが現れました。初めて見つけました…。

サービスとしては以前からあるGoogleのソースコード検索ですが、こんなふうに通常検索とも連携していたんですね。

ただ、ほかの要素名や属性名でいろいろ検索してみたのですが、frameborder属性以外では「ソースコード検索」は引っかかりませんでした…なぜframeborder?ほかの言語ならもっといろいろ引っかかるんでしょうか?

参考までに、Googleソースコード検索の表玄関からもいろいろ検索して遊んでみました。プログラム言語だけでなく、HTMLのコードもいくらか出ていますね。個人的には、“lang:haskell”とかで検索してみるとちょっと賢くなったかんじですてきでした(Haskellなんて読めないですが)。

MTで同一カテゴリーのブログ記事のみ前後リンクを付ける

木曜日, 8月 7th, 2008

皆さん、こんにちは。
オリンピックが始まりましたね。
開会式はまだですが、先立ってサッカーから始まったようです。
サッカーといえば、松井大輔。
いまだに、フランスリーグのTV放送が決まりません。そのためだけに入っているケーブルTVでも放送はないようで…。
フランスリーグ開幕は今週末…。週末の楽しみが…。

さて、仕切りなおして本題に入りたいと思います。
本日ご紹介するのは、MTで同一カテゴリーのブログ記事のみ前後リンクを付けるプラグインです。

Previous and next in categoryのページからプラグインをダウンロードします。
ダウンロードしたらzipを解凍します。解凍したものを、cgi-binのほうのpluginsディレクトリにアップするとインストールが完了します。

アーカイブテンプレートのブログ記事に下記のように記述すると、同一カテゴリーのブログ記事のみ前後リンクの完成です。
<ul>
<MTEntryPreviousInCategory>
<li><a href=”<$MTEntryPermalink$>”>前へ</a></li>
</MTEntryPreviousInCategory>
<MTEntryNextInCategory>
<li><a href=”<$MTEntryPermalink$>>”>次へ</a></li>
</MTEntryNextInCategory>
</ul>