Lambdaカクテル

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

Invite link for Scalaわいわいランド

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

YAMLとJSONの話題 / JSONへとトランスパイルされる別言語を作ればいいんじゃないの

以下の記事を読んだ。 wp.jmuk.org この記事の要点をかいつまんで話すと、以下の通りになる: JSONの代替として使われているYAMLはオーバースペックではないか キーのスキーマが不安定だったりする 求めているものは、コメントが書けるJSONくらいのものなので…

Web3.js / svelte-web3を使ってMetaMaskによるウォレットログインを実装した

Web3技術の勉強の一環として、ウォレットを使ったログインを実装してみました。 www.3qe.us MetaMaskのインストールはこちらから。 metamask.io ビルダとしてwebpackを使用し、UIライブラリとしてsvelteを使用しました。ランナー/パッケージマネージャはnpm…

http4sのEmberClientでタイムアウトを指定する

自分が書いている趣味プロダクトに、HTTPクライアントとして外部と通信するコードがあった。タイムアウトを指定しつつ通信させたかったがあまり資料が無かったのでメモしておく。 http4sとは タイムアウトを設定する withTimeout withIdleTimeInPool .withId…

Cats EffectのHotswapの使い方について調べた / 無限に出てくるトイレットペーパーを実装する

Cats Effectの勉強をしてたらHotswapというコンポーネントがあって便利そうだったので紹介します。 Hotswap Resourceを単体で使う欠点 そもそもResourceとは Resourceにできないこと Hotswap登場 応用: 途切れないトイレットペーパー ToiletPaperクラス toil…

Cats Effect 3でセマフォを使う方法 + よくある落とし穴 (標語付き)

Cats Effect 3のセマフォの使い方の例があまりないなと思ったので自分で書いておいた。標語もあるよ。 そもそもセマフォって何よ 前提知識 Cats Effect 3によるセマフォ 落とし穴 標語 (大きな声で読み上げよう) 解説 Cats Effectという、Scalaで非同期処理…

反-単一の社会そしてオタクラッピング電車

自分が求めている世の中のありようをうまく表現する言葉が見付からないなあと思っていたが、風呂に入っているとき、「反-単一の社会」という言葉が脳裏をよぎったので、それを忘れないように急いで風呂を上がってきた。 自分は多様性という言葉がそれなりに…

さまざまな色覚特性のもとで画像がどう見えるかをモンタージュする

こういう画像を吐き出してくれるシェルスクリプトを組んだ: さまざまな色覚特性のもとでどう画像が見えるかを1枚にモンタージュした画像 このスクリプトの利点として以下を挙げたい: OS上で直接画像が得られる 1枚の画像が得られるため比較しやすい 高速に動…

Scala 2.12と2.13とで、ListMapのキーまわりの挙動が違っているので注意しましょう / ライブラリ調査の心得

アプリケーションのコレクションまわりの実装について調査していたところ、Scala 2.12から2.13にかけての更新がscala.collection.immutable.ListMapの挙動を変化させており、実は元々2.13で見せていた振舞いは仕様外のものだったことが判明したのでメモ。 こ…

ラズパイに接続した音声デバイスを、ネットワーク内の別のマシンから利用することができる(特殊な機器は不要)

Bluetoothトランスミッタの高級版みたいなことをやりたくて試行錯誤した結果うまくいったのでメモ。 元気に動いています この記事では、ラズパイを用いて音声入出力デバイスをネットワーク越しに共有し、PulseAudioまたはPipeWireを使う他のLinuxマシンから…

圧縮済みのTARファイルを展開せずにファイルを追加できる

またTARの話してる・・・ (前回のTARの話はこちら) blog.3qe.us GNU tar(1)のマニュアルを見ていたら、面白いことが書いてあった: www.gnu.org --concatenateオプション(もしくは--catenate、 -A)を使うことで、複数のTARアーカイブを1つに結合できるらしい…

TARにアーカイブされたファイル名のエンコーディングはどうなっているのか

ふと思って調べたところ色々と面白いことが分かったのでメモ。 tarはファイル名を関知しない PAX(1)コマンド じゃあファイルシステムのファイル名のエンコーディングはどうなっているのか NTFS TARという形式がある。Tape ARchiveの略で、元々はテープドライ…

manがあるコマンドは偉いし、manを付けるべき

社内で、crontabのtabは実はtableだからクーロンタブじゃなくてクーロンテーブルなんだよね、という話が盛り上がった。 ファクトチェックとして、crontab(5)が紹介されていた(cron tableという言葉が出現している)。 manで事実確認がすぐできてすごいと思う…

Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます)

Common Lispの処理系であるSBCLをインストールしようとしたら、追加でlibzstd-develというのを新たに要求されるようになっていた。見るからに圧縮系のライブラリだけれど聞き慣れないのでちょっと調べてみた。 ちょろっと調べたところ、以下のことが分かった…

YubikeyにPIVを入れる / Yubikey gpg-agent PIV 喧嘩しない 方法

自宅サーバの認証もろもろで遊んでみたかったので、YubikeyをPIVとして使ってみたところ、gpg-agentとpcscdが Yubikeyを取り合ってしまったので、それを直したメモ。まずPIVの証明書をYubikeyにインストールした話をして、次にgpg-agentがうまく動かないのを…

Bluetoothキーボードとxcapeとの組み合わせで、スペースキーを押すとなぜか機内モードになる怪奇現象が起こる

ほぼタイトルの通りなのだが、怪奇現象が起こって困っている。 FILCO Majestouch Convertible 2を使っている 青軸最高〜〜 Linux (OpenSuSE Tumbleweed)ユーザ 自分はスペースキーをShiftに割り当ててSandSを行うため、xcapeを使っている(後述) Bluetoothモ…

