DELL タワー型サーバー SC440 激安特価!

dell

DELL タワー型サーバー SC440が300台数限定で35,480円です。しかも今なら送料無料!!

  • インテル®Pentium® Dual-Core プロセッサー E2180(2GHz, 1MB L2 Cache, 800MHz FSB)
  • 1GB (2x512MB) DDR2/667MHz SDRAMメモリ
  • 80GB 7200回転 SATA II 3.5″ HDD
  • デル E198FP 19インチ TFT液晶モニタ(ブラック)
  • 16倍速 IDE DVD-ROM ドライブ
  • 1年間翌営業日対応オンサイト保守サービス(6営業日9-17時)

こちらから購入可能です↓↓

Dell – Web広告限定ページ

ギネス世界記録に挑戦、「Firefox 3 Download Dayキャンペーン」

downloaddaytoppage

Mozillaは、近日中にリリース予定のFirefox 3公開にあわせ、「Firefox 3 Download Dayキャンペーン」を実施する。Firefox 3がリリースされると同時に世界中のユーザーに参加してもらい、「24時間以内に最も多くダウンロードされたソフトウェア」としてギネス世界記録に挑戦す る。

との事ですので、是非とも参加してみませんか?

参加はこちらからどうぞ↓↓↓

http://blogs.mozilla-japan.org/inside/entry/1986/

Spread Firefox | Download Day 2008(キャンペーンサイト)

PHPコード最適化高速化TIPSまとめ

PHP最適化 ベストプラクティス!

参考url:
http://d.hatena.ne.jp/koto2/20080518/1211070116

  • 01. static にできるメソッドは static として宣言しよう。(4倍速い)
  • 02. echo の方が print より速い。
  • 03. echo ‘文’,'字’; (カンマ区切り)の方が、’文’.'字’ (ドット連結)より速い。
  • 04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。
  • 05. 大きい配列のような変数unset() してメモリを解放しよう。
  • 06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。
  • 07. require_once はハイコストなのです。
  • 08. includerequire でファイルはフルパスで指定しよう。
  • 09. スクリプト開始時間は time() でなく $_SERVER['REQUEST_TIME'] で取得。
  • 10. 可能であれば、正規表現より strncasecmpstrpbrkstripos を使おう。
  • 11. strtr(str_replace の4倍速い) > str_replacepreg_replace の順に速い。
  • 12. 引数配列文字列両方を受け入れるような関数は避け、個別に関数化しよう。
  • 13. if をたくさん使ってるなら switch を活用しよう。(訳注:ってことでいい?)
  • 14. @によるエラー制御はすんごく遅い。
  • 15. Apachemod_deflate(Apache2系) を ON にしておこう。(No.42 参照)
  • 16. 処理が終わったらデータベースの接続は切っておこう。
  • 17. $row['id'] は $row[id] より7倍速い。
  • 18. エラーメッセージはハイコスト。
  • 19. for 文の条件式には count($array) のような関数をいれない。(変数に格納)
  • 20. メソッド内ではローカル変数をインクリメントするのが一番速い。
  • 31. キャッシュを利用しよう。通常、コンパイル回数 x 25~100% 分速くなる。
  • 32. これもキャッシュについて。memcached とか使おうよ。
  • 33. if (strlen($foo) < 5) を調べたいなら if (!isset($foo{5})) と書くと速い。
  • 34. $i++ より ++$i の方が速い。(そういう opcode optimizer が走ってる場合)
  • 35. 全部が全部 OOP でなくても良い。(コストやメモリの浪費になってるかも)
  • 36. すべてのデータをクラスにしようとしないこと。配列も十分便利です。
  • 37. メソッドを分割しすぎない。(どれを再利用するのかよく考えよう)
  • 38. メソッドを分割したくなったら後でいくらでもできる。
  • 39. もとから用意されてる 関数たち を活用しよう。
  • 40. 非常に時間のかかる関数C言語による拡張モジュール化も検討しよう。
  • 61. SELECT * (ワイルドカード)を使うのはやめよう。
  • 62. PHP より賢い DB ロジック(queries, joins, views, procedures)を活用しよう。
  • 63. SQL の省略表記を活用しよう。
    (例:INSERT INTO MYTABLE (FIELD1,FIELD2) VALUES ((“x”,”y”),(“p”,”q”));)

