ブックマーク / blog.3qe.us (6)

  • ActivityPubサーバを実装したかったのでまとめWikiを作ったら人々が集いつつある - Lambdaカクテル

    最近のTwitterの荒れ具合と、Fediverseへの流入がいちじるしい。そんな中自分は、Fediverseという愉快な電網の共通語であるActivityPubの上で、botを動かそうと練習を重ねている。 blog.3qe.us この情報を自分のアカウントで発信していると、ActivityPubの実装をしたり、知見を持っている人がちらほら現れだして、互いに繋がるようになった。知らなかった実装の名前を知ったり、既存の実装の特徴を教えてもらったりした。 一方、そういった人々の知見は個々の実装の内側に閉じてしまっているように感じていた。自分はActivityPubの初心者だが、日語で書かれた情報を探すのにも苦労しているし、英語の情報を選別するのも負担に感じていた。日語のActivityPubの実装に関する「知の高速道路」が無いという課題感があった。 そこで、Scrapboxにまとめサイトを

    ActivityPubサーバを実装したかったのでまとめWikiを作ったら人々が集いつつある - Lambdaカクテル
  • Optics: 「パス」に型を付ければ、データ全体に型を付ける必要はない - Lambdaカクテル

    あまり知られていない関数型言語のおもしろ概念として、Opticsというものがある。 Opticsとは、オブジェクト指向言語で言うところのSetter/Getterを一種の関数として捉え、いくつかの便利な特性を付与したものの総称だ。この便利な特性によって、Setter/Getter以上のことをパワフルにこなせる。 最も有名なOpticsはLensであり、色々な解説資料が(主にHaskell向けに)出ている。 blog.recruit.co.jp さて、これまでのOpticsを紹介する資料はSetterとGetterとしての側面に注目しがちだったので、じゃあOpticsの何が良いのか、Scalaでやる意義は何か、という側面をこの記事で紹介しようと思う。 Optics -- vs. copyメソッド地獄 Opticsは合成可能である Opticsはボトムアップのアプローチである Opticsがう

    Optics: 「パス」に型を付ければ、データ全体に型を付ける必要はない - Lambdaカクテル
  • 畳み込みの視点から見たforall(every)とexists(some): 空集合に対するforallは常にtrueになる - Lambdaカクテル

    こういうツイートが話題になっていた。 「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ— ふみ (DJ Monad) (@fumieval) 2023年5月29日 つまりScalaで言うと次のようなコードが何になるか、というものである。 val xs = Seq.empty[Int] xs.forall(_ == 42) 結論から言うと、このような関数は常にtrueを返す。 なぜだろう?その理由をこれから説明する。 ちなみに他に以下のような意見があった: 仕様による 例外を投げるべき いずれもまぁありえなくはないが、やめておいたほうが良いと思う。もし仮にfalseを返すような仕様があった場合、それは数学から乖離しているのでいずれ仕様内部で矛盾する可能性が高いし*1、最終的に

    畳み込みの視点から見たforall(every)とexists(some): 空集合に対するforallは常にtrueになる - Lambdaカクテル
  • Twitterが直球の言論統制を開始しつつある件に関して 兼 避難所アカウントのお知らせ - Lambdaカクテル

    3行で Twitterが特定アカウントのツイートをRTできなくした。一線を踏み越えたと考えている これは言論の統制であるし、このまま加速度的に濫用されると考えている 悪いことは言わないから今すぐ別のSNS、マストドンとかにアカウントを作りなさい 統制 今日ごろから、Substackという 記者クラブ/ 通信社的性格の ジャーナリスト多めの(追記1)コンテンツプラットフォーム 組織(noteみたいな感じ?)のツイートがRTできなくなっているたが、現在はできるように戻された(追記3)。 A statement from our founders: Any platform that benefits from writers’ and creators’ work but doesn’t give them control over their relationships will inevi

    Twitterが直球の言論統制を開始しつつある件に関して 兼 避難所アカウントのお知らせ - Lambdaカクテル
  • Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます) - Lambdaカクテル

    Common Lispの処理系であるSBCLをインストールしようとしたら、追加でlibzstd-develというのを新たに要求されるようになっていた。見るからに圧縮系のライブラリだけれど聞き慣れないのでちょっと調べてみた。 ちょろっと調べたところ、以下のことが分かった: Zstandard(ゼットスタンダード?)というのが正式な名前。 Facebookが開発した。 Deflateよりも速いことを主眼においている。 BSDライセンス。 Linuxカーネルまわりで使えるようになっているほか、一部のディストロではパッケージの圧縮フォーマットとして使われているようだ。 Webというよりはどちらかといえばバックエンド的な箇所で使われている印象がある。 facebook.github.io zstd コマンド使ってみた 他の名だたる圧縮アルゴリズム同様、Linuxで直接ファイルに対してこれを実行して圧

    Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます) - Lambdaカクテル
  • 本当に諦めて刺身にタンポポ乗せたほうがよいのか(その1 プログラミングの勉強の順序の話) - Lambdaカクテル

    note.mu を読んだ.結論から先に書けや!といった旨のコメントをしてしまったが,「プログラミングを志す初心者のレベルが一定程度に達していない」という不満を表明している点については,同意する.自分も大学生であった頃に同期にプログラミングを教えた経験があるが,似た経験が多かったのである.ちょっと強く書いてしまってごめんネ. さて,初心者である以上,プログラミングについて知らないことがあるのは当然のことであるから,著者もその旨は了解しているはずだ. それを前提として考えてもプログラミングを身に付けるための知識や態度が身に付いていない初心者の存在こそを,彼(彼女)は憂いているのではないだろうか. この「学ぶ前提となるような知識や態度」について,上記記事の主張を見ながら,初心者が身に付けるべき知識・態度を探ってみてはどうだろう,と考え,この記事を書くに至った.俺は今正月で帰省中だが,充電器を実家

    本当に諦めて刺身にタンポポ乗せたほうがよいのか(その1 プログラミングの勉強の順序の話) - Lambdaカクテル
  • 1