メイン

2010年11月24日

Yahoo! Japanの約80%がGoogle化

11月24日(水)、Yahoo!からのお客さんの数がまた激減。

1つ前の記事で紹介したシェルで調査したところ、Yahoo! JapanのGoogle化率が約80%という結果が出た。

12月1日にGoogle化率が100%になる予感がする...。

2010年11月18日

Yahoo! Japanの約50%がGoogle化

11月17日(水)から、Yahoo!からのお客さんの数が激減したので、Google化したYahoo!のユーザが増えたのでは?と思い、調べてみた。 以下の法則を利用して、シェルを作った。
  • YSTの検索エンジンを利用した結果には、一番下に「Search Results provided by Yahoo! Inc.」の表記がある。
  • Googleの検索エンジンの検索結果には、上記の表記がない
  • YSTかGoogleかは、Cookieで決まる
シェルの内容
#!/bin/sh

MAX=100
COOKIE_FILE="/tmp/cookies.txt"
OUTPUT_TMPHTML="/tmp/yahoo.html"
YST_KEYWORD="Search Results provided by Yahoo! Inc."
USER_AGENT="Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1"

for i in `seq 1 ${MAX}`
do
	# Yahooトップを表示、Cookieを保存
	wget --output-document=/dev/null \
		--output-file /dev/null \
		--user-agent="$USER_AGENT" \
		--save-cookies=${COOKIE_FILE} \
		"http://search.yahoo.co.jp/"

	# Yahooで検索
	wget --output-document=${OUTPUT_TMPHTML} \
		--output-file /dev/null \
		--user-agent="$USER_AGENT" \
		--load-cookies=${COOKIE_FILE} \
		"http://search.yahoo.co.jp/search?p=xxx"

	# YSTの結果かGoogleの結果か検証(YST⇒1、Google⇒0)
	YST=`grep "${YST_KEYWORD}" ${OUTPUT_TMPHTML} | wc -l`

	# Google化した件数を保存
	GOOGLE_TOTAL=`expr ${GOOGLE_TOTAL} + 1 - ${YST}`

	# 待機
	sleep 3
done

echo "${MAX}件中、${GOOGLE_TOTAL}件がGoogle化"
echo "Google化率:`expr ${GOOGLE_TOTAL} \* 100 / ${MAX}`%"

exit 0;
何度やっても、50%前後。おそらく、Yahoo! Japanのユーザの約50%がGoogleの検索結果を見ていると思われる。 12月には、完全にGoogle化するのか?独占禁止法の話は、どうなったのだろうか...。

2008年12月30日

VMware Server 2.0

2009年用のサーバは、VMware Server 2.0 を使って、以下のような構成にしました。

sg09_vm.png

SG09、NW01などの英字2文字+数字2文字はホスト名、その下には主なアプリ名を書いています。OSはすべてFedora10です。ホストOSは、標準のインストール、ゲストOSはすべてのパッケージのチェックを外した最小インストールをベースにしています。

前回の2008年のサーバも、VMware Server 1.0を使って、Apache&Tomcatを動かしていたのですが、それ以外のKeepalived、MySQL、SendmailなどをホストOSに入れてしまい、いまいちVMを使っている意味がありませんでした。

今回、ホストOSには、VMware Serverの機能とファイルサーバの機能しか持たせないと決め、その他の機能は、ゲストOSで動かすことにしました。

まずは、VMware Server のインストール手順を書いておきます。

続きを読む "VMware Server 2.0" »

2008年12月15日

筐体も新調

筐体は使いまわしで、今回、余っていた筐体は、アルミの筐体でした。
後ろも前も8cmのファンで、かなりの騒音。。。

2つあるファンのうち、1つを8cmの枠に収まる9cmの静音のファンに変更し、
もう1つは電源を外しました。でも、まだうなるような騒音が消えませんでした。

古い250GBのHDD×2台と、今回買った500GB×2台つないでいるのですが、
この4台のHDDが共振してすごい音がしているみたいでした。

HDD振動防止のテープをつけても解消されず…、思い切って、筐体を新しく買いました。

sg09.jpg

3R SystemのR110-SLです。後ろ側12cm、前側14cmのファンで、かなり静かです。
HDDの共振も解消されました。

2008年12月 3日

2009年マシン構築開始

毎年、年末年始に新しいサーバを作ることにしてますが、今年は、少し早く2009年用のマシン構築に着手しました。


sg09_parts1s.jpg


sg09_parts2s.jpg

Core i7にしようと思いましたが、対応するマザーボードも高かったので、結局、Core2Quad Q9550にしました。

すべてネットで買い、CPU:35,610円、マザー:14,380円、メモリ(8GB):10,300円でした。

Fedora10を入れて、VMWare Server 2.0を入れる予定です。

2008年9月20日

ブログのドメイン移行

複数のダイナミックDNSのサービスを利用して、Apacheの名前ベースのVirtualHostで運用したいと思ったので、ブログだけ、pooh3.dip.jpからsugihiro.ddo.jpにドメインを移行してみました。
NameVirtualHost *:80

# pooh3.dip.jp
<VirtualHost *:80>
  ServerName pooh3.dip.jp
  DocumentRoot "既存のコンテンツのパス"
  (中略)
  Redirect permanent /blog/ http://sugihiro.ddo.jp/
</VirtualHost>

# sugihiro.ddo.jp
<VirtualHost *:80>
  ServerName sugihiro.ddo.jp
  DocumentRoot "ブログ用のドキュメントルートのパス"
  (中略)
</VirtualHost>
旧URLのpooh3.dip.jpでブログにアクセスしてきても、新URLにリダイレクトさせています。

2008年8月15日

光、NG。。。

去年の6月02日、雷でマンションの集合装置がやられましたが、今年も集合装置がやられました。。。
その時間帯、雷がなっていたようですが、原因は、熱で暴走したとのことでした。

このせいで、8月14日の15時~15日15時までの約1日、インターネットも電話も出来なくなってしまいました。。。

2008年8月 7日

YSTのインデックス更新

アクセス数が増えたなぁと思ったら、YSTのインデックスアップデートがあったようです。
久々に、Yahoo!からの流入数が1時間あたり100件を超えました。

ただ、Googleには、相変わらず嫌われているようです…。
最大で1時間あたり14件でした。

2008年8月 4日

Baiduspider、バイバイキ~ン!

オリンピックが近いせいか、Baiduspiderの活動が活発になってきた…。

8秒に1回のペースでアクセスしてくるので、対策をしました。

まず、robots.txtに以下の記述を追記しました。
User-Agent: Baiduspider
Disallow: /

User-Agent: BaiduImagespider
Disallow: /

でも、robots.txtは見てないのでは?とのことで、403を返すようにしました。
RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} Baiduspider [OR]
RewriteCond %{HTTP_USER_AGENT} BaiduImagespider
RewriteRule ^.*$ - [forbidden,last]
あ゛!robots.txtまでバイバイキンしてしまったので、設定を直しました。
RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} Baiduspider [OR]
RewriteCond %{HTTP_USER_AGENT} BaiduImagespider
RewriteRule !^/robots\.txt$ - [forbidden,last]

2008年7月20日

iPhoneさん、いらっしゃいませ!

何気なく、アクセスログを眺めていたら、UserAgentがiPhoneと書かれたアクセスログがありました。
Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; ja-jp) 
AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A345 
Safari/525.20
iPhoneっぽいですね。(UserAgentを偽装してなければ…) アクセスログをgrepしてみたところ、私のサイトへのアクセスは今日が初めてみたいで、2件ほどありました。 130×130くらいの画像が20枚程度あるページを閲覧したようでした。最初にHTMLを取得してから、その後、最後の画像を取得するまでのアクセスログの間隔は、約17秒でした。

利用者側から見ると、画像をダウンロードして完全に表示するまで、もう少し待ったと思いますが、大体、20秒~25秒くらいでしょうか?

重く感じたのか、1ページ見ただけで、居なくなっちゃいました。

右クリックの編集を秀丸に

テキストエディタは、秀丸を使っているのですが、XMLファイルとかXSLファイルとかを右クリックして「編集」をクリックすると、メモ帳が開いてしまう。これは面倒なので、設定方法を調べてみました。

right_click.png

ググッてみたら、レジストリをいじる方法が見つかりました。でも、いじっている箇所、フォルダオプションの画面から設定できるような気がしました。手順をまとめたサイトが見つからなかったので、自分でまとめることにしました。

続きを読む "右クリックの編集を秀丸に" »

2008年7月13日

Googleのウェブマスター ツールで、「サイトマップのすべての URL が動的なコンテンツを含むとマークされています。 」

Googleのウェブマスター ツールで、「サイトマップのすべての URL が動的なコンテンツを含むとマークされています。 」という警告が出ていた。 その説明文は、
サイトマップのすべての URL が動的なコンテンツを含むとマークされています。 動的なコンテンツは検索エンジンでクロールして登録するのが難しいため、検索結果でのサイトのパフォーマンスに影響を与える可能性があります。 サイトの情報が正しいかどうかサイトマップを確認してください。
changefreqをalwaysにしていたのがいけなかったようです。以下のように変更したところ、警告が消えました。
<changefreq>always</changefreq>
<changefreq>weekly</changefreq>

