むらじゅん風呂具

ITエンジニアとたまに歌手と司会などで活動する村中淳のブログ

日本酒原価酒蔵に行ってきた

3連休中日、いろいろとタイミングが合い、 フレンズと日本酒原価酒蔵に行ってきた。

sake-genkabar.com

普段から、「お酒は飲めません」と豪語している僕。

こういうお店には、「お導き」がなければまず来ない。

※居酒屋の食べ物は好き

連休中日ということもあり、なかなかの混み具合。

飲兵衛のこげ氏が、すっと予約をしておいてくれたのですんなり入れた。

メニューを見てびっくりしたけど、

日本酒がめちゃめちゃやっすい。

277円って値段の日本酒初めて見たわ!!

これ以外にも種類も豊富。高いので800円くらいだったかな。

ソフトドリンクのほうが高いというわけわからん体験を初めてしたw

店員さんもいろいろと言ってましたが、まじで原価提供らしい・・・。

フレンズたちがあまりにも美味しそうに飲んでいるのが羨ましくなり、

「ちょっとちょうだい!!」とお願いして、

おちょこにほんのちょびっと入れてもらった日本酒を飲む。

どことなくフルーティな味わい。

喉を通る「熱い感じ」がなんとなく堪らない。

本当に美味しい日本酒だと悪い酔い方しない、なことはよく聞くけどまさにそんな感じがした。

※こわいからちょびっとでやめておいた

新宿の店舗に行きましたが、

安さで手軽に日本酒を楽しむにはとてもおすすめ。

値段気にせず飲んで食べれたのは、とても楽しかったズェ!!

興味ある方は予約はしていったほうが無難です。

※おまけ

帰りのセブンでラブライブサンシャイン一番くじを引いて、 推しのルビーちゃんを引いたおこげ氏。

ちなみにぼくは曜ちゃん練習着ラバスト引けました〜。

2019年の生活での立ち回りを考える

仕事は「実績を残すこと」を軸に行っていくことを決めているけど、 それだけでは固いなあと思っていたところに参考になるものが。

2019年の抱負3つと今年やることリスト

観音さんのブログ、考え方がとても好きでちょくちょく覗かせてもらってます。 特に抱負記事はパクりたいなあと思い、速攻で書き始めましたw

ラフに考える。

2019年の抱負

心配事をなくす

心にどんよりしていることを残していると、精神衛生上よくないので日頃の立ち回りを気をつけよう。

足るを知ろう

言葉の使い方が合っているかわからないけど、持っているもの、遊んでいるもの、使っているもの、今は可もなく不可もなく満ちているので、いまあるものを大切にしていくようにしたい。

簡単に言うと出費を抑える。 そして、「ここぞ!」という時に備えていく。

自己中心に生きましょう

好きな人を大切にするくらい自分に対しても同じ気持ちで向き合う。 優先順位を決める。無理に合わせない。声に出して伝えていく。 この辺はもう少し意識して生きていったほうがいいなあと思う。

身体を大切に

身体が固すぎることが原因でいろいろと弊害が起きることがあるので、ストレッチ、筋トレは習慣づけていきたい。

写真を撮る

Amazon Photos というアプリで「過去の写真」という表示からちょうど1年前に撮った写真を表示してくれる機能があり、これがなかなか良かった。

「1年前、何してたっけ??」というのを景色で振り返り、日々の充実感をもっと上げていきたい。

カメラは拘らず手持ちのiPhone Xで十分。

本を読む

Kindle Unlimitedにて本を読む時間を増やす。

特にエンジニア系のやつ。

自宅にいる時のネットワーフィンを減らしてインプット、アウトプットの量と質を上げていきたい。

以下の3つはそのまま観音さんをパクりましたw

芸術

  • 映画に触れる

Primeビデオで毎月1本映画観る

  • 音楽に触れる

Amazon musicを再生する時間を増やす

  • よくわからないものに触れる

最近は行ってなく、ひとりで出かけるのが億劫になっていたので、

ひとりで楽しめることを思い出す。

こんな感じかな。

あとで手帳にも書いて明日からの通常業務がんばりやしょ。

サーバレスアプリケーションを作ろう

新年あけましておめでとうございます。

元旦早々、喉が痛い、咳が出るのでジッとしていた今日。

