タグ

scalaに関するKinjouJのブックマーク (30)

  • 負荷試験ツールgatlingで徐々に負荷をあげて一定に達したらキープ - Qiita

    概要 gatlingという負荷試験ツールの結果が見栄え良いとのことで試してみた。 どんなものか ScalaなDSLでテストケースを記載するjmeter的なもの。QuickstartとAdvanced Tutorialを実施するとどういうものかわかるかと。 DSLの独特な所としてはUserとScenarioという概念があり、実際に人がブラウザを操作してる感覚+高級言語で表現できるは良いかと。 例えば「hoge.comの/hoge見た後/fugaを見る」というScenarioのUserを10分間に100User分負荷を発生、という感じで、ユーザがブラウザを操作する振る舞いをDSLにいい感じに表現できる。 実際にはwebアプリは複数のページ遷移で1アクションなこともあるので、このように書けると便利そうね、と。 導入 以下、linuxの場合。 jdk落としてきてインストール Gatling Pro

    負荷試験ツールgatlingで徐々に負荷をあげて一定に達したらキープ - Qiita
  • Scalaのspecializedアノテーションを使いこなすための基礎知識 - Maverick's tech blog

    こんにちは、アドテクエンジニアーのトデス子です。ふだんスカラを使っているのでスカラの話をします。 ScalaJavaと同様、型パラメータを使用したコードは内部的にObject型を通して使用されます。 そのため、IntやDoubleといったプリミティブ型を指定した場合は boxing/unboxingのオーバーヘッドが発生します。 このオーバヘッドは多くの場合大した問題になりませんが、数値計算などの特定領域においては パフォーマンスのボトルネックになるケースがあります。 Scalaにおいては、@specializedアノテーションを使用することでこのオーバヘッドを軽減する機構があります。 この記事では、この機構の詳細と使用時の注意点などについて紹介します。 はじめに @specializedアノテーションについては公式なドキュメントがかなり乏しく、また将来的に挙動が変更される可能性がありま

    Scalaのspecializedアノテーションを使いこなすための基礎知識 - Maverick's tech blog
  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
  • Scala implicit修飾子 まとめ - Qiita

    Scalaには他の言語ではなかなか見かけない,謎の修飾子「implicit」が存在します。 僕もScala始めたばかりの時には,意味がわからず困惑しました。ぐぐっても個々の使い方は載っていても,まとまって解説しているところはあまりなく・・・。 そこで,多少なりScalaをかじった僕がまとめておこうと思います。 Scalaレベルはポケモンでいうと,まだ20〜30Lvくらいなので,ご了承ください。 1. implicitの概要 implicitとは「暗黙的な」という意味です。逆の意味をもつ単語はexplicit。 C#を使っている人は,これらの言葉を聞いたことはあるでしょう。 (しかし,ScalaのそれとC#のそれでは,全く意味は異なりますが・・・。) implicitには様々な使い方があります。その中で全てに共通するのは,「暗黙的に何かをしてくれる」という点です。 これだけ聞くと,「それって

    Scala implicit修飾子 まとめ - 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
  • Scalaで後置ifを作る - rinfieldのなにか

    ターゲット 制御構文っぽいものを作ってみたいScala中級者 「Scalaに後置ifないのかよm9(^Д^)プギャー」っていう他言語の人 後置if Rubyでは後置if/unlessが多用されますよね。たぶん。 例えばこんな感じで。 # Rubyのコード puts('Hello') if 1 == 1 # Helloを表示して => nil puts('Hello') if 1 == 0 # 何もせず => nil 確かに"do [処理] if [条件]"のように英語のように読めるため可読性がいいので私も好きです。 (個人的にunlessはなぜか混乱してしまうのでキライです) こんなんScalaで使えないかなーと思ってたんですけど Scalaでは組み込み構文としては後置if/unlessはないんですねー… Javaならここで潔く諦めるところですが、 Scalaであればその柔軟性の高さか

    Scalaで後置ifを作る - rinfieldのなにか
  • Stackless Scala

    スタックレスScala Stackless Scala With Free Monadsを参考にTrampolineやそれを抽象化したFreeを紹介する記事です Abstract Scalaコンパイラの末尾再帰除去は自分自身を呼び出すメソッドのみに限定されます 今回はどのような再帰呼び出しでもスタックを消費しないようにする方法を紹介します Introduction StackOverflowError Scalaでプログラムを書いていると何回か経験があるでしょう val Zero = BigInt(0) val One = BigInt(1) lazy val factorial: BigInt => BigInt = { case Zero | One => One case n => n * factorial(n - 1) } scala> factorial(10000) java

  • Vue.jsに入門しようと思ってScala.jsでVue.jsのサンプル書いてみた。 - 日頃の行い

    会社のインターンでVue.jsを利用するんですが、去年も触ったけど、やっぱりちゃんとサンプルを動かしてみないといけないなと思って写経してみました。 サンプルはこちらのページを利用しました。 日語ページ去年はなかった気がしますが、今は日語で読めてとても楽です。 jp.vuejs.org ところで、最近altJSというのが流行ってますね。 TypeScriptやCoffeeScript色々ありますね。 せっかくなので今回はScala.jsを使いました。 Scala.jsとは -> http://www.scala-js.org/ やっぱScalaは型があっていいですよね。 コンパイル時にコーヒー飲めるしすばらしい。 概要 この後の流れ 1. Vue.jsをScala.jsで使うための準備 2. マークダウンエディタサンプル写経 3. マークダウンエディタサンプルを動かしてみる 利用したライ

    Vue.jsに入門しようと思ってScala.jsでVue.jsのサンプル書いてみた。 - 日頃の行い
  • 【Scala】flatMap は怖くない! | DevelopersIO

    ここで注意が必要なのは「型引数をとる全てのクラス(全ての総称型) ≠ 文脈付きの値」ということです。型引数をとり、文脈付きの値とはいえないクラスも存在します。 たとえば SeqFactory[A] は、 Seq のサブクラス A を生成するファクトリであり、 文脈付きの値ではありません。もっと身近な例を上げると、わたし達が普段よく目にしている(であろう) Provider[A] や Publisher[A] というインターフェイスも、それぞれ「Aを提供するもの」「Aを発行するもの」という意味であり、Aという値を修飾しているわけではないので文脈付きの値とは呼びません。 文脈付きの値を返す関数 親友検索を考える さて、文脈付きの値がどのようなものかわかってきたところで、実際に文脈付きの値を生成する関数を作ってみましょう。 …などと大げさに言ってみましたが、そんなもの、今までだってたくさん作って

    【Scala】flatMap は怖くない! | DevelopersIO
  • Dependency InjectionとDSL

    Dead-Simple Dependency Injection in Scalaという発表で、Dependency Injection(依存の注入)をReaderモナドなどを用いて行うという技術があった。下記がその発表である。 この記事ではまず、Dependency Injectionについての説明と、Readerモナドについての説明を行い、次にReaderモナドを使ったDependency Injectionについて述べて、Freeモナドを用いて小さなDSLを作るアプローチを紹介する。 この記事はモナドやDependency Injectionなどに関する前提知識がなくてもある程度読めるように意図しているが、Scalaの文法的な知識を前提としている。また、もし説明が不足している点や文章の意図が分かりにくい部分があれば、気軽にコメントなどで指摘して欲しい。 注意: 記事の中にあるコードは

    Dependency InjectionとDSL
  • Free-ScalikeJDBC から見る合成可能なDSLの作り方

    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

    Free-ScalikeJDBC から見る合成可能なDSLの作り方
  • Scalaで型レベル”だけ”でクイックソート | POSTD

    Scalaの型システムが先進的であることは、皆さんもご存じのことかと思います。この投稿では、Scalaの型システムのみを使った クイックソート アルゴリズムの実装方法をご紹介したいと思います。なお、ここで紹介するデモの完全なコードは こちら をご覧ください。 自然数 まずは準備から。ソートアルゴリズムを実装するには、ソートする対象が必要ですよね。ここでは自然数を用います。もちろん、Scalaの型システムには利用可能な自然数はありません。そんなわけで、全ての自然数の型を作る必要があります。 型を無限に作るというのは、恐らく時間の浪費になるでしょうから、ここはもう少し賢い手を考えます。そう、数学を使いましょう。 ペアノの公理 ペアノの公理とは、自然数を形式的に定義するためのシンプルな方法のことです。 0 は特別なものとする。 0 は自然数である。 全ての自然数 n には、それに続くもう1つ別の

    Scalaで型レベル”だけ”でクイックソート | POSTD
  • Skinny-ORMでJOINを簡単に使おう! 使い方まとめ | つかびーの技術日記

  • インポート宣言 - A Memorandum

    Scala では JavaAPI がシームレスに使えます。このとき、Java と同じようにインポート宣言を行います。Scala でのインポート宣言は Java のインポート宣言より少し強力です。 import java.text.DateFormat // Javaと同様のインポート宣言 import java.text.DateFormat._ // Javaでいう*インポート(Scalaでは*が識別子) import java.util.{Date, Locale} // 同じパッケージの複数クラスをインポート 別名インポート 以下のようにインポートすることで、別名を付けてインポートできます。 import java.util.{Date => DateTime} 除外インポート 以下の例は、MapとSetを除く、mutableパッケージのインポートになります。 import s

    インポート宣言 - A Memorandum
  • Scalaを用いて分散IDワーカを実装する | チャットワーククリエーターズブログ

    お久しぶりです。かとじゅん(@j5ik2o)です。さて、僕は、ChatWorkに入社しても、相変わらず Scala や DDD を実践しているわけですが、今回は少し毛色が違う話をしたいと思います。先日、ChatWork Advent Calendar 2014 15日目の記事で、安達くんが、ID生成器の話を書いてくれたので、せっかくなので、ChatWork Advent Calendar 2014 23日目の記事として、Scala版も説明してみようかと思います。 PHPでID生成器を実装してみました | チャットワーククリエーターズブログ DBのシーケンスによるID生成ウェブサービスでは、時系列データを扱うことはよくありますが、タイムスタンプベースでユニークなIDを利用したいことがあります。方法論はいくつかありますが、お手軽なID生成といえば、DBのシーケンスを使ったものです。しかしながら

    Scalaを用いて分散IDワーカを実装する | チャットワーククリエーターズブログ
  • Scalaのマクロの基礎。評価タイミング、評価回数と、健全性 - xuwei-k's blog

    Scalaのマクロというより、一般的にマクロに共通する基であり重要な部分です。それをScala使って説明するだけです。 Scalaのマクロは、未だexperimentalという位置づけで、他の機能に比べれば仕様やAPIが変わりやすい状態です。そして、機能が搭載されてからあまり時間が経っていないこともあって*1あまり一般的に使われているとはいえない状態でしょう。しかし、Cなどのマクロとは違い、Scalaのものはある程度は格的にコンパイル時に抽象構文木を自由にいじれるものであり、使いこなせるようになってくるとなかなかおもしろいです。 マクロというと、ある程度の人はLispを思い浮かべると思いますが(?)、先ほど書いた「格的に抽象構文木いじれる」という点はまさにLispと共通する部分もあります(もちろん異なる部分も多くあります)。 つまり、これから説明することは、On Lisp*2 On

    Scalaのマクロの基礎。評価タイミング、評価回数と、健全性 - xuwei-k's blog
  • Scalaのimplicit(暗黙)入門 - seratch's weblog in Japanese

    入門記事の一覧 About - case class HatenaDiary(id: Symbol = ’seratch2) Scalaのバージョン この記事が対象とするScalaのバージョンは「2.9.1.final」です。 暗黙の型変換(implicit conversions) Active Support の再発明 これを使うとRuby on Rails の Active Support みたいな事ができるようになります。 Ruby on Rails Guides: Active Support Core Extensions d = Date.current # => Mon, 09 Aug 2010 d + 1.year # => Tue, 09 Aug 2011 d - 3.hours # => Sun, 08 Aug 2010 21:00:00 UTC +00:00 簡単で

    Scalaのimplicit(暗黙)入門 - seratch's weblog in Japanese
  • Scalaの抽象構文木(abstract syntax tree、AST)をグラフィカルに表示するオプション - ( ꒪⌓꒪) ゆるよろ日記

    「そんなASTで大丈夫か?」 ということで、ほとんどの言語はプログラムの内部表現として抽象構文木(abstract syntax tree、AST)を作ると思います。Scalaももちろんコンパイルするときに作ります。 で、Scalaコンパイラが生成してるASTを見るオプションがあります。 "-Xprint:<phase>"オプションと"-Ybrowse:<phase>"オプションです。 こんなコードがあったとして、 case class Cell[T](v:T) { // TがInt型の場合にのみ呼び出せる def increment(implicit ev:T =:= Int ):Cell[Int] = Cell( v + 1 ) import java.text.SimpleDateFormat import java.util.Date // TがDateまたはそのサブタイプのときに

    Scalaの抽象構文木(abstract syntax tree、AST)をグラフィカルに表示するオプション - ( ꒪⌓꒪) ゆるよろ日記
  • Scalaのクエスチョンマーク3つは「Predef.???」

    8月 11, 2014 Scalaのクエスチョンマーク3つは「Predef.???」 gomi_ningen programming scala 0 Comments つい数日まえについにScalaでいろいろ書き始めました. コップのクラス定義の仕方とかそのあたりを適当に流し読みして, とりあえずいろいろ書いて分かんないところ読もうという方針のもと,コードを書いていくことにしました. わりと順調に進んで,型付きパターンマッチや, 変位指定アノテーションあたりなどちょくちょく分からないところをコップとググってでてきたページで解決してきました. しかしながら,いろいろ調べものして出てきたScalaのコードにdef hoge = ???なる記述が...。とりあえずコップの索引を見てみるも載っておらず,?は記号なのでググっても引っかからない.「scala クエスチョンマーク」「scala

  • sbtで、テストを1つずつ実行して、1つでもテストが失敗したらその時点で他のテストは実行せずに終了するコマンド - xuwei-k's blog

    同僚に聞かれて、そういえば標準にはない?し、少し調べても見つからなかったので作りました。 「すでにあるよ!」「もっといい方法あるよ!」 などあれば教えて下さい。 あと、テスト名sortの部分はカスタマイズできるようにしたほうが便利そうですね。 追記: あ、今気づいたけど URL definedTests と definedTestNames あるからこのkey使ったほうがよかったのかもしれない(?) 2014-08-12 12:52:25 via Twitter Web Client to @xuwei_k definedTestsの実装見た感じ、大抵は class名 == テスト名 だけど、(TestFrameworkによっては)それが完全に同一ではない可能性?と、 storeAs や triggeredBy してるから、キャッシュ使われるかどうかの違いだろうか 2014-08-12 1

    sbtで、テストを1つずつ実行して、1つでもテストが失敗したらその時点で他のテストは実行せずに終了するコマンド - xuwei-k's blog