2006年12月12日

register_shutdown_function()の件

register_shutdown_function()には、関数名を渡すんだと思っていました。
それが、
register_shutdown_function(array($this, 'func1'));

なんていうのがあって、配列?どういう事??なんて。

callback型を渡すのですね。
call_user_func_array()には「callback型を参照」ってあるのに、register_shutdown_function()には無いんですもん。


posted by ほえ at 11:01| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年12月11日

シングルトンの件

symfonyの0.6.3での使い方がありました。

/**
* Retrieve the singleton instance of this class.
*
* @return sfContext A sfContext implementation instance.
*/
public static function getInstance()
{
if (!isset(self::$instance))
{
$class = __CLASS__;
self::$instance = new $class();
self::$instance->initialize();
}

return self::$instance;
}


という事で、普通に使えばいいみたい!です。

__CLASS__とか、__FILE__とか、自動的に定義される定数は便利そうですね。
posted by ほえ at 19:13| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

php5.1とapache2.0の件

今、php5.1.2とapache2.0.58をwindowsで使っています。
phpでシングルトン・パターンを使おうと思って、調べてみるとjavaではシングルトン・パターンを使う時はマルチスレッドかどうかで気をつけなければいけないとありました。phpでは?と思ったのですが、phpでマルチスレッド??これはapacheの話になるのでは???と、調べていったらドツボにはまりました。
シングルトンの話はまた別の時に。

まず、webで簡単に調べられるかと検索してみると、結構出てきません。.phpのページを検索してきたりメンドクサイです。apacheのマニュアルを調べてみると、なにやらapache2.0からはMPMとやらでマルチプロセス・マルチスレッドな模様。しかしこれはコンパイル時のオプション等で替えられる模様。
apache -l

で、どのようなモジュール構成でコンパイルしたかわかるそうです。

Compiled in modules:
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c

うお。mpm_winntということは、マルチプロセッシングモジュールを使っているという事で、スレッドも使っているという事です。もう少しマニュアルを読むとwindowsではデフォルトでスレッド使うそうです。
プロセスが2つ親子で動いていて、子のプロセスがリクエストを受け付けるとスレッドで処理するような。
で、この設定は変えられないようです。linuxとかだとpreforkというのが使えて、これはスレッドを使わないと。でもwindowsではダメだと。

それでも、世のあちこちでphp5とapache2は使われているではないかと、延々と検索し続けました。

出てくるのはどうやらphpはapache1.3で使うものだというページばかりです。「なんだか使えてます」みたいな記述はありますが、その根拠はありません。
さらにはphpのマニュアルにもこのありさま

XAMPPとかもあるじゃん!あれきっとphp5とapache2だよ!と思ってそこのFAQやforumを探してみるものの、ドイツ語多いし、何も得るもの無しです。

もうダメなのか?と思い、あきらめかけていたところ、phpのメーリングリストで発見!
これ

「windwosバイナリ版に付いてきたドキュメントに書いてあるよ」だって。

読んでみればその通り。当たり前か。
結局
・PHP 4.3.0以降
・Apache 2.0.40以降
なら、大丈夫らしいです。

えらい、遠回りしてしまいました。
付属のドキュメントはよく読みましょう。

#それで、シングルトンの話はどうなったの?追記
posted by ほえ at 18:53| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年12月08日

PEARのDBのprepare()の件

DBのprepare()は、渡されたSQLをチェックしているのかと思いました。
execute()するまでは、何もしないのですね。残念。

識別子 (すなわち テーブル名およびカラム名) も渡すことはできません。なぜなら、それらの名前は準備の段階で 検証されるものだからです。

マニュアルにはあるのですが…。

execute()も、渡された値が数値なのか文字列なのかは見ていないようです。
渡された値が数値に変換できるのであれば、数値であるべき?(プレースホルダ)に挿入されるようですね。


