[MySQL] テーブル結合 (LEFT JOIN、RIGHT JOIN、INNER JOIN) 覚え書き

LEFT JOIN句

  • 左側のテーブルのデータは全て表示する
  • 対応する右側のテーブルのデータを追加する
  • 対応する右側のテーブルのデータが存在しなければNULL

RIGHT JOIN句

  • 右側のテーブルのデータは全て表示する
  • 対応する左側のテーブルのデータを追加する
  • 対応する左側のテーブルのデータが存在しなければNULL

INNER JOIN句

  • 左右両方のテーブルで対応するデータが存在するもののみ表示する

参考サイト

MySQLのLEFT JOIN, RIGHT JOIN, INNER JOINの自分用まとめ – (゚∀゚)o彡 sasata299’s blog
http://blog.livedoor.jp/sasata299/archives/51106595.html

外部結合(LEFT JOIN句, RIGHT JOIN句) – データの取得 – MySQLの使い方
http://www.dbonline.jp/mysql/select/index15.html

内部結合(INNER JOIN句) – データの取得 – MySQLの使い方
http://www.dbonline.jp/mysql/select/index14.html

[MySQL] サブクエリ覚え書き

パフォーマンスに注意すること。書き方によって速度にかなり違いが出るらしい。

参考サイト

サブクエリを使った検索条件の設定 – データの取得 – MySQLの使い方
http://www.dbonline.jp/mysql/select/index20.html
(WHERE句のサブクエリ)

MySQLでサブクエリを使用する | Developers.IO
http://dev.classmethod.jp/server-side/db/mysql_sub_query/
(FROM句のサブクエリ)

[WordPress] wp-login.phpへのアクセスを制限する (Apache)

wp-login.phpの不正アクセスが非常に多いので、自分以外のアクセスを禁止させたい。

WebサーバーはApache想定。ブログへのログインはオフィスか自宅からしか行わないので、これらのIPアドレス以外からのアクセスを拒否するような記述を.htaccessに追加しておく。

この記述により、403 Forbiddenのステータスが返るようになる。

[Elasticsearch] v.2.3.2のセットアップ

現時点の最新版2.3.2をVagrant上のCentOS 7.1にインストールする。

Setup | Elasticsearch Reference [2.3] | Elastic
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html

VagrantへのCentOS 7.1のインストール

Javaのインストール

  • Elasticsearchの実行にはJava 7以降が必須
  • Java 8 update 20以降またはJava 7 update 77以降を推奨

CentOSのリポジトリでJava(OpenJDK)を探す。

Java 8のランタイムをインストールする。

Elasticreserchのインストール

Elasticsearchの設定

ローカルホストに加えて、VagrantのホストOS側からのアクセスも許す

/etc/elasticsearch/elasticsearch.yml

Elasticsearchの実行

ざっくり動作確認

まずはローカルホストのシェルから

次にホストOSのブラウザから

Headプラグインのインストール

http://192.168.33.10:9200/_plugin/head/

elasticsearch-head

[PHP] セキュアなPHPアプリケーションを作成するための7つの習慣

昨今は充分にテストされたフレームワークを使うことが多いので、アプリ開発者が自らセキュリティのベーシックな部分に関わるチャンスは薄れつつあるかもしれない。だけどセキュリティは絶対におろそかにしてはいけない領域。例えば、以下のような記事を定期的に読み返すなどして、プログラミングの基本的な習慣を再確認することも必要だな。

というわけで覚え書きリンク。サンプルコードを交えて短く解りやすくまとまってる。

セキュアな PHP アプリケーションを作成するための 7 つの習慣
https://www.ibm.com/developerworks/jp/opensource/library/os-php-secure-apps/

[動画処理] Aegisub – 字幕データ作成支援ソフト

以前にSubtitle Workshopというソフトを備忘録したけど、実際に使ってみると、字幕の表示開始/終了時刻を設定するのは結構大変。しょうがないんだろうなと思いつつ、他に良さげなソフトが無いか探してみたらAegisubというソフトが見つかった。

