Lambdaカクテル

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

Invite link for Scalaわいわいランド

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

Scala.jsで環境変数を呼び出したいときはsys.envではなくjs.Dynamicを利用する

Scala.jsをNode環境で動作させるときに環境変数を取得したかったけどうまく動かずにハマったのでメモ。 tl;dr val env = js.Dynamic.global.process.env.asInstanceOf[js.Dictionary[String]].toMap Scala.jsと環境変数 通常Scalaで環境変数にアクセスするに…

ブロッキングってそもそも何だよ

さきほど別のブログ記事を書いていて(それはまたそのうち発射するけど)、その中でブロッキング処理とか同期的に扱う、という言葉を使った。 このときの自分の理解がこれ: ブロッキング 呼ぶと待たされる ノンブロッキング 呼んでも待たされない、すぐ返る そ…

ARCHISS Maestro TKL (キーボード)を買った

キーボードを買い替えた。ARCHISSというブランドのテンキーレス・US配列・メカニカルという、まぁ同業者(?)の中ではポピュラーだが世間一般的には全然そんなことはないような仕様のやつだ。 箱から出したばかりだとこんな感じ。 前代はというとFILCOのMajest…

帯状疱疹にならないほうがいい3つの理由

帯状疱疹になったけどメリット1つもないのでそのダルさを啓蒙する記事。 あらすじ 2日くらい前から左の脇腹のあたり、場所といったらちょうど俺が椅子に腰掛けたときにTシャツのタグが触れるくらいの位置にブツブツができた。 最近暑かったし汗疹かなんかか…

何かを理解するためには借り物の言葉でもいい

エンジニアは一生勉強と世に言うが、べつにこれは所謂エンジニアに限ったことでもない。人間として生きている以上は日々が勉強の連続で、毎日何かを理解して、憶えて、その繰り返しだ。 だから、日常のレベルではドキュメントを探したりチュートリアルを見た…

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

去年はこれです。ちらほらスターがもらえていたりするので、今年も更新するかという気になった。 blog.3qe.us 以下の項目について技術スタックを考えていく。太字は今年になって追加したもの。 言語 エディタ ビルドツール スクリプティング ロギング テスト…

勉強会タダ飯人間問題を暗号通貨と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を使いましょう / Type Lambdasも使える

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によっ…

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