今年は「手を動かして実績を作る」にこだわりたいので、早速やってみる。

Pythonで作るはじめてのサーバレスアプリケーション https://www.amazon.co.jp/Python%E3%81%A7%E4%BD%9C%E3%82%8B%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3%83%AC%E3%82%B9%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-%E6%9C%AC%E7%94%B0%E5%B4%87%E6%99%BA-ebook/dp/B07JD6NDS7/ref=sr_1_fkmr0_1?s=digital-text&ie=UTF8&qid=1546335156&sr=1-1-fkmr0&keywords=AWS+Lambda+python+%E5%85%A5%E9%96%80

リンクがうまく貼れん・・・。

Amazon読み放題契約をして読める本。 Lambdaも使っているのもあり、入り口には良さげ。

中身の実施内容は一応有料なので伏せていたほうがよいかと思うので、 ちょっとひっかかった部分をまとめる。

PipEnvの導入

Pipenvとは、プロジェクトごとに自動で専用の環境(仮想環境)を作成、 仮想環境ごとにパッケージ管理を行うことができるライブラリ。

インストール時にエラーが起きる。

[Errno 1] Operation not permitted

ちなみにroot権限でもダメ・・・。「なんじゃろ?」と思ったけどこれでした↓

Mac標準のセキュリティ機能でガードされているらしい。 リカバリーモードで起動、機能をオフってインストールは完了。

あとは、本の環境に合わせようとしてpython3を導入↓

ここまでやって、体調悪く本日は断念。 寝ながらラブライブ一挙放送見てて感動。 うみちゃん好き。

http://live2.nicovideo.jp/watch/lv317333042

続きは明日。

※おまけ 年末はコミケにて超人気コスプレイヤーはむこを拝観へ

人でごった返してるけど年末くらい味わってもいいかなあ。 欲しい本は友人に購入してもらったので楽しみにしておる。

2018年総括

思いつくものをさらさらっと書いてみる。

気づき知った1年

仕事でやりたいことがあるも、いろんなしがらみがありうまいこといかず。 声をあげて意見を言うことは忘れずも、「実力がすべて」だということなので、 学習を怠らず実績を作ることを2019年は意識して取り組みたい。

デレステがとても好きになる

もはや綺麗に1年続くと思ってなかったデレステ。 予想以上に曲が良かった。ありがとうMONACAさん。 今では高垣楓さんが大好きで、トリニティーフィールドの3人がお気に入り。 課金にとても躊躇してたけど、月に三千円くらいならどうってことないなあと思うようになる。

歌う機会をいただく

巡り合わせがよかったなあと思う、アークさんの30周年記念社歌へのサブボーカル参加。 レコーディングから撮影まで一切緊張しないで楽しんでた。

www.youtube.com

これに応募しようと思ったのはギルティをやってたことが大きい。 やるのも続けているのも、いま付き合っている友人ありきなので実のところ、 その人たちにはとても感謝している。 これからもどっかで「ステージ」には縁があればいいなあと思うので、 興味があるものにはどんどん飛び込んでいく。 併せて自己鍛錬も欠かさない。

思ったより給料が上がってなくて悲しい

さっき1年前の給料明細書を見返して悲しくなる。 来年は会社に有無言わさないくらいの実績を作ろう。 そして、「選択肢」も同時に持てるようにしておき心の余裕を持つ。 「余裕」、とても大事。

時間がある時にゆったり手帳見返しながら、もうちょい追記しよう。

Ansible 入門 備忘録

ドットインストールさん、お世話なってます。

https://dotinstall.com/lessons/basic_ansible

習ったことのメモ。

ドットインストール Ansible 入門

Ansibleの良いところは、管理するサーバにansibleをいれて、 操作したいサーバへ公開鍵認証してしまえばチャチャっと行えること。

Inventory ファイルの作成

処理対象となるホストを記述するグループ分けすることが可能

[web]
192.168.43.52

[db]
192.168.43.53

コマンド 対象ホストにpingを飛ばす

ansible all -i hosts -m ping

・オプション

-i → Inventory ファイルの指定

-m → モジュール指定

Inventory ファイルの指定は省略可能

ansible.config にてファイルを指定

