RedisClusterにslaveを追加したとき、masterとslaveでキーの数が違う

以前、Redis Clusterにslaveを追加したときmasterとslaveでキーの数が違う現象に合いました。 masterの方がキーが多くslaveの方がキーが少ない。 その時はどうしてそんなことになるのか分からなかったのですが、調査して分かりました。 結論は、 slaveを追加…

MySQLで外部キー作成時には外部キー先にindexを定義してかつデータ型と長さを合わせないとエラーになる

MySQLで外部キー作成時以下のエラーがでた。 Cannot add foreign key constraint もちろん外部キー先にはindexを張っている。 で、いろいろググッて迷走した結果、以下のページを見つけた。 http://sigisi.hatenablog.com/entry/20111129 参照カラムと被参照…

switch_pointを使った際に複数モデルの更新にトランザクションをかける

switch_pointを使った際に複数モデルの更新にトランザクションをかけるのに少しハマった。 最初以下のように書いた。 ActiveRecord::Base.transaction do ModelA.with_writable do save! modelB.save! end end ただこれだとrollbackされない。 以下でもダメ…

テストのときだけswitch_pointを無効にしたい

Railsのgemで複数DBを扱うためのswitch_pointというものがあります。 https://github.com/eagletmt/switch_point 簡単にslaveとmasterへのアクセスを切り替えられて便利なのですが、RSpec実行時にはswitch_pointを無効にしたくなります。 FactoryGirlを使っ…

Railsのgretelでproductionだとリンクが2重エスケープされる

Railsにはgretelというパンくずをスマートに管理するためのgemがあります。 https://github.com/lassebunk/gretel このgemを使っていたんですが、テンプレートエンジンにSlimを使用してproductionモードで動かすとリンクが2重エスケープされる現象に遭遇しま…

RedisClusterで"Redis::CommandError: CLUSTERDOWN The cluster is down"エラーが頻発する場合はcluster-node-timeoutが短いせいかも

RedisClusterでアプリケーション側で"Redis::CommandError: CLUSTERDOWN The cluster is down"エラーがでたけど Redisのログにはcluster downのログがはかれていなくて、原因が分からなかった。 あとたまに、Redisのログにごく短い間隔で Cluster state chan…

Redis Clusterへのデータ移行

Redis Clusterはマスターがダウンしたら自動でfailoverしてくれるためとても便利です。 通常の、つまりMaster/Slave構成のRedisから、Redis Clusterへ移行したい人もいるかと思います。 しかし通常のRedisインスタンスからRedis Clusterへデータ移行するには…

Redis Clusterで出来ないこと

Redis Clusterを触ってて、おおお…マジか…と思ったことがいくつかあった。 スレーブからGETできない 通常のRedis のレプリケーションだとスレーブからGETできますが、 Redis Clusterだとできません。マスターからGETしろとメッセージがでます。 これはおそら…

Redis Clusterの操作を簡単にするredis-trib.rbの使い方

Redisは3.0から Redis Cluster というクラスタが組める機能が追加されました。 コマンドにも"cluster"から始まるコマンドが追加されています。 http://redis.io/commands#cluster これらのコマンドを使えばクラスタの操作ができるわけなんですが、 今日はred…

転職しました

5月1日から新しい会社に入りました。 4ヶ月の無職期間とも涙のお別れです。転職活動の顛末は色々あって詳しく書けないけど(詳しくは飲みの席で)、 いい会社に入れたと思う。 システムは最新鋭の技術が使われているというわけではなく、むしろレガシーなんだ…

gvmを入れるとzaw-cdrが動かない

gvmを入れると、zaw-src-cdr:2: closing brace expectedと表示されてzaw-cdrが動かない。。 gvmを入れると .zshrcの最後に #THIS MUST BE AT THE END OF THE FILE FOR GVM TO WORK!!! [[ -s "/Users/xxx/.gvm/bin/gvm-init.sh" ]] && source "/Users/xxx/.gv…

「体系的に学ぶ安全なWebアプリケーションの作り方」を読んだ

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践作者: 徳丸浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2011/03/03メディア: 大型本購入: 119人 クリック: 4,283回この商品を含むブログ (144件) を見る 読もう…

デザインパターンを復習した

増補改訂版Java言語で学ぶデザインパターン入門作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2004/06/19メディア: 大型本購入: 51人 クリック: 762回この商品を含むブログ (400件) を見る エンジニアになって一年目くらいに読んできり、…

SQLアンチパターン読みなおした

SQL

復習のために読みなおした。 SQLアンチパターン作者: Bill Karwin,和田卓人(監訳),和田省二(監訳),児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入: 9人 クリック: 698回この商品を含むブログ (40件) を見る エンジニア歴…

Go言語とTypeScriptでTodoWebアプリを作った

Go言語とTypeScriptの勉強がてらにTodoWebアプリケーションを作った。 Github : https://github.com/akira-kuriyama/todo-app--golang-and-typescript デモ: http://demo.todo.st-marron.info/ 使った技術 サーバーサイド Go言語(フレームワークは使ってな…

