[ruby]「嶽」の文字化け問題

Ruby1.8.6で「嶽」の字をtosjisでShift-JISに変換すると、なんだか意図しない文字(F7 D3 0A)に変換されてしまった。

require 'kconv'
str="嶽"
print str.tosjis

(utf-8で保存して実行してね。)

Rubyist Magazine – 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconvによると、

>先述の Kconv#to* では変換元の文字コードを推測しているため、推測が外れていた場合は変換結果が文字化けしてしまいます。このような危険性を避けるため、変換元の文字コードが分かっている場合は、なるべく文字コードを明示的に指定するようにしましょう。

とのこと。

print str.kconv(Kconv::SJIS, Kconv::UTF8)

でちゃんと変換できた。

“嶽 文字化け”でググっても出てこなかったので、とりあえず記事にしておこう。
ちなみに、「佐渡ケ嶽部屋」もダメだった。「嶽」の字が鬼門らしい。

Google検索一位のサイトを列挙する

googletop.png
変数名とか、データベースのフィールド名とかで、アルファベットとハイフンのみで名前を作らないといけないことがあります。
一個二個だったら真面目に考えるのですが、ある数を超えるとかなり面倒になってきます。

“マクドナルド”,”ミスタードーナツ”,”モスバーガー”→”mcdonalds”,”misterdonut”,”mosburger”

こういう時、Googleに「マクドナルド」と渡せば、まず確実に”http://www.mcdonalds.co.jp/”が1位にでますから、そこからwwwとco.jpを外せば、おおよそ正しい綴りの名前を作ることが出来ますよね。残る問題は、100個あるのをいちいちGoogle検索するのか、という問題で。そんなのはコンピュータがやればいい。

というわけで、さくっと書いてみたphpスクリプト。$keywordsにある文字列をGoogle検索して、それぞれ1位の検索結果のURLをリストにして表示します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Google一位検索</title>
</head>
<body>
<?php

$keywords = array(
	'マクドナルド',
	'ミスタードーナツ',
	'モスバーガー'
);

$results = array();
foreach($keywords as $keyword){
	$url = "http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=";
	$url .= urlencode($keyword);
	$html = file_get_contents($url);
	#$html = mb_convert_encoding($html,'UTF-8','UTF-8');
	 
	preg_match('/<a href="([^"]+)" class=l>/',$html,$link);
	$results[$keyword] = $link[1];
}

print "<ul>";
foreach($results as $key=>$value){
	print "<li>$key => $value</li>";
}
print "</ul>";
?>
</body>
</html>

入力した単語を変数名にするWEBサービス、とか考えたのですが、あんまり実用的じゃない気がするので、とりあえず作ってみたソースだけ公開してみます。なんかおもしろい使い途があったら自由に使っていただいて結構です。

iphoneと他の携帯の併用

iphoneを買った結果、今まで使っていたAU携帯のパケット定額は解除してしまったので、電車の中や布団の中で、携帯ではなくiPhoneを使っている時間が長くなりました。
結果として、AU携帯にかかってきた電話に気づかなくて取り逃す事故が連発。

対策として、AU携帯をとりそこねた時にはiPhoneに転送するようにしてみました。

着信転送サービス | 通話オプション | au by KDDI

注意点としては、AU携帯で簡易留守録を設定していると、転送されずに留守録になってしまいますので、これを解除しておく必要があります。
KDDI au: 簡易留守メモを利用する > 簡易留守メモを設定する

これで、Tap Defenseに夢中になっていても大丈夫ですね。

[selenium][warn] Link has target ‘_blank’, which is not supported in Selenium!

WEBサイトに対して自動テストを実施するためのツールSelenium IDEをお試し中。これがあればWEBアプリケーションの生産性は明らかに向上するようなツールで、もっと早く試しておけばよかったなぁ、と思うことしきり。

そういうわけで今後どんどん使っていこうと思っているSeleniumなのですが、取り急ぎ困ったことが一つ。target=”_blank”のリンクはクリックさせてくれないみたいで。

[warn] Link has target ‘_blank’, which is not supported in Selenium! Randomizing target to be: selenium_blank*****

といわれてテストが止まってしまいます。

target=”_blank”で開いたウィンドウの先で更にアレコレしたい場合はダメですが、とりあえずポップアップで外部サイトに飛ばせるようになっていることをテストしたいだけであれば、こんなテストで代用することが出来るみたいです。

<tr>
<td>verifyElementPresent</td>
<td>//a[@href='http://mogya.com/']</td>
<td></td>
</tr>

もぎゃんらんどでは、seleniumでばりばりテストしながら開発されたWEBアプリケーションを作ってほしいお客様を募集しております。

Movable Typeは設定がいい加減でも動いてくれるので注意

先日いいめものWEBサーバの移転をしたのですが、昨日になって記事が書けないことに気がつきました。
調べてみると、新旧サーバでファイルパスが違うのに、単純にファイルコピーだけして動いたからOK、てな対応をしていたためと判明。mt-config.cgiの設定を直して、「設定-ブログの設定-公開」からサイトパスを直せばちゃんと動くようになりました。