以上。

無くなって初めて気づく定期的自動バックアップの大切さ

という事で、約40分で理解する定期的自動バックアップ方法のメモです。

参考url:
http://www.hyperdyne.co.jp/~oohashi/work/redhat/etc/remotebackup.shtml

今回はpostgresqlを例にしてみます。

なにをやるかですが、

  1. 遠く離れたLinuxマシン上で、自動的にデータを定期的に圧縮・保管する
  2. 圧縮は、週1回はフルで行ない、差分(追加・修正されたファイルのみ。削除されたファイルは反映されない)だけを毎日とる
  3. 手元にあるLinuxマシンが自動的にFTPでログインし、圧縮・保管されているファイルを毎日ゲットする

です。

1.の定期的にバックアップする

まず遠く離れたところにあるLinuxマシンで、データを定期的に圧縮・保管するようにします。ここでは、システム全体のバックアップは行なわず、データ のバックアップだけを行なうようにとどめ、バックアップにあたっては、ユーザのディレクトリごとに行ない、週1回そのフルバックアップを行ない、そのうち変 更・追加されたファイルのバックアップを毎日行なうようにします。

バックアップはシェルスクリプトを使い、cronによって自動的に行ないます。まずシェルスクリプト「dailybackup.sh」を、次の内容で記述します。