2008年6月 8日

Yahoo!のサイトエクスプローラー

Yahoo!のサイトエクスプローラーの英語版は、だいぶ前から公開されてましたが、日本語版のベータ版が5月14日に公開されたので、今日、登録してみました。

サイトエクスプローラー(日本語版)
Yahoo!検索 スタッフブログの記事

もともと、Googleのウェブマスターツールを使っていて、sitemap.xmlは用意してあったので、そのsitemap.xmlをそのままサイトエクスプローラーに登録しました。

ここ最近、Yahoo!に登録されているインデックス数が3分の2くらいに減っているので、回復するといいなぁ。

2008年3月 2日

MySQLのレプリケーションでおかしくなる件

MySQLのレプリケーションで、LOAD DATA INFILEした後、レプリケーションされなくなる件は、どうやら、以下の問題のようでした。

MySQL 4.1 リファレンスマニュアルの4.11.5. レプリケーション機能と既知の問題より

LOAD DATA INFILE は、更新伝達時にデータファイルがマスタサーバにあれば、
正しく処理される。 

マスターでLOAD DATA INFILEした後、すぐにデータファイルを削除してました。データファイルを削除しないようにしたところ、安定してレプリケーションされました。⇒続きを参照。

データファイルは、バックアップの意味も兼ねて、2週間程度保持するようにスクリプトを組みました。データファイルがかなり多数のディレクトリに分散しているので、findで探して削除してます。

#!/bin/sh

HOME_DIR=/opt/sugihiro
DATA_FILE=import_*.txt
KEEP_DAY=14

find $HOME_DIR -name $DATA_FILE -mtime +$KEEP_DAY -delete

exit 0

続きを読む "MySQLのレプリケーションでおかしくなる件" »

2008年2月26日

VMWareでSolaris10(x86)

Solarisのゾーンを勉強したくて、VMWare Server上にSolaris10をインストールしました。

以下の点、はまったので、メモしておきます。

  1. インストーラが固まる…
  2. ネームサーバーの情報が間違っている?
  3. インストール後、SSHでつないでもすぐ切れる…。

続きを読む "VMWareでSolaris10(x86)" »

2008年2月10日

Tomcatをアップデート後に起動しなくなる

Tomcatを5.5.25-3にアップデートしたところ、Tomcatが起動しなくなりました…。

  • 自動起動の設定が消えた。
  • common/libとserver/libのjarのシンボリックリンクが消えた。
  • common/libとserver/libのjarのシンボリックリンクが消えた。

直せば起動しましたが、あせりました…。

続きを読む "Tomcatをアップデート後に起動しなくなる" »

2008年2月 2日

HTMLチェック

以下のサイトで、私のブログのHTMLをチェックしてみたところ、ひどい結果でした。
http://validator.w3.org/
http://openlab.ring.gr.jp/k16/htmllint/htmllint.html

This page is not Valid XHTML 1.0 Transitional!


主に、以下の点を直しました。
  • 各テンプレートの先頭に、<?xml version="1.0" encoding="utf-8"?>を挿入
  • XHTMLなので、<meta name="description" ~ >の末尾を「>」から「/>」に修正(※)
  • 同じく、<meta name="keywords" ~ >の末尾を「>」から「/>」に修正(※)
  • 同じく、<br>を <br />に修正(記事で改行設定なしで直接改行タグを書いていた)
  • 記事で書いたimgタグのalt属性の記入漏れ
  • href属性やsrc属性に記載したURLの「&」を「&amp;」に修正
  • HTMLのヘッダに<meta http-equiv="Content-Style-Type" content="text/css" />を追加
(※)のdescriptionとkeywordsのmetaタグですが、SEO対策としてテンプレートに手作業で追加した時の記載ミスでした。デフォルトのmetaタグは問題ないです。

上記の対策の結果、

This Page Is Valid XHTML 1.0 Transitional!

2008年1月26日

折れ線グラフ

Webで折れ線グラフを簡単に作れないかな?と思い、調べてみたところ、「グラフ作成 = CreatorOf =」というものを見つけました。 試しに使ってみたところ、以下のようないい感じのグラフを簡単に作れました。


続きを読む "折れ線グラフ" »

2008年1月20日

Core 2 Duo E8200 E8400 E8500

Core 2 Duo E8200 Core 2 Duo E8400 Core 2 Duo E8500
Core 2 Duo E8200 Core 2 Duo E8400 Core 2 Duo E8500

話題になってるやつですが…マシンを仕立てたばかりなので買えないです…。

Celeron Dual-Core


celeron dual-core

Celeron Dual-Coreが、今日発売されたようですが、Sofmap.comではもう完売してしまったようです…。
(と言っても、マシンを1台仕立てたばかりなので、買うつもりはないのですが)

2008年1月18日

2008年 新サーバ稼動開始!

昨年末から仕込んでました、Core 2 Duoのサーバを今週から稼動させてます!
sg08.jpg

続きを読む "2008年 新サーバ稼動開始!" »

2007年12月31日

Core2Duoですから!

Core2Duo

SofmapでCore 2 Duoを買いました。

続きを読む "Core2Duoですから!" »

2007年12月24日

アクセス数倍増

12月21日の21時半ころから、急にGoogleから検索して私のサイトに来る人が増えました。その状況がWebAlizerに反映されているので、紹介します。

続きを読む "アクセス数倍増" »

2007年12月22日

キタ━━━━(゜∀゜)━━━━ッ!!

どうやら、sitemap.xmlの効果が出てきたようです!

アクセスログを確認したところ、Googlebotのアクセス頻度が約3倍になり、1分間に1回以上アクセスするようになりました!ウェブマスターツールのクロールの頻度は、「普通」で、「速くする」は指定出来ないのですが、指定出来るようになると、もっと頻繁にアクセスしてくるのでしょうか??

HTMLの数は全部で約23,000件、RSSも含めると約40,000万件なので、1分間に1回アクセスとすると、Googlebotがすべてを収集するには、
40,000分≒667時間≒28日
こう考えると、あまり速くないかも知れません。。

Googleから検索してpooh3.dip.jpに来る人は、今まで多いときでも1時間当たり30件程度、Google八分気味になっていた最近は、1時間当たり0件~10件程度でしたが、昨日の21時~0時は、1時間当たり平均約60件でした!

この状況が続くといいです。
アクセスログ解析の方にも結果が反映されたら、公開してみます。

2007年12月16日

sitemap.xml

またGoogleからの検索数が激減してしまったので、対策として、Googleのサイトマップのフォーマットにしたがって、sitemap.xmlを作ってみました。

パソコン専門店のサイトマップ

サイトマップのフォーマットは、以下のページを参考にしました。

XML サイトマップのフォーマット

以前も、このフォーマットでサイトマップのXMLを作ったことがあったのですが、サイトを更新した後、このXMLを更新するのを忘れたり、気付いても面倒で放置したままでした。そのため、今回は自動的に作るようにしました。

2007年11月24日

鎖国

海外からのトラックバックスパムがうっとうしいので、Apache側でアクセス拒否しました。

httpd.confのMTの内で
#  Order Allow,Deny
#  Allow from all
  Order Deny,Allow
  Deny from all
  Allow from .jp
  Allow from .bbtec.net
結果
****.****.com - - [24/Nov/2007:21:40:27 +0900] 
"POST /mt/mt-tb.cgi/151 HTTP/1.0" 403 296
よし、403!

MTのJavaScriptのエラー

コメントの確認のページで、以下のようにJavaScriptがエラーになっていました。

err_mt-site.js.png

"bakecookie"という名前のチェックボックスのチェックを設定しようとしているようですが、この名前のチェックボックスがないのでエラーになっています…。意味がなさそうなので、コメントアウトしました。

最初、ファイルを直接いじってしまいましたが、MTのテンプレートで管理しているようなので、
メイン・メニュー > ○× ブログ > テンプレート > JavaScript
のようにたどり、MT上でJavaScriptを修正しました。

/*
    if (mtcmtauth || mtcmthome) {
        document.comments_form.bakecookie.checked = true;
    } else {
        document.comments_form.bakecookie.checked = false;
    }
*/

2007年11月 5日

JNDIデータソースでデータベース接続プール

パパさんの指摘もあり、JNDIデータソースでデータベース接続プールを使うようにしました。

を参考に設定しました。

続きを読む "JNDIデータソースでデータベース接続プール" »

2007年10月28日

MySQLで「Too many connections」

 定刻バッチがエラーになって、以下の本文のメールを投げてきました。