vi ansible.cfg
----- 編集内容
[defaults]
hostfile = ./hosts
----- 編集終了後は以下でおけ
ansible all -m ping

Playbook の活用

サーバのあるべき状態を記述したもの

→ 冪等性(ある操作を1回行っても複数回行っても結果が同じであること)

vi playbook.yml
---編集内容---
- hosts: all
  sudo: yes #sudo権限が必要な場合にyes
  tasks:
    - name: add a new user
      user: name=murajun

実行コマンド

ansible-playbook playbook.yml

absent

ユーザがいない(いる場合には削除がされる)

---
- hosts: all
  sudo: yes
  tasks:
    - name: add a new user
      user: name=murajun state=absent

文法チェック

ansible-playbook playbook.yml --syntax-check

タスク確認

ansible-playbook playbook.yml --list-task

テスト実行

ansible-playbook playbook.yml --check

変数

ユーザ名を変数で管理する

---
- hosts: all
  sudo: yes
  vars_prompt:
    username: "Enter username"
  tasks:
    - name: add a new user
      user: name={{username}}

MWの設定

web サーバに対してのみ行うので、新しいセクションを作成する。 yumモジュールにて、名前とlatest(最新版)を指定。 さらにサービスモジュールで起動と自動起動設定をする。

---
- hosts: all
  sudo: yes
  tasks:
    - name: add a new user
      user: name=murajun state=absent

- hosts: web
  sudo: yes
  tasks:
    - name: install apache
      yum: name=httpd state=latest
    - name: start apache and enabled
      service: name=httpd state=started enabled=yes

htmlファイルを転送する

htmlファイル内容

<html>
hello from ansible!
</html>

playbookの内容変更

---
- hosts: all
  sudo: yes
  tasks:
    - name: add a new user
      user: name=taguchi
    - name: install libselinux-python
      yum: name=libselinux-python state=latest

- hosts: web
  sudo: yes
  tasks:
    - name: install apache
      yum: name=httpd state=latest
    - name: start apache and enabled
      service: name=httpd state=started enabled=yes
    - name: change owner
      file: dest=/var/www/html owner=vagrant recurse=yes
    - name: copy index.html
      copy: src=./index.html dest=/var/www/html/index.html owner=vagrant

recurse=yes

再帰的にディレクトリオーナーを変更してくれる

src

→コピー元

dest

→コピー先

インストールされていないとのエラー

~省略~

(libselinux-python) aren't installed!

なので、playbookに以下内容を追記している

- hosts: all
  sudo: yes
  tasks:
    - name: add a new user
      user: name=murajun
    - name: install libselinux-python
      yum: name=libselinux-python state=latest

変数を使ってインストールをする

yum: name={{item}} state=latest」と書いて、 その下に「with_items:」というのを作って、 その下に item にインストールするパッケージをリストとして作成

    - name: install php packages
      yum: name={{item}} state=latest
      with_items:
        - php
        - php-devel
        - php-mbstring
        - php-mysql

インストール後の再起動

notify:
        - restart apache
  handlers:
    - name:  restart apache
      service: name=httpd state=restarted

※handlers は最後に1回だけ呼ばれる。 複数箇所からrestart apacheを呼ばれても、 handlers が呼ばれるのは最後の1回のみ。

PHPを動作させる

copyモジュールを使って、hello.phpを作ってweb側に転送する。

- name: copy index.html
  copy: src=./index.html dest=/var/www/html/index.html owner=vagrant

hello.php ファイル内容

<?php

echo "hello from PHP!";

作ったplaybookを動かして結果を確認する。

MySQLの導入

playbookにDBサーバ用のセクションを作る。

- host: db
  sudo: yes
    tasks:
        - name: install mysql
          yum: name=mysql-server state=latest
        - name: start mysql and enabled
            service: name=mysqld state=started enabled=yes

MysqlでDBとユーザ作成

- name: create a database
    mysql_db: name=mydb state=present
- name:  create a user for mydb
    mysql_user: name=dbuser password=dbpassword priv=mydb.*:ALL state=present

python mysqldb がないとのエラーが発生。 playbookにインストールを加える。

- name: install mysql
    yum: name={{item}} state=latest
    with_items:
        - mysql-server
        - MySQL-python

playbook.ymlの内容まとめ

