技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Tips

サービスデプロイのテスト環境を作るか

そろそろアプリをデプロイしようかと思ったのだけど、実はここで一つ問題が発生。 いや、問題と言うほどの問題ではないのかもしれないが、どうせ試行錯誤してセキュリティ的にアレな状態がそこそこ長く続きそうなので、仮想環境できちっと手段を確立してから…

Playframework へのアクセス全部に共通のセキュリティヘッダを食わせる

まぁやってる事は ServletFilter とあんまり変わらない。 まずは適当にフィルタを作る。 コピペで安心はモットーです(2.2.1 で確認他のバージョンは知らん) package utils import play.api.mvc.{RequestHeader, Filter} import scala.concurrent.Future impo…

WebStorageの使い方

OfflineStorage が HTML5 に入ってきて、色々できるようになっていて、一番多くのプラットフォームで扱えるのが KVS のようで、これを早速使ってみる。 http://www.html5rocks.com/ja/features/storage 対応できないデバイス?あきらめてくださいw storage =…

ログイン必須のアクション定義

ログインしてなかったら…という処理は皆書く筈。 Playframework 2.1 あたりから Security クラスが出来たらしい。 当然 2.2 でも使えるのでメモ。 package controllers.helpers import play.api.mvc._ import controllers.routes trait LoginController { se…

JavaでActorを書く

並列で処理させるには複数のインスタンスを作る必要がありますが、ざっくりActorを実装。 Actor ってなんぞや? http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%87%E3%83%AB アクターモデルのこと。 Simla とか Smallta…

暗号化を利用する

といってもハッシュを作るだけですが、Playにはcryptが存在する ライブラリは play.api.libs.Crypto で、基本的に下記の定義がある 不可逆(ハッシュ化) sign(String):String sign(String, Array[Byte]):String 可逆 encryptAES(String):String encryptAES(St…

定期実行処理を書く

一番手っ取り早いのは Global の onStart に仕掛ける方法 import play.api.libs.concurrent.Akka import play.api.{Application, GlobalSettings} import scala.concurrent.duration.DurationLong object Global extends GlobalSettings { override def onSt…

TwitterBootstrap3 の概要を見てみる

というかいつ出たのか、、、気づきませんでした。 ということで早速弄ってみる。 URL 現状は厳密にはRC1のようでした。 目についた変更点 mobile first (モバイル優先、わーい) IE8以上必須, Firefox3系はサポート打ち切り CSS は responsive もひとまとめ…

テンプレート配置を階層構造化する

公式では view 直下にしか配置されていないが、複数階層を用意すると、下記の様なクラスにコンパイルされる。 import views.html.path.to.class.templateName

Ubuntu上にPPTPでVPN鯖をざっくり設定

昨日 IPSec over L2TP やろうとして設定で詰まったのでPPTPでごまかした。 こちらは比較的楽でした。 sudo apt-get install pptpd で鯖インストール /etc/ppp/pptpd-options を弄ってネットワークの設定を済ませる ms-dns にルータのIPでも突っ込むだけでも…

Scala で markdown パースするだけではなく、出力を少しいじる

前回 knockoff なるライブラリを紹介したのですが、ちょこっと内容を変更してみます。 knockoff でパースした型というのは def knockoff( source : java.lang.CharSequence ) : Seq[Block] = { なんて定義になっており、要は Block と呼ばれる解析データのシ…

markdown をざっくり

というか正直量が少なすぎて、書くべきか迷った。 まずはいつぞや書いた Play 記事を markdown で用意。 SBT の libraryDependencies に "com.tristanhunt" %% "knockoff" % "0.8.1" 突っ込む 下記のコードを突っ込む import java.io.PrintWriter import sca…

evolutionsを利用する

conf/evolutions/defaults ディレクトリに「(数字).sql」ファイルを配置します。 この数字順に実行されますので、テーブルの作成等をここに記述していきます。 尚、コメントで特別なもので、下記があります。 # --- !Ups # --- !Downs Ups : 新規にアップデ…

RSS フィードを拾う

使うのは ROME というライブラリ。http://mvnrepository.com/artifact/rome/rome/1.0そのまま sbt に "rome" % "rome" % "1.0" としておけば利用可能。 コード的に難しいものはなく、 import com.sun.syndication.io.SyndFeedInput import com.sun.syndicati…

WS API でWeb上のデータを引っ張る

HTTP なコマンドで拾えるものは大概拾える。 import play.api.libs.concurrent.Execution.Implicits._ import play.api.libs.ws.{Response, WS} import scala.util.{Failure, Success} object RssLoader extends Logger { def firstUri(uri:String) = { def …

フォームエラーをまとめて表示したい

Playframework2.1.1 のフォームに値をバインドし、エラーを表示する際に、エラーのみを一覧表示で取得したい場合がある。 その方法を探してみた。(そのまま今作ってるやつ) val userCreateForm = Form( tuple( "account" -> nonEmptyText(6, 16).verifying(M…

Form をテンプレート上でバインドする

先ずはフォームヘルパーを使用します。 @helper.form(action = controllers.routes.User.create, 'id -> "user") { @* any contents here */ }ここにフォームをバインド下HTMLコンポーネントを配置していきます。テンプレートヘルパーは /framework/src/play…

Playプロジェクトを作成する

作成したいディレクトリまで移動し、下記のコマンドを実行する。 play new [プロジェクト名]するとウィザードが起動しますので、順に回答していきます。 この例では、デフォルトディレクトリに Sample というアプリケーションを作成しています。 azalea@samp…

Form を使う

Playframework にはPOSTデータ等を簡単にバリデーション、及びオブジェクトマップする方法があります。先ずは簡単にフォームを使いましょう。 import play.api.data._ import play.api.data.Forms._ val loginForm = Form( tuple( "email" -> text, "passwor…

Playframework の Form メッセージ多言語化

この Forms を使用した時のバリデーションエラーメッセージや、画面にバインドしたときのメッセージを多言語化する場合の方法。 まず、このフォームバリデーション定義がどこにあるかというと、 ディレクトリ : play-2.1.1/framework/src/play/src/main/scal…

Playframework の Akka 設定を読み解く

※ Play2.0.3 時代の古いやつです Playframework は Akka を利用しており、性能に直結してる。 もし、CPUやメモリに余裕があり、更に大規模なアクセスに対応したい場合は、設定を上書きできる。application.conf で設定可能だが、Playのデフォルト設定は下記…

PlayFramework をインストールする

Playframework 2.1.1 をインストールする手順です Java6 以上を入れます(この詳細はJavaの物を探してください) Play Framework - Build Modern & Scalable Web Apps with Java and Scalaから2.1.1 をダウンロードしてきます 適当なディレクトリへ解凍し、パ…

Playframework 2.1.1 ビルドとテストを非同期に

Playframework でそれなりにプロジェクトの規模が大きくなると無視できなくなるのがビルド時間、、、。 特にUT走らせるとなると、ビルド時間が指数関数的に増えること請け合いです。 しかもコンパイル中はソースの改修もなにもできないという、、、、。後IDE…

Playframework2.1.0 で ComboBox のテンプレートを使ってみる

無いかなーと思ってソースコード読んでて見つけた。 公式ドキュメントに乗ってない(まだ書いてないだけ?)のでこれはみんな難儀するだろうなーということで共有。 /play-2.1.0/framework/src/play/src/main/scala/views/helper この辺開くとテンプレートヘ…

Akkaの勉強をやってみる 2

うん、Scala2.10あんま関係ないのでタイトル変更。午後やるって言って遊んじゃった(主にPSO2)ので遅かった。 先ずコードはこんなん import akka.actor.{Props, Actor, ActorSystem} import java.util.Date import org.slf4j.LoggerFactory class SampleActor…

Akkaの勉強をScala2.10で行ってみる

先ずはsbtでscala2.10を設定。 依存とバージョン番号指定すればよさそう organization := "net.azalea" name := "Alla-sample" version := "0.1.0" scalaVersion := "2.10.0" description := "An JSON schema(http://json-schema.org/) access helper for sc…

Akkaの勉強をやってみる3

始めに断わっておきますが英語圏のネイティブじゃないんでドキュメント読んで拾った内容だけど間違ってるかもしれない。 Akka は動作階層を持っているらしい。 ActorRef MessageDispatcher MailBox(with MessageQueue) Actor(プログラマが実際に処理を記述す…

PlayFramework2.0x でファイルをストリーム転送する

実装そのものは大した問題ではなく、http://scala.playframework.org/documentation/2.0.4/ScalaStreamなわけなのだが、どれだけ速度が出るものなのか確認してみる。設定をこう書いて、 directory.path="C:/Users/XXXX/Pictures" directory.extension="jpg"…

VOICEROID+でSkypeメッセージ喋らせる(9)

http://www.white-azalea.net/VoiceroidRunner.zip何気にアップデート+ プラグインの動的ロードに対応SourcePlugins.dll 参照に入れて abstract class SourcePluginBase を継承して作る。 (コンストラクタはデフォルトコンストラクタのみだが、、、) でき…

VOICEROID+でSkypeメッセージ喋らせる(7)

http://www.white-azalea.net/VoiceroidRunner.zipちょこっちょことUpdateしました。 メッセージの再生待ち時間を調整できるようになりました Voiceroid の再生完了をどう待てばいいのか分からなかったので、文字数×N+固定ディレイで計算しています。この係…