技術
追記 具体的な型が分かるわけではないので、この方法だとうまくいかないことがわかった。詳しく調べている。 本編 わけあって(わけは後で話す)、以下のようなJSONに対応する型エイリアスを定義しなければならなくなった。 { "deviceEvent": { "buttonClicked…
自分用メモ。 MySQLが起動するまで待つ mysqladminコマンドにはpingというサブコマンドがあるので、これを利用すれば起動するまで待つ処理を書くことができる: until mysqladmin ping -u "$MYSQL_USER" -h "$HOST" --silent; do echo "waiting for MySQL to …
こういうツイートが話題になっていた。 「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ— ふみ a.k.a.DJ Monad (@fumieval) 2023年5月29日 …
先日、Scala CLI v1.0.0がついにリリースされた。これまではv0系列だったので、満を持しての正式版リリースだ。おめでとう! github.com いちおう説明しておくとScala CLIは総合的なScalaのコマンドラインツールで、以下のようなことができる: Uber JAR(単体…
ScalaでHTTPエンドポイントを定義するためのライブラリであるTapirは最近よく使われており、Star数もとても多い(今見たら1.2kだった)。具体的なHTTPライブラリから独立した定義ができるため、メンテナビリティが高いのが特徴である。OpenAPIの定義を生成する…
そういえばScalaをAWS Lambdaで実行するのどうするんだっけ、と思った。実はScalaをLambdaで動かしたことは無い気がするので調べておいた。今回はJava 17を前提に動作させる。 tl;dr AWS LambdaのJavaランタイム sbt-assembly sbt-assemblyへの依存性の宣言 …
最近のAI技術の発展には目を見張るものがあるが、そんな中でも言語・ライブラリ・フレームワーク間の互換性は今ひとつ進んでいないのが現状で、TensorFlowとPyTorchとscikit-learnとでは別々の形式をモデルとして利用しているし、もちろんPythonで動かすしか…
プログラミングにおけるEnumeration、略してEnumは列挙型とも呼ばれ、いくつかあるうちの特定の値しか取らない型を表現するために使われる型である。Enumはだいたいの言語で様々な形で実装されている。 さて、Scala 2までではEnumを使う際はやや特殊なクラス…
自分はEmacsでScalaを開発している。最近はScala 3がアツいのでEmacsでScala3を書いているのだが、Scala 3固有のシンタックスをうまく認識しないというトラブルが起こり困っている。 具体的には、Scala 3から利用できるOptional Bracesを使っているとき、TAB…
この記事では、プログラミング言語Scalaにおいて関数型ライブラリCatsをベースとした非同期処理(グリーンスレッド)ライブラリである Cats Effect(CE) において、プロセスがSIGINTを受信した場合にどのようにCEが振る舞うかを解説する。 またこの記事は執筆時…
zenn.dev こういう良い記事がある。しかしこの構成を実行すると、SIGINTを受け付けないサーバになってしまう(以下引用)。 object Main extends IOApp { val echo = HttpRoutes.of[IO] { case GET -> Root / "echo" / arg => Ok(arg) }.orNotFound def run(ar…
仕事で、なんか自分のマシンでしか発生しないDockerの謎の挙動があってずっと困っていたのだけれど、実は自分のDockerのバージョンが古いというのが理由だった。自分はopenSuSE Leapで仕事をしているけれど、Leapは定期リリース版で、ローリングリリースモデ…
id:yigarashi *1と1on1をしていて、自分がid:yigarashiが書く記事はよく体系化されてるけど普段から体系化して情報を集めたりしてんの、という質問をしたところから色々面白い話を聞くことができたのでメモ。 いつ結晶化して展開するか まず、自分もid:yigar…
Tree-sitterというソフトウェアがある。CとRustメインで書かれているパーサジェネレータとそれをとりまくツールである。 tree-sitter.github.io これを利用して、コードをもとにシンタックスハイライトを効かせたHTMLを生成できたのでその紹介をする。 追記(…
Remarkという、markdownを書くことでスライドを作れるツールがある。 remarkjs.com 一般的なスライド作成ツールと比べて、以下のような利点があって自分の主義にマッチしていると感じた。 無料 プレーンなHTMLとランタイムのJavaScriptで動作する Markdownを…
大きなsbtプロジェクトのScalaのバージョンアップを行いたいが、共通して依存されているモジュールがあるとそこがボトルネックになって結局全てのモジュールのScalaバージョンを上げなければならなくなってしまう。これをクロスコンパイルで解消したメモ。 …
こういうSeqがあるとする。 val lis = Seq(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) これの先頭要素と、最後の要素、そしてどちらでもない中間の要素を取り出したい。 素朴にやると、headとlastとを使って、slice(1, lis.size)を使うことになるが、これをパターンマ…
タプルのSeqの片側にflatMapしたいことがあって、arrowのsecondを使ったらうまくいったのでメモ。 flatMap(知ってる人は飛ばしていい) タプルのSeqに対してflatMapしたい ナイーブな解法1: fをタプルに拡張する ナイーブな解法2: lisの片側にだけfを適用する…
ZMMの開発で、動的にログレベルを変更したいということがあった。具体的には、--verboseをつけるたびにログレベルを上げて詳細な情報を吐き出してほしい。 結論から言うと、以下のようにすればよい。 stackoverflow.com Scalaだと以下のようなコードを書いた…
Scalaの軽量スレッドなどを提供するCats Effectで、Seqに詰まったタスクを並行に実行したいが同時実行数は制限したいということがあったので、それに対応する実装をしたメモ。 typelevel.org IOのsequence Cats Effectでは、sequenceを使うことでSeq[IO[A]]…
sbt-native-packagerのDocker pluginでentrypoint.shを追加してイメージの実行を制御したかったがつまづいたので 解決方法をメモ。 sbt-native-packager sbt-native-packagerとは、Scalaプロジェクトを様々なプラットフォームのネイティブな方式にパッケージ…
先日、ScalaのLSPサーバであるところのMetals v0.11.12がリリースされた。 scalameta.org このリリースで面白いLSPコードアクションが追加されたので紹介する。 sbt方式の依存性記述をScala Script方式に変換する Percent syntaxとColon syntax 苦痛をともな…
こういう記事を読んだ。 blog.utgw.net URLにデータを載っける発想は面白い。せっかくなのでMessagePackにしたついでにzstdとかで圧縮してからBase64エンコードしたほうが小さくなるのではないかと思った。 また、最初からJSONを圧縮したほうが小さくなる可…
毎回忘れるのでメモ。Emacsのemacs-lsp-metalsでMetalsのバージョンをアップデートするには、M-x lsp-update-serverしてmetalsを選択すればよい。
こういう記事を読んだ。 transparent-to-radiation.blogspot.com なんかScalaのメモリ使用量が異常に多いなと思って、調べた。検証コードもアップした。 github.com 検証として、様々なJVM(OpenJDKとかCorettoとか)とそのバージョン(8, 11, 17)でJARを実行し…
産業機械とか大型機械といった、相応に注意しながら操作しなければならないモノとかに貼り付けられている、ゴチャッとした、しかし必要な情報が詰め込まれたフォーマットが好きで、発見すると画像を集めてしまう。 萌えは死語っぽくなってないか?と思うけど…
Scalaの非同期・ストリーミング処理ライブラリであるfs2で、ジョブキュー的な感じで、複数のワーカにデータを分散して配りたいことがあり、それの実現方法について調査したメモ。 fs2.io tl;dr 1つのQueueにデータを入れて、複数のワーカから好きに取出せば…
Twitter Good bye— 言語の統合 / タスクの言語化 @windymelt@mstdn.takuya-a.net (@windymelt) 2023年4月10日 おなじみのやつ。 Mastodon mstdn.takuya-a.net マストドンでもいい感じに埋め込まれるようだ。 Misskey misskey.io Misskeyでは埋め込み用の枠は…
立てました PleromaというActivityPubを使ったマイクロブログの実装がある。Elixirで書かれていて、バックエンドとフロントエンドが分離されていて、Mastodonよりやや軽量な感じらしい。 pleroma.social 分散SNSにおける標準的なプロトコルであるActivityPub…
3行で Twitterが特定アカウントのツイートをRTできなくした。一線を踏み越えたと考えている これは言論の統制であるし、このまま加速度的に濫用されると考えている 悪いことは言わないから今すぐ別のSNS、マストドンとかにアカウントを作りなさい 統制 今日…