初心者のWEBデザイン

HTML,CSS、その他WEBデザインに関する事を記述していきます。

Linux ファイルスタンプ find 時間指定検索オプション

Linuxファイルのタイムスタンプは3種類あります。

  • mtime(Modify time):最終変更日時
  • ctime(Change time):inodeの変更日時
  • atime(Access time):最終アクセス日時

findコマンドで時間指定の概念は下記の画像です。(下手くそですいません。。。) min指定も日を分にするだけで基本的な考えは一緒です。

findコマンド 日にち・時間指定
findコマンド 日にち・時間指定

rsync フォルダ毎の差分だけを同期させる

rsync -auv コピー元フォルダ コピー先フォルダ オプション -u 同期先のファイルの方が新しい場合はスキップする -v 冗長メッセージの表示の有無

コピー元フォルダの指定に【/】スラッシュの有無で動きが違いますので注意してください。

今回は下記のディレクトリで説明します。イヌ/カレーの中身がないのでネコ/カレーとの 同期を取っていきましょう。

.
├── イヌ
│   └── カレー
└── ネコ
    └── カレー
        ├── お肉
        ├── タマネギ
        ├── ニンジン
        └── ジャガイモ

スラッシュあり

NG

rsync -auv ネコ/カレー/ イヌ

結果は残念なことにイヌ/カレーの中に材料をコピーしたかったのですが、 イヌ直下に材料が配置されてしまいます。 ネコ/カレー/の中身をイヌ/直下と同期するよ。という意味になります。

結果

.
├── イヌ
│   ├── お肉
│   ├── カレー
│   ├── タマネギ
│   ├── ニンジン
│   └── ジャガイモ
└── ネコ
    └── カレー
        ├── お肉
        ├── タマネギ
        ├── ニンジン
        └── ジャガイモ

スラッシュありで正確に同期を取るにはこうします。

OK

ネコ/カレー/の中身をイヌ/カレーと同期するよ。という意味になります。

rsync -auv ネコ/カレー/ イヌ/カレー コマンド結果

.
├── イヌ
│   └── カレー
│       ├── お肉
│       ├── タマネギ
│       ├── ニンジン
│       └── ジャガイモ
└── ネコ
    └── カレー
        ├── お肉
        ├── タマネギ
        ├── ニンジン
        └── ジャガイモ

スラッシュなし

スラッシュなしだと【ネコ】フォルダ本体を指します。 ですからコピー先はそのネコフォルダを置くことになります。 イヌ/直下にカレーフォルダがない場合でも、ネコ/カレー/を同期しますので 問題なく動作します。

rsync -auv ネコ/カレー イヌ

コマンド結果

.
├── イヌ
│   └── カレー
│       ├── お肉
│       ├── タマネギ
│       ├── ニンジン
│       └── ジャガイモ
└── ネコ
    └── カレー
        ├── お肉
        ├── タマネギ
        ├── ニンジン
        └── ジャガイモ

仮にイヌ/カレーの材料が複数(例えばタマネギ・ニンジンが)足りない場合にもネコ/カレー/フォルダの中身との整合性を取ってくれます。

実際のプロジェクト管理に使うには

上記の説明では同期元・同期先のフォルダ名が異なりました。 しかし通常のプロジェクト管理であれば、同期元・同期先のフォルダ名は同じケースが多いです。ですからスラッシュなしで同期するのが簡単だと思います。

例えば下記のようなケースで、材料が足りない場合です。

.
├── 同期元
│   └── ネコ
│       └── カレー
│           ├── お肉
│           ├── タマネギ
│           ├── ニンジン
│           └── ジャガイモ
└── 同期先
    └── ネコ
        └── カレー
            └── お肉

rsync -auv 同期元/ネコ 同期先 こうすることで同期(材料の整合性)が取れました。

