saasesVPS 即効設定マニュアル
先日知り合いに頼まれまして、saasesVPSの設定を行いました。
細かくは色々やることがあるのですが、基本的なPHP+Mysqlベースでの環境構築と、バーチャルホストを設定するところまでをここに書いておきます。
基本的にはsaases以外のCentOS5環境であればやり方は一緒なので、よろしければ参考にして下さい。
プラン
今回選んだプランとその概要はこちら
| プラン名 | オスキニサーバーLT | |||
|---|---|---|---|---|
| 初期費用 | 3,000円 | |||
| 月額利用料 (※1) | 450円 | |||
| 契約期間 | 3か月/6か月/12か月 ※いずれか選択可能 | |||
| HDD | 50GB | |||
| メモリ | 512MB | |||
| ディストリビューション | CentOS5 64bit | |||
saasesVPSの特徴
・アダルトサイトOK
・プリインストール(MySQL、EC-CUBE、Webmin)
やはり安い!そしてその割りにはHDDもメモリも満足出来ます。
大手のサーバー屋さんにしてはめずらしくアダルトサイトの制限がありません。
プリインストールがあるので、初心者の方でもいける・・・?かも。
プランの選択画面
一部省略していますが、プランの選択画面です。
アプリケーションについては、自分で好きなバージョンを入れたりしたいし、パッケージ管理やバーチャルホスト管理にWebminはあまり使わないのでこちらはインストールしませんでした。
プランの選択画面

合計金額
ITかあさんは以下のような料金になりました。初年度は初期設定もあるのでなかなかいいお値段になりました。(でも安いか)

