2016年12月18日日曜日

phpで指定したURLのファイルの最終更新日時を取得する方法

サンプルコードは以下の通りです。

ソフトバンクのバナー画像(http://m.online-shop.mb.softbank.jp/mobile/set/common/p/img/int_inc/special/logo-white.png)の最終更新日時を取得するサンプルです。

// ソケット接続開始(引数にはurlとポートを指定)
$fp = @fsockopen("http://m.online-shop.mb.softbank.jp", 80);

if (!$fp) {
    return false;
}

$request = 'GET ' . "mobile/set/common/p/img/int_inc/special/logo-white.png" . " HTTP/1.1\r\n";

// もしベーシック認証が存在する場合は、以下のように指定する
//  $request .= 'Authorization: Basic ' . base64_encode($user . ':' . $pass) . "\r\n";

fwrite($fp, $request);
fwrite($fp, 'Host: http://m.online-shop.mb.softbank.jp\r\n');
fwrite($fp, "Connection: Close\r\n");
fwrite($fp, "\r\n");

while (!feof($fp)) {
    $buf = fgets($fp, 4096);
    if (preg_match('/^([^:]+):(.+)$/', $buf, $matches)) {
        $name  = $matches[1];
        $value = trim($matches[2]);
        if ($name == 'Last-Modified') {
            // 最終更新日時を取得する
            $lastModified = $value;
            break;
        }
    }
}
fclose($fp);

2016年12月14日水曜日

phpのcurlでリモートの情報を取得しようとしたら、「Peer certificate cannot be authenticated with known CA certificates」になりました。

Peer certificate cannot be authenticated with known CA certificates
の解消方法、
エラーとなったのは、HTTPS証明書を信頼するように設定されているからです。

テスト環境なので、そのを無視するように設定すれば解消できます。

以下の一行を追加


//下記一行を追加
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);

apacheサーバ、すべてのリクエストをindex.phpに処理させる設定

テストサーバを作っています。
とりあいず、すべての処理を一旦index.phpに集約したいです。
その設定方法を調べてみました。
以下の設定を入れれば(<VirtualHostxx<の中に
)、目的を達成できました。
忘れないため、メモです。

RewriteEngine on
RewriteRule ^.+$ /index.php [L]

2016年12月10日土曜日

mongoDBによく使うコマンド一覧

mongoDBによく使うコマンド一覧

項目コマンド説明
接続mongo localhost:20000/shop -u owner -p
show DBshow databases
show コレクションshow collections
DB選択use DB名
index確認db.コレクション名.getIndexes()
find全件db.コレクション名.find()
検索db.コレクション名.find({"検索フィールド":検索値})JSON形式
limitdb.コレクション名.find().limit(1)
offsetdb.コレクション名.find().skip(1)
sortdb.コレクション名.find().sort({"hoge":1})昇順
sortdb.コレクション名.find().sort({"hoge":-1})降順
countdb.コレクション名.find().count()
キーがあるもののみdb.コレクション名.find({"key":{$exists:true}})
結果の整形db.コレクション名.find().pretty()
階層検索db.コレクション名.find({"key.nested.value":"hoge"})データは下記のような時
{"key":
{"nested":
{"value":"hoge"}
}
}
更新db.コレクション名.update({クエリ}, {$set:{更新内容}})
切断exit
collection作成db.createCollection("コレクション名")
DB削除use DB名
db.dropDatabase()
消したいDBを選択してから
コレクション削除db.コレクション名.drop
インデックス確認db.コレクション名.getIndexes();
インデックス作成db.コレクション名.ensureIndex({"フィールド名":1})

PHP 配列Aから配列Bに存在する要素を取り除く方法

もちろんロープ処理で一つを見ていく方法がありますが
一番簡単なのはPHPの関数array_diffを使うことです。

例:
<?php
$array_a 
= array("111""222""3444""5555");$array_b = array("222""5555");$result array_diff($array_a$array_b);
print_r($result);?>
出力は次の通りです。
Array
(
    [1] => "111",
    [2] => "3444"
)

2016年12月7日水曜日

Google sheetの行を固定される方法

google sheetでデータをソートしたら、ヘッダー行も一緒にソートされてしまいました。

ヘッダー行をソートされないようにするには、まずヘッダー行を固定しなければなりません。

行を固定される方法は、

まず固定させた行を選択して、そしてメニューの「表示」をクリック、「固定」の「現在の行(1)まで」を選択します。
以下の図のようにすれば、一行目は固定されることができます。
 
 



証明書インストールできない問題

IEで証明書エラーになりました。

インストールしようとしたら、インストールボタンが表示されてない
以下の図のように、「証明書をインストール」を表示されるべきのボタンが出ない

色々修正変更をしたり、調べたりしても問題はわからなかった。、

最後ふっと思いづいたのは管理者権限でIEを立ちなおしたら、無事に問題を解消できました。