0

HTTP_RequestでIf-Modified-Sinceを設定する

フィード関連のサービス(フィードリーダー、更新情報の集約)をつくっていると、定期的にフィードを配信するサーバーにフィードを取得しにいかなくてはなりません。
もちろんこのフィード取得のために多少なりともフィードを配信するサーバーに負荷をかけてしまいます。
フィードを配信してる人があってのこの手のサービス、相手に極力迷惑をかけずにやっていきたいものです。
そこで、一時間に一回クロールしてフィードすべてをとってくるのではなく、前回のクロール時以降更新がある場合のみ取得するというやり方がおすすめです。

導入は簡単で、If-Modified-Sinceをクローラーのヘッダーに入れ込むことで実現可能です。

これは2007年6月19日(日) 2時24分23秒以降にフィードが更新されてたら取得するという意味です。
If-Modified-Since: Sun, 19 Jun 2007 02:24:43 GMT

更新された場合はレスポンスコード200を返してくれますので、フィードを取得します。
更新されてない場合レスポンスコード304を返しますので、前回取得時とかわりがないのでそのままにして次の処理にいきます。
更新してないとスルーするのでクローリングする時間も大幅に短縮できます。

一時間前のクローリングから更新がないかチェックするPHPでのサンプルをのっけときます。

require_once "HTTP/Request.php";
$option = array(
"timeout" => "10", // タイムアウトの秒数指定
);
$UA = "hoge";
$url = "http://hoge.com";
$last_modified = gmdate('D, d M Y H:i:s T', time() - 3600);
$http = new HTTP_Request($url, $option);
$http->addHeader("User-Agent", $UA);
$http->addHeader("If-Modified-Since", $last_modified);
$response = $http->sendRequest();
if (!PEAR::isError($response)) {
$resCode = $http->getResponseCode();
if ($resCode == 304) {
echo "not changed";
}
elseif ($resCode == 200) {
echo $http->getResponseBody();
}
else {
echo $resCode;
}
}

0

SSHのセキュリティを上げる

Linuxサーバーを立ち上げていると、おびただしい数のアタックがSSH経由である。
ディクショナリーアタックとかいうやつ。
かなりランダムなIDとパスワードを設定してるので破られる可能性は低いもののlogに残るがどうもうざい。
そこで、一番手っ取り早いのはSSHのポートをデフォルトの22から変更すること。

1,/etc/ssh/sshd_configを修正する
Port 22
↓↓
Port 2121

2,ルーターのポートを忘れず変更

3,SSHを再起動。
# /etc/init.d/sshd restart

たったこれだけで、攻撃がゼロに。
デイリーで送られてくるlogwatchメールもきれいなものになりました。

0

cssでwidth:autoの使いところ

CSSで便利そうだけど、イマイチ使い道がわからないwidth:auto。
僕が重宝してるのはフォームのテキスト部分です。

フォームの中のinputがほとんどがtextな場合、inputタグに200pxになるようにスタイルをかけます。
しかし、このままでは、checkboxやsubmitもinputタグなので同様に200pxになってしまいます。
これらにも同様に10pxや100pxとして幅を指定するのもいいですが、submitなんて万一width内に文字が入らなければ切れてしまうのでwidthを指定してないデフォルトに戻してあげるべきです。
そういう場合width:autoを使います。

autoは本来デフォルトに戻すという意味なので、これで小さくしたいのみinput要素があればdefaultというクラスをかけてあげればOKです。
こんな感じで。
input {
width:200px;
}

input.default {
width:auto;
}

0

マークアップエンジニア

IT戦記 – マークアップエンジニアはどこへ向かうべきか(を考えてたらカッとなって LL の資料公開)

どこへ向かうかはしらんが、マークアップエンジニアネタを書きたくなった。
昨今の制作会社では、次のような3タイプのマークアップエンジニア(コーダー)に分かれます。

  1. 旧来のテーブルレイアウトでしか組めない人間
  2. フルスタイルでしか組めない人間
  3. そして両方使いこなせる人間

一番いいのはもちろん3番です。
受託開発では新しくつくるサイトはフルスタイルであっても、一年以上前につくったテーブルレイアウトのサイトの修正という仕事は多々あります。
jcode.plを使ったperlのフォームの修正があるように。。
それらをこなすためには、枯れた技術というものはしっかり理解してなくてはなりません。

