2011年7月アーカイブ

現在のdo-gugan.comサーバーは4,5年前に購入した激安サーバーhp ML115をCPU換装、HDD増設しつつ使っています。最初についてた160GBのHDD(OSが入ってるパーティション)がそろそろ心配になってくる頃です。HDDも合計4台となり消費電力、発熱、騒音面でもイケてない状態。LVMなので古いドライブから新しい大容量ドライブにパーティションを移動していけばいいんですが、仮想環境とあいまってややこしい状態になってて恐くて手を出せない(^^;)。また先日でたCentOS6は結構あれこれ変わっていて今までのようなアップグレードインストールは難しいっぽい。

ならいっそ、ということでLion入りのMac mini Server (MC936J/A)を購入しました。省電力、静音、省スペースと三拍子揃ったハード。光学ドライブがなく密閉度が高いのも好感度高いです。吊しの4GBメモリ、500GB HDDx2台モデルを購入し、メモリを8GBに増設(置換)、HDDの1台をSSD(Crucial m4 128GB)に換装しました。本体はLABIで3,000円引き、13%ポイント、メモリも爆安とはいえ、トータルで10万超え。ベース価格がアフォみたいに安かったML115(Lights-Out入れて5万弱だったような?)に比べると割高感がありますが、上記三拍子や我が家ですっかりメインになったMacとの相性や連携機能を考えればアリかなと。

内蔵ストレージは2.5inchなので弱いですが、FireWire800、Thunderbolt等インターフェイスは充実してますし、近々iSCSI対応のNASが手に入りそうなのでそれと連携してもいいかなとか。

ML115が一昨年くらいから夏に不調を来すようになってて、今年も予防策として扇風機の風あてっぱなしで運用してるくらいなので、とっとと移行したいと思っています。

予定では、メール、Webといった基本サービスはOSX Server、Linuxでないと動かせそうにないサービスはVMWare上のCentOSで。あとWHS2011も一緒に購入して来たのでこちらも移行するつもりです。

■ハード面

光学ドライブスロットがないのでとてもスッキリしていて良いです。デスクトップ用としてはポートやスイッチ類が全て背面にあるのはユーザビリティ的に不利ですが、サーバー用であれば無問題。

片方SSDにしたせいもあるんでしょうが、セットアップ作業厨、アイドリング状態では耳を近づけてもほぼ無音。ぴったり耳をつけるとモーター音がかすかにしてるかな、って位。2chで天板の熱が指摘されてましたがいまんとこ気になりません。エンコードやトランスコードをしない限りまったく心配はなさそうです(ちなみに天板よりにHDD、その下にSSDという配置)。

Thunderbolt I/FのついたRAID箱の登場が待たれます。

■換装作業

購入後一度も電源を入れずに換装作業実施w。換装作業はこちらのブログを参考にさせていただきました。工具としてトルクスドライバーのT6とT8が必要。またm4が厚み的に微妙に入らないのでケースの片側を外すのにプラスドライバーを使いました。試してないですが、ケースが干渉するのは入れる時だけなのでもう少し深くまで分解して入れるのであればそのままでも入るんじゃないかって印象でした。まぁSSDだし据え置き機なんであまり気にせず、元のHDDについてた絶縁シートだけ基板剥き出しの側に貼っておきました。

ちなみに2台のHDDは縦に積まれるように入っており、底面側からアプローチする形なのですが最初に見える下側のドライブにOSが入っていて、SSD換装には便利な作りになっていました。もう1台も換装する場合はさらにバラす必要があるっぽいです。あと元から1台しか入ってないモデルだとスペースはあるもののケーブルが内蔵されていないので現状追加は難しいようです。

難易度としてはMBPよりは面倒だけどメチャクチャ難しいという点はないです。普通の自作erならできるでしょう。唯一気をつけるべきなのは上記ブログにもあるように金属メッシュパネルを取り外す時。円形の窓の奥の方に若干刺さっているので、それを引き出してから持ち上げないと簡単にひん曲がってしまいます。

いまんとこ6Gbpsでリンクしてるようです。

■インターネット経由リカバリ

OSと共にリカバリ領域の入った下側のドライブを換装してしまってもLion世代のマシンはインターネットからリカバリできます。スゴい時代になったものです。電源投入時にCommand + Rを押すとリカバリーモードに入るとのことですが2点ハマりました。

1つはたまたま使ったUSBキーボードにCommandキーに相当するWinキーがついてなかった(^^;)。サーバー用ということで純正キーボードを用意せずに一時的にそこら辺に余ってるキーボードで済ますケースも多いと思いますが地味にハマります。またBluetoothキーボードはリカバリーモード前には上手くペアリングできませんでした。

あと「Command + Rを押しながら電源ON」とあちこちに書かれてますが、本当にCommand + R押さえてから電源入れるとうまくリカバリーモードになってくれませんでした(?マーク入りのフォルダアイコンが点滅する状態に)。先に電源を押して「ジャーン」が鳴った直後くらいに押したら行けました。

