by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • May 31 01:19

    xuwei-k on master

    sbt 1.3.12 (compare)

  • May 30 00:16

    xuwei-k on master

    sbt 1.3.11 (compare)

  • May 26 11:58

    xuwei-k on dotty

    (compare)

  • May 25 05:55

    xuwei-k on master

    add dotty build (compare)

  • May 25 04:40

    xuwei-k on dotty

    add dotty build (compare)

  • May 25 04:38

    xuwei-k on master

    prepare dotty (compare)

  • Apr 26 13:43

    xuwei-k on 2.24.0

    (compare)

  • Apr 26 13:43

    xuwei-k on master

    Setting version to 2.24.0 update README.md Setting version to 2.25.0-SNAPS… (compare)

  • Apr 26 13:39

    xuwei-k on master

    update travis-ci badge (compare)

  • Apr 24 11:14

    xuwei-k on master

    Update scala 2.12.10 to 2.12.11… (compare)

  • Apr 24 11:14
    xuwei-k closed #143
  • Apr 24 11:13

    xuwei-k on master

    Update joda-time to 2.10.6 (compare)

  • Apr 24 11:13
    xuwei-k closed #142
  • Apr 24 10:58
    Philippus review_requested #143
  • Apr 24 10:58
    Philippus opened #143
  • Apr 24 10:58
    Philippus review_requested #142
  • Apr 24 10:58
    Philippus opened #142
  • Apr 16 00:24

    xuwei-k on master

    sbt 1.3.10 (compare)

  • Apr 01 02:37

    xuwei-k on master

    sbt 1.3.9 (compare)

  • Mar 29 00:20

    xuwei-k on master

    Update sbt-sonatype to 3.9.2 (compare)

↑どうでしょう?
kazoo0104
@kazoo0104
ありがとうございました!
拝見させていただきます!
NoMaterializer does not provide an ExecutionContext
java.lang.UnsupportedOperationException: NoMaterializer does not provide an ExecutionContext
このエラーで落ちてしまいます。どうしたら良いでしょうか?
chenghsienwen
@chenghsienwen
@kazoo0104 coursera class, scalaの父かMartin さんからの授業
https://www.coursera.org/learn/progfun1
kazoo0104
@kazoo0104
ありがとうございます!コーセラでレクチャーがあったんですね!見てみます!
hiroyuki inoue
@inoh
はじめまして!現場で新しい言語を選定している関係で、最近 Scala に興味があり、勉強をはじめました。
右も左もわからない状態ですが、よろしくお願いいたします。
勉強するにあたって、Webのフレームワークを検討しています。
最初は Play と思っていましたが、APIとしてのみ使用のため Akka http を検討中です。
API を作るときみなさまどのようなフレームワークを使用されてますでしょうか ??
Toshiyuki Takahashi
@tototoshi
Playを使ってます。
hiroyuki inoue
@inoh
ですよねーありがとうございます :bow:
seraph
@seraphr
自分は scalatra ですね。 多分少数派ですが。
hiroyuki inoue
@inoh
Scalatra ですか!
私も ruby 畑からきてるので、それも気になりますね。。。
ちなみに Play 使ってる時に、Akka 意識することとかってありますか?
Toshiyuki Takahashi
@tototoshi
たまにはありますが、ありふれた感じのものを書いてる時にはないですね。
hiroyuki inoue
@inoh
Play にしておいて、あとで Akka にとも思ったりしましたが、一旦 Akka Http で組んでみます!
ご意見いただいたかた、ありがとうございました!
シュレック倉田
@ryuseikurata

初めまして。
AkkaHttpをIntellijで使いたいのですが、コード補完てききますか??現状ずっと試行錯誤してるのですが全然コード補完ができません。
これはIDEの問題なのか、そもそも効かないもので他の人はIntellijではない違うものを使っているのかが知りたく、、、

状態
・intellijのexternal libraryにはakkaのjarファイルが存在している。

