[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

scalaに関するtaki0313のブックマーク (49)

  • ScalaのgroupByメソッドを使ってみた

    最近Scalaのコレクションクラスに「groupBy」というメソッドがあることを知り、ちょっと使ってみました。 使ってみて改めて画期的なメソッドだな~と感じたのでちょっと紹介いたします。 groupbyメソッドは引数に渡した関数の戻り値をキーにしたマップを作成するメソッドです。同じキーを返した値がマップの値になります。 例として売上げを商品毎にまとめてみます。 売上げは というケースクラスで表現します。itemCodeが商品コードでnumberが売上げ数量という形になります。 このケースクラスを利用して というソースを実行すると と出力されます。商品コード毎のMapができています。 続いて、商品コード毎の売上数量の合計を求めるには とします。countGroupの内容を出力すると と出力されます。これを商品コードでソートするには とします。 普段こういった集計処理(というほどでもないですが

  • 独習 Scalaz — 独習 Scalaz

    独習 Scalaz これまでいくつのプログラミング言語が羊の衣を着た Lisp に喩えられただろうか? Java は馴染み親しんだ C++ のような文法に GC を持ち込んだ。それまで他にも GC を載せた言語はあったけども、現実的に C++ の代替となりうる言語に GC が載ったことは 1996年には画期的に思われた。やがて時は経ち、人々は自分でメモリ管理をしないことに慣れていった。JavaScriptRuby の両言語もその第一級関数 (first-class function) やブロック構文を持つことから羊の衣を着た Lisp と呼ばれたことがある。S式の同図像性がマクロに適することから Lisp系の言語はまだ面白いと思う。 近年の言語はもう少し新しい関数型言語から概念を借りるようになってきた。型推論やパターンマッチングは ML にさかのぼることができると思う。時が経てば、人

  • scalaでmysqlを使う | y_matsuwitter's

    新しい言語触り始めた後にアプリつくろうと思うと、大体DB周り気になる。 ということでScalaからMySQLを触ってみたときのメモ。 今回はscalaqueryを使いました。 https://github.com/szeiger/scala-query 一応scala-dbcというのがscalaの標準ライブラリに入っているようなのですが、scala2.9.1でこいつを使うと、deprecatedのwarningに苛まれる事になります。 とりあえず2.9.1では使わないこと推奨?のようなので、Mavenでサクっとscalaquery入れた環境作りましょう。 使用するプロジェクトはmvn archetype:generateで適当にscalaプロジェクトとして作成。 Mavenでscalaquery使うときは、 <dependencies> <dependency> <groupId>org

  • 正規表現で文字列の検索 | Scala Cookbook

    文字列中から正規表現にマッチした箇所を取り出したい。 解法 Regexを使う。 val s = "GGACGATATAATTTATAATACCGT" val r = "TATAA".r // Stringは.rで正規表現に変換できる for(m <- r.findAllIn(s).matchData) println("Found a match in [%s, %s)".format(m.start, m.end)) 実行結果 Found a match in [6, 11) Found a match in [13, 18) findAllInではマッチした文字列を切り出すMatchIterator(Iterator[String]を継承)が返るが、matchDataを呼び出すことで、Iterator[Match]に変換でき、こちらでは、マッチの位置(start, end)や、マッチし

    taki0313
    taki0313 2012/07/17
    使った.
  • Play All Day: Reactive Streams and Play 3.0 – Free E-Books | Typesafe

    Akka is relied upon when application responsiveness must be guaranteed. Engineering teams use a simple SDK and powerful libraries to build transactional, durable, and real-time services that distribute logic and data together. Operations are fully automated in serverless and BYOC environments, and a self-hosted option is available.

    Play All Day: Reactive Streams and Play 3.0 – Free E-Books | Typesafe
  • Twitter製のScala向けConfigライブラリのutil-evalが素敵すぎる - ブログなんだよもん

    現在作ってるアプリで設定ファイルを作りたくなったので、Scalaで人気の設定ファイルライブラリであるutil-evalを使ってみた。 このライブラリの特徴は何と言っても設定ファイルをScalaで記述できること。XMLやYAML, プロパティファイルじゃなくて内部DSLです。とは言うものの、Railsrubyで設定を記述しているし、仕事ではPHP使って似たようなことはしているので、これだけだと絶賛するほどじゃなかったり。重要なのはScalaが静的型付け言語だと言うことです!(キリ それの何が嬉しいの? と言われそうなので、皆さん想像してみてください。モード切替でマジックナンバーや文字列で指定している状況を。入力間違えにより容易に謎のエラーとなります。でも、util-evalならenumやcase classを使うことで特定の値以外が入力されたらコンパイルエラーにできます。もちろん、文字列や

    Twitter製のScala向けConfigライブラリのutil-evalが素敵すぎる - ブログなんだよもん
    taki0313
    taki0313 2012/06/19
    あとで使ってみる
  • scala.io.Sourceとscala.xml.parsing.XhtmlParser - ( ꒪⌓꒪) ゆるよろ日記

    scalaでファイルやURLからテキストを読み込みたいときには、scala.io.Sourceオブジェクトとscala.io.Sourceクラスを利用するのが便利です。 scala.io.Sourceオブジェクトを利用するとファイルからの文字列の読込や、URLからフェッチする処理はこんなふうに簡単に書けます。 import scala.io.Source import scala.xml.XML import scala.xml.parsing.{ConstructingParser,XhtmlParser} // textファイルから読み込んで出力 Source.fromFile("test.txt","UTF-8").foreach(print) // URLからXMLを取得(twitterのxml) val src = scala.io.Source.fromURL("http://

    scala.io.Sourceとscala.xml.parsing.XhtmlParser - ( ꒪⌓꒪) ゆるよろ日記
  • EclipseでScalaプログラミングを始めるための基礎知識

    EclipseでScalaプログラミングを始めるための基礎知識:スケーラブルで関数型でオブジェクト指向なScala入門(1)(1/3 ページ) 人気の「Scala」を一から学ぼう 最近、私の周りでもScalaに関する話題が増えてきました。Twitterやブログ、技術系のニュースサイトでは毎日のようにScalaに関連する話を見かけます。 また、筆者が現在携わっているプロジェクトでも実際にScalaを用いて開発しています。いままではJavaで開発をすることが多かったのですが、それよりも簡潔で柔軟性のある記述が可能であり、Scalaでの開発は非常に生産性が高いと感じています。 連載は、Scalaの特徴を紹介し、基構文や関数、クラスなど、Scalaの基的な機能について解説していきます。何らかのプログラミング言語を学んだことがあり、プログラミングの基的なことが分かる人を対象としています。特に

    EclipseでScalaプログラミングを始めるための基礎知識
  • Actorはじめました (level cap: 50) - ヽ( ・∀・)ノくまくまー(2010-10-14)

    ● [Scala] Actorはじめました (level cap: 50) 並列処理したいお年頃なので噂のActorを試してみる。生半端な知識とコップの流し読みで突撃したところ、時間をかけた割に得られたものはそれらしいコードと理解できないエラーの山。その後も粘着気味に努力するも、最後は自分が何がわかってないのかもわからなくなるという最悪の結果に陥る。 そろそろヤンチャも潮時ではないでしょうか?お前もそう思うか、キルヒアイス。ということで、土台を固めるべく、1から真面目に勉強し直すことを決意。後人には我が屍を超えて行ってもらうべく、得られた知見をここに淡々と記録し続ける。Actorでつまづいたときには、是非とも自分のActorレベルを数値で確認し、そこから立ち直って貰いたい。 レベル1. Actorて何? ほぼスレッド。 レベル2. もう少し専門的に言うと? scala.actorsパッケ

    taki0313
    taki0313 2012/02/10
    あくたー
  • [android][scala] Scala で Android アプリを作成する環境を作る - よしだメモ

    Ubuntu 11.10 リリースということで思い切ってクリーンインストールした結果、Scala + sbt で Android アプリを作る環境も作り直すことになりましたので、その時のメモを公開します。 JDK をインストール $ sudo apt-get install openjdk-6-jdk Scala をインストール $ cd /tmp $ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.tgz $ sudo tar -C /opt -zxvf scala-2.9.1.final.tgz $ cd /opt $ ln -s scala-2.9.1.final scala $ echo 'export SCALA_HOME=/opt/scala' >> ~/.zshrc $ echo

    [android][scala] Scala で Android アプリを作成する環境を作る - よしだメモ
  • Effective Scala

    Effective Scala Marius Eriksen, Twitter Inc. marius@twitter.com (@marius) Table of Contents Introduction Formatting: Whitespace, Naming, Imports, Braces, Pattern matching, Comments Types and Generics: Return type annotations, Variance, Type aliases, Implicits Collections: Hierarchy, Use, Style, Performance, Java Collections Concurrency: Futures, Collections Control structures: Recursion, Returns,

  • scala.sys.process | Scalaの標準ライブラリを使ってみる | mwSoft

    概要 scala.sys.processパッケージには外部コマンドを気楽に実行できるありがたい機能が入っている。Scala2.9以降で搭載された。 今回はとりあえずlsやcatなどのコマンドの実行や、tail -fの結果取得などをしてみた。 lsしてみる scala.sys.process.Processを使って結果を標準出力に出してみる。 scala> import scala.sys.process.Process scala> val process = Process("ls").run bin doc lib src こんな感じでlsの結果が標準出力される。exitValueで終了コードも取れる。 scala> process.exitValue Int = 0 実行する際は、run、!、!!などが使える。lsが出力したファイルの一覧を取りたい場合は、!!を使う。 scala>

    taki0313
    taki0313 2012/01/24
    構文すごい
  • 非公式 sbt 0.10 ガイド v2.0 · eed3si9n

    2011-09-25 / sbt version 2.0 2011年6月19日に最初のバージョンを書いた時点での僕の動機は、運良く Mark による sbt 0.10 のデモを二回も生で見れたことに触発されて(最初は northeast scala、次に scala days 2011)、sbt 0.7 から 0.10 へと皆が移行するのを手助けしたかったからだった。プラグインがそろっていなければビルドユーザが 0.10 に移行できないため、プラグインが移行への大きな妨げになるというのが大方の考えだった。そこで僕が取った戦略は、無いプラグインは自分で移植して、つまずいたらメーリングリストで質問して、結果をここでまとめるというものだった。それにより、多くのポジティブな反応があったし、数人を 0.10 へ移行する手助けにもなったと思う。だけど、後ほど明らかになったのは、僕の sbt 0.10

    taki0313
    taki0313 2012/01/19
    sbtはなかなかまとまった資料がないような気がする.これいかに.
  • scalaでYコンビネータ - ( ꒪⌓꒪) ゆるよろ日記

    Yコンビネータの定義: def Y[A,B]( f:((A => B), A ) => B, x:A ):B = f( ( y:A ) => Y( f,y ),x ) Yコンビネータってのは、要は Y(f) = f(Y(f))となる関数らしい。不動点演算子とか呼ばれていますがなんのことかわかりませんね。 「ある関数fをYに与えた結果できる関数をf'とすると、f'をまたYに与えてできる関数はfと同じ」になるように関数を作り出すものです。 何でこんなもん必要なの? ある無名関数があるとしましょう。この無名関数は名前が定義されていないため、自身を再帰で呼び出す定義ができません。 単純に、0から引数nまで加算する関数を無名関数で定義しようとすると、 (i:Int) => i match{ case 0 => 0 case _ => i + ここで自分自身を再帰で呼びたいけど名前がない( i - 1

    scalaでYコンビネータ - ( ꒪⌓꒪) ゆるよろ日記
  • Introduction to Category Theory in Scala

    If you are a former Java developer and have become a Scala fanboy like me, you will probably sooner or later encounter terms like monad, functor or other mysteries from the realm of category theory which make you feel like a little dummkopf (screamingly funny for a German like me, according to www.dict.cc this seems to be a proper English verb). If you already feel comfortable with these, don’t wa

    Introduction to Category Theory in Scala
  • Play framework - Scala

    Play Scala によって Play framework の主要な特性 を保ったまま Scala 言語 をアプリケーションに使うことができるようになります。 Play Scala は、簡潔さと開発者に対する親切さを諦めることなく、Scala の文法的なプログラミングスタイルをより機能的に使います。

  • 初心者による初心者のためのScalaでhello world

    このエントリは Scala Advent Calendar jp 2011の12/18日です。前日はeed3si9nさんのIterator パターンの質でした。 このエントリではScalaを始めたときにhello worldから一歩踏み出すときの言語以外の部分、環境について書きます。 Scalaを始める人は大概scalaコマンドのREPLやhello worldから始めると思うんだけど、 そこからリアルワールドに飛び出すときにギャップが大きくて挫折しやすい。 というか3回くらい挫折しました、僕は。 hello.scalascalaコマンドに渡して実行するだけならともかく、 小さくてもプロダクトを作ろうとしたときに途方にくれてしまう。 これはScalaに限った話ではなく、 Javaでhello worldを書いたあとにいきなりMavenに手を出すか? あるいはPythonのREPLを触っ

  • projects:machinelearning [Ludovic Arnold]

    taki0313
    taki0313 2011/12/12
    どれどれ…
  • ScalaNLP

    ScalaNLP Scientific Computing, Machine Learning, and Natural Language Processing ScalaNLP is a suite of machine learning and numerical computing libraries. ScalaNLP is the umbrella project for several libraries, including Breeze and Epic. Breeze is a set of libraries for machine learning and numerical computing. Epic is a high-performance statistical parser and structured prediction library.

  • パラレルコレクションの性能測定 - かとじゅんの技術日誌

    Scala Advent Calendar jp 2011 6日目 いきます。 STMの話にしようと思ったのですが、いろいろまだ調査中なんでまた後日ということで、今回はパラレルコレクションでいきます。すでにあちこちのブログで扱っているネタなので目新しさはないですが... パラレルコレクションは2.9から使える新機能です。 早速 使い方。通常のコレクションの要素を2倍する処理は次のように記述します。 List(1,2,3).map(_ * 2) 一方、パラレルコレクションではparメソッドを使います。 List(1,2,3).par.map(_ * 2) scala.collection.immutable.List#parはParSeq[A]型の戻り値を返します。ParSeq#mapを呼び出すだけでmapを並行に処理できるわけです*1。来並行処理を実装する場合は、スレッドの起動や待機、ス

    パラレルコレクションの性能測定 - かとじゅんの技術日誌
    taki0313
    taki0313 2011/12/09
    試してみよ