Movable Typeは静的なファイルを持っている(再構築した時に生成されるアレです)ので、データベースにアクセスできない状態でも、エンドユーザーさんはサイトを正常に見ることが出来るのです。
動的生成に設定を変更していたり、WordPressを使っていれば、DBにアクセスできなかったらページが生成できなくなるから、すぐにおかしいと気づくことが出来たのですけど。

教えてくれよ、と思わなくもないですが、エンドユーザーさんに迷惑をかけることなく動いていたのは見事といえば見事で。静的ファイルも悪くないなぁ、と思いました。

北野坂 栄ゐ田さんのサイトが公開されました。

神戸のウェブ勉強会 ウェブテコのご縁で、北野坂にある栄ゐ田(えいた)というお店のウェブサイトの作成をお手伝いさせていただきました。
北野坂 栄ゐ田
eita.png

  • Design:川辺 英之 (株式会社エープラス)
  • Assistant:北方 基一 (mlabo.cc)

いただいたイメージを元にHTMLとCSSを起こして、JavaScriptによるスクロールや縦書きの実現などのWEB開発を担当させていただきました。

ご覧の通り、お品書きをイメージした横長のデザインになっています。WEBの世界はテキストが左から右、上から下へ流れることを前提にしているため、右から左に移動するサイトを作るのはかなり大変でしたが、最終的にXHTML 1.0 StrictなHTMLに落とし込むことができました。

VPSを検討してあきらめた話

#オチはありません。

サーバの移行を検討しています。

今使っているのが、さくらの専用サーバ。月額7800円で、完全に一台貸していただけるサービスです。
スペックも使い勝手もいいので満足しているのですけど、先日の悲劇をかんがえると、
やはり開発用と本番運用のサービスは分けておきたいな、と。

今よりサーバ代が高くなるのは経営的にナシですが、最近だと、仮想化を利用して、root権限付きでも安価なサービスが増えて来つつあります。うまく使ったら二台借りても今より安くなるかも。

試してみたのはこの二つ。

linode

Linode.com – Xen VPS Hosting

にちゃんねるとかで評判の、自由度の高いVPSサービスです。月額$20なので、一台借りて試してみました。

WEBからの管理画面がすごくて、サーバの再起動はもちろん、(ブラウザ上で)コンソールに接続したりすることもできます。
linode.PNG
これはすごい。サーバのリブートを人力でやる必要あるのかなぁ?と思っていたのですが、ここまでできるとは。

でもね…

あきらかに応答速度が遅いのです。WEBはそうでもないのですけど、SSHでつないだ時の応答がもっさり。
ping打ってみたら、国内のサーバの3倍くらいかかっているから、そりゃあ遅いですよね。

絶対ダメかというとダメでもないのですが、この辺が遅いと、あきらかに開発時のモチベーションに響いてくるので、これはいったんパスです。

CPI VPSスケーラブルプラン

 KDDI子会社の KDDI Web CommunicationsさんがやっているVPSサービスです。国内の会社でありながら、一年契約すると1890円/月!

テストサーバーを用意していただけたので使ってみました。

たぶんこのサービスを調査したほとんどの人が気にしているこのエントリですが。

VPS環境で、メモリ不足でgemが使えない? (Segmentation fault) Kawa.netブログ(川崎有亮)/ウェブリブログ

その後、設定の改善が行われたそうで。
メモリ設定の改善について – VPSスケーラブルプラン 開発者ブログ

実際、ボクがやった範囲では、普通にgemをつかってrailsをインストールして、webrickサーバにアクセスすることができました。

そういうわけで、メモリに関しては、言われているほどギリギリではないかなぁ、という印象。たぶん最近の改善が利いているのでしょう。

そういう改善をしていただけるサービスなら前途有望だし、いっそ乗り換えちゃおうか、と考えたのですが。

  • 初期費用9800円!
  • DNSサーバを提供していただけないので、自分でbindあげないといけません。メモリ問題が更に加速!

メモリ使い切った時にスワップせずに落ちるというのは、やっぱり大きな問題で。そのことを気にしながらサービスを全部移転させるとなると、相当の(時間的精神的な)コストがかかります。

うう~ん、と悩んだ末に、当分棚上げすることに決めました。

さくらインターネットさんで同様のサービスはじめていただけたら、気持ち的にはずいぶん乗り換えやすくなるのですけど。内部ではきっと検討しているだろうと思うので、楽しみにお待ちしております。

ブラウザサイズを変えてテストをする

今ちょっと変わったサイトを開発中です。
開発中に「1280×1024のブラウザで見ると様子がおかしい」というレポートをいただいて。

そういえばあまりそういうテストをしていなかったな、と思って、ブラウザのサイズを自在に変える仕組みというのを作ってみました。

ウィンドウのサイズを選んでください。

  • ボタンを押すとブラウザのサイズが変わります。
  • IE7だと、複数タブを開いた状態では上記動作が利かないみたいです。最初にこのページを開いてブラウザサイズを変えてから所望のサイトに移動するのがいいみたい。
  • ウィンドウを指定したサイズに変更するを参考にしました