今日のひと悩み

if (!$error && ($size[0] < 25) || ($size[1] < 25))
{
  $error = 'Please upload an image bigger than 25px.';
}

FancyUploadという割とメジャーなアップロード・ライブラリを組み込もうとして少しハマる。
$error = "another error"、$size = false でここへ来たとき、$errorが再定義されてしまう。
間違い探しだと思って眺めたらすぐわかるけど、割とメジャーなライブラリのサンプルだと思うと、ここにこんな初歩的なミスが入り込んでいるだなんて、想像しないので別のところを探しまわったしまったよ。
(正解は括弧がひとつ足りない。$errorがセットされていなくて、幅・高さのいずれかが25px以下)

湘南地域のお掃除代行サービス:luv2.jp

あ、あ、久しぶりに書くのでリハビリを兼ねて、友人が始めたサービスのご紹介。
 

元々横須賀ベースの外人さんやご近所の外人さん相手に派遣でお掃除サービスをやってたんだけど、結構評判がいいし、どこで聞いてきたか問合せもあるので、じゃあ、日本人向けにもサービスする?という感じで始めた会社です。
LUV2 Scrub House Keeping Serviceという、外人相手としか思えない名前ですけど、HPは一応日本語ですし、社長さんがヘルナンデスさんという、えっ、外人じゃねーのという感じですが、直子さんというちゃんとしたジャパニーズの人なので安心です。
鎌倉から逗子、葉山の湘南地域南部と、横須賀、三浦という三浦半島西部がサービス地域になってて、単価的には相当リーズナブルだと思います。
頼める人は限られますけど、もしその地域にお住まいの方は、一度利用してみてください。運が良ければ、マキさんというスーパーお掃除ニストが担当してくれるかも。(この人がついたら倍払っても元がとれると思います)

WordPress MU 2.7.1と2.9.1.1のDB上の相違点

WordPress MU 2.7.1から手動で 2.9.1.1へデータを移す際の相違点をメモ。2010/1/20時点のダンプを元にしている。(wp_?_は管理ドメインごとの接頭子)

wp_1_commentmeta

2.7.1にはないテーブル。

wp_1_comments

ID関係が signed intから unsigned bigintに変更されているようだ。しかし、主キーのオートインクリメントが大きい数字から始まっているのは何か理由があるんだろうか?

2.7  `comment_post_ID` int(11) NOT NULL default '0',
2.9  `comment_post_ID` bigint(20) unsigned NOT NULL default '0',

2.7  `comment_parent` bigint(20) NOT NULL default '0',
2.9  `comment_parent` bigint(20) unsigned NOT NULL default '0',

2.7  `user_id` bigint(20) NOT NULL default '0',
2.9  `user_id` bigint(20) unsigned NOT NULL default '0',

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

wp_1_links

ID関係(signed int ⇒ unsigned bigint)は同上。link_categoryがなくなった。

2.7  `link_id` bigint(20) NOT NULL auto_increment,
2.9  `link_id` bigint(20) unsigned NOT NULL auto_increment,

2.7  `link_category` bigint(20) NOT NULL default '0',
2.9  

2.7  `link_owner` int(11) NOT NULL default '1',
2.9  `link_owner` bigint(20) unsigned NOT NULL default '1',

2.7  KEY `link_category` (`link_category`),
2.9  

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

wp_1_options

ID関係(signed int ⇒ unsigned bigint)は同上。blog_idが主キーじゃなくなったということは、オプションが全ブログ共通になったということか?

2.7  `option_id` bigint(20) NOT NULL auto_increment,
2.9  `option_id` bigint(20) unsigned NOT NULL auto_increment,

2.7  PRIMARY KEY  (`option_id`,`blog_id`,`option_name`),
2.9  PRIMARY KEY  (`option_id`),

2.7  KEY `option_name` (`option_name`)
2.9  UNIQUE KEY `option_name` (`option_name`)

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=2911 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=236 DEFAULT CHARSET=utf8;

wp_1_postmeta

ID関係(signed int ⇒ unsigned bigint)は同上。

2.7  `meta_id` bigint(20) NOT NULL auto_increment,
2.9  `meta_id` bigint(20) unsigned NOT NULL auto_increment,

