サンプルコードは以下の通りです。
ソフトバンクのバナー画像(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月18日日曜日
2016年12月14日水曜日
phpのcurlでリモートの情報を取得しようとしたら、「Peer certificate cannot be authenticated with known CA certificates」になりました。
Peer certificate cannot be authenticated with known CA certificates
の解消方法、
エラーとなったのは、HTTPS証明書を信頼するように設定されているからです。
テスト環境なので、そのを無視するように設定すれば解消できます。
以下の一行を追加
の解消方法、
エラーとなったのは、HTTPS証明書を信頼するように設定されているからです。
テスト環境なので、そのを無視するように設定すれば解消できます。
以下の一行を追加
//下記一行を追加 curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);
apacheサーバ、すべてのリクエストをindex.phpに処理させる設定
テストサーバを作っています。
とりあいず、すべての処理を一旦index.phpに集約したいです。
その設定方法を調べてみました。
以下の設定を入れれば(<VirtualHostxx<の中に
)、目的を達成できました。
忘れないため、メモです。
とりあいず、すべての処理を一旦index.phpに集約したいです。
その設定方法を調べてみました。
以下の設定を入れれば(<VirtualHostxx<の中に
)、目的を達成できました。
忘れないため、メモです。
RewriteEngine on
RewriteRule ^.+$ /index.php [L]
2016年12月10日土曜日
mongoDBによく使うコマンド一覧
mongoDBによく使うコマンド一覧
項目 | コマンド | 説明 |
接続 | mongo localhost:20000/shop -u owner -p | |
show DB | show databases | |
show コレクション | show collections | |
DB選択 | use DB名 | |
index確認 | db.コレクション名.getIndexes() | |
find全件 | db.コレクション名.find() | |
検索 | db.コレクション名.find({"検索フィールド":検索値}) | JSON形式 |
limit | db.コレクション名.find().limit(1) | |
offset | db.コレクション名.find().skip(1) | |
sort | db.コレクション名.find().sort({"hoge":1}) | 昇順 |
sort | db.コレクション名.find().sort({"hoge":-1}) | 降順 |
count | db.コレクション名.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_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を立ちなおしたら、無事に問題を解消できました。
インストールしようとしたら、インストールボタンが表示されてない
以下の図のように、「証明書をインストール」を表示されるべきのボタンが出ない
色々修正変更をしたり、調べたりしても問題はわからなかった。、
最後ふっと思いづいたのは管理者権限でIEを立ちなおしたら、無事に問題を解消できました。
2016年11月18日金曜日
コマンドでmemcachedの操作
コマンドでmemcachedに保存している情報を確認したい時に使うコマンドを纏めてみました。
1、まずmemcachedのサービス確認する
$ service memcached status
memcached-11211 (pid 2042) を実行中...
memcached-11511 (pid 2049) を実行中...
memcached-11911 (pid 2057) を実行中...
memcached-21211 (pid 2066) を実行中...
4つのポートで動いてることを確認できました。
2、次にmemcachedの再起動
$ service memcached restart
3、memcachedに接続する
例: ポート21211に接続する
$ telnet 127.0.0.1 21211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
4、itemsを確認する
stats items
STAT items:5:number 1
STAT items:5:age 5905
STAT items:5:evicted 0
STAT items:5:evicted_nonzero 0
STAT items:5:evicted_time 0
STAT items:5:outofmemory 0
END
5、itemsのキーを確認する
例5番に保存されているキーを確認する
stats cachedump 5 1
ITEM app_445736_user_10003168 [98 b; 1479436409 s]
END
6、とあるキーの値を確認する
get app_445736_user_10003168
VALUE app_445736_user_100031681000 6
test data
END
1、まずmemcachedのサービス確認する
$ service memcached status
memcached-11211 (pid 2042) を実行中...
memcached-11511 (pid 2049) を実行中...
memcached-11911 (pid 2057) を実行中...
memcached-21211 (pid 2066) を実行中...
4つのポートで動いてることを確認できました。
2、次にmemcachedの再起動
$ service memcached restart
3、memcachedに接続する
例: ポート21211に接続する
$ telnet 127.0.0.1 21211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
4、itemsを確認する
stats items
STAT items:5:number 1
STAT items:5:age 5905
STAT items:5:evicted 0
STAT items:5:evicted_nonzero 0
STAT items:5:evicted_time 0
STAT items:5:outofmemory 0
END
5、itemsのキーを確認する
例5番に保存されているキーを確認する
stats cachedump 5 1
ITEM app_445736_user_10003168 [98 b; 1479436409 s]
END
6、とあるキーの値を確認する
get app_445736_user_10003168
VALUE app_445736_user_100031681000 6
test data
END
2016年11月11日金曜日
2016年11月9日水曜日
正規表現 ある文字を含まない行を検索 と 空行を検索
正規表現で、ある文字を含まない検索は以下の通りです。
例:「key」を含まない
^(?!.*key).+$
空行の検索方法は以下の通りです。
^\r\n
例:「key」を含まない
^(?!.*key).+$
空行の検索方法は以下の通りです。
^\r\n
2016年11月8日火曜日
linuxあるフォルダのファイル一覧を表示 子フォルダも含む
linuxあるフォルダのファイル一覧を表示 子フォルダも含む
find /dir -type f -follow -print
-type f
ファイルを出力を意味します。-follow
シンボリックの参照先も検索します。-print
ファイル名を出力する2016年11月6日日曜日
php日付から月を取得する方法
カレント時間から月の取得するには以下の三つ方法があります。
とある文字列から月の取得方法は以下の通りです。
date('M')
date('n')
date('m')
とある文字列から月の取得方法は以下の通りです。
$mydate = "2010-05-12 13:57:01";
$month = date("m",strtotime($mydate));
php Laravelで実行されたSQLを取得する方法
Laravelの「$query->toSql()」で実行されたsqlを見ることができますが、その方法で引数を見えないです。
代入した引数も見える方法はありますか。
調べたところ、queryを実行した直後に、「DB::getQueryLog()」でsqlも、代入した引数も見ることができます。
具体的に使い方は以下の通りです。
1、まず、ファイルの先頭に、以下を追加:
use DB;
2、queryの実行前、以下を追加
DB::enableQueryLog();
3、queryの実行直後に、実行されたsqlを取得することができます。
DB::getQueryLog()
ステップ2と3を合わせた例です。↓
代入した引数も見える方法はありますか。
調べたところ、queryを実行した直後に、「DB::getQueryLog()」でsqlも、代入した引数も見ることができます。
具体的に使い方は以下の通りです。
1、まず、ファイルの先頭に、以下を追加:
use DB;
2、queryの実行前、以下を追加
DB::enableQueryLog();
3、queryの実行直後に、実行されたsqlを取得することができます。
DB::getQueryLog()
ステップ2と3を合わせた例です。↓
DB::enableQueryLog();
$result = $query->count();
dd(DB::getQueryLog());
2016年11月4日金曜日
「httpd は停止していますがサブシステムがロックされています」の対策方法
今日「sudo service httpd start」を押したら、以下のエラーができました。
httpd は停止していますがサブシステムがロックされています
どうやっら起動できなくなりました。
googleしたら、ファイル「/var/lock/subsys/httpd」を削除して、再び「sudo service httpd start」を実行して無事に動いてくれました。
たまたま何かの問題で、「/var/lock/subsys/httpd」 が残ったままhttpdが停止してしまったようです。
httpd は停止していますがサブシステムがロックされています
どうやっら起動できなくなりました。
googleしたら、ファイル「/var/lock/subsys/httpd」を削除して、再び「sudo service httpd start」を実行して無事に動いてくれました。
たまたま何かの問題で、「/var/lock/subsys/httpd」 が残ったままhttpdが停止してしまったようです。
2016年10月23日日曜日
mongo dbに新しいユーザーを追加する方法
mongo dbに新しいユーザーを追加する方法:
1、まずユーザー一覧を確認します。
ここに注意してほしいのは、作成する前対象データベースを選択しておく必要 例えば、productというデータベースに対して、selectorユーザーとupdatorユーザーを作成したい場合は、 以下のコマンドを実行します。
1、まずユーザー一覧を確認します。
use admin; db.system.users.find();
{ "_id" : "admin.selector", "user" : "selector", "db" : "admin", "credentials" : { "MONGODB-CR" : " 1c4715405e220adc28bd75e8c71ff7 41" }, "roles" : [ { "role" : "read", "db" : "admin" } ] }
{ "_id" : "admin.updator", "user" : "updator", "db" : "admin", "credentials" : { "MONGODB-CR" : " f67c7e31eacd78db5689f38c04120f 13" }, "roles" : [ { "role" : "readWrite", "db" : "admin" } ] }
2、新しいユーザーを作成します。ここに注意してほしいのは、作成する前対象データベースを選択しておく必要 例えば、productというデータベースに対して、selectorユーザーとupdatorユーザーを作成したい場合は、 以下のコマンドを実行します。
use product;
db.createUser({user: "selector", pwd: "Ln5GCPfB", roles: [{role: "read", db: "product"}]});
db.createUser({user: "updator", pwd: "Ln5GCPfB", roles: [{role: "readWrite", db: "product"}]});
Laravelで画像処理ライブラリIntervention Imageを使えるまでの流れ
Thumbnailの作成、画像のサイズ変更など様々な機能が有するライブラリIntervention Imageを自分の環境で使えるまでの流れをメモしていきたいと思います。
1、まずPhpの拡張モジュールGDをインストールしておき必要があります。
もし何も表示されなかったら、以下の手順でphp-gdをインストールしてください。
以下、php-gdのインストール方法:
① 「yun list | grep gd」でインストールできるphp-gdパッケージを確認します。
自分のphpバージョンに合うパッケージを選びます。
例え自分のphpバージョンは5.6の場合は、
以下のコマンドでphp-gdをインストールします。
yum install php56-php-gd.x86_64 --enablerepo=remi
② インストールしたパッケージをphpが見えるように設定
remiでインストールしたパッケージはデフォルト以下の場所に配置されます。
/opt/remi/php56/root/usr/lib64/php/modules/gd.so
php.iniファイルがパッケージをロードできるように、以下コマンドでシンボルリンクを作成しておきます。
ln -s /opt/remi/php56/root/usr/lib64/php/modules/gd.so /usr/lib64/php/modules/gd.so
③ 最後「/etc/php.ini」に以下を追記して、NginxかApache(sudo service httpd restart)を再起動します。
extension=gd.so
※時にはApacheを再起動しても反映されない時があります。PCを再起動すれば大体問題がなくなります。
2、 「composer.json」ファイルに、「"intervention/image": "dev-master"」を追加
例:
"require": {
"laravel/framework": "5.1.*",
"intervention/image": "dev-master"
}
$ composer install
4、config/app.phpファイルを開いて、$providers arrayのところに、以下を追記
Intervention\Image\ImageServiceProvider::class,
5、config/app.phpファイルの$aliases arrayのところに、以下を追記
'Image' => Intervention\Image\Facades\Image::class,
6、最後念のため、以下のコマンドも実行します。
$ composer update
1、まずPhpの拡張モジュールGDをインストールしておき必要があります。
コマンド、「php -i | grep gd」で自分の環境がphp-gdインストールされたかとかを確認します。
もし何も表示されなかったら、以下の手順でphp-gdをインストールしてください。
以下、php-gdのインストール方法:
① 「yun list | grep gd」でインストールできるphp-gdパッケージを確認します。
自分のphpバージョンに合うパッケージを選びます。
例え自分のphpバージョンは5.6の場合は、
以下のコマンドでphp-gdをインストールします。
yum install php56-php-gd.x86_64 --enablerepo=remi
② インストールしたパッケージをphpが見えるように設定
remiでインストールしたパッケージはデフォルト以下の場所に配置されます。
/opt/remi/php56/root/usr/lib64/php/modules/gd.so
php.iniファイルがパッケージをロードできるように、以下コマンドでシンボルリンクを作成しておきます。
ln -s /opt/remi/php56/root/usr/lib64/php/modules/gd.so /usr/lib64/php/modules/gd.so
③ 最後「/etc/php.ini」に以下を追記して、NginxかApache(sudo service httpd restart)を再起動します。
extension=gd.so
※時にはApacheを再起動しても反映されない時があります。PCを再起動すれば大体問題がなくなります。
2、 「composer.json」ファイルに、「"intervention/image": "dev-master"」を追加
例:
"require": {
"laravel/framework": "5.1.*",
"intervention/image": "dev-master"
}
3、以下のコマンドを実行します。$ composer install
4、config/app.phpファイルを開いて、$providers arrayのところに、以下を追記
Intervention\Image\ImageServiceProvider::class,
5、config/app.phpファイルの$aliases arrayのところに、以下を追記
'Image' => Intervention\Image\Facades\Image::class,
6、最後念のため、以下のコマンドも実行します。
$ composer update
2016年10月22日土曜日
php laravelでアップロードしたファイルの名前と絶対パスの取得方法
phpのlaravelで、UploadedFileからアップロードしたファイルの絶対パス($_FILE['tmp_name'])の取得方法は?
UploadedFileを見ると、以下の情報が見れます。
その時、「
UploadedFileを見ると、以下の情報が見れます。
array(
'test' => false,
'originalName' => 'triangle-in-the-mountains.jpg',
'mimeType' => 'image/jpeg',
'size' => 463833,
'error' => 0,
)
phpのように、$_FILE['tmp_name']を取得したい時があります。その時、「
getRealPath()
」を使えば、アップロードされたtmp_nameを取得することができます。
「$uploadedFile->getRealPath();」
で「/tmp/php5Wx0aJ」のような結果を得られます。
もちろん、
getFilename()
と getPathname()
も使えます。
最後補足、「UploadedFile」ファイルはphpの「File」を継承しています。
2016年9月30日金曜日
java seleniumでinput テキストボックスの値をクリアする方法
たまに<input type="text">要素の値をクリアしたいときがあります。
クリアする方法は以下の二種類があります。
① element.sendKeys(Keys.chord(Keys.CONTROL, "a"), "");
上記のコードを簡単に説明:まずテキストを前選択、そして空の文字をリプレースします。
もちろん以下のコードも効きます。
element.sendKeys(Keys.HOME,Keys.chord(Keys.SHIFT,Keys.END),"");
② element.clear()
クリアする方法は以下の二種類があります。
① element.sendKeys(Keys.chord(Keys.CONTROL, "a"), "");
上記のコードを簡単に説明:まずテキストを前選択、そして空の文字をリプレースします。
もちろん以下のコードも効きます。
element.sendKeys(Keys.HOME,Keys.chord(Keys.SHIFT,Keys.END),"");
② element.clear()
element.sendKeys("Some text here")
方法二はとても理解しやすいと思います。単純にクリアしてから自分が入れたい文字を入れればいい2016年9月13日火曜日
Error: Selection does not contain a main type
今日はmavenのプロジェクトを新規作成して、Hello World!を動がしてみたら、こんなエラーが出ました。
「
解決方法は、プロジェクトを選んで、右クリック、メニューから「
「
Error: Selection does not contain a main type
」解決方法は、プロジェクトを選んで、右クリック、メニューから「
Build Path
--> Use as Source Folder
」をクリックします。
2016年9月8日木曜日
Cygwinの文字化けの解消方法
ソースコードは全部eucJPとなっていて、
Cygwinで見ると全部文字化けしてしまいました。
コマンドの実行結果も全部文字化け。
試しにCygwinエディターの文字コードをeucJPに変更じてみましたが、
買改善されなかった。
最後以下のコマンドを実行したらやっとなおってくれました。
export LANG=ja_JP.eucJP
最後自分のバッチ設定ファイルにも追加しておくと便利だです。
vi ~./batch_profile
Cygwinで見ると全部文字化けしてしまいました。
コマンドの実行結果も全部文字化け。
試しにCygwinエディターの文字コードをeucJPに変更じてみましたが、
買改善されなかった。
最後以下のコマンドを実行したらやっとなおってくれました。
export LANG=ja_JP.eucJP
最後自分のバッチ設定ファイルにも追加しておくと便利だです。
vi ~./batch_profile
2016年8月29日月曜日
linuxコマンド file1にある、file2にない行を抽出する方法
例えばfile1に以下の内容があります。
file2に以下の内容があります。
次のコマンドを使えば、目的を果たせます。file2とfile1両方そーと済み
grep -v -f file2 file1
line1
line2
line3
file2に以下の内容があります。
line1
line4
line5
file1にある、file2にない行を抽出したい。つまり次の結果が期待しています。line2
line3
次のコマンドを使えば、目的を果たせます。file2とfile1両方そーと済み
grep -v -f file2 file1
2016年7月2日土曜日
chrome plugin開発時に、console.logの出力方法
アドレスバーに、以下を入力してアクセス
chrome-extension://ID/popup.html
開いたら、後他の通常画面と同じくdebugツールを使えばconsole.logの出力が見えます。
2016年7月1日金曜日
Protractorでセッションをクリアできないときの対策
以下のスクリプトでセッションをクリアしてみたら、
理由はpageちゃっとロード完了できていなかったみたい
以下のソースを使えばその問題を解消できます。
browser.executeScript('localStorage.clear();');
思うようにクリアしてくれない、理由はpageちゃっとロード完了できていなかったみたい
以下のソースを使えばその問題を解消できます。
function getWindowLocation() {
return window.location;
}
function clearStorage() {
window.sessionStorage.clear();
window.localStorage.clear();
}
return browser.executeScript(getWindowLocation).then(function(location) {
// NB If no page is loaded in the scneario then calling clearStorage will cause exception
// so guard against this by checking hostname (If no page loaded then hostname == '')
if (location.hostname.length > 0) {
return browser.executeScript(clearStorage);
}
else {
return Promise.resolve();
}
});
2016年5月27日金曜日
Postgresqlでselect結果をファイルに出力する方法
Postgresqlでselect結果をファイルに出力する方法は三つがあります。
方法1、psqlコマンドを使う
psql -d dbname -t -A -F"," -c "select * from users" > output.csv
方法2、postgresのcopyコマンドを使う
COPY (SELECT * from users) To '/tmp/output.csv' With CSV;
方法3、psql対話的なコマンドで出力する
方法1、psqlコマンドを使う
psql -d dbname -t -A -F"," -c "select * from users" > output.csv
方法2、postgresのcopyコマンドを使う
COPY (SELECT * from users) To '/tmp/output.csv' With CSV;
方法3、psql対話的なコマンドで出力する
>psql dbname
psql>\f ','
psql>\a
psql>\o '/tmp/output.csv'
psql>SELECT * from users;
psql>\q
登録:
投稿 (Atom)