Lambdaカクテル

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

Catsを使ってReader関手・Reader Applicative関手を勉強したよ

先日、Haskellで書かれたおもしろFizzBuzzの事を思い出した。読んだときはよく分からなかったけれど、型クラスへの理解が進んで、結構意味が分かるようになりつつある。そこで、それにまつわる要素をちゃんと勉強することにした。勉強といってもCatsでの使い…

Shapelessの勉強(その1)

ScalaにはShapelessというジェネリックプログラミングを推進するためのライブラリがあって、同じ型の構造を持つCase Class間を変換するといった操作ができるのだけれど、あまり詳しいことは知らなかったので、公式のガイドブックを読んで勉強することにした…

ScalaのCatsのAlternativeチョットワカル

Scalaの関数型ライブラリ(?)であるCatsには色々な型クラスが実装されていて、だいたい良く使うのはMonoidとかMonoidKとかApplicativeとかなんだけど、その昔関数型FizzBuzzのことを考えていたときにAlternativeが使われていて、そのことがずっと気になって…

Noneは空文字に写したい、そんな君のためにcombineAllがある

Scalaをやっていて、val x: Option[String] = Noneを""に写したいことが100万回くらいある。しかしx.getOrElse("")と書くのは納得いかない、という状況になっていた。 なぜかというと、Stringはモノイドだし、モノイドには空要素emptyがあるはずで、Option[A…

抽象的な考え事をしてはいけない

抽象的な考え事をしても意味が無いし却って悪影響があると思うようになった。つまりボンヤリ生きずに目の前の物事をよく見るべきということ。なぜか。2つの論点がある。 そもそも抽象的な考え事とは何かというと、ちょっとした隙間時間のようなものができた…

こういう系統の曲をずっと聴いている

www.youtube.com www.youtube.com www.youtube.com www.youtube.com チップチューンとはなんか違っていて、独特のヴォーカルと曲調、世界観や雰囲気が共通しているこういう曲をずっと聴いている。SoundCloudでこういう曲を聴きまくっていたら、勝手にどんど…

いま、 #開けるの下手部 がアツい

きみは、#開けるの下手部 というハッシュタグを知っているだろうか。 twitter.com これは、パッケージの開封に失敗した兄貴姉貴たちがその様子を、生き様を淡々と投稿しているハッシュタグである。 #開けるの下手部 pic.twitter.com/EAg03x1vGN— 春 (@HAL4ha…

期待しないことにすると幸せになる

さっき左足の小指を風呂場の間口にぶつけてひとしきり悶えたあと、世界における怒りの総和が増えてしまったわけだが、やはり生きていると腹が立つ。それは例えば自分の行跡の悪さだったり、他人の不出来に腹が立ったりと、枚挙に暇が無い。 しかしどうしてこ…

sshuttleのssh.pyは、いかにしてssh先で起動したpythonとの双方向通信を確立するか

仕事ではテレワーク環境を作るためにsshuttleを使っているのだけれど、中身はあまり読み込んでいないので、勉強のためにちょっと中身を読んでみたところ勉強になる箇所を見付けたのでメモ。 ssh.py sshuttleは、踏み台となるホストに対してsshセッションを張…

店のオフィシャルサイトには支払い可能な手段を明記してほしい、何も書かれていないと困ってしまう

個人的な信条として、可能な限り決済をクレカ(もしくはiDなどの電子マネー)に寄せたいと思っている MoneyForwardによる追跡がしやすくなるため 最近の流行り病のせいで、現金はあまり清潔な印象がないから、リスク管理の観点からもクレカを使いたい、できれ…

続²・目

あらすじ 右目がなんかおかしいので医者に行った。 blog.3qe.us 大学病院 目がおかしくなったけど目に異常はなかったので大学病院に行くことになってしまった。目がなんかおかしいな~というくらいの状態で大学病院に来てしまい、なんか申し訳ない。 京大病…

追われたり追われなかったりする人生と、巨大テック企業

id:kiryuanzu のTweetをたまたま見て、うなってしまった。 学生時代、前半で単位が取れなかったり後期は就活のために色々やったりで何かに追われるような感覚が常にあったように思うけど、社会人になってからはそういった感覚がなく穏やかな精神で保ち続けて…

続・目

目の検査に行ってきた。 あらすじ blog.3qe.us 近所の眼科行った 特にこだわりとかないので近所の眼科に行った。ネットで予約できる病院はまじでありがたい。 症状を伝えるとしばらく待たされて、様々な検査が始まった。 気球見せられるやつ 目が悪い人にと…

ミョアアアアアァアアアアアアアアア!?!?!?ファアアアアアアアアアアアアアアアア!!!!!!!ブァアアアアアアアア!!!!!!!ブァ"ーーーーーーーーッ!!!!!!!!!!!!!!!!!!!!!

猫 ンワァウゥ…ンンゥワァワゥ…ンン…ンンンンァアアアアアアワワワワァゥアアアアアアアアアア!!!!!!!!!!!!!!ヴワヴヴヴヴワワワ"ーッ!!!!!!!!!!— mazco (@mazco_dx) 2022年4月25日 ミョアアアアアァアアアアアアアアア!?!?!?ファアアアアアアアアアアアアアアアア!!!!!!!ブァアアアアアアアア!!!!!!!ブァ"ーーーーーーーーッ!!!!!!!!!!!!!!!!!!!!!— Windymelt (@win…

バイクのバッテリー案外へたらない

乗りたいと思いつつなんかキッカケもないとバイク乗らないんだよな。ましてやこのコロナのご時世にあっては、そもそも積極的に外出を選ぼうという脳になっていなくて、ファーストチョイスとして家でなんかやるとか、近所に出掛ける、くらいのことしか発想で…

やっていることしかツイートしない

友達と会話していて、Twitterやっているとアレな人のマウントツイートなどを見てまあまあイラつく、Twitterは感情が伝染しやすい、という話をしていた。 そういえば昔のツイッターって「今なにしてる?」という問いに答えるというかたちでツイートしていたの…

○ー○ー○○ー○ー○ーに当てはまる言葉をWikipediaから探してくるツールを自作した

anond.hatelabo.jp 特定のリズムにあてはまる日本語を頑張って探したくなることがたまにある。そして、定期的に↑のような記事が流行っては、仕事が手につかなくなる!このままでは、○ー○ー○○ー○ー○ーを考える時間によって日本のGDPが押し下げられてしまう。 …

変数名に🤔絵文字💀を使いたい🤓

プログラミングをしていると、この変数はOptionだから、時としてNoneであるよ、と名前で表現したくなることがしばしばある。型システムが強力なので勝手にOptionであることはマウスをかざせば分かるけれど、一瞥して分かるほうが読む側としてはありがたいは…

ScalaTestでテーブルテストをやりたかったらforAllを使うといいぞ

こういう感じで書けます。 import org.scalatest.prop.TableDrivenPropertyChecks import org.scalatest.funspec.AnyFunSpec // 必要なのは TableDrivenPropertyChecks なので、あとは好きなstyleを選んでよい class FooSpec extends AnyFunSpec with TableD…

無名クラス中でそれ自身の型を表現するにはthis.typeと書く

無名クラスのunapplyを書きたかった。 val foo = new { // ... def unapply(it: /* ここに自分自身の型 */) = Some(...) } でもこういうときって自分自身の型をどう表現すればよいの!?と思って職場でうなっていたところ、 id:tarao さんが助けてくれた。解…

TmuxでGitHubのStatusを確認できるプラグインを作った

GitHubのステータスAPIを叩いた情報がTmuxに表示される たまにGitHub Actionsの様子がおかしいな〜と思ってGitHub Statusを見に行くとトラブルが発生していたりする。こういう情報にすぐ気付きたいな〜と思ったので、Tmuxのステータスバーに勝手にGitHubのス…

Scala+Sangria+Akkaで書かれたGraphQLのsubscription実装が面白いので分かった範囲で紹介する

しょうもなグラムというパロディSNSを作っている。キラキラした投稿ではなく、しょうもない投稿を褒め称えていくというコンセプトのSNSで、「いいね」ボタンの代わりに「しょうもな」ボタンがある。ハートマークではなく、ウンコのマークになっている。 まあ…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

BenQ ScreenBar Plus 買った

机の脇にフロアライトを置いて照明にしていたが、動線にひっかかってまあまあ邪魔という問題があった。 そういえばディスプレイにひっかけて使う照明があったなと思い、BenQのScreenBar Plusのことを思い出した。 BenQのScreenBarどうですか— 沈黙は金 (@win…

Rustでnpm watchっぽいことをやるにはcargo-watchが便利

npmにはwatchする文化があって、ファイル変更を検知して自動ビルドなどを走らせたりできる。 www.npmjs.com Rustにも似たような機能が欲しい。というのも、趣味でWebアプリケーションを書いているので、コードの修正を検知して勝手にサーバを再起動させたい…

食洗機でパイプライン処理をする

昨日まではこういう感じで暮らしていた。 調理する 待つ 料理完成する 食べる ごちそうさま 食洗機に水入れる 食洗機に食器入れる 待つ 完了 意外と、調理を待っている待ち時間を使って、食洗機に水を入れることが可能だということに気付いた。スパゲティを…

anyenvからasdfに移行する

anyenvをこれまで使ってきたけど遅いという問題があって、試しに最近流行ってそうなasdfを使ってみることにした。 github.com ところでasdfはCommon Lispのビルドツールと名前が丸被りしていて、それだけ気に入らない。(リポジトリ上ではasdf-vmという名前に…

キントーのティーストレイナー買った

タナカのボールこし器ってのを買ってお茶淹れたりしていたけれど、けっこうデカいので取り回しにくい。 blog.3qe.us あとチャラチャラしたチェーンが邪魔になって食洗機に入れられない(中で絡まっちゃいそうな)ことに気付いた。 先日マグカップを購入した…

機能をリリースするときはいくつかのモジュールに分けてリリースしていくと良い

というのは一見当然なのだけれど、いつも意識しておくと良いと思ったのでメモだけする。定期的に、やっぱり分割リリースできるとありがたい、という気持ちになる。 いくつかのリリース可能なモジュールに分割する でかい機能を一気にリリースしようとすると…

Egrepって何?BSDとの互換性は?兄弟はいるの?調べてみました!

今まであまり知らずに使ってきたけれど、egrepはgrep -Eのエイリアスだった。 $ man egrep (なんとgrepのmanが表示される) (snip) In addition, the variant programs egrep, fgrep and rgrep are the same as grep -E, grep -F, and grep -r, respectively.…

Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?