.
├── 同期元
│   └── ネコ
│       └── カレー
│           ├── お肉
│           ├── タマネギ
│           ├── ニンジン
│           └── ジャガイモ
└── 同期先
    └── ネコ
        └── カレー
            ├── お肉
            ├── タマネギ
            ├── ニンジン
            └── ジャガイモ

wgetかcurlでHTTPステータスコード確認

wgetでの確認

wget --spider URL

--spider ファイルをダウンロードしません。

curlでの確認

#プロトコルを付けること
curl -I http://www.example.org

#httpステータスだけを出力
curl -s -o /dev/null -w "%{http_code}" https://www.example.org/

curlの参考サイト

superuser.com

hogem.hatenablog.com

please-sleep.cou929.nu

write out = 書き出し

Atom スニペット登録 チートシート

スニペット登録方法

ファイル形式の確認方法

該当ファイルを開いて[⌘]+[alt]+[P]

meta文字を使用する場合には【\】でエスケープ処理 複数行 -> 【"""】(ダブルクォーテーション) * 3 で囲う

'ファイル形式':
  'スニペット名':
    'prefix': 'スニペットを呼び出すための文字列'
    'body': '呼び出したいコードや文字列'

Webサイトのあれこれをダウンロードしたい時に見るメモ

興味があるWebサイトを閲覧しているときに、気になったテキストをメモがてらローカルに引っ張りたいことがあるかと思います。

そんな時にデベロッパーツールから引っ張る方法を書いておいておきます。

// テキストのオブジェクトを入れたい時
txt = document.getElementsByClassName("example-text");

const blob = new Blob([txt], {type: 'text/plain'});
const url = URL.createObjectURL(blob); // createObjectURLはURLオブジェクトのメソッドです。Blob、Fileを参照するための一時的なURLを作成します。

const a = document.createElement("a");
document.body.appendChild(a); //body要素に対してa要素のオブジェクトを追加

a.download = 'text.txt'; //ダウンロードする際のファイル名を設定
a.href = url; //aオブジェクトにURLを設定する
a.click(); //クリック操作
a.remove(); //a要素を削除
URL.revokeObjectURL(url);  //オブジェクトのURLを削除する

正規表現 URL 1度だけ最短で後方一致させる方法

正規表現は少し使っていないとすぐ忘れてしまいます。 困ったものです。。。。

いつもこんなパターンです。。複数組み合わせるパターンも。。。 ・複数出てくるメタ文字を1度だけヒットさせたい ・URLの後ろから数えて最初のスラッシュまでヒットさせたい

これを見れば見ればそうだったとなるので残しときます。

//最後にスラッシュがある
$url = 'https://cat.com/nikukyu/neko-neko/';
$regex =  preg_match(/\/\w*[.-]*?\w*\/*$/,$url , $cut_url);

//一致しました。
//preg_match('/\/\w*[.-]*?\w*\/*$/', 'https://cat.com/nikukyu/neko-neko/', $m);
//の結果は以下の通りです。
//$m[0] = /neko-neko/


//最後にスラッシュがない
$url = https://cat.com/nikukyu/neko-neko;

//一致しました。
//preg_match('/\/\w*[.-]*?\w*$/', 'https://cat.com/nikukyu/neko-neko', $m);
//の結果は以下の通りです。
//$m[0] = /neko-neko

Shell Script 配列を【同時】に複数ループさせる方法

配列を複数同時に回したい時にたまに遭遇します。 ループのネストパターンではなく、同じ階層でのパターンです。

そんな時にいつも調べているのでメモしておきます。 要素数を合わせとかないとズレるので注意です。

animal=(
  "cat"
  "dog"
  "bird"
  "lion"
)

kana=(
  "ネコ"
  "イヌ"
  "トリ"
  "ライオン"
)

for((i=0; i<${#animal[@]}; i++)) {
  echo ${animal[i]} = ${kana[i]}
}

#cat = ネコ
#dog = イヌ
#bird = トリ
#lion = ライオン