Concurrent programing explanation for akka beginers. 並行処理初心者のためのAkka入門 akka meetup 2014/09/28(日) http://connpass.com/event/8622/ このイベントの導入説明のために書かれました。 内容には、並行処理、アクターモデル、Akkaの機能の説明となっています。Read less
![並行処理初心者のためのAkka入門](https://cdn-ak-scissors.b.st-hatena.com/image/square/96695312c1099b6f20ddef98884022a0401ecf25/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fakka-140928025512-phpapp02-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
これはScala Advent Calendar 2014 6日目の記事です。 Scala はコンパイルが遅いことで有名ですが、コンパイルの嬉しいところは、実行前に沢山のプログラムミスやミスっぽいものをキャッチできることです。 C を書くときは -Wall -Wextra -Wpedantic あたりをつけるとたくさん警告だしてくれてありがたいですね。Scala の場合もたくさん警告出して欲しい。scalac 2.11.4 にある警告関連のオプションを見てみましょう。 オプションの区分 とその前に、scalac オプションの区分についておさらいです。オプションは -X や -Y 以外から始まる普通のオプション -X から始まる advanced オプション -Y から始まる private オプション に分類されています。それぞれ scalac -help, scalac -X, scal
このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日本のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年5月時点の調査。
Scala In Perl Company : Hatena - YAPC::Asia Tokyo 2014 Scala in Perl Company という内容で発表しました。はてなではPerlを10年近く利用していますが、最近作っているMackerelというサービスの開発ではScalaを利用しています。この発表では、Perlによるソフトウェア進化の困難さと、Scalaでその課題がどのように解決できるかについて解説しました。 発表時間がたりず、ScalaでのWebアプリケーション開発についてはくわしく紹介できなかったのですが、資料にはその部分も含めています。雰囲気でもつたわればうれしいです。話しきれないところがいろいろあったので、まだ会場にいる方はぜひ声をかけてください!
つい昨日0.4がリリースされたGroovyServですが、相当バグフィックス入ってるのでお薦めです。 GroovyServはGroovyスクリプトの起動を高速化するものですが、Groovyから呼び出すものはGroovyに限りません。つまりJVM上で動くものならなんでも起動の高速化が理論的には*1可能です。 たとえば、scalaの処理系とかscalaで書かれたプログラムもその例外ではないです。 scalaには、scalacというコマンドがあってscalaコードをコンパイルします。まずscalacを常駐させて起動を高速化してみましょう。 その前にオリジナルのscalacの実行速度。(Mac OS X, Scala 2.8.0-final使用) コンパイル対象(hello.scala)は以下の通り。 object HelloWorld { def main(args: Array[String]
怖くない Scala 勉強会での発表資料です。 http://connpass.com/event/3420/ Read less
独習 Scalaz これまでいくつのプログラミング言語が羊の衣を着た Lisp に喩えられただろうか? Java は馴染み親しんだ C++ のような文法に GC を持ち込んだ。それまで他にも GC を載せた言語はあったけども、現実的に C++ の代替となりうる言語に GC が載ったことは 1996年には画期的に思われた。やがて時は経ち、人々は自分でメモリ管理をしないことに慣れていった。JavaScript と Ruby の両言語もその第一級関数 (first-class function) やブロック構文を持つことから羊の衣を着た Lisp と呼ばれたことがある。S式の同図像性がマクロに適することから Lisp系の言語はまだ面白いと思う。 近年の言語はもう少し新しい関数型言語から概念を借りるようになってきた。型推論やパターンマッチングは ML にさかのぼることができると思う。時が経てば、人
噂のFreeモナドをScalaで写経してみた。 Freeモナドは、取り込む型SのFunctorと組み合わせて、Functorの特性に応じたモナドを得ることができるものらしい。 そろそろFreeモナドに関して一言いっとくか - fumievalの日記 Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); } Haskell for all: Why free monads matter stackless scala with free monad 独習 Scalaz: 18日目 | eed3si9n ( ゚д゚) 「ナンデ!?モナドナンデ!?」 モナドがセブンセンシズならFreeモナドはエイトセンシズくらいなのでかなり小宇宙を高めないと理解が追いつ
Java 8はついにラムダ式を導入します。ラムダ式自体は2009年からProject Lambdaで利用することができました。当時はラムダ式はJava Closuresと言われていました。サンプルコードを紹介する前に、ラムダ式がJavaプログラマにとってなぜ歓迎すべき機能なのかを説明しましょう。 なぜラムダ式を使うのか ラムダ式の一般的な使い方はGUI開発においてです。一般的に、GUIプログラミングではイベントと結びつく振る舞いを解決する必要があります。例えば、ユーザがボタンを押したとき(イベントが発生したとき), プログラミングは何らかの処理を実行する必要があります。例えば、Swingでは、次のコードで示すようにActionListenersを使います。 class ButtonHandler implements ActionListener { public void actionP
version: 2011/12/10 Play 2.0 の Scala APIはplay.apiパッケージに配置されています。 playパッケージ直下にあるAPI (play.mvcなど) は Java 向けになっています。Scala 開発者の方は、play.api.mvcを利用してください。 マニュアル (初版) コントローラとアクション HTTPルーティング テンプレートシステム フォームの送信とバリデーション アプリケーションの全体設定 SQLデータベースにアクセスする キャッシュ アプリケーションをテストする プラグインを作成する Playをライブラリとして利用する チュートリアル (todo)
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,
11. Q.1 A1-A3, B1-B3 を埋めてください val m = Map("A" -> 1, "B" -> 2) m.map{case (x, y) => (y, x)} m.map{case (x, y) => x} m.map[A1, A2]({case (x, y) => (y, x) })(?:A3) m.map[B1, B2]{case (x, y) => x })(?:B3) 12. A.1 val m = Map("A" -> 1, "B" -> 2) m.map{case (x, y) => (y, x)} m.map{case (x, y) => x} m.map[(Int, String), Map[Int, String]]{ case (x, y) => (y, x) }(?:CanBuildFrom[Map[String, Int], String, M
ようこそ! 始める sbt 1/14 ページ 次 原文: Getting Started Guide 誤訳の報告をする。 「始める sbt」で君も sbt を始めよう。 sbt は柔軟で強力なビルド定義 (build definition) を作ることができるけど、そこで使われている概念の数は多くはない。 多くはないけども、sbt は他のビルドシステムとは一味ちがうから、ドキュメントを読まなければ、いくつかの細かい点でハマっちゃうと思う。 この「始める sbt」で、ビルド定義 (build definition) の作成とメンテナンスに必要な概念を説明する。 「始める sbt」を読むことを強くお勧めしたい! どうしても忙しいという場合は、最も重要な概念は .sbt ビルド定義、 スコープ、と 他の種類のセッティング に書かれているけど、このガイドの他のページを読み飛ばしても大丈夫かは保障し
Javaな人から見ると、「Scalaって難しい」ってイメージがありますね。俺も最初はそう思ってました。今もですけど。 で、考えてみたんですが、何が難しいって考え方・イディオムになじみがないのが原因かと思ったんです。 ここでは、俺が今までScalaをやってきて得た考え方を紹介します。「Scalaをちょっとやってみたんだけど、とっつきにくくて…」と思われている方は、ぜひご一読ください。 参考資料: Scala入門 - Scalaで書きはじめたJava使い向け - Scala勉強会@東北 Dropbox - 404 神は言われた。「リストあれ。」 Lisperは、リストをどう作るかをまず考えるらしいです。適切なリストが出来たら、プログラムはもうできたも同然だと。同じ考え方は、Scalaでも通用すると思います。 大まかに、こんな流れで考えてます。(リストは最初から与えられることもあるでしょう) 「
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く