という理由で少し残念なのが2番目のフルスタイルでしか組めない人間。
社内では一定の評価はされるものの実務ではこのように足をひっぱることもあります。
ここ1,2年でこの業界に入った若人に多いです。

そして、もっとも残念なのが1番のテーブルでしか組めない人。
ぶっちゃけ会社にはいりません。
年でいうところの30才手前に多いです。
若き頃DWを使いごりごりテーブルレイアウトしていた人たちですね。
うまく(X)HTML+CSSの波に乗り損ねた人たちは、必死で枯れた技術にしがみつこうとします。
「ユーザーはそんなこと気にしてない」と。
確かに少し上流の仕事をしていたら、その辺の技術習得は疎かになるかもしれないけど、僕が一番この手の人間が情けないと思うのは、そのフットワークの重さ。
この移り変わりの激しい業界では、常にアンテナはって新しいトレンドを追いかけないとだめなのにそんなところで停滞してるはどうかと思う。

世間でいうWeb2.0なサイトがテーブルで組んでますか?

0

Scuttle-オープンソースのソーシャルブックマーク

ソーシャルブックマークを構築しようと思った時に調べたら、Scuttleというオープンソースのソーシャルブックマークがありました。
他にも同類のOSSはありましたがPHPではこれが一番よくできるかと思います。

インストールはここを参考にさせてもらいました。
こけることなくすんなりインストールすることができました。

一点、困ったのが日本語表示を変更する部分です。
日本語化する為にconfig.inc.phpを下記のようにしました。
$locale = 'ja_JP';

で、これをxoopsとかのように、いじれば日本語の文言を変更できるだろうと思いいじってみましたが全然反映されません。
/sbm/locales/ja_JP/LC_MESSAGES/messages.po
#: ..\..\..\about.php:25
#: ..\..\..\templates\toolbar.inc.php:24
msgid "About"
msgstr "このサイトについて"

調べてみるとこれをバイナリにコンパイルしないといけないみたいです。
コンパイルはLinuxなら下記のようにします。
msgfmt -o messages.mo messages.po

すると新たにmessages.moというファイルが生成されます。
Scuttleは日本語の文言をここから拾ってくるようになります。

テンプレートファイルに直接日本語を書くのもOKですが、デフォルトでSJISになっています。
必要に応じてUTF8に変更してください。

0

Web制作会社で働くということ

今の制作会社に勤めて2年が経ちました。
規模としては50名程なので中の上くらいかな。
受託開発メインで日々ゴリゴリ作ってすごい勢いで納品していくという典型的な制作会社です。
前職もそんな感じですが、制作会社がコンテンツプロバイダーやサービスプロバイダーになるのは至難の業とヒシヒシと感じます。

今時の制作業はオーサリングソフトがあればそれなりのホームページができてしまうので、より低額で仕事を請けるSOHOと呼ばれる会社がえらく増えてきました。
2~3人の人件費を稼げばいいのでこういった低額な料金が実現できます。

ところが私が働いてるような中堅の制作会社は、これらの価格競争に勝ちながら会社は運営していかなくてはなりません。

そして、こういった会社がだいたいASPでサービスの提供、メディアをもつといった方向にも走ります。
しかしながら価格競争まっしぐらの中、非受託開発に人を出すことは容易ではありません。
また、いざ自分たちでサービスを開発しようとすると想像以上に受託開発からは技術以外のものを学びきれていません。
がんばってサービスを完成させても、制作後にそれが顕著に現れます。

マーケティングの実践力というのを我々は全然持ち合わせていません。
SEOやSEMの知識があり、そのサービスにニーズがあっても提供にまで至るフローがぐちゃぐちゃもしくは端から用意されていません。
クライアントにはやれSEOだのSEMだのユーザビリティーだの語るくせに驚くほど実践力がありません。

原因はやはり受託開発で入る固定費にしがみつき、サービスは提供が片手間になるから。
本当その道に転ずるなら、Webマーケティングを本当に熟知してる人間、仕事をとってくる営業ではなくて物を売れる営業が必要となるでしょう。

コンテンツプロバイダーをメインにしようと起業してるところはその辺の目の付け所が違います。すぐに結果のでないサービス作りというのも理解し、サブで受託会社をするので学ぶ意欲もある。言葉は悪いがクライアントを実験の場にさせてもらい自分たちのサービスで実践できるのである。

こういった状況が今の制作会社の周りでよく起こってます。
転職するときの参考にでもしてください。