タケユー・ウェブ日報

Webシステム受託会社の業務の中での気づきや調べごとのメモ。

技術

ApplicationLoadBalancer で Basic認証

まとめ リスナールールで Authorization ヘッダーをチェックする Lambda で WWW-Authenticate: Basic を返す アプリケーションの実装なしに簡易認証できて便利 事の起こり ALB をフロントに置いたWebサイト 全体に認証をかけたい サーバー側コード等の変更は…

特定のActionで読み込み専用のレプリカを使う

ActiveRecord::Base.connected_to で包む class PostsController < ApplicationController around_action :set_reading_role, only: %i[index show] def index @posts = Post.all # :reading end def show @post = Post.find(params[:id]) @post.touch # => …

ACMでCAAエラーが発生したとき

まとめ CAAレコードが1つでも指定されている場合、指定にない認証局によるSSLサーバ証明書発行は失敗する CAAレコードに amazon.com が必要 事の起こり AWS Certificate Manager を使い、クライアント指定のドメインのサブドメインで Amazon 発行のSSLサー…

CodePipeline のアクションで AWS Lambda を実行する

まとめ CodePipeline のアクションとして AWS Lambda を実行すれば、いろいろなことができる たとえばRailsのdb:migrateをデプロイ時に自動設定したり、ECSスケジュールタスクを登録したり Lambdaのタスクロールを適切に指定すればAWSアクセスキーなしにAWS …

Windows10標準の機能でVSCode(でなくてもよい)+マイク音声を録画する

まとめ Windows 10 の標準機能 GameBar を使うと、任意のアプリケーションを録画できる マイクからの音声を含めることができる 事の起こり タケユー・ウェブでは、お客様からの技術的な質問に対してお答えする顧問的な業務もあります。 その中でVSCodeを使っ…

EC2 ImageBuilder コンポーネントのデバッグ

まとめ Terminate instance on failure を false にしてもテスト用のインスタンスは殺される S3へのログ保存は絶対に有効にしろ ステップはなるべく小分けに 事の起こり EC2 ImageBuilder でゴールデンAMIを作っている ある日昨日まで成功してたテストをパス…

AMI(EBSスナップショット)の使用量と料金を確認する

まとめ ボリュームサイズとスナップショットの使用量は別 スナップショットの使用量を知るにはコストエクスプローラーを使う EBS:SnapshotUsage (GB-Month) 使用タイプとコスト配分タグを組み合わせる 事の起こり 現在、EC2 ImageBuilder で作成したGolden A…

AmazonLinux2にgcc6をインストール(標準のgcc7と共存させる)

AmazonLinux2 標準の gcc は 7.x ですが、6.xがほしいときもあります。そんなときは Environment modules を使います。

Rais.env.development? みたいな文字列がその値か?真偽値をとれるやつを使いたい

こういうのです。 Rails.env.production? # Rails.env == "production" と同じ ActiveSupport::StringInquirer クラスを使います。 role = ActiveSupport::StringInquirer.new("admin") role.admin? #=> true ActiveSupport::StringInquirer activesupport/l…

Active::Recordのトランザクション復習

user = User.find(2) user.name = 'takeyuweb' user.save! User.transaction do # A user.name = 'takeyuweb(trA)' user.save! User.transaction do # B user.name = 'takeyuweb(trB)' user.save! end User.transaction do # C user.name = 'takeyuweb(trC)'…

RHEL6(CentOS6)のPerlでMTを動かすとき、MTEntriesのcategoryモディファイアで中国語を含むAND/ORを行うとエラー

こんなエラーが。 category属性でエラーがありました: (新闻 OR 其他) AND common 5.8.8 ・・・ エラーなし 5.10.1 ・・・ エラー(MT5.2 / MT6どちらでも) 5.14.2 ・・・ エラーなし というわけで、どうやらPerlのバグっぽい。正規表現(パターンマッチ演算子)でこ…

ERST: Error Record Serialization Table (ERST) support is initialized.

Logwatchを眺めていると --------------------- Kernel Begin ------------------------ WARNING: Kernel Errors Present ERST: Error Record Serializa ...: 1 Time(s) ---------------------- Kernel End ------------------------- Kernel Errors Present…

Object#to_param / Object#to_query(key)

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/conversions.rb https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/to_param.rb https://github.com/rails/rai…

Object#acts_like?(ActiveSupport)

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/acts_like.rb クラスに`acts_like_xxxx?`というメソッドを定義しておくことで、安全にダックタイピングできるようになります。 例えば、ActiveSupportによっ…