設定情報の確認
初期設定までの時間
クレジットカードによる決済だとすぐにでも使えるようなのですが、銀行振り込みだと振り込んで、翌営業日には使えるように設定してくれました。なかなか対応も早いと思います。
マイページにログイン
すると以下のような設定報告書があります。あらかじめユーザーが設定してあるのですぐ始められます。
報告書のサンプル
設定報告書
こんなカンジの設定報告書があります。自分のサーバーのIPアドレス、rootパスワード、saasesで追加されたユーザー名、パスワードをここで確認し、TeraTermから設定を行ってください。
コンソールから設定!
さて、ここからは流れ作業でいきたいと思います。
順番通りにコマンドをコピペしていけば設定が完了するはずです。
ログイン
初期状態はrootでは入れない。
ユーザー名を確認して、あらかじめ設定されているユーザー名でログイン。
ログインが完了したら、rootに切り替え
CentOSのバージョン確認
CentOS release 5.7 (Final)
最新なので放置!
Apacheのバージョンを確認
Server version: Apache/2.2.3
Server built: Oct 20 2011 17:00:12
Apache最低限の設定
(2012/03/05:追記)
最低限の設定として、.htaccessだけは利用許可をしておこうかと思います。
その他細かい設定についてはこちらのWebサーバー構築(Apache)
を確認して下さい。
Options FollowSymLinks
AllowOverride None
↓
AllowOverride All ← .htaccessの許可
PHPがあるか確認
PHP 5.1.6 (cli) (built: Feb 2 2012 18:25:25)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
入れてないと思ったのに、php5.1が入っているので、PHPを削除
PHP削除
先に古いPHPを削除しておきます。
Loaded plugins: downloadonly, fastestmirror
Setting up Remove Process
Resolving Dependencies
–> Running transaction check
Is this ok [y/N]: y
Removed:
php.x86_64 0:5.1.6-27.el5_7.5
php-cli.x86_64 0:5.1.6-27.el5_7.5
php-common.x86_64 0:5.1.6-27.el5_7.5
php-gd.x86_64 0:5.1.6-27.el5_7.5
php-mbstring.x86_64 0:5.1.6-27.el5_7.5
php-mcrypt.x86_64 0:5.1.6-15.el5.centos.1
Complete!
epelリポジトリ追加
なぜかURLを
http://download.fedoraproject.org
だとうまくいかなかった。なので以下のURLでリポジトリを追加。
remiリポジトリ追加
依存関係があるので、必ず先にepelリポジトリを追加してから行ってください。
リポジトリからMysqlをインストール
PHPからでもいいのですが、今まで作業した中でMysqlがイチバン過去につまずいていたので、いつもMysqlからやるクセがITかあさんにはあります。
Mysql起動
Complete!が出て、インストール完了したら起動する。
mysqld を起動中: [ OK ]
OKがでたら起動完了
追加したリポジトリよりインストしたMysqlのバージョンを確認
mysql-libs-5.5.21-1.el5.remi
perl-DBD-MySQL-3.0007-2.el5
mysql-5.5.21-1.el5.remi
mysqlclient15-5.0.67-1.el5.remi
mysql-server-5.5.21-1.el5.remi
PHPをリポジトリからインスト
比較的利用頻度の高そうなモジュールをまとめてインストール
もしうまくいかなかったらひとつずつ入れてみるとか。
php.iniの変更
(03/05追記)
これも最低限の部分だけ。time_zoneの修正をします。これが変更していないと、date関数すらうまく使うことが出来ません。
真ん中よりやや下のあたり
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =
→date.timezone = ”Asia/Tokyo” ←先頭のコメントアウトも外す
PHPmyadminをインストール
#wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.4.9/phpMyAdmin-3.4.9-all-languages.tar.gz
解凍する
#tar zxvf phpMyAdmin-3.4.9-all-languages.tar.gz
解凍したら、閲覧可能ディレクトリに移動
# mv phpMyAdmin-3.4.9-all-languages /var/www/html/phpMyAdmin
アクセスする
http://IPアドレス/phpMyAdmin/
Mysql初期設定
Mysqlのルートパスワードを設定したり、テストテーブルの削除をします。
質問には全てYes(yキー)でお願いします。
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):Enterキー
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
… Success!
By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
WEBサーバーの基本設定は以上になります。
バーチャルホストの追加
一つのサーバーで複数のサイトを展開したい場合はバーチャルホストの設定を行ってください。
バーチャルホスト用ユーザー作成
# passwd example.com
Apacheにバーチャルホストを許可させる設定
あらかじめドメインの設定が完了していることが前提です。
#ServerName centossrv.com:80 ← 行頭に#を追加してコメントアウト
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80 ← コメント解除(バーチャルホスト有効化)
# vi /etc/httpd/conf.d/virtualhost-example.com.conf
ServerName example.com
DocumentRoot /home/example.com/public_html
閲覧可能ディレクトリ作成
ディレクトリ所有者変更
FTPツールなどで自由に変更を加えるために、ディレクトリの所有者を設定してあげましょう。
chown example.com /home/example.com/public_html
ディレクトリパーミッションの変更
なぜかパーミッションが770になっている。これでは閲覧できないので普通のパーミッションに変更する
saasesVPS利用の感想
全体を通して、おや?これ最初から入っているの?というのがおおかったです。
あと、rootでは入れないように最初からしてあるなど、さくらVPSやServersmanよりやや設定の内容は少ないように感じました。
ちなみに、FTPサーバーを設定していないため、WinSCPなどからしか接続できませんが、少しSCP接続した時に遅いかなという印象は受けましたが、安いし 容量も多いので セカンドサーバーにはけっこうオススメかもです。
日本語サイトのHTML5で書かれたマークアップを検証!
HTML5 でマークアップされた日本語サイト
もう有名企業も多数HTML5 でサイトを展開していることですし、ここは先人の技術を良い意味ソースコードから盗んで、
あ、いや『参考にして』自分のマークアップスキルを磨こうと思います。
ITかあさんは20歳の学生時代に独学で学んでWEBデザイナーになって現在に至るわけですが、丸5年もこの仕事しているとどうも我流の部分が出てきていけません。
そこで今回はHTML5先駆者のマークアップを読み解いていきたいと思います。
コーディング代行、画像切り抜きなら株式会社ロックヒル