#!/bin/sh
set `date +%y%m%d`
cd /var/www
find html/ -mtime 1 ! -type d -print > /var/backup/html$1.txt
if test -s /var/backup/html$1.txt
then
tar zcvf /var/backup/html$1.tar.gz -T /var/backup/html$1.txt
fi
cd /home
find webmaster/ -mtime 1 ! -type d -print > /var/backup/webmaster$1.txt
if test -s /var/backup/webmaster$1.txt
then
tar zcvf /var/backup/webmaster$1.tar.gz -T /var/backup/webmaster$1.txt
fi
su -l postgres -c '/usr/bin/pg_dump database_1 > database_1.dump'
mv /var/lib/pgsql/database_1.dump /var/backup/database_1$1.dump
set `date --date '1 days ago' '+%y%m%d'`
rm -f /var/backup/*$1.txt
rm -f /var/backup/*$1.tar.gz
rm -f /var/backup/*$1.dump

ここでは、バックアップしたデータを格納するディレクトリを「/var/backup」としています。「/var/backup」のオーナーは「root」ですが、バックアップファイルをあとでFTPでゲットできるよう「webmaster」を例えば「webmaster」というようなグループに所属させ、そのグループにも読み書き・削除できる権限を与えておく必要があります。「chmod 770」です。

# ls -la
合計 74
drwxr-xr-x   27 root     root         4096 May  8 12:17 .
drwxr-xr-x   17 root     root         1024 Feb 17 04:15 ..
drwxrwx---    2 root     webmaster    8192 Jun 19 15:41 backup

シェルスクリプトなので先頭に「#!/bin/sh」が必要です。2行目の「set `date +%y%m%d`」は、dateコマンドから「010621」(2001年6月21日)というパラメータを作るためのもので、「$1」がこのパラメータに置き換わります。

「cd /var/www」でバックアップしたいディレクトリのひとつ上に移動します。「find html/ -mtime 1 ! -type d -print > /var/backup/html$1.txt」は、findコマンドで1日(24時間)以内に修正・追加されたファイルをリストアップします。リス トアップされたファイルリストは「html010618.txt」のように日付「010608」が付いたファイル名で保存されます。

findコマンドでは、「find <検索を開始するディレクトリ> <検索の条件> <コマンド>」という書式になります。

if test -s /var/backup/html$1.txt
then
tar zcvf /var/backup/html$1.tar.gz -T /var/backup/html$1.txt
fi

「if」文で分岐処理しています。先に実行するfindコマンドでは、変更・追加がなくてもファイルが作られるため、testコマンドを使ってそのファイルが空かどうかをチェックします。空でない場合、そのファイルリストをもとにtarコマンドで、リストにあるファイルを圧縮します。

su -l postgres -c '/usr/bin/pg_dump database_1 > database_1.dump'
mv /var/lib/pgsql/database_1.dump /var/backup/database_1$1.dump

は、PostgreSQLのデータベースをバックアップしています。

set `date --date '1 days ago' '+%y%m%d'`
rm -f /var/backup/*$1.txt
rm -f /var/backup/*$1.tar.gz
rm -f /var/backup/*$1.dump

は、前日の不要なファイルを削除するステップです。「set `date –date ’1 days ago’ ‘+%y%m%d’`」で1日前を「010617」のようなパラメータとし、rmコマンドで不要なファイルを削除しています(daysはdayという単数形でもいいようです)。

以上のような内容のシェルスクリプトを作ったら、オーナーrootで「chmod 700」として実行権を与えておきます。スクリプトに誤りがないか確認したら、実行して動作を確認します。
実行して動作に問題が無ければ最後に、「/etc/crontab」に登録します。

30 4 * * * root /var/backup/dailybackup.sh > /dev/null 2 >&amp;1

毎日明け方4時30分にスクリプト「dailybackup.sh」が実行されます。

同様にして「weeklybackup.sh」という名前のシェルスクリプトを次の内容で作ります。

#!/bin/sh
set `date +%y%m%d`
cd /var/www
tar zcvf /var/backup/html$1.full.tar.gz ./html/*
cd /home
tar zcvf /var/backup/webmaster$1.full.tar.gz ./webmaster/*
set `date --date '1 weeks ago' '+%y%m%d'`
rm -f /var/backup/*$1.full.tar.gz

dailybackup.shとほとんど同じ内容ですが、「なんとか+日付.full.tar.gz」という日付付きの名前で圧縮ファイルを作るようになります。rmコマンド行は、1週間前の不要なファイルを削除するステップです。「set `date –date ’1 weeks ago’ ‘+%y%m%d’`」で1週間を「010617」のようなパラメータとし、rmコマンドで不要なファイルを削除しています(weeksはweekという単数形でもいいようです)。

dailybackup.shと同じように「/etc/crontab」に登録します。

50 4 * * 0 root /var/backup/weeklybackup.sh > /dev/null 2>&1

3.のリモートマシンからFTPでバックアップファイルをゲットする

次に近くにあるLinuxマシンから自動的にリモートサーバにFTPでファイルをゲットする仕組みを作ります。まず次のような内容のシェルスクリプト(たとえば、「remote.sh」というような名前で)を作ります。

#!/bin/sh
cd /usr/bin
ftp -n > /home/xxxxxxx/login.www

「/usr/bin」ディレクトリにあるftpコマンドを使っています。続いて「/home/xxxxxxx」ディレクトリに「login.www」というような名前のファイルを作り、次のようなftpコマンドを記述しておきます。

open www.hyperdyne.co.jp
user webmaster xxxxxxxxxxxx
idle 600
prompt
hash
lcd /home/xxxxxxxx/www/
cd /var/backup
bin
mget *.tar.gz
ascii
mget *.dump

openコマンドでサーバを指定し、そのあとでuserコマンドでユーザ名とパスワードを渡しています。「xxxxxxxxxxxx」となっているところにパスワードが入ります。FTPではテキストでパスワードが流れてしまいます。lcdはlocal側のcd(Change Directory)です。ローカル側とリモート側でディレクトリを移動してからmgetコマンドで複数のファイルをgetします。

getするときには、バイナリファイルに対しては「bin」を、テキストファイルには「ascii」をあらかじめ実行しておきます。「hash」は進行状況を表示するコマンドです。実際に運用するときは不要です。

作ったシェルスクリプトを実行させてみてうまく動作するようでしたら、cronに登録しておきます。
以上です。お疲れ様でした。

Google,Yahoo,MSNのウェブマスターツールのメモ

Google,Yahoo,MSNの三大検索エンジンのウェブマスターツールのリンクメモ。

まずは、Google。
http://www.google.co.jp/webmasters/

お次は、Yahoo。
https://siteexplorer.search.yahoo.co.jp/

そして、MSN。
http://webmaster.live.com/

おまけで、webサイトを検索エンジンに登録するリンクもメモ。

Google。
http://www.google.co.jp/addurl/?hl=ja&continue=/addurl

Yahoo。
http://submit.search.yahoo.co.jp/add/request

MSN。
http://search.msn.co.jp/docs/submit.aspx