PHPのarray_mergeは良い

array_margeは便利だと思う。

$attributes = array(
    'var1' => 'aaa',
    'var3' => 'bbb',
);
$defaults = array(
    'var1' => null,
    'var2' => null,
    'var3' => '-',
    'var4' => '-',
    'var5' => '-',
);
$attributes = array_merge($defaults, $attributes);

echo '<PRE>';
print_r($attributes);
echo '</PRE>';

実行結果↓

Array
(
    [var1] => aaa
    [var2] => 
    [var3] => bbb
    [var4] => -
    [var5] => -
)

配列にデフォルト設定するとき良く使う。

ちなみに、配列のキーの差分を取得するarray_diff_keyも便利です。

$attributes = array(
    'var1' => 'aaa',
    'var3' => 'bbb',
    'var6' => 'ccc',
);
$defaults = array(
    'var1' => null,
    'var2' => null,
    'var3' => '-',
    'var4' => '-',
    'var5' => '-',
);

$attributes = array_diff_key($attributes, $defaults);

echo '<PRE>';
print_r($attributes);
echo '</PRE>';

実行結果↓

Array
(
    [var6] => ccc
)

PHPを使い始めてそろそろ1年・・・

GETパラメーターでURLを送りたい

普通に

<a href="/xxx/?url=http://aaa.com/">リンク</a>

で良いんだけど渡したいURLの中にさらにパラメーターが複数ある場合

<a href="/xxx/?url=http://aaa.com/?id=1&var=2">リンク</a>

こうすると

url = http://aaa.com/?id=1
var = 2

みたいになってしまうので

<a href="/xxx/?url=http://aaa.com/?id=1%26var=2">リンク</a>

とすると良いよ。

html_select_date のメモ

{html_select_date prefix='' time=$date|default:'--' field_array=date field_order=YMD month_format='%m' end_year='+1' year_empty='' month_empty='' day_empty='' year_extra="id=y"|cat:$id month_extra="id=m"|cat:$id day_extra="id=d"|cat:$id}

macのTerminal.appでsshがタイムアウトになってしまう

Windowsだとsshクライアントはputtyを使っているので

Connection の 設定で

Sending of null packets to keep session active
Seconds between keepalives(0 to turn off) 60

にしているので、タイムアウトはしない。
※セッションがタイムアウトしないように60秒おきにnullパケットを自動送信する

macのTerminal.appでは???


まず、sshクライアントの設定ファイルをまとめるために~/.ssh/config を作る。
僕は/etc/ssh_configをコピーして作成。

cp /etc/ssh_config ~/.ssh/config

で設定した内容が

Host suusuke.info 
   HostName suusuke.info
   User suusuke
   IdentityFile ~/ssh/182.163.74.64/id_rsa_putty_openssh.ppk
   ServerAliveInterval 60

重要なのは

ServerAliveInterval 60

どういう意味かというと

man ssh_config

     ServerAliveInterval
             Sets a timeout interval in seconds after which if no data has been received from the server,
             ssh(1) will send a message through the encrypted channel to request a response from the server.
             The default is 0, indicating that these messages will not be sent to the server.  This option
             applies to protocol version 2 only.

設定すると指定した時間間隔で応答のリクエスト送るよってことかな。
デフォルトは0なので送らないよ、sshのバージョンは2だけだよってことか。

追記

ちなみにWinSCPでは

  1. 起動後 Advances options にチェック
  2. Connection – Keepalives で Sending of null SSH packets にチェック

でOK!

macメモ

徐々に書いて行きます。

基本

記号

eclipse

key設定はemacs

Ctrl x + b エディター切り替え
Ctrl x + u undo
Option + Command + A 矩形選択
Command + Shift + C トグルコメント
Ctrl c + Ctrl q ソースフォーマット

wp-emacsからの

投稿テスト

weblogger-prev-entryで投稿したエントリーの前の記事編集できる!

テンプレート有るみたいなので頑張って調査してみる!

参考サイト:http://recently.sakura.ne.jp/wp/2009/06/01/229

ServersMan@VPS契約

仕事の方も余裕が出てきたのでServresManのVPSを契約してみました。

http://dream.jp/vps/