ITかあさんは何を隠そうこういうシンプルなサイトが大好きです。最初のうち、読み解くのはこういうシンプルな方がいいかと思いまして。今回はこちらのロックヒル様のサイトのソースを拝見したいと思います。
headを拝見!
まずはheadを拝見したいと思います。
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8" /> <meta name="keywords" content="コーディング代行,画像切り抜き,ロックヒル" /> <meta name="description" content="コーディング代行、 画像切り抜きに特化する事で、低価格・高品質・短納期を実現、内部施策に断トツ強いコーディングなら株式会社ロックヒル" /> <title>コーディング代行、画像切り抜きなら株式会社ロックヒル</title> <!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!--[if lt IE 9]> <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script> <![endif]--> <link rel="stylesheet" href="css/style.css"> <link rel="stylesheet" href="css/top.css"> </head>
headタグ内の2つのJavascriptについて解説
googlecode
今回のロックヒル様のhead内でhtml5.js,IE9.jsを呼んでいるのですが、googlecodeから引っ張っているようです。
<!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->
googlecodeはjQueryやprototype,今回紹介するhtml5.jsやIE9.jsがGoogle上で公開されているもので、ちょっとわざわざ自分のサーバーに設置するのは面倒だな~というときにGoogleさんの公開しているJavascriptのURLから呼び出しが出来るという便利なものです。
html5.js
html5.jsについて解説します。
IEではブラウザ上でCSSのスタイルが当てられない以前に表示することすら出来ないという大問題を抱えています。そこでIEと、それ以前のバージョンに対応させるためにhtml5.jsの記述を入れておくわけですね。
もし自分のサーバーにhtml5.jsというJavascriptを設置して呼び出すとしたら以下のような記述になります。
これでIEブラウザでも新しいhtml5で追加されたタグでも下記のように直接セレクタにすることが出来るのです。
IE9.js
IE9.jsについて解説します。
簡単に説明すると、Internet-Explorerの挙動をW3C標準仕様にするそんな素敵なJavascriptです。
イマイチこれだけでは分かりませんね。
IE9.jsを利用すると、下記のような擬似セレクタが使えるようになります。
jQueryユーザーの方にはお馴染みかもしれないですね。
IE9.jsにおけるメリット
・属性セレクタ対応 (例えばcheckedとか)
・透過PNG対応(IEping-fixを使わなくてよい)
・position:fixed対応
・margin:0 auto;対応
・max-height,width対応
・min-height,width対応
・IE5/6のバグを修正
個人的にはCSSで擬似セレクタを使えることに一番感動していまして、
ってことです。
これはある親要素から見て何番目の子要素なのか、それを数えてセレクタとして書いてあげればよいのです。
なんて素敵なんでしょう。元々jQueryユーザーでこのセレクタに日ごろ慣れ親しんでいる私にはおいしいところしかありません。
IE9.jsにおけるデメリット
このすばらしいIE9.jsにはデメリットも存在します。
・CSSハックが一部使えなくなる
・IEで重くなる
一番目はいやいや、それくらい勉強して頑張れよってことでスルーでよいし、CSS一部ハックが使えなくなる点についてはハックをなるべく使わないマークアップがベストなのでこれもスルー。
やはり一番はIEが重くなるところでしょうか。技術ブログのITかあさんはIEブラウザで閲覧する人がわずかなのですが、一般企業のサイトはIEブラウザを無視することは出来ないので、IEが重くなってしまう点はよく考慮する必要がありそうです。
ロックヒル様のサイトにはHTMLにid、classが存在しない!
このIE9.jsをフル活用しているこのサイトでは従来XHTML1.0系の特徴であるid,classが一切存在しません!
この点は非常に驚きました。私もなんちゃってHTML5マークアップとして先日サイトを作ったばかりですが(レンタルサーバー比較サイト)だいぶ減りはしたものの、idもclassもどちらも存在します。IE9.jsをフル活用したid、classを一切使わないマークアップは今後の参考にさせて頂きたいと思います。
headerタグのCSS
ITかあさんがやると、最後はdisplay:block;に。
ITかあさんはheaderやarticleタグなどをこれまでのdivタグ同様に使いたいという気持ちがあるのでついクセで。
overflow: hidden;という手もありましたね。
最後に全体的なタグの確認
最後にトップページのキャプチャを通して、全体的にどのコンテンツを何のタグを使って囲っているのかを参考にして終わりたいと思います。
画像をクリックすると大きな全体画像が表示されます。

