タグ

scalaに関するt10471のブックマーク (46)

  • Airframe: Lightweight Building Blocks for Scala

    Airframe extends capability of Scala to the next level. Have you ever used slf4 (logging), Jackson (JSON-based serialization), Guice (dependency injection)? Airframe has redesigned these Java-based ecosystem as airframe-log, airframe-codec, and airframe-di in order to maximize the power of Scala. Scala 3 is also fully supported, as well as Scala.js and Scala Native. Airframe RPC supports seamless

    Airframe: Lightweight Building Blocks for Scala
    t10471
    t10471 2018/10/12
  • Scalaの関数型ライブラリCats触ってみた - フジーコの日記

    年末年始にScalaの関数型ライブラリCats触ってみたので、Catsについて社内の大新年勉強会で発表した。 資料 speakerdeck.com 参考文献 番 — Scala with Cats - Underscore Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 所感 category(圏)が名前の由来になっているだけあって、参考文献には圏論に沿った説明が記述されていた。理解するのが難しかった。ただ、その後改めてカラーコップ(Scalazの)を読むと、PARTIIIの10章「モノイド」、11章「モナド」、12章「アプリカティブファンクとトラバーサブルファンクタ」の章の理解が深まった。 CatsのEvalモナドが個人的には興味深かった。特にEvalモナドによるスタックセーフな遅延演算をサポートにより、スタックオーバーフローを

    Scalaの関数型ライブラリCats触ってみた - フジーコの日記
  • Scalaで型クラスを使おう! - Qiita

    はじめに 某記事で、 implicitsなんて呼ばないで、各機能ごとに適切な名称で呼ぼう。あと、重要なのは型クラスだからそれだけ注意すればOK、という趣旨のことを書きましたが、どうやって使えばいいかは投げっぱなしだったのでその導入編だけでも書こうかと思います。この記事での目的は簡単で、 Scalaのコレクションのsumメソッド(とproductメソッド)を自作の有理数クラスに適用できるようにしよう ということになります。実際のところ、sumメソッドを整数リストに対して呼び出す、たとえば でも、型クラスを「使って」はいるのですが、実際に型クラスに新しいインスタンスを追加していないので、使った実感がわかないと思います。そこで、有理数クラスです。実装が比較的簡単である上に、四則演算への対応が容易という点でこれを選ぶことにしました。 まずは、有理数クラス(Rational)の実装です。ここは、

    Scalaで型クラスを使おう! - Qiita
    t10471
    t10471 2017/05/20
  • Typeclassopediaに足りない型クラス - xuwei-k's blog

    挙げようと思えばいくらでも挙げられるとは思うけれど、とりあえず自分が思ったものをいくつか挙げておきます。 Typeclassopediaという型クラスを色々紹介した有名な素晴らしいやつがあるのですが、それ少し古いし、もうちょっと紹介してもいいような型クラスが触れられてないぞ?というのを前から思っていたので、それを簡単に書いてみるという話。 https://wiki.haskell.org/Typeclassopedia http://snak.tdiary.net/20091020.html 今回挙げてないのが重要でない、これ以外知らない、というわけではなく、あくまでもなんとなくな基準です。 (好評だったら、続編を書く? or 他の人が書いてくれてもいい?) 以前こんなtweetしたけど、まぁやってくれそうな人いないし、言い出しっぺの法則ということで。 「typeclassopediaに載

    Typeclassopediaに足りない型クラス - xuwei-k's blog
  • 今から始める Lens/Prism

    2016 年の http://summit.scala-kansai.org/ で発表した資料です。Read less

    今から始める Lens/Prism
  • 多相な関数の定義から学ぶ、型クラスデザインパターン

    201607.md #多相な関数の定義から学ぶ、型クラスデザインパターン twitter: @OE_uia github: taisukeoe ##多相な関数 複数の異なる型に対して適用可能な関数 どの型に対して定義されているか、静的に決定できる(定義されてない型の値を渡すとコンパイルエラーになる) Int => Int String => String Double => String Seq[Int] => Seq[Int] ##多相な関数のメリット 複数の異なる型に対する操作を一般化したまま変換,合成などを行える DSLの構築 Heterogeneousなコレクションを簡便に操作できる #一番単純な出発点としての、メソッドの引数オーバーロード def overlap(i:Int):Int = i*i def overlap(s:String):String = s.foldLeft(

    多相な関数の定義から学ぶ、型クラスデザインパターン
    t10471
    t10471 2016/07/18
  • Extensible Effects in Scala

    Extensible Effects in Scala Freer Monads, More Extensible Effects で紹介される Eff モナドを Scala を使って解説します。 Contents Free Monad Freer Monad Efficient Freer Eff Monad (Extensible Freer) Free Monad Free はパラメータに Functor のインスタンスを与えることでモナドになるデータ型です。 Functor の定義から見ていきましょう。 trait Functor[F[_]] { def map[A, B](fa: F[A])(f: A => B): F[B] } 計算コンテナ F に対して map という関数が定義されます。 map は F[A] の計算値 A に関数 A => B を適用し F[B] を得ます。

    t10471
    t10471 2016/05/30
  • Play2を使うならAkkaも使っちゃおうぜな話 - Opt Technologies Magazine

    並行処理してますか?(挨拶) ScalaのWebフレームワークとして有名なPlay Frameworkには、標準でメッセージパッシング型並行処理ライブラリであるAkkaが添付されていて、Akkaのアクターを簡単に導入できるようになっています。 どんなものなのか、是非とも使ってみたいと思いませんか。思いますよね。思いましょう。 そういうわけで、Play FrameworkとAkkaを使って簡単なWebアプリケーションを作ってみましたので、解説する事にします。 注意 当記事内容につきまして、サンプル例がAkkaの用例としてはアンチパターンであるという旨のご指摘を頂きました。 「状態を持たない並行処理に対してAkka Actorを使うのはアンチパターン」という要旨です。 これに関しまして次回の記事で、当記事のサンプルがアンチパターンである事の解説を書きたいと思います。 目次 注意 目次 対象読者

    Play2を使うならAkkaも使っちゃおうぜな話 - Opt Technologies Magazine
    t10471
    t10471 2016/04/11
  • demo/Akka.md at master · worksap-ate/demo · GitHub

    http://akka.io/ Akka は、アクターモデルをベースにした並行処理のための Scala ライブラリです。 アクターモデル アクターモデルとは、並行・分散システムのモデルです。 近年、多数のマシンが協力して動くシステムが一般的になってきましたが、アクターモデルはそのようなシステムを考える際に使いやすいモデルになっています。 アクターモデルは、大雑把に言うと以下の特徴を持っています。 アクターと呼ばれる計算主体が、非同期にメッセージをやり取りすることで計算をすすめます アクター同士で共有する状態はありません メッセージを送るときは、チャネルをではなく**アクターのID(アドレス)**を指定してメッセージを送ります 逆に言うと、アドレスを知らないアクターにはメッセージを送れません アクターはメッセージを受け取って、そのメッセージに応じて以下の3つの動作を起こします。この、「メッセ

    demo/Akka.md at master · worksap-ate/demo · GitHub
  • MonadicでReactiveなSlick3.xを使う - Qiita

    MonadicでReactiveだと言われているSlick3.xを使ってみる。 記事時点での最新はは3.1.1となっている。 公式のサンプルだとh2を使っていたが、今回はローカルに立てたMySQLを使用する。 Getting Started — Slick 3.1.1 documentation 準備 事前にuserテーブルを作っておく Create Table: CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 insert into user values (1, "alice", "alice@e

    MonadicでReactiveなSlick3.xを使う - Qiita
    t10471
    t10471 2016/04/05
  • DDD: ImmutableなEntityの実装方法〜ステートソーシングなEntityとイベントソーシングなEntity〜 - Qiita

    DDD: ImmutableなEntityの実装方法〜ステートソーシングなEntityとイベントソーシングなEntity〜ScalaDDDドメイン駆動設計 ドメイン駆動設計では、Value ObjectはImmutable、EntityはMutableという雰囲気があるように思うが、ScalaでDDDを実践しようとなると、EntityがMutableでは逆に実装が複雑になることが多い。僕がDDDを始めた2013年頃は、ImmutableなEntityの実装に関する情報がほとんどなく実装方法を試行錯誤していた。その中で、個人的にImmutable Entityの実装方法が落ち着いてきたので、僕がどのように実装しているかについて紹介したい。 なお、ここで紹介するScalaコードはGitHubのsuin/scala-playgroundで公開しているので、コンパイル・実行など試してみたい場合はご

    DDD: ImmutableなEntityの実装方法〜ステートソーシングなEntityとイベントソーシングなEntity〜 - Qiita
  • akkaにおけるActorの生成時の注意事項 - xuwei-k's blog

    akkaをある程度使いこなしてる人なら、当たり前?かもしれませんが、その細かい仕組みがわかりずらいと思うので説明を書いてみます。(versionによってそれほど変わらないはずですが)これを書いてる時点の最新の akka 2.3.4、Scala 2.11.2 としておきます。 akkaの公式ドキュメントに以下の様な例と説明があります http://doc.akka.io/docs/akka/2.3.4/scala/actors.html import akka.actor.Props val props1 = Props[MyActor] val props2 = Props(new ActorWithArgs("arg")) // careful, see below val props3 = Props(classOf[ActorWithArgs], "arg") そこの「careful

    akkaにおけるActorの生成時の注意事項 - xuwei-k's blog
  • ExecutionContextとblockingについて調べたメモ [scala] - だいたいよくわからないブログ

    この記事の結論 globalなExecutionContextではブロックする処理をblockingで包むとスレッド数が勝手に増えるから空きスレッドが無くて実行できないといったことを防げる。 ExecutionContext.fromExecutorService(new ForkJoinPool(100)) で生成されるThreadはBlockContextトレイトを継承してないのでblockingを使ってもスレッド数を増やした方が良いという情報がスケジューラに伝わらない。 akkaのdispatcherをExecutionContextとして使うとBlockContext付きのForkJoinPoolを簡単に作れる。 ExecutionContext.fromExecutorServiceでもForkJoinPoolのコンストラクタに自前定義したThreadFactoryを渡すようにす

    ExecutionContextとblockingについて調べたメモ [scala] - だいたいよくわからないブログ
  • ForkJoinPoolとblocking

    以下は、いつも通り、私のざっくりな調査内容をまとめるものだから、もし、内容に誤りがあったら報告してほしい。(想像も含むので) 前提目的としては、akkaベースのウェブフレームワーク(sprayかakka-http)で、複数のリクエストを同時に受けた時にサーバのCPUをフル活用するためにはどうすることである。 フル活用とは、あるスレッドがIOなどで寝た場合、他のタスクにCPUを割り当てて、CPUを使う処理を常に全力で実行することである。こうすると、最善では、結果的に全タスクを処理する時間は、全計算を行った時間まで短縮出来る。こういうテクニックは、GPUにおいてメモリ転送と計算をオーバーラップさせてメモリ転送を償却する形でも用いられる。 さて、ウェブフレームワークは何らかのポートにbindして、そこからリクエストを捌く。akkaでは、この時のスレッドの割当方法をdispatcherなりExec

    ForkJoinPoolとblocking
    t10471
    t10471 2016/03/13
  • Scala ExecutionContextって何 / Futureはスレッド立ち上げじゃないよ - ましめも

    こういう人は、あとあと処理が詰まったり理解できない挙動が起きたりして困るので注意。 よくわからないけどコンパイル時に怒られるので import scala.concurrent.ExecutionContext.Implicits.global を書いている Future.apply は 「スレッドを立ち上げて非同期に実行する」と理解している 特に何も考えず Future 内で Thread.sleep をしている ExecutionContextとは Future#mapやFuture.applyにimplicitパラメータとして要求される*1ExecutionContextって何なのか? 何か渡さないといけないからとりあえず import scala.concurrent.ExecutionContext.Implicits.global と書いている人もいるんじゃないだろうか。 Ex

    Scala ExecutionContextって何 / Futureはスレッド立ち上げじゃないよ - ましめも
    t10471
    t10471 2016/03/09
  • Akka HTTP

    Tableau Developers Club Season2 /*TableauAPIすべて*/ Tableau Server REST API Wo... 1/24 Tableau Developers Clubで実施したREST APIを活用したワークショップの資料です。 REST APIとは何か? 実際に試してみるためのコードが記載されています。 作成者はシリウスデータサイエンス小今井さんとTableauの飯村さんです。

    Akka HTTP
  • 1.Spark1.5でSparkStreaming開発 [こと始め編] - Qiita

    紹介 この投稿は、Advent Calendar 2015 .. NextGen DistributedComputing system をキッカケにして初めています! Advent Calendar1日目の記事です。 方針について Spark、SparkStreamingが初めての方でも順を追っていただければスムーズに理解できるよう書きたいと思います。 開発はScalaベースです。Spark処理を書くためにScalaガッツり使いこなせないと分からないわけではないですが、 基的なことは必要かと思います。 Scala基礎を習得するためには下記リンク先を参照することをお勧めいたします。 https://gist.github.com/scova0731/2c405ea55488d804b366 SparkStreamingの紹介 SparkStreamingとは Sparkコアの拡張モジュー

    1.Spark1.5でSparkStreaming開発 [こと始め編] - Qiita
  • Scala の省略ルール早覚え · GitHub

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Scala の省略ルール早覚え · GitHub
    t10471
    t10471 2015/09/06
  • sbt をインタラクティブに使うときに覚えておくと便利なこと - Qiita

    sbt をインタラクティブに使うときに知っておくと便利なんじゃないでしょうか。 その1. console sbt を立ち上げて console と打つと scala の REPL が起動します。Scala を別途インストールする必要がなく便利です。 REPLから sbt に戻るのは :q で。 > console [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info] Done updating. [info] Starting scala interpreter... [info] Welcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_67). Type in expressions to have them evaluat

    sbt をインタラクティブに使うときに覚えておくと便利なこと - Qiita
    t10471
    t10471 2015/05/20
  • Future と Promise

    Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn, Vojin Jovanovic 著 Eugene Yokota 訳 概要 Future は並列に実行される複数の演算を取り扱うのに便利な方法を提供する。それは効率的でノンブロッキングな方法だ。 大まかな考え方はシンプルなもので、Future はまだ存在しない計算結果に対するプレースホルダのようなものだ。 一般的に、Future の結果は並行に計算され後で集計することができる。 このように並行なタスクを合成することで、より速く、非同期で、ノンブロッキングな並列コードとなることが多い。 デフォルトでは、Future も Promise もノンブロッキングであり、典型的なブロッキング演算の代わりにコールバックを使う。 コールバックの使用を

    t10471
    t10471 2015/04/27