動画の音声トラックの波形を表示して、それをマウスでクリックして字幕の時刻を設定できるのが超便利。もともとはアニメファンが字幕を付けるために有志が開発したというオープンソースのソフトウェア。まだざっとしか試していないけど使い込んでみたい。

Aegisub Advanced Subtitle Editor
http://www.aegisub.org/

[Apache] mod_actionを使ってファイル保護の仕組みを実装する

会員制サイトなど、ログイン無しでの特定ファイルのアクセスを禁止したい。

手っ取り早いのは、Basic認証でディレクトリ以下を丸ごと保護する方法。だけど、いまどきBasic認証というのもちょっと。セッションを使ったログイン管理を行っているサイトにはそぐわないし。

別の方法としては、保護したいファイルをドキュメントルート外に配置して、プログラム経由でファイルにアクセスする方法。例えば、<img src=”cat.jpg”>とする代わりに<img src=”pic.php?name=cat.jpg”>とかして、pic.php中でユーザ認証を行えば良い。だけど、HTMLのカスタマイズが必要なので採用の敷居は高い。

mod_actionを使うと、HTMLのカスタマイズ無しに後者の方法が使えるらしい。以下参考サイトより覚え書き。

mod_actionsを使ってドキュメントや画像、Flashファイルを保護する|A Day In The Boy’s Life
http://ameblo.jp/itboy/entry-10696572358.html

1. mod_actionsモジュールをロードする

/etc/httpd/conf/httpd.conf

2. .htaccessでMIMEタイプとプログラムを紐付ける

3. 保護の仕組みを実装する

check_login.php

[ソフト] Cloudfogger – クラウドファイルを自動的に暗号化

Dropboxなどの共有フォルダ内のファイルを自動的に暗号化するソフト。暗号化には256ビットのAESが使われているとのこと。クラウドから流出した場合に内容が知れるリスクを低減することができる他、特定のユーザと暗号キーを共有してファイル共有することもできる。

Cloudfogger – Free File Encryption for Dropbox and the Cloud
https://www.cloudfogger.com/en/

参考サイト

クラウドファイルを暗号化!セキュリティを高める「Cloudfogger」 – Webworker’s Clip
http://www.webworkersclip.com/2805/

無料でDropbox・SkyDriveなどを国家レベルの暗号化で自動的に保護する「Cloudfogger」 – GIGAZINE
http://gigazine.net/news/20120424-cloudfogger/

[Git] ユーザ名、メールアドレスを設定する (デフォルト/リポジトリ毎)

なかなか覚えられないので、以下のサイトから引用させてもらって覚え書き。

transitive.info – git config 使い方
http://transitive.info/article/git/command/config/

デフォルトのユーザ名、メールアドレスを設定する

デフォルトのユーザ名とメールアドレスを登録するには「–global」オプションを使って

とする。個々のリポジトリで値が定まっていないときに、これらの値が使用される。

各リポジトリに固有のユーザ名、メールアドレスを設定する

いつも使用しているユーザ名、メールアドレスとは異なるものを、 特定のリポジトリで使いたい場合がある。 対象のリポジトリで「–global」オプションを使わずに設定すれば良い。

[Webサイト運営] curlコマンドを使ってダウンロード速度を測定する

大容量ファイルをサーバーからダウンロードするのに要する時間を測定して欲しいとの依頼あり。

curlコマンドを使って実装。

これをcronで毎時1回実行してログを取る。

参考サイト

Linuxコマンド集 – 【curl】ファイルのダウンロードやアップロードを行う:ITpro
http://itpro.nikkeibp.co.jp/atcl/column/14/230520/080400003/

curlコマンドによるウェブアプリのパフォーマンス測定 (1) time_starttransferの仕様 – wagavulin’s blog
http://wagavulin.hatenablog.com/entry/2015/11/22/073137

curlコマンドによるウェブアプリのパフォーマンス測定 (2) アップロード・ダウンロード速度測定パッチ – wagavulin’s blog
http://wagavulin.hatenablog.com/entry/2016/02/14/025944