Ubuntu 13 and Ruby on Rails 4 で、capybara-webkitを使ってcucumberでテスト
必要なパッケージをインストールする たぶん、このインストールだけで済むはず。 sudo apt-get install libqtwebkit-dev xvfb ttf-kochi-mincho-naga10 ttf-kochi-gothic-naga10 入れている物は、 libqtwebkit-dev qtwebkitの開発用モジュール Qtはデスクトップと組込み開発向けのクロスプラットフォームアプリケーション開発フレームワーク らしい xvfb 仮想フレームバッファ ttf-kochi-m ...
Aptana Studio 3でEGitを入れているのに、Aptana Studio 3でインストールされるPortableGitが優先されてしまう問題
Aptana Studio 3でEGitを入れているのに Aptana Studio 3でインストールされるPortableGitが優先されてしまう問題 ですが Preferencesの設定の中にある - という所が二つあると思います。 これは、Aptana Studio 3が内包しているPortable Gitの設定と、EGitの設定が両方出てきているという事です。 で、EGitの方を優先で使いたい場合ですが - のサブオプションがある方がEGitで、サブオプションがない方がPortableG ...
JavaScriptで、imgタグのwidthとオリジナルの画像のwidthを簡単に取得する方法
JavaScriptでフツウに画像サイズを取得する場合 <img src="" width="470" height="99" id="image"> image = $('#image'); image.width // imgタグのwidth => 470 image.height // imgタグのheight => 99 といった感じですが、オリジナルの画像サイズは940x198なので、そのサイズがとりたい。 という場合ですが image = $( ...
いまさらながら、古いJQuery(1.8以前)で$.browser.msieとかやっていた人に贈る
1.8以前のJQueryでは$.browser.msieという判定でIEとそれ以外の処理を分けていたりしました。 これがJQuery1.9以降は出来なくなります。 ということで、JQuery1.9以降でこのような判定に近い事が出来るかどうかを考えてみます。 まず、JQuery1.9では、browserが削除されます。 それにかわって、supportを使えという感じに書かれています。 このsupportというのは、ブラウザ毎に分けるのでは無く、ブラウザが対応している機能ごと、実装ごとに判定しようと ...
ScalaのListのデータをランダムにソートする
import scala.utl.Random val a = List(1,2,3) val b = List(4,5,6) val c = a ::: b val rand = new Random c.sortBy{_ => rand.nextInt(c.size)}.map(println)
Rubyの配列のデータをランダムにソートする
Rubyの配列をランダムにソートするには a = b = (a + b).sort_by{rand} #=>
ページで画像を延滞ロードさせる
画像が多いサイトなどで、ローディング時間が長くて困る、なんて言う時は 画像の延滞ロードです。 最近のAmazonとか、スクロールして画像が表示される時に一瞬ローディング画像が出たりしてるやつです。 このプラグインを使うと、簡単に実現出来ます。 必要な物は、jQuaryとこのプラグイン。 あとは、延滞ロードしたい画像のタグにclass="lazy"を追加します。 $("img.lazy").lazyload(); という処理をどこかに置きます。 以上です。
Play frameworkのpidファイル「RUNNING_PID」ファイルの場所を変える(v2.0.4以降)
Play frameworkを本番環境にデプロイする場合に、PIDファイルを別の場所に置きたいなと思ったりします。 デフォルトだとプロジェクトディレクトリの直下にRUNNING_PIDというファイルが作成されます。 このRUNNING_PIDファイルを作る所のコードを確認すると play.core.server.NettyServer の中にあるようです。 def createServer(applicationPath: File): Option = { // Manage RUNNING_ ...
Rubyで配列からハッシュを作成する
たまに、配列になっているデータをハッシュに変えてしまいたい時があったりします。 data = , , , , ] という感じのデータですね。 これをハッシュにするには、ゴリゴリやる場合 hash_data = {} data.map{|c| hash_data] = c} となりますが、別のやり方として Hashの「self -> Hash」というメソッドを使ってみます。 Rubyのドキュメントにもあるのですが Hashの[]メソッドとして定義されており array_data = Hashという ...
今更ながら、eclipseを日本語化
今更ながら、eclipseを日本語化してみる。 常に最新のeclipseを使うので、日本語化はちょっと・・・と思っていたが、ニュアンスで操作してる場合もあったので、日本語化して意味を理解してみようと思う。 使うのはpreadesというプラグイン。 eclipseの日本語化ではわりと昔から存在していたプラグインです。 で、これはeclipse4.2のプラグインインストールでは入れられないようで zipファイルを解凍して、eclipseディレクトリにファイルをコピーする。 さらに、eclipse.i ...
Ruby(Ruby on Rails)で、使わなくなったメソッドをdepricatedにする
ある程度コードを書いていると、使わなくなったメソッドや、新しいメソッドを作ったので使って欲しくないメソッドなどが多々出てくるかと思います。 コメントで書いておいても、使う人はいるし、既存コードで知らぬ間に使ってあったりもします。 そんな時は depricatedをログに出力するようにしてしまいましょう。 そうすれば、その処理を通るたびにワーニングとしてdepricatedなメッセージが出力されるので 対処しやくすなります。 書き方としては、 def old_method warn " ...
Apacheのログから、各IPからのアクセス数を集計する
Apacheのログから、各IPからのアクセス数を集計して、多い順にソートして表示するスクリプト val apacheLog = new File("access.log") /* * IPアドレスのカウント */ StringFileInput(apacheLog) { reader => var count = 0 // ランダム文字生成器 val it3 = new Iterator] { def hasNext = reader.r ...
Play Framework 2.0でログファイルローテートしてみる
Play Framework 2.0系のプロジェクトで、リクエスト毎にログを出力するような設定をした場合、ログファイルをローテートしたくなったりします。 場合によってはlogrotateの設定でやったりもします。 が、今回は、Play Frameworkのログの設定でローテートしてみます。 Play Frameworkは、LogBackというミドルウェアを使用してログを出力します。 で、必要な設定などはすでにPlay Framework自体が設定してくれているので ログを出力するのは Logge ...
Scalaでちょっとスマートにファイルを読み込んでみる(その2)
前回、Scalaでちょっとスマートにファイルを読み込んでみるで、defで定義した物を、case classに変えてみました。 case class StringFileInput(file: File)(f: BufferedReader => Unit) { val in = new FileInputStream(file) try { f(new BufferedReader(new InputStreamReader(in))) } finally { println( ...
Scalaでアルファベット小・大・数値のみのリストを作る
val keyChars = (('a' to 'z') ++ ('A' to 'Z') ++ ('0' to '9')).toArray
Scalaでちょっとスマートにファイルを読み込んでみる
Scalaだと、テキストファイルなどを開く時は // ファイルを開いてインスタンスを得る val src = Source.fromFile(currentFile) // ファイルの行をforeach src.getLines().foreach(println) // ファイルを閉じる src.close と書いたりしますが なんか、最後にclose書かないと行けないのがスマートじゃ無いなと思ったりします。 なので、ちょっとこの辺をいじってみましょう。 参考として、Rubyの場合は、このよう ...
Play Framework で、リクエストログを出力したい
リクエストを受けた直後のアクションについては /app/Global.scala というオブジェクトのファイルを作り GlobalSettingsを継承します。 このGlobalSettingsというトレイトには beforeStart onStart onStop onRouteRequest onError onHandlerNotFound onBadRequest というメソッドが定義されていて、それぞれオーバーライドする事でアクションを設定する事が出来ます。 今回は、リクエストが来た時 ...
Play Framework で、SQLの実行ログもログに出力させたい場合
Play Frameworkはなんか、デフォルトで正常に動いていると、ログが少ないなと思ったりします。 正常に動いたように見えても、データがおかしいのを拾っている場合もあります。 そんな時は、どんなSQLが叩かれているのかと言うのを見たくなります。 Ruby on Railsでは、developmentモードで起動していると常にSQLの実行ログが出たりしますが Play Frameworkでは設定を追加しないと駄目なようです。 設定は application.conf に db関係の設定があると ...
Play Framework 2.0.2 で負荷をかけるとエラーが出まくる
これは、Play Framework で使用しているAkkaのデフォルト設定による物で、ボディパーサのタイムアウトが1秒に設定されています。 retrieveBodyParserTimeout = 1 second なので、負荷をかけていって、一つのリクエストが1秒を超えたあたりでタイムアウトのエラーが発生してしまいます。 そこで、Akkaの設定を追加してあげれば良いのですが、どこに追加したら良いかというと 決まりは無い感じですが confの中にあるapplication.confとか akka ...
ScalaのArrayなどで、Rubyのeach_with_indexのようなインデックス付きイテレーションを使う
Rubyでは .each_with_index |value, index| p "#{index}番目は#{value}です" end というような書き方が出来ます。 これをScalaで書くにはどうするか。 val list = List("one", "two", "three") list.zipWithIndex.foreach{ case(value, index) => println(" ...