並び順

ブックマーク数

期間指定

  • から
  • まで

481 - 520 件 / 7825件

新着順 人気順

Scalaの検索結果481 - 520 件 / 7825件

  • Scala with DDD

    Scala関西Summit 2017 の発表資料です。 http://summit.scala-kansai.org/

      Scala with DDD
    • Rust の DI を考える –– Part 2: Rust における DI の手法の整理 - paild tech blog

      paild 社でお手伝いをしている yuki です。前回に引き続き Dependency Injection 略して DI の話題を書いていきたいと思います。今回は Rust における DI についていろいろと考えてみました。今回紹介する実装はかなり単純な例を用いたもので、この記事からさらにみなさんのアプリケーションの実装状況に合わせていくつか工夫は必要になるかもしれません。ただ、とっかかりとしては十分なものになっていると思うので、DI でお困りの方はぜひ参考にしてみてください。 今回実装したいアプリケーションのお題について 今回紹介する技法の種別について コンストラクタインジェクション 静的ディスパッチを用いたもの 動的ディスパッチを用いたもの 静的ディスパッチと動的ディスパッチの利点・欠点 shaku (DI コンテナ)を用いたインジェクション shaku の利点・欠点 余談: DI

        Rust の DI を考える –– Part 2: Rust における DI の手法の整理 - paild tech blog
      • ちょっと良さげな負荷ツール vegeta をつかって分散負荷試験を実現してみる - Qiita

        motivation Scalaのgatlingを使っていたけど、test_caseとして実装する必要があり、ローカル以外から仕組み的に実行するのがちょっと手間だった。(testをjarにするというのが難しい) シンプルにインストールせずに実行できる負荷ツールはないものか 負荷をかける側の限界でパフォーマンスを正しく測定できないこともあるので、クラスタ的に投げれたらなお良い そんなフワーッとした雰囲気で調べてみたら面白そうなものがあった。 その名も Vegeta 。 名前がやばい。そう、みんな知ってるアレ。 github にもこんな画像がデカデカと というわけで早速試してみましょう。 最初に結果を書くと、結構いい感触。おすすめしたい。 インストール方法 インストール方法は複数あります。 公式のドキュメントにあるのは2種類で、 Homebrewでインストールする(mac)

          ちょっと良さげな負荷ツール vegeta をつかって分散負荷試験を実現してみる - Qiita
        • 近未来的並列 LL

          Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...srisatish ambati

            近未来的並列 LL
          • Javaの10個のBad Partsのほとんどはscalaだと解決されちゃうんだぜ - xuwei-k's blog

            ネタ元 業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 結論から先に言うと、3と10以外は結構直接的にscalaで解決できるというか、javaに比べてscalaの方が便利だとおもいます。*1 あと、元ネタのblogの人はgroovy詳しいみたいですが・・・ groovyとscala比べるとgroovyの方が手軽で便利だったり、scalaのほうが型安全だったり*2いろいろあるかもしれませんが、groovyあまり詳しくないので、その辺の言及というか、比較はやめておきます。*3 1.標準APIのチェック例外が扱いにくい チェック例外ってなにそれおいしいの?(・ω・) java Field field; try { field = getClass().getField("testField"); Object value = field.get(this); }

              Javaの10個のBad Partsのほとんどはscalaだと解決されちゃうんだぜ - xuwei-k's blog
            • 関数型プログラミングはまずは純粋関数型言語を用いて、考え方から理解しよう

              この記事は、関数型プログラミングはまず考え方から理解しよう の記事を純粋関数型言語Elmで書き換え、一部の文章について批判的に言及させていただいた記事になります。この記事を書こうと思ったきっかけとしては、今回参考にさせていただきた記事が過去に書かれたものにも関わらず、今に渡っても見られていそうなこと。未だにパラダイムの理解に関する誤解が多く散見されること。改めて純粋関数型言語の実用性・有用性について、見直されるべきだと思い、この記事を執筆させていただきました。 次のステップアップ記事は、[超入門] FizzBuzzで考える関数型プログラミング学習を純粋関数型言語でやる理由です。 はじめに、この記事の主張を結論としてまとめておきます。 対比すべきは、関数型プログラミングとオブジェクト指向プログラミングではなく、関数型プログラミングと手続き型プログラミングである 関数型プログラミングの考えを学

                関数型プログラミングはまずは純粋関数型言語を用いて、考え方から理解しよう
              • IBM Developer

                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.

                  IBM Developer
                • Google Code Archive - Long-term storage for Google Code Project Hosting.

                  Code Archive Skip to content Google About Google Privacy Terms

                  • 継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita

                    継続モナドを使ってPlay FrameworkのActionを作るという話をします。 Play FrameworkはScalaのWebアプリケーションフレームワークであり、Actionはそのコントローラー部分になります。 この記事を読むにあたって継続モナドの知識は前提としませんが、 ある程度のモナドの知識(Scalaのfor構文の使い方、ScalaのモナドがflatMapメソッドで合成できることなど) Play Frameworkの使い方(PlayのActionがどのようなものであるかなど) などの知識は前提とし、説明を省略させていただきます。 話の流れとしては以下のようになります。 コントローラーで継続モナドを使いたい動機 継続モナドとは? なぜコントローラーで継続モナドを使うと便利なのか? 継続モナドとFutureを組み合わせることでエラー処理を整理する 継続モナドを使ったAction

                      継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita
                    • Finagle, from Twitter

                      Finagle is an extensible RPC system for the JVM, used to construct high-concurrency servers. Finagle implements uniform client and server APIs for several protocols, and is designed for high performance and concurrency. Most of Finagle’s code is protocol agnostic, simplifying the implementation of new protocols. Finagle is written in Scala, but provides both Scala and Java idiomatic APIs. GitHub p

                      • DIについてあれこれ - tototoshi の日記

                        Dependency Injectionとはコンポーネント間の依存関係をプログラムのソースコードから排除し、外部の設定ファイルなどで注入できるようにするソフトウェアパターンである ってwikipedia先生が言ってました。 Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 - Qiita を読んでいろいろ考えたので、なんで今さらって感じのことを書きます。 ScalaでDIというとDIコンテナとかCake PatternとかReader Monadとかって話になっちゃうんですが、これらはいかにかっこよくDIするかの話であって、別にこういった道具やパターンを使わなくてもDIは可能という話です。 Constructor Injection 簡単な例で考えます。今ここにUserRepositoryにべったり依存し

                          DIについてあれこれ - tototoshi の日記
                        • Apache Ivyの紹介と基本的な使い方 - 達人プログラマーを目指して

                          Apache Ivyについては本ブログでも何回か用語自体は取り上げてきましたが、現状日本語での情報が限られるためか、AntそのものやMavenに比べるとユーザーが少ないように思われます。ここで基本的な使い方やMavenとの違いについて簡単に紹介させていただきたいと思います。 Apache Ivyとは 本家のホームページは以下の通りです。 Home | Apache Ivy ™ もともとはJayasoftという組織で開発されていたツールですが、バージョン2.0以降、Antの関連プロジェクトとしてApacheプロジェクトの元に加わっています。(Apacheというブランド名はツールを組織に導入する際に結構重要ですね。) 上記のホームページでは「アジャイルな依存性管理ツール」として紹介されていますが、Mavenの機能の中からビルド機能やプロジェクト管理機能を無くして、ライブラリーの依存関係の管理に

                            Apache Ivyの紹介と基本的な使い方 - 達人プログラマーを目指して
                          • インタフェースと型クラス、どちらでもできること・どちらかでしかできないこと - Qiita

                            最近にわかに 型クラス が盛り上がっているようです。しかし、型クラスはインタフェースに似たものだという意見もあればまったく別のものだという意見もあり、混乱する人が多いのではないかと思います。 そのような混乱を招く理由は、 インタフェースと型クラスはどちらも抽象化を実現するためのもの であり、 インタフェースでも型クラスでもできること インタフェースでしかできないこと 型クラスでしかできないこと があるからです。 1 に着目した人は似ていると語り、 2 や 3 に着目した人はまったく違うものだと言います。 本投稿では、 Java / Kotlin のインタフェース、 Haskell の型クラス、 Swift のプロトコルを比較し、上記の 3 点を整理します。 Swift のプロトコルを加えるのは、 Swift のプロトコルがインタフェースと型クラスの両方の性質を備えたものなので、比較対象とし

                              インタフェースと型クラス、どちらでもできること・どちらかでしかできないこと - Qiita
                            • Scala で書いたマイクロサービスを Go で書き直した話 - JX通信社エンジニアブログ

                              この記事はJX通信社 Advent Calendar 2019 2日目の記事です。 昨日は、たっちさんの「Kubernetes Admission Webhookでリソース作成を自在にコントロールする」でした。 こんにちは、サーバーサイドエンジニアの @kimihiro_n です。 今回は長年動かしてた Scala のマイクロサービスのリビルドを行った話をしようと思います。 TL;DR 新しい言語を投入するのにマイクロサービスは便利 Scala で感じていた問題点を解消しつつ Go へ移行できた 消費メモリが大きく減って安定稼働できるようになった 予防線を貼っておきますと、Scala より Go のほうがいいよね、といった本旨ではありません。 Scala で書いたマイクロサービス 弊社のマイクロサービスの一つにカテゴリ分類専用のサービスが存在します。 カテゴリやキーワードを登録しておくとル

                                Scala で書いたマイクロサービスを Go で書き直した話 - JX通信社エンジニアブログ
                              • ReactiveX

                                ReactiveX An API for asynchronous programming with observable streams Choose your platform The Observer pattern done right ReactiveX is a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming

                                • ハードウェア構築言語 Chisel がアツい(かもしれない) - bonotakeの日記

                                  いきなりタイトルと関係なさそうな話題からスタートしますが、今週1番のトピックは、なんと言ってもEdge TPUがオフィシャルに発売されたことでしょう。 しかもUSB接続のアクセラレータがたった80ドル弱ですよ。日本だとMouserで8800円ほど。 こいつをいち早く入手できたIdein社内でのお試し結果がこちら。 Edge TPU(USB版) Mobilenet v2 1.0 224x224 ImageNet Raspberry Pi 3 Model B v1.2 で10msちょっとでした pic.twitter.com/BOfSAgUewJ— Koichi Nakamura (@9_ties) 2019年3月5日 10msってことはあと6ms程度別の処理に充てても高精度カメラのフレームレート60fpsに間に合っちゃうってことで、これはくそっ速い。 僕は去年夏にEdge TPUがアナウンス

                                    ハードウェア構築言語 Chisel がアツい(かもしれない) - bonotakeの日記
                                  • 関数型とオブジェクト指向という一見相反するプログラミングパラダイムの併用について理解した - 石橋秀仁(zerobase)書き散らす

                                    最近、ScalaとSmalltalkを触っていて思ったこと。 一見すると、関数型は「データ」より「処理」を重視しているように見える。 関数型プログラミングパラダイムそのものは「副作用のない関数」の合成による演算の恩恵を最大限に享受するパラダイムだ。副作用がないので並列演算の高速化に向いている。 昨今のマルチコア化やクラスタ化のメリットを最大に活かすには関数型プログラミングパラダイムの導入が鍵だろう。プロセッサ単体での性能向上が頭打ちになってきたのだから、並列演算に対応したプログラミング方式へのシフトは不可避だろう(ただし高性能が要求されない分野は除く)。 関数型プログラミングパラダイムは、データよりも処理を重視したパラダイムのように見える。 一見すると、オブジェクト指向は「処理」より「データ」を重視しているように見える。 オブジェクト指向プログラミングパライダムは、(Smalltalk的に

                                      関数型とオブジェクト指向という一見相反するプログラミングパラダイムの併用について理解した - 石橋秀仁(zerobase)書き散らす
                                    • GiltでのScala,Docker,AWSを使ったマイクロサービスのスケールアップ

                                      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が最近リリースされ、重要な変...

                                        GiltでのScala,Docker,AWSを使ったマイクロサービスのスケールアップ
                                      • Hadoop/Storm の統合を実現する Twitter の SummingBird - Okapies' Archive

                                        Twitter が SummingBird を正式リリースして早二ヶ月。「日本語の紹介記事がほとんど出てないな」と気付いたので、調査がてらまとめてみました。 SummingBird とは? MapReduce なプログラムを書くための Scala/Java ライブラリ。最大の特徴は、ひとたび SummingBird で書いたジョブは Hadoop でも Storm でも同じように実行できること。 SummingBird では、Hadoop を使う「バッチモード」と、Storm を使う「リアルタイムモード」に加えて、二つを同時に実行する「ハイブリッドモード」がある。ハイブリッドモードでは、ジョブの作者が特に配慮しなくても、バッチとリアルタイムの処理結果を自動的にマージできる。 ハイブリッドモードでは、同じジョブを Hadoop と Storm で同時に実行できるので、Hadoop の耐障害性

                                          Hadoop/Storm の統合を実現する Twitter の SummingBird - Okapies' Archive
                                        • Scalaのnull/Nothing/Nil/Noneはやりすぎなのか? - ぐるぐる~

                                          Twitterしてたら目に入ったので軽く。 Javaにおけるnull。これまでとこれから この後のスライドで、 Scalaにおける「何もないもの」の分類はやり過ぎ感はある と言われているんですが、ある程度は誤解に基づく意見だよなぁこれは、ということを言っておこうかなと。 Scalaについて 日本では説明が不要なくらいScalaって有名になってると思うんですが一応。 ScalaはJVMの上で動作する、(クラス指向の)オブジェクト指向プログラミングと関数型プログラミングを融合させた言語です。 そして、Scalaのコア機能はどちらかというとオブジェクト指向プログラミング寄りです。 オブジェクト指向プログラミングをベースに、関数型の色々なものを実現している感じです*1。 オブジェクト指向プログラミング的な機能として真っ先に思いつくのは何でしょうか? 割と上位の方に、「継承」とか「型階層」とか来るん

                                            Scalaのnull/Nothing/Nil/Noneはやりすぎなのか? - ぐるぐる~
                                          • プログラマが体験するべき○つのこと - laiso

                                            プログラミングはそれ自体が目的であっていい - mizchi log 大事なのは、いくつ地雷を踏んだか、だ。地雷を踏んだ数だけ強く慣れる。真に必要なのは、独力での問題解決能力。Python2系でsjisのHTMLをlxmlでスクレーピングすると、地雷を7つぐらい同時に踏めるからおすすめだ。 僕もまあそれなりに手を出しているのだけど、他の人も抑えるべきだと思った概念は、次のものだ。 Haskellにおける入出力IOと副作用の概念 HaskellのMaybe, またはScalaのOption型 Scalaのtrait Node.jsの非同期Promiseパターン C#のgetter/setter/readonly/async等の型アノテーション 本題にはあんまり興味がなかったんだけどこの部分がおもしろかったのでイッチョカミしたい。 成功体験の共有とまではいかないけど、こういう「これはやってよか

                                              プログラマが体験するべき○つのこと - laiso
                                            • ScalaでWebアプリケーションのエラー処理を綺麗に書く - はこべにっき ♨

                                              Play Frameworkにおいて、POSTリクエストから得られたbody中のパラメータをもとに何か処理をするというよくあるコードを、ちょっと整理して見やすくする方法を学んだのでメモがてら御シェアさせていただきます。Playのリクエストハンドラを書くときに頻繁に現れたので、例がPlayのコードになっているけど、内容的にはScala全般的な話だと思う。Scalaプロみたいな人にはまったく新しいことはないと思う。 本題と関係ないけど、YAPCでScalaの話をするかもしれません。言語自体の話よりかは採用理由とか開発フローの話を、これまでのPerlでのWeb開発を踏まえて話す感じになりそう。Scala In Perl Company : Hatena - YAPC::Asia Tokyo 2014 さて、本題ですが、話題の対象になるのは以下の様なPlayFrameworkのコードです。 def

                                                ScalaでWebアプリケーションのエラー処理を綺麗に書く - はこべにっき ♨
                                              • Play2+nginx/Akka/WebSocketで高速双方向通信

                                                前回の記事「Play2(+JavaScript)アプリを高速化、最適化する4つのテクニック」では、キャッシュの利用方法や非同期通信を行う手法、クライアントサイドでJavaScriptをうまく扱うテクニックについて紹介しました。 今回はPlay framework 2.x(以下、Play2)を既存のWebサーバーと連携させる方法、並列処理や双方向通信を行う方法を紹介します。 WebサーバーとPlay2の連携 Webサーバーと連携する必要性 連載第2回記事「Play 2.0のアーキテクチャとディレクトリ構成の基礎知識」で解説をしましたが、Play2では「Netty」というHTTPサーバーを内包しており、それを使用してリクエストを処理します。そのため、Play2の起動ポートを80番に設定すれば通常のWebサーバーと同じようにアクセス可能です。 単純なWebアプリケーションの場合はこれで問題はない

                                                  Play2+nginx/Akka/WebSocketで高速双方向通信
                                                • Scala + MongoDB + Herokuで2chクローンを作る(連載第1回)

                                                  人生で3回2chクローン掲示板システムをプログラムし、運用したことがある。 まずはじめは、C++。boostを使ってテンプレート満載な構成だった。VC6でコンパイルできないパターンがあって泣いたっけ。コンパイルの「遅さ」にほくそ笑んでた。あの頃は若かった。 そのコードを使って東京工業大学掲示板というWeb掲示板システムを運用していた。C++では機動的な新機能開発が難しいことを、すぐに思い知った。当時使ったことがなかったPHPで試しにリライトしてみた。数時間で開発できちゃった。すぐリプレイスしちゃうよね。 ニコニコ大百科というWikiシステムを書いたときにも、付随する2ch式の掲示板システムを書いた。Rubyだった。Rubyで実用的なWebアプリケーションを書いたことがなかったが、これも難なく実装することができた。UTF-8を採用したので、トリップの互換性を取るのが面倒だった。 Python

                                                    Scala + MongoDB + Herokuで2chクローンを作る(連載第1回)
                                                  • Scala on Hadoop: Hadoop Conference - stanaka's blog

                                                    先日、Hadoop ConferenceでScala on Hadoopというタイトルで発表してきました。スライドを以下に置いておきます。 Scala on HadoopView more presentations from Shinji Tanaka. ダイジェストとして、ScalaをHadoopで動かすための方法を書いておきます。 まず、Hadoop上でScalaを実行させるためには、JavaとScalaを接続するライブラリが必要となります。ここでは、SHadoop( http://code.google.com/p/jweslley/source/browse/#svn/trunk/scala/shadoop )を使用します。SHadoopは、型変換を行うシンプルなライブラリです。 よくあるWordCountのサンプル、WordCount.scala (http://blog.jo

                                                      Scala on Hadoop: Hadoop Conference - stanaka's blog
                                                    • Scalaで学ぶヘキサゴナルアーキテクチャ実践入門

                                                      「Scala将軍達の後の祭り」での発表資料 http://scala-syogun-matsuri.connpass.com/event/28124/

                                                        Scalaで学ぶヘキサゴナルアーキテクチャ実践入門
                                                      • 分散処理に入門してみた(Hadoop + Spark) | Casley Deep Innovations株式会社 技術ブログ

                                                        こんにちは。SI部の腰塚です。 RDBやデータウェアハウスの仕事に携わることが多かった筆者は、数年前からたびたび聞こえたビッグデータ分析や機械学習のための分散処理フレームワークに興味を覚えたものの、ついぞアクセスしないままここまで来てしまいました。 今回ブログを書くにあたって、せっかくなのでイチから手さぐり入門し、いまさら他人に聞けない分散処理の初歩からhadoop・sparkを触ってみるまでをまとめたいと思います。 1.分散処理の基礎知識 1-1.分散処理の処理方式:MapReduce まず分散処理とは、ひとつの計算処理をネットワークで接続した複数のコンピュータで同時並列で処理することです。 ビッグデータ活用の市場が日々大きくなるに従って、数百テラ~ペタのデータ処理も珍しいものではなくなっており、日常的にこの規模のデータを扱うシステムでは、現実的な時間的・費用的コストで処理する工夫が必要

                                                          分散処理に入門してみた(Hadoop + Spark) | Casley Deep Innovations株式会社 技術ブログ
                                                        • 非同期処理の歴史から見たコンピューティングの進化

                                                          B2C、B2B プロダクトマネジメントの違い(および思考の罠) / B2C, B2B PM and reduction fallacy

                                                            非同期処理の歴史から見たコンピューティングの進化
                                                          • wavelet行列で高速な「もしかして友だち?」検索 | 株式会社サイバーエージェント

                                                            業務経歴: Sierでのソフトウェア開発・大手メディアでのサービス運用を経て2012年サイバーエージェント入社。 アメーバ事業本部コミュニティサービスの開発責任者を経て、現在はアドテクスタジオで広告配信技術に注力。 好きな分野はグラフ探索とチューリングマシン。 ソーシャルサービスでは、ユーザ間のつながりやユーザ同士の類似性がとても重要です。 つながりの近いユーザや自分と似ているユーザを「もしかして友だち?」とサジェストすることでユーザ間のつながりを伸展させることができます。 そこで、ユーザの「つながり」具合が似ているユーザを「友だちかもしれないユーザ」としてサジェストを行うことを考えました。 しかし「つながり」のデータというのはユーザ数のベキ乗であるため、容量が大きくなりやすい性質があります。 即ち、「つながり」類似度の算出には時間がかかる、ということです。 この「つながり」類似度算出

                                                            • 開発チームが大規模リプレイスを成功させるために取り組んだ "7つの取り組みと反省"【Backlog Play 化プロジェクト】 | Backlogブログ

                                                              ヌーラボの松本です。「Backlog Playプロジェクト」に2017年2月から途中参加し、プロジェクト解散の2019年7月までメンバーの一員として動いていました(プロジェクトの概要は 時系列でみる!4年の歳月をかけてPlay Frameworkで「大規模リプレイス」した話をご覧ください)。 このBacklog Playプロジェクト(以下、Play化プロジェクト)では、期間によって私の役割は変わりました。 参加した当初は開発メンバーとしてコードを書いていましたが、2018年4月からプロジェクト終了の2019年7月までは、開発をしながらプロジェクトの取りまとめをしていました。 マネジメントのような役割ははじめてだったので、いろいろ未熟な点もありましたが、プロジェクトの機能リリースを早めるために、不具合対策や手戻り削減といった問題と向き合いました。 本記事では、私のPlay化プロジェクトでの役

                                                                開発チームが大規模リプレイスを成功させるために取り組んだ "7つの取り組みと反省"【Backlog Play 化プロジェクト】 | Backlogブログ
                                                              • Scala.js

                                                                Scala.js 1.15.0 Harness the Scala and JavaScript ecosystems together. Develop robust apps for browsers, Node.js, and serverless. Strong typing guarantees your code is free of silly mistakes; no more mixing up strings or numbers, forgetting what keys an object has, or worrying about typos in your method names. Scala.js takes care of all this tedious book-keeping for you, letting you focus on the ac

                                                                  Scala.js
                                                                • 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のトレイト比較 - なんたらノート第三期ベータ
                                                                  • 関数型プログラミング言語のまとめ - ワザノバ | wazanova.jp

                                                                    http://funceng.com/2013/11/03/review-of-functional-languages/ Kevin Buellがブログの一連のエントリーで関数型プログラミング言語の概要をまとめています。 1) Haskell ラテン語がわかる人には親しみやすい。 [Background] 遅延評価の研究成果をとりまとめる委員会が1990年にHaskell 1.0の仕様をつくった。コンパイラはGlasgow Haskell Compiler (GHC)が最も有名。Haskellに関する研究はMicrosoft Researchで盛ん。.NETのための関数型言語であるF#もMicrosoft Researchの成果であるが、別の研究者グループの手により後年世にでてきた。 その他の項目は原文参照ください。 [Comparative Description] [Syntax H

                                                                    • Your platform for software quality management

                                                                      Continuous Integration Integrate and deploy your applications

                                                                      • クラスを作ることをサボらない - 絵描きエンジニアの日常

                                                                        JJUG CCC 2018 Fallのいくつかのセッションで型についての話があったので書きたくなった。 この話はJavaやScalaみたいな静的型の世界の思想で、多分Rubyとかでは違う思想だとおもう。 Javaを書いてるときのおれきゅーの脳内 型を定義して取りうる値を狭めることで 間違った使い方ができないようにする ことを最初に考えてる。多分。防御的プログラミングってやつなのかな?しらんけど。 とにかくエラーはより早いタイミングで見つかるほうが良くて、実行時よりコンパイル時にわかるほうが便利だし、コンパイル時よりエディタ上でリアルタイムに分かるほうがもっと良い。 たとえば汎用的な型を使うとこんなミスがあり得る。 long id = 10; new User(id); new Item(id); 静的型なら多分こうかけるほうが間違えなくて嬉しい。 Id<User> id = Id.of(1

                                                                          クラスを作ることをサボらない - 絵描きエンジニアの日常
                                                                        • 低価格Kindle技術書籍メモ - カレーなる辛口Javaな加齢日記

                                                                          Kindle本を探していて目にとまったので,主に500円以下の技術系低価格本について適当にまとめてみた.*1 雰囲気から判断して個人出版なものも多いと思う.中には怪しげな物だって含まれてるかもしれない. 内容は未確認だし,おそらく価格相応*2だと思うので購入は自己責任で. 今はまだまだ発展途上で物足りない気がするが,自分としては,たとえば 新技術のチュートリアルとか基本操作とか,「出版社経由で書籍としてまとめて出すにはイマイチだけど,初心者が英語のサイトを読んで勉強するには難しい.さりとて無料で出すには負担が大きすぎる」*3 *4 同様に,たとえばFirefox拡張のfirebugの使い方とか拡張の作り方みたいな,マイナー技術の解説書. 特定のライブラリの日本語化や日本語での文字化け対策のような,日本でしか売れなさそうな超マイナー解説書・手順書. Linuxの基本コマンドやWindow8の

                                                                            低価格Kindle技術書籍メモ - カレーなる辛口Javaな加齢日記
                                                                          • Jenkins で任意のブランチをテストする - mixi engineer blog

                                                                            PHP よりは Xslate が好きな加藤和良です。プログラミング言語のなかでは Scala が好き です。 さて今回も いまからでも間に合う開発者テスト Buildbot で継続的インテグレーション Jenkins はじめました + ほか3つ に引き続き開発者テストの話をします。 テストをリモートで実行したい 最近になって何度か「このブランチのテストを Jenkins で一度だけ実行してもらえませんか?」という相談をうけました。最初はなにか勘違いをされているのかと思い「いや Jenkins がやっている仕事はテストを実行しているだけで、テストは手元でも実行できますよ」と説明していたのですが、話を聞いていると「テストの実行が遅いので Jenkins のホストを使いたい」という意図だということに気づきました。 以前に何度か説明している通り mixi における「ブランチ」は開発版です。安定版に

                                                                              Jenkins で任意のブランチをテストする - mixi engineer blog
                                                                            • Optics: 「パス」に型を付ければ、データ全体に型を付ける必要はない - Lambdaカクテル

                                                                              あまり知られていない関数型言語のおもしろ概念として、Opticsというものがある。 Opticsとは、オブジェクト指向言語で言うところのSetter/Getterを一種の関数として捉え、いくつかの便利な特性を付与したものの総称だ。この便利な特性によって、Setter/Getter以上のことをパワフルにこなせる。 最も有名なOpticsはLensであり、色々な解説資料が(主にHaskell向けに)出ている。 blog.recruit.co.jp さて、これまでのOpticsを紹介する資料はSetterとGetterとしての側面に注目しがちだったので、じゃあOpticsの何が良いのか、Scalaでやる意義は何か、という側面をこの記事で紹介しようと思う。 Optics -- vs. copyメソッド地獄 Opticsは合成可能である Opticsはボトムアップのアプローチである Opticsがう

                                                                                Optics: 「パス」に型を付ければ、データ全体に型を付ける必要はない - Lambdaカクテル
                                                                              • Scala2.10.0のDependent method typesと型クラスを組み合わせた『The Magnet Pattern』がヤバい件 - ( ꒪⌓꒪) ゆるよろ日記

                                                                                これが……型の力かッ……!! spray | Blog » The Magnet Patternという記事で、「The Magnet Pattern」というデザインパターンが紹介されている。 これは、メソッドオーバーロードで解決していた問題を、型クラスとDependent method typesを組み合わせて置き換えることで、オーバーロードの際の様々な制約(Type Erasureなど)を突破し、より柔軟な拡張性を得ることができるというもの。このパターンでは、引数の型に応じて異なる結果型を返すようにできる。 この記事で、今まで何のために使われるのかわからんかったDependent method typesの有効性が理解でき、あらためて型の力を思い知った。 以前に"Generalized type constraints"(Scalaで&lt;:&lt;とか=:=を使ったgeneraliz

                                                                                  Scala2.10.0のDependent method typesと型クラスを組み合わせた『The Magnet Pattern』がヤバい件 - ( ꒪⌓꒪) ゆるよろ日記
                                                                                • Quine リレー - まめめも

                                                                                  ref: https://github.com/mame/quine-relay/ 以下は、自分自身を出力する REXX プログラムを出力する Python プログラムを出力する R プログラムを出力する (...略...) を出力する Scala プログラムを出力する Ruby プログラムです。合計 50 言語を使います。 eval$s=%q(eval(%w(B=92.chr;N=10.chr;n=0;e=->(s){s.gsub(/[#{B+B+N}"]/){B+(N==$&??n:$&)}};E=->(s){'("'+e[s]+'")'} ;d=->(s,t=?"){s.gsub(t){t+t}};D=->(s,t=?@){s.gsub(B){t}};Q=->(s,t=?$){s.gsub(t){B+$&}};puts(eval(%q("objectXQRX extendsXApp{

                                                                                    Quine リレー - まめめも