サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
akasata.com
趣味コードをRails 4.2から5.0に上げたら、production環境だけconfig.autoload_pathsが効かないという現象に遭遇したので、対策をメモっておきます。 Rails Guideによると、config.eager_loadとconfig.cache_classesがtrueだとconfig.enable_dependency_loadingがfalseになり、autoloadingが無効化されるようです。development環境ではこの2つをfalseにしている事が多いでしょうし、production環境ではtrueにしていることが多いと思うので、この問題に遭遇する人は多いのではないでしょうか。 Configuring Rails Applications http://guides.rubyonrails.org/configuring.html では、co
仕事でeslintとJSCSを使っているのですが、gulpで回しているだけだとlintエラーに素早く対処しにくいので、IDEでも設定してみることにしました。(私が主に使っているのはRubyMineです。) !!!インストール {{{code // JSCSとeslintのインストール npm install jscs -g npm install eslint -g // babelパーサとreact向けプラグインのインストール npm install babel-eslint -g npm install eslint-plugin-react -g }}} !!!IDEの設定 以下のページを参考に設定を行いました。.eslintrcや.jscsrcを見に行くようにしているので、gulpでビルドするときにかかるチェックと同じものがかかります。 -[link https://www.jet
Rails 4.2.0がでていたので、このブログをアップグレードしてみました。 Riding Rails: Rails 4.2: Active Job, Asynchronous Mails, Adequate Record, Web Console, Foreign Keys http://weblog.rubyonrails.org/2014/12/19/Rails-4-2-final/ (1) GemfileのRailsのバージョンを4.2.0にする 4.2に限った話ではありませんが、一度新規アプリを生成してGemfileを見比べたほうがいいでしょう。 例えば4.2ではWeb Consoleのような新機能が追加されていますが、この機能を使うにはGemfileに該当するgemを追記する必要があります。 (2) 以下のコマンドを実施。 {{{code bundle update rake
twitterを眺めていたら以下の様なtumblrが流れてきました。 [b http://reitan.tumblr.com/post/86853243927 スカイリムの「膝に矢を受けてしまってな….」っていうアレ、現実のノルディックの言葉のようで、意味は「結婚した」を意味するらしい。だから衛兵は、本当に膝に矢を受けたのではなく、所帯を持ったから冒険者をやめて衛兵になったってことになるな。知らんかったわ…..] 最初は「へー、北欧のスラングなのか」くらいの感想だったのですが、少し引っかかるものを覚えたのでボチボチとググってみました。 以下の英語の記事を読むと、最初の回答にそのようなことが書かれているのですが、「ソースは?」「オレ、ノルドだけどそんなそんな言い回し使ったことないけど」的な反論が出ていて、ソースがあるものではないようです。 What does the term "I took
Rails 4.1.0が出ていたので、このブログをアップグレードしてみました。 例によって、作業ログを残しておきます。 Riding Rails: Rails 4.1.0: Spring, Variants, Enums, Mailer previews, secrets.yml http://weblog.rubyonrails.org/2014/4/8/Rails-4-1/ (1) GemfileのRailsのバージョンを4.1.0にする (2) 以下のコマンドを実施。 {{{code bundle update rake rails:update }}} -config/routes.rbはスキップ -config/application.rbは特に変化が無かったのでスキップ --(備忘録:4.0.2から4.0.4にアップグレードした時は少し変化があったので修正した記憶があります)
Rails 4.0.2が出ていたので、セキュリティフィックスが含まれているということもあって、動かしているウェブアプリ(このブログ)を4.0.2にアップグレードしました。その際の作業ログをメモっておきます。 Rails 3.2.16 and 4.0.2 have been released! http://weblog.rubyonrails.org/2013/12/3/Rails_3_2_16_and_4_0_2_have_been_released/ (1) GemfileのRailsのバージョンを4.0.2にする (2) 以下のコマンドを実施。 {{{code bundle update rake rails:update }}} 以下、rake rails:updateの作業ログです。 -routes.rbはスキップ -application.rbは特に変化が無かったのでスキップ
RailsのCookieStoreの脆弱性についていくつか報告記事が出ていたので、内容を検討してみました。 Ruby on Railsにcookie保存関連の脆弱性、2000サイトで放置状態 http://www.itmedia.co.jp/enterprise/articles/1311/27/news041.html Rails SessionにCookieStore使った時の問題点 http://oauth.jp/blog/2013/09/26/rails-session-cookie/ 読み合わせていくと、以下のような問題があるようです。 -Cookieの情報が抜かれることによって、セッションをハイジャックされる可能性がある --Rails 2系にはXSS脆弱性からCookieの情報が抜かれる可能性がある --Rails 3/4系でもCookieが盗聴される場合は危険 -セッション
昨日(10/31)、spice lifeの二人の邦明さん(@igaiga555さん、@HolyGrailさん)が主催する勉強会kuniaki.rbに行ってきました。会場は株式会社スマートニュースさん。 まずは、主催のダブル邦明さん、勉強会の運営お疲れさま&ありがとうございました。 また、会場及び飲み物提供の株式会社スマートニュースさん、懇親会の食べ物提供の株式会社spice lifeさん、ありがとうございました。 大変楽しい会でした。会の様子に関しては写真も撮っていたので、後程どなたかがレポートされるかと思います。 私の方はというと、LT枠をいただけたので、以下のお題で発表させていただきました。 mrubyでゲームを書いてみた http://www.slideshare.net/yousukekuroda/akasata-20131031 久々のLTだったので、デモの真っ最中に銅鑼を喰らう
Wheneverを使ってRubyでcronを設定したときのメモを残しておきます。 春ごろにも仕事で使ったので、備忘録として残しておこうと思ったら忘れてしまって、今頃になってまたcronの設定を仕事でやったので、今度こそはと思い、メモっておきます。 Railsプロジェクトなのでそれを前提に記事を書いています。 Wheneverとは? Wheneverは、とかく忘れがちなcronの設定をrubyの構文でわかりやすく記述することができます。 いい加減なプロジェクトだと、本番サーバに何となくcronを設定しただけになって、どこを見ればどういうバッチ処理が走っているのか把握しにくいというような場面によく遭遇しました。 Wheneverはただ単にわかりやすいというだけではなく、設定ファイルをバージョン管理システムに登録しておくことで後から読み返すことが容易になり、設定を忘れてしまった場合にも安心です。
Rails 4.0.0が出ていたので、3.2.12で動かしているウェブアプリ(このブログ)を4.0.0にアップグレードしてみることにしました。 Rails 4.0: Final version released! http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/ (1) GemfileのRailsのバージョンを4.0.0にする coffee-rails、sass-railsも4.0.0にしました。 古いrailtiesに依存していてbundle updateが動かないことがあるためです。 (2) 以下のコマンドを実施。 以下、rake rails:updateの作業ログです。 boot.rbは上書き routes.rbはスキップ application.rb上書き(このアプリに関してはtime_zoneを指定していただけだった
去年末くらいから取り組んでいたのですが、結構いい感じに出来上がったので告知させてください。 スマートフォンのブラウザ上でTシャツをデザインして注文できるウェブサービス「tmix」を開発しました。 サーバーサイドが私でエディタ部分は@dycoonが実装しました。 オリジナルTシャツをWEBでデザイン制作してプリントできる tmix 運営・企画・デザイン:株式会社spice life 開発:株式会社Rmake iOS5.1以降、Android 2.3.3以降対応 スマフォ版Tシャツデザインエディタ ■ 経緯 元々tmixは、2009年に始まったPCブラウザ上でTシャツをデザインして注文できるサービス(flash)でした。 このサービスによって、ブラウザ一つで多くの人が手軽にTシャツを作って楽しめるようになりました。 しかし、時代は変わりスマートフォンからのアクセスが4割を占めるようになり、tm
Rails 開発者こそモデリングすべきだよなぁって唐突に思いました。Rails は DB スキーマさえ作成すれば、そのあとはレールに乗って高速に開発ができるのですが、当たり前の話 Rails は DB スキーマの設計方法は教えてくれません。ましてや、どんなソフトウェアを作ればいいのか教えてくれるわけでもありません。 Rails は「何を作るか決めてからがすごいフレームワーク」なのです。分析工程は開発者自身が自分のやり方で実施しないといけないのです。 何を作るのかを導き出すのはモデリングが得意です。とはいえ、一般的な UML 本に載っているような開発プロセスはどうにも Rails アプリを記述するには重すぎる気がします。(少なくとも私はそう考えています。)往々にして、図解言語というものは、概要をとらえるには適していますが、詳細に書くと途端に見難くなります。実装レベルのシーケンス図などは、見る
最近、八角研究所で技術記事を書いているのですが、私が参加した 2006 年度下期未踏ソフトウェア事業(2006 年 11 月 ~ 2007 年 8 月末まで)の体験談を書いてみました。 未踏の体験談を書こうと思った動機について書きます。 私がお世話になった PM は東工大の千葉先生だったのですが、同じ PM 配下でも他の方は凄腕のエンジニアであり、能力的にも住む世界が異なるという感じでした。そういうエンジニアは目立つので、私は未踏のエンジニアというともの凄い凄腕ばかりを思い浮かべてしまうのですが、未踏ソフトウェア創造事業そのものは、適切な提案ができれば平凡なエンジニアにも門戸が開かれています。 というか、普通のエンジニアこそ挑戦すべき制度です。とはいえ、平凡なエンジニアが未踏ソフトウェア創造事業に飛び込んだらどんなことになるのか不安を覚える人もいることでしょう。そこで、平凡なエンジニアが未
仕事でImageMagickで画像処理をしていたのですが、中間ファイルをいろいろ作る必要があったので、ファイルの掃除も考慮してくれるTempfileを組み合わせて使ってみました。 テスト環境 Ruby 1.9.3 RMagick 2.13.1 ImageMagick 6.7.9-10 Railsを使っているとアップロードされたファイルはTempfileとして扱われる サイズによってはStringIOとして扱われていた時代もあった気がしますが・・・昔の話のはず 画像処理で中間ファイルを作る場合、ごみを残さないTempfileは便利 require 'RMagick' require 'tempfile' # アップロードされたファイル uploaded_file = params[:file] # TempfileからImageを作成する # from_blobはArrayを返すので、shi
このブログにAmazonのリンクを貼りたくなったので、ASINを入力するとAmazonから書籍のサムネイルや著者情報などを抜き出す機能を実装するために、Amazon Product Advertising APIを使ってみることにしました。 ■ インストール gemなので、コマンド一発です。 require 'amazon/ecs' Amazon::Ecs.options = { :associate_tag => '[your associate tag]', :AWS_access_key_id => '[your developer token]', :AWS_secret_key => '[your secret access key]' } # API呼び出し res = Amazon::Ecs.item_lookup("4088767624", :response_group
複数のアプリから参照するライブラリを書きたくなったので、勉強がてらgemを作ってみることにしました。gemテンプレートを生成して、処理を記述して、rspecでテストを書くところまでを書いています。 ■ テンプレートの生成とgemspecの記述 以下でテンプレートの生成ができます。 bundle gem hello-akasata hello-akasata.gemspecの内容です。TODOと書いてあるところを書き換えましょう。 # -*- encoding: utf-8 -*- require File.expand_path('../lib/hello-akasata/version', __FILE__) Gem::Specification.new do |gem| gem.authors = ["akasata"] gem.email = ["*@*.*"] gem.descri
Ruby(Rails)からメールを送信する必要のある仕事があったので、本採用するかは決めていませんが、Amazon SESをaws-sdk-rubyから使う方法について調査してみました。 ■ 準備 1. マネジメントコンソールでEmailアドレスとドメインを登録してください (ドメインの登録の際は、DKIMの設定も出力すると便利です。Easy DKIMという機能なのですが、ドメインの認証が完了した後、マネジメントコンソールで有効化すると、送信メールにDKIM署名を追加してくれます。迷惑メール扱いになる確率がいくらか減るでしょう。) ※ Request Production Accessするまでは、送信元、送信先ともに登録が必要です。 2. aws-sdk-rubyをインストールする gem install aws-sdk ■ 手順 単純なので一気に書きます。 # encoding: utf
仕事でRubyでAmazon S3にアクセスする必要があったので、公式のgemであるaws-sdkを使ってみました。このgemはS3だけではなく、一通りのサービスにアクセスできるようなので、使いこなせばかなり有用かと思われます。 この記事では、S3へのファイルのアップロードを中心に以下の内容を扱っています。 ・インストール ・基本設定 ・ファイルのアップロード ・ファイルの暗号化 ・アクセスコントロールの設定 ■ インストール gem install aws-sdk ■ 基本設定 アクセスキーを指定して、S3のインスタンスを生成します。 require 'aws-sdk' AWS.config( :access_key_id => 'YOUR_ACCESS_KEY_ID', :secret_access_key => 'YOUR_SECRET_ACCESS_KEY') s3 = AWS::
Apacheモジュールのmod-spdyを入れてみました。 SPDYは、HTTPを拡張して単一のセッションで複数リクエストを送受信することができるプロトコルです。 利用にはHTTPS通信可能な環境が必要です。 インストールはRPMが配布されているため、それを使うと楽です。 mod_spdy - Google Developers https://developers.google.com/speed/spdy/mod_spdy/ yum install at wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_x86_64.rpm rpm -U mod-spdy-beta_current_x86_64.rpm インストールすると、Apacheのconf.dディレクトリに設定ファイルができるので、確認すると
以下の脆弱性がアナウンスされていたため、本ブログのRailsのアップグレードを実施しました。 JVNVU#94771138 Ruby on Rails に複数の脆弱性 http://jvn.jp/cert/JVNVU94771138/ (1) GemfileのRailsバージョンを変更 (2) route.rb, environments下のファイルを退避(上書きされるため) (3) 以下のコマンドを実施 bundle update rake rails:update 特にハマるところもなく終了。
以下の記事を読むと、DCIはRubyでは遅いという指摘があったので、移譲で 実装すればいいと思ったので、下記記事のサンプルコードをもとに、 send/method_missing, forwardable, delegateを使ったサンプルを書いて みました。 “DCI”in Ruby is completely broken ※ 上記記事では移譲を使ったアプローチにも言及しているし、改善するには 頑張らないといけないという程度の話と認識しました。 ■ ベンチマークの結果(ruby 1.9.3p194) without dci 3024223.4 (±1.7%) i/s - 15139474 in 5.007655s with dci 768491.0 (±6.6%) i/s - 3833440 in 5.011732s with dci(send) 1586461.1 (±2.1%) i
ソフトウェア開発における「ドッグフードを食べる」とは、ソフトウェアの開発者もしくはその会社が、自分たちが開発したソフトウェアを実際に業務などで使用することです。要は自らを実験台にするわけです。有名なのはマイクロソフトのドッグフードです。どこよりも早く MS 製品を使い始めるわけですから、命がけ(?)ですね。(^^; それゆえあれだけ複雑な製品をそれなりの品質で提供できているともいえます。 ソフトウェアをドッグフードしなければいけない理由より ソフトウェアのドッグフードというのは、開発を継続できる最大の武器だよね。自分がアプリを開発していけるのは、自分で日常的に使ってるから、というのが大きい。バグだってどんどん見つかるし、改善すべき点も見えてくる。自分は使わずに誰かの為に開発しているソフト、なんてものを私は信じない。何年何十年と粘着的に考え続け使い続け、開発するからこそ見えてくる何かがあるは
Kodougu では、SQL の Select における N+1 問題を回避することが重要になってきます。 N+1 問題とは、Tree 状の情報を DB から読み出す際、全レコードの取得に一つ+各レコード分だけ SQL を発行してしまう問題です。出来の良い O/R マッパーを使っているとよく引っかかります。 Kodougu のようなモデリングツールだと、この問題には非常によく出くわします。例えば、図上の要素を全て取得してから、要素に関係する関連の一覧を取得するなどを行うような場合です。Rails の ActiveRecord は気軽に DB にアクセスできてしまいますから。以下のコードでは、要素から出て行く関係線の一覧を取得しています。以下のようなコードを書いてしまうと、図を一枚描くたびに要素数分の SQL が発行されてしまいます。 [code: @elements = Element.f
以下のようなエントリを見つけました。非常に良い問題意識です。そう、GUI プログラミングは泣けるほど面倒くさいのです。 subtech - Pink Blossom Diary - AS3/Flex2 を使い始めて約半年より まずイベントドリブンなプログラミングに慣れてないのが一つで。Flex のイベントや自前イベントやをただ単に投げまくってると、とりあえずは動くけど後からメンテし辛いスパゲッティコードができあがる。このスパゲッティコードは goto 文が乱立するコードよりも酷く、goto だったら割と行き先は把握できるけど、イベントを投げまくってるだけだと、どこでどのオブジェクトがこのイベントを受け取るかが解らない。解りづらい。いちいちソースコード grep ですね、おめでたいですね。あのイベントが発生してから、そのイベントが終了したら発生するイベントが終了したらウィンドウ閉じて、その間
このページを最初にブックマークしてみませんか?
『平凡なエンジニアの独り言』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く