Lambdaカクテル

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

Invite link for Scalaわいわいランド

2022-11-01から1ヶ月間の記事一覧

Scala3のUnion Types / Intersection Typesを試してみた

Scala3チャレンジをする記事の二本目。 前回はこちら。 blog.3qe.us ソースコードは以下に置いてある。 github.com github.com Union Types Eitherとの違い Discriminated Union Typesもどき Intersection Types まとめ MathJax v3以降ではbussproofs.styが…

自分の機嫌を取る

自分の機嫌を取らないとなと思うことが最近たてつづけにあった。仕事のコードの機嫌が悪くて自分の機嫌も悪くなり怒り狂っていたり、Apple Musicの動作が不安定すぎてストレスを感じていたり。当たり前と思っていることが当たり前に動作しないと人間はすさま…

Scala3のOptional Bracesを試してみた

ちびちびScala3に生えた新機能の実際に使ってみるチャレンジをやっている。いつの日かチームに導入できたら嬉しいね、とか、自分で使いこなせるようになると嬉しいね、というモチベーションである。 今日はOptional Bracesについて勉強した。ソースコードは…

Class::Accessor::Liteのプロパティを変な方法で呼び出しても一見動いてしまうの困る

package Foo; use strict; use warnings; use Class::Accessor::Lite( new => 1, ro => [qw(prop)] ); sub foo { my $self = shift; return prop; } これはちゃんと動かない。正しくは package Foo; use strict; use warnings; use Class::Accessor::Lite( n…

for式でタプルのbindingが動かないと思っていたら10年モノのバグ(SI-5589)だった

こういうバグを踏んだ。このコードはScala 2.13でコンパイルしない。この例ではCats Effect 3のIOモナドを使っているけれど、どのモナドでも発生する。 def fa = IO.pure("left") def fb = IO.pure("right") for { (a, b) <- fa product fb // ここでIO[(Str…

ScalaのCatsにおけるTuple上でのmapやproductの振舞いが面白いので紹介する

ScalaでプログラミングをしているとTuple2にお世話になることが多い。例えばSeq[(K, V)]からMap[K, V]を得ることができるし、何かと応用範囲が広い。catsでも、Tuple2をうまく操作するための数々のインスタンスが用意されている。 そんな中、Tuple2のインス…

最近のインターネットつまんなすぎ辛すぎ

特に結論の無い記事。 インターネットはもう多数派のものになった、というだけのことっぽい。— @windymelt@mstdn.takuya-a.net🍥🧪 (@windymelt) 2022年11月23日 言いたいことは↑でだいたい終わっている。 インターネットははみだし者の集団がワイワイやってたか…

Seq[(K, V)]について、キーが同じである限り結合し続ける処理

こういうメソッドを定義したい。 Seq[(String, FiniteDuration)]があるとき、同一のStringが連続した場合に限ってFiniteDurationを足し合わせて、最終的にSeq[(String, FiniteDuration)]を返すような処理を書きたいんだけど、どうしたもんか— @windymelt@mst…

ロシア/ソ連のミサイルの呼び名が色々ある理由

最近ポーランドにS-300の5V55?ミサイルが落っこちてきて死人が出る大事になってしまった。 S-300*1 www.nikkei.com www.afpbb.com 報道によると、ウクライナが発射したものが逸れて落ちてきたという説が有力になってきている。 そういうことがあったので改め…

徹底比較!! メモリクロックはプログラミングに効くのか(効きませんでした)

趣味のプログラミングなどに使っている自作PCのメモリが最近キツくなってきており、ブラウザを開きつつStable Diffusionなどを回していると16GBでは結構辛いものがある。Scalaのコンパイルなどでも結構なメモリが消費される。 そこでメモリを買って16GiBから…

図で眺める Scalaの変位指定アノテーション

今日チームでScalaのこういう型制約ってどう書くんだっけ、といった話をしていて、Scalaには色々な型制約の表現の方法があることだなあ、と考えていた。そして、全て覚えるのは大変だなと思った。自分は特に変位指定アノテーションを覚えるのが大変だった。…

木構造における属性の伝播の表現 -- CatsのMonoidと再帰処理によって

プログラミングをして暮らしていると、だいたい木構造と向き合うことになる。その頻度はリスト程ではないものの十分に高い。 木構造操作の一類型として、木の根から順に辿っていき、一定の操作を加えていくというものがある。個々の要素だけ見れば良いことも…

へぼいEthernetケーブルだと100Base-TXにフォールバックすることがある

寒い季節になったので、普段はキッチンに置いてある自宅サーバを居室に移動させて熱を有効活用することにした。データも保存できるし節電もできる優れ物だ。 さて、移動させたついでに必要なLANケーブルの長さも変わり、いくつか差し替えてちょうど良い長さ…

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…

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