タグ

scalaとScalaに関するgolden_egggのブックマーク (134)

  • Scala的な考え方 - Scalaがとっつきにくいと思っている人へ - ( ꒪⌓꒪) ゆるよろ日記

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

    Scala的な考え方 - Scalaがとっつきにくいと思っている人へ - ( ꒪⌓꒪) ゆるよろ日記
  • 怖くないScala勉強会を開催しました - garbagetown

    2013年10月19日(土)に 怖くないScala勉強会 を開催しました。備忘のため記録しておきますので、文字だらけですが興味のある方は参考になさってください。 なお、会場には 株式会社DTS の大会議室を利用しました。末端のしがないヒラ社員の個人的な催し物に快く会場を提供してくれた DTS 社に心から感謝します。 背景 2010年4月から Play Framework のドキュメント翻訳サイト を運営しているのですが、Play2 になってから実装言語が Java から Scala に変更され、ドキュメントの内容にも Scala の知識を必要とするものが増えてきました。 その際に 反変とか全然分からなくていよいよ独習Scalazを読まなければならないかもしれない...— Yuichiro Umezawa (@garbagetown) July 22, 2013 とツイートしたところ、 @g

    怖くないScala勉強会を開催しました - garbagetown
    golden_eggg
    golden_eggg 2013/10/22
    後日談までもがココまで中身の濃い勉強会、怖い
  • Scalaのトレイトで馬(と陸上走者)を表現してみた

  • Pavel Fatin » Blog Archive » Design Patterns in Scala - Blog about human and technology

    This article shows how Scala adopts and transforms the classical software design patterns. The content of the article is also (independently) translated into Russian and Chinese. Design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished code, but rather a template for how to solve a problem that can be used in many differen

  • Scala @tailrecメモ(Hishidama's Scala @tailrec Memo)

    概要 scala.annotation.tailrecアノテーションは、末尾再帰でないメソッドの場合にコンパイルエラーにするアノテーション。 再帰するメソッド(自分自身を呼び出すメソッド)は、呼び出す回数が多くなるとその分スタックフレームを消費してしまう(最悪はOutOfMemoryErrorが発生する)が、 末尾再帰だと効率の良いループに変換してくれる。 tailrecアノテーションを付けておくと、誤って末尾再帰になっていない時にコンパイルエラーになってくれる。 例 @tailrecの使用例。 import scala.annotation.tailrec メソッドが末尾再帰でないとコンパイルエラーになる。 (再帰呼び出し部分が呼び出した結果との演算になっていると、末尾再帰に出来ない) scala> @tailrec | def f(n: Int): Int = { | if (n <=

    golden_eggg
    golden_eggg 2013/10/09
    "末尾再帰でないメソッドの場合にコンパイルエラーにするアノテーション"
  • ScalaのFunction22問題(またはTuple22問題)について思うこと - たけぞう瀕死ブログ

    Scalaで実際にシステム開発を行う上でかなりの高確率で遭遇するのがFunction22問題(またはTuple22問題)です。Scala Conference in Japan 2013のセッションではScalaの問題点として挙げたのですが、実際はいろいろと思うところもあるので書いておきます。 Function22問題(またはTuple22問題)とは? Scalaのフレームワークではケースクラスへの値のマッピングにタプルを使ったり、値のバインドやアンバインドにapplyメソッドやunapplyメソッドを使うものが多いのですが、Scalaには以下のような制約があるため、22個以上のプロパティを定義することができない、というものです。 22個以上の引数を持つ関数を作ることができない(メソッドとしては定義できますが、変数に代入したり関数渡しをしようとするとコンパイルエラーになります) 要素が22

    ScalaのFunction22問題(またはTuple22問題)について思うこと - たけぞう瀕死ブログ
    golden_eggg
    golden_eggg 2013/10/09
    Function22問題
  • 関数型Scala(6):高階関数 - Mario Gleichmann - Digital Romanticism

    この記事はMario Gleichmann氏による、「Functional Scala」シリーズの第6回「Functional Scala: High, Higher, Higher Order Functions | brain driven development」を、氏の許可を得て翻訳したものです。(原文公開日:2010年11月28日) 関数型Scalaの第6話にようこそ! 今回は、このシリーズでほぼ毎回、何度も言及してきた強力な概念について詳しく見ていきましょう。それが、高階関数です。かっこよくありません?そうでもないですよね。名前がかっこいいだけでは、あなたを興奮させることはできませんから。そこでこれから、どうかっこいいのかを実演し、「高階関数は、関数型プログラミングにおいて、エレガントに、コンパクトに、そして効率的に書くための基原則の1つである」という、少なからぬ声の原因とな

    関数型Scala(6):高階関数 - Mario Gleichmann - Digital Romanticism
  • Chronos: A Replacement for Cron

    Chronos is our replacement for cron. It is a distributed and fault-tolerant scheduler which runs on top of Mesos. It’s a framework and supports custom mesos executors as well as the default command executor. Thus by default, Chronos executes SH (on most systems BASH) scripts. Chronos can be used to interact with systems such as Hadoop (incl. EMR), even if the mesos slaves on which execution happen

    Chronos: A Replacement for Cron
  • ScalaでWebAppの開発に必要なN個のこと - tototoshi の日記

    PerlでWebAppの開発に必要なN個のこと - Islands in the byte stream の Scala 版です。 あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずScalaについて知っていることを書いた。 パッケージマネージャ sbt が全てやってくれる。Scala のバージョン管理も、ライブラリのバージョン管理も。 http://www.scala-sbt.org/ Maven や gradle を使用することもできる。 アプリケーションサーバ Scala の Web アプリは 2 つのタイプに分けられる。Java の Servlet API を使用するものと、使用しないものである。どのフレームワーク、ライブラリを使うかによって変わっ

    ScalaでWebAppの開発に必要なN個のこと - tototoshi の日記
  • マルチコア時代のプログラマは関数脳になろう〜Scala・Clojure〜 - Tech-Sketch

    前回 の記事では、関数型プログラミングの概念とJava8による実装例を示しました。しかしJava8のリリースは来年まで延期されてしまったため、今すぐ試してみるには少しハードルが高いかもしれません。 そこで今回は、Java7のJVM上で動作する代表的な関数型プログラミング言語、 Scala と Clojure を紹介します。 Scalaとは では、 Scala から紹介しましょう。 ScalaはJVM上で動作するプログラミング言語で、関数型の特徴とオブジェクト指向の特徴を合わせ持った、欲張りな言語です。 JVM上で動作するため、既存の膨大なJavaライブラリをそのまま流用でき、JVMのパフォーマンスチューニングノウハウを最大限活用することができます。またJavaよりも豊富な記述形式を持ちながらもJavaオブジェクトをそのまま扱え、強力な型推論を持った静的型付け言語でもあるため、定型的で冗

  • Home

    Scala で圏論入門 これは、Typesafe 社の Director Professional Services である Heiko Seeberger 氏による「Introduction to Category Theory in Scala」の翻訳文です。誤訳、誤記などがありましたら、 日Scalaユーザーズグループの「圏論入門 レビューのお願い」トピックに投稿していただくか、@quassia88 にご連絡ください。 もし君が僕みたいに、以前はJavaディベロッパーで、Scalaのファンになったばかりなら、君は多分遅かれ早かれ、モナドやら関手やらの、圏論の分野からやってきた謎に遭遇するだろう。そういった未知の概念は、君を、自分が恐ろしくまぬけなんじゃないか、という気分にさせることだと思う。もし君がそういう概念に既に親しんでいるなら、時間を無駄にすることはない、すぐにこのページを閉

    Home
  • Apache Sparkってどんなものか見てみる(その1 - 夢とガラクタの集積場

    こんにちは。 Kafkaを試している最中で微妙ですが、最近使えるのかなぁ、と情報を集めているのが「Apache Spark」です。 MapReduceと同じく分散並行処理を行う基盤なのですが、MapReduceよりも数十倍速いとかの情報があります。 ・・・んな阿呆な、とも思ったのですが、内部で保持しているRDDという仕組みが面白いこともあり、 とりあえず資料や論文を読んでみることにしました。 まず見てみた資料は「Overview of Spark」(http://spark.incubator.apache.org/talks/overview.pdf)です。 というわけで、読んだ結果をまとめてみます。 Sparkとは? 高速でインタラクティブな言語統合クラスタコンピューティング基盤 Sparkプロジェクトのゴールは? 以下の2つの解析ユースケースにより適合するようMapReduceを拡張

    Apache Sparkってどんなものか見てみる(その1 - 夢とガラクタの集積場
    golden_eggg
    golden_eggg 2013/09/02
    しばらくウォッチしてなかったら、いつの間にかApache配下のprojectになってたのね
  • Twitterのスケーリング,新たなピークへ

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Twitterのスケーリング,新たなピークへ
    golden_eggg
    golden_eggg 2013/08/30
    "ハードウェアリソースの有効利用の可能なプログラミングプラットフォームが必要だった" "コードベースをJVMに書き直した"
  • APNsGatewayServer を書いてたら AWS に仕事を奪われたので現代のラッダイト運動を起こしたい - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    APNsGatewayServer を書こうの巻 えー。APNsとのやりとり部分を書くのはなにげにとても面倒です。面倒な理由として プロトコルがアップルのオレオレプロトコルであり、なおかつバイナリでやりとりしている APNsサーバーに対してリクエストを送っても、基的にレスポンスは帰ってこない でもなんかエラーがあった場合はレスポンスが帰ってくる 基的にコネクションをつなぎっぱなしにしておかなければならない でもときどき何も言わずに向こうからブチっと接続を切ってくる というあたりが挙げられますね。 1番の理由については単にめんどくさいだけで何も問題はありません。自分で書かなくてもライブラリとか結構あるし、そもそもこれくらいは書けよ感もある。 でもその他の問題がなかなかくせ者なのです。 まず、エラーの時だけレスポンスが帰ってくるということで、リクエストを投げたらレスポンスが来るまでブロック

    APNsGatewayServer を書いてたら AWS に仕事を奪われたので現代のラッダイト運動を起こしたい - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    golden_eggg
    golden_eggg 2013/08/16
    "いつどこでどんなイベントが起こるかわからなくて、なおかつ複数のアクターのメッセージパッシングにうまくモデリングできそうみたいな要件には Scala + Akka はかなりいい選択肢になる"
  • 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: 空飛ぶサンドイッチのパーツ · eed3si9n

    2013-06-20 / scala JavaScript が作られたのは 1995年のことだから、『JavaScript: The Good Parts』(2008年)、jQuery (2006年)、V8 (2008年) などが登場するよりもかなり前に作られたことになる。jQuery と V8 が加算的な貢献であるのに対して、Douglas Crockford 氏の『The Good Parts』が面白いのは、言語から機能を引き算したであることだと思う。 ここ最近、もし Scala をリアルワールドな制約である Java 的な親しみやすさや互換性を無視してワンダーランド的な設定でサブセットを作ったらどうなるだろうかと考えている。ScalaJava の代替として使う事が許されるなら、関数型プログラミング言語の代替として使ってもいいじゃないかと思う。この思考実験のもう一つの試みは、S

  • Scala.js - Write in Scala for the browser

    Sébastien Doeraene @sjrdoeraene Scala Days 2013, June 12th LAMP, lamp.epfl.ch École polytechnique fédérale de Lausanne, Switzerland JavaScript The one and only language of the Web A scripting language, designed for programming in the small How to scale to Rich Internet Applications? JavaScript as a target language Compile a higher-level language to JavaScript GWT, Scala/GWT CoffeeScript, Dart, Typ

  • The Play Framework at LinkedIn

    Video of the presentation: http://www.youtube.com/watch?v=8z3h4Uv9YbE At LinkedIn, we have started to use the Play Framework to build front-end and back-end services at massive scale. Play does things a little differently: it's a Java and Scala web framework, but it doesn't follow the servlet spec; it's fairly new, but it runs on top of robust technologies like Akka and Netty; it uses a thread poo

    The Play Framework at LinkedIn
  • Virtualbox SDKをScalaで叩くと幸せだった - @numa08 猫耳帽子の女の子

    VirtualboxAPIが死ぬほど簡単だった 死にそう— numa (@numa08) 2013, 6月 3 簡単に仮想マシンのリストを取得できてしまった つらい— numa (@numa08) 2013, 6月 3 正しくないVagrantの使い方をしていたようです vagrantで仮想マシンの電源オン、オフの自動化を考えていましたが、そもそもVagrantはそんな ことに使うツールではなく、実験用の仮想マシンをお手軽に操作するツールのようでした。 確かに、rootのパスワードがvagrantで固定だったり、vagrantユーザを作る必要があったりと、ちょと考えればわかることですね。(*) (*)一応、分かってましたよ。ただ、自分の家で使うだけだからいいかなぁ・・・と Virtualbox SDKを知った Virtualboxのダウンロードページでは公式SDKが配布されています。 ドキ

    Virtualbox SDKをScalaで叩くと幸せだった - @numa08 猫耳帽子の女の子
  • Scala + akka で簡単なチャットサーバーを書いてみたので解説してみるよ - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    !!!CAUTION!!! この記事で扱っている IO のインターフェイスは Akka 2.2 で すでに old-io 扱いとなり( http://doc.akka.io/docs/akka/2.2.0/scala/io-old.html )、Akka 2.3 からは削除されてしまっています。 今ならばこちらを参考にされたほうがいいでしょう。 I/O まわり: http://doc.akka.io/docs/akka/2.3.7/scala/io.html TCPのハンドリング:http://doc.akka.io/docs/akka/2.3.7/scala/io-tcp.html 文 akka というのは Scala で Actor モデルを実現するためのライブラリだと思えばいいっぽい。この記事を読むためには case class とパターンマッチとアクターモデルについての知識が最低

    Scala + akka で簡単なチャットサーバーを書いてみたので解説してみるよ - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く