Web技術 Archive
MT5で通知メールが化ける件
- 2010年1月 6日 00:32
- Web技術
movabletype 5 は投稿などイベントがあったときにメール通知する機能がありますが、内容に日本語を含むと文字化けを起こすことがあります。
その場合、mt のアプリケーションルートにある mt-config.cgi に「MailEncoding ISO-2022-JP」と一行書き加えると直ります。
備忘録なり。
- Comments: 0
- TrackBacks: 0
自宅サーバ環境の消費電力を計ってみた
- 2009年9月23日 14:55
- Web技術
今年のシルバーウィークは5連休。
せっかくなので、工画乃郷などを置いている自宅サーバ環境の消費電力を計ってみました。
サーバ環境

左から...
- ルータ: マイクロ技研 SuperOPT GFive
- 光終端装置: GE-PON
- スイッチングハブ: LSW3-GT-5NS
- ひかり電話アダプタ兼ルータ: RT-200NE
- サーバ: Let's Note CF-T2
ひかり電話ルータは手持ちのルーターにぶら下げることができません。にもかかわらず機種はNTTが決める為、性能が低い機種に当たることもあります。その場合は上図のようにスイッチングハブを挟むと良いでしょう。(ひかり電話はただ繋ぐだけで機能しますので、プロバイダ契約が1つのみの場合、PPPoE設定は手持ちのルータ側に施します)
電力は?
赤で囲った部分を計ってみると平均23Wでした。
電気代に直すと、月300円くらいですね。
うち、サーバの Let's Note CF-T2 はなんと3W。
ということはネットワーク機器が20Wも食っていることに...。
他の皆さまはどうでしょう、気になります。
- Comments: 0
- TrackBacks: 0
Google Chrome のバグっぽいもの
- 2008年9月14日 22:20
- Web技術
Google Chrome 0.2.149.29 、JavaScript の表示領域取得がうまくできません。
| 高 さ |
document.documentElement.scrollHeight | 8 |
|---|---|---|
| document.documentElement.clientHeight | 500 | |
| 幅 | document.documentElement.scrollWidth | 700 |
| document.documentElement.clientWidth | 700 |
※HTML 4.01 Strict
document.documentElement.scrollHeight はブラウザの表示領域の高さをスクロールバー分込みで取得するものですが「8」ってどこから!?「0」ならともかく。
scrollWidth は正しく取得できるのでバグでしょうなぁ。
とりあえず↓でしのげます。
IE, Firefox, Opera, Google Chrome で動作確認済。
var H = ( document.documentElement.clientHeight || document.documentElement.scrollHeight ) ;
- Comments: 0
- TrackBacks: 1
IEでObjectを動的生成すると動かない、の対策
- 2008年9月14日 16:24
- Web技術
SWFObject などで Object タグを動的に生成した時、IE7 以降では表示がうまくいかない場合があります。
まずタグがちゃんと生成されているか innerHTML などでチェックします。生成されていなければ引数などを確認しましょう。
ちゃんと生成されていて他のブラウザでは見えるのに IE では見えない、動画を埋め込んだのに再生されないといった場合は、Object が描かれた後に再描画を伴う何かをすると解決する事が多いです。
<div id="A"></div>
<script type="text/javascript"><!--
var O = new SWFObject("hoge.swf", "fuga", "100%" , "100%" , "9.0.0", "#ffffff");
O.write("A");
document.getElementById('A').style.margin = 0 ; //←これ
// --></script>
この例では margin = 0 としましたが、もちろん他の宣言でもOK。
与える値は元と同じでもOK。
とにかく与えればOK。
あとは、WIndows XP SP3 以降とVistaで導入された保護モードが悪さをしている可能性があります。保護モードを無効にして動くかで切り分けできますね。
こちらの解決方法はまだわかっていません。
- Comments: 0
- TrackBacks: 0
WSUSの仕様について(怒)
- 2008年9月13日 23:01
- Web技術
WSUSはアップデートファイル取得用に、ポート80が通るサーバに [Selfupdate] 仮想ディレクトリを要求しますが、このサーバにホストヘッダを指定してはダメなようです。
「Selfupdateサービスが起動できない」エラーの解決方法、いくら調べても権限設定くらいしか見つからなかったのだぞ(-5) ←Civ4風
設定を直したら [Auto Update] サービスの再起動を忘れずに。
- Comments: 0
- TrackBacks: 0
[IIS6] ワイルドカードSSLを使って、ホスト名のみで区別されたWebサーバ群を運用する方法
- 2008年9月 9日 22:08
- Web技術
IISで複数のWebサーバを設置するには、通常「IPアドレス」「ポート」「ホスト名」のいずれかが異なればOKですが、SSLを使う場合は「ホスト名」が異なるだけではダメとされています。
ということはワイルドカードSSLを使うにも、全部異なるIPかポートにしないとダメなの?「ホスト名」を変えるだけでOKにする方法はないの!?
...そんな貴方に「SSLホストヘッダサーババインド」がございます。
なんとコマンドプロンプトに↓魔法の言葉↓を入れるだけ。
cscript.exe adsutil.vbs set /w3svc/<サイトの識別子>/SecureBindings ":443:<ホスト名(完全装飾ドメイン名)>"
あ、Windows Server 2003 SP1 以上限定です。
試しにやってみました。
識別子 66, 67, 68 を持つサブドメイン a, b, c に魔法の言葉を掛けてみます。
cscript.exe adsutil.vbs set /w3svc/66/SecureBindings ":443:a.dsk.jp"
cscript.exe adsutil.vbs set /w3svc/67/SecureBindings ":443:b.dsk.jp"
cscript.exe adsutil.vbs set /w3svc/68/SecureBindings ":443:c.dsk.jp"
するとどうでしょう。
SSL:443 を持つサーバ群がすべて「実行中」に!

