2009年08月14日

キャッシュ難しい(メモ)


session_start();
header('Cache-Control: must-revalidate');
header('Expires: Fri, 01 Jan 1999 00:00:00 GMT');
header('Pragma: ');

とかすると、

レスポンスヘッダ
Date Fri, 14 Aug 2009 02:10:33 GMT
Server Apache/2.0.58 (Win32) DAV/2 mod_python/3.3.1 Python/2.5.1 PHP/5.2.9-2 SVN/1.4.5
X-Powered-By PHP/5.2.9-2
Expires Fri, 01 Jan 1999 00:00:00 GMT
Cache-Control must-revalidate
Keep-Alive timeout=15, max=100
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html; charset=UTF-8
Content-Language ja

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

2009年08月03日

「Sambaの共有ディレクトリにTortoiseSVNでチェックアウトできない!」の続き

Sambaの共有ディレクトリにTortoiseSVNでチェックアウトできない!
http://hoehoelinux.seesaa.net/article/117445497.html

どうやらこれは、Windows側からのマウントポイント?を変えるとうまくいくみたい。
\\smbserver\username\public_html
をエクスプローラで直接開いていたんだけど、これをY:ドライブとかにマウントすると問題なくチェックアウトとか更新とかできるみたい。

ここら辺をみてみて試したらうまくいった。
http://www.samba.gr.jp/ml/article/samba-jp/msg09383.html

ウィンドウズの共有はいろいろ難しいなぁ。わからないところが沢山ある…。

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

2009年07月24日

@をつけるのはの件の続き



$a = @$b;

みたいに@をつける理由がようやっとわかりました。$bが定義されていない時エラーにならないようになんですね!って思ったんだけど違う??

エラーじゃなくてワーニングでした。
そして、php.iniでerror_reportingがE_ALL & ~E_NOTICEだとワーニングが表示されません。
php.iniで

error_reporting=E_ALLに

変更するか、コード中で

error_reporting(E_ALL);

で変更すると、

PHP Notice: Undefined variable: b in Command line code on line 1

Notice: Undefined variable: b in Command line code on line 1

といわれます。
posted by ほえ at 10:40| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年07月17日

divからはみ出さないで!の件をもう一度。

divからはみ出さないで!の件をもう一度。
こういう事でした。


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
#outer {
border: 1px solid red;
padding: 10px;
width: 400px;
overflow: hidden;
}
#inner1 {
margin: 5px;
border: 1px solid blue;
height: 200px;
width: 100px;
float: left;
}
#inner2 {
margin: 5px;
border: 1px solid green;
height: 100px;
width: 100px;
float: left;
}
</style>
</head>
<body>

<div id="outer">
<div id="inner1"></div>
<div id="inner2"></div>
</div>

</body>
</html>

これで、 #outer の overflow: hidden; が無いと、赤い枠が延びてくれないのでした。
overflow: visible; の場合は、正しくは「領域をはみ出して表示」だそうなのですが、IE6は「領域を広げて表示」してしまっているのでした。なのでFirefoxの方が正しい表示をしていたわけです。


overflow: hidden;
boxok.gif


overflow: visible;
boxng.gif
posted by ほえ at 11:36| Comment(0) | TrackBack(0) | XHTML+CSS | このブログの読者になる | 更新情報をチェックする

2009年07月13日

配列のキーに.(ピリオド)を入れてみた件


<?php
$a = array(aaa.bbb => 100);
print_r($a);

てしたら、

Array
(
[aaabbb] => 100
)

こんなになっちゃった。
なんで?

まぁ、こうなんですけど。

<?php
$a = array('aaa.bbb' => 100);
print_r($a);

=>

Array
(
[aaa.bbb] => 100
)

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

2009年07月12日

コピーしてペーストができます!

iPhoneでコピーとペーストができますって、アホか!バカじゃないのか?
CMで偉そうに言うな。なんかの冗談か!?
コピーしてペーストだって。バカか?
posted by ほえ at 23:07| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年06月05日

ブラウザの戻るボタンで

戻るのだ。
posted by ほえ at 10:35| Comment(0) | TrackBack(0) | XHTML+CSS | このブログの読者になる | 更新情報をチェックする

FedoraCore6のyumアップデートができない!

URLが変わったの?どこにいったのー?
だいぶほったらかしだったからなぁ。
posted by ほえ at 10:34| Comment(0) | TrackBack(0) | Fedora Core | このブログの読者になる | 更新情報をチェックする

2009年06月04日

なんか最近セキュリティって言わなくなってよね

一時期はなんでもセキュリティ、セキュリティって言っていたのに。
最近は脆弱性の方が言われるよね。
posted by ほえ at 14:50| Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年05月21日