ロックヒル様へお礼
HTML5に準拠した、シンプルなサイトのコードを参考に解説したいと思い、今回神奈川県のコーディング代行を行っておられる株式会社ロックヒル様にご協力をお願いしました。
しばらく返事が無かったので諦めかけていたところ、夜になって快く了承をして頂きました。
HTML5対応が日本のWEB制作事業でも当たり前になりつつある昨今、
W3C準拠型のHTML5マークアップをこのように紹介させて頂き大変参考になりました。
とてもお忙しいなか丁寧なメールを頂き、本当に有難うございました。
シンプルで素敵なサイトを作られているので、ぜひこちらのサイトを閲覧してみてはいかがでしょうか?
今回ご協力頂いた株式会社ロックヒル
PHPの配列で遊んでみる
RSSをもっと見やすく表示したい!
前回の記事でRSSをsimplexml_load_string関数を使ってRSSのXMLを表示してみました。でも、ちょっと見にくいし、分かりずらいので、自由に自分のほしいデータを持ってこれるように 配列構造を変更して、より配列に慣れ親しんでいこうと思います。
配列が分かればPHPが分かります。
ずばり、
です。
RSSを通常の配列の形に
前回の記事の最後の方にちょっとxmlオブジェクトのままだと扱いにくい点に触れましたが、
それならば扱いやすい配列の形に変換すればいいんです。
最初の2つのxmlオブジェクトとして展開するまでは前回と何も変わっていまん。
少し変わったのが、そのまま$xml->channel->item->$i->title;をechoで出力せず、
一度$rss[$i][‘title’]に代入してあげている点です。
連想配列に変換
実際に連想配列にする処理は以下。とってもシンプルですね。
//フィードを取得したいRSSのURLを記述
$contents = file_get_contents('http://www.kaasan.info/feed');
//XMLをオブジェクトに変換
$xml = simplexml_load_string($contents);
//連想配列作成用に、新規で空の配列を用意する
$rss = array();
for ($i = 0; $i <= 9; $i++) {
$rss[$i]['title'] = (string)$xml->channel->item->$i->title;
$rss[$i]['description'] = (string)$xml->channel->item->$i->description;
$rss[$i]['date'] = (string)$xml->channel->item->$i->pubDate;
$rss[$i]['link'] = (string)$xml->channel->item->$i->link;
}
解説
for文のループについては前回の記事を参考にしてもらうとして、大事なのが2つ。
・代入するxmlオブジェクトを(string) string(文字列)指定にする
まず配列とは、タンスのイメージです。
引き出しの中にデータが入ります。
ただの変数では引き出しがありません。
引き出しが無いなら空の配列を代入することで新たに引き出しを作ってあげればいいんですね。
たったコレだけ空の配列が出来、配列として代入することが出来るのです。
新たに配列を作りたいときには有効ですのでぜひ覚えて下さい。

作った配列を出力してみる
作った配列をprint_rして出力してみましょう。
実行例
RSSをそのまま出力したものと比べるとぐっと見やすくなったのが分かりますか?
RSSをそのまま出力

