AWS:AMIで利用してないスナップショットを探して削除する

  1. 自分が所有するAMIの一覧を取得
aws ec2 describe-images --owners self | jq '.Images[] | {ImageId}' | jq '.[]'| sed 's/"//g'
  1. 自分が所有するAMIのスナップショットIDの取得
aws ec2 describe-images --owners self | jq '.Images[]["BlockDeviceMappings"][]["Ebs"]["SnapshotId"]' | sed 's/"//g'
  1. 自分が所有するスナップショットのIDの取得
aws ec2 describe-snapshots --owner-ids あなたのID | jq '.Snapshots[] .SnapshotId' | sed 's/"//g'
  1. スナップショットの削除

2と3の結果を比較すると、AMIで利用されてないスナップショットを出せますので、それに対して:

aws ec2 delete-snapshot --snapshot-id スナップショットID

なお、最後にステータスがavailableのvolumeを削除する

Vue.js:computedに引数を渡せない

速習vue.jsという本を読んでいて、以下のサンプルコードが出てきました:

お題

<!DOCTYPE html>
<html lang="ja">
<body>
  <div id="app">
    <form>
      <label for="name">メールアドレス:</label>
      <textarea v-bind:value="emails.join(';')" v-on:input="emails = $events.target.value.split(';')"></textarea>
    <ul>
      <li v-for:"email in emails">{{ email }}</li>
    </ul>
  </div>
</body>
</html>
new Vue({
  el: '#app',
  data: {
    emails: []    
  }
});

これを算出プロパティとしたほうが良い書き方、と合ったので試してみました。

ダメだったコード

<!DOCTYPE html>
<html lang='ja'>
<head>
<meta charset='UTF-8'/>
<title>騾溽ソ歎ue.js</title>
</head>
<style>
[v-cloak] {
  display: none;
}
</style>
<body>
<div id='app'>
  <form>
    <textarea v-bind:value="joinedEmail" v-on:input="splitEmails($event.target.value)" cols="80" rows="10"></textarea>
  </form>
  <ul>
    <li v-for="email in emails">{{ email }}</li>
  </ul>
</div>
<script src='https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js'></script>
<script src='./hello.js'></script>
</body>
</html>
var app = new Vue({
  el: '#app',
  data: {
    emails: ['foo@foo.com','bar@bar.com'],
  },
  computed: {
    joinedEmail: function() {
      return this.emails.join(';');
    },
    splitEmails: function(value) {
      this.emails = value.split(';');
    }
  },
  methods: {
  }
});

なぜダメなのかまだ完全に理解できていませんが、computedではそもそも、引数を渡せないみたいです。 ちなみにsplitEmails関数をmethodsに移動させると動きます。

動くコード

setterを使うことで実現できました:

<!DOCTYPE html>
<html lang='ja'>
<head>
<meta charset='UTF-8'/>
<title>速習Vue.js</title>
</head>
<style>
[v-cloak] {
  display: none;
}
</style>
<body>
<div id='app'>
  <form>
    <textarea v-bind:value="joinedEmail" v-on:input="splitEmails = $event.target.value" cols="80" rows="10"></textarea>
  </form>
  <ul v-cloak>
    <li v-for="email in emails">{{ email }}</li>
  </ul>
</div>
<script src='https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js'></script>
<script src='./hello.js'></script>
</body>
</html>
var app = new Vue({
  el: '#app',
  data: {
    emails: ['a@a.com','b@b.com'],
    myval: ''
  },
  computed: {
    joinedEmail: function() {
      return this.emails.join(';');
    },
    splitEmails: {
      set: function(value) {
        this.emails = value.split(';');
      }
    }
  },
  methods: {
  }
});

とりあえず動くようになりましたが、動作原理をちゃんと理解せねば…

フリーランスじゃないけど孤独がつらい

6月から会社員になりました。が、100%自宅勤務です。 会社の人と会話するのは週に1回のSkype MTG

奥さんが働き出したので昼間は、話す相手が待ったくいません。 よって寂しい。

今日、自転車やさんでタイヤ交換の話で盛り上がって心が満たされました。 こんなんで大丈夫なのか俺?という疑問が拭えません。