IDEA 13.0 から 13.1 にアップデート後、リモートインタプリタで /home/xxxx/.rubymine_helpers/rb/testing/patch/testunit/minitest/unit.rb:24:in `<top (required)>': LoadError (LoadError)

/home/xxxx/.rubymine_helpersを一度削除してから、リモートインタプリタを登録し直す。

yum updateしたら、nokogiriがエラーを吐いてサービスが停止した。

不覚。 クライアントから連絡が来て、障害発覚。 godで動かしていたrails scriptが再起動後起動に失敗していた。 [ec2-user@app-production-001 current]$ sudo service app-god status delayed_job: delayed_job-0: start delayed_job-1: start delayed_job…

MT::Mailで添付ファイル付きメールを送信する

MT::Mail自体には添付ファイル付のメールを組み立てる機能はないが、自分でヘッダーやBodyを作成してパラメータとして渡すことで、送信することはできる。 確認環境 MovableType 6.0 MIME::Entity (MIME-tools) MT5でも動くと思う・・・たぶん・・・ サンプルコー…

IDEA 13 Keymaps: Emacs メモ

Keymaps: Emacs 標準keymapsとEmacsバインドがかぶってるところなどどうなっているのかメモ(随時追加予定) 入力補完 Basic Code Completion Alt + / 標準のCtrl + Spaceは選択開始で使用しているので。 もうちょっと空気を読んで、たとえばnewを入力したと…

ELB + EC2 + nginx 環境でアクセス元IPアドレスによる制限をかける

ELB + EC2 (nginx + unicorn + Rails)環境で運用中のサービスに対して、あるIPアドレスからディレクトリトラバーサルなどの攻撃を受けたので、その対応メモ。 取り急ぎ該当IPアドレスからのアクセスを遮断しようと考えたが、EC2の為、セキュリティグループで…

Data API + Location プラグインでAndroid地図アプリを作ってみる

いまさらですがMovableType Data APIとLocationプラグインのサンプルとして、かんたんなAndroid地図アプリを作成してみました。 機能としては以下のような基本的な検索&更新があります。 地図表示範囲内の記事データを取得してGoogle Maps Android API v2上…

MovableType DataAPIでアクセストークンを取得する例

AndroidアプリでWebAPIにデータをPOSTして結果を取得するにはの成果を利用して、MovableType Data APIでの記事更新等に必要なアクセストークンを取得した。 その他のWebAPIのPOST操作も同様にしてできるはず。 Authentication: authentication 認証情報を渡…

AndroidアプリでWebAPIにデータをPOSTして結果を取得するには

AsyncTaskLoaderでHttpPostリクエスト こちらの記事を参考に作成したLoaderに、POST送信機能を実装してみた。 public class HttpAsyncLoader extends AsyncTaskLoader<String> { private HttpUriRequest request = null; public HttpAsyncLoader(Context context, St</string>…

Zabbixで障害の深刻度によって通知を受け取るメールアドレスを変える

ユーザーのメディア設定で深刻度による絞り込みが可能。 深刻度別に通知先を設定することで、通常は管理用のメールアドレスに送信、緊急時のみ携帯に通知、といったことが簡単に実現できる。

Zabbixで復旧通知を送信

障害発生時だけでなく、復旧時も通知したい アクションの設定で「リカバリメッセージ」にチェックを入れる

Zabbixでメールの送信に失敗する

いろいろある。 そもそもSMTPサーバは生きているのか 対象のサーバでSMTPサーバは動作しているか?メールは送れるか?ファイアーウォールの設定はできているか?など メディアタイプで設定したSMTPサーバ設定等は正しいか "localhost"で設定した場合、SMTPサ…

AndroidアプリでWebAPIからデータを取得するには?

自分用学習メモ。 WebAPIにアクセスしてデータを取得&表示するには HTTP GET Androidアプリではメインスレッドからのネットワーク処理はできない(3.0以上) 非同期スレッドを扱うのにはAsyncTaskLoaderを用いる方法がCoolらしい AsyncTaskLoaderを継承して…

Zabbixで障害通知

障害発生時及び復旧時にメール通知する メディアタイプ 「管理」→「メディアタイプ」で一覧から「Email」を選択してSMTPサーバ等の設定をする。 Zabbixでメールの送信に失敗する 送信先 ユーザーのメールアドレスを設定する。 「管理」→「ユーザー」でユーザ…

Zabbixでリソース監視

さくらのクラウド上のCentOS6にZabbix 2.0を導入した。 Zabbixによるサーバー監視&運用 おおむねこちらの通り。 ただ、データベースの準備の項が抜けている感じなのでこちらを参考に Zabbix Beginner's Guide - Installing and configuring the monitoring s…

IntelliJ IDEA 13/Android Studio でFragmentを使わないアクティビティを作成するには

Creating a Non-Fragment-Layout with Android Studio 0.3.+ If you don't like to work with the Fragment Layout and rather like to use the "old" style, here is what to do: change the Fragment Layout Name into the same as the Layout Name: とい…

MT::Object での GROUP BY 集計関数の利用方法

微妙に痒いところに手が届かないものの、MT::Object->(count|max|avg|sum)_group_byというのがひっそりとある。 使い方は共通してこんなかんじ。hogeのところは便宜読み替えのこと。 my $group_iter = MT::Foo->hoge_group_by( $terms, { %args, group => […