今まではrssの情報をすべて出力していましたが、今回新規で作った配列$rssは必要な部分だけ選んで配列化していますから、
とても見やすいですね。
RSSをHTMLの中に出力
最後の仕上げです。作った$rssをHTMLの中に書いて、きれいにRSSを表示してみましょう!
今回は非常に簡単だったのでループをもう一つ新しいものを覚えておきましょう。
foreach文です。
foreach文
for文は
echo ‘hogehoge’;
}
としたように、$iがいくつから始まり,いくつまで繰り返すかを必ず指定しなければなりませんでしたが、
foreachはfor文と違い、問答無用で配列のある文だけループします。
たったこれだけです。初心者にはfor文が直感的で分かりやすいという意見もありますが、
PHPではforeachの方がやや実行が早いというメリットもありますので
for文の特性を利用した『配列中の何番目から何番目!』という決まりが無く、配列全て出力するのであればforeachを使うのがよいでしょう。
foreach($rss as $val)となっていたら、$valにデータを代入しているようなイメージでいてください。
foreachでの実行例
<dl> <?php foreach($rss as $val):?> <dt> <a href="<?php echo $val['title'];?>"> タイトル:<?php echo $val['title'];?></a> </dt> <dd>ディスクリプション:<?php echo $val['description'];?></dd> <dd>日付:<?php echo $val['date'];?></dd> <?php endforeach;?> </dl>
またはこんな書き方も出来ます。
<dl>
<?php foreach($rss as $val){ ?>
<dt><a href="<?php echo $val['title'];?>">タイトル:<?php echo $val['title'];?></a></dt>
<dd>ディスクリプション:<?php echo $val['description'];?></dd>
<dd>日付:<?php echo $val['date'];?></dd>
<?php } ?>
</dl>
ただ、これでは実際に } 閉じるタグがfor文の閉じタグなのかforeachの閉じタグなのかどちらなのか分からりにくいので個人的には上の方をオススメします。
これは何回目のループなのかを出したいなら
これは何回目のループなのかを出力したいなら、キー名の出力の仕方を覚えるとよいです。
<dl> <?php foreach($rss as $key => $val):?> <dt>第<?php echo $key;?>回目</dt> <dt><a href="<?php echo $val['title'];?>">タイトル:<?php echo $val['title'];?></a></dt> <dd>ディスクリプション:<?php echo $val['description'];?></dd> <dd>日付:<?php echo $val['date'];?></dd> <?php endforeach;?> </dl>
実行例
以上でRSSの出力についてはおしまいです!
jQuery 色々な自分自身の○○を取得する
jQueryで色々な自分自身の取得
現在表示中のURLだったり、自分自身のファイル名など、色んな自分自身のを取得するにはlocationが有効です。
現在表示中のURLを取得
アドレスバーに表示されているURLを取得するなら
alert(location.href);
現在表示中のホスト取得
現在表示しているホストを取得します。
alert(location.host);
現在表示中のハッシュを取得
現在のURL中のハッシュを取得します。
alert(location.hash);
なお、下記のようにするとハッシュによって処理を分けることができる
if(location.hash=="#test"){
$("div.hidden").removeClass("hidden");
}
現在ページURLのパス名を取得
alert(location.pathname);
パラメータを取得
単純にパラメータの?以降を取得するだけなら
alert(location.search);
?を除いて処理するなら
var parameter = location.search; parameter = parameter.substring( 1, parameter.length ); parameter = decodeURIComponent( parameter ); alert( parameter );
現在のプロトコル
alert(location.protocol);
XMLとは?
2012年02月12日に開催したLinuxお勉強しよう会でPHPとXMLを使って遊ぼうというネタを紹介させて頂きました。
そこでのネタの詳しい解説としてまずはXMLとは何か?という根本的なところから初めていきます。
XMLとは?
XMLとは『コンピューターが認識するためのことば』です。
例えばHTMLはあくまでも人間が目で見て『これは何だ』と認識するものですが、コンピューターはHTMLを見ても内容を解析することは出来ません。
そこでXMLを利用するわけです。
XMLが利用されているところ
XMLの代表的な例はRSSがあります。
RSSとはブログなどの更新情報を配信などをしているところです。
RSSが配信されているサイトだと(このITかあさんのブログもRSSが配信されているのですが)このようにURLのアドレスバーにアイコンが表示されます

ブラウザによって表示に誤差があるもののRSSをブラウザによって表示すると以下の画像のような表示になるかと思います。

このRSSをリーダーを使って購読するとこのようになります。