ERROR 1040 (08004): Too many connections

 この定刻バッチは、主要検索エンジンに私のサイトがどのくらい登録されているか、インデックス数を調べてMySQLに格納するスクリプトです。いつも1時間ごとに動かしており、このスクリプトが悪さするとは考えにくいなぁと思いました。

 このとき、テスト用のJavaのWebアプリも動かしていた。こちらでも、「java.sql.SQLException: Too many connections」が発生しました。例外の詳細は、以下の通りです。

java.sql.SQLException: Too many connections
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771)
        at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3664)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1176)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:2558)
        at com.mysql.jdbc.Connection.(Connection.java:1485)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at org.apache.jsp.shop_jsp._jspService(shop_jsp.java:217)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:686)
        at java.lang.Thread.run(Thread.java:619)

 テスト用のプログラムでCloseしてないとか、私のプログラムが悪いんじゃない?と思って、ソースを見ても、怪しげな箇所がありませんでした。

 そのため、以下のMySQLリファレンスを参考に、原因の調査と対処をしました。
MySQL 4.1 リファレンスマニュアル A.2.6. Too many connections エラー

続きを読む "MySQLで「Too many connections」" »

2007年10月27日

ブログの文字化け対処

このブログにコメントを書き込んだ後に表示されるページが文字化けしてました。
パパさんに指摘されたこともあり、対処しました。

続きを読む "ブログの文字化け対処" »

2007年10月20日

Live Searchの精度とシェア

Googleの検索精度より、Live Searchのほうが優れているという記事が出ています。

@IT
http://www.atmarkit.co.jp/news/200710/17/live.html

CNET
http://japan.cnet.com/marketing/story/0,3800080523,20358985,00.htm

本当にGoogleより検索結果の精度がいいのか?
本当の国内のシェアは5%もないのでは?

という疑問があります。

続きを読む "Live Searchの精度とシェア" »

2007年10月14日

お行儀の悪いクローラ

AWStatsの検索エンジンのキーフレーズを見ていたところ、「copyright」というキーワードが上位に来ていることに気付きました。確かに、各ページに「copyright」の記述はありますが、「copyright」についてのコンテンツはないので、不思議に思い、アクセスログを確認したところ、リファラは以下の通りでした。

http://search.live.com/results.aspx?q=copyright&mrt=en-us&FORM=LIVSOP

HTMLだけとり、スタイルシートや画像を取ってないので、search.live.comのクローラか?と思い、アクセス元のIPアドレスをnslookupすると、~.phx.gblという名前が帰ってくる。訳分からないので、whoisで調べたところ、MicrosoftのIPアドレスでした。

ググッてみても、やはり、Microsoftのクローラらしいです。

でも、UserAgentは以下の通り、IE7を名乗っており、一見、クローラには見えません。。。

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322)

さらに、アクセスするときに、q=の後ろにそのページに関連したいろいろな検索文字をつけてくれるので、ログ解析の結果が荒らされます。。。

クローラの場合は解析しないように除外しなくては…。人間が検索した場合のリファラは、

http://search.live.com/results.aspx?q=copyright&form=QBRE

のように、fromの値が違うようなので、うまく条件を設定して、ログを分離出来そうです。

それにしても、Microsoftさん…お行儀悪いですよ。。。


続きを読む "お行儀の悪いクローラ" »

RSSの効果

パパさんのを真似して、トラックバック使ってみました。
(初めてです。うまくいくでしょうか?)

さて、本題です。
このブログの右上のような、「MyYahoo!に追加」ボタンを、毎週更新するアフィリエイトのページにつけましたところ、効果が出てきたようです。

アクセスログを見ると、

