Lambdaカクテル

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

Invite link for Scalaわいわいランド

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

NumpyのCommon Lisp実装Numclがあるらしい

Pythonの(といいつつCで速度を稼いでいる)Numpyという数値計算用のライブラリがあり、広く使われているのは誰もが知るところだと思う。実際には、WebエンジニアからはPandasといったフレームワークを被せて使うことが多い。 そんな中、NumpyのCommon Lisp…

bash/zshで使える${foo:?...}記法が便利 (必須値チェックに便利)

動作確認した環境 zsh 5.9 (x86_64-pc-linux-gnu) GNU bash, version 4.4.23(1)-release (x86_64-suse-linux-gnu) 前置き シェル変数の展開でよく使う記法といったらだいたい${foo:-bar}(fooが空ならbarを代わりに使う)で、以下のように使うことが多い。 foo…

日記

肯定するより否定するほうが簡単なので、自然と自分もそうなってしまいがちで、自分の選択にあまり肯定感がなくて、どうせ失敗するだろうと思っていたり、自分が買った物に対する自信が無くて、買ったもののげんなりしてしまう、みたいなことが起こる。 かつ…

イーサリアムを買う体験

最近、Web3がなにかと話題になっている。雑な本がネット焚書にあって、インプレスは本を回収する騒ぎになった。それについてはどうでもいいので言及しない。 特に金儲けみたいな意図は全く無くて、単に買うとどうなるか試してみたくて買ってみた。 bitFlyer…

Pandasでcomma-separatedなカラムを複数行に展開する

百聞は一見に如かず: import pandas as pd df = pd.DataFrame( [["foo", "apple", 12], ["bar", "banana", 30], ["buzz", "apple,banana", 15], ["qux", "chocolate,banana", 51]], columns=['id','like', 'age'] ) df df こういうDataFrameがあったとする。…

プログラミングと無意識的な思考

プログラミングにおいてよくやるイディオムは、使っているうちに覚えていく。「覚えて習熟していくうちに無意識的にやれるようになっているもの」というカテゴリーがあると思う。こういうときはこういうデバッグ手法がある、みたいな基礎的な事柄は、毎回思…

Strayクリアしたので感想(ネタバレなし)

最近話題のネコになるゲームStrayがSteamにも降ってきたので、やった。なるだけネタバレは無いように書いているつもりです。 ネコとしてマップを(といっても、ゲーム中でしばらくうろうろすることになるいくつかの拠点を除けば基本的に一本道になっている)…

自分が何者であるか分からなくなったときに読む(動きによって定義する)

「自分が何者であるか」、言い換えると自分をどう定義するかという問いには、古今東西の人間が直面してきた。特に現代人は他者を認識する機会が多いから、いつも比較してしまうだろうと思う。自分が何者であるかは死活問題になる。特に、ひねくれている自分…

7月13日

2つ以上の正解があるみたいな状況でどっちかを取らされるみたいなのが苦手で、というのもどちらも選ばないという選択肢を忘れそうになってしまうからなのだけれど、日々沢山の情報を受け続けていると、「いやそれでも俺はこう思う」と自分の考えを持ち続ける…

GitHub Actionのジョブ実行画面からPull Requestを辿れるようにした

こういうのを作りました。 ジョブに紐付いたPull Requestへのリンクが表示される 行ったこと: リンクを生成するジョブを1つ生やした 綺麗な表示はStep Summary機能 (後述) の力を借りている ジョブ実行画面からPull-Reqに戻りたい GitHub Actionsのジョブ実…

どのくらい人間の知性(と未来)を信頼するか(信じるしかないのだけれど)

ここ最近、難しい話題や事件がたてつづけに起こって、滅入る。COVID-19の流行は終わる兆しを見せず、周期的に感染者数が増減している。みんなどこか疲れていて、マスクを外すことにあまり躊躇しなくなりつつある。世界的な話題としては、ロシアがウクライナ…

EmacsによるScala開発 2022年版 (補完編)

最近ちまちまEmacsでScalaを書けるようにしているのですが、そのメモ的な記事です。特に、補完の話に注目して書きます。 補完 じゃあどうすればいいの 相性の悪いプラグイン 参考elisp 01_company.el 02_lsp.el 03_scala.el 補完 補完を行うためには、まずは…

他人の意見をパッとかわせるようになりたい

ネットには他人の意見というのが溢れていて、気を抜いていると突然コメント欄にすごいことが書かれてびっくりする、みたいな事がある。人間によってフィルタされていない生の言葉は文章としての品質も低い時があって、まず理解するためにエネルギーを吸い取…

皿買った

主にパスタを盛るためのプレートを買った。直径は22cmで、食洗機に程良く収まる程度。 皿 実は、就職の際に実家にあったものを適当に拝借してきたプレートがあるのだけれど、特段自分の好みというわけでもなかった。 料理を食べない日は無いので少しでも自分…

プログラミング言語の高度な抽象化機能の主戦場は「テスト」なのかもしれない

同僚のコードをレビューしていると、たまたま複雑なロジックを使っている箇所を修正していて、付随するテストもけっこう複雑だった。APIレイヤのテストなので、JSONのスタブを書いてその通りに帰ってくることを確認する、みたいな作業を何度もやらなければな…

Shapelessの勉強(その4)