ちなみに一度設定してしまえば、再起動しても大丈夫。
すばらしい!
注意
バインドはドメイン名が異なるサーバ同士でも可能ですが、その中で使用できる証明書は一つのみです。
SSL通信は通常、ホストヘッダは暗号化され、特定のサーバに到達した後に復号が行われます。
そのため「1.jp」「2.com」など異なるドメイン同士でバインドするとSSL通信が意図しない方に到達し、復号の過程でサーバ証明書不一致エラー...という事が起こり得ます。
複数の証明書を使う場合は、従来どおりIPかポートを変えましょう。
- Comments: 0
- TrackBacks: 0
ASP.NETのPostBackにおける、IEに起因する注意ふたつ
- 2008年6月23日 19:45
- Web技術
IISの「規定のドキュメント」でPostBackするときはURLに注意。
IEは「/」など省略したURIで発生したPostBackを切り捨ててしまいます。「/」でPostBackするとまっさらの「/index.aspx」が開くので、IE内部でURL転送かけてる感じなのかな。
回避策は「/」でアクセスさせない事。
サイトのトップの場合は転送かけるように設定しましょう。
フォームでEnterキーを押すとSubmitされますが、IEでは入力コントロール(ボタンでないinput要素)が2つ以上ないと入力内容が送られません。また要素があっても内容が空だとダメです。(送信ボタンをクリックしたときはOK)
はっきり言ってスクリプトのエラーと紛らわしいので、ダミーのフォームを一個作って回避しましょう。type="hidden"(runat="Server"にせずvalueを入れる) か Style="display:none;" がよさげ。当然 Visible="false" ではダメですよん。
- Comments: 0
- TrackBacks: 0
datetime型から日付で集計する方法 (MSSQL)
- 2008年5月30日 19:36
- Web技術
例えばWebログを取り貯めているデータベーステーブルから、一日あたりのアクセス数などを知りたくなったとします。
ある一日だけであれば WHERE で簡単に出ますが、これで1か月分調べるのは酷。といって単純に GROUP BY すると日付+時間で丸まるので意味がない。日付だけで丸めるにはどうすればいいんじゃー!?
MySQLのは簡単に見つかったが、MSSQLのは見つからなかったので、おいら流のやり方を以下に記しますよ。
-----
SELECT CONVERT(varchar,日時,111) As 日,Count(*)
FROM ログのテーブル
WHERE 日時 BETWEEN 対象期間はじめ And おわり
GROUP BY CONVERT(varchar,日時,111) --ここでAsは使えない
ORDER BY 日
-----
SELECT と GROUP で CONVERT を合わせるのがミソ。ORDER BY は As のでやるべし。ちなみに111はyyyy/MM/ddに相当するプロパティ値でそ。
大雑把ですが値が一発で出るので便利ですぞ。
- Comments: 1
- TrackBacks: 0

