susukinosu

エンジニアリングって、何だよ

2019年に買って良かったものをざっくりまとめる

26歳になっちまった。周りがどんどん結婚していくことに焦りを感じるこの頃です。 素直に喜べないときがあるのはどうすればいいのかな。

以下、買って良かったモノの振り返り


電子機器

Pixel 3a

store.google.com

Motorola moto g5からの移行で買った。

購入理由
  • Pixelシリーズが気になる
  • Pixel 3は価格的に手が出ない
  • でもPixelシリーズが気になる
  • なにこれ素人でもめっちゃキレイに写真撮れるじゃんね
  • 3.5mm イヤホンジャックがついている
  • FeliCa対応してる(iDかEdyが使いたかった)
  • 最新のAndroidが手に入る(Android Qをいち早く触れたのは楽しかった)

というのが購入の決め手(ざっくり)。
内部ストレージの容量も僕には多すぎず少なすぎずな感じでちょうど良かった。 

ゲームできるの?

アカとブルーやっててもカクつきは感じないけど、レイストームはボス戦でほぼほぼ処理落ちしちゃう。
バンドリのMVライブでも特に問題なく遊べる程度って言っても伝わるのかどうか。


DJI Osmo Pocket

www.dji.com

このサイズのカメラで4K 60fps映像撮れちゃうのヤバいな? 旅行記録を形として残したかったので、思い切って買ってみた。

買ったばかりなのでまだ使いこなせてはないけれど、
これまでと違った雰囲気の動画を撮れるようになり大変楽しい。
1080p 60fpsでも十分いい動画が撮れるとは思う。

4K映像なんて撮って電池持つの?

思ったよりは電池残量の減りが穏やかだった(体感)。
電池が内蔵されちゃってるのはなんとも……。

熱くならないの?

じんわり温かくはなるものの、触れないくらい熱くなることはまだ体験していない。

あと、Expansion Kitは買っておくべきかもしれない。知らんけど。
(Osmo Pocket Part 6 Controller Wheelがあるだけで操作感が全然違ってくると思う。タッチパネルだとちょっと下を向いてしまったり、微妙なミスが多くなる)


日用品

白元アース ノンスメル清水香

nonsmel-seisuika.jp

余計な香り付けはええねん!!料理やらのニオイを消臭したいだけや!!!
って人におすすめ。取り扱ってる店舗が少ないのが玉に瑕。


家具

IKEA GLADOM

www.ikea.com

ベッドサイドやダイニング、ベランダに置いている便利なサイドテーブル。
ちょっとしたモノを置きたいときにこれがあると捗る。
目覚まし時計や腕時計などを置くのにもいいし、ポトスなどの植物を置くのにも良い。


衣料品

BEAMS

www.beams.co.jp

www.beams.co.jp

陸上競技経験者故に太ももマジ太いマンは、細身のパンツを買うと太ももパッツンパッツンマンになってしまうのだ。
そんな太ももマジ太いマンからして、シルエットも良く窮屈な感じがしないパンツ。
下は履き心地がマジで良かった。探してたのはこの余り具合ですよぉこれこれぇって感じは人生初の体験だった。


また思い出したら追記するかも

Jenkinsで環境毎に処理を分ける(Declarative Pipeline)

Jenkinsの真髄はJenkinsfileにあると思う昨今

ジャバとめちゃ久しぶりに戯れた時、Jenkinsおじでちょっと試したので記録。

(とにかくジャバと戯れたい方はここじゃなくてこっち↓)

arigato-java.download

複数のAWSアカウントがあった場合

pom.xmlに、DEVやらSTGやらの profile を用意しておく。

デプロイ先環境毎によしなにビルドとデプロイさせる

Jenkinsの環境変数に、デプロイ先環境(DEPLOY_TARGET とか)を持たせておく。

pipeline {
  agent any
  stages{
    stage('Build application') {
      steps {
        sh "mvn clean package -P ${DEPLOY_TARGET}"
      }
    }
    stage('Deploy to DEV') {
      when {
        environment name: 'DEPLOY_TARGET', value: 'DEV'
      }
      steps {
        どこかへデプロイする処理(CodeDeployとか)
      }
    }
    stage('Deploy to STG') {
      when {
        environment name: 'DEPLOY_TARGET', value: 'STG'
      }
      steps {
        どこかへデプロイする処理(CodeDeployとか)
      }
    }
  }
}

実際にガッツリ使う際はpost Sectionやenvironment, options Directiveとかも合わせて使うと良い。

Jenkinsfileで書かずフリースタイルジョブを延々と作り続けると、

ある種の職人芸が生まれてしまったりメンテナンスがめんどい場合もあるので、

(読み書きができれば)管理しやすそうなJenkinsfileのほうが、チームでやるなら良さげ。

前までのScripted Pipelineに比べると、

Declarative Pipelineはめちゃ書きやすい気がする(公式も推奨)ので、使うならそちら。

参考

jenkins.io

ubuntu MATE 18.10 on GPD Pocketでbluetoothをデフォルトで無効にする

ubuntu MATE起動時に、bluetoothも勝手に有効になっていたため設定を変えた。

$ systemctl is-enabled bluetooth
enabled

$ sudo systemctl disable bluetooth
Synchronizing state of bluetooth.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable bluetooth
Removed /etc/systemd/system/dbus-org.bluez.service

$ systemctl is-enabled bluetooth
disabled

service nameがbluetoothってまんまだな……

$ systemctl list-unit-files --type=service

実行したらそのまんま書いてあって、謎にほほーっとなってしまった。