ちなみに電源ボタンは正面から見て右側背面にあります。

リカバリーツールのDLが3分程度。SSDにパーティションがないとリカバリーしようとしても指定できないので先にディスクユーティリティを選んで領域確保するのもポイントです。ディスクイメージのダウンロードは予測で3時間弱と出たので放置してテレビ見てたんですが実際には1時間かからないで完了しました。勝手に再起動してインストール。こちらも最初19分と出ますが実際にはもっと短い時間で完了。こっちはSSDのお陰もあるでしょう。

純正SSDではないので当然Trimは「いいえ」。Trim Enablerで強制オンにしてみました。いっそ問題が出るなら早め(移行作業中)に出てくれってことで。

 

そんなこんなで2時間弱くらいで初期設定が完了しました。これからサーバー設定を少しずつ進めていきます。

昨日から始まったSoftbankの下り42Mbpsデータ通信サービスULTRA-SPEED対応モバイルルーター007Zを買って来ました。

発表時はあまり興味なかったんですが、直前の記事を改めて読んでいて、最近の自分の使い方ならさして帯域制限の影響を受けないしお得なんじゃないかという気がしてきました。また現在主に使っているWiMAXが、

  • DIS Mobile WiMAXのアカデミックプランが使えなくなった
  • 圧倒的に使用頻度が高い港北みなも(横浜市都筑区)店内の電波は弱いまま
  • WM3500Rの安定性がイマイチ

という状況で少し魅力が薄れてきたのも理由です。
AirVideoとかで自宅サーバーの動画をストリーミングで再生!とかやってた頃は帯域制限無しで高速、というのは代えがたい魅力だったんですが、最近めっきりやらなくなりました。だいたい週1,2回、1〜3時間程度のカフェ使用でWebやTwitterがイライラせずに使えればいい、というのが最近の要求仕様です。さすがにB-MOBILEの低速プランは使う気にならないけど、まぁ下りで数Mbps安定して出ればいいや、という感じ。あとはpingレイテンシが低いといいですね。

■ULTRA-SPEEDプラン

詳細は公式サイトを見ていただくとして、ごく簡単にまとめると、

  • Softbank網のメインエリアとE-MOBILE網のサブエリアが1台で使い分けられる
  • それぞれの下り42M(理論値)通信方式に対応している
  • SB、EMそれぞれ帯域制限がある(後述)
  • 定額プランだと月3,880円とWiMAXと同額
  • 更に月月割1,400円が24回
  • 海外でも使えるけどローミング代は高め
  • 2年単位の更新で途中解約は1万円程度の解約料

という感じです。本体が33,600円なので月月割で相殺して実質無料になりますが、σ(^^)は一括で購入しました。月々の体感料金は2,480円となります。でヨドバシでポイントがつく分、一括の方が一ヶ月分程お得かと。

問題の帯域制限ですが、GIGAZINEの記事によれば、

・ソフトバンクモバイルのネットワーク

前々月の月間パケット通信量が3000万パケット(約3.66GB)を越えた場合、当月1ヶ月通信速度を制限する場合がある

・イー・モバイルのネットワーク
24時間ごとのパケット通信量が300万パケット(約366MB)を超えた場合、当日の21時~翌日2時に通信速度制御を実施

となっています。自宅で固定回線代わりに使うわけではないので、σ(^^)の場合はまずひっかかることはないでしょう。>3.66GB
イーモバイルの場合、ちょっとWebみてれば行きそうではありますが、まさに制限時間対の21〜2時頃に使う場合が多いσ(^^)の場合どうなるんでしょう?翌日に制限?だとすると二日連チャンで使うことはあまりないので、これまた問題ないということになります。

■007Z

Pocket Wi-Fi D25HWよりも軽いですが厚みは若干増した、という感じ。WM3500Rと比べるとかなりコンパクトです。通信中は結構熱を持ちます。最大の弱点はバッテリーの使用時間が4時間という点でしょうけど、これはD25HW同様追々予備バッテリーが買えるようになることを期待。
充電端子はmicroUSBです。PCからの充電や通信中の充電ができるか、などは未検証。おいおいネットで報告が出てくるの待ち。

ざっと触った感じ、メインエリアとサブエリアの切換はブラウザから設定画面にアクセスしないとできないみたいです。本体操作でできてほしいですね。

■ベンチマーク!

routers

行き付けの港北みなも内マクドナルドで比較ベンチマークをしてみました。土曜日の夜9時台のデータです。

・店内無線LAN(BB mobilepoint)

mobilepoint

前はもっと出てたんですが最近こんな感じ。なぜか上りの方が速い。pingはサスガ。いずれにせよブツブツ切れる(認証画面が何度も出る)ので実用になりません。

・店内無線LAN(mopera-U/M-ZONE)

mopera-U

同施設内のスタバで使えるmopera-U。爆速ですが、こちらもたまに認証が切れて再接続操作が発生するんですよね。というかこのベンチ取るだけでも途中でパケ詰まりして4回ほど再接続が必要でした(^^;)。MacBook Air側の問題の可能性も高いですが。