PGP鍵を交換しました + 令和最新版のPGP鍵運用メモ

PGP鍵を交換しました。というのも、元々使っていたPGP鍵はYubikey上で生成して使っていたところ、数ヶ月前にYubikeyを紛失するという赤っ恥の行いをやらかしてしまい、とっとと失効させて作り直す必要があったからです。ありがたいことに手元に旧い鍵の失効…

Scalaをスクリプト言語にしよう! Ammonite文法最速マスター

追記(2023-04-04): Scala CLIを使いましょう Ammoniteをベースにより洗練されたScala CLIが開発され、Scalaのデファクトスタンダードとして定着しつつあります。公式にscalaと入力した際の標準アプリケーションとなることも予見されているため、こちらを学ぶ…

全裸で室内をウロウロし、幸福を見出せ

幸せな人、幸せなカップル、幸せな家族。「幸せ」という言葉は、人を表す言葉にかかりがちだ。 だが本当だろうか。人が幸せなのだという価値観に囚われると、自然と自分を幸/不幸の枠組みで捉えるようになる。 幸せは他者や物事の中に発見するものだと気付け…

EmacsでFlycheckのウィンドウをトグルできるようにした

自分は普段の開発ではEmacsを使っていて、VSCodeユーザに笑われつつも(被害妄想)今のところ普通に開発できている。 そして、エラー表示にはFlycheckを使っている: www.flycheck.org FlycheckはLSP-modeに対応しているので、LSPで検出したエラーをEmacsの枠組…

人間、全部優秀を目指さなくても、普通で良いっス

日が暮れたので、行きつけのスタバにふらふら歩いていた。ぼーっと歩いていると、同じような人々が、涼しくなった路地をうろうろしていた。 人を見ながら、人間は、案外普通だな〜という気付きがあった。 なんらかの作品に描かれるような優秀な人生というも…

Perlのqw()みたいなやつがScalaにも欲しいので作った

追記3: Maven Central Repositoryにリリースした。 index.scala-lang.org 追記2: ライブラリ化した。Mavenにpublishする手続きをちびちびやっている。 github.com 追記: 実装おかしかったのでちょっと修正した Perlにはqw()という文字列のリストを構築するた…

騙された方が悪いというロジックがネットに蔓延していて議論が成り立たない

あまりブログでは政治的な話題は書かないようにしているが、特に思ったのでメモしておく。 人がなにかウソをついたり、悪事を働いたり、誰かを騙したりしたことが判明したとき、騙された方が悪いとみなし、むしろ騙された方を(いかがなものかという消極的な…

金、儲けてえなあ

世はやれSDGsだとかなんだエシカルだとかなんか言っていて全体的に端正に礼儀正しく禁欲的でお金より大切なものあるよね、みたいな方向性をギラつかせているけれど、やっぱりおカネ稼ぎてぇなぁという気持ちがある。 それで他人から金取れる、という状態にな…

一回しか変数を呼べなくすることは可能か

バグを出しにくいソフトウェアを型で実現、みたいな話題が好きで、しょっちゅう型でなんとかできないか考えている。 そんな中、そもそもバグが出るのって、1つの変数を複数回「見る」ことによるものも多いのではないかと思った: 同じ変数が、離れた別々のス…

変数echoとsedのコンボはbashだけで完結できる / bashの文字列置換いろいろ(ときどきzsh)

GitHub Actionsのyamlファイルをいい感じに矯正してくれるActionlintというのを入れていたら、SC2001という項目を指摘された。 www.shellcheck.net string="stirng" ; echo "$string" | sed -e "s/ir/ri/"というコードは、string="stirng" ; echo "${string/…

忙しい人に判断を仰ぎたいときは松竹梅プランを作ってチェックボックスを埋めてメンションしてもらうようにすると合理的で便利

普段の暮らしにおいて、実装の仕様をエンジニア単独では決められないことがあって、そういうときにはマネージャーとかディレクターといった意思決定可能な立場の人の判断を仰ぐことになるのだけれど、そういう立場にある人は無限にミーティングをしていたり…

GitHub ActionsでJSONを組み立てるのは actions/github-script 経由が一番早そう

GitHub Actionsでworkflowを組んでいると、外部ツールと組合わせるために、JSONを組み立てなければならないことがある。Actionに直接渡すだけだとJSONの出る幕はあまりないが、外部サービスになんかするといった時にはすぐJSONが必要になりがち。 二重の苦労…

普段はPerlとScalaを書いていますが #rubykaigi 2022に参加してきました / 吸えそうな知見

普段はPerlとScalaを書いて暮らしていて、Rubyを書くのはcapistranoを使うとき・・・という位のWebアプリケーションエンジニア、 id:Windymelt です。株式会社はてなで、はてなブックマークを開発しています。 普段は、関数型テクニックの話をよく記事に書い…

カメラ沼、そして思考沼 / 客観視が抑鬱をもたらす

先日RubyKaigi 2022に参加して、三重県津市で楽しく過ごすことができた。肉を食べたり、DJを見たりした。その参加レポートはもうしばらくしたら完成するから置いておくとして、そんな道中を記録するのに、フジフィルムのX-E4が活躍した。 めっちゃピンボケし…

中国の謎ドリンク『王老吉』買った

中国に、王老吉というドリンクがあるらしい。どういうわけか日本でも微妙な人気があるらしく、フォロワーが買って飲んでいて結構気になっていた。ワンラオジーと読むらしい。 そんな中DPZの記事を見付けてしまった。 dailyportalz.jp 2009年の記事なのでOG:I…

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