---
- hosts: all
  sudo: yes
  tasks:
    - name: add a new user
      user: name=taguchi
    - name: install libselinux-python
      yum: name=libselinux-python state=latest

- hosts: web
  sudo: yes
  tasks:
    - name: install apache
      yum: name=httpd state=latest
    - name: start apache and enabled
      service: name=httpd state=started enabled=yes
    - name: change owner
      file: dest=/var/www/html owner=vagrant recurse=yes
    - name: copy index.html
      copy: src=./index.html dest=/var/www/html/index.html owner=vagrant
    - name: install php packages
      yum: name={{item}} state=latest
      with_items:
        - php
        - php-devel
        - php-mbstring
        - php-mysql
      notify:
        - restart apache
    - name: copy hello.php
      copy: src=./hello.php dest=/var/www/html/hello.php owner=vagrant
  handlers:
    - name: restart apache
      service: name=httpd state=restarted

- hosts: db
  sudo: yes
  tasks:
    - name: install mysql
      yum: name={{item}} state=latest
      with_items:
        - mysql-server
        - MySQL-python
    - name: start mysql and enabled
      service: name=mysqld state=started enabled=yes
    - name: create a database
      mysql_db: name=mydb state=present
    - name: create a user for mydb
      mysql_user: name=dbuser password=dbpassword priv=mydb.*:ALL state=present

エディタで学ぶ正規表現入門 備忘録

ひと通り実施したのでメモ書き。

https://dotinstall.com/lessons/basic_regexp_v2

正規表現: 文字列の検索パターン

  • 言語やツールで若干の文法の違いがあり

正規表現の文字

検索時に文字そのものを使うこと。メタ文字を使うことで高度な検索パターンを作ることができる

メタ文字

  • 「.」 → 改行を除く任意の1文字を示す

bat cat hat

→".at"とすることで左の単語が出る

This is a pen.

→"."で検索するとすべての文字が出てしまう

"."とすることでリテラル文字(最後のピリオド)だけ検索が可能

→これを エスケープする と呼ぶ

文字種の限定

  • [\d] 数字の0-9を表す
  • [\D] \d以外
  • [\w] a-z、A-Z、0−9、_
  • [\W] \w以外
  • [\s] スペース、タブ、改行など
  • [\S] \s以外 ※大文字は否定形となる

使ってみる

seki, 03-3001-1256
hidaka, 03-3015-3222
hayashi, 03-3017-7889
検索 \d\d-\d\d\d\d-\d\d\d\d
置換 XX-XXXX-XXXX

結果

seki, XX-XXXX-XXXX
hidaka, XX-XXXX-XXXX
hayashi, XX-XXXX-XXXX

hから始まり7文字の名前を伏せ字にする

検索 h\w\w\w\w\w\w
置換 h******

結果

seki, XX-XXXX-XXXX
hidaka, XX-XXXX-XXXX
h******, XX-XXXX-XXXX

量指定子

直前文字の繰り返しを指定

  • {n} n個
  • {min,max} min以上、max以下
  • {min,} min以上まで繰り返し

電話番号の検索は以下になる

検索 \d{2}-\d{4}-\d{4}

携帯番号にもマッチさせる

検索 \d{2,3}-\d{4}-\d{4}

5文字以上の名前をマッチさせる

検索 \w{5,}
  • ? {0,1}という意味
  • + {1,}という意味
  • * {0,}という意味

例 電話番号のハイフン有無両方にマッチさせる

03-3001-1256
0330011256
検索 \d{2}-?\d{4}-?\d{4}

例 文字が入っている場合

TEL03-3001-1256
T0330011256
検索 \w+\d{2}-?\d{4}-?\d{4}

例 すべてのパターンにマッチさせる

03-3001-1256
0330011256
TEL03-3001-1256
T0330011256
検索 \w*\d{2}-?\d{4}-?\d{4}

量指定子の注意点

例 ダブルクォーテーションで囲った文字を検索する

"apple", "apples", "pineapple"

".+" だと最初から最後まで選択された状態になる為、 ? を付ける

検索 ".+?"

位置を指定する アンカー

例 前の通し番号をマッチさせたい

1 taguchi 6
2 fkouji 9
3 seki 8
4 sekiya 7

\d だと末尾の数字もマッチしてしまう 行の先頭を意味する^(キャレット、ハットと読む)を使う

