【Rails】関連(アソシエーション)をもったモデルを構造化してElasticsearchに格納する

RailsでElasticsearchを使ってみたときのメモ. Articles <-> Authorships <-> Authors という関連を持ったモデル群があるときに,例えば記事(Article)を全文検索したら著者名も検索対象に入れたい. gem ‘elasticsearch-rails’ gem ‘elasticsearch-model’ …

RubyでHashをfreezeして定数にしたけど要素にアクセスできなかった

Hashを定数として扱おうと思ったときのメモ. Rubyの定数はミュータブルなので,freezeメソッドを使ってイミュータブルにしておく必要があります. また,ArrayやHashなどを定数にするときには要素もfreezeしなければ,参照先オブジェクトの変化の影響を受け…

AmazonLinux(EC2) + Selenium + Ruby でスクレイピング

Seleniumを使ってAmazonLinux上でスクレイピングをやってみたときのメモ. nokogiri単体とかだとJavascriptで動的にHTMLが書き換わるようなサイトのスクレイピングはできませんが,SeleniumというWebブラウザ操作の自動化ツールを使えばそのようなスクレイピ…

RubyでHTTPクライアント→HTTPプロキシ→サーバの流れを実装してみる

● HTTPクライアント (httpclient) ● HTTPプロキシ (webrick) ● サーバ (CGI) を書いて、HTTP クライアントからプロキシ経由でリクエストを投げてサーバで受け取る、という一連の流れを実装してみようと思った時のメモ。 受け取り側のサーバだけ CGI を…

【Twitter4J】特定のキーワードを呟いた人をフォローする的なやつ【Bot】

※ 追記 こんな記事を書いておいてアレですが、どうやら Twitter では自動フォローは規約で禁止されているみたいです。 ここに書いてあるようなことを実行してバレると、アカウントを凍結されます。注意。 support.twitter.com ==============…

DebianにNVIDIAのドライバを入れたかったけど躓いた

いくつか躓くポイントがあったのでメモ。 以下、手順を書いていきます。 ドライバのダウンロード これが無ければ始まりません。 以下から自分のビデオカードに対応するドライバを適当な場所にダウンロードします。 NVIDIAドライバダウンロード ドライバのイ…

AWSのAutoScalingの設定をしてみる

AWS

AWS の AutoScaling 機能を使う機会があったので、忘れないうちに設定方法を書いておきます。 AutoScaling とは 負荷に合わせて EC2 インスタンスの数を自動的に増減してくれる機能です。 増減はさせずに、インスタンスの数を常に一定にしておくためだけに利…

重複行をまとめた上でのカウントはGROUP BYではなくDISTINCTを使う

"重複したカラムをまとめた上でのカウント" がしたい時に、いつもどおりGROUP BYを使ったらうまくカウントできませんでした。 そりゃそうだろ、という話ではありますが。 以下、MySQLを使っています。 例えば、ユーザが何かしらの投稿をするサイトがあって、…

Slack上で日程調整するアプリをGASで書いてみる

最近 GAS(Google Apps Script) や SlackBot の存在を知って、慣れていけばいろいろ捗りそうな気がしたので触ってみた時のメモ。 今は特に GAS で自動化したいようなものは無かったので、SlackBot と連携して簡易的な日程調整、出席管理アプリを作って遊んで…

【Elasticache】ELB配下の複数インスタンス間でのセッション管理【Laravel】

AWS の ELB に複数のインスタンスをぶら下げて負荷分散をしようと思った際に、Laravel アプリのセッション管理について考えたメモです。 ユーザにログインさせる必要があるアプリなどは、ELB によって接続先インスタンスを振り分けられたとしても、そのセッ…

Apache2.4 を event MPM + FastCGI で動かす

プロセスベースの並列実行をする prefork を使用していたのですが、省メモリのためにスレッドベースの並列実行をする event へ変更します。 構成としては、Apache2.4 + event + mod_proxy_fcgi + php-fpm です。 それぞれの MPM の特徴に関しては、以前書い…

Apache MPMとはなんぞやという話

Apache のチューニングにあたって MPM について調査したときのメモ、なんとなくの概要。 Webサーバの実装モデルの話 MPMの話に入る前に、Webサーバの基本的な並行処理のモデルをおさえておきます。 Webサーバに同時に接続するクライアントが1人だけであれば…