Semantic UIのテーマを変える

css

CSSフレームワークとして人気のSemantic UIですが、 ガンガンバージョンアップ中なのかテーマを変える機構はあるのですが、自分でbuildしないといけません。(2015/02/05 現在) 多分、しばらくするともっと簡単にテーマを変えられるようになると思いますが。…

IntelliJ IDEAでgolang pluginを使いたいけどSDKの設定がうまく出来なくてウワーってなっている方へ

Go

golang pluginの正式名称はgo-lang-idea-pluginですが、 version1.0.0からSDKの設定がうまくできない問題が解決されているもよう。(あとGOPATHも自動設定されるようになったっぽい) しかしversion1.0.0はまだリリースされていないので、以下のページから、Go…

UglifyJS2で多段SourceMapを生成する

Minifyされたファイルの元ファイルを見るのにSourceMapは便利です。 しかしAltJS等からJavaScriptへ変換し、そのJavaScriptファイルをMinifyしたとき、 AltJSで書かれた元ファイルをSourceMapを通して見れるかというのが疑問に思ったので調べました。 上記の…

「インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門」を読んだ

インフラ/ネットワークのことが知りたかったので、 「インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門」を読んだ。インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門作者: みやたひろし出版社/メーカー: SBクリエイティ…

アークヒルズライブラリーの会員になった

退職してどこか勉強できる場所が必要になったので前々から気になっていたアークヒルズライブラリーの会員になることにした。 最初は六本木ライブラリーにしようかとおもっていたのだが、 アークヒルズライブラリーは六本木一丁目にありそっちのほうが家から…

退職しました

2014/12/22が最終出社日で、1月末まで有給消化です。 SIerからWeb企業に転職し、約三年間働きました。 あっというまでした。 退職する際はスッ…と去りたかったんですけど、 いざ送別会が開催されたり寄せ書きもらったりすると中々感動的ですね。 別れの場面…

「ツイッター創業物語」読んだ

「ツイッター創業物語」読んだ。ツイッター創業物語 金と権力、友情、そして裏切り作者: ニック・ビルトン,伏見威蕃出版社/メーカー: 日本経済新聞出版社発売日: 2014/04/24メディア: 単行本(ソフトカバー)この商品を含むブログ (9件) を見る以下、ネタバ…

grunt-styleguideを使った時のREADME.mdの置き場所

StyleDoccoを使ってスタイルガイドを出力すると、index.htmlにREADME.mdの内容が反映される。 ただどの場所にあるREADME.mdを読み込むのかよくわからなかったので調べた。 (特にgrunt-styleguideを使った場合によく分からなかったので)まずStyleDoccoのソー…

foremanを使ってUpstart設定ファイルを自動作成する

foremanを使っていると、つい、起動するサービスをどんどん追加してしまう。 そこでforemanを使ってUpstart設定ファイルを自動生成して、 サービスをUpstartで起動するようにしてみよう。まず、以下のようなProcfileがあるとする。 $ cat Procfile apache: /…

村上春樹の「色彩を持たない多崎つくると、彼の巡礼の年」を読んだ

読みかけだった、「色彩を持たない多崎つくると、彼の巡礼の年」を読んだ。 最初はつまんないなと思ったけど、途中から段々面白くなった。 深い傷と向かい合う流れは味わい深くもあるし愛おしくもある。 小説内で解決されないことはあるけれど、人生はそうい…

Vagrant環境にElasticsearchのCluster構成を作る

Vagrant環境に複数台VMを立ち上げて、ElasticsearchのCluster構成を作ってみたので、メモとして残しておく。 設定 Vagrantfileは以下。 VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # boxファイルは適当に用意す…

Fluentdのtypesオプションで型指定をする

Fluentdのin_tail機能を使っていると数値として扱ってほしいのに フィールドの値が文字列になってしまって、 fluent-plugin-typecastを使うことがあると思います。しかし、version 0.10.42以上のFluentdであれば、 in_tailにtypesオプションという型が指定で…

Upstartでプロセスが停止しない?

Upstartを使っていると停止させた時にプロセスが死なないことがあることに気づいた。 それは特定の条件、たぶん2回以上プロセスがforkされると、孫プロセスが死なないというものだ。 ※Linuxの正常な動作っぽいが。たとえば、 start on runlevel [2345] stop …

Upstartを使ってイベントに応じてジョブを起動/停止させてみる

SysVinitのようなinitデーモンの代替となるUpstart。 書いてみたら凄く簡単だった。 initデーモンのスクリプトは書くの面倒だもんね。。Upstartの基本的な書き方は、 ハートビーツさんの、「Upstart を使ってお手軽 daemon 化」の記事を参照するといい。 htt…

MongoDBユーザを作成するChefレシピ

MongoDBユーザを作成するレシピを書こうとしたら手こずった。 公式レシピではユーザを作成するようなリソースはないようだ。 なのでしょうがないくbashリソースを使って作成することにした。 それが以下だ。 bash 'create MongoDB user' do user 'vagrant' g…