Lambdaカクテル

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

Invite link for Scalaわいわいランド

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

勉強会タダ飯人間問題を暗号通貨とNFTでなんとかしたい

ジャストアイデアなのでできるかどうかとかは全然考えていない。思い付いたのでメモという感じ。NFTで金儲けみたいな話では一切ないです。そこ勘違いしないよう。 前提 勉強会でタダ飯を喰らう人間がいて迷惑している、という話がITエンジニアならよく知る話…

ゼロから考えないで既知の思想や他人、潮流に従ったほうがよい

常識は疑うほうが良い、みたいな妙な思考が頭の中にあって、何かを考えるときに無駄に根本的な所から考えてしまう。 例: 上の階がやかましいようだ 考える: そもそも夜間に振動を発生させるという行為に対する考え方は歴史的にどのように発展していったのか……

終わりなき非日常

ゲームをやり終わったら、間髪入れずにまた別の何かをしている自分がいる。休憩というか、あ~終わったなという日常の無の時間があってしかるべき気がするし、小さいころはそうだったかもしれない。今では人の手を握るよりもスマホを握っている。 日常への帰…

一定の範囲内からフォーカスが外れた場合にのみ発動するblurイベントを作る

blurイベントとev.currentTarget / ev.relatedTarget を活用することで、範囲で作用するblurイベントを作れる。 <div id="area"> <input type="text" /> <input type="text" /> </div> const area = document.querySelector('#area')!; area.addEventListener('blur', (ev) => { if (!ev.currentTarget.contains(ev.relatedTa…

救急車で運ばれる実績を解除

実績を解除なんてユーモラスに書いていますが本当はこんなの解除したくないし救急隊員だってなるだけ運びたくないしお医者様は来てほしくないに決まっているけど運ばれてしまった以上はユーモラスに書いてやろうというわけです。医療システムに感謝。 ジムで…

ScalaでWASMランタイムを実装してHello Worldを動かした感想

元同僚の id:tanishiking24 くんがScalaMatsuri 2024でWASMの発表をしたのだが、それもあってWASMへの興味が湧いていた自分もちょっとWASMで遊んでみようと思った。 そこで、ゴリラ氏が書いたWASMの記事を読んでScalaでWASMバイナリをパースして簡単なWASIが…

じゃあ何すか、COBOL以外では4.8 - 4.7 - 0.1できないってことっすか / ScalaとSpireで安心安全な計算ライフを実現しよう

先日こういうツイートが流れてきた。 Q:なぜ金融系では未だにCOBOLが使われるんですか?A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。— 遊撃部長F/S&RWAs (@fstora) 2024年6月6日 Q:なぜ金融系では未だにCOBOLが使わ…

Bashで$(cat foo.txt)していませんか?$(< foo.txt)しよう

以下の文書はBashを使う前提の話。 Bashにはコマンド置換(Command substitution)というのがある。$(another-command)のように、$()でコマンドを括る記法だ。これを利用すると、括弧で括られたコマンドが実行され、その標準出力が文字列として取り出され、$()…

難しい概念は、それを難しいと理解できるようになること自体が難しいから難しい

仕事でとある機能を設計して実装していた。ある非同期な処理の状況を画面に表示するというだけのタスクだ。ちょっと様子を見に行って、そのステータスを表示すればいいだろう。そう高を括って設計を始める。 のだけれど、一向に進まない。頑張ってちょっとず…

キーボード壊れた おすすめ募集

blog.3qe.us こいつが壊れた。2年半持ったので、まぁ良いでしょう。 症状 Ctrl + Shiftなどのロールオーバーがまともに動かない(3キー以上が動作しない) APEXやってるので致命的 当分は予備のHHKBで暮らすけど、別の軸でMajestouch買ってもいいし、別のメー…

Emacsがキーボードだけ突然ハングするようになったらlibX11を更新すると良い

掲題の通り。 最近Emacsとか諸々をアプデしていたら、特定のタイミング(LSPがシンボル定義を探している間とか)でキー操作をすると、何らかの秘孔を突いてしまい、そこから一切キーボード操作を受け付けなくなるという問題が起こるようになり途方に暮れていた…

すべてのコードやライブラリ自体が技術的負債である / 高利率な技術と低利率な技術

技術的負債という言葉がある。もともとは、「楽するために導入したが、メンテにコストがかかるようになってしまった技術や構成」くらいの意味合いで使われているように思う。しかし、そもそも全部が負債ではないか、というのがこのメモの趣旨である。 負債 …

mackerel-sql-metric-collectorをCloud SQLと組み合わせてCloud Buildから呼び出し、Mackerelにクエリ結果を送信する

ちょっとしたSQLクエリの結果をMackerelのサービスメトリックに投稿したいということが仕事であった。 Google Cloudではちょっとした処理にはCloud Functionsを利用するか、Cloud Runを利用するのが定石なのだけれど、今回は本当に1つSQLを発射したら終わる…

Scala 3ではGeneral Type ProjectionのかわりにMatch Typesを使いましょう

Scala 2ではこういう表現がたまにあった: trait Entity { type Key } type KeyOfEntity[E

Tagged Type(Branded Type)を使って飛行機の不時着や人工衛星紛失を防ごう / Scala 3ではTagged Typeを簡単に作れる

Tagged Type というテクニックがある(TypeScript界隈などではBranded Typeと呼ばれているようだ)。実行時の型としては同じだが、型システム上はこれを区別して別物として扱い、混同できなくする仕組みを作るためのものだ。 AIくん!サムネイラスト作って!…

花束を買うとオバちゃんにモテる

もうとっくに春と呼べるような気候が過ぎ去り、もりもりと緑が深みを増していく初夏の京都において、ゴールデンウィークの人いきれを回避しつつ悠長な昼下がりを過ごす方法はこの世に存在しないとされており、自分も例には漏れず、ラーメンを食べたついでに…

Scala 3でEnumの逆引きをするには事前にマッピングを用意してやるといい

最近WASMに興味がでてきて、ゴールデンウィークにWASMランタイムをScala 3で実装している。もう結構な命令を実行できるようになって、バイナリをパースして足し算を実行するくらいならできるようになった。 WASMは機械語なので、オペコードと引数が命令とし…

GitHub ActionsからCodeBuildを呼び出せるようになったのでx86_64とaarch64とでクロスビルドしてみた

先日、GitHub Actionsからマネージドランナー扱いでAWS CodeBuildを呼び出せるようになった。 aws.amazon.com CodeBuildからはLambda環境を呼び出すこともできるので、簡単な処理ならLambdaを使い、ビルドなどの大掛かりでファイルシステムを触るような処理…

sed awk make 互換性 つらい うんざりザリガニ

仕事でsedのコードをパパッと書いて使ったら、コードレビューで動かんと言われてしまった。そういえば、同僚はMacで、おれはLinuxだったな。 まぁsedならよくある話なので、しょうがないと思ってawkで同じことをした。awkは比較的もうちょっと互換性がある気…

Mise(a.k.a. rtx)でローカルにインストールされたnodeを使うには.mise.tomlに絶対パスを書くとよい

自分は処理系管理にmiseを使っている。 mise.jdx.dev miseはASDFの精神的後継?みたいなツールで、シェルスクリプトではなくRustで書かれていたり、シンボリックリンクを回避してPATHを変更するなどのテクニックによって高速に動作するのが売りだ。 今回、ち…

(初心者向け)Scalaでsbtプロジェクトを作るときの勘所

この記事では、Scala初心者がプロジェクトを作るときに分かりにくい(であろう)ポイントを埋めようというものです。 こんな記事を読んだ。 trap.jp 普段Rustを書いている人がScalaを書いてみたという内容の記事で、普段Scalaに振れていない人の視点があってと…

ScalaのDIライブラリAirframe DIの使い方、そしてそれがおすすめである理由

Airframe DIについて調べて遊んでみたところ良さそうだったので紹介します。DIについて知っている人は先頭2節をスキップしてよいです。 サンプルもあります。 github.com ソフトウェアでよくある問題: 分割、結合、交換 DIとは Airframe DIとは Airframe DI…

Scala Native 0.5.0がリリースされた (バイナリサイズが6割に)

先日(4月11日)、Scala Native 0.5.0がリリースされた。やったー! Scala Native 0.5.0 has been released! The long await multithreading, initial 32-bit architectures support and many more are now available.See https://t.co/ynLcSIJ5jK for more de…

ScalaにGoroutineがやってくる!非同期処理ライブラリOxで遊んだ

Channelスタイルの並行処理の記述を(もちろん型安全に)可能にするライブラリOxについて調べて試してみた。結論から言うと書き味がめちゃくちゃ良くて面白い。 ソースコードも置いておく。 github.com Ox Oxとは、sttpなどの開発でお馴染のSoftwareMillによっ…

Scala.jsのフロントエンドUIライブラリLaminarの書き味がどんなもんなのかのメモ

驚くなかれ、ScalaはJavascript(ESModuleかCommonJS)にコンパイルできる。それがScala.jsである。 www.scala-js.org 普通に10年開発されていて、普通にぜんぜんScalaが動く。ぜんぜんバグがない。昔はHello,Worldすると20MBのJSが吐き出されるというギャグが…

2024年春のCatsの呼び出し方はcats.syntax.all

tl;dr 2024年春時点では、Catsのimportでとりあえず全部importしたいとき(つまり大抵のユースケース)では以下のようにcats.syntax.allをまず連れてくるのが正解みたい。 import cats.syntax.all._ // または import cats.syntax.all.{*, given} たまにこれで…

夢を見ると、同じ場所で目覚めることがある。 時空のどこかに固定されていて、ある一点の瞬間がずっと流れている。誰もいない。痕跡だけが焼き付いている。 だいたいそれは、過去の自分の体験に基いた心象風景で、実際に見たことがある瞬間の一部が永遠に続…

DSL作りたいんだけど何もわからないので識者に教えてもらいたい

トランスパイルするDSLを作りたいが何を読んだらいいのかまだよくわかっていないので、誰か教えてほしい、という記事です。 あらすじ DSL作りたい あらすじ 最近色々な技術を勉強している。具体的にはロガーの実装を読んだりRefinement Typesの勉強をしたり…

ちっちゃなScalaコンテナを作つコツ(6 MiBだぞ)

おなじみの画像 JavaやScalaといったJVM言語のDockerイメージは、JVMを同梱しなければならない都合で肥大化しがちである。特に何もしなくても、例えば一般的なamazoncorretto:21のイメージサイズは217.7 MBもある。 hub.docker.com これにさらにビルド済みの…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記 今年も邁進いたします。できれば昇給や結婚もしたいです。

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