//エラーになりません。
//$sql = $con->prepare("inserta into ldataa(seq, id, chk, namea)valuesnextvalldata_seq'), ?, ?, ?");
//SELECT文でも同様です。
//$sql = $con->prepare("select \?fpae-p from ldataaaa");

$sql = $con->prepare("select * from test_main where id = ?");
if(DB::isError($sql)){
die("cannot prepare!");
}

//普通に値だけ
//$res = $con->execute($sql, 1);

//SQL関数を渡す→これはエラー invalid number
//$res = $con->execute($sql, "abs(-3)");

//SQLを渡す→これはエラー invalid number
//$res = $con->execute($sql, "1 OR id = 2");

//文字列を渡す→これはOK!
//$res = $con->execute($sql, "1");

//文字列を渡す→これもOK!
//$res = $con->execute($sql, "1 * 1");
if(DB::isError($res)){
die("cannot execute! ".$res->getMessage());
}

こんな感じです。
posted by ほえ at 10:31| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年11月27日

array_multisort()でソートする件

PHPにarray_multisort()という便利そうな関数があったので使ってみました。

多次元配列のソートをしてくれるというので、SQLのORDER BY見たいに使えるというので、そんな感じだと思っていました。
$a = array(
'id' => array(3, 2, 4, 1),
'name' => array('c', 'a', 'b', 'a'),
'age' => array(20, 15, 3, 8)
);
だったら、
array_mutlisort($a['id'], $a['name']);

とすれば、

1, 2, 3, 4
a, a, c, b
8, 15, 20, 3
とソートしてくれると思っていました。
しかし、実際は

1, 2, 3, 4
a, a, c, b
20, 15, 3, 8
ageはソートしてくれて無いじゃん!!

という事なのです。ソートしたいなら全部指定しないといけないのです。
array_mutlisort($a['id'], $a['name'], $a['age']);


この関数のマニュアル読んだだけじゃわからないです。
posted by ほえ at 16:30| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年10月31日

HTML_AJAXを使ってみる件 インストール

HTML_AJAXを使ってみようと思い、インストールしてみました。

