並び順

ブックマーク数

期間指定

  • から
  • まで

441 - 480 件 / 611件

新着順 人気順

scalaの検索結果441 - 480 件 / 611件

  • [初級-中級向け]Scala基本APIを完全に理解するシリーズ① -Option編- - k.dev

    はじめに Scalaの基本ライブラリをユースケース付きで解説します。 まずはOptionです。 使用頻度・重要度 メソッドが多すぎするとどれが重要なのか分かりづらいので各メソッドの横にランク付けをしておきます。 ☆☆☆: 非常によく使う。Scalaを書くなら必須レベル ☆☆: 使いどこでは威力を発揮する。これを使いこなすかどうかで、コードの綺麗さが変わる。 ☆: あまり使わない。使いたいときにどうぞ。場合によっては使用しないほうがいいことも。 Option objectメソッド apply ☆☆☆ コンストラクタです。 引数がnullの時はNone、null以外でSomeが返ります。 scala> Option("a") res0: Option[String] = Some(a) scala> Option(null) res1: Option[Null] = None scala> S

      [初級-中級向け]Scala基本APIを完全に理解するシリーズ① -Option編- - k.dev
    • 遅延性 · What I Wish I Knew When Learning Haskell (日本語訳)

      seqとWHNF いちばん外側のコンストラクタやラムダがこれ以上簡約できない場合、項は弱頭部正規形 (weak head normal-form, WHNF) であると言います。完全に評価されていて、中に入っているすべての部分式とサンクが評価されている場合、正規形 (normal form) であると言います。 -- 正規形 42 (2, "foo") \x -> x + 1 -- 正規形でない 1 + 2 (\x -> x + 1) 2 "foo" ++ "bar" (1 + 1, "foo") -- 弱頭部正規形 (1 + 1, "foo") \x -> 2 + 2 'f' : ("oo" ++ "bar") -- 弱頭部正規形でない 1 + 1 (\x -> x + 1) 2 "foo" ++ "bar" Haskell では、通常の評価はコアの case 文の外側のコンストラクタで

      • ZIO 2.1.x で詰まってしまったコード - FLINTERS Engineer's Blog

        こんにちは。河内です。 今回の投稿はFLINTERSブログ祭りの記事です。テーマは #Scala #ZIO です。 2024年5月にリリースされた ZIO 2.1.0 では runtime にいくつかの変更があります。 一つは autoblocking のデフォルト無効化です。 2022年6月にリリースされた ZIO 2.0.0 では autoblocking という機能が導入されました。 これは blocking な操作を自動的に blocking 専用の thread pool で実行するようにランタイムが調整してくれるという機能です。 main 処理用の thread pool は CPU のコア数分作成されます。 blocking な操作(I/O待ちなど)は CPU を使用しないため、main 処理用の thread pool で実行すると、CPUを十分に使いきれません。 そこで

          ZIO 2.1.x で詰まってしまったコード - FLINTERS Engineer's Blog
        • ApacheSparkでzipファイルに格納されたJSONファイルを読み込む

          概要 提供されたデータがSparkの対応する形式であれば、特に問題なく処理可能だ。 しかしzipで圧縮されていた場合はあらかじめ解凍しておくか、少し工夫する必要がある。 この記事ではzipに格納されたJSONファイルをzipのまま読み込み、データフレーム化する方法を紹介する。 前提条件 ファイルのエンコードがUTF-8であること zipファイルに格納されたJSONファイルのスキーマが全て同一であること ※今回使用したzipファイル target ├── foo.zip │   ├── test1.json │   └── test2.json └── bar.zip ├── test1.json └── test2.json import java.io._ import java.nio._ import java.util.zip.ZipEntry import java.util.z

            ApacheSparkでzipファイルに格納されたJSONファイルを読み込む
          • Parser CombinatorでIPアドレスのチェック - Qiita

            import java.net.{InetAddress,UnknownHostException} import util.parsing.combinator.RegexParsers object IpParsers extends RegexParsers { def ipAddress: Parser[String] = """[0-9a-fA-F:\.]+""".r.withFilter { str => try { val addr = InetAddress.getByName(str) true } catch { case e: UnknownHostException => false } } } 前提として、IPv4またはIPv6文字列をまとめて扱い、ざっくりと文字列の範囲を選びとる。(最初の正規表現マッチ) withFilterで抽出した文字列の検証を追加 Ine

              Parser CombinatorでIPアドレスのチェック - Qiita
            • Scalaを使っているプロジェクトにメンバーがジョインする時に勧めている資料まとめ | DevelopersIO

              はじめに 業務のメインプロジェクトではScalaを使うことが多く、チームに新しく加わったメンバーのオンボーディングではScala言語自体やライブラリ(主にtypelevel系)の資料を紹介する機会が少なくありません。毎回リンクのリストを作り、コメントを添えて共有するのですが、回数も増えてきたので記事にしてみることにしました。 Scala言語の入門 ScalaText 『Scala スケーラブルプログラミング』(第三版) 『Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド』 1つ目のScalaTextは有名なドワンゴさんの研修資料が日本のScalaコミュニティに寄贈にされたものです。2つ目以降はScalaTextの冒頭でも言及がありますが、入門としては鉄板かなと思います。他のプログラミング言語を修得されているのであればScalaTextを一通り

                Scalaを使っているプロジェクトにメンバーがジョインする時に勧めている資料まとめ | DevelopersIO
              • 2019-10-23 Airframe Meetup #3

                Airframe Meetup #3 Taro L. Saito, Ph.D. Arm Treasure Data October 23nd, 2019 Arm Treasure Data Tokyo Office 1

                  2019-10-23 Airframe Meetup #3
                • ScalaのCompilerについて - Qiita

                  Scala Advent Calendarの18日目の記事です。 公開が遅れてしまいnnao45さんから下記の記事で代行もして頂いていました。 【Scala】catsのValidatedの使い所、及びValidatedNecとValidatedNelについて ありがとうございました!! はじめに ScalaのCompilerは型推論、型消去、エラー構文の検知など、いろんなところで活躍していますが、僕はソースコードをバイトコードに変換してくれるものくらいの理解で開発していました。(雰囲気で使っていた。) しかし最近はScalaのコンパイル速度を気にするようになり、さらにScala次世代のコンパイラであるDottyがどんどん開発されてきたので、コンパイラの動きを理解したいなと思い、今回はScalaのCompilerを調べました。 ですが、Compilerの実装はあまり見ておらずこちらの英語の記

                    ScalaのCompilerについて - Qiita
                  • Scala Iterator(イテレータ) - Florian Studio

                    Scala Iterator(イテレータ)は集合ではなく、コレクションにアクセスするためのメソッドです。 イテレータitの2つの基本的な操作は、nextとhasNextです。 it.next()を呼び出すと、イテレータの次の要素が返され、イテレータの状態が更新されます。 it.hasNext()を呼び出すと、集合に他の要素があるかどうかを確認します。 イテレータ itによってすべての要素を1つずつ返すようにする最も簡単なメソッドは、whileループです。 実例 object Test { def main(args: Array[String]) { val it = Iterator("Baidu", "Google", "Ceodata", "Yahoo") while (it.hasNext){ println(it.next()) } } } 上記のコードを実行した出力結果は次とな

                      Scala Iterator(イテレータ) - Florian Studio
                    • ScalaのAuxパターン - k.dev

                      ScalaにはAuxパターンというものがあるらしいのでまとめ。 解決したい課題 ある型に対しての型クラスインスタンスが複数欲しいときがあり、しかもその型クラス同士に依存関係があるとする。 trait TypeClass[T] { type R } def something[T](implicit tc: TypeClass[T], Monad[tc.R]): tc.R 上の例でいくとsomethingメソッドはTのTypeClassインスタンスが必要だ。 しかもTypeClass[T]がもつRをdependent typeで解決してそのRに対してのMonadインスタンスが必要である。 しかしこれはコンパイルが通らない。 なぜかと言うとScalaでは同じパラメタブロックに対してのdependent typeを許していない。 これを解決するのがAuxパターン。 Auxパターンの使い方 上の例

                        ScalaのAuxパターン - k.dev
                      • Fs2 3.6.1で複数のワーカに処理を分散させるパターンを書く - Lambdaカクテル

                        Scalaの非同期・ストリーミング処理ライブラリであるfs2で、ジョブキュー的な感じで、複数のワーカにデータを分散して配りたいことがあり、それの実現方法について調査したメモ。 fs2.io 追記(2023-09-23) fs2 3.9.2で確認したが、stream.parEvalMap(N)(IO)の形でparEvalMapを呼ぶことで並列実行が可能だ。 tl;dr 1つのQueueにデータを入れて、複数のワーカから好きに取出せばよい。 Streamを複数のPipeに分散させるには? FS2の以前のバージョンにはBalanceという要素が用意されていたのだが、機能の統廃合によって消えてしまった。Discordで様子を見るとQueueとWorkerで作れるとのことなので、作ったところ、作れた。 この構成では、パイプラインは3つの要素に分解される。 これから分散して処理しようとするデータを送出

                          Fs2 3.6.1で複数のワーカに処理を分散させるパターンを書く - Lambdaカクテル
                        • Cats の K がつくクラスたち - Qiita

                          Cats には末尾が K で終わるクラスがいくつかある。通常の型に対する性質や操作を、F[_] のような型に当てはめたもので、頻繁に使うものではないが何度か見かけるうちにだんだん気になってくる。 今回は、SemigroupK、MonoidK、EitherK、InjectK、Tuple2K、FunctionK について書いてみる。(Cats は 1.6.0を使った) SemigroupK と MonoidK SemigroupK と MonoidK は、その名前が示唆するように、おなじみの Semigroup と Monoid にそれぞれ対応する。 K なし K あり

                            Cats の K がつくクラスたち - Qiita
                          • Scala 2.10 におけるメタプログラミング: 構文木、シンボル、型について · eed3si9n

                            2012-08-06 Scala マクロの作者 Eugene Burmako さんによるリフレクション API に関する発表のスライド、“Metaprogramming in Scala 2.10” を翻訳しました。翻訳の公開は本人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年4月28日 Eugene Burmako 著 2012年8月5日 e.e d3si9n 訳 はじめに メタプログラミング メタプログラミングとは、他のプログラムや自身をデータとして書いたり操作するコンピュータプログラムを書くこと。 —Wikipedia コンパイラ 問: どうやってメタプログラミングを可能にすることができだろう? 答: コンパイラよりもプログラムに関してデータを持つ者がいるだろうか? プログラマにコンパイラを公開しよう。 リフレクション 2.10 ではプログラムに関するデ

                            • Play Framework + tapirで型安全なエンドポイントを定義

                              概要 tapirはエンドポイントとビジネスロジックを分離して定義することができるScalaのライブラリで、型安全なAPIを簡潔に構築することができます。 主に以下のようなメリットがあります。 Scalaのコードでエンドポイントの定義ができるためコードの共通化・再利用がしやすい エンドポイントの型を定義することによりAPIの仕様を明確にできる エンドポイントの型からSwaggerドキュメントを生成する事により、APIのドキュメント化が容易にできる 今回はPlay Frameworkとtapirを使って、エンドポイントの定義と簡単な認証処理を実装をしてみます。 環境設定 Scala 3.3.3 Play Framework 3.0.5 Java 11 tapir 1.11.1 サンプルコード 今回紹介するコードはこちらのGitHubから確認することができます。 ※ 記事執筆後にコードを変更した

                                Play Framework + tapirで型安全なエンドポイントを定義
                              • 部分型における変性と極性 - なぜScalaの変性は+や-で指定するのか - 貳佰伍拾陸夜日記

                                この記事はScala Advent Calendar 2022の19日目です. Scalaではジェネリック型の変性(variance)は+や-で指定しますが, 他の言語(たとえば, C#, Kotlin)ではoutやinだったりします. この記事では変性の意味を整理して, なぜScalaでは+/-の記号を使うのか説明します. 追記ただし, ここで説明している内容は基本的にC#やKotlinでも成立する(はずな)ので「なぜこれらの言語では+/-の記号を使わないのか」を説明するものではありません. 個人的には+/-の方がわかりやすいと思うし, out/inの記法は扱っている概念が簡単であるかのような誤解を生む(悪く言えば騙す)のでどちらかと言うと嫌いです. 発端 こういう話題がありました. Scala は共変が + で、反変が - なので理論重視? なのに対して、Kotlin と TypeSc

                                  部分型における変性と極性 - なぜScalaの変性は+や-で指定するのか - 貳佰伍拾陸夜日記
                                • scalaで開発する環境を整える@AndroidStudio, Mac - Qiita

                                  めちゃめちゃ苦しんだ… すでにできているリポジトリをクローンして開発環境を整えるまでのメモ 作業環境⬇︎ MacOS:Mojave 10.14.6(18G95) android studio:3.0.1 もろもろインストール とりあえずandroid studioで該当のPJを開くとno scala sdkみたいなのが上部に出てるので指示通りに入れる。 PJではsbtを使ってたので、ローカルにもインストール $ brew install sbt Error: An exception occurred within a child process: CompilerSelectionError: sbt cannot be built with any available compilers. Install GNU's GCC: brew install gcc $ brew insta

                                    scalaで開発する環境を整える@AndroidStudio, Mac - Qiita
                                  • Akka HTTPの仕組みを理解する

                                    LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog 初めまして、Ads Platform開発チームの岡田(@ocadaruma)です。 この記事はLINE Advent Calendar 2017の17日目の記事です。 今回、個人的に以前から気になっていたAkka HTTPの内部構造について、この機会に調べましたので紹介いたします。 Akka HTTPとは Akka HTTPは、Lightbend社によって開発されている、Scala/Java用のHTTP toolkitです。 現在はメンテナンスが終了したsprayの後継と位置付けられており、特徴的なRouting DSLをsprayから受け継いでいます。 また、Play Frameworkは2.6系より、Akka HTTPをデ

                                      Akka HTTPの仕組みを理解する
                                    • ScalaTest入門 - Qiita

                                      はじめに Webcrewアドベントカレンダー5日目の記事です。 2019年度新卒の@verdoyantが5日目を担当します。 テストコードを学んでいこうと思い、ScalaTestについて調べたので簡単にまとめました。 対象 テストを書き始めてみようかなと思っている人向け ScalaTest 概要 Scalaでは一番使用されている 使いやすく拡張しやすい 環境 sbt 1.3.4 scala 2.13.1 PlayFramework 2.7.3 導入方法(PlayFramework 2.7.3 + sbt) build.sbt に以下を追記 libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "4.0.3" % "test" //PlayFrameworkを使う場合 libraryDependen

                                        ScalaTest入門 - Qiita
                                      • Scalaことはじめ その1 - Qiita

                                        はじめに Scalaを勉強しようと思い立ったので、あとで自分で見直せるように調べたことを書いていきます. この記事では、環境構築からHello Worldを動かすまでが対象です. おかしな点があれば、コメントにてご指摘いただけますと幸いです。 Scalaとは? JavaVM上で動く、オブジェクト指向言語と関数型言語のマルチパラダイムな言語. Javaのライブラリを使用でき、かつJavaにはない機能や効率的な書き方がいろいろある「らしい」です. よく Better Java として語られていることがありますが、それをScala界隈の人にいうとマサカリが飛んできます(主観). Scala環境について 関連パッケージ Java(JDK) Scalaは、JavaVM上で動作するため、インストール必須です. sbt Scalaのビルドツール (JavaのAnt, Maven的なもの?)で、Javaの

                                          Scalaことはじめ その1 - Qiita
                                        • ソフト屋のための SpinalHDL FPGA 設計入門(その1) • IoT ソフトウェア設計のファームロジックス [相模原]

                                          FPGA design tutorial by SpinalHDL for embedded software engineers. 先日、SpinalHDL というハードウェア記述言語を簡単に紹介しました。最終的な目標は RISC-V を使って FPGA 上に SoC を設計実装することですが、目標が高すぎるのでハードルを下げます。まずは、VexRiscv を実装しているハードウェア記述言語 SpinalHDL を(少し)勉強し、簡単な論理回路を FPGA(具体的には TinyFPGA BX)上で動作させてみたいと思います。 少しだけ前書き(tl;dr;) 私は組込ソフトウェアの設計が専門で、HDL も FPGA も門外漢です。なぜいま FPGA か、というのは先日書きましたが、基本的な考えとしては、設計や実装には常に適切なツール、言語を利用したい、ということがあります。たとえば、最近流

                                          • 【漫画でIT入門】とあるIT企業の社員活動日誌 第24話「プログラミング学習のすゝめ⑩ Scalaとは?特徴と出来る事」 | 株式会社クロイツ

                                            パソコンを使う人のありそうでなさそうなお話や、ガジェットのお話を漫画で紹介させていただくコーナーです。 とあるIT企業に務める彼女たちは日々楽しく真面目に業務に励んでいます。その中で、起こったハプニングや困った事などを活動日誌を通して覗き見していきましょう。 ※当ブログは、アフィリエイトプログラムに参加して商品を紹介しております。当ページのリンクを介して商品を購入すると著者に収益が発生することがあります。 【漫画で入門】「とあるIT企業の社員活動日誌」各話一覧はこちら Scalaとは? Scalaは2013年にリリースされたオブジェクト指向型言語と関数型言語それぞれの特徴を持ったハイブリッド言語です。 スイス連邦工科大学のマーティン・オーダスキー氏によって設計・開発されました。 ScalaにはJavaで出来る事が全て出来ると言う特徴が有り、「Javaの後継言語」「幅広い開発領域で使用する事

                                              【漫画でIT入門】とあるIT企業の社員活動日誌 第24話「プログラミング学習のすゝめ⑩ Scalaとは?特徴と出来る事」 | 株式会社クロイツ
                                            • IntelliJ CEでPlay-Scalaのデバッグ実行をちょっと面倒で地味に便利にする

                                              Zenn初記事になります、よろしくおねがいします。 最近またScalaでお仕事してて開発環境を整備したのでメモ的に残しておきます。 IntelliJ CE版でよく見つかるやり方だとterminal/cmdプロンプト上で sbt -jvm-debug 9999 run してIntelliJ上でリモートデバッグするやりかたが出てきますが、これだとエラーなどが出た時にIntelliJのソースに直接飛べないなど不便があるのでCE版でも出来る限り便利なようにしていきます(有償版のIntelliJ  Ultimate Editionだと標準サポートしています) Playのプロジェクトをsbtで作成、IntelliJで読み込みます。 File-Settingsを押下して設定画面を開きます。 Build, Execution,Depeloyment > Build Tools > sbtを開きます。 sb

                                                IntelliJ CEでPlay-Scalaのデバッグ実行をちょっと面倒で地味に便利にする
                                              • UNIVERSE AdsでのScala 幽霊型 (Phantom Type) の活用方法 - MicroAd Developers Blog

                                                はじめに こんにちは。マイクロアド21年卒サーバーサイドエンジニアの陶山(id:suyama_naoki)です。普段は主にDSP (UNIVERSE Ads) の開発を行なっています。 今回の記事では、UNIVERSE AdsでのScala 幽霊型の活用方法について共有させていただきます。 はじめに Scalaの幽霊型 (Phantom Type) とは 具体例 UNIVERSE Adsでの幽霊型の活用方法 Currency.scala AdPrice.scala AdPriceのcompareメソッドを呼び出す まとめ Scalaの幽霊型 (Phantom Type) とは 幽霊型 (Phantom Type) とは、コンパイル時には検査されるが、コンパイル後のプログラムでは消えているような型パラメータのことです。 コンパイル時の型検査を利用したデザインパターンとして認知されています。

                                                  UNIVERSE AdsでのScala 幽霊型 (Phantom Type) の活用方法 - MicroAd Developers Blog
                                                • Scala 選定の結果と継続の方針 〜Advent Calendar 2016 Day 25 へのアンサー〜 - Qiita

                                                  Mikatus Advent Calendar 2019 25日目の記事です。 開発責任者の土田です。 当社が2016年に参加したアドベント・カレンダー25日目の「Scala選定の理由と移行の方針」という記事へのアンサーを書こうと思います。事前にその記事を読んでいただいた方が、この記事の内容を楽しめるかなと思います。ただ、私の記事はあくまでポエムなので、そんなに期待しないでください。 プラットフォーム移行の観点でよりきちんとした内容は「Scala採用を決めて3年半たった、CTOの振り返り。アーキテクチャ刷新を成し遂げるために必要なこと」がとても参考になると思いますので、そちらをオススメします。 発端は(食べられる方の)カリーうどん → 最近は秋葉原でスープカリー 当時は当社のオフィスが白金高輪だったので、近くにあるカリーうどんを食べてました。その後は岩本町、浅草橋と移転したので食べてるカリ

                                                    Scala 選定の結果と継続の方針 〜Advent Calendar 2016 Day 25 へのアンサー〜 - Qiita
                                                  • Chatwork フリープランのメッセージ閲覧制限の計算を Scala のバッチアプリケーションでおこなっている話 - kubell Creator's Note

                                                    サーバーサイド開発部で Scala アプリケーションの開発運用をおこなっている hayasshi (@hayasshi_) です。 昨年 2022 年 10 月 6 日に、Chatwork ではフリープランの制限の変更をおこないました。*1*2 「参加できるグループチャットの累計数」から、「閲覧できるメッセージの期間と数」へと制限が変更になったのですが、 この 閲覧できるメッセージの数 の計算を、Scala のバッチアプリケーションでおこなっています。 今回はそのアプリケーションについて、設計や構成をご紹介したいと思います。 Chatwork フリープランにおけるメッセージ閲覧制限について 2023 年 4 月 14 日現在、Chatwork フリープランのアカウントが閲覧できるメッセージは、 投稿されてから 40 日以内でかつ、組織全体で 5000 件まで となっています。 「投稿されて

                                                      Chatwork フリープランのメッセージ閲覧制限の計算を Scala のバッチアプリケーションでおこなっている話 - kubell Creator's Note
                                                    • Scala クラスとオブジェクト - Florian Studio

                                                      クラスはオブジェクトの抽象化であり、オブジェクトはクラスの具体的なインスタンスです。クラスは抽象的でメモリを占有しませんが、オブジェクトは具象的でストレージスペースを占有します。 クラスは、オブジェクトを作成するためのブループリントであり、特定のタイプのオブジェクトに含まれるメソッドと変数を定義するソフトウェアテンプレートです。 newキーワードを使用して、クラスのオブジェクトを作成できます。次には例を挙げます。 実例 class Point(xc: Int, yc: Int) { var x: Int = xc var y: Int = yc def move(dx: Int, dy: Int) { x = x + dx y = y + dy println ("x の座標: " + x); println ("y の座標: " + y); } } Scalaのクラスはpublicとして

                                                        Scala クラスとオブジェクト - Florian Studio
                                                      • フシギな型の数え上げ - Scala で型の値を並べてみよう

                                                        はじめに 可算集合 (countable set) という言葉を聞いたことがありますか? これは、大雑把に言えば自然数 (\mathbb{N} = \{ 0, 1, 2, \cdots \}) と一対一に対応付けることができる集合のことです。 例えば、整数全体からなる集合 (\mathbb{Z} = \{ \cdots, -2, -1, 0, 1, 2, \cdots \}) は、一見すると値が両側に広がっていって始点 (下界) も終点 (上界) もありませんが、可算集合の例の1つです。 具体的には [0, -1, 1, -2, 2, \cdots] のように負の数と正の数を交互にして並べることで、自然数と一対一に対応付けられます。 他にも有理数全体からなる集合 (\mathrm{Q} = \{ 1/1, 2/1, 1/2, \cdots \}) もうまく並べることで自然数と一対一に対応付

                                                          フシギな型の数え上げ - Scala で型の値を並べてみよう
                                                        • Scalaにおける値型(列挙型、Beans)の表現 - Qiita

                                                          Scala Design Patternsを読んでいたところ、Scalaにおける値型(列挙型, Beans)の自然な表現が紹介されていたので、まとめました。 値型とは? 値型とは、メソッドを持たず、値のみを保持するオブジェクトのことです。 ここでは値型として、列挙型とBeansを紹介します。 sealed abstract trait Weekday case object Sunday extends Weekday case object Monday extends Weekday case object Tuesday extends Weekday case object Wednesday extends Weekday case object Thursday extends Weekday case object Friday extends Weekday case ob

                                                            Scalaにおける値型(列挙型、Beans)の表現 - Qiita
                                                          • ScalaScriptで実装する AlfredからSlackに簡単投稿 | DevelopersIO

                                                            はじめに こちらのブログ(Scala で簡単スクリプト Ammonite を試す) でScalaで簡単なスクリプトが書けるAmmoniteに入門しました。Ammonite にはScalaで簡単にスクリプトが書ける ScalaScript という機能あるため、何か作ってみたくなりますよね。 以前 Alfredから簡単にSlack分報をPostする 機能をGoで実装しましたが、こちらをScalaScriptで再実装してみます。 完成デモ Alfredを起動して t [メッセージ] で分報チャンネルに投稿します。 実装 準備 Ammonite Ammoniteについて紹介したブログはこちら Alfred プロ Alfredのworkflow機能を使うにはproバージョン(有料)が必要です Slackのトークン Bolt入門ガイドがとても参考になります トークンとアプリのインストール までで大丈夫

                                                              ScalaScriptで実装する AlfredからSlackに簡単投稿 | DevelopersIO
                                                            • Scala.jsにLaminarを導入 - Qiita

                                                              環境 OS: Windows 11 Java: OpenJDK 17.0.7 Scala : 3.3.0 Scala.js : 1.13.0 ScalaHTML: 0.1.1 ScalaCSS : 0.8.0-RC1 Akka: 2.7.0 Akka-HTTP: 10.5.2 諸々の設定は下記のようです。 val scala3Version = "3.3.0" val AkkaVersion = "2.7.0" val AkkaHttpVersion = "10.5.2" ThisBuild / organization := "$organization$" ThisBuild / scalaVersion := scala3Version ThisBuild / version := "0.1.0-SNAPSHOT" lazy val root = (project in file("

                                                                Scala.jsにLaminarを導入 - Qiita
                                                              • sbt-npm-package でシュッと scala.js のビルド成果物を npm にアップロードする - たにしきんぐダム

                                                                Scala Advent Calendar 2022 - Qiita 1日目の記事です scala.js でビルドした成果物を npm にアップロードすることありますか? 私はある。 普通に scala.js でビルドした js を npm にアップロードしようとするとこういう感じの流れになります。 sbt fullOptJS とかで js にビルド ビルド成果物(.../target/scala-2.13/foo-opt.js とか) を適当なディレクトリにコピー そのディレクトリに package.json と、npmにアップロードする README.md を設置 npm login して npm publish まあ、これでも別にいいっちゃいいのですが、いくつか気に入らないところがあり build.sbt の設定と、package.json の設定を別々に管理することになる (ver

                                                                  sbt-npm-package でシュッと scala.js のビルド成果物を npm にアップロードする - たにしきんぐダム
                                                                • 【Scala】再帰処理を末尾最適化するための考え方をSICPに学ぶ - りんごとバナナ

                                                                  Scala関数型デザイン&プログラミングでScalaと関数型プログラミングに慣れようとしている。最初の練習問題はn番目のフィボナッチ数を出力する関数を作るというもの。 はじめは以下のように書いた。 object Main { //@annotation.tailrec def fib(n: Int): Int = { n match { case m if m <= 0 => throw new IndexOutOfBoundsException("fibonacci index should be positive number") case 1 => 0 case 2 => 1 case _ => fib(n - 2) + fib(n - 1) } } def main(args: Array[String]): Unit = { println(fib(12)) } } 正常に動くこ

                                                                    【Scala】再帰処理を末尾最適化するための考え方をSICPに学ぶ - りんごとバナナ
                                                                  • Scalaでシンプルな自作言語のコンパイラを書いた - memo486

                                                                    かんたんな自作言語のコンパイラをいろんな言語で書いてみるシリーズ 28番目の言語は Scala です。 できたもの github.com 不慣れな人が見様見真似で書いていますので、Scala のコードとして拙いところはご容赦ください。 Scala に詳しくなるのは後回しにしてとにかく動くものを作るぞ、という方向性です。 サイズ ( cd src/main/scala/mini_ruccola LANG=C wc -l *.scala lib/*.scala ) 358 CodeGenerator.scala 67 Lexer.scala 25 Main.scala 302 Parser.scala 92 lib/Json.scala 40 lib/Node.scala 62 lib/Token.scala 16 lib/Utils.scala 962 total コンパイラのコア部分だけに

                                                                      Scalaでシンプルな自作言語のコンパイラを書いた - memo486
                                                                    • Scalaのエラーハンドリング - Qiita

                                                                      例外安全と例外中立 強い例外安全性 例外が発生した場合、全てのデータは元に戻る 基本例外安全性 例外が発生しても、システムがクラッシュしない、リソースがリークしない、オブジェクトが無効な状態にならない 例外中立性 呼び出し先が例外を発生させたときに それを握りつぶさない 例外安全については強い例外安全性を求められるケースはミドルウェアとかなのでスルー 基本例外安全性はC/C++だと重要な問題だが ScalaだとLoanパターンを使えば十分なので触れない 例外中立性を破るとシステムが異常な状態に陥っている事に気づけない、異常な動作を続ける事になる Scalaにエラーハンドリングの手段は多種多様。 例外 scala.util.Try Either (ちょっと違うが非同期計算の失敗の情報を持っているFuture) 何を使うべき? 例外 ScalaはJavaライブラリ資産を引き継いでるのでIOエラ

                                                                        Scalaのエラーハンドリング - Qiita
                                                                      • sbt-native-imageプラグインによるScalaアプリケーションのネイティブイメージの生成 - たけぞう瀕死ブログ

                                                                        これまでScalaでGraalVMのネイティブイメージ生成機能を使う場合はsbt-native-packagerプラグインを使用していたのですが、最近新たにsbt-native-imageというプラグインがリリースされたとのことで実際に試してみました。 Released the first version of sbt-native-image, a new sbt plugin to generative native-image binaries https://t.co/WYFVnQg4xK— Ólafur Páll Geirsson (@olafurpg) August 29, 2020 まずは例によってproject/plugins.sbtにプラグインを追加します。 addSbtPlugin("org.scalameta" % "sbt-native-image" % "0.2.

                                                                          sbt-native-imageプラグインによるScalaアプリケーションのネイティブイメージの生成 - たけぞう瀕死ブログ
                                                                        • FeralとAWS SAMを使ってScalaでLambda関数を作成する

                                                                          はじめに 2023年10月26日に、Serverless Framework v4が発表され、新しくライセンスが導入されることが発表されました。v4自体は2024年5月21日からベータ版としてリリースされ、利用できるようになっていました。 Serverless Framework v4は、Serverless Framework v3とは異なり、オープンソースのライセンスがなくなり、有料のライセンスが導入されることになり、これによってServerless Framework v4を使用するためには、有料のライセンスが必要になりました。 前年度に年間収益が200万ドルを超えた組織がv4を利用する場合に対象となるみたいですが、200万ドル以下だったかどうかの審査はないため、自己申告のようです。 リリースブログとCLI上では個人の開発者や小規模企業、非営利団体は無料で利用できると記載されていまし

                                                                            FeralとAWS SAMを使ってScalaでLambda関数を作成する
                                                                          • Databricks / Spark: DataFrame の基本概念 - Qiita

                                                                            Spark: The Definitive Guide http://shop.oreilly.com/product/0636920034957.do という本を読みながら、Python を使った Spark の基本概念をメモする。 DataFrame https://docs.databricks.com/spark/latest/dataframes-datasets/index.html Spark の DataFrame とは、Pandas の DataFrame のようにカラム名に名前が付いた表だ。Pandas の DataFrame のように Python のオブジェクトから直接作ったり、csv や JSON から作る事が出来る。例えば Databrics 標準サンプルの flight-data/csv/2015-summary.csv から作成してみる。まずファイルの内容を

                                                                              Databricks / Spark: DataFrame の基本概念 - Qiita
                                                                            • リアクティブプログラミングにおけるPlay、Akka、Akka Streams

                                                                              リアクティブプログラミングにおけるPlay、Akka、Akka Streams:リアクティブプログラミング超入門(3)(2/2 ページ) Reactive StreamsのAkka実装「Akka Streams」とは 現在のWebでは膨大な量のデータをリアルタイムでやりとりしています。こういったデータは普通にダウンロード/アップロードしていては時間がかかり過ぎてしまうので、ストリーム処理(無限に発生するデータを継続的に処理する仕組み)が必要になります。 例えば、下記などはストリームが妥当な処理方法です。 テラバイト級ファイルの処理(メモリに展開し切れない) 通信処理(処理が継続的に発生し続ける) Stream処理では、受信側(Subscriber)が処理しきれないデータを送信し続けるとバッファーがあふれてしまうため、送信側(Publisher)がデータを送り過ぎないようにする必要があります

                                                                                リアクティブプログラミングにおけるPlay、Akka、Akka Streams
                                                                              • Scala + Akka + Raspiでで入退室管理をつくった話。 - Qiita

                                                                                すいません、ScalaJSについて書こうと思ったが、案外情報がまだまとまってないので、以前やった仕事のことについて書きます。これは、Scala関西でも話した内容と重複します。 入退室管理アプリケーションについて 仕事で、生徒への入退室管理アプリケーションをつくりました。機能としては、ざっくり QRコードをかざして入退室 入退室確認したら、保護者等にメール配信 入退室ログ管理 簡易的な会員管理 Slack通知 遅刻などの「まだ来てないです」通知 QRコード発行 構成 ざっくり構成を。 ボタンは起動やらを知らせるやつですね、超音波センサーを近づけて、カメラを起動させます、んで、QRを認識して、それと時間を見て、やります。スピーカーは、案内ですね。 Raspberry PiでAkka動かす話 ぶっちゃけ、これ、とりあえず、Raspberry PiでAkkaを動かす試みをまずしていました。たまたま

                                                                                  Scala + Akka + Raspiでで入退室管理をつくった話。 - Qiita
                                                                                • Flywayを利用したScala開発でのテストデータ作成簡略化 - Adwaysエンジニアブログ

                                                                                  どうも大曲です。 今回はScalaのプロジェクトでFlywayを活用してテストデータ作成を簡略化したお話について書きます。 背景 テストコードの中でテストケースを作成していましたが、 ただそのためのコードでSQLが乱雑してメンテが困難な部分がチラホラ増えてきました。 どこが差分があるのか?あり得るテストデータなのか(システム的にありえない可能性もある)の担保が不安でした。 実際のコード // SQL作成 val query = Seq( sqlu""" INSERT INTO `media` ( `media_id`, `site_id`, `name`, `published_type`, `version`, `identifier`, `mode`, `margin` ...) VALUES ( '1', '1', 'testttt', '0', '5.1', '... ) """,

                                                                                    Flywayを利用したScala開発でのテストデータ作成簡略化 - Adwaysエンジニアブログ