Scala

Apacheのログから、各IPからのアクセス数を集計して、多い順にソートして表示するスクリプト val apacheLog = new File("access.log") /*  * IPアドレスのカウント  */ StringFileInput(apacheLog) { reader =>   var count = 0   // ランダム文字生成器   val it3 = new Iterator] {     def hasNext = reader.r ...

Linux,ubuntu

Apacheのログで、特定の条件を除外した一覧を取得する方法 awk '!/GET \/images/ && !/GET \/javascripts/ && !/GET \/stylesheets/{print($0)}' access.log

Play framework2

Play Framework 2.0系のプロジェクトで、リクエスト毎にログを出力するような設定をした場合、ログファイルをローテートしたくなったりします。 場合によってはlogrotateの設定でやったりもします。 が、今回は、Play Frameworkのログの設定でローテートしてみます。 Play Frameworkは、LogBackというミドルウェアを使用してログを出力します。 で、必要な設定などはすでにPlay Framework自体が設定してくれているので ログを出力するのは Logge ...

Scala

前回、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の場合は、このよう ...

ubuntu

タイトルの通りです。 最近外出先から家のネットワークに繋がらないなぁと思ったら プロバイダでふさがれたっぽいのです。。 ついでにいうと、DoCoMoのスマホでテザリングして接続ということが出来なかったので それも可能にしたい。 で、IPSecとかも考えましたが SSL-VPNという方式でつないだら楽かも?という事で SoftEther VPNというものを使ってみたいと思います。 このSoftEther VPNというのは、ソフトイーサ株式会社という所が作っている PacketiX VPNというソフ ...

Play framework2

リクエストを受けた直後のアクションについては /app/Global.scala というオブジェクトのファイルを作り GlobalSettingsを継承します。 このGlobalSettingsというトレイトには beforeStart onStart onStop onRouteRequest onError onHandlerNotFound onBadRequest というメソッドが定義されていて、それぞれオーバーライドする事でアクションを設定する事が出来ます。 今回は、リクエストが来た時 ...

ubuntu

サーバにSSHとかで接続する際には、ターミナルツールのエンコードをUTF-8とかで 日本語の表示が出来るので問題ないとして ほとんど無いと思いますが。 マシンに直接ログインした時に日本語が表示されません。 そのような時には、 ログイン後に export LANG=C と打ち込むことで、表示言語を標準言語に戻すことが出来るので 文字化けは起きないと思います。 まぁ英語になるので、めんどくさいかもしれませんが。

Play framework2

Play Frameworkはなんか、デフォルトで正常に動いていると、ログが少ないなと思ったりします。 正常に動いたように見えても、データがおかしいのを拾っている場合もあります。 そんな時は、どんなSQLが叩かれているのかと言うのを見たくなります。 Ruby on Railsでは、developmentモードで起動していると常にSQLの実行ログが出たりしますが Play Frameworkでは設定を追加しないと駄目なようです。 設定は application.conf に db関係の設定があると ...

ubuntu

sudo date -s "05/07 23:59 2013"

未分類

target/startで起動するようにした場合、ポートの指定方法は target/start -Dhttp.port=9001 という感じで指定する

VMWare

VMwareの仮想マシンはその仮想マシンが使うディスクを仮想ディスクとしてファイルとして保存されています。 この仮想ディスクのファイルは、VMwarePlayerなどで作った場合、だいたいは最初はごく少量の小さいファイルですが OSをインストールしたり、アプリをインストールしたりすると、それなりに大きなファイルとなってしまいます。 そこで、仮想マシンの中身をダイエットしようと思ってアプリを整理したり圧縮したりしても 仮想ディスクのファイル容量は小さくなっていなかったりします。 これはディスク上で ...

Play framework2,Scala

これは、Play Framework で使用しているAkkaのデフォルト設定による物で、ボディパーサのタイムアウトが1秒に設定されています。 retrieveBodyParserTimeout = 1 second なので、負荷をかけていって、一つのリクエストが1秒を超えたあたりでタイムアウトのエラーが発生してしまいます。 そこで、Akkaの設定を追加してあげれば良いのですが、どこに追加したら良いかというと 決まりは無い感じですが confの中にあるapplication.confとか akka ...

Linux,ubuntu

定期的にファイルを削除したい場合、cronを使用する 例えば、/home/hoge/dataのlogディレクトリが作成されていたら削除するには crontab -e で、cronの設定ファイルを開き 0 1 * * * cd /home/hoge/data; if test -e log; then rmdir -pr log; fi; と設定する これで、一時間おきに/home/hoge/dataにあるlogディレクトリを削除してくれる

Ruby,Scala

Rubyでは .each_with_index |value, index| p "#{index}番目は#{value}です" end というような書き方が出来ます。 これをScalaで書くにはどうするか。 val list = List("one", "two", "three") list.zipWithIndex.foreach{ case(value, index) => println(" ...

Ruby on Rails 3 Tips

RailsからMySQLのテーブルを作成するには Railsのマイグレート機能には、カラム属性としてbinaryがあるのですが、これを指定してもMySQL上ではBLOBというカラム属性になります。 構文としては create_table :user_photos do |t|   t.string :name   t.binary :photo_image end もっと大容量のLONGBLOBが欲しい! という時にはbinaryの所にオプションで:limit => 16.megabyte ...

Scala

Rubyにはrvmがある。 Scalaにはsvmがある。 ということで、svmを入れてみたいと思います。 ここから、cloneかzipファイルをダウンロードします。 展開した所にsvmがあると思うので、ここにパスを通します。 Ubuntuだと~/.profileの最後に export PATH=$PATH:~/svm もう一つ、 export SCALA_HOME=~/.svm/current/rt とかやればOKです。 で、svmと叩いて、ヘルプが出力されれば完了です。 続いて、Scalaのイ ...