2.7  `post_id` bigint(20) NOT NULL default '0',
2.9  `post_id` bigint(20) unsigned NOT NULL default '0',

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=804 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

wp_1_posts

ID関係(signed int ⇒ unsigned bigint)は同上。post_categoryがなくなったけど、これを使って投稿をコントロールしていたテンプレートは大丈夫だろうか?

2.7  `post_author` bigint(20) NOT NULL default '0',
2.9  `post_author` bigint(20) unsigned NOT NULL default '0',

2.7  `post_category` int(4) NOT NULL default '0',
2.9  

2.7  `post_parent` bigint(20) NOT NULL default '0',
2.9  `post_parent` bigint(20) unsigned NOT NULL default '0',

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=1127 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

wp_1_term_relationships

ID関係(signed int ⇒ unsigned bigint)は同上。

2.7  `object_id` bigint(20) NOT NULL default '0',
2.9  `object_id` bigint(20) unsigned NOT NULL default '0',

2.7  `term_taxonomy_id` bigint(20) NOT NULL default '0',
2.9  `term_taxonomy_id` bigint(20) unsigned NOT NULL default '0',

wp_1_term_taxonomy

ID関係(signed int ⇒ unsigned bigint)は同上。

2.7  `term_taxonomy_id` bigint(20) NOT NULL auto_increment,
2.9  `term_taxonomy_id` bigint(20) unsigned NOT NULL auto_increment,

2.7  `term_id` bigint(20) NOT NULL default '0',
2.9  `term_id` bigint(20) unsigned NOT NULL default '0',

2.7  `parent` bigint(20) NOT NULL default '0',
2.9  `parent` bigint(20) unsigned NOT NULL default '0',

2.7  UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`)
2.9  UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`),

2.7  
2.9  KEY `taxonomy` (`taxonomy`)

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

wp_1_terms

ID関係(signed int ⇒ unsigned bigint)は同上。

2.7  `term_id` bigint(20) NOT NULL auto_increment,
2.9  `term_id` bigint(20) unsigned NOT NULL auto_increment,

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=3994 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

wp_blogs

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

wp_registration_log

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

wp_site

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

wp_sitecategories

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=252 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

wp_sitemeta

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=424 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=37 DEFAULT CHARSET=utf8;

wp_usermeta

ID関係(signed int ⇒ unsigned bigint)は同上。

2.7  `umeta_id` bigint(20) NOT NULL auto_increment,
2.9  `umeta_id` bigint(20) unsigned NOT NULL auto_increment,

2.7  `user_id` bigint(20) NOT NULL default '0',
2.9  `user_id` bigint(20) unsigned NOT NULL default '0',

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=1148 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

wp_users

) ENGINE=MyISAM AUTO_INCREMENT=60 DEFAULT CHARSET=utf8;
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

wp_1_contact_form_7

Contact Form 7プラグインのテーブル

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

wp_1_wp_1_ngg_album

NextGEN Galleryプラグインのテーブル

2.7  
2.9  `pageid` bigint(20) NOT NULL default '0',

wp_1_ngg_gallery

NextGEN Galleryプラグインのテーブル

2.7  `pageid` bigint(20) default '0',
2.9  `pageid` bigint(20) NOT NULL default '0',

2.7  `previewpic` bigint(20) default '0',
2.9  `previewpic` bigint(20) NOT NULL default '0',

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

wp_1_ngg_pictures

NextGEN Galleryプラグインのテーブル

2.7  ) ENGINE=MyISAM AUTO_INCREMENT=462 DEFAULT CHARSET=utf8;
2.9  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Mailmanの特定リストの管理者画面にログインできない

空メールを受け付けて、それをそのまま Mailmanの入会にするような仕組みを作っていたんですが、サーバを入れ替えた影響で nobodyユーザのパーミッション設定がうまくいかなくなり、エラーで落っこちるようになってしまいました。

$ e /etc/aliases

satake-fjoin:  "|ruby /home/fmail/from.rb |sudo add_members -r- satake"

こんな風にしていたわけですが、rubyがないといわれたり、logのパーミッションがダメといわれたり。
 
