カレントディレクトリをDocumentRootにして確認

表題をhttpd@Dockerで行う。

■ 環境

  • httpd 2.4.29
  • Docker for Mac
  • Mac OSX El Capitan

■ httpd@Docker

最新版のDockerコンテナイメージを取得する。

$ docker pull httpd

自身の場合は、下記のオプションを指定して実行することが多い。

  • -ti
  • –rm
  • -p 8080:80
  • -v `pwd`:/usr/local/apache2/htdocs/

実行する時は下記のようになる。

docker run -ti --rm -p 8080:80 -v `pwd`:/usr/local/apache2/htdocs/ httpd

デーモンでの起動はせずに、ログをターミナルで見ながら確認する。ちょっとした時に確認するのに楽だ。

以上。

■ 関連

httpd@Dockerの起動方法

1日以内に更新されたファイルを探す

表題をLinuxの`find`コマンドで行う。よく忘れるのでメモ。

■ 環境

  • Linux

■ find

更新されたファイルを探す場合には下記オプションを使う。

$ man find
  :
 -mtime n
  File's data was last modified n*24 hours ago.  See the comments for -atime to understand  how  rounding  affects  the
  interpretation of file modification times.
  :

-ctime“とかもある。が、いつもハマるのが”-ls“オプションと併用する場合である。

自身の場合は、オプションをどんどん追加しながら対象を絞っていくやり方なので、先に”-ls”で時間を見て「さらに絞らないと」と”-mtime“等のオプションを使用することになる。しかしその場合は”-mtime“が正しく効いてくれずに”-ls“より前のオプションの条件に当てはまる全てのファイルが対象となってしまう。

-ls“は最後につけなければならない。

以上。

Hostnameヘッダーが無い場合にレスポンスを返さない

nginxにおいて表題の通り。知らなかったのでメモ。

■ nginx

  • nginx 1.12.1

■ 444

How to prevent processing requests with undefined server names
http://nginx.org/en/docs/http/request_processing.html#how_to_prevent_undefined_server_names

上記に記載されていた。nginxでの独自ステータスコードとして”444“を返すようにすると、レスポンスを一切返さないようになるらしい。レスポンスはもちろん返らないのでアクセス元のクライアントからは何も返ってこない状態となる。

server {
    listen      80;
    server_name "";
    return      444;
}

なるほど。これは意外と便利そうである。

以上。

awscliでAthenaのpartition作成

表題の通り。画面からSQLを実行するのが面倒なので`aws`コマンドで一気に作成したい。

■ 環境

  • awscli 1.14.20
  • Amazon Athena
  • Mac OSX El Capitan

■ awscli

コマンドを確認すると、下記で実行が可能そうである。

$ aws athena start-query-execution

`help`を確認すると書きオプションを指定すれば問題なさそうである。

  • –query-string
  • –result-configuration

–query-string“で指定するのは、普段ManagementConsoleで直接書いて実行しているクエリをそのまま書けば良さそうである。”–result-configuration“は結果を出力させるS3上のpathを指定すれば問題がなさそうである。例えば下記のように実行すれば良さそうだ。

$ aws athena start-query-execution \
  --query-string "ALTER TABLE" test.table1 ADD PARTITION (year=2018, month=1) location 's3://withsin/testtable/2018/01/' \
  --result-configuration OutputLocation=s3://withsin/athena-logs/

引っかかったのがテーブル名を”DB.TABLE“としなければいけなかった事だろうか。

あとは上記をスクリプトでループさせたりすれば、必要な分は一気に作成することができそうである。

以上。

■ 関連

Athenaのpartition一覧

partition削除

標準エラー出力にprint

`perl`において表題の通り。ちょっとしたスクリプトを書いていて、どうやるんだったっけ?となったのでメモ。

■ 環境

  • Perl 5.22.1

■ print

単純に`print`すると標準出力になる。が、実際には下記を行っているのと同等である。

print STDOUT "test\n";

標準エラー出力には下記のようにする。

print STDERR "test\n";

以上。