気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

AWSのS3基本コマンド

基本コマンド

良く使う基本のコマンドを表にして見ました。

操作 コマンド 備考
バケット参照 aws s3 ls
バケット内参照 aws s3 ls s3://バケット
バケット作成 aws s3 mb s3://バケット
バケット削除 aws s3 rb s3://バケット バケット内が空でないと消せません
オブジェクトコピー aws s3 cp オブジェクト名 s3://バケット ローカル→S3、S3→ローカル、S3→S3でのコピー可
オブジェクト削除 aws s3 rm s3://バケット名/オブジェクト名 --recursive オプションでディレクトリを再帰的に削除
移動 aws s3 mv s3://バケットA/オブジェクトA s3://バケットB/(オブジェクトB) ローカル→S3、S3→ローカル、S3→S3での移動可
同期 aws s3 sync ディレクトリ s3://バケット名/ディレクト ローカルのディレクトリを同期

正規表現で複数ファイルをコピーする

aws s3 cp *.txt s3://[バケット名]/

上記のように指定したくなるが、エラーになる。aws s3ではファイル指定に「*」が使えないです。

上記を実現したい場合は、excludeとincludeを用いて以下のように指定します。

aws s3 cp test s3://[バケット名]/ --recursive --exclude "*" --include "*.txt"

testディレクトリ以下の拡張子がtxtのファイルのみをコピーするコマンドになります。

excludeを省略したくなりますが、省略すると全ファイルがコピー対象になるのでご注意を。
excludeのみの指定は可能です。

一括削除の際は確認コマンドを使う

--dryrun オプションを付けるとどのように削除されるか確認できる
$ aws s3 rm s3://hogebk --recursive --dryrun
(dryrun) delete: s3://hogebk/hoge/test1.txt
(dryrun) delete: s3://hogebk/hoge/test2.txt

MySQL Indexの作成、参照、変更、効果確認コマンド

Indexの作成

-- 通常インデックス
create index idx_name on table_name (name);

-- 複合インデックス
create index idx_group_id_name on table_name (group_id, name);

Indexの参照

作成したIndexを確認する

show index from table_name;

Indexの削除

誤って作成したIndexを削除する

alter table table_name drop index idx_group_id_name;

Indexの効果の確認

EXPLAIN select * from table_name where name = 'test';

bash ファイル圧縮、S3転送を行うスクリプト

aws s3設定済みの前提。

#!/bin/bash

for file in `ls dump_*.sql | cut -d'.' -f1`; do
  tar --remove-files -zcvf "$file".tgz "$file".sql
  aws s3 cp "$file".tgz s3://dump/
  STATUS=$?
  if [ $STATUS = 0 ]; then
    rm -fr "$file".sql
  fi
done

gitクライアントツールのssh設定

TortoiseGit、SorceTreeのssh設定をまとめてみます。
2つ使う理由としては、TortoiseGitが差分が見やすい、 SorceTreeは現状が視覚的に見えるので。

TortoiseGit

参考URL

秘密鍵と公開鍵を生成

TortoiseGitをインストールした後に、 TortoiseGitのディレクトリ内にある「PuTTyPuTTYgen」を起動

Generateを押した後にマウスをぐりぐりと動かし、キーを作成。

Save private keyでを押して、praivat.ppk(秘密鍵)を作成。
Save public keyを押して、public.ppk(公開鍵)を作成。

TortoiseGitでの設定

右クリで表示する「Git Clone」のメニューを開いて

Load Putty Keyのところで、作成したprivate.ppkを設定。
これでリポジトリにある公開鍵で鍵がかかった情報に秘密鍵で鍵を開けに行き、
情報を取得できるようになる。

あとは、取得先のリポジトリURLを指定すればOK

Source Tree

秘密鍵と公開鍵を生成

「メニュー」→「ツール」→「SSHエージェントを起動」
PuTTYを立ち上げる。TortaiseGitと同じ要領でKeyを作成。

秘密鍵の登録

「メニュー」→「ツール」→「Launch SSH Agent」→「Pagentを起動」

Add Keyボタンで作成した秘密鍵を登録してパスワードを入力

Pagentは、pullやpushの際に毎回、パスワードを聞かれなくしてくれるツールです。

Git Clone設定

元のパス:リモート先のリポジトリURL
保存先パス:ローカルリポジトリのパス

以上です。

Javaシステム開発、新しい現場で押さえておきたい情報

サービス、アプリ

広告系、ECサイトandroidアプリなど
サービスによって、求められる技術が変わってくる。

社風

残業推奨か、残業制限か。
社員の顔色はどうか笑。顔色が悪い場合、サービスやシステムも思わしくない場合が多い。

業種にも寄るが、髪型・服装・喋り方などでもある程度わかる。

使用言語

Java, JavaScript(JQuery), Perlなど。RubyC++などサブで使っているかなども押さえておきたい。
どのくらいの割合で使うのか。

Junit単体テスト書いているか。書いているところは、企業体力ある気がする。
テストに工数さけるってことだから。

使用フレームワーク

フロント、サーバー、DBアクセスなどフレームワーク
独自フレームワークでないことを願いたい。

ソース管理

CVS(もうないか)、SVN、Git。 最近、ずっとSVNだったけど、Gitになったから復習しないとわかんね。

ビルド、デプロイ

Ant, Maven, gradle ビルドツール。大事だよね。gradleって便利なのかな。使ったことない。
Jenkins。Javaで他にCIツールってあるのかな。

ミドルウェア

Apche、Tomcat、Nginx。サーバー周り。
OraclePostgreSQL これはどれでもいいかな。DBMS毎のクセのあるSQLの書き方はいけない気がするし。

公開鍵暗号方式とは?

インターネットで安全に情報をやり取りするための暗号化の仕組みとして、
公開鍵暗号方式と、共通鍵暗号方式が上げられます。
違いは、暗号化や復号化する際に、「公開鍵」を使うか、「共通鍵」を使うかの違い。

公開鍵暗号方式

情報の暗号化と復号化に別々の鍵を使うのが特徴。
データの暗号化の際に、「公開鍵」を用い、復号化の際に、「秘密鍵」を用います。

公開鍵はその名の通り、公開されている鍵で、公開鍵を入手すれば、だれでも秘密鍵を持っている人に
安全に情報を贈ることができます。
逆に秘密鍵は、公開されず、厳重に保管することで保持している人だけが情報を見ることが
できるようになっています。