![Scala is a Maintenance Nightmare - MungingData](https://cdn-ak-scissors.b.st-hatena.com/image/square/c942abc19b08f7cc8b6566adc5f473bd575c0348/height=288;version=1;width=512/https%3A%2F%2Fmungingdata.com%2Fwp-content%2Fuploads%2F2021%2F03%2FScreen-Shot-2021-03-21-at-6.40.24-PM-1024x224.png)
スタートアップ企業が実践する「身の丈スクラム」の現在地 / Current State of 'Right-Sized Scrum' Practices in Startups
はじめに はじめまして、ABEJA最年少メンバーでリサーチャーをやっている日熊です。 普段は、Deep Learningに関する研究をやっています。 仕事ではPythonを使っていますが、実際はScalaとかRustとかHaskellに最近ハマっています。 本日は趣味で作ったPythonのライブラリについて紹介します。 この記事では主に以下の様なことが起こります。 PythonでScalaっぽいlambda式を書けるようにした どうやってlambda式を実現したのか説明 既存ライブラリより高速だった 目次 今回作ったもの Scalaのようなlambda式をPythonで実現するライブラリを目指して作りました。 Scalaでは以下のようなコードが書けます。 val numbers = Array(1, 2, 3, 4, 5) val sum = numbers.reduceLeft[Int]
ScalaのアクターライブラリであるAkkaでは今までHTTPがIOパッケージでサポートされてきませんでした。HTTPのサポートはAkka Streamの開発とともになされたのです。なぜアクターモデルとHTTPをすぐ統合せずにStreamの登場を待つことになったのか?この疑問に答えることはアクターの問題を考えるよい題材です。 Sprayの革新とその限界 SprayはAkkaのアクターモデルとHTTPを統合して成功したフレームワークです。SprayはJVMベースのフレームワークの中で最高のパフォーマンスを誇りました。SprayはServletがもつがスレッドの高速性と、NodeJSがもつイベントループによる大量のリクエストを効率的に捌くことの特性の両立を、アクターによって可能にしたのです。 ところがSprayはアクターモデルならではの問題とも戦うことになります。Reactive Manife
ホーム 映画 デジタル・IT ゲーム エンタメ グルメ 動画 アキバ ネットで話題 LT1:「十人十色のScalaの始め方」 トップバッターはナイルの佐藤和輝さん。現在はApplivのマイクロサービス化&検索機能改善に携わっている。Applivは「アプリインストールを、もっと身近なものにする」をミッションに、2012年8月リリースされたユーザー参加型のスマートフォンアプリ発見サービス。国内版のほか、英語版も含め世界10カ国で展開している。 ナイルでは2015年3月にScalaの導入が決まり、5月には一部でScalaによる開発がスタート。8月にはScalaをテーマに開発合宿を実施し、10月からは本格的にプロジェクトにおいてScalaを使っているのだそう。 佐藤さんのLTでは、Scalaを始めたきっかけやScalaを始めるためにまずしたこと、ナイルのエンジニアがどんなことにつまずいたかなどが紹
Lagomとは? LagomはLightbend社(旧Typesafe社)がリリースした新しいマイクロサービス向けのフレームワークです。 www.lightbend.com 元々Scalaの開発元であったLightbend社が開発しているだけあり、PlayやAkka、sbtといったScalaベースの技術基盤上に構築されていますが、現時点ではJava向けのAPIのみ提供されているJava用のフレームワークとなります。*1 これまでもSpring Bootなど手軽に使えるAPIサーバ向けのWebフレームワークは存在したわけですが、Lagomは最初からリアクティブなマイクロサービスの構築を前提に設計されており、いわば「マイクロサービスネイティブ」とも呼ぶべきフレームワークになっています。 実際にLagomを使うかどうかはさておき、新しいコンセプトのフレームワークなので学ぶことも多いのではないかと
こういう人は、あとあと処理が詰まったり理解できない挙動が起きたりして困るので注意。 よくわからないけどコンパイル時に怒られるので import scala.concurrent.ExecutionContext.Implicits.global を書いている Future.apply は 「スレッドを立ち上げて非同期に実行する」と理解している 特に何も考えず Future 内で Thread.sleep をしている ExecutionContextとは Future#mapやFuture.applyにimplicitパラメータとして要求される*1ExecutionContextって何なのか? 何か渡さないといけないからとりあえず import scala.concurrent.ExecutionContext.Implicits.global と書いている人もいるんじゃないだろうか。 Ex
(3/15 : タイトル修正しました。wは小文字ですね、すみません・・・) PlayFrameworkが流行り始めてから割と経ちますので、そろそろ正式採用しようと考える方も多いのではないかと思います。 強力な静的型付けで守られたPlayは、ミッションクリティカルなシステムや数万行を超える大規模システムの構築に特に向いているような気がします。 また、Servletを使っていないのに加えてMVC構造がベースなので、今までRailsなどで開発をしていた人でもシームレスに移行できると思います。 しかし、忘れてはならないのがPlayのアーキテクチャが全ての処理が非同期で行われることを前提としているという事です。 ここを忘れてPlayをただの強力な静的型付けで守られたMVCフレームワークとだけ考えて開発を進めてしまうと、本番環境で稼動させた時にパフォーマンスが上がらずに困ることになるかもしれません。今
The document discusses the pros and cons of the Scala programming language. It outlines some of the good aspects of Scala like its functional and object-oriented nature, immutable collections, and ability to reuse Java libraries. However, it also notes challenges like slow compiler and IDE tools, a steep learning curve, and the potential for overly complex code. While Scala has drawbacks, the auth
下記の特性を踏まえた上で質問を2つさせてください。 class と case class を比べたときに次のような特性があります new を書かなくても良い scala> case class Foo() defined class Foo scala> class NoneCaseFoo() defined class NoneCaseFoo scala> Foo() res0: Foo = Foo() scala> new Foo() res1: Foo = Foo() scala> NoneCaseFoo() <console>:8: error: not found: value NoneCaseFoo NoneCaseFoo() scala> case class Card(value:Int) defined class Card scala> class NoneCaseCa
多くのシステムは“パワフル”であることを売りにしています。パワフルであることを悪いことだと指摘するのは困難に思えますし、この言葉を使う人々はほとんど全て、良いことと想定して使っているようです。 この記事では、 パワフルではない 言語やシステムが必要なケースも多いということを論じたいと思います。 まずその前に、この記事を書くにあたって、私自身のオリジナルの知見はほんのわずかしかない、ということを述べておきます。ここに述べた一連の考えの背景には、Hofstadterの著作 『Gödel, Escher, Bach: An Eternal Golden Braid』 (訳注:日本語版があります。 『ゲーデル、エッシャー、バッハ – あるいは不思議の環』 )を読んだことがあります。この本を読んだことで、私自身の経験から得てきた原則について、考えがまとまりました。Philip Wadlerの投稿、
Scala has long been part of the CrowdStrike stack, the primary language in fact. I helped lead the adoption of Scala as we first started to develop our applications back in 2012. In fact it was one of pros for my decision making process of wanting to come to CrowdStrike. Several of the early developers were interested in adopting it as well so it seemed to be a nice fit. I had come from a company
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
少しでも高く車を売りたい。そして申込みをスムーズに行うためにも 車買取の一括査定サービスはとても便利です。 複数の業者へ一斉に中古車査定を依頼するのですが、交渉には少し注意が必要です。 一括査定からの申込みなので、業者も始めから競争相手がいることは知っています。 業者としては少しでも低い査定額で早く決めてしまいたいもの。 他の業者が来る前に、決断させるような交渉を進めます。 「今決めるなら、プラス10万円上げます」というような上乗せした査定額を 提示することもあります。思わず決めたくなりますが、冷静に考えてみると 最初からプラス10万円の提示ができたはずです。このやり方に誠意を感じますか? それでも決めてしまうか、他の業者を待つかはご自身次第になりますが、 このような交渉術はよくあることです。頭に入れておくと良いですね。 高額な査定額を探すためには、査定を依頼した車買取業者の金額がすべて
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, パターンマ
Slick 3.0がリリースされたので、GitBucketをSlick 3.0にアップデートするべくいろいろ試してみました。 Slick 3.0は別名Reactive Slickというだけあり、これまでとはプログラミングモデルがドラスティックに変わっています。具体的に言うとDBIOActionというオブジェクトを介してデータベース操作の定義と実行が明確に分離されています。要するにMonadicなプログラミングスタイルになっているということです。 他にもReactive StreamsとかOptionサポートの強化などSlick 3.0の新機能はいろいろありますが、一番大きいのはこの点だと思います。 また、DBIOActionの実行は全面的にFutureベースになっています。Playなどと組み合わせて使用する場合、Slickを使った処理があってもAsyncResultで返すことができるように
タイトルは釣りです。 まずおおざっぱに用語の整理をさせていただくと、ここで「トレイト」は、シェルリ(Nathanael Schärli)らが2002年頃に発表したTraitsやそれ用のエンティティ(trait)を指し、「ミクスイン(Mixin, mixin)」は従来からある実装の多重継承方法のひとつ、具体的には継承機構を使ってメソッドを定義したクラス様エンティティ(クラスでも構わない)を継承パスに差し込むことで対象となるクラスにメソッドを追加する機構(特別な機構を要しないときは単なるクラスの運用方法)、そのときに用いるクラスあるいはクラス様エンティティ(例えばRubyならモジュールとか)を指すことにします。 トレイトやその機構について説明すべきことはいろいろありそうですが、詳しくはシェルリらの論文(Traits: Composable Units of Behaviour など)を読んでい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く