javascriptの正規表現まわりのメソッドを整理

javascriptの正規表現まわりのメソッドを整理してみました

Regexp

  • test -> マッチしたら true or false を返す
  • exec -> マッチした結果が返る

String

  • search -> マッチしたらマッチしたインデックスを返す
  • match -> マッチした結果が返る

実行した結果がこちら

var re = /am/;
var str = 'sample string';

console.log( re.test(str) );
// true
console.log( re.exec(str) );
// ["am", index: 1, input: "sample string"]

console.log( str.search(re) );
// 1
console.log( str.match(re) );
// ["am", index: 1, input: "sample string"]

パターンマッチ演算子のgをつけてみます(globalのg)
g をつけると繰り返しマッチさせます

var re = /am/g;
var str = 'sample string sample';

console.log( re.test(str) );
// true
console.log( re.exec(str) );
// ["am", index: 15, input: "sample string sample"]

console.log( str.search(re) );
// 1
console.log( str.match(re) );
// ["am", "am"]

re.exec の index が最後のマッチの index が返ってきて、
str.matchがマッチした分が配列で返ってきています

phpで古いファイルを削除する

phpで古いファイル方法を消してみました

<?php
$timeLine = strtotime('1 day ago'); // 1
foreach (glob("*.txt") as $filename) { // 2
    chmod($filename, 0666) //3
    $time = filemtime($filename); // 4
    if ($time < $timeLine) {
        unlink($filename);
    }   
}

1.
1day ago を変えれば基準の時間を変えられます
http://php.net/manual/ja/datetime.formats.relative.php
の書式を参考に

2.
globにワイルドカードが渡せます
ディレクトリを指定したいなら
glob(“sample/*.txt”)とかでもいけます

3.
chmod でパーミッションを変更してます
環境によっては不要です

4.
fimemtime でファイルの更新時間が unix time でとれます
date(‘Y-m-d H:i:s’, $time)
とすればわかりやすい時刻が見れます

といった感じです

subversionでローカルの変更を全て消したい

いまだsvnを使うことがあり、忘れてたのでメモ

ローカルの変更をすべて取り消したい

$ svn revert –recursive .

まちがえてsvn上で削除してしまったしまったものも復活します
git revertとまざってちょっと混乱します

英語では

〔編集・更新などを〕戻す、取り消す

出展 アルク
だから、どっちもあってます

GoogleChromeのCookieはsqlite3のデータベース

GoogleChromeのキャッシュはsqlite3のデータベースに保存されてる?
ってことで見てみました

Ubuntu 14.04でやりました
sqliteのインストールは
sqliteを始めてみた
で済んでます

Cookieがある場所へ
$ cd ~/.config/google-chrome/Default

Cookie発見
$ file Cookies
Cookies: SQLite 3.x database

ほんとにsqlite3ですね
つないでみましょう
$ sqlite3 Cookies

sqlite> .database
seq name file
0 main /home/user/.config/google-chrome/Default/Cookies

データベースはmainって名前みたい

sqlite> .table
cookies meta

2つテーブルがあります

sqlite> .schema cookies
CREATE TABLE cookies (creation_utc INTEGER NOT NULL UNIQUE PRIMARY KEY,host_key TEXT NOT NULL,name TEXT NOT NULL,value TEXT NOT NULL,path TEXT NOT NULL,expires_utc INTEGER NOT NULL,secure INTEGER NOT NULL,httponly INTEGER NOT NULL,last_access_utc INTEGER NOT NULL, has_expires INTEGER NOT NULL DEFAULT 1, persistent INTEGER NOT NULL DEFAULT 1,priority INTEGER NOT NULL DEFAULT 1,encrypted_value BLOB DEFAULT ”);
CREATE INDEX domain ON cookies(host_key);

sqlite> .schema meta
CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR);

スキーマはこんな感じ
あとはsql発行して遊べますね