会社員時代はオフィスが嫌でした。営業さんが声だしてうるさい、 空調効かない、トイレは順番待ち、椅子は硬いしパソコンは遅いし。 でも、同僚がいたんですよね。

オフィスに出社して時代がちょっと懐かしい。 でも出社が必要になったら、それはそれで不満なんだろうな。

もう、会社作るしかないかもしれないw

SVN:特定のファイルだけをignoreする

仮に、/var/www/htmlhoge.txtというファイルがあり、svnで管理したくないとします。 現時点でsvn statusとすると、

? hoge

と表示されるとします。 この?を消すには次のようにします:

cd /var/www/html
svn propedit svn:ignore .

もし

svn: E205007: 環境変数 SVN_EDITOR、VISUAL、EDITOR のどれも設定されていなく、実行時の設定オプション 'editor-cmd' も見つかりません

というエラーが出たら、

export SVN_EDITOR=vim

とでもしてから再度、最初のコマンドを実行します。

エディタが無事に開いたら、1行目に

hoge.txt

と記述し、保存します。

次に、svn statusをすると、? hoge.txtは消えていることでしょう。 さて、この段階ではおそらく、フォルダ自体が変更あり、と示されると思います:

M .

これを治すには、コミットしてください。

以上です!

Git:リモートにのみあるブランチをローカルに持ってくる

ローカルに、masterだけがあるとします。 リモートにはhogeというブランチがあるとします。

単純にcheckoutを試みると次のエラーがでます:

git checkout hoge
error: pathspec 'stripe' did not match any file(s) known to git.

hogeをローカルに持ってくるには、

git fetch
git checkout hoge

とします。

SSL:FujiSSLをSSLストアで購入し、CentOS7のApache2.4に設定する

mod_sslのインストール

yum -y install mod_ssl

CSRの生成

秘密鍵作成に必要な疑似乱数の生成

sudo bash
mkdir /etc/httpd/ssl
cd /bin
./openssl md5 * > /etc/httpd/ssl/rand.dat

秘密鍵の作成

ここで入力するパスフレースはどこかにメモしておきます:

./openssl genrsa -rand /etc/httpd/ssl/rand.dat -des3 2048 > /etc/httpd/ssl/private.pem

Enter pass phrase:
Verifying - Enter pass phrase:

秘密鍵からCSRを生成

./openssl req -new -key /etc/httpd/ssl/private.pem -out /etc/httpd/ssl/csr.pem

Enter pass phrase for /root/ssl/private.pem:(パスフレーズ入力)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Minato-Ku
Organization Name (eg, company) [Default Company Ltd]:My company
Organizational Unit Name (eg, section) []:Engineering
Common Name (eg, your name or your server's hostname) []:FQDN
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

生成したCSRアクティベーション

SSL StoreのCSRを貼り付ける場所に/etc/httpd/ssl/csr.pemの中身をペーストします。

SSL STOREからのアクセスを許可

SSL STOREから発行されたfileauth.txtは/.well-known/pki-validation/fileauth.txtでアクセスできるようにしなければなりませんが、 WebサーバがBASIC認証で保護されている場合はこちらの方法でアクセスを開放します:

thebaker.hatenablog.com

受領した証明書の設置

SSLサーバ証明書は、/etc/httpd/ssl/server.crt、中間証明書は/etc/httpd/ssl/chain.crtとして設置します。

/etc/httpd/conf.d/ssl.confの編集

次の3行を変更します:

#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/httpd/ssl/server.crt
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/httpd/ssl/private.pem
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
SSLCertificateChainFile /etc/httpd/ssl/chain.crt

apacheの再起動

まず、停止させます:

systemctl stop httpd

次に起動します:

systemctl start httpd

パスフレーズが聞かれるので入力します

エラー

Firefoxで次のエラーが出る場合は、30分待ってください:

The OCSP server has no status for the certificate. エラーコード: SEC_ERROR_OCSP_UNKNOWN_CERT 

www.fujissl.jp

httpsを強制する

httpd.confに以下を追加します:

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]

パスフレーズを解除

cd /etc/httpd/ssl
penssl rsa -in private.pem -out private_no_passphrase.pem