YahooFeedSeeker/2.0 (compatible; Mozilla 4.0; MSIE 5.5; http://publisher.yahoo.com/rssguide; users 0; views 0)

というMyYahoo!のRSSのクローラが、アクセスするようになりました。

ちなみに、iGoogleのRSSのクローラは、

Feedfetcher-Google; (+http://www.google.com/feedfetcher.html)

です。

パパさんのatom.xmlを真っ先にFeedfetcher-Googleが収集したのは、私がiGoogleに登録したからだと思います。

2005年4月のYahoo!のUpdate Timの時に、Yahoo!八分の大ダメージを食らって、「検索エンジンの影響が少ないサイト作り」を目標にしましたが、MyYahoo!やiGoogleに登録してもらうのはいい方法だと思いました。

2007年9月24日

MTのping送信先設定

私のブログの読者のほとんどがロボットなので…対策をすることにしました。
MTのping送信先設定、デフォルトのままでしたので、追加で設定しました。

以下のようにメニューをたどり、

メイン・メニュー > かめたろう ブログ > 新規投稿の設定

「更新Ping/トラックバックの設定」の「その他」のところに、Ping送信先一覧(国内)を参考に、死んでるものを除外して、以下のURLを設定しました。

http://api.my.yahoo.co.jp/rss/ping?u=http%3A%2F%2Fpooh3.dip.jp%2Fblog%2Fhiro%2Findex.xml
http://blog.goo.ne.jp/XMLRPC
http://ping.fc2.com
http://rpc.reader.livedoor.com/ping
http://ping.rss.drecom.jp/
http://ping.ask.jp/xmlrpc.m
http://rpc.technorati.jp/rpc/ping
http://ping.namaan.net/rpc/
http://ping.cocolog-nifty.com/xmlrpc
http://blogstyle.jp/xmlrpc/
http://blog.with2.net/ping.php/
http://blog-search.net/up.php

人間のアクセスがもっと増えるといいなぁ。

2007年9月23日

雪男退治

韓国の検索エンジンのクローラ「yetibot」、「NaverBot」のアクセスを拒否しました。

かなり頻繁にアクセスする割りに、その検索エンジンからのアクセスが全くないからです。
(http://www.naver.com/を確認しましたが、インデックスされてないような気がします…)

UserAgentは、以下の2種類がありました。

Yeti/0.01 (nhn/1noon, yetibot@naver.com, check robots.txt daily and follow it)

Mozilla/4.0 (compatible; NaverBot/1.0; http://help.naver.com/delete_main.asp)

IPアドレスを調べて、ルータで拒否しようと思いましたが、設定変更するとルータを再起動する羽目になり、グローバルIPアドレスが変わってしまうので、やめました。

Apacheに設定しようと思いましたが、Apacheも再起動したくないので、やめました。

結局、iptablesに以下のように設定しました。

# bad ip
-A RH-Firewall-1-INPUT -s 61.247.217.0/24 -j REJECT
-A RH-Firewall-1-INPUT -s 61.247.196.0/24 -j REJECT
-A RH-Firewall-1-INPUT -s 222.122.194.0/24 -j REJECT
-A RH-Firewall-1-INPUT -s 202.179.180.45 -j REJECT

そのうち、ルータを再起動する必要があるときに、ルータにも設定しようと思います。

2007年9月20日

ブログにも「My Yahoo!に追加」、「Add to Google」ボタン

ブログにも、「My Yahoo!に追加」、「Add to Google」ボタン、ボタンをつけました。

参考:
「My Yahoo!に追加」ボタン
「Add to Google」ボタン

テンプレートは、以下のような感じです。

<h2 class="module-header">ブログ新着 自動収集</h2>
<div class="module-syndicate module">
    <div class="module-content">
        <!-- MyYahoo!に追加 -->
        <a target="_blank" href="http://add.my.yahoo.co.jp/rss?url=<$MTBlogURL$>index.xml">
             <img src="http://img.yahoo.co.jp/i/jp/my/addtomy1.gif" width="91" height="17" border="0" align="middle" alt="My Yahoo!に追加" />
        </a><br />
        <!-- Googleに追加 -->
        <a target="_blank" href="http://fusion.google.com/add?feedurl=<$MTBlogURL$>index.xml">
             <img src="http://buttons.googlesyndication.com/fusion/add.gif" width="104" height="17" border="0" alt="Add to Google" />
        </a><br />
        <!-- RSSへのリンク(rss.pngは自前で用意してます) -->
        <a href="<$MTBlogURL$>index.xml"><img src="<$MTBlogURL$>rss.png"></a><br />
    </div>
</div>

2007年9月19日

「MyYahoo!に追加」ボタン

iGoogleに追加するボタンは以前からつけていたのですが、Yahoo!から検索して入ってくる人のほうが多いので、「MyYahoo!に追加」ボタンを入れてみました。

参考:
「My Yahoo!に追加」ボタンをあなたのウェブサイトに設置

入れたページの例:
SONYノートパソコン

ブログのテンプレートのほうにも、つけようと思います。

2007年9月18日

検索キーワードとサイト内検索

アクセスログから検索キーワードと実際にアクセスしてくれたページを見ると、探したいものが見つかってないんじゃないか?と思いました。

勝手に、以下の2つのパターンがあるのではないか?と思いました。

(1) 探しているものが、ページ内にあるのに見つけにくい場合
(2) 探しているものが、このページにはなく、他のページにある場合

そこで、(1)の対策として、検索エンジンからリンクされたときは、リファラから検索文字列を抽出して、アクセスしてくれたページで、該当した検索文字を黄色い背景・黒い文字のハイライト表示にしてみました。

まずは、結果から↓。
http://search.yahoo.co.jp/search?p=%A5%D7%A1%BC%A4%B5%A4%F3+%A5%D0%A5%C3%A5%B0&fr=yssw&ei=EUC-JP&vs=pooh3.dip.jp
上記の検索結果のどれか適当にクリックすると、リンク先の私のサイトで、検索キーワードがハイライト表示されます。

検索でヒットしているサイトの拡張子がhtmですが、実はすべてServletです。SEO対策で静的ページに見せてます。商品DBを検索して動的にページを作成しています。

そのServletで、処理のついでにリファラを解析し、URLデコードし、日本語に戻して、JavaScriptでハイライト表示してます。onLoadイベントでJavaScriptでやっているので、ハイライト表示されるまで少し時間かかります。すべてServletでやってしまえば良いのですが、楽なほうを選んでしまいました…。

さらに、(2)の対策として、各ページにYahoo!のサイト内検索の窓をつくり、そこの入力欄に、ユーザが入力した検索キーワードをデフォルトで埋め込むようにしました。

Yahoo!やGoogleで検索する時に入力したキーワードが、アクセスしたサイトでハイライト表示され、そのサイトの検索窓にデフォルトで埋め込まれたら、気持ち悪く思う人もいるかなぁ…。

でも、アクセスログを見たら、サイト内検索してもう一度私のサイトにアクセスしてくれたログが、1日で8件ありました。もしかすると、効果があるかもしれません。

2007年9月16日

JISAutoDetect vs 適当ロジック

Servletで、リファラから検索エンジンで入力したパラメータを取得したくても、検索エンジンによっては、URLエンコードされた文字コードが分からない場合があります。

そこで、JISAutoDetectをつかってデコードできると思って、試してみましたが、全然ダメでした。

まじめに、バイトを見て、文字コードを判断するロジックにしなきゃダメか?と思って、調べたところ、めんどくさいし、まじめにやっても100%きっちり出来ないって書いてあった。。。

100%出来ない処理にがんばる気力がなかったので、適当ロジックを思いつきました。
(仕事でこんな発想で処理書いたら怒られそうですが…)

// とりあえず、UTF-8でデコード
strSearchKeyword = URLDecoder.decode(strQuery, "UTF-8");
// 失敗すると、こんな感じの文字が入ることが多い
byte[] bytNG = {(byte)65533, (byte)65533};
String strNG = new String(bytNG);
// UTF-8でデコードしてダメなら、EUC-JPでデコードしてみる
if (strSearchKeyword.indexOf(strNG) >= 0) {
    strSearchKeyword = URLDecoder.decode(strQuery, "EUC-JP");
}
// それでもダメなら、Shift_JISでデコードしてみる
if (strSearchKeyword.indexOf(strNG) >= 0) {
    strSearchKeyword = URLDecoder.decode(strQuery, "Shift_JIS");
}

文字コードが分かる(リファラにGETのパラメータで埋め込まれている)場合は、その文字コードを使いますが、そうでない場合は、このロジックを通すようにして、検索エンジンからのリファラ2000件くらいで検証してみたところ、まったく文字化けがありませんでした。

文字コードが分からないものは、100~200件くらいあったと思いますが、適当ロジック、意外と強かったです。

2007年9月 9日

検索キーワード抽出

今、どんなキーワードで検索されて、自分のサイトにきているのか知りたくて、Apacheのログから検索キーワードを抽出して、検索キーワード、検索したときのURL、検索後にアクセスされたURLをメールするスクリプトを作ってみました。 1時間に1回動かすのが前提になってます。(うっとおしいかも知れないですけど…。) 最後にYahoo!とGoogleとその他の検索エンジンの検索回数も出してます。

↓メールのイメージは、こんな感じです。

From: root
To: hiro55s@yahoo.co.jp
Subject: 検索キーワード 2007/09/09 21:00
Date: Sun, 9 Sep 2007 22:35:55 +0900

パソコン B5サイズ 激安
http://search.yahoo.co.jp/search?p=%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3+%EF%BC%A2%EF%BC%95%E3%82%B5%E3%82%A4%E3%82%BA%E3%80%80%E6%BF%80%E5%AE%89&ei=UTF-8&fr=top_v2&x=wrt&meta=vc%3D
http://pooh3.dip.jp/pc/

中略

Yahoo!:30件
Google:6件
その他:1件

以下、スクリプトです。

#!/bin/sh

# 集計する対象の日時を指定
LANG=C
TARGET_DATETIME=`date --date "1 hours ago" '+%d/%b/%Y:%H:'`

# 集計する対象のログファイルを指定(複数の場合はスペース区切り)
INPUT_ACCESSLOG="/var/log/httpd/access_log /var/log/httpd/access_log.1"

# 集計対象の検索エンジンのURL
TARGET_SEARCHENGINE="
http://search.yahoo.co.jp/search|\
http://search.yahoo.co.jp/bin/search|\
http://www.google.com/search|\
http://www.google.co.jp/search|\
http://www.google.com/ie|\
http://search.goo.ne.jp/web.jsp|\
http://ocnsearch.goo.ne.jp/ocn.jsp|\
http://www.infoseek.co.jp/OTitles|\
http://search.msn.co.jp/results.aspx|\
http://dion.excite.co.jp/search.gw|\
http://odn.excite.co.jp/search.gw|\
http://cgi.search.biglobe.ne.jp/cgi-bin/search-ie|\
http://cgi.search.biglobe.ne.jp/cgi-bin/search-ie_lp|\
http://search.nifty.com/cgi-bin/search.cgi
"

# 検索キーワードのパラメータ
URLPARAMS_SEARCHKEYWORD="p,q,as_q,MT,search,Text"

# 自鯖のドメイン名
MY_DOMAIN="pooh3.dip.jp"

# 結果送付先のメールアドレス
MAIL_ADDRESS=hiro55s@yahoo.co.jp

main() {
    # アクセスログから検索エンジンのリファラの行を抽出
    target_lines=`grep $TARGET_DATETIME $INPUT_ACCESSLOG | egrep $TARGET_SEARCHENGINE | tr ' ' '"'`

    # 主要検索エンジンのカウントを初期化
    count_yahoo=0
    count_google=0
    count_other=0

    for rows in $target_lines; do
        access_url=http://$MY_DOMAIN`echo $rows | tr '"' ' ' | awk '{print $7}'`
        reffer_url=`echo $rows | tr '"' ' ' | awk '{print $11}'`
        # パラメータ解析
        keyword=""
        for i in `echo $reffer_url | tr '?&' ' '`; do
            param=""
            for j in `echo $i | tr '=' ' '`; do
                if [ -n "$param" ]; then
                    keyword=`urlDecode $j`
                elif [ `echo "$URLPARAMS_SEARCHKEYWORD," | egrep "$j," | wc -l` -gt 0 ]; then
                    param=$j
                fi
            done
        done
# 検索キーワード、検索時のURL、検索した後にアクセスされたURLを出力
echo $keyword
echo $reffer_url
echo $access_url
echo
        # Yahooの場合
        if [ `echo "$reffer_url" | egrep "^http://search.yahoo.co.jp" | wc -l` -gt 0 ]; then
            count_yahoo=`expr $count_yahoo + 1`
        elif [ `echo "$reffer_url" | egrep "^http://www.google." | wc -l` -gt 0 ]; then
            count_google=`expr $count_google + 1`
        else
            count_other=`expr $count_other + 1`
        fi
    done

# 主要検索エンジンのカウントを出力
echo "Yahoo!:$count_yahoo件"
echo "Google:$count_google件"
echo "その他:$count_other件"

}

# URLデコード
urlDecode() {
    # \x00のようにログ出力されるものは、%00に変換し、URLデコード
    echo $1 | sed -e 's/\\x/%/g' | nkf -w --url-input | tr '+' ' '
    # なぜか、'+'を' 'に変換してくれない。
}

main | nkf -j | mail -s "`echo "検索キーワード" | nkf -j` \
`date --date "1 hours ago" '+%Y/%m/%d %H:00'`" $MAIL_ADDRESS

exit 0

2007年9月 8日

Yahoo!八分

最近、アクセス数が減ったと思ったら、Yahoo!八分されてる感じがする。 Yahoo!のクローラはアクセスしているので、UpdateTimの時のようなYahoo!八分ではないが、インデックス数が激減している…。 (UpdateTimの時は、Yahoo!のディレクトリに登録されているページ以外は、検索でヒットしないだけでなく、クローラが全く訪問しない最悪な状況でした。。。)

単位:ページ
検索エンジン インデックス 備考
Yahoo! 270 先月は約10,000ページ
Google 16,900 先月は約14,000ページ

今年の2月くらいから、検索エンジンに登録されているインデックス数を調べてDBに入れるスクリプトを毎日動かしていますが、その結果をグラフにしてみました。

search_index.png

グラフにはまだ出てませんが、Yahoo!のインデックス数が270になってます…。アフィリエイトをしてるので、かなり痛い。

2007年8月25日

TrafficGateダウン!

今月の売上の見込みを集計しようと思って、トラフィックゲートの
レポート画面開こうとしたら、「502 Proxy Error」になった…。


Proxy Error

The proxy server received an invalid response from an upstream server.

The proxy server could not handle the request GET /affiliate/report/.

Reason: Document contains no data


Apache/1.3.34 Server at www.trafficgate.net Port 443

リバースプロキシが生きてて、アプリケーションサーバが死んだ??

たまたま応答がなかったのか?と思って、試しに、ログインし直してみたけど、
ログインすら出来なくなった。

ブラウザのキャッシュで、何とか集計できたからいいけど。。。

それと、リダイレクトサーバは生きているっぽい。でも、成果が反映されるのか心配。
TrafficGateはいろいろあって、今はメインじゃないから、まぁいいけど。。。

それにしても、この

Proxy Error

は、心臓に良くない。

2007年8月19日

VRRPDによる代表アドレス

VRRPDにより代表アドレスを作り、ルータからは代表アドレスへNATするようにしています。

これにより、自宅サーバの本番機のメンテナンス(kernelのアップデートによる再起動など)
の時に、コールドスタンバイのサーバを立ち上げれば、ルータのNATの設定を変えることなく、
自動的にコールドスタンバイのサーバにNATされるようになり、外へのサービスを継続したまま
メンテナンスが出来ます。

また、新しいサーバを仕立てるときも、代表アドレスを使っていると、移行が楽です。

そのやり方を説明します。

1. インストール

VRRPDのソースをダウンロード、解凍、コンパイル、バイナリをコピー
$ wget http://jaist.dl.sourceforge.net/sourceforge/vrrpd/vrrpd-1.0.tar.gz
$ tar zxvf vrrpd-1.0.tar.gz
$ cd vrrpd-1.0
$ make
$ su
Password:
# cp -p vrrpd /usr/sbin/

2. ファイアウォールの穴あけ(vrrp)

VIで設定ファイルを開く
# vi /etc/sysconfig/iptables

以下の行を、sshなどの許可の行がある付近に追加
# vrrp
-A RH-Firewall-1-INPUT -p vrrp -s 192.168.0.0/255.255.255.0 -j ACCEPT

ファイアウォールをリスタート
# /etc/init.d/iptables restart

3. 起動スクリプト作成

VIで開く
# vi /etc/init.d/vrrpd

以下の内容で作成
#!/bin/sh
#
# Startup script for the vrrpd
#
# chkconfig: 345 99 00
# description: VRRP is a Virtual Router Redundancy Protocol.

# Source function library.
. /etc/rc.d/init.d/functions

PRIORITY=200
VIP="192.168.0.10"
VRID=10
IFID=eth0
PID_FILE=/var/run/vrrpd_"$IFID"_"$VRID".pid

# See how we were called.
case "$1" in
  start)
        echo -n "Starting vrrpd: "
        # waiting for apache to start
        WAITTTIMEOUT=30
        while [ $WAITTTIMEOUT -gt 0 ]; do
                netstat -l | grep -q "http" && break
                echo -n -e "\nwaiting for apache to start";
                sleep 3
                let WAITTTIMEOUT=${WAITTTIMEOUT}-3
        done
        # waiting for tomcat to start
        WAITTTIMEOUT=300
        while [ $WAITTTIMEOUT -gt 0 ]; do
                netstat -ln | grep -q "8009" && break
                netstat -ln | grep -q "9009" && break
                echo -n -e "\nwaiting for tomcat to start";
                sleep 5
                let WAITTTIMEOUT=${WAITTTIMEOUT}-5
        done
        daemon vrrpd -i $IFID -n -v $VRID -p $PRIORITY $VIP
        echo
        ;;
  stop)
        echo -n "Stopping vrrpd: "
        killproc vrrpd
        echo
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac
exit 0
※ PRIORITYの値は、コールドスタンバイ機のほうを少なく設定してます。
※ 私の場合、ApacheとTomcat(2つ)の起動完了が必須で、待ち合わせ処理を入れてます。

実行権限付与
# chmod +x /etc/init.d/vrrpd
# ls -l /etc/init.d/vrrpd
-rwxr-xr-x 1 root root 622 4月 28 21:26 /etc/init.d/vrrpd

試しに起動
# /etc/init.d/vrrpd start

4. 自動起動の設定

# /sbin/chkconfig vrrpd reset
# /sbin/chkconfig --list vrrpd
vrrpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

2007年8月 4日

デュアルマウス

自宅のディスプレイは、17インチ×2枚のデュアルディスプレイ。
実質的な画面サイズが2560×1024で、左右に広く、マウスの
左右の移動が面倒だった。

右利きだけど、自宅では、左手でマウスを使っているので、
マウスは右でも左でも使える。だから、マウスを2つつないで、
左右の画面それぞれで使えたらなぁと思って調べたら、
ディアルマウスToolというものがあった。

http://www.asahi-net.or.jp/~tz2s-nsmr/usbmouse.html

早速インストールして、使ってみた。
灰色のマウスポインタが1つ増えた。

増えたマウスポインタの動作は、ドラッグ&ドロップの動作、
ホイールを押したときの動作を除いて、普通に使える。

マウスの速度が遅いのが気になるけど、設定できないのかなぁ。
でも、左の画面は左手のマウス、右の画面は右のマウスで
使えるのは、かなり便利なので、しばらく使ってみよう。

2007年7月16日

固まるパソコン直ったか?

先月、父さんから、すぐ固まって仕事にならないから廃棄するって
いうパソコンをもらった。固まるところを見た感じ、ビデオカードとの
相性かなという感じがした。

ネットで調べたら、ハイパースレッドやデュアルコアのCPUで不安定なときは、
「ライトコンバイン」のチェックを外すと安定するというのを見つけたので、
とりあえず外してみた。

でも、しばらく使ってたら、また固まった。なので、もう少し設定を見直してみた。
ハードウェアアクセラレータのパフォーマンスレベルを1つ落としてみた。
(これ以上落とすと、パソコンのテレビが映らなくなったので、1つだけ)

パソコンのテレビをつけてる時によく固まるとのことだったけど、
テレビをつけながら2週間くらい使ってみたけど、固まらなくなった。

画面のプロパティから、以下のように設定した。

20070716_01.jpg
20070716_01.jpg
20070716_03.jpg

ポイントは、
・「ハードウェア アクセラレータ」のレベルを最大から1段階左に下げる
・「ライトコンバイン」のチェックを外す

2007年7月15日

mixiSync

ブログ、mixi日記、両方書くのが面倒で、どっちかしか書いてないことが
多かった。だから、Movable TypeにmixiSyncを入れようとした。

Movable Type 3.2を使っていたので、BigPAPIも入れたけど、うまく
動かなかった…。Movable Typeのバージョンを上げればいいかな
と思って、バージョンアップした。

そしたら、データが文字化けした…。DBは、MySQL5を使ってるん
だけど、ググッてみたら、同じように文字化けした人がいたので、
まねしてみたけど、ダメ。

幸いにも、DBのバックアップがあるので、元に戻して、3.2の管理
画面でデータをエクスポートして、3.3にインポートした。。。

その後、mixiSyncを入れ、問題なく動いた。かなり遠回りした気がする…。

2007年6月 2日

光、NG。

一昨日のカミナリで、約1日、電話もネットも使えなくなった…。
俺んちのルータとかは、平気だったんだけど、マンションの
装置が、逝っちゃったらしい…。

NTTの人曰く、ADSLより、光回線のほうが、カミナリに
弱いらしい…。

とりあえず、俺んちの電化製品は平気だったんだけど、
ヨドバシで、電気と電話のカミナリ対策グッズを購入。

今年は、カミナリ多いらしいから、気をつけないと…。

2007年5月26日

光、OK。

今日、ADSLから光に切り替えた。

工事のおじちゃんが来て、線つないで、電話かかるの確認して、帰った。

プロバイダの設定は、俺がやることになってたから、おじちゃんが
帰った後、簡単設定ツールみないなCDを入れて、設定しようとした。
でも、エラーになる…。違うネットワーク機器が繋がってますとか。

このツールは、型番○○○専用です!と、エラーになるんだけど、
ルータの本体に書いてある型番と一緒です…。
もう一回やっても、同じエラー。

あ゛~もういいや。管理画面につないで設定すればいいんでしょ?
って思って、ブラウザ立ちあげて、ルータのIPアドレスを入れて、
適当に設定。

簡単設定ツール…。管理画面の方が簡単です…。

2007年3月26日

キーボード

キーボードの「n」と「6」の反応が悪くなったから、分解して掃除した。

掃除した後、Windowsを起動して、ログオンしようと思ったら、
「Ctrl」+「Alt」+「Del」が効かなくなった…。

さて困った。どうやってシャットダウンさせよう。
電源をいきなり切るわけには行かないし。

部屋を見渡すと、USBキーボードが落ちてた。
これをつないで、「Ctrl」+「Alt」+「Del」効いた!
そんで、シャットダウン。

もう一回キーボードを分解して、Windowsを起動して、またダメ…
これ、何回か繰り返した。。。

壊しちゃったか?と思ったけど、結局、ねじの締め方が甘くて
接触不良だったみたい。ねじ、25本もあって、全部締めるの
面倒で、適当に5本くらいしか締めなかったから。

コードとの接触部分の3本を強く締めたら直った。
(他の22本は締めてないけど)

それで、今は快適~♪ 直って良かった~
このメカニカルタッチのキーボード、気に入ってるんだよね。

2007年3月18日

Firefoxの「前回のセッションの復元」

Windowsで、Firefox(Ver.2.0以上?)を開いたまま、PCをシャットダウン
または、Windowsのログオフをすると、次にWindowsにログオンした時、
「前回のセッションの復元」と出るので、うざいから調べた。

http://forum.mozilla.gr.jp/?mode=al2&namber=35516&rev=&&KLOG=224

ここを見ると、URLを表示してるとこに「about:config」と入力して、
  browser.sessionstore.resume_from_crash
  browser.sessionstore.enabled
をfalseにすれば良いとのこと。

とりあえず、回避策は分かったんだけど、さっきのサイトに書かれていた
以下のことが、理解不能だった。
 ↓
 > Fx を開いたままのシャットダウンでは OS が Fx を終了
 > させることになるのでクライアントに終了処理の記録が
 > 残らずクラッシュ扱いされます。

アプリケーションを起動したまま、OSを終了なんて、普通によくあること。
それをクラッシュ扱いだなんて…。-v(-_-)v-
きちんと終了処理をしないのが悪い。

それに、Windowsは、シャットダウンやログオフの時、すべてのウインドウに
対して、「WM_QUERYENDSESSION」のメッセージを送っているので、
各アプリは、このメッセージを受け取ったら、終了処理をすればいい。

もっと分かりやすく言うと、WORDとかで、書き途中で保存してないまま
シャットダウンしようとすると、保存しますか?と聞いてくるのと同じように、
このタイミングで終了処理をすればいい。

例えば、VC++(MFC)なら、OnQueryEndSessionのイベントを拾えばよい。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclib/html/_mfc_cwnd.3a3a.onqueryendsession.asp

こういう処理を入れられない事情でもあるのかなぁ…。

2007年3月10日

新自作サーバ

server_2007_01.jpg
server_2007_02.jpg
server_2007_03.jpg

正月に、父さんからメモリ貰ったんだけど、それと余ってた
筐体使って、2月末に、新しい自作パソコンを組み立てた。
でも、OSのインストールに、かなり苦戦した…。

マザー:ASUSのP5VDC-MX ⇒ 7,280円
CPU:Intel Celeron D 336(2.8GHz) EMT64 ⇒ 5,980円
HDD:シリアルATA250GB×2 ⇒ 8800円×2
メモリ:DDR2 SDRAM 512MB×2 ⇒ 父さんから貰った

Fedora Core 6(64bit版)を動かしたかったんだけど、シリアルATAの
ハードディスクをうまく認識しなかった。片方しか見えなかったり、
両方見えなかったり…。

Fedora Core 5(64bit版)なら、このマザーのSATAのドライバを
作った人がいたので、それを使ったら、うまく行った。

マザーにRAID0,1,5の機能(FAKE RAID?)があるんだけど、
それ使っても、Fedoraからは、RAIDになってないように見える。
なので、ハードディスク2台は、ソフトウェアRAIDにした。

とりあえず、ApacheとTomcatとMySQLを設定して、今の
メインサーバのバックアップ機になるようにしよう。
で、そのうち、メインサーバとリプレイスかな。

【補足】
ドライバが見つからなかったFC6でも、インストール時に、
boot: linux all-generic-ide pci=nommconf hdc=ide-scsi
として、インストール後に、
/etc/grub.confのkernelパラメータも上記と同じパラメータをつけておけば問題なかった。

2007年2月 7日

Tomcatが…。

一昨日くらいから、TomcatのJavaがCPU100%近く使ってて、
調子が悪い…。でも、再起動すれば、とりあえず直る。

そして、今日、再起動出来なくなった…。
まずは、応急処置。Tomcatをダウンロードして、別フォルダに
セットアップして、Webアプリを移して、起動。

次に、原因調査。catalina.outには、
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

ん?見つからないはずがないんだけどなぁ。環境は全くいじってないし。
クラスが消えたか!?

無いと言うなら仕方ない、入れてやるか。
commons-digester-1.8.jarをcommon/libに置いてやった。

そしたら、今度は、BeanUtilsが見つからない、その次は、
BaseModelMBeanがない・・・

結局、
commons-beanutils.jar
commons-collections-3.2.jar
commons-collections-testframework-3.2.jar
commons-digester-1.8.jar
commons-modeler-2.0.jar
jsp-api.jar
jasper-compiler.jar
jasper-runtime.jar
servlet-api.jar
ant-launcher.jar
ant.jar
を入れてやった。

そしたら、Tomcat君が元気に動き出した。
なんだったんだろう…。

2007年1月 4日

Tomcat冗長化

tomcat_x_2.jpg

年明け、Tomcatが2回もダウンしたので、↑こんな感じに1台のサーバ内で二重化した。

片方ダウンしても、もう1匹が動作してくれる。いい感じ。

監視スクリプトも、ダウンしてたら携帯にメールで通知するだけじゃなくって、
メールした後、とりあえず該当のTomcatを再起動するように改造した。

2006年12月24日

Wiiの動作確認済み無線LAN

俺んちのMN7530は、使えるっぽい。

http://www.nintendo.co.jp/wii/support/ap_list/index.html

DSでWi-Fiが使えてるから、たぶん平気だとは思ってたけどね。

ネットの環境は準備OK!
でもWiiの本体がない…。

Wiiの動作確認済み無線LAN

俺んちのMN7530は、使えるっぽい。

http://www.nintendo.co.jp/wii/support/ap_list/index.html

DSでWi-Fiが使えてるから、たぶん平気だとは思ってたけどね。

ネットの環境は準備OK!
でもWiiの本体がない…。

2006年12月 3日

DSブラウザー用の辞書

DSブラウザー用に、Yahoo!辞書を使う入力画面を作ってみた。

http://pooh3.dip.jp/dic/

使うかどうか、分からないけど。。。

2006年11月27日

Tomcatダウン!

雄猫が原因不明でダウンしたので、10分おきに監視することにした。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/bin/sh

CHECK_URL=http://localhost/pooh/
MAIL=********@t.vodafone.ne.jp

STATUS=`wget --server-response --spider $CHECK_URL 2>&1 | grep "HTTP/" | awk '{print $2}'`

if [ $HTTP_STATUS -ge 500 ]; then
echo "HTTP応答コード":$STATUS | nkf -j | mail -s "Error!!" $MAIL
fi

exit 0;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ダウンしたら、携帯にメールが来る。
でも、ダウンしたまま放置すると、10分おきにメール来ちゃうなぁ。

2006年11月19日

LiveHTTPHeaders

前、Firefox2.0をインストールしたら、LiveHTTPHeadersが使えなく なって困ったけど、2.0に対応したみたい。

http://livehttpheaders.mozdev.org/

今日、httpsのページにアクセスして、自動ログインして、 CSVファイルをダウンロードして集計するってやつ作ってたんだけど、 LiveHTTPHeadersを使えて助かった~。

DSブラウザー

迷ったけど、DSブラウザーを買った。コタツを出したから、
リビングでちょこっと情報が欲しい時にいいかなと思って。

評価は、人それぞれだけど、俺は、なかなか面白いと思う。
超小さいノートパソコンのように見えてくる。

ゲーム機なのに、俺のパソコンのWebサーバにアクセスしてくる、
それだけで面白い。(マニアかな…)

PC用の一般サイトを見るのは、サイズの問題、通信速度の問題で、
きついって感じることがある。

無線LANだから、俺んちの内部のWebページにアクセスできるはず。
試しにTomcatの管理画面にアクセスして見る。おぉ~ネコが出てきた!

mixiとかのページ、ログインがめんどくさいから、JavaScriptで
自動ログインさせるページ作ってるんだけど、それも問題なく使える。
mixiのページ、俺の写真がドアップでキモかった…。

DS用に情報を集約したサイトを作ると、快適だと思った。
とりあえず、アフィリエイトの本日の注文状況のページを作って、
DSからアクセスできるようにしてみた。なかなかいい!

文字の入力は、ソフトウェアキーボード、手書きを選べる。
漢字は手書きだけど、「淵」という漢字をどうしても認識
してもらえない。。。

会社でも電車の中でも使えるといいのになぁ~

2006年11月 5日

勝手に、かな入力

普段、ローマ字入力使ってるのに、たまに、かな入力になることがある。
たとえば、直接入力モードの場合、abcって入力しようとすると、
チコソって入力される…。

これって、壊れてるのかな?って、ずっと思ってたけど、原因が分かった。
いつの間にか、[Ctrl] + [Caps Lock]を押してたらしい。
このキーで、ローマ字入力とかな入力が切り替わる…。知らなかった~。

もう一回押せば直るんだけど…。この切り替えのキーって要らないと思う。

2006年9月24日

Wi-Fiコネクション

ニンテンドーDSのWi-Fiコネクションってやつを設定してみた。
知らない人とネット使って対戦するやつの設定です。
とりあえず、無線LANの環境はあるから、設定だけでいけるかなぁ。

俺んちのルータは、NTT-MEのMN7530(5年くらい前のかなぁ)。
動作確認済みのルータを調べたら…
http://wifi.nintendo.co.jp/information/router/index.html#ntt-me
俺んちのルータは載ってなく、型番違うけど、俺んちのより
新しいっぽい「MN8100WAG」が、×になってる。。。

う~ん。とりあえず、やってみるか。
適当にWi-Fi対応のソフトを探して、テトリスがあったから、
それを入れて、電源ON。

[Wi-Fi]とかいうメニューを押して、設定画面へ。
ここ↓のやり方を参考に、アクセスポイントの検索。
http://wifi.nintendo.co.jp/setting/02/index.html
・・・アクセスポイントが見つからないと出る…。

っていうか、ルータ側で、MACアドレスでアクセス制限かけてるし、
この手順じゃ繋がる訳ないと思いながらやってたので、まずは、
ルータ側に、MACアドレスを登録することにした。

DSのMACアドレスは、Wi-Fi設定の[オプション]ってメニューをたどると
確認できた。ルータ側で、DSからのアクセスを許可するようにして、
ついでに、暗号化方式はWEPキーを使うものだけって書いてあったから、
WEPキーを手動で設定するように変更して、もう一回、チャレンジ。

でも、ダメ…。ならば、DS側を手動設定か。

SSIDとWEPキーを入力して、接続確認。エラーになるなぁ。
もう一回、WEPキーを入力してチャレンジ。あ、うまくいった!
WEPキーの入力を間違えてたみたい。

とりあえず、接続は出来たけど、知らない人と対戦する勇気が
ないので、結局、設定しただけで、使ってない…。

2006年5月27日

SEO

どうも俺のWebページがGoogle八分されてるのでは?と思い、
ゴールデンウィーク初日あたりにSEO対策をした。

4/21現在、俺のWebページが検索エンジンに登録されていた数
Yahoo!:約1,480件
Google:約 208件

参考にしたのは、勤めてる会社のWebページ。このWebページは、
俺のWebページとは反対で、Googleには好かれているけど、
Yahoo!に嫌われている。

5/27現在、会社のWebページが検索エンジンに登録されている数
Yahoo!:約1,230件
Google:約9,810件
(Yahoo!に嫌われるのは致命的だけど、知ったこっちゃない)

いいとこだけ真似すれば、Googleに好かれるのでは?という
単純な発想で、以下のことをやってみた。

(1) IE以外でHTMLが生で表示されると言う致命的なバグの修正
(2) <h1>~<h3>タグの使用
(3) <p>タグの使用
(4) <ol>、<ul>、<li>タグの使用

補足
(1)は、3月に、文字コードをShift_JISからEUC-JPに変えて、
文字コードの指定は、HTTPヘッダから削除して、HTMLのヘッダで
指定するように変更したんだけど、そのとき、HTTPヘッダの
Content-Typeの文字コード指定だけを削除するはずだったのに、
間違って、text/htmlの指定まで削除してしまって、結果、
text/plainの指定になってしまったという、超アフォなバグの修正。
(2)~(4)は、この辺のタグ、一切使ってなかったので、入れてみた。

その結果、しばらくGoogleダンスが続いたものの、ようやく安定し、
5/27現在、俺のWebページが検索エンジンに登録されている数
Yahoo!:約1,870件
Google:約2,140件

Yahoo!もGoogleもバランスよく登録されているから、対策は成功かな。

今年はGoogleに悩まされたけど、去年は去年で、Yahoo!のUpdateTimで、
半年間、Yahoo!八分になって、大変だったなぁ。
去年は、Yahoo!に登録されてる数がある日突然、1になったんだよね。

2006年5月20日

IE7

IE7のβ2をインストールしてみた。

β1は不安定とのうわさを聞いていて、インストールしなかったから、
IE7は、初体験♡

目的は、付属のRSSリーダがどんなものか知りたくて。

インストールした後に変わったところ。

・ツールバーがすっきりした。
・タブブラウザになった。
・RSSリーダが付いてる。
・フィッシング詐欺検出機能が付いた。
・IEとは関係ないような、バッチファイルの実行にも
 警告が出るようになった。(発行元が確認できないとか)

ほかにもいろいろあるっぽいけど。

目的のRSSリーダは、まだ検証中。
IE6では、RSSのリンク開くと、生のタグが見えたけど、
IE7では、ブログっぽくみえる。

RSSを表示すると、見た目、ブログっぽい。

RSSを工夫して、写真とか入れて、レイアウトを調整すれば、
ほんとにブログに見えそう。

IE7が正式に出回る前に、きちんとしたRSSを配信しようかな。

2006年3月 6日

ディスクフル!?

なんか、だんだんルートパーティションの使用率が増えていき、とうとう使用率80%を超えた…。
調べたら、/lib/modules/に要らないkernelがいっぱいあるせいみたいだ。
いらんのは消していこう。


# rpm -q kernel
kernel-2.6.11-1.1369_FC4
kernel-2.6.12-1.1390_FC4
kernel-2.6.12-1.1398_FC4
kernel-2.6.12-1.1447_FC4
kernel-2.6.12-1.1456_FC4
kernel-2.6.13-1.1526_FC4
kernel-2.6.14-1.1637_FC4
kernel-2.6.14-1.1644_FC4
kernel-2.6.14-1.1653_FC4
kernel-2.6.14-1.1656_FC4
kernel-2.6.15-1.1830_FC4
kernel-2.6.15-1.1831_FC4
kernel-2.6.15-1.1833_FC4


# rpm -e --nodeps kernel-2.6.11-1.1369_FC4
# rpm -e --nodeps kernel-2.6.12-1.1390_FC4
# rpm -e --nodeps kernel-2.6.12-1.1398_FC4
# rpm -e --nodeps kernel-2.6.12-1.1447_FC4
# rpm -e --nodeps kernel-2.6.12-1.1456_FC4
# rpm -e --nodeps kernel-2.6.13-1.1526_FC4
# rpm -e --nodeps kernel-2.6.14-1.1637_FC4
# rpm -e --nodeps kernel-2.6.14-1.1644_FC4
# rpm -e --nodeps kernel-2.6.14-1.1653_FC4

う~ん、ルートパーティションのディスクの使用率が60%になったから、許すとするか。

2006年2月26日

鯖ダウン(続報)

このまえの鯖ダウンについて…。

最初ダウンした後、再起動したけど、1日も経たずにまたダウンした。
う~ん、最近カーネルをアップデートしけど、それが原因か?と思って、カーネルを1つ前のに戻して起動させた。

Fedora Core (2.6.15-1.1831_FC4)

Fedora Core (2.6.15-1.1830_FC4)

具体的には、

viでgrub.confを開いて

# vi /etc/grub.conf

以下のように変更して保存

default=0
default=1

んで、再起動。

# sync
# sync
# sync
# /sbin/shutdown -r now

で、様子見てるんだけど、5日間くらい経ったけど、ダウンしない。
やっぱし、カーネルの問題?バージョン的には、ほんと微妙な差だけど…。

2006年2月21日

サーバダウン!

昨日は、サーバがダウンした…。

会社にいたので、何が起きてるか全く分らなかった。

分ったのは、
・自鯖にHTTP,SSH,FTP,VNCでアクセスしても応答がない
・POPも死んでいるらしい
・携帯で自宅に電話したかかるので、電話線は外れていない

自鯖くん、固まったっぽい。

なので、オペレータ(妻だけど…)に連絡して、リセットスイッチを
押してもらった。

しばらくしても、直らない…。もう一度、リセットスイッチを
押すように依頼。

それでも直らない…。結局、諦めて、家に帰ってから調べることに。

家に帰ってみると、HDDのランプが全く点灯/点滅していない。
おまえはもう死んでいる…。とりあえず、リセットを押してみる。
ピッっと音が鳴り、起動した。HDDのランプも元気よく点滅。

なんか、直ったっぽい。SSHもHTTPもつながる。じゃあ、夕飯にするか。

で、妻に聞いてみる。
俺:「リセットスイッチって、どこ押した?」
妻:「一番上のでかいボタン」

…電源スイッチだった。

2006年2月 6日

クローラ

自鯖にMTをインストールしてから、Blog用のクローラが来るようになったので紹介。

BlogSearch/1.1 +http://www.icerocket.com/

BlogsSay :: RSS Search Crawler (http://www.blogssay.com/)

Yahoo-Blogs/v3.9 (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.com/help/us/ysearch/crawling/crawling-02.html )

2006年2月 5日

ブログペット(その4)

ネットで調べたら、ログインパスワードとは別に、APIパスワードがあることが判明…。

MTの管理画面にログイン後、右上の「現在のログイン名: xxxx」のログイン名xxxxをクリック
下の方に「APIパスワード」っていうのがあった…。
もちろん、未設定だったのでパスワードを設定。

で、もう一度、ブログへの投稿テスト。
お、今度はうまくいった!

ブログペット(その3)

ブログへの投稿テストに失敗したので、Apacheのエラーログを見てみた。

[Sat Feb 04 18:35:33 2006] [error] [client 61.117.3.208] mod_security: Access denied with code 406. Pattern match "!(^$|^application/x-www-form-urlencoded$|^multipart/form-data)" at HEADER("Content-Type") [hostname "pooh3.dip.jp"] [uri "/mt/mt-xmlrpc.cgi"]

う~ん。mod_security君が拒否ってくれたのかぁ…。
mod_securityをOFFにするのは危険だから、接続元のIPアドレスで許可するか。

で、mod_securityの設定変更。適当に61.117.3.*とついでに192.168.0.*を許可。

# vi /etc/httpd/conf.d/mod_security.conf

「# Simple example filter」の上あたりに、以下の1行を追加。
SecFilterSelective REMOTE_ADDR "61.117.3.*|192.168.0.*" allow,nolog

保存して終了([Esc]、w、q、[Enter])。

設定のシンタックスチェック

# /etc/init.d/httpd configtest
Syntax OK

Apache再起動

# /etc/init.d/httpd restart

テスト。

# telnet 自鯖プライベートアドレス 80
GET /mt/mt-xmlrpc.cgi HTTP/1.0

HTTP/1.1 405 Method Not Allowed
Date: Sun, 05 Feb 2006 08:46:10 GMT
Server: Apache/2.0.54 (Fedora)
Content-Length: 0
Connection: close
Content-Type: application/x-httpd-cgi

ん?405?メソッドは許されていない?
ネットで調べたら、POSTじゃないと、ダメらしい。もう一回。

# telnet 自鯖プライベートアドレス 80
POST /mt/mt-xmlrpc.cgi HTTP/1.0

HTTP/1.1 200 OK
Date: Sun, 05 Feb 2006 08:52:02 GMT
Server: Apache/2.0.54 (Fedora)
SOAPServer: SOAP::Lite/Perl/0.52
Content-Length: 449
Connection: close
Content-Type: text/xml

<?xml version="1.0" encoding="UTF-8"?><methodResponse><fault><value><struct><member><name>faultString</name><value><string>Application failed during request deserialization:
no element found at line 1, column 0, byte -1 at /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi/XML/Parser.pm line 187
</string></value></member><member><name>faultCode</name><value><string>Client</string></value></member></struct></value></fault></methodResponse>
Connection closed by foreign host.

お、200だ。とりあえずOKだ。

で、もう一回、ブログへの投稿テスト。
あ゛~またダメ。なんだ???

ブログペット(その2)

スクリプトを貼り付けただけではペットが言葉を覚えたり、書き込んだり出来ないので、以下のようにBlogPetの設定をした。

BlogPetのページにログインして、「設定」→「ブログ」とクリックする。

以下のように設定した。
ブログのURL http://pooh3.dip.jp/blog/hiro/
ブログの名前 自鯖ブログ
ブログのRSS http://pooh3.dip.jp/blog/hiro/index.xml
ブログの投稿用APIのURL http://pooh3.dip.jp/mt/mt-xmlrpc.cgi
BlogID 1
ブログの投稿用
ユーザーIDとパスワードの設定
ひみつ♡/ひみつ♡
ブログの文字コード UTF-8

で、入力後、一番下の設定ボタンをクリック。(なんか、JavaScriptのエラーが出てるけど…とりあえず無視。)

次に、「機能一覧」をクリックして、以下のように設定。
ペットの投稿頻度 一週間に一度
ブログへの投稿 許可する
トラックバック設定 許可する
トラックバック受付設定 受け付ける
ブログへのコメント 許可する
アクセス解析 使用しない
ぺたぺた 使用する
メッセージ確認用メール 送信する

入力後、一番下の設定ボタンをクリック。(またJavaScriptのエラーが出てるけど…無視無視。)

続けて、「ブログへの投稿テスト」の「投稿テストをする」をクリック。
あ゛~!みごとに失敗した!次は、原因調査だ…。

ブログペット(その1)

まずは登録。以下のサイトにアクセス。

http://www.blogpet.net/

「BlogPetを飼う」をクリックして、登録。

ログインして、「設定」→「ペットの設置」をクリック。

表示されたスクリプトをコピる。

自鯖のmtの管理画面にログインして、テンプレートに貼り付けて、サイトを再構築。

これで、とりあえず、ここのブログの右下のプーたろうみたいに、ペットが表示される。

Movable Type インストール(その4 初期設定)

1. https://自鯖アドレス/mt/にアクセス
2. 「ログイン」をクリック
3. 「ブログを始める前に、データベースを初期化してインストール作業を完了する必要があります。」
  と表示されるので、「インストールを続行」をクリック
4. ユーザ名:Melody、パス:Nelsonでログイン
5. とりあえず、上記の初期ユーザ名と初期パスワードを変更。

Movable Type インストール(その4 SELinux等権限の設定)

アクセス権とオーナ・グループを設定。

# chmod 755 /opt/www/mt/*.cgi
# chmod 755 /opt/www/mt/examples/plugins/mirror/*.cgi
# chown -R apache:apache /opt/www/blog

SELinuxの設定(CGI実行のための設定)

# cd /etc/selinux/targeted/src/policy
# vi domains/program/apache.te

bool httpd_unified false;

#bool httpd_unified false;
bool httpd_unified true;

bool httpd_builtin_scripting false;

#bool httpd_builtin_scripting false;
bool httpd_builtin_scripting true;

bool httpd_enable_cgi false;

#bool httpd_enable_cgi false;
bool httpd_enable_cgi true;

# /usr/sbin/setenforce 0
# chcon system_u:object_r:httpd_sys_script_exec_t /opt/www/mt/*.cgi
# chcon system_u:object_r:httpd_sys_script_exec_t \
/opt/www/mt/examples/plugins/mirror/*.cgi
# chcon system_u:object_r:httpd_sys_content_t /opt/www/blog
# /usr/sbin/setenforce 1
# make reload

Movable Type インストール(その3 本体)

ここから、ダウンロード。

http://www.sixapart.jp/movabletype/download-mt.html

ダウンロードしたものを解凍して、その中のindex.htmlをブラウザで開く。
で、「インストールマニュアル」をクリックして、その手順に従いインストール。

Movable Type インストール(その2 MySQLの設定)

次にMySQLを設定。

ブログ用データベース「blog」を作成

# mysqladmin --default-character-set=utf8 CREATE blog -p
Enter password:

ブログ用ユーザ「blog」を追加

# mysql -u root -p
Enter password:
mysql> show databases;
+-----------+
| Database |
+-----------+
| blog |
| mysql |
| test |
+-----------+
3 rows in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON blog.*
-> TO blog@localhost
-> IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Database changed
mysql> select user, host from user;
+------+---------------------------+
| user | host |
+------+---------------------------+
| blog | localhost |
| root | localhost |
+------+---------------------------+
2 rows in set (0.00 sec)

mysql> exit;
Bye

2006年2月 4日

Movable Type インストール(その1 Apacheの設定)

Movable Typeをインストールしたので、その設定を公開。

まずは、Apacheの設定。

[管理ツール]
URL:http://pooh3.dip.jp/mt/
Path:/opt/www/mt
[公開ブログ]
URL:http://pooh3.dip.jp/blog/
Path:/opt/www/blog
とする。

ディレクトリ作成

# mkdir /opt/www/mt
# mkdir /opt/www/blog

httpd.confを以下のように修正

# vi /etc/httpd/conf/httpd.conf

追加

Alias /blog/ /opt/www/blog/
Alias /mt/ /opt/www/mt/
<Directory /opt/www/mt>
# CGI
Options -Indexes FollowSymLinks MultiViews Includes ExecCGI
AllowOverride None
AddHandler cgi-script .cgi
AddType application/x-httpd-cgi .cgi
AddType text/css .css
DirectoryIndex index.html
Order allow,deny
Allow from all
</Directory>

設定のシンタックスチェック

# /etc/init.d/httpd configtest
Syntax OK

Apache再起動

# /etc/init.d/httpd restart

自鯖くんの紹介

これが自鯖くんです。

server.jpeg

スペック等は、こんな感じです。

CPUCeleron 2.4GHz
メモリ1GB
HDD160GB
OSFedora Core 4
WebサーバApache 2.0.X
アプリケーションサーバTomcat 5.0.X
データベースMySQL 4.1.X

2006年1月31日

カレンダーのテスト

カレンダーのテスト用です。