This presentation includes these following three things: 1. Error Handling with MonadError 2. Retry Handling with cats-retry Sample Code: https://g…
Practical FP in Scala: A hands-on approach, is a book for intermediate to advanced Scala developers. Aimed at those who understand functional effects, referential transparency and the benefits of functional programming to some extent but who are missing some pieces to put all these concepts together to build a large application in a time-constrained manner. Throughout the chapters we will design,
個人的に、すごい細かい使い捨て含めるとおそらくもう1000個くらいはrule書いたことあるので、おそらく現状では日本一scalafix rule書いていると思うのですが、 慣れるとそのくらい気軽に書けてすぐ役に立って便利なので、既存の他人が書いたruleを使うだけではなく、独自に書くことを強くすすめていきたいです。 しかし、それにあたって、sbtのproject構成が思ったより面倒なので、それの解説をします。 タイトルの通りあくまで「同じsbt project内部に置く」場合の話をします。 gitやsbtのprojectそのものを完全に分けてしまえば、もちろん考えることが減って楽になる点もありますが、分けることによるデメリットもあるので、個人的には(scalafixに限らないですが)わりとmonorepoというか、同じprojectで頑張ることを推奨したいです。 (OSSにはしないような社
全国のScalaを愛する皆様、お久しぶりです。 毎年大盛況を収めるScalaMatsuriを、2024年も開催することが決定しました!また、同時に本イベントにおけるセッションも同時に募集を開始します! ScalaMatsuri 2024の開催概要 ScalaMatsuri 2024のセッション募集 セッション応募フォーム ScalaMatsuri 2024 で聞きたいセッションのカテゴリーのアンケート結果について オフライン開催のScalaMaturi 2024 を一緒に再始動させましょう 〆 ScalaMatsuri 2024の開催概要 ScalaMatsuriはアジア最大規模のScalaをテーマとした技術カンファレンスであり、開催国の日本のみならず、世界中からスピーカーと参加者が集まるイベントです。 Scalaに関わる情報共有、知識共有、新しい繋がりの構築など、幅広い場を提供します。前
Ammonite is a modern and user-friendly Scala shell. Almond wraps it in a Jupyter kernel, giving you all its features and niceties, including customizable pretty-printing, magic imports, advanced dependency handling, its API, right from Jupyter. This also makes it easy to copy some code from notebooks to Ammonite scripts, and vice versa.
Scala Tokyo 2020/09/25 開催の scala.tokyo で Things happening before start coding with Metals ~behind the curtain of daily coding~ という気取ったタイトルのLT(10分)をしました。 イベント主催の皆さん、21時を回っていたのに僕の発表を最後まで聞いてくれた人たち、本当にありがとうございました! scala-tokyo.connpass.com 内容としては以下のような感じ。需要あるのかわからなかったけれどTwitterを見ていると結構反応が良く嬉しい。そのうち内容をまとめて英訳してブログにでも投稿しようと思う。 scalaのIDE(language server)であるmetals のvscode pluginであるmetals-vscodeをインストールした状態で
関数型プログラミング言語については、以前にHaskellの本を読んでみたりして、興味はあったのだが正直あまり理解できてなかった。 『なっとく!関数型プログラミング』はScalaのコードで関数型プログラミングを説明している本だ。最近邦訳が発売されて話題になっていたので買って読んでみた。 www.seshop.com この本で入れ子のflatMap の説明から、Scalaの for 内包表記 を説明しているところを読んで、Haskell の do もこれかということに気がついた。 リストの場合 // 入れ子のflatMap val result = List(1, 2).flatMap { x => List(10, 20).flatMap { y => List(100, 200).map { z => x + y + z } } } // for内包表記 val result2 = for
もう1年以上前の話になりますが、NetflixがSpark対応のScala用ノートブックPolynoteをOSS化したという話がありました。 netflixtechblog.com 既存のノートブックではScalaを使っていてもコード補完などがあまり効かないものが多く、まとまったコードを書くときは結局IDEを使うという感じになりがちなのですが、PolynoteはScalaを第一言語としてサポートする珍しいノートブックで、コード補完などの機能も充実しているようなので遅ればせながら試してみました。 インストール Sparkを使う場合、まずは先にSparkをインストールしておく必要があります。とりあえずローカルモードで動かすだけであればSparkのリリースディストリビューションをダウンロードして適当なディレクトリに展開しておくだけでOKですが、Polynoteは内部的にspark-submitコ
はじめに ScalaでS3を利用した処理のテストを行いたい場合に、findify/s3mockを使う方法をよく見かけます。stackoverflowでもコード例を見かけるために非常に手間が省けるのですが、実際にやってみると環境によってはかなり頭を抱えるトラップがあります。 Bucketは作れる putObjectはエラーになる エラーの原因と、対処方法についてまとめました。 エラーの原因 なにがエラーで何がエラーじゃないのか、loggerを使って詳細を確認しました。その結果、 ファイル追加は正常に行われる 追加した後の処理がエラーになる という厄介な状態になっていることがわかりました。つまり、ファイルは置かれても例外によりassertがエラーになります。 原因としては、PutObject実行時にモックサーバがjdk.internal.ref.Cleanerによる500 Internal S
JVM の非同期処理: Scala Cats Effect 3 の Fiber(軽量スレッド) とthread per core の話 JVM における Thread と Thread Pool 現行の JVM のデザインでは非同期処理には Thread を使う. JVM の Thread は OS thread の薄いラッパーで OS にその処理を委譲している. そして OS での Thread の作成・管理には OS リソース やハードウェアリソースの割り当てが必要になる. また複数の Thread のコンテキストスイッチもコストが高い. Thread Pool とは、相対的に高コストで希少な資源である Thread を使いまわして効率をよくするための概念である. さて、コンピューターから見ると Thread の作成と管理は高コストで、Thread はハードウェアの性能にもよるがたかだ
A major goal of Bloop as a build server for the Scala programming language is to be as fast as possible, by default, with no sacrifices in correctness or compromises in user experience. In spite of these constraints, Bloop is in fact as fast as or faster than the most popular build tools in the Scala ecosystem. However, it is easy to go astray without an appropriate set of tools that identify regr
Jan 12, 2021. We are excited to announce the release of Scala.js 1.4.0! This release complements the module splitting support, introduced in Scala.js 1.3.0, with support for dynamic module loading. It is now possible to structure an application such that specific features are only loaded if necessary, the first time they are used. In addition, this release significantly improves the performance of
Scala CLIのおもしろい使い方を見付けたのでメモ。これまでと比べてはるかにScalaのちょっとしたスクリプトのシングルバイナリを生成できるようになるので、本当にGolangみたいに簡単にちょっとしたツールを作れるようになった。 scala-cli package Scala Nativeはシングルバイナリを生成できる Dockerイメージを利用すると便利 用途 クロスコンパイルはまだできなそう まとめ 過去の記事 scala-cli package Scala CLIにはpackageというサブコマンドがあり、これを利用するとScala ScriptをそのままUber JAR(直接実行できるJARファイル)にビルドできるのでなかなか便利だ。 しかもなんと--nativeオプションを使うことでバックエンドがScala Nativeに切り替わり、ネイティブバイナリを生成できるようになる。
INSTANTROOM株式会社(本社:東京都渋谷区、代表取締役:曽根弘介)が運営する、フリーランスエンジニア・ITフリーランスの案件検索サイト「フリーランスボード(https://freelance-board.com)」は2024年6月のフリーランス案件の単価における市場動向の調査結果を発表いたします。 ◆数字で見る「フリーランス市場動向」 フリーランスボードでは2024年6月6日時点の141,500件の掲載案件を対象に開発言語・フレームワーク・職種別の月額平均単価を調査いたしました。 ■フリーランス案件の月額平均単価 2024年6月のフリーランス案件の月額平均単価は71.5万円、最高単価は320万円です。 ▼掲載中のフリーランス案件はコチラから https://freelance-board.com/jobs ■開発言語別の月額平均単価 開発言語別の月額平均単価は上表の結果となりました
プラグインとは? sbtのプラグインは、簡単に言うと「ビルド定義の外付け」です。 複数のプロジェクト間にまたがる設定を共通化できます。 また外部ツールやフレームワークを使うときに、それ用のプラグインを読み込まないとそもそも動かなかったりします。 そういったときはproject/plugins.sbtにプラグインを追加することで、必要としている設定を読み込ませることが出来ます(こっちのほうがメインかも)。 例えば、フレームワークとしてPlayFrameworkを使いたいなら、以下のようにaddSbtPluginでPlayFramework用のプラグインを追加してあげる必要があります。 auto pluginとは? プラグインを使ったビルド定義の拡張を簡便にするための仕組みです。 sbt 1.0より前は、auto plugin以外の方法でプラグインを制御することも可能でした(そもそもauto
はじめての Monad, Monad Transformer, Extensible Effects Ariizumi Shumpei こんにちは。RECRUIT Job for Student 2021 Summer で、スタディサプリ ENGLISH の開発を行なっていた有泉洵平です。 スタディサプリ ENGLISH のサーバサイドでは Extensible Effects を導入しています。それを扱うにあたり Monad, Monad Transformer, Extensible Effects を学んだため、この記事にまとめます。 また、RECRUIT Job for Student 2021 Summer に興味のある方は、そちらについても記事を書いたため、参考にしてください。 要約 Monad とは、pure と flatMap というメソッドを持ち、Monad 則を満たすも
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020 Scala is a powerful language; You can build front-end applications with Scala.js, and efficient backend application servers for JVM. In this session, we will learn how to build everything with Scala by using Airframe OSS framework. Airframe is a library designed for maximizing the advantages of Scala as a hybrid of ob
経緯 Scala(PlayFramework) x DDDでアプリケーションを実装する際、UseCase層(Application層)を実装する際に辛さが出てくる。 何が辛いかと言うと、型のネストである。 というのも、 UseCase層ではエンティティ操作の過程で仕様周りのバリデーションをやることになりEitherが出てくる 例:ハンターがモンスターから素材を剥ぎ取るためには、モンスターが既に死んでいる必要がある (PlayFrameworkだと特に)Repository層での呼び出してFutureが出てくる そのため、UseCase層での各処理の型合わせが必然的に複雑になる傾向にある。 サンプル 例として、なんちゃってモンハンを想定して「ハンターがモンスターにダメージを与える」というユースケースを実装してみる。 *いろんな突っ込みがあると思うのですが、マサカリはヤメてください。 forの
class: center, middle # The programmer that controls the `traverse`, controls the code. Scala Matsuri 2023 2023/04/15<br> @gakuzzzz --- class: left, top ## Who am I * Manabu NAKAMURA * Twitter: [@gakuzzzz](https://twitter.com/gakuzzzz) * Tech to Value Co.,Ltd. CEO * Alp, Inc. Tech Lead --- class: left, top ## Note The Scala code in this slide uses version 3.2.2. It uses [cats](https://typelevel.or
High performance While all public interfaces are pure and immutable, the library's internals are optimized for speed. Minimal boilerplate No need to manually define schemas for every type in your API. Let the compiler handle the tedious work. Excellent interoperability Out-of-the-box support for major HTTP server libraries, effect types, JSON libraries, and more.
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く