読者です 読者をやめる 読者になる 読者になる

KZKY memo

自分用メモ.

怒涛のAkka: Cluster Usage

この記事はAkka2.3.9なので注意. Documentの通りにやる. A Simple Cluster Example Cluster extension を有効にするには次のapplication.confをclass path rootにおく. src/main/resources/においておけばいい applicatoin.conf akka { actor { provider …

Scala: メソッドの関数リテラル化

クラスの中で同じ名前のメソッドを使うが,振る舞いを切り替えたい場合がある. 例えば,文字列によって,同じメソッド名でも振る舞いを違くしたい. もっと具体的にいうと,update_alphaをいうメソッドを呼ぶが,変数ver: Stringに指定されているver, ver1:…

怒涛のAkka: Futures

基本 Futureはakka pgkではなくてscala pkgのしたにある. concurrent操作結果を受け取るときに使用されるがblockingでも使える. Execution Contextが必要 Actor内ならimport context.dispatcherでExecutionContextを使うのも良い Timeoutも必要 Await.resu…

怒涛のAkka: Actor DSL

REPLなどで使う. import akka.actor.ActorDSL._ import akka.actor.ActorSystem implicit val system = ActorSystem("demo") val a = actor(new Act { become { case "hello" ⇒ sender() ! "hi" } }) become/unbecomeやlife-cycle manegementも可能らしい.…

怒涛のAkka: Testing Actor Systems

基本 Synchronous/Asynchronousの2つがあると考えて良い. Synchronous Test メッセージの順序が決定的かつコンカレンシーを考えない場合のテスト基本は import akka.testkit.TestActorRef import scala.concurrent.duration._ import scala.concurrent.Awai…

怒涛のAkka: FSM

基本 Finate State Machineとは 状態 イベント アクション のtripletで構成される.ある状態の時にあるイベントが起こるとあるアクションをとって別状態 に移動するというマシン.ただし,とり得る状態は有限. APIと設計 Event/State/Dataを定義する. Even…

怒涛のAkka: Routing

基本 Router Actorは別のActorにラップして使用する. 理由は,Router ActorはRouter Actorをextendして使うわけではなく,実装も普通のActorとは違うため,別のActorにラップしてsupervised strategyを適用できるようにしたいから. Routerの基本的使い方 W…

怒涛のAkka: Mailboxes

1 acotr: 1mailboxだけれども,BalancingPoolのようにそうでない場合もある. message queueのタイプをアクターに要求 RequiresMessageQueueをタイプ付きでインプリ import akka.dispatch.RequiresMessageQueue import akka.dispatch.BoundedMessageQueueSem…

怒涛のAkka: Dispatchers

Actorを動かしているのがMessageDispatcher. すべてのMessageDispatcherのインプリがExecutorContext. actor systemの作成時にExecutorContextを渡すとそれがシステム全体のDispatcher 指定がなければ,defaultはfork-join-executor.Dispatcherは,mailbox,…

怒涛のAkka: Fault Tolerance

Fault Handling in Practice ここに書いてあるダイアグラムとコードを読むべき.Fault-Toleranceなsystemの設計指針がわかる. Creating a Supervisor Strategy こんな感じでStrategryを定義できる import akka.actor.OneForOneStrategy import akka.actor.S…

怒涛のAkka: Typed Actors

When to use Typed Actors Active Objectの実装. Active Objectはメソッド呼び出しとメソッド実行をそれぞれ別のスレッドにするデザインパターン.インターフェイスを持つクラスをTyped Actorを使うことで非同期にできる. こうするとActorの実装とOO-likeな…

怒涛のAkka: Actor編

Akka Scala DocのActorsを大体読んで噛み砕いたのでそのメモ. Actors 怒涛のAkka: Actors - KZKY memo 怒涛のAkka: Actors - KZKY memo Typed Actors 怒涛のAkka: Typed Actors - KZKY memo 怒涛のAkka: Typed Actors - KZKY memo Fault Tolerance 怒涛のAk…

怒涛のAkka: Actors

Actor API extends Actorしたときに使える APIの説明 context.actorOfでchild actorつくる start/stopのhook etc. Actor Lifecycle 図を見る 登場人物 ActorPath ActorSelection pathの表現 actor refの名前解決 ActorRef incarnationの表現 pathを持つ uid…

Scala Scalatra サンプル

ScalaのWeb Application Fraworkに関して調べ,Scalatraは比較的簡単に書けそうだったので,Scalatraを使って書くWeb Applicationの例をまとめる. 環境 Eclipse Juno Scala IDE 4.0 Scala 2.11 Gradle Build インストール (giter8経由) Javaは入っている前…

Scala Spray

基本 特徴 完全非同期のノンブロッキング Actor/Futureベース ハイパフォーマンス ライトウェイト モジュール テスト可能 モジュール sprayはフレームワークという扱いにはしたくないようで, sprayはライブラリのスイートと言っている. spray-xxxのように…

Scala RESTful Web Server調査

ScalaのWAFはいっぱいあるようだがどれがいいか調べてみた.ここを参考にGoolg Trendで検索.トレンドが皆無なものは除去してトレンドがこんな感じ. 全体トレンド play >> spray > lift >> others 最近 spray > lift 全体ボリューム play > lift >> spray >…

Scala Json4s

ooyalaの記事だと,json4sを推奨していた. パフォーマンス比較もしている. json4s jacksonとnative(pure scala)がある. json4s-jacksonを使う. Producing Json 基本的に (key -> value) ~ (key -> value) のように,kvのペアを結合していく ProcudeJsonSa…

Slick 入門

現時点で,2.1が2系最新だが3系が出た. ここでのまとめは,2.1.0のドキュメントを参考にしている. 基本 Collection-likeにqueryを扱える.普通のSQLも扱える. サポートしてるDB 詳しくはここDriver Capabilities DB2 (via slick-extensions) Derby/JavaDB…

Scala: call-by-name

関数の引数に"f: => R"を入れて,関数内で名前で呼び出す( = call-by-name) こうするとブロック,値を渡せる scala> def foo(f: => String) = {println(f)} scala> foo {val x = "10"; x} scala> foo ("10")

Scala Test

基本 Eclipse + Scala開発で,Testをするのにどうしたらよいのか. 簡単にまとめた. Scala Test Installation Scala IDE for Eclipse この手順は,多分いらない. market placeから取得するScala IDEではScala Test Pluginがはいってないよう help -> insta…

Scala: call-by nameの実行

関数リテラルを受けとる関数で,関数内で関数リテラルに引数を指定せずに,関数リテラルを実行する. val a = 2 val b = 3 val n = 10 def func(n: Int, f: (Int, Int) => Int) = {n * f(_: Int, _:Int)} プレイスホルダーを使う.関数が返ってくるのでそれ…

Scala Breeze 触った

ScalaでLinear Algebraic操作ということでMLlibも使ってるbreezeを触った. 用語 Broadcasting column-wise, row-wiseの操作をしたい時 Linear Algebra Cheating https://github.com/scalanlp/breeze/wiki/Linear-Algebra-Cheat-Sheet を見る 注意する点 カ…

Scala Reflection まとめ

導入 Scala2.10からreflectionの機能が拡張された Scala 型とジェネリックスに対する完全な実行時リフレクション マクロ という形でコンパイル時リフレクション機能 Scala の式を抽象構文木へとレイファイ (reify) する機能 記事からの引用 他の JVM言語同様…

Scala akka 導入

基本 http://www.slideshare.net/sifue/akka-39611889が超わかりやすい. 並列処理の基本とJavaのconcurrent packageとを引き合いにして, Akka Documentをかなり完結にまとめている. Akkaとは 状態とアドレス,MailBoxをもった1つのThreadであるActorを提…

Scala Main

Scala でdef main書かなくてもいいのを知らなかった.いままで object SampleApp { def main(args: Array[String]) = { // processing somthing } } あるべき姿 object SampleApp extends App { // processing somthing

Spark Streaming 4

Fault-tolerance Semanticsについての話.基本はここのまとめ Spark RDDのfalut-tolerence semantics Spark RDDのfalut-tolerence semanticsのおさらい. イミュータブルで決定的に再計算可能で分散化されており,自分の決定的操作の系譜を覚えている. ワー…

Spark Streaming 3

Performance Tuning基本的にはこれのまとめStreamingで気を配るは以下2点 クラスタのリソースを効率的に使用してのデータバッチの処理時間 バッチを受け取ってからすぐ処理できるような適切なバッチサイズ Reducing the Processing Time of each Batch Spar…

Spark Streaming 2

基本的な話のまとめ. 一連のフロー Conf作ってStreamingContextに渡す インプットソースを決める Transformation(s)をして,DStreamに対する出力を決める start, awaitTermination, stopの順で呼ぶ DStream (Discretized Stream) 入ってきたデータをDStream…

Spark Streaming 1

基本的に https://spark.apache.org/docs/latest/streaming-programming-guide.html のまとめ. データソース Kafka Flume HDFS/S3 Kinesis Twitter TCP Akka Actor 処理フロー 入ってきたデータをDStream (Discretized Stream)でバッチに分割してバッチ毎の…

Scala Worksheet

Scala Worksheetってなんだか知らなかった.https://github.com/scala-ide/scala-worksheet/wiki/Getting-Started IDE上でREPLのようなことができて,かつアウトプットが隣に出てくる便利ツール. これで,作ったクラスのIDE上でのDebug/Testが簡単にできる.

GraphX 4

GraphXのPregelAPI関連のまとめ.はじめにGoogleのPregel Paperの概要をまとめてから,GraphXのPregelAPIをまとめる. Pregel Paper 概要 Balk Synchronous Parallelの実装 superstepを1単位としたMessage Passing source verticesからメッセージをdestinat…

GraphX 1

GraphXをさわってみた. GraphXはSparkに内容されているSpark APIの一つ.2014/12/24の時点で0.9なので注意. 基本的に https://spark.apache.org/graphx/ https://spark.apache.org/docs/0.9.0/graphx-programming-guide.html#summary-list-of-operators の…

Scala 20news Wordcount

Scala 20news Wordcountを忘れないようにメモ. val src_path = "/home/kzk/datasets/news20/news20.dat" val s = Source.fromFile(src_path); var map = scala.collection.mutable.Map[String, Long]() for (l <- s.getLines) { val sl = l.split(" ") for …

Scala Listの落とし穴

ScalaでハマったCollectionの話.ScalaのCollectionは基本的にImmutableなのでCollectionに新しい値を追加するときは, 追加したい要素が追加された新しい(newされた)Collectionインスタンスが返ってくると考えたほうがいい.さらに,ScalaのListは一方方向…

Eclipse + Gradle + Scalaで開発

EclipseでGradleを使ってScalaで開発をする時のセットアップと配布物(distribution, fatjar, jar-with-dependency)を作る際のメモ Eclipse との連携基本 Gradle IDE help -> eclipse market place -> gradle ide Groovy Eclipse gradle DSLのサポートをする…

Scala 超まとめメモ

Scalaをある程度理解してきたので,まとめのメモ 基本 switch-case obj match {case obj_1:type if () => processing; case obj_2:type if () => processing; ...} apply obj.method, new ClassNameがobj(), ClassName()で呼び出せる unapply companion obje…

Eclipse + Scala + Spark でjarファイル実行

一般的な開発では, EclipseでScalaを書く Eclipseで実行したりデバッグしたりする 最後にjar化してclusterで実行 というステップをとるのが自然だと思う.sbtでbuildでなく,mavenを使ってbuildしたいというのが普通のjavaプログラマーだと思うが, mavenで…