最近更新したファイルを調べる

findコマンドにオプションを付けることで調べることができる。さらにディレクトリや条件を付与することで範囲を限定する。

形式

オプション例

最後にデータが修正されたのがn日前のファイル・ディレクトリを検索(+n:n日以上、-n:n日以下)

最後にデータが修正されたのがn分前のファイル・ディレクトリを検索(+n:n分以上、-n:n分以下)

コンパイル

説明

狭義

ソースプログラムからアセンブリ語のプログラムを作る処理

広義

オブジェクトを作るのに必要な「プリプロセス、コンパイル、アセンブル、リンク」を全てひっくるめた意味。ビルドともいう。

コンピュータが直接処理できるのはマシン語と呼ばれる言語だけです。人間がわかりやすいような言語(PHPなど)で書かれたプログラムを直接実行することはできません。
プログラムを作成したらコンパイル(プログラムをコンピュータが理解できるように翻訳する)作業が必要になります。

vim チートシート 実践編

モード

挿入モードへ

カーソル移動

ファイルの先頭に移動する

ファイルの末尾に移動する

行頭に移動する

行末に移動する

編集

ファイル

検索と置換

領域選択

領域選択スタート

短形選択スタート

行選択スタート

コピー

切り取り

ウィンドウ

画面を上下に分割する

画面を分割しつつ、ファイル名のファイルを開く

今いるウィンドウにファイルを開く

今いるウィンドウにて各コマンドを実行する

buffer(バッファ管理)

register(レジスタ管理)

mark(マーク)

folding(折りたたみ)

word completion(単語補完)

recording(操作記憶)

外部コマンドとの連携

*参考URL

  • vimで効率的にコードを書くための小技
  • Vim Documents in Japanese
  • 名無しのvim使い

各種バージョンをコマンドで確認(OS・Apache・MySQL・Nginx・PHP)

OSのバージョン

Webサーバーのバージョン

Apacheのバージョン

Nginxのバージョン

phpのバージョン

php実行環境のバージョン

php-fpmのバージョン

hhvmのバージョン

データベースのバージョン

register_post_type

概要

投稿タイプを作成・設定する関数。
wp-includes/post.phpにおいてはこの関数を用いて、WordPressの基本となる投稿タイプの設定が行われている。

カスタム投稿タイプを自身で追加する際にはfunctions.phpに記述することで追加作成を行うことができる。

使い方

「register_post_type」関数の基本構文は次の通り。

第一引数($post_type)ではカスタム投稿の名前を入力する。
第二引数($args)ではカスタム投稿タイプの属性を連想配列または文字列で指定する。

用例

“book” というカスタム投稿タイプを登録する例。

管理画面に「book」というカスタム投稿が出力されることが確認できます。

MySQLのEXPLAIN

EXPLAINはSELECTステートメントの実行プランに関する情報を提供します。つまりSQLの実行計画、「mysqlが作成したクエリをどのように判断して実行したのか」というものが
見れるようなものです。(データへのアクセス方法がわかるものです。)
これにより現在どのようにクエリが実行されているかということを知ることができ、これを知ることでクエリの最適化(※)へとつなげることができる。
(※)クエリを最適化するということは、
・書き換える前と後でクエリの実行結果が同じになる
・EXPLAINがよりよい実行計画を表示する
ということ

使い方

SELECT文の先頭に「EXPLAIN」をつけて実行する
例)

出力結果)

各フィールドの情報について

id

SELECT識別子。クエリー内のSELECTの連番です。

select_type

クエリの種類を表すもの。クエリの種類とはJOIN、サブクエリ、UNIONおよびそれらの組み合わせのことで、select_typeの内容もその組み合わせから導き出されたものである。

JOINの場合

MySQLが実行できるJOINの種類は「Nested Look Join(NLJ)」の一種類しかない。
テーブルを一つずつ順に処理していく方式のこと。クエリがJOINだけから構成される場合、select_typeは「SIMPLE」と表示される。SIMPLEではidが全て同じ値になる。EXPLAINの出力の順序がどのテーブルから処理するかということを反映している。

サブクエリの場合

次の5種類のうちいずれかが表示される。

  • PRIMARY・・・外部クエリを示す。
  • SUBQUERY・・・相関関係のないサブクエリ。
  • DEPENDENT SUBQUERY・・・相関関係のあるサブクエリ。
  • UNCACHEABLE SUBQUERY・・・実行する度に結果が変わる可能性のあるサブクエリ。
  • DERIVED・・・FROM句で用いられているサブクエリ。
UNIONの場合

クエリにUNIONが含まれる場合、次の5種類のいずれかがselect_typeに表示される。

  • PRIMARY・・・UNIONにおいて最初にフェッチされるテーブル
  • UNION・・・2番目以降にフェッチされるテーブル
  • UNION RESULT・・・UNIONの実行結果
  • DEPENDENT UNION・・・DEPENDENT SUBQUERYがUNIONになっている場合
  • UNCACHEABLE UNION・・・UNCACHEABLE SUBQUERYがUNIONになっている場合

