パパエンジニアのアウトプット帳

30歳に突入した1児のパパエンジニアのブログ

AWS Elasticsearch Serviceの監視項目

初めてElasticsearchを実運用するので監視は何を見ればいいのかと思ったのですが、調べてみると公式ドキュメントにあるのでそれを参照するだけです。はい。 https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/cloudwatch-alar…

AWS EBSのボリュームサイズ変更をやった

やったと言っても、クラメソさんの下記のブログの通りにやっただけなんですねどねっていう。 dev.classmethod.jp 今回の対象はAmazonLinux1だったので下記のコマンドを実行した。 # 現状の確認 $ df -h $ lsblk # パーミッション拡張 $ sudo growpart /dev/x…

TypescriptをES2015+なJSにコンパイルするtsconfig.json

下記のようなtsconfig.jsonにしたらES2015+(今回の場合は正しくはES2016なんだけど)なjavascriptにコンパイルできたっぽい。(Typescript入門したてで自信ない moduleのコメントにES6なんてのはないけど、ドキュメントには書いてある。 試しにmoduleをes20…

プライベートなVPC内のEC2にSession Managerで接続する

Internet GatewayすらアタッチされていないVPCにSession Managerで接続するにはVPCエンドポイントを設定すればいいんだろうなとは思っていたが実際にはやったことないので試してみた。 セットアップは公式に書いてある通り大体やればいいのだけど、それでで…

ALBのログをAthenaで検索するために

Athenaのコンソールでテーブル定義ポチポチするの面倒だなーと思ったら公式ドキュメントにそのまま実行できるCREATE TABLEコマンドがあった。 docs.aws.amazon.com DATABASEも分けておきたいので、CREATE DATABASE文も一緒に書いておく。 あとデフォルトだと…

RailsのActiveRecord保存時にtimestamp(created_at,updated_at)が自動更新されないようにする

結論は下記なんだけど。 # Rails5以上 book.save(touch: false) # Rails4以下 ActiveRecord::Base.record_timestamps = false どうも古くからRailsをやっているからかsaveのtouchオプションが全く出てこず、record_timestampsの方でゴニョゴニョしたので下記…

Sorbetを使ってみようとするも速攻エラーで困った

話題のSorbetを使ってみようと、下記のSTEP1から始めたが速攻Verify installationで詰まったという。。 sorbet.org bundle exec srb typecheck -e 'puts "Hello, world!"'がどうしてもエラーになり実行出来ずに??と思っていたが、ツイートしたように解決し…

マネージャーとして自分の役割を考える

現在の会社で初めてマネージャーという役割になったが、役割の範囲が分からないので悶々としていたら下記のツイートを見つけました。 エンジニアリングマネージャーのジョブディスクリプションを定義したいと思ったら、次の画像のどこを求めているのかを明記…

terraformでaws_rds_clusterのcreateに2hかかるとtimeoutする

スナップショットからの復元の場合はクラスター作成に時間がかかるのだが、terraformでやってると2hでポーリングがタイムアウトするという。 aws_rds_cluster.aurora57: Error waiting for RDS Cluster state to be "available": timeout while waiting for …

Serverless Framework for Ruby - 複数関数作成編

下記の続き。今回は複数のファンクションを定義してみようと思う。 masaru-tech.hateblo.jp serverless.ymlの書き方からなんとなく複数ファンクションの書き方は予想がつく。 handerにファイル名.アクション名だろうと。 $ vi serverless.yml --- functions:…

Auroraのスナップショット復元時間はどれくらいかかるのだろうか?

ちょっとスナップショットからAuroraを復元する必要があったので、試しにやってみたら時間がかかった。 なんでこんなに時間かかるのだろう?と調べているとまさにドンピシャな実験をされている方がいた(圧倒的感謝) blog.father.gedow.net だいたいこの検…

TerraformでAurora2を立てる時のengine、engine_versionの指定

TerraformでAurora2のRDSを立てようと思ったらengine_versionになに指定したらいいか分からなかったのでメモ。 create-db-cluster — AWS CLI 1.16.103 Command Reference --engine (string) The name of the database engine to be used for this DB cluster…

Serverless Framework for Rubyをやってみる

AWS LambdaにRubyがきたので、Lambdaをより使う意欲が出てきた。(今まではpythonがほとんどでたまにnodejsで書いていた) そこで、前からLambdaやるならServerless/Apexのどちらかかなーと思っていたのでまずはServerless Frameworkを試してみる。 serverle…

has_oneのbuildはhas_manyと違う

Railsでhas_many :commentsみないな時にbuildするときは@blog.comments.buildだけど、has_oneの場合は.buildはnilエラーになる。 has_oneの場合はbuild_xxxというメソッドがあるので、そちらを使うと言うことを今頃になって知った。 class Blog has_one :sta…

RubyMineでSlim+Vue.jsを利用していると開けなくなるファイルの条件が判明した

環境 macOS High Sierra 10.13.6 RubyMine 2018.2.4 Build #RM-182.4505.55, built on October 8, 2018 今の会社になってからRubyMineも会社で購入してくれるのでバリバリ使っているのですが、ジョインした時からいくつかのslimファイルがRubyMineで開けない…

webpackのProvidePluginとresolve.aliasの使い分け

webpackのProvidePluginとresolve.aliasの使い分けがなんとなく分かったような気がするのでメモ。 vue.jsについて調べていた時に両方の書き方をした記事が引っかかってどっちでやったら良いか分からずモヤモヤしていた。 ProvidePlugin new webpack.ProvideP…

初gemを作成した

Logrageを利用していてActiveJobのログも出力したかったのでgemを作った。 github.com gem作成から公開までをやったのは初めてだったのですごくドキドキだったけど、やったみて良かった。 なんで作ったの? Logrageは下記のようにaction_controllerに対してL…

lambda(python)で定期的にAthenaのMSCK REPAIR TABLEを行う

Athenaを使うようにして、パーティションの更新を都度行うのが面倒だったので自動的に行われるようにした。 下記のようなlambda関数を作成して、Cloudwatchでcron式で定期実行ルールを設定した。 import boto3 client = boto3.client('athena') def lambda_h…

CloudFormationでElasticache for redisの設定をする

CloudFormationで非クラスターモード(マルチAZ)の構成を試してみた。 プライマリーノード:1、リードレプリカ:2の3ノード構成でプライベートなVPCに配置する想定。 最終的には下記の公式ドキュメントのサンプルオペレーションをCloudFormation対応した感じ…

CloudFormationのAWS::EC2::InstanceでNetworkInterfacesとSecurityGroupIdsは一緒に使えない

CloudFormationでEC2のインスタンスを作成しようとした時に下記のエラーが出てハマった。 Network interfaces and an instance-level security groups may not be specified on the same request 解決方法としては下記の通りNetworkInterfacesとSecurityGrou…

ActiveJob with sidekiqでリトライをしないようにする

非同期処理のど定番のsidekiq。 それをActiveJob経由で使っている場合は、sidekiq_optionsが使えないので細かな設定ができない。 今回、sidekiqにするにしたがってリトライは現時点では全てのジョブで不要なので、リトライしないようにしたかった。 結論とし…

Capybara::Poltergeist::StatusFailErrorが出たら

このエラーはローカルで Capybara::Poltergeist::Driver.new(app, js_errors: true, timeout: 1) のようにpoltergeistのtimeoutをすごく短くすると同様のエラーになる。 原因はassets compileに時間がかかっていてタイムアウトしている説らしい。 とりあえず…

Aurora MySQLのmax_connectionsの設定

テスト環境でrailsのdatabase.ymlのpool設定を本番に合わせたいが、Auroraの方のmax_connectionsが45になっていた。 これでは足りないので45より多くしたい。 まず、Auroraのmax_connectionsはインスタンスタイプでデフォルトが決まるような設定がされている…

logrotateを使ってローテションを行う

設定方法&確認 下記などを参考にした。 logrotateでログのローテーションをする - おもしろwebサービス開発日記 logrotate でデフォルト以外のフォーマットで日付ファイル名にしたいとき - Qiita こんな感じで設定してみた。 日次で前の日のログをローテート…

Macで特定のアプリにショートカットを割り当てた

下記のやつをやっただけなんだけど、開発とかでよく使うChrome,Terminal,RubyMineにショートカットを割り当てて一発でそのアプリをアクティブにできるようにした。 qiita.com あとウィンドウ操作系は下記のやつを職場の人に教えてもらったので、早速インスト…

今さらjquery-railsがcsrfトークンをいい感じにしてくれていたことを知った

RailsでPOSTなどするときはCSRFのチェックが行われるのでトークンを送る様にしないといけないのだけど、axiosとかで自分でajaxリクエスト投げる時はちゃんとcsrfトークンを付与しないと行けなくて面倒だなーと思っていた。 その時、そういえばなんでRailsでj…

Cloudfront,S3で307リダイレクトに苦しめられた

完全に下記のヤツなんだけど見つけるまですごくハマった。。。 miyasakura.hatenablog.com S3のcssファイルとかを直接参照するのではなくCloudfrontからのみ参照できる様にクラメソさんの下記の記事を見て色々設定を検証していたんだけど、なぜかcloudfront…

vue.jsでtable内でtemplateを使うとIEで効かない問題

原因は下記のissueで書かれている通りなんだけど https://github.com/vuejs/vue/issues/3028 The browser removes those elements before Vue can get access to them, because following the HTML spec, only thead, tbody and <tr> are allowed as direct chil</tr>…

powerline-shellをインストールする

下記を参考にしつつインストール。 linuxfan.info フォントのインストール git clone https://github.com/powerline/fonts.git --depth=1 cd fonts ./install.sh cd .. rm -rf fonts Macの標準ターミナルのフォント変更は下記がキャプチャ付きでわかりやすい…

zshに入門してみる

仕事でMBP使いになったので、今までbashで使っていたシェルをzshにしてみる。 インストールや設定などは下記を参考にした。 qiita.com これでインストールしたらすでにインストールしていたrbenvやtigが使えなかったので、色々調べてみると下記に当たるっぽ…