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

  • Bashで$(cat foo.txt)していませんか?$(< foo.txt)しよう - Lambdaカクテル

    以下の文書はBashを使う前提の話。 Bashにはコマンド置換(Command substitution)というのがある。$(another-command)のように、$()でコマンドを括る記法だ。これを利用すると、括弧で括られたコマンドが実行され、その標準出力が文字列として取り出され、$()全体を置き換える。シェルスクリプトでは非常によく見る技術だ。 この$()でファイルの内容を読み出すというのを最近見た。このような用法は非常によく見る。 foo-command $(cat params.txt) しかし、より良い書き方があるのでこれを提唱したい。$(< params.txt)と書くことで全く同等のことができる。しかも速いのでこちらのほうが完全に上位互換となる。 foo-command $(< params.txt) この方法はBashのドキュメントのコマンド置換のコーナーにちゃんと書か

    Bashで$(cat foo.txt)していませんか?$(< foo.txt)しよう - Lambdaカクテル
    zu2
    zu2 2024/06/10
  • sed awk make 互換性 つらい うんざりザリガニ - Lambdaカクテル

    仕事でsedのコードをパパッと書いて使ったら、コードレビューで動かんと言われてしまった。そういえば、同僚はMacで、おれはLinuxだったな。 まぁsedならよくある話なので、しょうがないと思ってawkで同じことをした。awkは比較的もうちょっと互換性がある気がしているからだ(どっこいどっこいな気もする)。 しかしまだ動かないと言う。もう、大絶叫だ。アー。おしまいだ。カスがよ〜〜〜と思いつつ(社会人なので絶叫はしない)、よく調べてみるとmakeの互換性だった。というのも、試しにbrew install makeしてGNU Makeで試してみてくれ、と言ったら、あっさり動いたからである。実はsedもawkも悪くなくて、そいつを呼び出してるmakeに互換性がなかった。ごめんな、お前たち悪くなかったよ。でもそれはそうと互換性はない。 define foobarstring ... endef #

    sed awk make 互換性 つらい うんざりザリガニ - Lambdaカクテル
    zu2
    zu2 2024/04/22
    "GAFAあたりのイケイケエンジニアが、sed / awk / makeの完全上位互換みたいなやつをRustかなんかで書いて、互換性を破壊していってほしい。もしくは、とっとと全部gsed / gawk / gmakeで統一してほしい" そしてさらなる多様性が
  • DSL作りたいんだけど何もわからないので識者に教えてもらいたい - Lambdaカクテル

    トランスパイルするDSLを作りたいが何を読んだらいいのかまだよくわかっていないので、誰か教えてほしい、という記事です。 あらすじ DSL作りたい あらすじ 最近色々な技術を勉強している。具体的にはロガーの実装を読んだりRefinement Typesの勉強をしたりしている。仕事で必要というのが半分、興味半分といった具合で、素振りも兼ねてやっているので結果的に仕事で役立ったりしている。 個人的には、こういう暮らしの勉強みたいなところだと、業で勉強しなければならないものに加えて、シナジーが生じるような勉強をしたり購買をすると良いのだろうなと思っている。 たとえばラズパイとかN100のマシンを買ってちょっとしたk3sクラスタを作ってみたりするとクラスタ技術の良い勉強になる。さらに電子工作の勉強をしておくとラズパイと組み合わせてIoT的なこともできるようになる。 そんな中、ずっと自分が勉強したい

    DSL作りたいんだけど何もわからないので識者に教えてもらいたい - Lambdaカクテル
    zu2
    zu2 2024/04/04
  • ちっちゃなScalaコンテナを作つコツ(6 MiBだぞ) - Lambdaカクテル

    おなじみの画像 JavaScalaといったJVM言語のDockerイメージは、JVMを同梱しなければならない都合で肥大化しがちである。特に何もしなくても、例えば一般的なamazoncorretto:21のイメージサイズは217.7 MBもある。 hub.docker.com これにさらにビルド済みのJARファイルが載ってくるので、結構大きくなってしまうのだ。 そこで、Scalaのコンテナイメージのサイズをなんとか小さくできないかと、考えた。すると、JVMを使ったまま70 MiBくらいに縮めることができた。 github.com コンテナイメージのサイズを小さくするために、何をしたかを書いていく。ちなみに題材としたアプリケーションはちょっとしたHello, Worldをするだけのもので、ライブラリはCatsに依存させた。 JVM使う編 マルチステージビルドを行う Alpineなどの軽量ラン

    ちっちゃなScalaコンテナを作つコツ(6 MiBだぞ) - Lambdaカクテル
    zu2
    zu2 2024/04/03
  • 意図や詳細を掘り下げたいときは「その心は」と言うようにしている - Lambdaカクテル

    こういうツイートを見た。 少し違う話だけど、 目に見えるものすぐ口に出す私もこれにうんうんと頷きつつ、逆に「今日の富士山はキレイだね」と隣で言われると一言目に「そうだね」を返せない。 「今日の富士山綺麗だね」 「どこが?」←これで反感買う。 私の予想する相手の答え例「雲が無くてハッキリ見えてる所が」 https://t.co/Q2BlshhAxZ— ふーてん丸 (@huutenenigma) 2024年3月15日 kwsk ってインターネットスラングの中では珍しく敵意の無いものだったんだな。 https://t.co/m7FCoezS9X— すあま (@suama13) 2024年3月15日 思考の過程を掘り下げたくて理由を聞く、というのはわりとよくあるコミュニケーション様式である。日常でもよく使うし、仕事では実際にそれを聞くのが大事なので、もっと使う(それはそうと、あくまでつねにニコニコ

    意図や詳細を掘り下げたいときは「その心は」と言うようにしている - Lambdaカクテル
    zu2
    zu2 2024/03/17
  • 畳み込みの視点から見た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カクテル
    zu2
    zu2 2023/06/01
  • 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カクテル
    zu2
    zu2 2023/04/09
  • 自分のはてなブックマークをChatGPTにつないだ - Lambdaカクテル

    scrapbox.io から派生して、 blog.sushi.money こういうことが可能だとわかった。 はてなブックマークはAtom形式でのエクスポートが可能なので、 はてブにAtomを吐き出させる AtomをJSONに変換する あとは同じ というプロセスで、自分のはてブのコメントを知っている状態のChatGPTのモデルを作ってみた。 コード 一番元々の記事ではPythonで書かれていたコードが、 id:hitode909 のコードではRubyになり、自分のコードだとScala3になっていて面白い。 #!/usr/bin/env -S scala-cli shebang -S 3 // usage: batom2json.scala.sc ~/Downloads/Windymelt.bookmarks.atom > from_bookmark/Windymelt.json // You

    自分のはてなブックマークをChatGPTにつないだ - Lambdaカクテル
    zu2
    zu2 2023/03/31
  • マストドンのシェアボタンを自作した(追記あり)(今日から使えます) - Lambdaカクテル

    自分でマストドンのシェアボタンを作ってみた。 <a href="#" class="js-mstdn-share-button">Share: {title} {}</a> <script defer src="https://github.com/windymelt/mastodon-share-button-scalajs/releases/latest/download/mstdn-share.js"></script> このコードを貼り付けるとテンプレートが展開されてシェアボタンになる。Share: {title} {}としている箇所は文言のテンプレートで、{}がURLで、{title}がタイトルで置換される。 初めてクリックするとポップアップが出てきて、自分のインスタンスがどこなのか教える必要があるけれど、一度使ったらLocalStorageに覚えてもらうようにした。一度設定した

    マストドンのシェアボタンを自作した(追記あり)(今日から使えます) - Lambdaカクテル
    zu2
    zu2 2023/01/27
  • CloudFront+S3構成だった自分のサイトをCloudflare+R2に移行した - Lambdaカクテル

    自分のウェブサイト( http://www.3qe.us/ )をCloudFront+S3構成からCloudflareを使った構成に乗り換えたので、ひっかかった点やつまづいた点などをメモしておく。 結論としては普通に移行できたが、メールとの兼ね合いでDNSまわりでちょっと配慮が必要な部分があるかも、といった具合。試したいときは全部読んでからチャレンジしよう。 ウェブサイトの静的配信にCloudFrontとS3を使っていた モチベーション: ALBのコストが高い Cloudflare 構成 Cloudflare Pages Cloudflare+ Denoflare + R2 修正 R2のstatic hosting機能を直接使う 手順 Webサイト追加 R2バケット作成 APIトークン作成 Denoflareでworkerをデプロイする 完了 まとめ オチ 参考文献 ウェブサイトの静的配信

    CloudFront+S3構成だった自分のサイトをCloudflare+R2に移行した - Lambdaカクテル
    zu2
    zu2 2023/01/15
  • Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます) - Lambdaカクテル

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

    Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます) - Lambdaカクテル
    zu2
    zu2 2022/10/11
  • Bluetoothキーボードとxcapeとの組み合わせで、スペースキーを押すとなぜか機内モードになる怪奇現象が起こる - Lambdaカクテル

    ほぼタイトルの通りなのだが、怪奇現象が起こって困っている。 FILCO Majestouch Convertible 2を使っている 青軸最高〜〜 Linux (OpenSuSE Tumbleweed)ユーザ 自分はスペースキーをShiftに割り当ててSandSを行うため、xcapeを使っている(後述) BluetoothモードでMajestouchを使っているとき、一定の確率で、スペースキーを押下して離すと機内モードに入る もちろん、Bluetoothが停止するのでキーボードも動かない 怒り という現象が起こっている。 tl;dr xcape使うときはダミーとして255ではなく無難なキーコードを使うこと 255は機内モードスイッチのキーコードになっている キーボードを差し替えたりするとxmodmapの効力が切れる ワイヤレスイヤホンはキーボードとしても追加で認識されることがある Maje

    Bluetoothキーボードとxcapeとの組み合わせで、スペースキーを押すとなぜか機内モードになる怪奇現象が起こる - Lambdaカクテル
    zu2
    zu2 2022/10/07
  • PGP鍵を交換しました + 令和最新版のPGP鍵運用メモ - Lambdaカクテル

    PGP鍵を交換しました。というのも、元々使っていたPGP鍵はYubikey上で生成して使っていたところ、数ヶ月前にYubikeyを紛失するという赤っ恥の行いをやらかしてしまい、とっとと失効させて作り直す必要があったからです。ありがたいことに手元に旧い鍵の失効証明書があったので、失効は終わっています。そのまましばらくPGP自体使っていなかったのでそのままにしていたのですが、最近PGPを使う用事が発生したのでちゃんと作ることにしました。 当は、旧い鍵の主鍵で新たな鍵の主鍵に署名したり、Key Transition Statementというのを作成して両者の鍵で署名したりして、「正当に鍵が移行しましたよ」ということを表明しなければならないのですが、いかんせん旧い主鍵を使えない形態で旧鍵を運用していたので、これができません。しょうがないので、たとえばhttps://www.3qe.usに公開鍵情

    PGP鍵を交換しました + 令和最新版のPGP鍵運用メモ - Lambdaカクテル
    zu2
    zu2 2022/10/07
  • 忙しい人に判断を仰ぎたいときは松竹梅プランを作ってチェックボックスを埋めてメンションしてもらうようにすると合理的で便利 - Lambdaカクテル

    普段の暮らしにおいて、実装の仕様をエンジニア単独では決められないことがあって、そういうときにはマネージャーとかディレクターといった意思決定可能な立場の人の判断を仰ぐことになるのだけれど、そういう立場にある人は無限にミーティングをしていたり、無限に同じような意思決定を続けなければならないので、とにかく多忙だ。 そこで、ちょっと判断を仰ぎたいのですが、といったシチュエーションでは、GitHubのIssueなどの非同期なコミュニケーションチャンネルを使って、非同期に通知が飛ぶようにメンションしつつ、以下のことをすると良い。 松竹梅で候補をあらかじめ立てておく 松はハイコストだけれど理想に近い 梅は激安プラン夜行バスといった雰囲気 GitHubはリストの冒頭にチェックリストを入れることができて、しかもチーム内だったら勝手にいじれるはず - [ ] 松プラン: DBを1000xlargeにする (費

    忙しい人に判断を仰ぎたいときは松竹梅プランを作ってチェックボックスを埋めてメンションしてもらうようにすると合理的で便利 - Lambdaカクテル
    zu2
    zu2 2022/09/15
  • Nothing Phone買った、ガジェットとしてかなり良い - Lambdaカクテル

    でも結構話題になってたと思うけど、Nothing Phoneが最近ようやく日でも発売開始されて、それなりに流通しだしている。 自分はいちはやくゲットしたかったのでスペインAmazonで購入したんだけど、スペイン人がのんびりしているのか、なんの事情があるのか、結局日発売よりも遅いタイミングで到着してしまった。 ブルーレイかなんかが入ってそうな感じの箱が届く 箱が面白くて、チョコボールの封のあのビニールとか、ポッキーの箱みたいに、ビリビリと一周させて開封するようになっている。 びりびり すると、体とアクセサリー類を引っ張り出せる引き出しが登場して、超かっこいいスマホがお目見えするという仕掛けになっていて面白い。 じゃん! 完全にNothingの手玉に取られているというか、わくわくを感じさせるように演出が設計されているな~と思う。面白い。 保護シートでシールされた状態で出てくる うお

    Nothing Phone買った、ガジェットとしてかなり良い - Lambdaカクテル
    zu2
    zu2 2022/08/22
  • 抽象的な考え事をしてはいけない - Lambdaカクテル

    抽象的な考え事をしても意味が無いし却って悪影響があると思うようになった。つまりボンヤリ生きずに目の前の物事をよく見るべきということ。なぜか。2つの論点がある。 そもそも抽象的な考え事とは何かというと、ちょっとした隙間時間のようなものができたときに、何らかの哲学的アイデア(自己とは……みたいな話題)や社会的なアイデア(沖縄返還……みたいな話題)について、ぼんやりと考えることであると定義する。 まず、抽象的に物事を考えているとき、具体的な事物が無い状態なので、よほど気を付けて論理的思考に注力しなければ、ただの連想ゲームになってしまう。連想ゲームが発生すると、最終的に自分が持つステレオタイプに帰着してしまうと思う。こうなった場合、納得感というものは無いので、ずっとモヤモヤしたまま暮らすことになる。すると、常時脳の一部リソースをモヤモヤに吸い取られてしまって、目の前の事に集中できないので、パフォー

    抽象的な考え事をしてはいけない - Lambdaカクテル
    zu2
    zu2 2022/05/18
    物理学者と哲学者のすれ違いを思い出した / cf. http://www.phys.cs.is.nagoya-u.ac.jp/~tanimura/time/note.html
  • ストレスやばい - Lambdaカクテル

    仕事と生活のストレスが鬼やばくて、キーボード殴ったり、iPad床に投げたりしてる。このままでは人格が荒廃してしまう。なんとかならないのか。 仕事 追記: なんかバズっててびっくりした。会社の悪口言うつもりはない。会社はめっちゃ良い会社なんだけど、リモートでちょっとギシギシしてるとか俺が単純に忙しいとかで疲弊してるだけなのでそこんとこよろしく。誰も悪くない。誰も・・・ 最近鬼忙しくて、今やってる仕事終わってもその3つ先くらいまでプロジェクトがもうアサインされていて、まだ今のプロジェクト終わってないけど、次のキックオフいつやりますか、って調整してたりするみたいな感じ。選択の余地はなくて、もう勝手にアサインされてて、奴隷の暮らしが約束されている。自由意志が欲しい。一事が万事こういう感じで、俺に選択の余地はなくて、従うしか無い、みたいなのばっかり経験している。重要な意思決定は俺以外の偉い人がみんな

    ストレスやばい - Lambdaカクテル
    zu2
    zu2 2021/09/07
  • (更新あり)AWS LambdaでCommon Lispを動かす - Lambdaカクテル

    [追記]IPv6を無効化することによりうまく動作させることができました.詳細は記事下方を参照してください. いやー来ましたね.AWS Lambdaで新言語・・・あれ?? aws.amazon.com ナンダテメッコラー!!Lambdaの名前を冠しておきながらAWS LambdaでCommon Lispが動かないとはどういうことなんだ. 幸いにもLambdaにはCustom Runtimeという仕組みがあり,自由な言語を動かすことができるようになりました. というわけでAWS Lambda上で動くCommon Lispプログラムを実装してみました. 俺だってLambdaを冠したブログやってるからな.責任がありますよ責任. Let Lambda over Lambda over Lambdaじゃん. docs.aws.amazon.com というわけで後学のためにもLambdaでCommon

    (更新あり)AWS LambdaでCommon Lispを動かす - Lambdaカクテル
    zu2
    zu2 2020/08/18
  • 1