EC2インスタンスがCloundWatchにカスタムメトリクスの情報を送信してくれなかった

CloudWatchでEC2インスタンスのメモリ情報とかをモニタリングしたいと思った時にうまく行かなかった時のメモ。 流れとしてはこのような感じです。 必要な情報(メモリ使用率とか)をCloudWatchに送信する設定が完了したインスタンスを作成 作成したインスタ…

MySQL バイナリログとInnoDBログについて調べたメモ

MySQLのストレージエンジンであるInnoDBに備わっているバイナリログとInnoDBログについてよく分からなかったので軽く触れてみることにしましたが、ちょっと情報が古いかもしれません。 InnoDBには、InnoDBログとバイナリログが存在します。 InnoDBログはInno…

変数を使ってORDER BYで指定するカラムを動的に変えようとしたらうまくいかなかった

変数に格納されている値によってSQLのORDER BY句を変化させてみよう、と思ったらうまくいかなかったのでその時のメモです。 また、ここではキャッシュの使用ついては考えません。ちなみにLaravelを使ってます。 php - How do I set ORDER BY params using pr…

VagrantとAnsibleでEC2インスタンスを起動してみる

試します。 前提 作業はEC2インスタンスにSSHでログインしてEC2インスタンス上で行う AMIには、作業するインスタンスと立ち上げるインスタンス共にAmazon Linuxを使用する VPC使用、上記2つのインスタンスは同じVPC内の同じサブネット内に作成 立ち上げたイ…

LaravelでS3に画像アップロードしようと思ったらエラー

league/flysystem-aws-s3-v3 を使って画像アップロードしようとしたら怒られました。 クライアント側ではなくサーバ側でアップロード処理を行うケースです。 リソース型でも文字列型でもないオブジェクトをアップロードメソッドに渡してアップロードしようと…

Laravel で定期的にジョブを実行する

タイトルの通りです。 まとめていきます。 Laravel5 のタスクスケジュール Laravel4 まで、コンソールコマンドをスケジュールする場合にはCronエントリーを毎回作成して、SSH接続しサーバ側に追加する必要がありました。 これは、ジョブを追加したい側にとっ…

yum とか rpm とかよくわからなかった

普段何気なく使っている yum や rpm について、何も理解できていなかったのでちょっとだけ概要まとめました。 具体的なコマンドについては書きません。 パッケージ管理システムってなに? パッケージ管理システムは、その名の通りパッケージを管理するシステ…

Composer を使ってみる

Laravel を使って開発を行うにあたり、Composer の使用は避けては通れなかったのでどんなものか調べてみました。 Composerってなに? なんのために使うの? あるソフトウェアを動作させるためには、そのソフトウェアが依存しているライブラリを用意する必要…

CloudFrontでコンテンツ配信 (署名付きCookie)

AWS

先日投稿した記事では署名付きURLでのアクセス制御について書きましたが、今回は署名付きCookieを使用してのアクセス制御についてです。 norikone.hatenablog.com 署名付きURLと署名付きCookieのどっちを使えばいいの? 署名付きURLを使用するケース 個別の…

CloudFrontでコンテンツ配信 (署名付きURL)

AWS

静的コンテンツ配布用にAWSのCloudFrontを試してみました。おさらいしていきます。 署名付きURLを使用します。 署名付きCookieについては以下の記事に書いています。 norikone.hatenablog.com CloudFrontってなに? なんのために使うの? CloudFrontは、Amaz…

ELBのヘルスチェックが通らなかった

AWS

ELBの設定で、インスタンスのステータスがOutOfServiceから動かないという状況に陥った際のメモです。 そもそもヘルスチェックってなに? ロードバランサにぶら下がっているインスタンスの状態をチェックするためのものです。 正常と異常を管理者側で定義し…

AWS入門

AWS

AWSに触れる機会があったので、備忘録がてら簡単にまとめていきます。 AWSって何? AWS(Amazon Web Sercvice)は、Amazonが提供しているクラウドコンピューティングサービスです。AWSを利用すると、アプリケーション公開等のためのインフラが簡単に構築できま…