Lambdaカクテル

京都在住Webエンジニアの日記です

2023-01-01から1年間の記事一覧

OpenAI(ChatGPT)をScala3から呼び出せた

Tapirなどの実験がてら、OpenAIにアクセスする実験をしていた。とりあえず実験に成功したので解説する。 github.com 実行すると、とりあえず挨拶してもらうようにしている。 $ OPENAI_APIKEY="..." OPENAI_ORG="..." sbt run こんにちは!ChatGPT APIへよう…

ScalaではIntをDoubleに代入できるがサブタイプではない(関数引数の変性が反変になる話と絡めて)

非常に面白い題材をTwitterで発見したのでメモ。 このようなツイートを見た。 scalaって関数にも部分型関係があって、コンパイル通ると思ってたけどダメみたい。なんでですかね?val f : Double => Boolean = (d:Double) => trueval g : Int => Boolean = fh…

近況報告(体調悪い、マウスなど)

ここ最近体調がすぐれない。寒い冬が終わってようやく体調が良くなるかと思ったら花粉の季節がやってきてしまった。 幸いなことに、家には空気清浄機がある。しばらくフィルタを交換していなかったので買い替えたら、元々のフィルタは薄墨色に汚れていた。こ…

Scalaの正規表現でオプションを使うには文字列先頭で(?フラグ)と書く

言いたいことはタイトルで全部言ってしまったので以下は蛇足です。 蛇足 ECMAScriptなどの言語では、正規表現リテラルが存在しており、リテラルと一緒に正規表現オプションを設定できる。 // xオプションを設定する const re = /(\d\d\d) - (\d\d\d\d)/x; *1…

Scalaの正規表現で名前付きキャプチャグループを使う

こんな記事を読んだ。 blog.s2n.tech 正規表現はメンテ不可能になりがちなので、キャプチャグループに名前を付けたり、キャプチャさせなかったりしてメモリを節約するのは良いこと。 Scalaでも同じことができそうだったけれどはっきりとは覚えていなかったの…

brace bracket どっち 覚え方 発音で覚えよう 令和最新版