追記: Shapeless入門を記事にまとめました www.3qe.us 今日は、これまでに学習してきた Genericを拡張した LabelledGenericについて学習していく。これによって、型レベルでフィールド名や型名を扱う事ができるようになり、Shapeless が扱える処理の範囲がさ…

だが不思議であり怖いのは、意義を感じながらやっていると、突然ぽっかりと穴が空いて、水を張ったガラスの器が床に落ちて砕け散ってしまうように、折れてしまうことが、予告無しに起こることだ

眠れないとき、同時に眠りたくないという感情も発生しているらしいことに気付いた。眠ってしまうと何かを喪失してしまうので、眠ろうという気にならない、ような。 じゃあどうして眠りたくないのかというと、自分が全然前に進んでいないような気がするから。…

文字が持っていたフィクション性の終焉

インターネットをしているとしばらくぼんやりした気分になってしまうことがある。それ自体はよくあることなのだが、自分の脳というか意識がどこに属しているのかが気になってきた。おそらく脳は自分がどこに属しているのかを知っていて、現実よりもより現実…

型付きのタスク同士の依存関係を解決するソルバは書けるのか その1

こういう話題: 今日 @yigarashi_9 と会話してて、「相互に依存し合ったタスクの集合からグワッとDAGを生成してトポロジカルソートして一つずつ解決していくみたいなパターンあるよね」みたいな話をしたけど、なんか名前あったっけみたいなモヤモヤが、ずっと…

ScalaTestでテストをIgnoreする方法いろいろ

開発していると、「テストが落ちるけど一時的にマージしたいからテストを通したい」ということがたまにある。そういうときにScalaTestではどうするのかについて調べてみた。 テストスイートごとignoreする 個々のテストをignoreする AnyFlatSpecを使っている…

(追記あり)CatsでReaderになるfunctionをいい感じに合成したいけど微妙

tl;dr (f, g) mapN (_ compose _) しましょう f -> g mapN (_ <<< _)って書くとちょっとかっこいい つづき 最近ずっとCatsの記事を書いているな…… 先日、(->) r がApplicativeになるという話をした。 blog.3qe.us んで、この(->) rが2つあるときに、これらを…

(追記あり)ScalaのMapをmapしてkeyが衝突するのを回避する方法

MathJax = { tex: {inlineMath: [['$', '$'], ['\\(', '\\)']]} }; ScalaにはMapというデータ構造があり、辞書を表現している。 val m = Map("windy" -> "melt", "fizz" -> "buzz") m("windy") // => "melt" そして、Mapにはmapメソッドが生えていて、KeyとV…

Linux 設定 プログラマーのおすすめ (X11 + GNOME編)

kazuhi-ra.hatenablog.com こういう記事を見たので、普段開発にLinux (OpenSuSE Leap) を使っている自分も同様のことをしておこうかなと思ったのでシェアします。自分もキーリピート上げておきたいなと思ったのが直接のきっかけです。 マウスポインタを最大…

(追記あり)List[Monoid]同士を垂直結合させるためにMonoidを作る必要はなかった・・・

モノイドからなるリストのリストを垂直に結合したい。 tl;dr 「ZipListってのがあるよ」 順にやってみる Parallel登場 追記 まずは下準備: import cats._ import cats.implicits._ // こいつらをぜんぶくっつけたい val xs = (1 to 9).toList // xs: List[In…

(Scala) MetalsのWorksheet気持ち良すぎだろ!

みんなScala書いてる?ScalaはJVM言語なのでコンパイルが当然必要なのと、sbtを起動するのがちょっと面倒で試行錯誤が大変なんだよね。 Scastieっていう便利なオンラインREPLもあるんだけど、もちろんちょっと時間がかかるし、IDEじゃないから補完とか効かな…

List[Monoid]同士を垂直結合させるようなMonoidが欲しいので作った

追記: 解決編から見よう blog.3qe.us 最近型クラスまわりで遊んでいて、ちまちま応用例を見付けられているので嬉しい。 今回は、モノイドのリスト同士を結合することについて考えていきたい。 まずは下準備: import cats._ import cats.implicits._ val xs =…

Monocleというライブラリについて軽く調べたメモ

最近は Scala 周りのライブラリをよく勉強していて、ShapelessやCatsについて勉強する事が多い。 ところでMonocleというライブラリも気になっていたので、Shapelessの勉強の息抜きに軽く調べることにした。 Monocleとは Monocleをインストールする Monocleの…

Shapelessの勉強(その3)

追記: Shapeless入門を記事にまとめました www.3qe.us 今回はChapter 4を扱う。 Working with types and implicits と題したこの章では、依存型と呼ばれる便利な概念を導入し、これまで説明してきたHList等の概念にさらに柔軟性を与える。 前回はこれ。 blog…

大きな画像のプレースホルダをあらかじめSVGで作っておくとかっこいい

写真を撮ったりすると大きな画像を貼ることがあって、現代の技術でもってしても大きな画像のダウンロードにはそれなりの時間がかかるし、回線が悪いと画面ががたついたり待たされたりして体験が良くない。 そこで、写真を簡略化した軽量SVGを用意しておいて…

Shapelessの勉強(その2)

追記: Shapeless入門を記事にまとめました www.3qe.us Shapelessの勉強をしていて、これは2日目の備忘録。教科書は、The Type Astronaut’s Guide to Shapeless。 1日目はこれ blog.3qe.us 前回は、Chapter 2まで進み、GenericとHList、Coproductについて学ん…

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