そんなこんなでいろいろとテストして、やっと大丈夫そうだと思って管理者画面にログインしようとすると、いつまで待ってもレスポンスが返ってきません。他のリストの管理者画面には入れるのに。
 
ここにそのものズバリの回答がありました。
Loading...
 
/var/lib/mailman/locks にロックファイルがたくさんあったので、master-qrunner以外をすべて消したらログインできるようになりました。

WordPress MUを再びインストール

昨年初めにインストールした WordPress MUは元気に安定的に活躍してくれているんですが、あまりに安定的に動いてくれているがために、2.7.1からバージョンを上げることができなくなり(相方は動いているものはイジルナが信条なもので)、もう 2.9がでようとしてるのにそれじゃまずいだろうということで、新バージョンを別に入れることにしました。(2.8.6を入れるつもりだったんだけど、いまみたら 2.9.1.1になってる。どうせ別インストだからホカホカのでいくか)

いままでのインストール

  1. WordPress MUのインストール(1) - satake7’s memo
  2. WordPress MUのインストール(2) - satake7’s memo
  3. WordPress MUのインストール(3) - satake7’s memo
  4. WordPress MUのインストール(4) - satake7’s memo

きっといま動いているやつと微妙に違うと思う。マルチドメインできねぇとか書いてあるけど、ちゃんとプラグインでできてます。
以下の新規インストールでは、スーパー箇条書きでいきます。

ダウンロード

$ wget http://mu.wordpress.org/latest.tar.gz
$ tar xfvs latest.tar.gz
$ wget http://wpmu-ja.googlecode.com/files/wpmu-2852-ja.zip
$ unzip wpmu-2852-ja.zip
$ mkdir wordpress-mu/log
$ mkdir wordpress-mu/wp-content/languages
$ mv ja.mo wordpress-mu/wp-content/languages/
$ mv wordpress-mu/ /home/www/wordpress-mu29/

これで日本語リソースが入った WPMUが /home/www/wordpress-mu29/ にできる。(本体=2.9.1.1、日本語リソース=2.8.5.2 だけどとりあえず気にしないことに)
logディレクトリを作っているのは Apacheのログを書くため。

インストール前の準備

$ cd /home/www
$ chmod 777 wordpress-mu29
$ chmod 777 wordpress-mu29/wp-content/

$ mysql -u root -ppassword
mysql> create database wpmu29;
mysql> grant all on wpmu29.* to 'wpadmin'@'localhost' identified by 'password';
mysql> exit

パーミッションを出しておいて、DBを作成。wpadminユーザにすべての権限を出しておく。
Apache関係の設定は以下の通り。

$ e /etc/apache2/sites-available/my_site

<VirtualHost *:80>
  ServerName satake7.jp
  ServerAlias *.satake7.jp
  Include ./sites-available/include/wordpress-mu29
</VirtualHost>
$ /etc/apache2/sites-available/include/wordpress-mu29

DocumentRoot /home/www/wordpress-mu29/
ErrorLog /home/www/wordpress-mu29/log/error.log
CustomLog /home/www/wordpress-mu29/log/worm.log combined env=worm
CustomLog "| /usr/sbin/rotatelogs /home/www/wordpress-mu29/log/access.log.%Y%m%d 604800" combined env=!nolog

DocumentRootを /home/www/wordpress-mu29/へ振り向けてるだけ。

$ sudo /etc/init.d/apache2 restart

Apacheをリロードして完了。

インストール

http://satake7.jp

Database Name 	wpmu29
User Name 	wpadmin
Password 	password
Database Host 	localhost
Server Address 	satake7.jp
$ chmod 755 /home/www/wordpress-mu29
$ chmod 755 /home/www/wordpress-mu29/wp-content/
$ rm /home/www/wordpress-mu29/index-install.php

DB名、ユーザ、パスワードなどを入力してインストールします。よほどのことがない限り、ここで失敗することはないはず。
成功したらパーミッションを戻して、インストーラを消しておきます。

インストール後処理

  1. adminでログインしてパスワードを変更しておく。
  2. Setings>General で japaneseを選択する。
  3. サイト管理>設定>初期設定言語 で japaneseを選択する。

以上で基本的なところは終了。