Lambdaカクテル

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

Invite link for Scalaわいわいランド

2023-06-01から1ヶ月間の記事一覧

TypeScriptのvoidをasync voidとして継承できる / ScalablyTypedによるTypeScriptライブラリとScala.jsとの相互運用で、async functionがうまく変換されない問題

困っているので、思考の整理を兼ねてメモしておく。各項目がまちがっていたらおしえてください。 動機 Scala.js ScalablyTyped ScalablyTypedにおけるvoid ScalablyTypedにおけるasync TypeScriptにおけるasync void TypeScriptにおけるvoid methodのasynchr…

Codocのテスト記事

Codocと連携して、はてブロで有料記事を作れるようになった。 blog.hatenablog.com 実際に使ってみる。 今日の運勢は・・・

Obsidianのタグはスラッシュで階層化できる / 多元的な階層化の良さ

しばらく前からObsidianというMarkdownのエディタを愛用している。 blog.3qe.us blog.3qe.us blog.3qe.us 原稿執筆やメモ書きにとても良いエディタなので、ぜひ使うことをおすすめする。 今回は主として既にobsidianを使っている人向けの記事であるが、使っ…

Scalaのタプルまわりのわだかまり

フォロワーがHaskellの問題で困っていて、助けてくれ〜!! と言われたのだが、 当方Haskellが母語ではないのでハスケルヨクワカリマセン状態になってしまった。というわけでScalaでお答えすることにした。 #Haskell でもっとスマートなプログラムを考えて下さ…

要精密検査

前回 blog.3qe.us 人間ドックの結果が返ってきたのだけれど、たくさん文字が書かれていて、精密検査しなければならなかった。 赤血球多すぎワロタ これは毎年言われてる 脂質の代謝がなんかおかしい おっちゃんやん 糖の代謝がなんかおかしい おっちゃんやん…

AWS LambdaでScalaを動かし、JSONを入出力する

先日AWS LambdaでScala 3を走らせる方法を解説した。 blog.3qe.us 解説したというか、何事もなく動いたという感じだ。 今回は安定してJSONを入出力するテクがわかってきたので解説する。 完成品はこんな感じになる: import java.io.InputStream import java.…

Scalaのobjectで、finalなvalと普通のvalとではコンパイル結果がどう違うか検証する

ふと気になっていたので、素早く検証することにした。 ちなみに逆コンパイルなどではjavapコマンドを使うのが良いと教えてもらった。 javap コマンド?— がくぞ (@gakuzzzz) 2023年6月19日 検証方法 バージョン ソースコード コンパイル シグネチャの差分を…

マネーフォワードのCSVをParquetに変換する

いろいろと分析したいので、マネーフォワードでエクスポートできるCSVファイルをSparkを使ってParquetに変換したメモ。 マネーフォワード 特に今更説明する必要もないが、マネーフォワードはオンラインで動作する家計簿サービス。カードと連携したり、勝手に…

Apache Sparkはドットかアンダースコアからファイル名が始まると読み込んでくれない

Spark 3.4.0で確認した。例えば、.foobar.csvのようなファイルを読み取らせようとしても、読み込んでくれないし、しかし一見成功したかのような振舞いになるので注意しなければならない。 //> using scala "2.13" //> using lib "org.apache.spark::spark-co…

http4s + sbt-revolverでリロードが遅いときはデフォルトタイムアウトを設定してください

苦しんでいる人をちらほら見たので解決策を示しておく。 tl;dr このように、http4sでサーバを書くとき、バックエンド実装がEmber(デフォルト)の場合はwithDefaultTimeout()を使って短いタイムアウトを指定するようにしてください。 import scala.concurrent.…

Scala Nativeがいつのまにかシングルバイナリを吐けるようになっていた

ScalaをネイティブコンパイルしてJVM無しで実行ファイルとして動かせるようにする仕組みであるScala Nativeが、いつのまにかシングルバイナリを出力できるようになっていた。これにより、Goと同じように1つのバイナリさえコピーすればScalaを動かせる環境が…

元気が無いがちである

もともと睡眠/起床失敗しやすい体質なのだが、やはりそういう日は元気がないことが多い。したがって元気が無い日がありがちである。 元気がないと 趣味や仕事の進捗が悪くなりがち 指摘やアドバイスを受け入れるだけの余裕がないがち 単純に、思考のスピード…

はじめるコモナド -- モナドの双対を使って一定のルールでリストの内容を結合する

HaskellやScalaで関数型プログラミングをしていると、コなんとかというやつに出くわすことがある。でもコなんとかからのアプローチは決まってそっけない。深夜にやってる映画を見せまいとする親のようだ。まだ君には早いよ、そのうちね、といった具合に。こ…

Scalaのバージョンを上げたがScalafixが古くてコンパイルしなかった事例

最近Scala 2.12.18が出た。最新のJDKとかに対応したり、マイグレーション向けの機能が拡充されている。 github.com そんでScala 2.12.16をScala 2.12.18まで上げたら、手元ではコンパイルが通るけどCI(GitHub Actions)では通らなくなってしまった。ログを見…

油そば容器が落下し、有害物質が飛散したインシデント

俺: リモートワーク 事業場*1規模: 1人 機械設備・有害物質の種類(起因物): 汁が残った油そばの容器、油 災害の種類(事故の型): なかなか取れない油との接触、部屋が臭くなる 被害者数 死亡者数:0人 休業者数:0人 不休者数:0人 行方不明者数:0人 嫌な気…

Optics: 「パス」に型を付ければ、データ全体に型を付ける必要はない

あまり知られていない関数型言語のおもしろ概念として、Opticsというものがある。 Opticsとは、オブジェクト指向言語で言うところのSetter/Getterを一種の関数として捉え、いくつかの便利な特性を付与したものの総称だ。この便利な特性によって、Setter/Gett…

Scala 3のimport構文のワイルドカードは_ではなくて*になっている

Scala 3には大きな構文上の変更、例えばimplicitまわりが整理されてgivenなどに変化したりしている一方で、細やかな機微にわたる変更も含まれている。今回説明するimport構文上のワイルドカード記号の変更もその一部。 Scala 2では、あるパッケージに属する…

ブルガダ型心電図 その1

持ち前の計画性の無さで伸ばしに伸ばしていた健康診断が遂にバリウムと一緒にやってきてしまい、下剤が体中を駆け巡って今俺の腹は爆発している。台風も来て気圧もテンションも下がるしこれ四月にちゃんと受けていればよかったな、本当は四月あたりで受けな…

Scalaでネストしたオブジェクトの型はワンライナーで定義できる(JSONに対応する型を宣言的に定義する)

追記 具体的な型が分かるわけではないので、この方法だとうまくいかないことがわかった。詳しく調べている。 本編 わけあって(わけは後で話す)、以下のようなJSONに対応する型エイリアスを定義しなければならなくなった。 { "deviceEvent": { "buttonClicked…

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