米語では、{}のことをbraceと呼び、[]のことをbracketと呼んでいる。 自分はこう覚えているというのをメモしておく。 brace 発音がカクカクしていない 丸いほうの{} bracket 発音がカクカクしている カクカクしているほうの[] ちなみに()はparenthesis(よく…

RTX3000シリーズではAV1ハードウェアエンコーディングは非対応

FFmpeg 6が出た。 nico-lab.net 特筆すべきは、AV1コーデックのハードウェアエンコード対応。-c:v av1_nvencを指定することで、NVEncを使ってGPUによるハードウェアエンコードが可能になる。 はずだった!! developer.nvidia.com rev.hatenablog.com 自作マシ…

DateTimeのwithZoneについてのメモ / 構造の忘却という普遍的な話題

Scalaでは時刻操作のためにJavaライブラリであるjoda-time(と、そのScala用便利ラッパーであるnscala-time)を使うことが多い。JVM言語の良い所だ。今回はタイムゾーンTZ操作にまつわるメモ。 withZoneでタイムゾーン表記を変更する DateTimeに対して定義され…

ScalaTestではshould ===を使うと良い

ScalaのテストフレームワークであるところのScalaTestのドキュメントを読んでいたら便利なメソッドを発見したのでメモ。実はもうみんな知ってるかもしれない。 等価性比較 ScalaTestでは、Matcherという便利なメソッドを使って等価性や存在判定などのテスト…

物理に回帰してCD買うようにしている

最近は、好きなアーティストや、「あの曲なんだったっけな〜!」とがんばって思い出すみたいなことがあるような曲は、CDで買うようにしている。 というのも、以下のようなことが起こったため。 ネット帯域がなんか無駄なのではないか?という気持ちになった …

理解できないものを受け入れられない人々 / 有能な技術者の条件

理解できないものに遭遇したとき、人間は割とすぐに白黒付けようとする。しかも、理解できる範囲でこれを行おうとするのだから、大抵うまくいかない。 自分がビットコインで卒論を書いたときもそうだった。当時はMt.Goxが破綻していた頃で、ビットコインに対…

Scalaで(f(), g(f()), h(g(f())))みたいなのを返したいときのパターンと、scanLeftと、Writerモナドと私

仕事でコードを書いていて、タイトルのようなケースに遭遇した。 val a, b, c, ... = ??? // 定数 val x = f(a) // なんかを計算したり生成する val y = g(x, b) val z = h(y, c) ... val 最終的に欲しい値 = (x, y, z) こういうの。 これがもし仮に以下のよ…

Obsidian + ResiloSyncで編集環境を整える

最近Markdown編集ソフトウェアであるObsidianでブログなどの原稿を書くようになった。 blog.3qe.us このソフトウェア自体は便利なのだが、マシンをまたいだ同期機能は有料という仕様になっており、そのためOSを切り替えて作業している時などにはちょっと面倒…

Chromiumで透過背景スクリーンショットを撮る

zmmの開発で、背景として動画を使いたいというリクエストがあった。よく考えるとffmpegで最終的に合成しているのだから動画でも合成はできなくもなさそう。いったんchromiumが吐き出すレンダー画像を透過にして、あとから動画と合成すればよいのだ。 という…

Scala: CatsのArrowを覚えたのでfizzbuzzにする

とりあえず何かを覚えたらfizzbuzzにするクセやめたい import cats.syntax.all._ import cats.implicits._ extension (d: Int) def ~>(s: String)(n: Int) = (n % d == 0).guard[Option] as s val fizzbuzz = (((2 ~> "fizz" &&& 3 ~> "buzz") >>> (_.toList…

ScalaでWebアプリを爆速開発するための技術スタック 2023

ScalaでなんかWebアプリをガッと作りたくなったときにどういう技術を使うべきなのか?という話です。自分はこういうふうに考えてるけどな〜というのを知見としてまとめておこうと思ってこの記事を書いています。いやいやこっちのが速いでしょみたいな話題歓…

花粉の季節が来るのでBlue Pure 411のフィルターを交換する

昨年くらいに、花粉症対策とかなんとかを兼ねてBlue Pure 411という空気清浄機を購入した。 ブルーエア 空気清浄機 Blue Pure 411 13畳 101436 換気 360度吸引 花粉 カビ ダニ 小型 小さい コンパクト パワフル 簡単お手入れ PM2.5 ハウスダスト 細菌 ウイル…

ScalaTestでMapの存在判定をする

一瞬ハマったのでメモ。 val m: Map[DateTime, Int] = ... このような、DateTimeからIntへのMapがあるとする。 ScalaTestで、ある範囲の日付がすべてこのMapにキーとして含まれていることを知りたい。 誤答: definedAtを使う val from = DateTime.parse("202…

淡々と暮らす

天皇誕生日ということで祝日である。自分のような平民にも休みが与えられてありがたい話だが、だからといって何かをやるというわけでもないので寝ていたら、注文していた荷物が午前に到着してしまったので中途半端なタイミングで起きてしまった。朝食にも昼…

Obsidian使ってみた

たまに知人がObsidianについて言及していたので少し気になっていたのだが、はてなブログの下書きツールとして案外使えるかもしれないなと思ったので試しにこうして記事を書いてみている。 obsidian.md ObsidianとはMarkdownを編集するためのツールといったと…

Nothing OSが更新された

Nothingが販売しているNothing Phoneに載っているAndroidベースのOS、Nothing OSの大型アプデが来た。 blog.3qe.us かつてはAndroiod 12ベースだったNothing OSだが、今回Nothing OS 1.5になったことでベースとなるAndroidも13にバージョンアップ。いくつか…

ぶっちゃけMySQLもPostgreSQLも一緒だろ

この記事は、各RDBMSの識者にマサカリを投げてほしい記事です!マサカリ歓迎! あらすじ 最近MisskeyというSNSを始めた。具体的にはMisskey.ioという一番大きめなインスタンスにアカウントを構えたのだ。 misskey.io MisskeyはRDMBSとしてPostgreSQLを採用し…

VOICEVOX Coreのラッパー書いたら公式ページからリンクしてもらえた

先日、VOICEVOX CoreのScala用ラッパーを書いた。 blog.3qe.us これを使うと、Scalaからずんだもんを簡単に喋らせることができる。 で、ネットをさまよっているとVOICEVOXコミュニティのDiscordに参加することができた。 そこで会話してるうちに、ラッパーを…

ScalaでJARファイルにネイティブライブラリをバインディングする

ScalaでJARファイルにネイティブライブラリをバインディグして使いたいことがある時、いくつかの点を考える必要がある。 どういう仕組みを使うのか? どうやって呼び出すのか? どうやって同梱するのか? どうやってビルドするのか? どうやって展開するのか…

#VOICEVOX Core 0.14.1のScalaバインディング『voicevoxcore4s』をリリースしました

掲題の通りです。 皆様はVOICEVOXをご存知でしょうか。特に説明は不要と思いますが・・・ voicevox.hiroshiba.jp テキスト読み上げソフトウェアなのですが、キャラクターなどの創作文化と合わさって大きなエコシステムを形成している面白いシステムです。ラ…

"負け癖"の解剖: 引け目が理解を阻害する

気付きがあったのでメモ。 得意ではない事柄について引け目を感じてしまうことがある 過去に失敗・挫折を経験している場合はその傾向が強まる 引け目を感じている状態の場合、その対象を理解しようとするのが困難になる場合がある わかろうとしているのに全…

GNOMEのメニューバーからサウンドデバイスを切り替えられる拡張「Sound Input & Output Device Chooser」が便利

普通GNOMEではサウンドデバイスを切り替えるときは「設定」を開いてサウンドの項目を選び、デバイスを切り替える必要がある。 しかし最近はサウンドデバイスも多様化しており、オーディオインターフェイスを使うこともあれば、Bluetoothヘッドセットを使った…

スティックを倒し続けている間スクロールし続けるデバイスが欲しい

皆様はスクロールを行うために何を使っているだろうか。おそらくマウスホイールを使っているのではないだろうか。 Logitech ゲーミングマウス ロジテック G300S 左右対称 プログラムボタン9個 高精度dpi Side3 [並行輸入品]Side3Amazon 自分はこのG300Sを使…

庭を見た。もう梅や桃が咲いている。陽射しは暖かく、時折吹く眠気覚ましのような風が 心地良かった。広い庭は好きだ。

被害者意識を持たない

ネット見てて思ったのだが、被害者意識マシマシな人が年々増えていて、インターネッツで暴れ回る率が上がっとるね、ということ。バトルの当事者同士がお互いに被害者だと自分を規定していて、それを「取り戻す」んやという建前で聖戦しとることが多い。 自分…

Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?