どうでもいいけど、macOS触ってる身にはubuntu MATEでPlank使うと何かと捗る(気がする)。

あとChromiumでは指でスクロールできるのに、Firefoxだとできない。

これが結構使い勝手に影響してきて、最近はChromiumばっかり使ってる。

WordPressのWebサイトがデータベース接続確立エラーを出したとき

t2.microでWordPressを動かすつらみ、わかる?

nginx + WordPressとかいうナウくて(?)イケイケ(?)な構成を試した時の覚書
静的ページしか必要ないならStaticPress + S3でいいじゃん……というのはわかった上で

t2.microというところでだいたい察すると思うが、先に結論を言っておくとメモリ枯渇のお話

構成

めちゃくちゃざっくり表すとこんな感じ
f:id:tkscotte:20180420005202p:plain

問題

WordPressで作成したWebサイトを見ていると、ランダムに「データベース接続確立エラー」が発生する

原因

php-fpmの設定がデフォルトのままだった
そのため、php-fpmの子プロセスが増え続け、インスタンスがメモリ枯渇を起こしていた
なお、 t2インスタンスにはswap領域が無い

調査

  • WordPressのDB設定を再確認
  • nginxのログ( access.log および error.log )を確認
  • /var/log/messages を確認

対応

  1. /var/log/messages を確認 -> パイプで繋げて grep -i "Out of memory" と検索すると楽
  2. top コマンド実行後、 Shift + mキーでメモリ使用率が高いプロセスごとにソート -> ここでメモリ使用率が高いサービスのプロセス数確認
  3. ps aux | grep -i "php-fpm" -> 今回の事例ではphp-fpmの子プロセス数が多かったので個数確認

ここでphp-fpmの子プロセスが40個ほどまで増殖していたのが判明

/etc/php-fpm.d/www.conf の設定を変更する

;pm = dynamic
pm = static

;pm.max_children = 50
pm.max_children = 10

あくまで「誰も見ないような規模のWebサイト」の設定なので、状況に合わせて数値を変動させる必要がある

雑感

デフォルトの設定のままにするな
せめて t2.small にしよう

追記
仕事終わりに雑談に付き合ってくれるお姉さんにめぐりあいたい……めぐりあいたくない?

Elastic Beanstalk single containerな環境でのログ問題

引っ越ししたことでメンタルが回復してきたtkscotteです。

Elastic Beanstalk worker tierを最近試す機会があり、そこでちょっとつまづいたところがあったのでとりあえず 雑に 記す。

(何かあっても責任取れないので使うときは注意してね。)

環境

Elastic Beanstalk Worker Tier (single container / docker 17.06.2)

docker container はECR内の docker image で生成

問題点

  • docker container内で生成したアプリケーションログ(独自のやつ)がそのままだと出てこない

-> AWSのコンソールからは設定できない

  • containerのstdoutがjson形式のlogとして溜まり続ける(ローテーションしてくれない)

-> これが一番ヤバい(INFOログをめちゃくちゃ吐くアプリケーションの場合、最悪1週間くらいでディスクフルになるかも)

解決法まとめ

  1. docker host の /var/log/fugafuga を docker container の /var/log/hogehoge にマウントする
  2. docker host にawslogsを入れる
  3. .ebextensionsでよしなに docker host の /opt/elasticbeanstalk/hooks/appdeploy/enact/00.run を上書きする

実践例

docker host の /var/log/fugafuga を docker container の /var/log/hogehoge にマウントする

Dockerrun.aws.jsonの中に "Volumes" の項目があるので、そこに設定を入れる

{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "AWSアカウントID.dkr.ecr.ap-northeast-1.amazonaws.com/リポジトリ名:latest",
    "Update": "true"
  },
  "Volumes": [
    {
      "HostDirectory": "/var/log/hogehoge",
      "ContainerDirectory": "/var/log/fugafuga"
    }
  ]
}

docker host にawslogsを入れる

$ sudo yum install awslogs

ここは他の方法でも良い(後述するけれど、.ebextensionsでもできる)

packages:
  yum:
    awslogs: []

.ebextensionsでよしなに docker host の /opt/elasticbeanstalk/hooks/appdeploy/enact/00.run を上書きする

ソースコード等が入ったデプロイ用ディレクトリのルートに、 .ebextensions という名前でディレクトリを作成

中にpiyopiyo.configみたいなファイルを作り、処理を入れていく

ファイルは content 内の通りに 上書き されるので、十分注意すること

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/enact/00.run":
    mode: "000755"
    owner: root
    group: root
    content: |
~~~~~~↑実際のファイルの中身~~~~~~
      docker run -d --log-opt max-size=100m --log-opt max-file=7 \  
~~~~~~↓実際のファイルの中身~~~~~~

commands:
  "restart_awslogs":
    command: service awslogs restart

環境によっては /etc/awslogs/awslogs.conf の書き換え設定が必要かもしれないので確認が必要。


Elastic Beanstalk、Worker Tier使うのはいいかなーと思うけど、基本的につらみが多い(ヽ´ω`) single containerだとlog driversも選ばせてくれないのも、割とつらかったりする……

誰かのお役に立てれば幸いです。 間違いがあれば指摘もらえるとうれしいです。

参考リンク

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

aws公式のドキュメントには日本語のページもあるけれど、割りと変な訳になってることが多いので、できれば英語版を読みたい

stackoverflow.com


[追記] 私生活の方でいろいろと励ましてくれるお姉さん募集中です。やさしくされたい。

[追記2] はてなブログってmarkdown記法使えたんだってことに今更気づくなど。 ずっとはてな記法使ってた。