Lambdaカクテル

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

Invite link for Scalaわいわいランド

scrollIntoView()では不可能な位置へと要素をスクロールさせたいときはscrollBy()を使うテクがある

ブラウザ上の要素を視認可能な位置へとスクロールする設計について調べて実装する機会があったのでメモ。 tl;dr const offsetPercentage = 25; const [parentRect, targetRect] = [ parent.getBoundingClientRect(), target.getBoundingClientRect(), ]; con…

FreeBSD 14.0でPT3を動かす

PT3は地上波を録画するためのPCIeボードだが、基本的にLinuxで動作させることを前提に作られており、一般にはLinuxのドライバしか流通していない。ただ、有志がなんとかパッチを当ててFreeBSDでも動作させられるようにしている。POSIX万歳という感じである。…

Scala3で引数の型によって他の引数を有効化したり無効化したりする

そんなシチュエーションあるんか?と思うけど、ある。 今Chrome Devtools ProtocolをScalaで実装してて、もう動くところまで行ってるんだけど、スクリーンショットを撮影するAPIがこんな感じで定義されている。 chromedevtools.github.io このうちquality引…

怪奇現象: npm/pnpm/yarnプロジェクトをセットアップするとError: EISDIR: illegal operation on a directory, readと言われる。ラッキーアイテムはpackage.json

この記事は怪奇現象に遭遇して治ったというメモです。最近こういう怪奇現象系の話が流行ってますね。なんマイルを超えるとメールが届かないとか、中国人の同僚がお茶を入れると必ずサーバが落ちる、とか。まぁ今回はそんな怪異の足元にも及ばないプチ怪異、…

JSONの差分を取ってJSON Patchを得るにはdiffsonがおすすめ

こういうツイートを見た。 Scala (or Java) で、jsonのdiffをpatchファイルみたいな感じでわかりやすいテキストで出力してくれるライブラリないかなあ。そしてjacksonに依存してないといいな— Arthur (@Arthur1__) 2024年1月13日 現代のプログラミングではJS…

Scala 3のシンタックスではforループでdoを使うことがある(カッコ付けたければ不要)

こういうツイートを見かけた。 Scala3 って for-yield じゃなくて for-do なの???— りと (@rito_528) 2024年1月8日 言われてみれば、たまにScala 3のコードサンプルでそういうの見たことあるな~と思った。ので調べたメモ。 tl;dr 値を返したいときはyiel…

エンジニアの生産性を支える楽観主義

あなたはポジティブっつー言葉は好きですか。自分はそんなに好きじゃない。好きじゃない人に読んでほしい気がする記事。 自分はひねくれているのでポジティブという言葉があまり好みではない。精神論っぽいし、どうしたってポジティブにならない物事もあるか…

2024年どうしようね

昨年はなんだかあっという間に終わってしまった。相変らずCOVID-19は流行っているが、昔ほど大仰な対策は行われなくなって、可能な範囲で経済と生活を戻していきましょうね、という感じのプロセスに入っている。 年末はなんやかんや忙しくてあまり1年を振り…

SN bindgen: CヘッダファイルからScalaの型定義を生成する + ネイティブにtree-sitterを呼び出してみた

ScalaをネイティブバイナリにコンパイルするプロジェクトであるScala Nativeというのがある。 scala-native.org 2023年現在では多くのScalaライブラリがScala Nativeに対応しているため、特に難しい対応をしなくてもネイティブバイナリを得られるようになっ…

今年買ったもの 2023

今年はリモートワークが一段と進み、人間関係に変化があったり無かったりし、仕事もそこそこ進んだ、そんな一年であった。 だいたい自分はちょっとデカいものを買ったら自慢してやろうという下心で記事かなにかに書いている。中には書いていないものもある。…

Node.jsのmkdtempはprefix指定が独特で注意が必要だけど、他の言語は大体普通だった

ハマったので後学のためにメモを残しています。うえ〜ん 一時的にファイルシステムにファイルやディレクトリを作りたい、ということはよくある。ただし適当な名前で作成すると名前が被って事故の元になってしまう。このため、各プログラミング言語には一時フ…

SandSをLinuxでやってる人はxremapを導入してxmodmapとxcapeを捨ててください

自分は日本語入力効率化のためにずっと昔からSandSを利用している。SandSとはSpace and Shiftの略で、以下のようなキー入力のカスタマイズのこと。 スペースキーの役割をシフトキーにする ただし、スペースキーを単発で押して離したときはスペースキーとして…

Cloudflare WorkersにScala.jsをデプロイした

意外とやったらできたので記事にします。 実際に動いている様子はこちら。 cloudflare-worker-scala-exercise.pages.dev ソースコードはこちらです。 github.com 感想 やること Cloudflare Workersってなによ 目指す構造 Scala.jsを書く project/plugins.sbt…

動画・音楽ファイルの秒数を算出するにはffprobeを使うと便利

動画ファイルや音楽ファイルの長さを知りたいことがある。例えばファイルをエンコードし直して一定のファイルサイズに収めたいときなどは、ターゲットとなるビットレートを算出するために秒数を得る必要がある。 メディアファイルの秒数を得るには、ffmpegに…

関数型プログラミング: map結果を引数とのペアにしたいときはStateが便利だったりする(StateTもあるよ)

この記事では、Scala 3と関数型ライブラリであるCatsを時折使いつつ、Stateモナドを利用することでmap結果にうるおいを与えられるという話題を紹介します。 よくある処理: mapしてからペアにする まあまあよくある: メソッドはたまに値返さないことがある ま…

初心者向け: Scala CLIでScalaをはじめよう