検索 ^\d

例 行の末尾をマッチさせる場合 行の末尾を意味する$(ダラー)を使う

検索 \d$

例 単語のsekiをマッチさせる(sekiyaをマッチさせない)

検索 \bseki\b

選択子というメタ文字

  • abc|123

abc or 124 を選択する

例 以下の2つともマッチさせたい

example.com
example.net
検索 example\.com|example\.net
※これでも可能 example\.(com|net)

文字クラス

以下全てにマッチさせる

bat cat hat
検索 bat|cat|hat
※以下でも可能
(b|c|h)at
[bch]at

大括弧で囲ったものを文字クラスと呼ぶ

  • [abc] a、b、c、の1文字を指す

例 cat 以外にマッチさせる

bat cat hat

[bh]at とすればいいが、単語が増えた場合にマッチしなくなる為 否定を表す ^ を使う

検索 [^c]at

否定の文字を追加する場合は追記する

検索 [^cb]at
  • ^ →[の直後のみ、否定を表す

例 AからFで始まるものを検索したい

A1
Q31
N18
C5
E32
L4
検索 [A-F]\d
※AからFまでの範囲指定
★文字コード表で文字の並びを意識する必要あり

例 番号の区切り記号が異なる場合

03^3015^3222
03-3015-3222
03.3015.3222

^\d{2}[^-.]

→これだと[^が否定を表すので、-か.以外を検索する

リテラル使用で ^\d{2}[^-.] とするも、^-.までという範囲指定でエラーが出る

→^\d{2}[^-.] とすればマッチ可能

. に関してはエスケープ(バックスラッシュをつけなくても)しなくても リテラルとして解釈される

^ は大括弧の後でなければリテラルとして解釈される

最終的な正規表現

^\d{2}[-.^]\d{4}[-.^]\d{4}$

改行とタブ

  • \t タブ
  • \r\n 改行(windows)
  • \r 改行(v9までのmacos)
  • \n 改行(unix、v10以降のmac)
  • \r\n|\r|\n 改行(すべてに対応)

例 空の改行を処理

abc

a
bb
cc


cc
検索 \n+
置換 \n

結果

abc
a
bb
cc
cc

キャプチャ

例 以下のhtmlリンクタグを作る

dotinstall, https://dotinstall.com
google,https://google.com
example, https://example.com

サイトとURLを記憶して置換する際に利用する

検索 .+,\s?.+

記憶する部分を囲う

検索 (.+),\s?(.+)

()で囲った部分は$1、$2で使うことが可能

置換 <a href="$2">$1</a>

結果

<a href="https://dotinstall.com">dotinstall</a>
<a href="https://google.com">google</a>
<a href="https://example.com">example</a>

後方参照

同じ数字が続いた際にマッチさせる

3, 8, 5, 4, 4, 5, 4, 1, 1, 5, 3, 3

検索 (\d),\s\1

覚えさせた値を1にして使う
→後方参照と呼ぶ

AWS 2段階認証(MFA)を導入した

やったことがなかったのでやってみた。

こちらがとても参考になりました。

qiita.com

仕組みはやってみるとわかります。

対象ユーザを作成

IAMのページからサクッと作る。

対象ユーザの認証情報へ。

MFAデバイスの割り当て にある管理をクリック。

MFA デバイス管理ページが出るので、

一番上の仮装MFAデバイスにチェックを入れて続行。

仮装 MFAデバイスの設定ページが出るので、 お持ちのスマホに仮装MFAアプリを入れましょう。

僕は、Google Authenticatorってやつを使いました。

Google Authenticator

Google Authenticator

  • Google LLC
  • ユーティリティ
  • 無料

インストールしたら、先ほどのページある「QRコードの表示」を押して、

導入したアプリで読み取る。

こんな感じで番号が表示されるので、それを設定ページに入力。

※時間経てば別の番号に切り替わるので2つ入れる。

入力後、MFAの割り当てをクリック。

作ったユーザでログインしてみる

アカウント名、パスを入れると「MFA認証」が出るので、

同じようにアプリで番号確認して入力すればログイン完了。

ええやん。

AWSの特徴でUIコロコロ更新変わるのでご了承ください

※2018年11月13日時点の情報