RSSが配信されることのメリット
HTMLそのままだとレイアウトを変更するなりして、自分のサイトの一部分に組み込んだりすることは難しいですが、
RSSを配信することのメリットはGoogleリーダーで読み込んだり、自分のブログなどに設置して2次利用しやすくなります。
日本人はよほどIT企業に勤めていたりでもしなければRSSを購読してブログやサイトの更新情報をチェックする人は少ないかもしれません。しかもたくさんの人に購読されたからと言ってSEOに効果があるわけでもありません。
しかし、RSSはXMLという言語で作られているのでちょっとPHPをかじったレベルの人であればいとも簡単に自分のサイト内に表示させることが出来ます。
RSSというXML言語で作られたものを配信することによって誰かに2次利用してもらえることが期待出来、最終的にはめぐりめぐって自分のサイトのSEOに繋がるかもしれません。
そんなわけでPHPとXMLを使ったおもしろくて実用的なコンテンツの作り方を学びたいと思います。
RSSを自分のサイトに表示させる
PHPを使ってRSSを自分のサイトの好きなところに表示させてみよう
PHPを使ってRSSを自分のサイトやブログの好きなところに表示させてみたいと思います。
RSSはXMLという言語を使って出来ています。XMLについての詳しい解説はこちらを確認して下さい。
RSSをXMLとして表示する
RSSを表示してあげるには、
1.表示したいRSSのURLを指定するfile_get_contents関数
2.XMLとして開く関数を実行するsimplexml_load_string関数
$contents = file_get_contents('http://www.kaasan.info/feed');
$xml = simplexml_load_string($contents);
なんと、たったのこれだけで準備は完了です。
$xmlの中身がどうなっているのか、念のために参照してみます。
一つの変数($なんちゃら)に複数の値が入っているデータを配列をいうのですが、この配列構造になっているデータを参照するのに使う関数がprint_rまたはvar_dumpです。私も日ごろPHPで何かプログラミングをしていて、一番お世話になっている関数です。
$contents = file_get_contents('http://www.kaasan.info/feed');
$xml = simplexml_load_string($contents);
//$xmlの中身を参照。preタグで囲うと見やすくなる。 echo '<pre>'; print_r($xml); echo '</pre>';
$xmlの中身を参照した時の実行結果
もしかしたらこの画面を見たことのある人もいるかもしれません。よくこれだけで『エラーです!どうにかしてください!』といわれるんですが、『あ、これ今デバック中なので・・・・』みたいなやりとりをよくWEBデザイナーの方としていますw
実はこの時点ですでにRSSをHTML内に表示する準備は出来ているんです。
細かい解説は後にして、ひとまず表示だけ先にしたいと思います。
HTML内にRSSを表示してみる
<dl> <?php for($i = 0; $i <= 9; $i++):?> <dt><a href="<?php echo $xml->channel->item->$i->link;?>" target="_blank"><?php echo $xml->channel->item->$i->title;?></a></dt> <dd><?php echo $xml->channel->item->$i->description;?></dd> <dd><?php echo $xml->channel->item->$i->pubDate;?></dd> <?php endfor;?> </dl>
実行結果
RSS表示の仕組みを解説
この画像は$xml->channel->itemの中身です。RSSの中身をprint_rしているURLと合わせて確認して下さい。
print_rで$xmlの中身を参照したとき、RSSをURLで確認して、件数を一つずつ数えると10件ありますが
PHPやJavascriptなどプログラミング言語では配列のカウントは0から数えるという大事な決まりごとがあります。
http://kaasan.biz/print_r.phpの参照

$xml->channel->itemの中身