マニュアルのGetting Startedによると、
pear install HTML_AJAX-alpha
となっていますが、この8月にbetaになったようです。
なので、
pear install HTML_AJAX-beta
で、
downloading HTML_AJAX-0.5.0.tgz ...
Starting to download HTML_AJAX-0.5.0.tgz (133,921 bytes)
.............................done: 133,921 bytes
requires package `PEAR' >= 1.3.5
HTML_AJAX: Dependencies failed
PEARのバージョンが古いって起こられました。
ちなみにalphaだとHTML_AJAX-0.4.1.tgzになるようです。

PEARのバージョンアップはhttp://go-pear.orgに行って、そのページを保存するとphpのスクリプトになるそうです。面白いですね。
linyxがインストールされていれば、同じことがコマンドラインからも出来ます。今回はコマンドラインで。
lynx -source http://pear.php.net/go-pear | php -q

むむむ。proxyを通さなければいけないので、bashなので
export http_proxy=http://xxx.xxx.xxx.xxx:xxxx

とします。
export http_proxy=xxx.xxx.xxx.xxx:xxxx
だと、ダメでした。

もう一度…
lynx -source http://pear.php.net/go-pear | php -q

色々ダーっとでてきて、色々聞かれますが基本的にデフォルトでよいのではないかと。今回は事情があってMDB2はインストールしないとか、ありましたけど。

PEARのバージョンもあがったし、HTML_AJAXのインストールを。

pear install HTML_AJAX-beta
で、

downloading HTML_AJAX-0.5.0.tgz ...
Starting to download HTML_AJAX-0.5.0.tgz (133,921 bytes)
.............................done: 133,921 bytes
install ok: channel://pear.php.net/HTML_AJAX-0.5.0


こんな感じです。

posted by ほえ at 15:58| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年10月27日

可変変数は便利な件

PHPには可変変数というものがありますね。
それを使うと、変数の初期化とかがスッキリかけたりします。


<?
$pre = "form";

for($i = 1; $i <= 9; $i++){
$form_name = $pre.$i;
$$form_name = $i;
}

echo "form_name1=".$form1."\n";
echo "form_name2=".$form2."\n";
echo "form_name3=".$form3."\n";
echo "form_name4=".$form4."\n";
echo "form_name5=".$form5."\n";
echo "form_name6=".$form6."\n";
echo "form_name7=".$form7."\n";
echo "form_name8=".$form8."\n";
echo "form_name9=".$form9."\n";

?>

なんていう感じで。

この例だとよくわからないかもしれませんね。
よくフォームでinputなんかで同じ名前で最後の番号だけ違うというのを使いますが、そんなのが大量にあったりするときにいいんじゃないかなと思います。

あとでもうちょっと書いておこうと思います。


posted by ほえ at 18:34| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年10月25日

PHP4の設定についてメモする件

php.iniを更新したら、
/etc/init.d/apache reload

する事。

php.iniの
display_errors = On
log_errors = On
error_log = /var/log/php.log
にすると、画面にもログにもエラーが残るのでよいのではないでしょうか。

posted by ほえ at 11:24| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年10月12日

PHPUnit2を使ってみる件 その3 setUp()を使ってみる

前のテストFirstTestでは、テストが1つしかありませんでした。2つにして見ます。

<?php
require_once 'PHPUnit2/Framework/TestCase.php';

class SecondtTest extends PHPUnit2_Framework_TestCase {
public function testSecondTest1() {
$a = 1;

// $aは本当に1なのか?
$this->assertEquals(1, $a);
}

public function testSecondTest2() {
$a = 1;
$a++;

// ++は本当に$aに1を足して、2にしているのか?
$this->assertEquals(2, $a);
}
}
?>


さてここで、setUp()というものを使うと、$a = 1;を何回も書かなくて良くなります。

<?php
require_once 'PHPUnit2/Framework/TestCase.php';

class SecondTest extends PHPUnit2_Framework_TestCase {
protected $a;

protected function setUp() {
$this->a = 1;
}
public function testSecondTest1() {
// $aは本当に1なのか?
$this->assertEquals(1, $this->a);
}

public function testSecondTest2() {
$this->a++;

// ++は本当に$aに1を足して、2にしているのか?
$this->assertEquals(2, $this->a);
}
}
?>

とするわけです。なぜprotectedなのかは、きっと後で出てくる事でしょう。
実際テストでは、テストのための準備が大変になる事が多いので、それぞれのメソッドで同じ準備を何度もしなくてもよくなるという訳です。

さてここで、失敗の場合も見てみたいので、testSedondTest1とtestSedondTest2の記述場所を入れ替えてみましょう。

<?php
require_once 'PHPUnit2/Framework/TestCase.php';

class SecondTest extends PHPUnit2_Framework_TestCase {
protected $a;

protected function setUp() {
$this->a = 1;
}

public function testSecondTest2() {
$this->a++;

// ++は本当に$aに1を足して、2にしているのか?
$this->assertEquals(2, $this->a);
}

public function testSecondTest1() {
// $aは本当に1なのか?
$this->assertEquals(1, $this->a);
}
}
?>

エラーになりませんでした。
これは各メソッドが呼び出されるたびにsetUp()が実行されるからだそうです。
setUp()内に、print文なんかを入れると、テストのメソッド数分print文が実行されるのがわかりました。


PHPUnit 2.3.6 by Sebastian Bergmann.

setUp!!.setUp!!.

Time: 0.005949

OK (2 tests)


…1つ気が付いたのですが、PHPのデフォルトをUTF8にしていると、コマンドプロンプトで文字化けしてしまうのですね。UTF8に出来ないのかしら…?
posted by ほえ at 19:46| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

PHPUnit2を使ってみる件 その3 テストの実行オプション


phpunit UnitTest

UnitTest.phpというファイルのUnitTestクラスで定義されているテストを実行します。

phpunit UnitTest UnitTest.php

UnitTest.phpファイルの中のUnitTestクラスで定義されているテストを実行します。


えー、他にも色々あります。今の所はこれくらいで勘弁しておいてあげましょう。
posted by ほえ at 19:20| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

PHPUnit2を使ってみる件 その2 簡単なテストを実行してみる

インストールが出来たので、簡単なテストを実行してみました。

<?php
require_once 'PHPUnit2/Framework/TestCase.php';

class FirstTest extends PHPUnit2_Framework_TestCase {
public function testFirstTest() {
$a = 1;

// $aは本当に1なのか?
$this->assertEquals(1, $a);
}
}
?>

これをFirstTest.phpとして保存しました。コマンドプロンプトで、
phpunit FirstTest
とすると、テストが実行され、こんな表示が。

PHPUnit 2.3.6 by Sebastian Bergmann.

.

Time: 0.002703

OK (1 test)

なにやら、すごく満足げに見えます。
テストが失敗する場合もテストしてみましょう。

// $aは本当に1なのか?
$this->assertEquals(1, $a);

ここを

// $aは本当は1024なのか?
$this->assertEquals(1024, $a);

と修正しましょう。コメントも直すのを忘れずに。別にテストの結果には関係ありませんが…。
テストを実行すると、

PHPUnit 2.3.6 by Sebastian Bergmann.

F

Time: 0.003846
There was 1 failure:
1) testFirstTest(FirstTest)
expected same: <1024> was not: <1>
C:\test\uo\FirstTest.php:9

FAILURES!!!
Tests run: 1, Failures: 1, Errors: 0, Incomplete Tests: 0.

先程とは打って変わって、えらい剣幕で怒られている気がします。びっくりマークが三つも付いてますから、そうとう機嫌が悪くなっているようです。

成功、失敗、両方試す事が出来ました。

posted by ほえ at 18:04| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

PHPUnit2を使ってみる件 その1 インストール

PHPUnit2を試してみました。
コマンドプロンプトでc:\phpディレクトリにcdして、
pear search phpunit

と検索してみると

Retrieving data...0%....50%....MATCHED PACKAGES, CHANNEL PEAR.PHP.NET:
=======================================
PACKAGE STABLE/(LATEST) LOCAL
PHPUnit 1.3.2/(1.3.2 stable) Regression testing framework for unit tests.
PHPUnit2 2.3.6/(3.0.0alpha11 alpha) Regression testing framework for unit tests.
なんて表示されました。
そこで
pear install PHPUnit2
なんてやってみると、

Did not download dependencies: pear/Benchmark, pear/Log, use --alldeps or --only reqdeps to download automatically
pear/PHPUnit2 can optionally use PHP extension "xdebug"
pear/PHPUnit2 requires package "pear/Benchmark"
pear/PHPUnit2 can optionally use package "pear/Log"
No valid packages found
install failed
なんていわれてインストールできませんでした。
--alldepsと--only reqdepsは何が違うのかと思い、
pear help install
なんてやると、
-a, --alldeps は、optionalもインストールしてくれて、
-o, --onlyreqdeps は、requiredだけで、optionalはインストールしないという事がわかりました。
そういう事ならばと、
pear install -a PHPUnit2
とすると、ダーッと

pear/PHPUnit2 can optionally use PHP extension "xdebug"
pear/Log can optionally use PHP extension "sqlite"
downloading PHPUnit2-2.3.6.tgz ...
Starting to download PHPUnit2-2.3.6.tgz (43,280 bytes)
............done: 43,280 bytes
downloading Benchmark-1.2.6.tgz ...
Starting to download Benchmark-1.2.6.tgz (7,915 bytes)
...done: 7,915 bytes
downloading Log-1.9.9.tgz ...
Starting to download Log-1.9.9.tgz (39,028 bytes)
...done: 39,028 bytes
downloading MDB2-2.2.2.tgz ...
Starting to download MDB2-2.2.2.tgz (99,785 bytes)
...done: 99,785 bytes
install ok: channel://pear.php.net/MDB2-2.2.2
install ok: channel://pear.php.net/Log-1.9.9
install ok: channel://pear.php.net/Benchmark-1.2.6
install ok: channel://pear.php.net/PHPUnit2-2.3.6
出てきて、インストールできました。


posted by ほえ at 17:39| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年09月22日

file関数とtrim関数

PHPのfile関数は、テキストファイルを行毎に配列に入れてくれるので便利ですが、改行は付いたままなので注意しましょう。

さらに、trim関数ではスペースだけではなく
" " (ASCII 32 (0x20)), 通常の空白。
"\t" (ASCII 9 (0x09)), タブ。
"\n" (ASCII 10 (0x0A)), リターン。
"\r" (ASCII 13 (0x0D)), 改行。
"\0" (ASCII 0 (0x00)), NULバイト
"\x0B" (ASCII 11 (0x0B)), 垂直タブ
もとるので気をつけましょうVBのtrim()とは違います。
posted by ほえ at 18:28| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年01月17日

RFC 822 フォーマットされた日付

Thu, 21 Dec 2000 16:01:07 +0200
というのがRFC822フォーマットされた日付だそうで、PHPでは
date("r", time());
と"r"を指定すると得られるそうで。
今の時間はっと
Tue, 17 Jan 2006 14:09:03 +0900
でした。
posted by ほえ at 14:01| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年01月16日

PHPのsetcookie()でワーニングが表示される件

setcookie("test", "1");

とやると、
Warning: Cannot modify header information - headers already sent by (output started at /var/www/xxx.php:6) in /var/www/test_setcookie.php on line 4

なんて言われちゃったりしました。既にページの情報を送信してしまっているから、HTTPヘッダを書き換える処理はできないよって事のようです。
test_setcookie.phpはこんな感じ。
<?php
include_once('xxx.php');
setcookie("test", "1");
echo $aaa."はどうですか?";
?>

xxx.phpはこんな感じ。
<?php
$aaa="調子";
?>



別に変な事してないのにな。と思いつつ良く見ると、xxx.phpの最後に改行が、、、。
?>[改行]
[改行]
[EOF]

だとダメなのです。エラーメッセージの何行目かという情報をみればわかりますね。
?>[改行]
[EOF]

だと大丈夫です。
もちろん
?>[EOF]

でも大丈夫です。
posted by ほえ at 19:45| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

PHPで日付の処理

PHPで日付の処理をする時の事。
MySQLのTimeStamp型のフィールドから取得した日付をそのまま出力すると、2006-01-16 00:00:00となりますが、他の書式にしたい時もあるわけです。

MySQLから取得した日付の文字列をPHPで書式指定したい時
date("Y/m/d H:i:s", strtotime(string))
なんてします。->2006/01/16 00:00:00
strtotime()の入力の文字列は
1972-09-24 # ISO 8601.
72-9-24 # Assume 19xx for 69 through 99,
# 20xx for 00 through 68.
72-09-24 # Leading zeros are ignored.
9/24/72 # Common U.S. writing.
24 September 1972
24 Sept 72 # September has a special abbreviation.
24 Sep 72 # Three-letter abbreviations always allowed.
Sep 24, 1972
24-sep-72
24sep72
などが使えます。Date input formats

この戻り値をdate()で書式指定してます。


MySQLから取得する時にSQLで書式指定したい時
DATE_FORMAT(date, format)

でフォーマットします。
SELECT DATE_FORMAT(postdate, "%Y/%m/%d %H:%i:%S) FROM TESTTABLE

->2006/01/16 00:00:00

という感じで。
posted by ほえ at 13:07| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2005年12月31日

PHPのsession_start()がエラーになっちゃうんですけど

<?php
session_start();
?>

だけなんですが、エラーになっちゃいました。
Fatal error: Call to undefined function session_start() in ...

エラーメッセージは「そんな関数知らん」っていう事なんですが、なんでだろう?
なんだかセッション情報を保存するディレクトリの設定/etc/php5.0/apache2/php.iniのsession.save_pathが間違っているのでは?とか見当違いの事を調べたりしてたのですが。。。
これはsessionのモジュールが入っていないからでした。それは知らんって言われてしまいますね。

# apt-get install php5.0-session
パッケージリストを読みこんでいます... 完了
依存関係ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
php5.0-session
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
34.9kB のアーカイブを取得する必要があります。
展開後に追加で 172kB のディスク容量が消費されます。
取得:1 http://people.debian.org php5.0/sarge php5.0-session 5.0.5-0.8~sarge1 [34.9kB]
34.9kB を 1s で取得しました (24.4kB/s)
未選択パッケージ php5.0-session を選択しています。
(データベースを読み込んでいます... 現在 105172 個のファイルとディレクトリがイン ストールされています。)
(.../php5.0-session_5.0.5-0.8~sarge1_i386.deb から) php5.0-session を展開してい ます...
php5.0-session (5.0.5-0.8~sarge1) を設定しています ...
Configuration file /etc/php5.0/apache2/conf.d/200session.ini enabled.

#

ということで、無事にsession_start()が使えました。
そういう事です。
posted by ほえ at 01:44| Comment(0) | TrackBack(2) | PHP | このブログの読者になる | 更新情報をチェックする

2005年10月03日

PHPで画像処理

今度はPHPで画像処理をしてみます。
GDというものを使います。
<?php
phpinfo();
?>
というページを作ってブラウザで表示させてみると
Configure Command
という欄のconfigureのオプションに
'--without-gd'
とあるのでこのバイナリパッケージだと使えないんだ、と勝手に思っていました。
今日、ふと
yum list | grep gd
とやってみると、いました。
php-gd.i386
それならば、それ!
yum install php-gd
でComplete!と表示されたわけですから。
rpm -ql php-gd
なんてやってみると
# rpm -ql php-gd
/etc/php.d/gd.ini
/usr/lib/php/modules/gd.so
おや、ファイルが2つだけですか。
php.iniに何か書くのかしら?と思ってみてみると、
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
に、
;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;
なんて書いてあるから、ははーん、gd.iniがインストールされてるからこれでいいのだな、と納得。
早速試してみる。test.phpを作成。
<?php
Header("Content-Type: image/jpeg");

$image = ImageCreateFromJpeg("test.jpg");
ImageJpeg($image);
ImageDestroy($image);
?>
ブラウザには「画像ファイルhttp://localhost/test.php壊れいているため表示できませんでした。」
とのそっけないメッセージが。しかも変な日本語だし。。。
/etc/init.d/httpd restart
で、再起動。
今度は無事に表示されました。
posted by ほえ at 12:15| Comment(2) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2005年09月21日

PHPを動かしてみよう

さて、また話は飛ぶのですが、今度はPHPをいじってみます。
とりあえずなにやらやって動きました。
しかしながら、mb_regex_encoding("SJIS");が、
「Call to undefined function mb_regex_encoding()」とエラーになってしまう。
どうやらmb_stringのパッケージが入っていないかららしいという事が、延々と調べ続けてやっとわかる。
どうやっていれるものか、どこにあるものかと思い悩むも、どうもyumを使うらしいということも延々と調べ続けてやっとわかる。
up2dateと同じもののようですが、最近はこっちなの?
とりあえず一覧を表示してみる。
yum list
なにやら動作して、ずいぶん待たされたらずらっとなにやらが表示されました。
では、
yum install php-mbstring
で、インストールする?って聞かれたのでyes
なんだかNOKEYとか言ってますが、とりあえずyes
Complete!
って出てきて終了。
さて、
おお、動いた。
以上。
posted by ほえ at 17:31| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。