タグ

Scalaに関するtjmtmmnkのブックマーク (11)

  • Scalaにおける細かい最適化のプラクティス - xuwei-k's blog

    列挙順自体はとくに意味ありません。あと「どの最適化がどのくらい速くなるのか?」を詳細に計ったことはないですし、「原理的にこうなってるから(ry」というのを説明するに過ぎません。中には「JITで無意味になるようなどうでもいい細かすぎること」も書いてありますし、最適化のトレードオフとして失うものもあるので、そのあたり自己責任でお願いします。当に最適化が必要とされる場合は、以下のものを無闇に実行するよりまず計測したほうがいいのは、言うまでもありません。*1 1. private[this]をつかえ scalaのvalやvarは、private[this]にしたときのみ、直接のフィールドアクセスになります(それ以外ではメソッド呼び出し)。シングルトンのobjectの場合も同様です。private[this]をつけられる場合はできるだけつけましょう 2. なんでもかんでもListをつかうな 最初の

    Scalaにおける細かい最適化のプラクティス - xuwei-k's blog
  • scalaでcase classをエイリアスする - $shibayu36->blog;

    Scalaではクラスをエイリアスしたいときはtypeというキーワードを利用する。 class Hoge() { def print(): Unit = { println("hoge") } } type Fuga = Hoge val fuga = new Fuga() fuga.print() しかしこのやり方だけではcase classのエイリアスは出来ない。以下のコードを実行するとエラーが出力される。 case class Hoge() { def print(): Unit = { println("hoge") } } type Fuga = Hoge val fuga = Fuga() fuga.print() // error: not found: value Fuga // val fuga = Fuga() // ^ // one error found case c

    scalaでcase classをエイリアスする - $shibayu36->blog;
  • トレイト | Scala研修テキスト

  • objectとcase class · GitBook

    tjmtmmnk
    tjmtmmnk 2019/12/30
    objectの用途
  • A collection of Scala ‘flatMap’ examples | alvinalexander.com

  • Scalaの記号みたいな奴らなんなの - Qiita

    これなんなの? 「Scalaの記号はググラビリティ低すぎて調べようがないし全くわからん…せめて定義位置とか実装がわかれば…」という自分のためのメモ、いわゆるチラシの裏です。 とりあえずScalaの記号については、ソースコードをダウンロードして下記の正規表現でgrepしました。 基、わからない記号見つけたら定義元に飛んで 1、ソースを読んでます。 2 IDEで定義元に飛べない記号(_*など)は、言語仕様の可能性が高いので言語仕様を読みましょう。 記号の使用例がわからない場合、そのライブラリのテストコードを読むと良いケースがあります。 急に()が出てきた場合、カリー化された引数かapply()です。 apply()の場合、一時的に書き換えてショートカットキーで飛ぶか、検索してapply()の定義を確認します。 記号がぐぐれない問題に関しては、 https://t.co/qEY3k2cRIM

    Scalaの記号みたいな奴らなんなの - Qiita
  • Scalaではじめる末尾再帰 - Qiita

    今回は、Scalaの末尾再帰について書いていきたいと思います。大学では型理論とかを学んだわけじゃないので割とそこらへんは雑です。 最近、再帰ロジックをプロダクションコードに導入するのが個人的に流行っているので、こういうテーマを選択しました。Scalaに関する末尾再帰の記事はそこそこ既に出揃っており、Scalaとして特に目新しいことは全く無いと思います。各セクションの下部、もしくは途中に参考資料のリンクを張っています。また、最下部に、全ての参考資料をまとめています。 なぜ再帰で書くべきか ツリーのような複雑な再帰データ構造は、メモリ効率の良い配列実装が一般的になっています。しかし人間からしてみると、配列内部の状態と実際に構築されているツリーのイメージを結びつけることが困難です。 そのためメモリ要件に特に厳しい制約が存在しない場合は、人間のイメージをできる限りそのまま表現したオブジェクトチェー

    Scalaではじめる末尾再帰 - Qiita
  • ZOZOSUITのサーバーをPythonからScalaで実装し直してコストを下げた話 - Qiita

    TL;DR ZOZOSUITで計測したデータを扱うサーバーは、元々Pythonで実装していた それをScalaで実装し直した 結果、レイテンシにおけるパフォーマンスが向上した さらに、リソース面におけるサーバーコストも削減できた 技術選定における背景 ここ数年、機械学習の文脈やサービスの立ち上げ期のプロトタイプ実装のため、Webアプリケーションの分野においてもPythonが選択されることは当によく聞かれるようになりました。 事実、難しいビジネス要求や急な仕様変更への柔軟な対応においては、比較的実装コストの低い言語やフレームワークを選択するメリットはとても大きいと言えます。 利用できるすべての変数やメソッドの型をプログラムの実行中に決めなければならない場合、ランタイムのオーバーヘッドは甚大になります。静的型付け言語では、そのオーバーヘッドが不要になります。PythonPerlRuby

    ZOZOSUITのサーバーをPythonからScalaで実装し直してコストを下げた話 - Qiita
  • Scala的な考え方 - Scalaがとっつきにくいと思っている人へ - ( ꒪⌓꒪) ゆるよろ日記

    Javaな人から見ると、「Scalaって難しい」ってイメージがありますね。俺も最初はそう思ってました。今もですけど。 で、考えてみたんですが、何が難しいって考え方・イディオムになじみがないのが原因かと思ったんです。 ここでは、俺が今までScalaをやってきて得た考え方を紹介します。「Scalaをちょっとやってみたんだけど、とっつきにくくて…」と思われている方は、ぜひご一読ください。 参考資料: Scala入門 - Scalaで書きはじめたJava使い向け - Scala勉強会@東北 Dropbox - 404 神は言われた。「リストあれ。」 Lisperは、リストをどう作るかをまず考えるらしいです。適切なリストが出来たら、プログラムはもうできたも同然だと。同じ考え方は、Scalaでも通用すると思います。 大まかに、こんな流れで考えてます。(リストは最初から与えられることもあるでしょう) 「

    Scala的な考え方 - Scalaがとっつきにくいと思っている人へ - ( ꒪⌓꒪) ゆるよろ日記
    tjmtmmnk
    tjmtmmnk 2019/06/02
    めっちゃ良い
  • (解説) はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化 - Hatena Developer Blog

    こんにちは、シニアアプリケーションエンジニアのid:taraoです。この記事ははてなデベロッパーアドベントカレンダー2015の10日目です。昨日はid:tapir320によるはてなの組織開発についてでした。 先月開催されたWebDB Forum 2015で、「はてなブックマークにおけるアクセス制御: 半環構造に基づくモデル化」というタイトルの発表をしました。 はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化 from Lintaro Ina 発表資料には多くの方に興味をもっていただけたようですが、わかりにくい点も多かったのではないでしょうか。スポンサー企業としての技術報告セッションとはいえ学術会議での発表なので理論面と独自の工夫点にフォーカスした内容であったり、口頭での発表のしかたに大きく依存したスライドの遷移方法になっているので、この資料だけで細かいところまで理解しよ

  • Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 - Qiita

    DIを使わない状態ではUserRepositoryというインターフェースが定義されているのにもかかわらず、UserServiceはUserRepositoryImplの参照も持っていました。 これではせっかくインターフェースを分離した意味がありません。 UserServiceがUserRepositoryインターフェースだけを参照(依存)するようにすれば、具体的な実装であるUserRepositoryImplの変更に影響されることはありません。 この問題を解決するのがDIの目的です。 それではDIのインジェクタを加えて、上記のクラス図を修正しましょう。 謎のインジェクタの登場によりUserServiceからUserRepositoryImplへの参照がなくなりました。 おそらくインジェクタは何らかの手段でサービスであるUserRepositoryImpl(Dependency)をクライアン

    Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 - Qiita
  • 1