この記事は Scala Advent Calendar 2023の19日目の記事です。19日って「あ〜今月が終わる」ってなるちょうど良い塩梅の日付ですね。 qiita.com この記事では、Scalaの総合ツールであるScala CLIを利用する様子を紹介し、Scala CLIでScalaのちょっとしたアプ…

マイクロサービスコンビニ弁当アーキテクチャ -- コンビニ弁当容器とカトラリーのライフサイクルを合致させることにより一時的結合状態を解消する

コンビニ弁当の空き容器が部屋に放置されがちで、それは端的に言うと自分がズボラなだけなのだけれど(Q.E.D.)、どうしてこうなってしまうのかということを考えていた。すると意外なところに答えがあった。 最近自分は『モノリスからマイクロサービスへ』を…

Scalaで一定のコレクションを無限に繰り返すようなストリームを作る

このような、一定の要素を無限に繰り返したリストが欲しいことがある。無限に続くリストは通常のリストでは扱えないため、ストリームを使わなければならない。Scala 2.12まではストリームのためにStreamを使い、2.13以降はLazyListを使うことになっている*1*…

リモートワーク大時代に来るアーキテクチャ、それは疎結合

なんかタイトルでデカく出てしまったけど、リモートだと疎結合なアーキテクチャのがうまくいくね、という経験をしたという話。特にオチはないです。ソフトウェア設計が好きな皆様のおやつとして読んでください。 COVID-19でリモートワークが拡大した 最近や…

シンプルで使いやすいマイクロHTTPフレームワーク『Cask』を紹介するよ

今日はScalaで動作するマイクロHTTPフレームワークであるCaskを紹介したいと思います。Scalaを見る目が変わると思います。Scalaはけっこう複雑寄りのエンタープライズグレードの超強いライブラリが多いような気がするのですが、今回ご紹介するのはとてもeasy…

AWS Lambda FunctionをScala.jsで書いて爆速Scalaを満喫しよう

この記事は、Scala Advent Calendar 2023の5日目の記事です。 qiita.com 大遅刻してしまいましたが、Scalaは遅延評価できるのでモーマンタイですね。 この記事では、Scalaをクラウドネイティブな環境で使う例の紹介として、ScalaをJavaScriptコードにトラン…

Node.jsのストリーミングAPIにPromise版が生えていた、こっち使うと便利そう

昨日こういう記事を書いた。 blog.3qe.us ↑ではがんばってパイプラインが送るイベントを監視してPromiseでラップしていたけれど、実は公式にPromise版のAPIが提供されていた。 nodejs.org これを使うといい感じに入出力が終わったタイミングで完了するような…

Node.jsでGoogle Cloud Storage上のファイルからファイルへ、変換しつつ保存する

マニアックなネタだが割とハマったのでメモっておく。 Google Cloud Storage 詳細は割愛するが、要するにAWS S3のGoogle版である Node.js SDK Node.jsにはGoogleまわりのSDKが提供されていて、Cloud Storageを操作するためのSDKも用意されている。 cloud.goo…

『データ指向プログラミング』読んだ / OOP以前とDOPとの対比と差分などについて

先々月あたりに邦訳が出た『データ指向プログラミング』を読んだ。めちゃくちゃざっくり言うとオブジェクト指向における「データと振舞いの一体化」というドグマを手放させるもので、めちゃくちゃざっくり見るとC言語的な構造化プログラミングの世界に回帰す…

Node.jsでCloud Storageのファイルをストリーミングしてffmpegに渡したかったけどffmpegはFIFO非対応っぽい

所用で、Cloud Storageにある動画ファイルをopus(音声)形式にエンコードしたかった(Node.jsとffmpegで)。 動画ファイルがデカいのと、生成されるopusは小さいので、いちいちストレージに保存するのが手間だと考えた。そこで、間にmkfifoして作った名前付きパ…

冬をエンジョイする

ここ数日はまだギリ耐えられていたのだが、ついにガチめに京都は寒くなってしまったので困っている。毛布とかの準備を(一応)進めているけれど、何年住んでてもこの寒さに慣れない。 とはいえ冬は冬で風情があってよいもので、アロマキャンドルを出してみたり…

PyPIのScala版、Scaladexにコントリビュートした

Scalaのライブラリを検索・一望・依存性定義をコピペできたりする便利なサイトであるScaladexにコントリビュートした。という話を自慢するだけのエントリです。 Scaladexとは ScaladexとはRubyにおけるrubygems.org、PythonにおけるPyPIの、Scala版である。…

Google CloudのCloud FunctionsでScalaを実行する

仕事でCloud Functionsを触る機会があったのでメモ。この記事はScala Advent Calendar 2023の2日目の記事です。 qiita.com 昨日の記事はこちら。 zenn.dev AWSがLambdaを提供しているのと同じく、Google CloudはCloud Functionsというサービスを提供している…

秩序があると混沌よりも良いんじゃ(プロジェクト遂行における創発段階においても段取りや問題探索空間の縮小が必要という話)

同僚と1on1していて面白い話をしたのでメモ。 プロジェクトの不確実性 前提として、自分はソフトウェアエンジニアとして働いているのだが、0→1的な仕事の場合、プロジェクトは最初は不確実で混沌とした状態にあり、しばらくの創発的な状況を通過していくこと…

個人コミュニティはDiscordでいい気がする

昔はSlackで自分しかいないワークスペースを作っていたんだけど、webhookまわりの設定がいろいろ面倒で、雑にwebhook urlを生成して使えるDiscordのほうが何も考えなくていいなと思うようになった。フィードとかを流したいし、各種botの実験場にしたい。 Twi…

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?