タグ

scalaに関するstealthinuのブックマーク (26)

  • Javaのコードをさらに読みやすくする「Project Amber」。JavaOne 2017

    サンフランシスコで開幕した「JavaOne 2017」。基調講演の最後に、Java 9以降のJavaのために現在開発が進んでいる新機能が紹介されました。 Project Panamaは、Javaとネイティブなコードのデータのやりとりを可能にするもの。JavaからC関数をコールし、C関数からJavaにコールバックしたときにデータにアクセスするといったことが可能。 Project Valhallaは変数の型付けに関するもので、変数の基的な型をプログラマブルに設定できるというもの。 参考:Java 9の先、Java 10/11では最新のハードウェアやOSに最適化したデータのメモリ配置が可能になる。JavaOne 2015 参考:JavaOne 2016が開幕、JDK 9ではJava Shellが登場予定。JavaOne 2016 Javaコードの可読性を向上させ、バグの混入を減少させるProj

    Javaのコードをさらに読みやすくする「Project Amber」。JavaOne 2017
    stealthinu
    stealthinu 2017/10/04
    Project Amber進めていくと最終的にScalaになるのでは。
  • PlayFrameworkをただの静的型付けMVCだと思って本番稼動させると死ぬ - サナギわさわさ.json

    (3/15 : タイトル修正しました。wは小文字ですね、すみません・・・) PlayFrameworkが流行り始めてから割と経ちますので、そろそろ正式採用しようと考える方も多いのではないかと思います。 強力な静的型付けで守られたPlayは、ミッションクリティカルなシステムや数万行を超える大規模システムの構築に特に向いているような気がします。 また、Servletを使っていないのに加えてMVC構造がベースなので、今までRailsなどで開発をしていた人でもシームレスに移行できると思います。 しかし、忘れてはならないのがPlayのアーキテクチャが全ての処理が非同期で行われることを前提としているという事です。 ここを忘れてPlayをただの強力な静的型付けで守られたMVCフレームワークとだけ考えて開発を進めてしまうと、番環境で稼動させた時にパフォーマンスが上がらずに困ることになるかもしれません。今

    PlayFrameworkをただの静的型付けMVCだと思って本番稼動させると死ぬ - サナギわさわさ.json
    stealthinu
    stealthinu 2016/03/09
    playはイベント駆動型なのでなんも考えずにブロッキング処理を使ってしまうとパフォーマンスがでないという話。nodeとかと同じ方針でC10Kに対応すると。
  • なぜ Play は Servlet を使っていないのか(Why there is no servlets in Play 翻訳) - ikeike443のブログ

    まだ正月休みなのです。暇なので訳してみました。 この記事は 1年半以上前に Play の生みの親である Guillaume Bort がブログに書いたものです。 (2012/8/19追記: リンク切れしていたためリンクを貼り直しました) なぜ Playframework では Servlet が一切使われていないのかについて、簡潔に書いています。 丸山先生が Play に注目し始めた今、Play2.0 のリリースが間近に迫った今、あらためて読むと面白いかも知れません。 なぜ Play は Servlet を使っていないのか Servlet API に準拠せずに Java web フレームワークを作ることはかなり変に思えるかも知れない。大抵の人はなぜこんな普通じゃない選択をしたのかを聞いてくる。気に入ってくれる人も何人かいるが、大半は毛嫌いする。正直に言うと、 Play フレームワークの一番

    なぜ Play は Servlet を使っていないのか(Why there is no servlets in Play 翻訳) - ikeike443のブログ
    stealthinu
    stealthinu 2015/11/04
    playがservletコンテナを使わずに独自のjava webフレームワークになっている理由。servlet apiがいまいちだから、とのこと。
  • Effective Scala

    Effective Scala Marius Eriksen, Twitter Inc. marius@twitter.com (@marius) [translated by Yuta Okamoto (@okapies) and Satoshi Kobayashi (@scova0731)] Table of Contents 序章 書式: ホワイトスペース, 命名, インポート, 中カッコ, パターンマッチ, コメント 型とジェネリクス: 戻り型アノテーション, 変位, 型エイリアス, 暗黙 コレクション: 階層, 使う, スタイル, 性能, Java コレクション 並行性: Future, コレクション 制御構造: 再帰, Return, forループと内包, require と assert 関数型プログラミング: 代数的データ型としてのケースクラス, Option, パターンマ

    Effective Scala
    stealthinu
    stealthinu 2015/05/13
    「Effective Scala」!Twitterの人が書いてる!日本語訳!!
  • ScalaプログラマのためのHaskell入門

    4. ●Haskellで手続き的に書くなんて邪道ではないか? ●Haskellの設計者 Simon Peyton Jones の言 ●Tackling the Awkward Squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell ●Haskell is the world’s finest imperative programming language 「Haskellは世界最高の手続き型プログラミング言語です」 ●設計者が手続き型言語と言っているので手続き的に書いて全く問題あ りません Haskellに関するよくある誤解

    ScalaプログラマのためのHaskell入門
    stealthinu
    stealthinu 2015/03/05
    これの最初の方だけで、よくわかんなかった部分がだいぶスッキリした。後半はまだわからない内容が多いので後日また参照せねば。
  • 【Scala初心者向け】sbtを触ってみよう! | Casley Deep Innovations株式会社 技術ブログ

    コンニチハ!システムインテグレーション部の遠藤です。 前回、ScalaでHello Worldをご紹介させていただきましたが、今回は、Scalaを使う上でなくてはならないsbtをご紹介したいと思います。 sbtとは? http://www.scala-sbt.org/0.13.0/docs/home.html sbtとは、簡単に言うとScala用のビルドツールです。 コンパイルはもちろん、プロジェクトに必要なパッケージやライブラリの管理を行ってくれる非常に怖い強力なツールです。 前回、Scalaのソースファイルをコンパイルする際、「Scalac」を実行してからの応答時間が気になった方もいましたでしょう。 Scalaのコンパイルは重たいそうですが、その点sbtを利用すれば、あまり気にならなくなります。 (と、聞いたことがある気がします笑) インストール さて、早速sbtの実行環境をインストー

    stealthinu
    stealthinu 2014/09/26
    scala触るのにまずsbt入れてそこからさわろうという案内。これだと最初からjavaとの混在とかも簡単な印象になる。
  • ScalaMatsuri 行動規範を掲げた経緯 - OE_uia Tech Blog

    今年から、行動規範をScalaMatsuriとして掲げ始めた。 その目的は「みんな仲良く」。噛み砕いて言えば、性別、国籍などに起因するような少数派が居心地の悪い思い、不快な思いをしないことを目指している。 この行動規範について、突然Webサイトに追加されたので驚かれた方も多いかもしれない。この行動規範は、現実に発生しそうになった問題から、必要要件を考え、準備委員内で長期間に渡り議論を重ねた上で公開したものだ。 既にその目的については@eed3si9n_jaさんがカンファレンスでのユニバーサル・アクセスへ向けてという記事でまとめてくださっているが、来年から格的に運用するにあたり、この行動規範を掲げた経緯も含めて紹介することが、ご理解とご協力をいただく上では重要ではないかと考えているため、この記事を書くに至った。 この記事では、行動規範が生まれた経緯を3つの側面から説明していきたい。 行動規

    stealthinu
    stealthinu 2014/09/25
    勉強会等でネットのネタが発表に使われることがあるが、その際にもどうしても参加者が皆男という前提でネタが使われる場合がある。が、これは良くないよね。注意したい。
  • 社内技術勉強会でScalaのおすすめポイント解説した - はこべにっき ♨

    はてなでは週に一回、社内技術勉強会というのをしています。今週は僕の当番だったのでScalaの入門的な話をしました。 普段使いの言語として、Scalaの便利なところをまとめたというつもりです。とはいえ、他の言語にもある特徴もわりと紹介してるので、もうちょっとScala独自の内容にフォーカスしてもよかった... むずかしい。時間の都合で全部話きれなくて、会が終わった後でimplicitまわりの話とか数人にご紹介したら一番おもしろかったと言う話になったので無念。 あの機能を紹介してないとはけしからんみたいなのがあったら教えて下さい。そうはいってもとりあえず Scalaスケーラブルプログラミング第2版を読むといいです。 ↓ 資料はgist形式でembedしてあります ↓ https://gist.github.com/hakobe/e1aa2501a64e7f801b55 こちらもおすすめ Sca

    社内技術勉強会でScalaのおすすめポイント解説した - はこべにっき ♨
    stealthinu
    stealthinu 2014/09/19
    scalaがなにがうれしいのか、雰囲気つかめるような資料。あと、最初にsbt入れろということなのね。
  • 止まっちゃいけないフロントエンド開発

    DevLOVE甲子園2014 東日大会 技トラック 5回表

    止まっちゃいけないフロントエンド開発
    stealthinu
    stealthinu 2014/08/25
    Aeromock サイバーエージェントの方が作られたモックサーバ作成用専用ツール
  • Scalaのコンパイルを3倍速くした話

    11. hprof: JVM標準 プロファイラ • jvmオプションつけてsbt compile • 結果はjava.hprof.txtに出力されま す $ sbt -J-agentlib:hprof=cpu=samples,depth=5 clean compile 12. 結果見る • depth=5で荒い解析 • クラスのロードが大量にされている……? rank self accum count trace method 1 12.04% 12.04% 2158 300093 java.util.zip.ZipFile.getEntry 2 9.90% 21.95% 1775 300065 java.lang.Throwable.fillInStackTrace 3 7.21% 29.16% 1293 303874 java.lang.Class.forName0 4 5.40% 3

    Scalaのコンパイルを3倍速くした話
    stealthinu
    stealthinu 2014/07/18
    おお、すばらしい。プロファイル取ってどこに問題点があるのか追ってく手法がわかってとても勉強になった。javaでの開発知識がそのまま使えると。
  • trait時代のライブラリ設計を予想してみる #php5_4

    この記事はPHP5.4 Advent Calendar 2011の23日分です。 trait自体はすでに10日目の@tpyamamotoさんによるTRAITでデザインパターン再考でも取り上げられていますが、目玉機能なのでもう一回ネタにしちゃいます>< おさらい:traitとは 相変わらず公式マニュアルが充実しまくっているのでそちらを見た方がいいのですが、抜粋するとこんな感じ。 PHP5.4の目玉機能 多重継承を安全に行えるよう導入された概念 traitはプロパティ・メソッドを持てる traitは定数を持てない trait自体はインスタンス化できない classを継承してtraitを作ることはできない interfaceを実装してtraitを作ることはできない traitを継承してtraitを作ることが可能 classは複数のtraitを継承して実装を再利用できる traitはclassでは

    trait時代のライブラリ設計を予想してみる #php5_4
    stealthinu
    stealthinu 2014/07/01
    5.4からtraitが使えるようになるのでもうabstractはいらん子になるのではという指摘。やっぱそういう感じなんだな。
  • PHP5.4とScalaのトレイト比較 - なんたらノート第三期ベータ

    PHP5.4にはトレイトという文法が導入されて、多重継承の便利さが享受できるようになるそうです。 いろいろ試してみることにしました。 トレイトといえば代表選手はScalaですね。Scalaでいうトレイトは、インターフェースの定義とメソッドの実装を同時にやってくれる便利な概念でした。単一継承のOOP言語では「〜は〜の一種」という制約が強すぎて、「ペンギンは鳥の飛行メソッドによって飛行できてしまう」という問題があります。でもちゃんと「ペンギンは飛べないが泳げる鳥」を綺麗に解決する必要はあって、その解答として、トレイトのあるScalaではこんな解が導けます。 abstract class Animal abstract class Bird extends Animal { def hasBeak = true // 鳥にはかならずクチバシがある def hasWings = true // 翼

    PHP5.4とScalaのトレイト比較 - なんたらノート第三期ベータ
    stealthinu
    stealthinu 2014/07/01
    phpのtraitはinterface+traitでscalaのtraitと同じように使えると。やっぱこれあればabstractいらんよな。
  • 関数型もモナドも分からなくてもScalaと言う言語は便利らしい

    stealthinu
    stealthinu 2014/06/25
    ふんふん言いながら読んでったら、あっ、どっかでみたアイコン!お寿司をモナドって呼ぶことにした人だw
  • 絶対に理解出来ないモナドチュートリアル - konn-san.com

    世の中には、恐しい数のモナドチュートリアルがあって、それぞれモナドは象だとか、いや接ぎ木だ とか、プログラマブル・コンテナだとか、プログラム可能なセミコロンだとか、色々な説明がなされている。「モナド チュートリアル」で検索すれば、他にも色々に絵解きされた有象無象のモナドが大量に引っ掛かる。そうそう、モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?なんてのもあったな。 この記事の目的は別に、こうした既存のモナドチュートリアルを「間違ってる!」とか「わかるわけねーよ!」といって貶そうという訳ではない。実際、既に幾多書かれているチュートリアルの中でも、僕の云いたいことと殆んど同じようなことが書かれているものは沢山ある。 では、上の膨大なリストの末尾にまた一つ「わかりやすい比喩」を付け足そうというのか?というとそういう訳でもない。そうそう、モナドは比喩ではないというチュートリアル

    stealthinu
    stealthinu 2014/06/25
    『モナドを使うと副作用の大半を統一的に扱うことができる』『函数合成こそ、函数型プログラミングの本質』なんか自分がまだなにがうれしいのかしっくりきてないカリー化の話とも通じる、のかな?
  • モナドが解らない人へ、図解で絶対わかるモナドのしくみ - セカイノカタチ

    前置き みなさん、モナドって、わかりにくいですよね。 なので、図解することで解りやすく説明できるんじゃないかと、何回かモナドの図解を試みてきたのですが、むしろ複雑さが強調されてしまい残念な感じになってしまいました。 過去の図解 モナドってなんだよ!?全然わからないんで分解して図解してみた(´・ω・`) モナドの分解ふたたび ただ、以前よりモナドを表すメタファのイメージがあって、レゴブロックを組み合わせるようなカタチに例えてうまく説明できるんじゃないか。という予感がしていました。 そして、去年の年末ぐらいに、ついにそのカタチの具体的なアイディアを閃きました。 モナドを解りやすく図解する方法思い付いてるんだけど、絵心が足りなくて表現できない。モナドちゃんとかそう言うことではなく(´・ω・`) 2013-01-18 05:05:22 via ついっぷる for Android 今日、この記事を書

    stealthinu
    stealthinu 2014/06/25
    モナド… すんごい昔、最初にオブジェクト指向の入門書を読んだ時、継承の説明で犬とか人間とか動物の例が出てきてわけわからん、と思った時のことを思い出したわ。
  • Scalaで萌える関数型プログラミング[完全版]

    2. 前回までのあらすじ ● 7/9(土)のOITECでScalaについてのLTを やったのであった! ● 時間全然足りなかったしちゃんとしたことが 伝えきれなかった! (SlideShareにあげたら何人かにRTされた。 くだらん内容でサーセン ● 今回は時間に余裕があるのでもう少し 掘り下げてお話をしようと思ったのである! ● OITECで実践F#をもらったのでちょっと なびいたのはここだけの秘密だ! 2/52 3. 今から話す人の ざっくりとした説明 ● 角田裕樹(すみだゆうき) ● Hatena / id:razon ● Twitter / @razon ● ×ラゾン ○レゾン ◎しゾン ● 天領倉敷Scalaの言いだしっぺ ● 業はJavaプログラマ その時々で他のことも結構やってるけど… 3/52 4. これからお話しすること ● Scalaってなんぞ ● 関数型プログラミン

    Scalaで萌える関数型プログラミング[完全版]
    stealthinu
    stealthinu 2014/06/25
    scalaで関数型プログラミングの紹介
  • 第63回 アドテクスタジオのエンジニアに聞くScalaの魅力 | gihyo.jp

    サイバーエージェントのインターネット広告事業を技術面から支える「アドテクスタジオ」では、関数型言語の一つであるScalaが積極的に活用されています。今回、スマートフォン特化型のリアルタイムターゲティング広告を実現するサービス「Dynalyst」(⁠図1)を開発した韓翔元氏(写真1⁠)⁠、そしてスマートフォン向けアドプラットフォームである「AMoAdアドネットワーク」(⁠図2)の開発と運用を担当する井上ゆり氏(写真2)に、Scalaの魅力を伺いました。 最新のアドテクを詰め込んだDynalystにScalaを採用 ――最初にScalaに興味を持ったきっかけを教えてください。 井上:サイバーエージェントに入社する前から関数型言語に興味があり、評価が必要になるまで実際の計算を行わない遅延評価のしくみなどに魅力を感じていました。その中でも特にScalaにはJVM上で実行できるといったメリットがあり

    stealthinu
    stealthinu 2014/06/25
    scala始めるのに最初はjava的な書き方でだんだん関数型っぽく書いていくというのでいいよとの話。『おそらくモナドあたりで詰まる』モナドは説明読んでもさっぱりわからん…
  • Scala2.10から2.11の変更点 - xuwei-k's blog

    例のごとく、最初に注意書き まだfinalがでていないので、細かい部分変わるかもしれません*1 個人的に、「大きい変更点だなと思ったもの」「ライブラリ側のユーザーが直接使うクラス関連*2」「なんとなく興味があるもの」を中心にとりあげただけで、すべてを網羅してるわけではありません finalがでるまではできるだけ随時更新する予定です Scala2.11.0は、今のところ順調にいけば2014年の2月には最初のRCがでて*3、3月にはfinalがでるらしいです。*4 https://issues.scala-lang.org/browse/SI しばらくこの記事がblogの一番上にくるように、少し未来の日付にしておきます。 2.9から2.10のときの変更点に比べると、だいぶ少ないですね。(2.9から2.10の変更点が多すぎただけですが)細かく追えていませんが、その分コンパイラ側の細かいパフォーマ

    Scala2.10から2.11の変更点 - xuwei-k's blog
    stealthinu
    stealthinu 2014/06/18
    scala2.11では『case classやメソッドの22制限がなくなった』
  • Scala(スカラ)の紹介 (上) | ADN LAB's Blog

    こんにちは、k_oomoriです。今回は、タイトルの通りプログラミング言語Scalaについて書いてみたいと思います。 1/俯瞰風景 早速ですが、Scalaの特徴を俯瞰していきましょう。 ・オブジェクト指向と関数型のハイブリッド言語である Scalaは、関数型言語とオブジェクト指向(命令型)言語の特徴を統合したマルチパラダイムなプログラミング言語です。どちらのスタイルを用いるかはプログラマに委ねられており、関数型言語にすでに親しんでいる人はvalやイミュータブル(不変)オブジェクトを用いて関数型の記述を行えばいいし、命令型の方が適している問題に対してはvarとミュータブル(可変)オブジェクトによる命令型の書き方ができます。 ・静的 型月 型付け言語である 静的な型システムを持っているため、コンパイル時(というかIDEの力を借りればコーディング時)に型に関するエラーを確実に検出できます。さらに

    stealthinu
    stealthinu 2014/06/16
    scalaってこんな言語、と説明するときにこのまとめとても良さそう。時々ふいにネタ『飲み物のカレー』とか出てきてやられる。
  • slickでtuple22問題を回避する

    以前、社内用に書いたものから転載。 以前Playframework1.2.5で作った管理ツールをplay2.1.*でリプレイスするときにtuple22問題にあたったのでその回避策を。 Scalaの新しいバージョンはtupleの数も増えるらしいし、こんな問題は起きないようになるのかも。 Slickは非常に直感的で使いやすいORMだが、タプルベースの実装のため、22カラムまでしか扱うことができない。 回避策は主に3つあって テーブルを分割する タプルをネストさせる 必要なカラムだけをクラス定義に含める (引用 http://d.hatena.ne.jp/tototoshi/20121204/1354615421) リプレイスということもあり、すでに23カラム以上あるテーブルが存在していたので、タプルをネストする方法にした。 泥臭い方法だけど、「22カラムまでか〜」という理由で採用を見送られてい

    stealthinu
    stealthinu 2014/06/16
    slickでtuple22を回避する方法。これは確かにあんまりよくないなあ。