table

出力の行で参照しているテーブルの名前。

table

このフィールドはレコードアクセスタイプとも呼ばれ、対象のテーブルに対してどのような方法でアクセスするかを示す。致命的なクエリはこのフィールドを見れば一目で分かるのでとても重要なフィールドである。よく見かけるものは次の通り。

  • const・・・PRIMARY KEYまたはUNIQUEインデックスのルックアップによるアクセス。最速。
  • eq_ref・・・JOINにおいてPRIARY KEYまたはUNIQUE KEYが利用される時のアクセスタイプ。constと似ているがJOINで用いられるところが違う。
  • ref・・・ユニーク(PRIMARY or UNIQUE)でないインデックスを使って等価検索(WHERE key = value)を行った時に使われるアクセスタイプ。
  • range・・・インデックスを用いた範囲検索。
  • index・・・フルインデックススキャン。インデックス全体をスキャンする必要があるのでとても遅い。
  • ALL・・・フルテーブルスキャン。インデックスがまったく利用されていないことを示す。OLTP系の処理では改善必須。

※indexまたはALLを見かけたらすかさずクエリをチューニングしよう。

possible_keys

オプティマイザがテーブルのアクセスに利用可能なインデックスの候補として挙げたキーの一覧。

key

オプティマイザによって選択されたキー。

key_len

選択されたキーの長さ。インデックスの走査は、キー長が短い方が高速である。

ref

検索条件で、keyと比較されている値やカラムの種類。定数が指定されている場合はconstと表示される。JOINが実行されている時には、結合する相手側のテーブルで検索条件として利用されているカラムが表示される。

rows

rows カラムは、MySQL がクエリーを実行するために調査する必要があると考える行数を示します。
※InnoDB テーブルの場合、これは推定値であり、常に正確ではないことがあります。

EXTRA

MySQL がクエリーを解決する方法に関する追加情報が含まれます。

  • Using where・・・頻繁に出力される追加情報であまり気にする必要はない
  • Using index・・・クエリがインデックスだけを用いて解決できることを示す。カバリングインデックスを利用している場合などに表示される。
  • Using filesort・・・ソートを行っている。適切なインデックスを張ることで改善されるかもしれないことを表す。

※参照:
http://qiita.com/Tsuji_Taku50/items/43eb2a41915d03173773
https://dev.mysql.com/doc/refman/5.6/ja/explain-output.html#explain-output-column-table

MySQLはじめの一歩

データベースへのアクセス

パスワードを入力しMySQLへアクセス

データベースの確認

データベース名の一覧が表示されます

使用するデータベースに切り替える

使用するデータベースに切り替わります
※データベース名がわかっている場合は、データベースにアクセスする際に、

としてもOKです。

対象データベースのテーブル構造の確認

テーブルの一覧が表示されます

各テーブルの構造、カラム(フィールド)の確認

各フィールドから条件に合致するデータを抽出

見やすいよう調整

縦に並べて表示する

何件かを表示する

順序調整

※備考
・desc ・・・ 降順
・asc ・・・ 昇順

データベースのバックアップ

バックアップを保存したいディレクトリにて

コマンドの実行結果・標準出力をファイルに保存

findとxargsとgrepを使って、特定の文字列を含むファイルを見つける方法で特定の文字列を含むファイルを標準出力で表示させる方法を記載しました。

今回はその標準出力の内容をファイルとして保存する方法をまとめます。

標準出力をファイルに保存

findとxargsとgrepを使って、特定の文字列を含むファイルを見つける方法で”kusanagi_user”という文字列が含まれるファイルを検索する方法を記載しました。その結果をファイルとして保存します。
次のように記述します。

コマンド

の結果をtestディレクトリのxargs.phpとして保存しました。
xargs.phpの内容を見ると

の結果標準出力されていた結果である、下記がファイルとして保存されています。

  • コマンド > ファイル名
    コマンドの実行結果をファイルに上書き保存します。
  • コマンド >> ファイル名
    コマンドの実行結果をファイルに追記します。
  • コマンド >& ファイル名
    コマンドの実行結果とエラー出力をファイルに上書きします
  • コマンド 2> ファイル名
    コマンドのエラー出力をファイルに上書きします。
  • コマンド 2>> ファイル名
    コマンドのエラー出力をファイルに追記します。

xargs

書式

標準入力から受け取った文字列を引数に指定して、与えられたコマンドを実行します。

例)60日以上更新されていないファイルを削除する

xargsコマンドは、findコマンドの実行結果を受け取って、rmコマンドの引数に渡してそれを実行します。
xargsコマンドの利点は引数が多すぎた場合でも処理できることです。例えば引数が非常に多数のファイルがあるディレクトリでrmコマンドを実行するとシェルの制限を超えてしまうことがあります。
このような場合にxargsコマンドを使うと、制限を超えないよう適切に処理をしてくれます。