技術をかじる猫

適当に気になった技術や言語を流すブログ。

Tips

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+固定ディレイで計算しています。この係…

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

多分Blogで直接どうこうするのはこれが最後な気がする。http://www.white-azalea.net/VoiceroidRunner.zip細々とバグフィックス 置換定義が削除できない問題の修正 2 キャラ同時に走らせると片方が喋らなくなったりする問題の修正 上手くSkypeのメッセージを…

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

需要がどんだけあるか不明だけど取り敢えず晒してみる。http://www.white-azalea.net/VocaloidRunner.zipファイル名がVOICEROIDじゃなくてVocaloidなのはご愛嬌。 SkypeとVoiceroid(結月ゆかりor東北ずん子)が起動している状態で起動し、チェックボックス入…

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

それぞれのVOICEROIDをスレッド化して、相互に干渉なしで喋れるようActor作った。 namespace net.azworks.actor { abstract class ActorBase<T> { public T State { get; set; } public void SendMessage(T message) { this.allMessages.Enqueue(message); lock</t>…

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

さて、今度はSkypeだ。 Skype 自体にCOMインターフェースがあるようだがSkype4COMというライブラリもあるらしい。 勝手知ったるC#で使うなら使っといたほうがそらええわってことでSkype4COMを弄ってみる。 使いにくければCOM叩くよ。メッセージの受信 namesp…

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

無事東北ずん子もしゃべるものを作成。 喋ってる間に次の命令来たらどう対処すんべ、、、、ずん子はUIのステータスチャックで拾えるけど、結月ゆかりはどうしようかな using System; using System.Collections.Generic; using System.Linq; using System.Tex…

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

昨日の続き。SendMessage 先までは問題なくできたのだが、送るメッセージの問題で、273(WM_COMMAND)でコピペしかできなかった件。 キーボードイベントで操作しようとすると、ウィンドウをアクティブ化した上でイベント送信せざるを得ない、、、、とはいえ、…

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

注意:Windows8 以降だと、他のウィンドウへのアタッチはセキュリティモデルの仕様上できない場合があります。うん。棒読みちゃんにこれ入れればいいのは知っているのですが、Clipboardが何かあるたびに上書きされてしまって嫌だったので、自作してみる。 で…

Play でどうでもいいところでハマる箇所

Playframework http://www.playframework.org を使っているのだが、異様なまでにハマる箇所を一つ。 キャッシュが残って悪さする問題。特にテンプレート周りで良く発生する。コンパイル時にどうにも前回キャッシュが削除されず残って、CompileErrorを連発す…

Play2.0 で一部ハマったのでメモ

忘れると色々ヒーヒー言いそうなのでメモ WS.irl("http://localhost/sample/xxxx").withHeader("Content-Type" -> "text/plain").post(byteArray) でバイナリを自身のサービスにファイルを送りつけてもコントローラ側で val sendedBytes = sample.body.asRaw…

Actor と RemoteActor

アクターは基本的にはメッセージの受信に対してどう動くかという、Objective-CやSmalltalk的なオブジェクトの振る舞いをするスレッド。 内部的には、メッセージを「receive」で受け取り、処理をする。処理中に他のメッセージが来れば、そのまま「receive」可…