Myログ

自分のためのブログ。

curlコマンドの使い方

#GETリクエスト
curl localhost:8080/api/json | jq .
#オプション -o ファイルへの出力
curl localhost:8080/api/json -o response
#進捗状況を表示しない。エラーは出力する
curl -Ss localhost:8081/api/json
#HTTPレスポンス ヘッダーのみ
curl -I -s 'localhost:8080/api/json?'
#HTTPレスポンス ヘッダー Body 両方
curl -i -s 'localhost:8080/api/json?'
#HTTPリクエスト ヘッダー
curl -v -s 'localhost:8080/api/json' | jq .
#POSTリクエスト
curl -sS -w '\n' -X POST 'localhost:8080/'
#POSTリクエスト データ送信
curl -w '\n' 'http://localhost:8080/createItem' --data 'name=sample&mode=hudson.model.FreeStyleProject&Submit=OK' -XPOST
#POSTリクエスト データ送信(URLエンコード)
#&で複数のパラメータを定義しようとしても、肝心の&がエンコードされてしまいます。
#そのためSubmit=Saveは別途-dで付与
curl -w '\n' 'http://localhost:8080/job/sample/configSubmit' --data-urlencode 'json={"properties": {"hudson-model-ParametersDefinitionProperty": {"parameterized": {"parameter": {"name": "FileParameter", "description": "Upload file to Jenkins.", "stapler-class": "hudson.model.FileParameterDefinition", "$class": "hudson.model.FileParameterDefinition"}}}}}' -d 'Submit=Save' -XPOST

Docker上のCentOSからPostgreSQLに接続する検証

Docker上のCentOSからPostgreSQLに接続する検証

Dockerホスト側の設定

Dockerホストの設定
yum install -y docker
service docker start
docker pull centos:centos7
docker run -i -t centos /bin/bash
Dockerコンテナ上の設定
yum localinstall -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-ami201503-96-9.6-2.noarch.rpm
yum install -y postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib
#DBサーバをIP or ホスト名を指定
DB_HOST=
PG_USER_NAME=devuser
PG_PASSWORD=password
PG_PORT=5432
PG_DB=sample
#SSLモードでの接続
/usr/pgsql-9.6/bin/psql "postgres://${PG_USER_NAME}:${PG_PASSWORD}@${DB_HOST}:${PG_PORT}/${PG_DB}?sslmode=require"
#接続しているユーザーを確認
select session_user;

PostgreSQL側の設定

EC2インスタンスのセキュリティグループの設定

セキュリティグループで以下のルールを追加する
インバウンド
5432 DockerホストのパブリックIPアドレス/32

PostgreSQLのインストール
yum localinstall -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-ami201503-96-9.6-2.noarch.rpm
yum install -y postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib
PostgreSQLの初期化
/etc/init.d/postgresql-9.6 initdb
/etc/init.d/postgresql-9.6 start
SSLに対応するため証明書などを作成
cd /var/lib/pgsql/9.6/data
openssl genrsa -out server.key 1024
openssl req -new -key server.key -x509 -days 365 -out server.crt
chmod 600 server.*
chown postgres:postgres server.key server.crt
postgresユーザーにパスワードを設定
su - postgres
psql
alter role postgres with password 'password';
\q
設定ファイルの編集

postgresql.conf
/var/lib/pgsql/9.6/data/postgresql.conf

listen_addresses = '*'
port = 5432
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

pg_hba.conf
/var/lib/pgsql/9.6/data/pg_hba.conf

#TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0/0 md5
再起動
/etc/init.d/postgresql96 restart
接続確認
su - postgres
createuser -P devuser
psql
\du
\q
データベース作成
psql
\dp
create database sample;
\l
テーブルの作成
\connect sample
CREATE TABLE table1(id int, nick_name character varying(5));
\dt
GRANT SELECT, INSERT, UPDATE, DELETE ON table1 TO devuser;
psql postgres devuser

インターネット側から見える自身のIPアドレスを確認する

NAT環境下にいるホストがどのように見えているかを確認するために、次のサイトを利用した。
https://www.cman.jp/network/support/go_access.cgi

sedを利用して、上記のサイトのレスポンスから自ホストのIPアドレスを切り出している。

curlコマンドのオプションの意味は次の通り。

  • s 進捗状況を表示しない
  • S 進捗状況を表示しないが、エラーは出力する。
API_HOST=https://www.cman.jp/network/support/go_access.cgi
curl -sS ${API_HOST} | grep "<div class=\"outIp\">" | sed -e "s/\(.*<div class=\"outIp\">\)\(.*\)\(<\/div>\)/\2/"

aws s3 基本コマンド

BUCKET_NAME=

#バケットの作成
aws s3 mb s3://${BUCKET_NAME}

#バケットの削除
aws s3 rb s3://${BUCKET_NAME}

#バケットの内容を参照する
aws s3 ls ${BUCKET_NAME} --recursive --human-readable --summarize

#ファイルのコピー 
#パス名の末尾の"/"の扱いによりファイルかフォルダの扱いが変わる
aws s3 cp hoge.txt s3://${BUCKET_NAME}
aws s3 cp bar s3://${BUCKET_NAME}/ --exclude "*" --include "*.txt" --include "*.jpg" --recursive
aws s3api put-object --bucket ${BUCKET_NAME} --key "items/"

#ファイルの削除
aws s3 rm s3://${BUCKET_NAME} --recursive --dryrun

mavenの勉強

●事前準備
1) デフォルトのエンコーディングUTF-8にすることができる。
eclipse.ini
-Dfile.encoding=UTF-8

2) ローカルリポジトリの設定
デフォルトだと以下の場所に作成される??
"C:\Users\yunos\.m2\repository"

ウィンドウ->設定->maven->ユーザー設定
C:\Users\yunos\.m2\setting.xml

●検証
・ローカルリポジトリにすでにダウンロード済みであれば、再度ダウンロードしない模様。
・pom.xmlに記述があれば、eclipseの設定を更新してくれる模様。

●疑問
maven フェーズ、ゴール
mvn compile コンパイルまで
mvn test テストまで実行
mvn package target ディレクトリに作成される。
mvn install ローカルリポジトリへの登録まで
mvn clean target ディレクトリの削除

pom.xmlの記述
modelVersion: POM のバージョン。 特に変更する必要なし
groupId : プロジェクトを一意に識別する名前
artifactId : プロジェクトの成果物の名前
packaging : 作成する成果物のパッケージング・タイプ jar, war など
version : プロジェクトのバージョン
name : プロジェクトの表示名。 ドキュメントを作成するときなどに使用される。
url : プロジェクトのサイトの URL。 ドキュメントを作成するときなどに使用されます。
dependencies: プロジェクトが依存するライブラリの情報。
プラグインなどについても理解する。

●参考URL
【超初心者向け】Maven超入門
https://qiita.com/tarosa0001/items/e5667cfa857529900216

2. Maven 入門
http://www.techscore.com/tech/Java/ApacheJakarta/Maven/2/

Eclipse+Maven という便利な開発環境をインストールからプロジェクト作成まで
https://qiita.com/daikuro/items/4d4d694ddb3cc620bee1

第1章 構成管理入門
http://www.nulab.co.jp/kousei/chapter1/01.html

Subversionによるバージョン管理
http://svnbook.red-bean.com/

PERFORCE ソフトウェア構成管理の高度な実践方法
http://www.toyo.co.jp/ss/perforce/technical_bestpractice.html