さくらのドメインからムームードメインに移管

先日さくらのドメインで取得したドメイン(gLTD)をムームードメインに移管したので
まとめておきます。

まずさくらインターネットにドメイン転出を依頼します。
会員メニューにログインし、「サポート→メールでのお問い合わせ」に行き、
「サービス名称」を「ドメイン取得」、「お問い合わせの種類」を「gLTDドメイン移管(転出)依頼」にして、
現れるフォームに記入します。
1~3日くらいでオースコードとレジストリキーがメールで送られてきます。

次はムームードメインに移り、「移管→レジストラ移管申請」を選択し、フォームを埋めていきます。
数日以内に「トランスファー承認手続きのお願い」がメールで届くので、
それに書かれているアドレスに移動し「承認する」ボタンを押します。

私の場合はここから6日程で移管が完了しました。
移管の際DNS設定もそのまま引き継がれるのでサイトが見られなくなることはありませんでした。
入金さえしっかり済ませれば他に何もする必要なく移管することができました。

[PHP]クラスの基礎 メンバ変数とメンバ関数

大規模なPHPプログラムでは必須になってくる Class なのですが、
今ひとつピンとこないので基礎からおさらいしてみようと思います。

クラスはプロパティ(メンバ変数)とメソッド(メンバ関数)を持ち、
複数の関数をひとつのグループにまとめることができます。

メンバ変数はクラス内のメンバ関数で共有して利用できる変数で、
アクセス権によって3種類に分類されます。

「public」はクラスの中でも外でも利用できます。
具体的には下記のように使います。

<?php
class Test{
    public $foo = 123;
}

$test = new Test();
echo $test->foo;

「private」はそのクラス内でしか利用できません。
上のソースの public を private に変えてみるとエラーが出るのがわかります。
private は次のように用います。

<?php
class Test{
    private $foo = 123;

    function abc(){
        echo $this->foo;
    }
}

$test = new Test();
$test->abc();

「$this」って何?と思われるかもしれませんが、これはオブジェクト自身を指す変数です。
「echo $foo;」のようにはできないので気をつけて下さい。

3つ目は「protected」です。
こちらもクラス内でしか使えませんが、継承した子クラスからはアクセスできる権限です。

<?php
class Test{
  protected $foo = 123;
}

class Example extends Test {
  function abc(){
    echo $this->foo;
  }
}

$example = new Example();
$example->abc();

子クラスは「class 子クラス名 extends 親クラス {}」の形で定義します
子クラスは親クラスのすべてのメソッドを受け継ぐ(継承)ので、子クラスの中でも
親クラスで定義したメソッドを利用できます。

「protected」は子クラスからでもアクセスできるのに対して、
「private」はそのクラス内でしか利用できないので、上のソースを「private」に
書き換えるとエラーが発生します。

[PHP]画像を連結して数値を表示する

アクセスカウンター等でよく見る、数字の描かれた画像を連結して一枚の画像として表示する場合のソースです。

<?php
//カウント
$count = 12345;
//桁
$figure = 8;

//数字画像のサイズ
$width	 = 16;
$height	 = 24;

$count = sprintf("%0{$figure}d", $count);

$length = strlen($count);

$base = ImageCreateTrueColor($width * $length, $height);

for($i=0;$i<$length;$i++){
	$num = substr($count, $i, 1);
	$digit = ImageCreateFromJpeg("img/{$num}.jpg");
	ImageCopy($base, $digit, $i * $width, 0, 0, 0, $width, $height);
	imagedestroy($digit);
}

header("Content-Type: image/jpeg");
imagejpeg($base, NULL, 80);
imagedestroy($base);

counter

今回は「1.jpg」のように数字がファイル名になっている統一サイズの画像を使いました。
先頭をゼロで埋める必要がない場合は sprintf の部分を消して下さい。

画像とソース