Toshiyuki Takahashi
@tototoshi
image.png
特に問題なく出ますね
シュレック倉田
@ryuseikurata
ありがとうございます。
自分のIDEAの問題ですね。
TATSUNO Yasuhiro
@exoego
こちらの scalajp gitter チャンネルを https://scala-lang.org/community/ に掲載してもよろしいですか?
Toshiyuki Takahashi
@tototoshi
良いんじゃないでしょうか(私は管理者というわけではないですが)
シュレック倉田
@ryuseikurata
質問です。
バッチ処理サーバーとAPIサーバーて一般的にインフラで分けるものかなと思っているのですが、(冗長化のため) Akkaで並行処理すれば一つのサーバーでも大丈夫だったりしますか?
kenji yoshida
@xuwei-k
同じサーバーで処理してしまうことのデメリットとメリット比べる話だと思うので、原理的に不可能でない、という意味では大丈夫だと思いますが
(akkaとかScalaに限らなそうな話)
Toshiyuki Takahashi
@tototoshi
どういった処理を想定されているのかはわからないですが、おそらくAkkaだからどうこうということはないかと思います。
シュレック倉田
@ryuseikurata
なるほど。ありがとうございます。
cupper
@cupperservice_twitter
はじめまして。よろしくお願いします。
sonken625
@sonken625

初めまして。
playフレームワークにおいて、Jsonableなクラスというのを定義する抽象クラスまたはtraitを作りたいのですが、PlayにおいてはJsonable=implicitでWritesが定義されているクラスになると思うのですが、mixinするときにWritesをimplicitで定義しなければならないtraitを定義するにはどうすれば良いのでしょうか?

方法が思いつかず・・・

kenji yoshida
@xuwei-k
そもそも普通Writesはコンパニオンオブジェクトに定義するし、Writesを型クラスとして使っていくならJsonable的なtrait作って継承される必要自体が、ほとんどない気がします
それでもどうしてもそういう形式でやりたいなら、やれないこともない気はしますが。ただ普通のfinalでないimplicit defはimplicit消してオーバーライド出来たりするので、そういう細かいことまできっちり制約入れたいなら、少し面倒な実装になりそうですが
あとはコンパニオンでなく普通のclassの親traitに制約付ける方式でいくなら、それ自体にWrites定義させることにこだわらずに def toJson: JsValue みたいにするという方法も
sonken625
@sonken625
Akka Stream内でストリームから来たオブジェクトに対してtoJsonを行うFlowを抽象的に定義したくて、ジェネリクスでJsonableなクラスをSourceにもつといったように強制したいのですが、思想が間違っているのでしょうか・・・?
kenji yoshida
@xuwei-k
(親traitとか作らずに)型クラス的な制約で書けるなら、それがたぶん(Writesも使うなら)1番素直な気がしますが、それが可能かどうかはもう少し具体的に見ないとわからないですね。
Jsonable型か否か?を、実行時に動的に判断するしかない、という状況でなければ型クラス的に書けるとは思います
sonken625
@sonken625

型クラス的に書くならば

trait Converter[T<: Jsonnable]{
def convert(){
Flow[T].map(Json.toJson(_))
}
}

としたいのですが、Jsonnableの実際のコードが思いつかない感じです。この考えは間違っていますか?

すいませんクラス名やメソッド名は今適当に考えたのでだいぶおかしいですが
kenji yoshida
@xuwei-k
全体的に型クラス使っていくならそもそも T <: Jsonnable が違くて、
abstract class Converter[T: Writes]{
  def convert() = {
    Flow[T].map(Json.toJson(_))
  }
}

trait Converter[T]{
  def convert(implicit writes: Writes[A]) = {
    Flow[T].map(Json.toJson(_))
  }
}
こういう感じ(どちらか) になると思います
sonken625
@sonken625

あーなるほど!implicit parameterでimplicitを使用するときに強制するってことですか。
すいません理解しました!

ありがとうございます!!

kenji yoshida
@xuwei-k
はい。ちなみにあまりやらないけど、こういう事もできなくはないです
import play.api.libs.json._