導入〜WordPress設定まで

VPS、ドメイン契約

VPSはServersManのスタンダードプランを契約して、ドメインはお名前.comで取得しました。

スタンダードプランで固定IPが2つ使えるので、取り合えず一つはWordPress用(blog.suusuke.info)に割り当ててもう一つは勉強用(www.suusuke.info)に。

お名前.comで「レンタルDNSレコード設定」、「ネームサーバーの変更」して無事ドメインでアクセスできるようになりました。

サーバー初期設定

  1. ユーザー追加、パスワード設定
  2. ssh設定
  3. PHP、MySQLインストール
  4. バーチャルホスト設定

ユーザー追加、パスワード設定

管理ユーザー(suusuke)追加とパスワードの設定。

useradd suusuke // ←管理ユーザー
passwd suusuke // ←パスワード設定
usermod -G wheel suusuke // ←whellに追加

ssh設定

昔はてなで書いた記事そのまま実行して設定

http://d.hatena.ne.jp/suusuke/20080724/1216828604

  • rootでログイン禁止
  • パスワード認証禁止
  • 公開鍵と秘密鍵で認証

あと、macだとOpenSSHなので秘密鍵をOpenSSH用にPuttyGenでコンバートして完了。

PHP、MySQLインストール

ネット探すと沢山情報が載ってるので参考に

リポジトリ追加

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-7.el5.remi.noarch.rpm
rpm -Uvh remi-release-5-7.el5.remi.noarch.rpm epel-release-5-3.noarch.rpm
vi /etc/yum.repos.d/remi.repo
# この行の下に priority=1 を追記
failovermethod=priority
priority=1

PHP インストール

yum --enablerepo=remi install php-devel php-mbstring php-mysql

確認

php -v

phpinfo(); // ←phpinfoで環境確認

MySQLインストール


yum --enablerepo=remi info mysql-server // ←バージョン確認

yum --enablerepo=remi install mysql-server // ←インストール

MySQL設定


vi /etc/my.cnf

[mysql]

default-character-set=utf8

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

default-character-set=utf8

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


chkconfig mysqld on // ←自動起動する場合

WordPress用にDB作成


/etc/init.d/mysqld start // ←mysql起動
mysql> delete from mysql.user where user = ''; // ←不要ユーザー削除

mysql> update mysql.user set password=password('任意のパスワード') where user = 'root'; // ←rootパスワード設定
mysql> create database wp; // ←WordPress用データベース作成
mysql> grant all privileges on wp.* to blog@localhost identified by 'パスワード'; //←WordPress用にユーザー追加(blog)

バーチャルホスト設定

自分ルールとして公開するWEBサイトはサイト毎にユーザー(サーバーの)を追加して


/home/[user名]/public_html/

をバーチャルホストでドキュメントルートにする。

バーチャルホストの設定ファイルは


/etc/httpd/conf.d/

にWEBサイト毎にファイルを作成する。


useradd blog // ←WordPress用にユーザー追加

passwd blog

mkdir ~/public_html

バーチャルホスト設定ファイルを作成する。


vi /etc/httpd/conf.d/httpd-vhosts-blog.conf

<VirtualHost *:80>
ServerName blog.suusuke.info
DocumentRoot /home/blog/public_html
ErrorLog logs/blog.suusuke.info-error_log
CustomLog logs/blog.suusuke.info-access_log combined env=!no_log
<Directory "/home/blog/public_html">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

hostsファイル追記


vi /etc/hosts

182.163.74.64 suusuke.info
182.163.74.66 blog.suusuke.info

WordPressのインストールはファイルダウンロードして、DBの設定ファイル書き換えてアップするだけ。

これでOKだと思ったんだけど、上手く行かなかった。


chown -R apache.apache /home/blog/

WordPress用のディレクトリのオーナーをapacheに変更したら上手く行きました。

(これやんなくても上手く行くと思ったんだけどな・・・)

設定変更後はapache再起動。

取り合えず、ブログ公開まで出来ました。

でも、この記事書くのに3時間くらいかかった。(書いてる途中にWordPressのプラグイン探したりいろいろしすぎ!)

やっぱり書くのは時間かかるです。