SimpleTestその1

SimpleTestをする事にしました。

http://downloads.sourceforge.net/simpletest/simpletest_1.0.1.tar.gz
ダウンロードして、php.iniのinclude_pathの通っているところに置いた。
c:/php/includeがinclude_pathにあったので、

c:/php/include/simpletest/autorun.php

になるように。


まずはこれから。
http://www.simpletest.org/en/start-testing.html

ディレクトリはこんな

[htdocs]/test/simpletest/classes
/test

http://localhost/test/simpletest/test/log_test.php
でブラウザからアクセスできるように。urlがtestだらけだけど。

ログクラス(classes/log.php)のテストをする。
test/log_test.php

<?php
require_once('simpletest/autorun.php');
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'../classes/log.php');

class TestOfLogging extends UnitTestCase {
}
?>

require_once('../classes/log.php');
だと後でエラーになっちゃったので、このように。


テストケースはSipleTestCaseクラスを継承する。

テストケースを実行すると、"test"で始まるメソッドを探して実行する。

テストの内容を追加する。
test/log_test.php

<?php
require_once('simpletest/autorun.php');
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'../classes/log.php');

class TestOfLogging extends UnitTestCase {
function testLogCreatesNewFileOnFirstMessage() {
@unlink('c:/tmp/test.log');
$log = new Log('c:/tmp/test.log');
$this->assertFalse(file_exists('c:/tmp/test.log'));
$log->message('Should write this to a file');
$this->assertTrue(file_exists('c:/tmp/test.log'));
}
}
?>


ブラウザでアクセスして赤は失敗、緑は成功。

Fatal error: Failed opening required '../classes/log.php' (include_path='') in /home/marcus/projects/lastcraft/tutorial_tests/Log/tests/log_test.php on line 7
だったら、classes/log.phpが存在しない。

classes/Log.phpを作成する。

<?php
class Log {
function Log($file_path) {
}

function message() {
}
}
?>

ブラウザでアクセスする。赤で失敗。

Logクラスのmessage()メソッドを記述する。
classes/Log.php

<?php
class Log {
function Log($file_path) {
}

function message($message) {
$fp = fopen('c:/tmp/test.log', 'w');
if ($fp === false) {
echo '開きません!';
exit;
}

if (fwrite($fp, $message) === false) {
echo '書き込めません!';
exit;
}
fclose($fp);
}
}

ブラウザでアクセスする。緑になって成功。

次は、テストスイーツを作成してみる。
test/all_tests.php

<?php
require_once('simpletest/autorun.php');

class AllTests extends TestSuite {
function AllTests() {
$this->TestSuite('All tests');
$this->addFile(dirname(__FILE__).DIRECTORY_SEPARATOR.'log_test.php');
}
}

$this->addFile('log_test.php');だと見つからない!ってエラーになっちゃうのでこのように

ブラウザでアクセスする。緑になって成功。

次はモックオブジェクトを使ってみる。

SessionPoolクラスがこんな時、
classes/session_pool.php

<?php
class SessionPool {
function __construct(&$log)
{
$this->_log = $log;
}

function logIn($username)
{
$this->_log->message("User $username logged in.");
}
}

コンストラクタのパラメータで渡されたオブジェクト$logを使っているわけです。

テストはこちら。
session_pool_test.php

<?php
require_once('simpletest/autorun.php');
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'../classes/log.php');
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'../classes/session_pool.php');

Mock::generate('Log');

class TestOfSessionLogging extends UnitTestCase {

function testLoggingInIsLogged() {
$log = new MockLog();
//「$log->message('User fred logged in.')が1回呼ばる事を期待する」という機能を仕込む
$log->expectOnce('message', array('User fred logged in.'));
$session_pool = new SessionPool($log);
$session_pool->logIn('fred');
//$session_poolのlogInメソッドで、$log->message('User fred logged in.')を呼んでいるはず!
//もし呼んでいなければエラー!!
}
}


Mock::generate('Log');で、MockLogクラスが使えるようになるのです。
最初、モックオブジェクト使うからLogクラスいらないじゃんって、classes/log.phpをrequireしてなくて、「MockLogクラスなんて知らない!」というエラーが出てはまった。
そういうことかぁ。

ブラウザでテストしましたが、コマンドプロンプトでもテストできます。

C:\Program Files\Apache Group\Apache2\htdocs\test\simpletest\test>php session_pool_test.php
session_pool_test.php
OK
Test cases run: 1/1, Passes: 2, Failures: 0, Exceptions: 0

C:\Program Files\Apache Group\Apache2\htdocs\test\simpletest\test>

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

広告


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

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

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


×

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