for文のループの仕組み
$xml->channel->itemの中身は分かっても、それがどういう仕組みでループされているかがピンと来ないかもしれません。私も生まれて初めてPHPでループをした時はピンときませんでした。
$iを出力してみる
そこで$iを出力しながら実行してみましょう。
<dl> <?php for($i = 0; $i <= 9; $i++):?> <dt>第<?php echo $i;?>番目のループ</dt> <dt><a href="<?php echo $xml->channel->item->$i->link;?>" target="_blank"><?php echo $xml->channel->item->$i->title;?></a></dt> <dd><?php echo $xml->channel->item->$i->description;?></dd> <dd><?php echo $xml->channel->item->$i->pubDate;?></dd> <?php endfor;?> </dl>
実行結果
$xmlをprint_rで参照したものと、比べてみる
$xmlをprint_rで参照したものと、RSSの実行2を比べてみましょう。
$iには数字が1ずつ増加していることが2つを比べると理解できると思います。
好きなところだけ表示するには?
応用編として、好きなところだけを表示したいとします。例えば3番目から6番目。
(プログラム上、配列は0番目からカウントするのをお忘れなく)
for内の数字を変更すればいいだけです。
<dl> <?php for($i = 3; $i <= 6; $i++):?> <dt><a href="<?php echo $xml->channel->item->$i->link;?>" target="_blank"><?php echo $xml->channel->item->$i->title;?></a></dt> <dd><?php echo $xml->channel->item->$i->description;?></dd> <dd><?php echo $xml->channel->item->$i->pubDate;?></dd> <?php endfor;?> </dl>
逆順にしてみる
逆順にする方法もあります。配列の順番を入れ替える関数もあるんですが、もっと簡単に。
$i++で1ずつ増えるので$i–で1ずつマイナスにする方法もあるんです。
こうすればさっきと逆順になりますね!
//10番目から1ずつマイナスに <dl> <?php for($i = 9; $i <= 0; $i--):?> <dt><a href="<?php echo $xml->channel->item->$i->link;?>" target="_blank"><?php echo $xml->channel->item->$i->title;?></a></dt> <dd><?php echo $xml->channel->item->$i->description;?></dd> <dd><?php echo $xml->channel->item->$i->pubDate;?></dd> <?php endfor;?> </dl>
最新1件だけ表示するには?
ループしないで最新1件だけがほしい!1件だけならループの必要がない?
最新1件だけのタイトルだけを出力するとして・・・
<?php echo $xml->channel->item->0->title;?>
どうでしょう?エラーですね。$ループされていたとき$inには数字が入っていたのだから、そのまま数字を書けばいいんじゃないの?
と思ってしまいますよね。これはちょっとした落とし穴でして。
->はオブジェクト(クラス)のメソッドやフィールド変数を参照するための演算子
演算子って言われてもイマイチピンときませんが、数字はあくまでも数字であることは分かりますよね。数字は数字。それ以上参照のしようがありませんものね。
オブジェクトでもなんでもないただの数字を展開しようとしたのでここではエラーになってしまったのです。
ちょっと面倒なのですが、この場合直前に$iに0を代入して、変数化してあげれば先ほどと同じ書き方で出力可能です。
<?php $i = 0; echo $xml->channel->item->0->title
; ?>
以上でRSSの基本的な出力方法についてはおしまいです。
Linuxお勉強しよう会 第二回レビュー
昨日は埼玉県朝霞市 中央公民館にてLinuxエンジニアの方と一緒に主催している勉強会をやってきました。
何を隠そうITかあさんは朝霞に住んでまして、フリーの時も朝霞で仕事をしていました。
朝霞生まれの朝霞育ちと言いたいところですが、残念ながら結婚してから引っ越してきました。
(ITかあさんの原産地は埼玉県旧大宮市です。現在はさいたま市になってます。)
お試しで第0回から数えると3回目の開催となりました。初めて参加頂く方、突然参加して下さった方など色々参加頂き、名刺交換もさせて頂いて 交流の場としても有意義な一日となりました。
勉強会をやったところ

東武東上線の朝霞駅南口を徒歩10分くらいの 林道を歩いていったところに今回勉強会を行った朝霞中央公民館があります。

建物の上部がドーム型になっていますが、プラネタリウムの上映会をやっていたりする。まだ一度も行ったことがありませんが・・