abstract class Jsonable[+A <: Jsonable[A]](implicit writes: Writes[A]) { self: A =>
  def toJson: JsValue = Json.toJson(this)
}

case class Foo(a: Int, b: String) extends Jsonable[Foo]

object Foo {
  implicit val writes: Writes[Foo] = Json.writes[Foo]
}
sonken625
@sonken625
case classに継承するためのJsonableクラス作るとこうなるんですか・・・
再帰的にJsonable作るのは全く思いつきませんでした笑
ありがとうございます!
sonken625
@sonken625

すいません再び質問なのですが、普段ORMを使っていてSlickの使い方に戸惑っております。
例えばメモにタグが多対多でついている時などがあるとして、ORMのような感じでメモモデルがタグモデルを配列で持たせるようにする時のアクションの作り方がわかりません。

一応以下のように行うといい感じのVectorが手に入ったのでマッピングはできることはわかりました。

val action = Memos
.joinLeft(
    MemoTags.join(Tags)
    .on(_.memoId===_.id)
).on(_._1.id===_._1.memoId)
.result

db.run(action)
.map(
result=> {
    result
    .groupBy(_._1)
    .mapValues(
         values=>values.flatMap(_._2.map(_._2)
    ).toSeq
})

ただ、これをAkka Streamで使いたいので
db.runの部分をdb.streamに変えたいのですが、そうすると急に難しくなってしまいました。
何かいい方法はありますでしょうか?

Ryuhei Ishibashi
@rysh
@sonken625 .toResultの前でmapできませんでしたっけ?
あるい.toResult.map(...)
Ryuhei Ishibashi
@rysh
Teratailにコミュニティ機能できてました。Haskellが登録されてるので気になりますが、どんな意味があるんでしょうね。
https://teratail.com/communities
なめらかな関数
@devilune_twitter
初めまして。質問させてください。
見よう見まねでファンクターおよびそのListインスタンスを自作したのですが、下記コードのrun[List, Int, Int](List(1, 2, 3), a => a * 3)という部分で型パラメータ指定を取り除けず悩んでおります。
いちいち指定しないでもList(1, 2, 3)から推論して欲しいと思ったのですが、これは仕方がないのでしょうか?それとも何か実装がおかしいのでしょうか?
(ファンクター云々以前にScalaの基本的な知識不足かなと思ってます...)
object Main {

  trait Functor[F[_]] {
    def fmap[A, B](fa: F[A])(f: A => B): F[B]
  }

  object Functor {

    implicit object ListFunctor extends Functor[List] {
      override def fmap[A, B](fa: List[A])(f: A => B): List[B] = fa.map(f)
    }

  }

  def run[F[_], A, B](fa: F[A], mapping: A => B)(implicit f: Functor[F]): Unit = {
    val result = f.fmap[A, B](fa)(mapping)
    print(result)
  }

  def main(args: Array[String]): Unit = {
    // ここの型パラメータ指定([List, Int, Int])をやめたいが、取り除くとaがNothingと推論されてしまい
    // "Cannot resolve symbol *"というコンパイルエラーになる
    run[List, Int, Int](List(1, 2, 3), a => a * 3)
  }

}
kazchimo
@kazchimo
@devilune_twitter run関数をカリー化すれば推論が通るようになると思います
https://qiita.com/t-yng/items/1fe622911bdd379d37ea  この記事が参考になるかと
なめらかな関数
@devilune_twitter

@kazchimo おおおできました!
カリー化するという発想はなかったです...。
記事も参考になりました。
ありがとうございます!

誰かの参考になることもあるかと思うので修正後のコードを載せておきます。

  def run[F[_], A, B](fa: F[A])(mapping: A => B)(implicit f: Functor[F]): Unit = {
    val result = f.fmap[A, B](fa)(mapping)
    print(result)
  }

  def main(args: Array[String]): Unit = {
    run(List(1, 2, 3))(a => a * 3)
  }