Railsでtrimするたった一つの冴えたやり方

trimしたいという欲求はアプリケーションを作る上で必ず出てくる。 そしてすぐにString#stripではダメだと気付く。全角スペースが削除されないからだ。 で、独自の正規表現を書いたりするんだけど、ActiveSupport内に便利な定数があるのでそれを使うと楽。 s…

Railsで複数DBのmigration

大規模なRailsアプリケーションだったり、旧来のシステムをRailsに置き換えたりしてると、どうしても複数DBを扱いたくなってくる。 その場合は例えば、以下のようなlib/tasks/database_foo.rakeを作成します。 namespace :foo do desc 'Configure the variab…

mail gemで、Content-Type: multipart/mixedとしたいけどならないときの対処法

mail gem使って、multipartメールでかつファイルが添付されたメールを送信したら、 Content-Type: multipart/mixedではなくContent-Type: multipart/alternativeになってしまい、 Thunderbirdでは添付ファイルが認識されず、MacのメーラーではHTML本文が表示…

mail gemで、「Non US-ASCII detected and no charset defined. Defaulting to UTF-8, set your own if this is incorrect.」と出た場合

mail gemを使っていて Non US-ASCII detected and no charset defined. Defaulting to UTF-8, set your own if this is incorrect. の様な警告が出る場合は、 mail.text_part do body 'あああ' content_type 'text/plain; charset=UTF-8' end mail.html_part…

perfectqueueを動かしてみる

Fluentdの作者の古橋さんが作って、Treasure Dataで使われているというメッセージキュー、 perfectqueue。 動かしてみようと思ったら全然ネットに資料がなかったので頑張って動かしてみました。 大きな特徴としてはMySQL上でキューイングシステムを構築する…

MIMEエンコードされたメールのデコード方法

メール本文のデコード まずgmailの"メッセージのソースを表示する"をクリックする。 encodingがbase64でcharsetがUTF-8の場合 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 pbpaste | nkf -mB encodingが7bitで、charsetIS…

telnetからSMTPを使ってメール送信

yahooのメールにtelnetからSMTPを使ってメール送信してみます。 $ telnet smtp.mail.yahoo.co.jp 25 Trying 183.79.29.237... telnet: connect to address 183.79.29.237: Connection refused telnet: Unable to connect to remote host はい。Connection re…

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のソー…