室内の写真を撮影するのうっかり忘れていました。
今回はプロジェクターと、スクリーンも一緒にレンタルすることができ、なかなか環境としては素敵なものでした。
入った部屋は一応最大50人まで収容可能で、あとメンバーが40人くらい増えても勉強会は出来そうですw
(それくらい増えるといいな~メンバー。)
勉強会のネタ
勉強会のネタですが、以下の2本立てでお送りしました。
なお、今回の勉強会の内容はLinuxお勉強しよう会のFacebookのグループページにも動画がアップされる予定です。
・PHP×XMLで遊ぼう(ITかあさん担当)
本当はもう1本 お一方にご紹介頂く予定だったのですが、時間が押してしまったためにまた次回ということになりました。
もし可能であればもう少し長い時間会場を押さえることも検討しようかな~と思っています。
XMLのネタは、取得したRSS情報を自分のWordpressに記事として登録したり、RSSが配信されていない、ただのHTMLからスクレイピングという技術を使って、誰でも簡単に欲しいデータを抜き出す方法を紹介させて頂きました。
これらのネタについては後日ITかあさん担当ネタなので細かい解説と、スクリプト付でアップしておきたいと思います。
勉強会の費用
驚くなかれ、これだけ充実した内容(?)と機材とお部屋で何と利用料金はタダでした。
事前にメンバー情報と勉強会の内容を申請しておくと、朝霞市では無料で公民館のスペースを貸してもらえるそうです。
まとめ
今回はいつもより準備期間が短くなっての開催だったので、私のPHPネタが最後はちょっとグダグダになってしまった感がありそこは反省すべき点かな~と。
最後 発表後には拍手まで頂き恐縮です。
発足当時はLinuxの勉強会だったのですが 私が得意としているPHPネタでおもしろいことを発信できればと思い、LinuxネタにこだわらずPHPとXMLで自分のブログにデータを自働で持ってこようというテーマで発表させて頂きました。
Wordpressをすでに勉強されている方や、WEBデザイナーの方も多く参加されていたのでネタ的にはおもしろいものが提供できたのではないかな~と思います。
次回の正式な開催日時はまだ未定ですが今後も定期的に開催していく予定です。
Linuxは敷居が高い、プログラミングなんて~と言う方にもまずは楽しさを知ってもらえる勉強会にしたいと思っています。
メンバーはまだまだ募集しています。
興味のある方はぜひ参加お待ちしておりますっ!
Linuxお勉強しよう会
ロリポップ WordPress移転メモ
簡単インストール付いていると、けっこう失敗する・・・
知り合いに、お名前.comでサーバーで運用していたWordpressを移転してほしい旨頼まれました。簡単インストールのため けっこう失敗してしまったので そのメモ。
まずはサーバーの管理画面より簡単インストールを実行
ロリポの場合、Wordpressの簡単インストール機能がついています。
ロリポプランを利用しているとDBは一つしか使えないので、簡単インストールにより インストールしたほうが設置そのものは失敗しにくいです。また、最新のWordpressが簡単にインストールできるのです。
一度ロリポのphpMyadminにログイン
一度ロリポのphpMyadminに入って、インストールしたwordpressのtableの接頭詞が何になっているかを確認します。
初めてロリポにWordpressをインストしたならwp1_○○ となっているはずです。
旧サーバーよりエクスポートしたSQLを慎重に実行
エクスポートしなければならないのが、
wp_comments…コメント
wp_links…リンク
wp_postmeta…投稿した記事のメタ
wp_posts…投稿した記事
wp_terms…ブログのカテゴリー
wp_term_relationships…よく分からないけカテゴリに関係ありそう
wp_term_taxonomy…カテゴリの詳細情報
簡単インストールをしたときに、移転後のブログのDBテーブルは既につくられているので、インサート部分のみ実行していきます。
Dreamweverの置き換え機能をつかって、
wp_→wp1_
として、移転後のサーバーにインサートが全て出来るようにします。
ユーザー情報は簡単インストール、Wordpress管理画面より
wp_usermeta
wp_users
このあたりのデータの移動については、簡単インストール実行中に聞かれたりします。その他のusermetaやオプション設定についてもWordpressの管理画面からやったほうがたぶん失敗しないです。
テーマとアップロードデータの移動
DB関連の設定が終わったら、最後にtemaフォルダと、uploadデータを移動して終了です。
まとめ
ロリポはDBサーバーは別に分かれているので localhostとかやってもWordpressがてDBに接続できなかったりします。
簡単インストールがあるレンタルサーバーの場合、Wordpressのインストールそのものはレンタルサーバーの機能にまかせて、エクスポートしたデータについては インサート文だけ慎重に実行していくのが一番簡単そうです。
逆にWordpressをそっくりそのままフォルダごと移動させたほうが返って手間になってしまいましたw
Linuxお勉強しよう会 第二回 in朝霞
Linux勉強会in朝霞 ITかあさんも発表しちゃうよ
場所:朝霞中央公民館 第一学習室
http://www.city.asaka.saitama.jp/guide/bunka/commu/03_02.html
駐車場有り 東武東上線朝霞駅南口下車徒歩約10分
大泉学園駅より朝霞行きのバスあり。朝霞市役所前下車 徒歩5分
先月も開催しましたLinuxお勉強しよう会。
今月も朝霞にて開催します!
ITかあさんもがんばって発表します。
Linux勉強会なのに、PHPネタ多めでいきます
前回の勉強会終了後、参加者でトークしたところ 少しプログラミングのネタをやろうということになり、
今回はPHPネタ大目でいきたいと思います。
Linux勉強会in朝霞 今回のお題
気になるお題は下記の通り 3本立てでいきます。
Cronも一緒に使って全自動にしちゃう
Wordpress×APIネタ
ITかあさんはRSS×Wordpressネタを発表します。
PHP初心者の方でも、PHPの楽しさに触れられるような気軽な勉強会にしたいと思います。
ITかあさんと友達になりたい人も大歓迎!
参加希望の方はITかあさんのTwitter宛にメッセージか、下記Facebookのイベントページをご確認下さい。