・WM3500R (WiMAX)

wimax

この店内では電波1本ギリギリの環境なのでそれを差し引いて見ておいて下さい。屋外ではもう少し出ます。

・PWR-100F (EMチャージ)

emobile

一時期横浜では1Mbpsも出なくなったんですが少し増強されたか、たまたま休日だったからなのか。

 

さぁ、そして本命の登場!

・007Z (メインエリア=Softbank)

ultra-main

・007Z(サブエリア=E-mobile)

ultra-sub

どちらも7.2Mbps超えてないので42Mbpsエリアなのかどうか微妙。PWR-100Fより出てるのでサブエリアはG4対応エリアなんですかね?まぁいずれにせよ個人的には常にこれくら出てれば充分ですね。pingもイイカンジ。サブの方が若干速いのは気になるけど、トータルバランスと帯域制限のひっかからなそうさで当面はメイン使用メインで大丈夫そうです。

また本当に42Mbpsエリアかもあやしいので、別の場所でも試してみようと思います。

やはり速度でいえば公衆無線LAN接続には負けますが、どうもσ(^^)の使う店舗では不安定でイライラが募るので、Webが実用的に見られるならモバイルルーター常用でいいかって気分です。たまたまルーターを持ってない時とかのために契約は残しておくか悩ましいですが。

iOSプログラミングの話です。

アプリ内にWebブラウザコンポーネントであるUIWebViewを埋め込んで簡易的にWebページを扱えるようにする必要があったんですが、その表示倍率を直接制御するメソッドやプロパティがありませんでした。海外の掲示板も含めて結構質問は出てたんですが、有用な回答は得られず。

まず散見されたのはUIScrollViewの上にUIWebViewを置いて、UIScrollView側でピンチやスクロールを制御すればいいんじゃね?というアイデア。実際にやってみたんですが、以下の問題点がありました。

  • UIIWebViewの標準操作であるダブルタップでブロック最適化ズーム(?)動作が使えなくなる
  • ズームの品質が低い(文字がボケる)

そして何より、よくよくAPIガイドを読んだら「UIWebViewとUITableViewをUIScrollViewの上に置くのは予期せぬ動作を引き起こす可能性があるので推奨しない」と書いてあった。禁止ではないのでAppStoreの審査でリジェクトされるといほどではないかも知れないけれど、将来的なAPIの仕様変更でおかしなことにならないとも限らない。

で、悩んだ末に辿り着いた答えは、stringByEvaluatingJavaScriptFromStringメソッドを使ってWebコンテンツを書き換える方法。

まず単純な例。

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat: @"window.scrollTo(0, 100);"]];

これを実行すると、Webコンテンツ上で「window.scrollTo(0,100);」というJavaScriptを実行したことになります。つまり画面が下に100ピクセル分スクロールします。

これを応用して、iOSのブラウザに対するズーム定義をmetaタグで追加してやる、ということをしてやるワケです。metaタグの仕様についてはAppleのドキュメントを参照するか、「meta viewport」などでググって下さい。

今回の閲覧対象ページはこのmetaタグ自体が存在しなかったので、タグ自体を作成してheadタグの中、titleタグの前に挿入しています。

[webView stringByEvaluatingJavaScriptFromString:@"var bodyNode = document.getElementsByTagName('head').item(0);"  
"var titleNode = document.getElementsByTagName('title').item(0);"
"var newNode = document.createElement('meta');"
"newNode.name = 'viewport';"
"newNode.content = 'width = 1024, initial-scale = 1.2, minimum-scale = 0.3, maximum-scale = 1.2';"
"bodyNode.insertBefore(newNode, titleNode);"];

@””の文字オブジェクトは;で切らない限り改行入れて列挙できるので、見やすさの為にそうしています。

1行目でbodyNodeという変数にheadタグの位置を取得。

2行目でtitleNodeという変数にtitleタグの位置を取得。

3行目でnewNodeという変数にmetaタグを作成。

4行目でそれに「name=’Viewport’」に相当する記述を追加。

5行目に更に「content = 'width = 1024, initial-scale = 1.2, minimum-scale = 0.3, maximum-scale = 1.2';" 」を追加。数値は適宜状況にあわせて調整を。ちなみに=の前後にスペースがないとダメとどっかで読んだのでそうしてます。

6行目で、bodyNode(=headタグ)内のtitleNode(=titleタグ)の直前にnewNode(=metaタグ)を挿入して完成です。

 

最初から「<meta name=’viewport’…>」が書かれているページに対してはcontentだけを書き換えるような処理をしないといけないので、汎用的なWebブラウザとして使うなら分岐処理も入ったもう少し複雑なJavaScriptが必要でしょうが、今回は対象サイトが固定のアプリなのでこれだけで済みました。

参考になれば幸いです。

アーカイブ

ウェブページ



Powered by Movable Type 4.25