タグ

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

  • ブロッキングってそもそも何だよ - Lambdaカクテル

    さきほど別のブログ記事を書いていて(それはまたそのうち発射するけど)、その中でブロッキング処理とか同期的に扱う、という言葉を使った。 このときの自分の理解がこれ: ブロッキング 呼ぶと待たされる ノンブロッキング 呼んでも待たされない、すぐ返る そのときはJavascriptの話をしていた。Javascriptはシングルスレッドの言語だ。そして、各種のAPIは基的にノンブロッキングに設計されている。つまり、コールバックを取るようになっていたり、Promiseを返すようになっているということだ。だから、処理系が提供する特殊な処理(例えばNodeが提供するhogehogeSync()といったもの)を利用しない限り、ブロックが原理的に起こらないし、あえてする理由もない。 という話を書いていて、でも重い計算処理は待たされるだろと思った。これはブロックしていることに他ならないのではないか、と。 し

    ブロッキングってそもそも何だよ - Lambdaカクテル
  • 帯状疱疹にならないほうがいい3つの理由 - Lambdaカクテル

    帯状疱疹になったけどメリット1つもないのでそのダルさを啓蒙する記事。 あらすじ 2日くらい前から左の脇腹のあたり、場所といったらちょうど俺が椅子に腰掛けたときにTシャツのタグが触れるくらいの位置にブツブツができた。 最近暑かったし汗疹かなんかかな、と思って無視していた。もしくは最近洗濯洗剤を替えたから溶け残ってかぶれたかな、と思ってた。 が、なんか痛い!ブツブツした部位に触れるたびに、針が引っかかったような、魚の骨が喉に刺さる代わりに脇に刺さったような、イテテテ、くらいの痛みがある。かゆくはない。寝返り打つと痛い。人間にマチ針が刺さってる感じ。出来の悪いフランケンシュタインみたいな感じになっている。 なんやろな〜と悠長に構えてそのことをSlackとかに書いてたらそれは帯状疱疹かもしれないからとっとと病院行ったほうがいいド〜と言われたので近所の皮膚科に行ったというわけ。 ダルさポイント1:

    帯状疱疹にならないほうがいい3つの理由 - Lambdaカクテル
  • 何かを理解するためには借り物の言葉でもいい - Lambdaカクテル

    エンジニアは一生勉強と世に言うが、べつにこれは所謂エンジニアに限ったことでもない。人間として生きている以上は日々が勉強の連続で、毎日何かを理解して、憶えて、その繰り返しだ。 だから、日常のレベルではドキュメントを探したりチュートリアルを見たり教科書を読んで理解することの繰り返しをやっている。 では、何をもって理解したとみなせばよいのか?意外とこれは難しい。よく言われるのが「自分の言葉で説明できたら理解していると言える」というようなものだ。『数学ガール』にも、たしか似たような事が書かれていた気がするが、記憶の彼方だ。 しかしながら、自分の言葉で一から説明しようとすると、その言葉すらも自分の言葉ではないことに気付いていく。Kubernatesを説明するためにはコンテナの語彙が必要だ。しかしコンテナの語彙をも自分の言葉で説明するなら、無間地獄に落ちていくだけだ。そうなると自分が何を説明したかった

    何かを理解するためには借り物の言葉でもいい - Lambdaカクテル
  • 勉強会タダ飯人間問題を暗号通貨とNFTでなんとかしたい - Lambdaカクテル

    ジャストアイデアなのでできるかどうかとかは全然考えていない。思い付いたのでメモという感じ。NFTで金儲けみたいな話では一切ないです。そこ勘違いしないよう。 前提 勉強会でタダ飯を喰らう人間がいて迷惑している、という話がITエンジニアならよく知る話だと思うが、これが最近は大きなメディアにも取り上げられだしたようで、一般の人間の識るところとなりつつある。 さいわいにも自分が運営しているScalaわいわい勉強会にはそういう人間は出ていないように思われる(もしかしたら気付いてないだけかも)が、なんでそういう人間が出現するのかというとタダだからである。 タダだから障壁が低くなり、われわれがコストを負担させられるという構造になっている。 有料化すべし そこで、勉強会は有料にするのが良いのではないか、と思っている。有料といっても数万円取るのではなくて、思い留まるくらいであればよい。3000円とか取るのが

    勉強会タダ飯人間問題を暗号通貨とNFTでなんとかしたい - Lambdaカクテル
  • ゼロから考えないで既知の思想や他人、潮流に従ったほうがよい - Lambdaカクテル

    常識は疑うほうが良い、みたいな妙な思考が頭の中にあって、何かを考えるときに無駄に根的な所から考えてしまう。 例: 上の階がやかましいようだ 考える: そもそも夜間に振動を発生させるという行為に対する考え方は歴史的にどのように発展していったのか…… 普通こう考えたほうがいい: 管理会社に言ってみるか まったく無駄である。しかしなんか哲学的に考えたほうがカッコ良いみたいな謎のアレがあり、脳を無駄にしている。そのほうが言葉がポンポン出てきて面白いのだが、別にそういうことは既に世界のめちゃくちゃ賢い人が既に通過済みである。 speakerdeck.com 既に通過済みのパッセージを通ったところで劣化版の思考が、再生産されるだけだ。劣化してるので使えないし、再生産しているので無駄なだけだ。 良い書物はイシューに到達するまでの思考の過程をちゃんと再現してくれる。良い書物は基点となってくれる。良いとさ

    ゼロから考えないで既知の思想や他人、潮流に従ったほうがよい - Lambdaカクテル
  • 救急車で運ばれる実績を解除 - Lambdaカクテル

    実績を解除なんてユーモラスに書いていますが当はこんなの解除したくないし救急隊員だってなるだけ運びたくないしお医者様は来てほしくないに決まっているけど運ばれてしまった以上はユーモラスに書いてやろうというわけです。医療システムに感謝。 ジムで運動した後でジュース飲んで休憩していたら急に眩暈がしてきて気分が悪くなってきた!目の前が見えなくなっていく!気張ってもぜんぜん良くならない!ンーこいつは倒れるやつだ!と分かったのでたまたま近くにいたお兄さんに救急車呼んでクレメンスンゴやで・・・みたいなことを丁寧に言ってたらその通り気絶して倒れてしまった。隊員がやってくる頃には意識復活してたけどおとなしく搬送されることに。気絶している間に15cmくらい腕を切ってしまったのか血が出ていたので隊員がたまげていた。お兄さんありがとう。 歩けたので地階まで歩いてからストレッチャーに載せられて救急車にスロットインし

    救急車で運ばれる実績を解除 - Lambdaカクテル
  • じゃあ何すか、COBOL以外では4.8 - 4.7 - 0.1できないってことっすか / ScalaとSpireで安心安全な計算ライフを実現しよう - Lambdaカクテル

    先日こういうツイートが流れてきた。 Q:なぜ金融系では未だにCOBOLが使われるんですか? A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。— 遊撃部長F/S&RWAs (@fstora) 2024年6月6日 Q:なぜ金融系では未だにCOBOLが使われるんですか? A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。 普段我々がゴリゴリ馬車馬のように使っているソフトウェアでよく利用されている浮動小数点型、すなわちfloatやdoubleなどは特定の算術に弱いことが知られている。というかもうこの手の話題はあまりに拡散されてしまったので、なぜかネット民はみんな知っている基礎教養、三毛別羆事件とかデーモンコアみたいな感じになっている。 ちなみにこれはCOBOLかそうではないか、という軸が問題になっ

    じゃあ何すか、COBOL以外では4.8 - 4.7 - 0.1できないってことっすか / ScalaとSpireで安心安全な計算ライフを実現しよう - Lambdaカクテル
  • 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カクテル
  • 難しい概念は、それを難しいと理解できるようになること自体が難しいから難しい - Lambdaカクテル

    仕事でとある機能を設計して実装していた。ある非同期な処理の状況を画面に表示するというだけのタスクだ。ちょっと様子を見に行って、そのステータスを表示すればいいだろう。そう高を括って設計を始める。 のだけれど、一向に進まない。頑張ってちょっとずつ作ってPull-Reqにするのだが、コードレビューでどんどんrejectされる。登山に出たらどんどん霧が出てくるようなありさま。なんかおかしいぞ。目の奥がチリチリしてくる。 ウームどうしたもんか、と思って頭をひねるのだが驚くべきほどに何も進まなくて、俺の頭が悪すぎるのではないかと益々不安になってしまった。 にっちもさっちも行かなくなってしまったので、同僚に助けを求めることにした。 実は難しかった 同僚と相談したときは、なんて俺はアホなんだ、寝不足かなんかで頭回ってないのかな?と思っていたけれど、同僚と話しているうちに、これ普通に難しいっスよ、という感じ

    難しい概念は、それを難しいと理解できるようになること自体が難しいから難しい - Lambdaカクテル
  • すべてのコードやライブラリ自体が技術的負債である / 高利率な技術と低利率な技術 - Lambdaカクテル

    技術的負債という言葉がある。もともとは、「楽するために導入したが、メンテにコストがかかるようになってしまった技術や構成」くらいの意味合いで使われているように思う。しかし、そもそも全部が負債ではないか、というのがこのメモの趣旨である。 負債 同僚とSlackで会話していると、「けっきょくどの言語を利用しても負債になるときはなるし、大抵負債になる」といった話になった。言われてみればそうで、基的にコードというものは書いたそばから負債になっていく。去年書いたコードのことも思い出せない。 そんな中で思ったのだが、そもそも、負債になるコードと負債にならないコードとがあったり、技術が「負債化する」のではなく、コードや技術そのものが負債なのではないか。そして、どの言語で書こうが負債からは逃れることができない。負債にならないコードは存在しない。ゆえに、コードや技術は無ければ無いほど良い、ということになる。

    すべてのコードやライブラリ自体が技術的負債である / 高利率な技術と低利率な技術 - Lambdaカクテル
  • Tagged Type(Branded Type)を使って飛行機の不時着や人工衛星紛失を防ごう / Scala 3ではTagged Typeを簡単に作れる - Lambdaカクテル

    Tagged Type というテクニックがある(TypeScript界隈などではBranded Typeと呼ばれているようだ)。実行時の型としては同じだが、型システム上はこれを区別して別物として扱い、混同できなくする仕組みを作るためのものだ。 AIくん!サムネイラスト作って!と頼んで作ってもらった画像 Tagged Type 単位の取り違えによる事故は後を絶たない。世の中には、キログラムとポンドを混同して飛行機があわや墜落しかけたり、メートルとヤードを混同して人工衛星がどっかに行ったりしている。尊い人命や国民の血税と比べるといささか霞むかもしれないが、ユーザIDとペイロードを間違えて送信したり、金額と口座番号を取り違えて送金したり、秘密鍵と公開鍵を間違えて表示したりしてしまえば、プログラマが大変な苦労をするか、会社そのものが傾くだろう。 しかしながら、データとしてはどちらも同じDouble

    Tagged Type(Branded Type)を使って飛行機の不時着や人工衛星紛失を防ごう / Scala 3ではTagged Typeを簡単に作れる - Lambdaカクテル
  • 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カクテル
  • ScalaにGoroutineがやってくる!非同期処理ライブラリOxで遊んだ - Lambdaカクテル

    Channelスタイルの並行処理の記述を(もちろん型安全に)可能にするライブラリOxについて調べて試してみた。結論から言うと書き味がめちゃくちゃ良くて面白い。 ソースコードも置いておく。 github.com Ox Oxとは、sttpなどの開発でお馴染のSoftwareMillによって開発されているScala用の非同期ライブラリである。まだ非常に若く、活発に開発されている。 github.com Oxの特徴は、というか目的といっても差し支えないのだが、それはChannel指向の非同期処理、つまりGoroutineをScalaの上で実現している点だ。Goユーザならすぐに理解できるだろう。 百聞は一見に如かず。こんな感じのコードを書くことができる(v0.0.25時点)。 import ox.* import ox.channels.* import scala.concurrent.durat

    ScalaにGoroutineがやってくる!非同期処理ライブラリOxで遊んだ - Lambdaカクテル
  • DSL作りたいんだけど何もわからないので識者に教えてもらいたい - Lambdaカクテル

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

    DSL作りたいんだけど何もわからないので識者に教えてもらいたい - Lambdaカクテル
  • ちっちゃな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カクテル
  • 意図や詳細を掘り下げたいときは「その心は」と言うようにしている - Lambdaカクテル

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

    意図や詳細を掘り下げたいときは「その心は」と言うようにしている - Lambdaカクテル
  • Lensを始めとするOpticsがプログラミングをどう変えるか / 複雑なデータのモデリングをサボるには - Lambdaカクテル

    仕事でLensを使う機会があった。Lensは複雑で入り組んだデータ構造の読み書きに非常に効果的な手法であるにもかかわらず、関数型プログラマ以外にはあまり知られていないように思える。 そこでこの記事では、Lensとは何なのか、なにが良いのか、具体的にどのようなケースでLensが役立ったか、そしてLensの亜種について紹介する。業務でも使ってます! AIくんが考えるLens 前提条件 Lensとは Lensの使いどころ データをモデリングする場合 (とても つらい) Lensを使う場合: Lensはアクセスパスである Lensと愉快な仲間たち Lensの合成 -- andThenでひっつけよう Lens Law Monocleの便利機能 Lensの自動生成でサボる Focusでもっとサボる Lensがもたらしたもの まとめ あわせて読みたい 前提条件 この記事ではLensを紹介する言語としてS

    Lensを始めとするOpticsがプログラミングをどう変えるか / 複雑なデータのモデリングをサボるには - Lambdaカクテル
  • YAPC::2024 Hiroshimaにはてなパーカーで参加しました #yapcjapan - Lambdaカクテル

    ついに広島で開催されたプログラミングの祭典YAPC 2024 Hiroshimaに参加し、さきほど帰宅したのでレポートです。2/19〜2/21までの各イベントに参加しました。いくつかのトピックに分けて、現場の熱量をなるだけ伝えようと思います。 ついにやってきた大規模カンファレンス ついに、と書いていますがYAPCは例年ある程度安定して開催されています。ではなぜこう書いたかというと、COVID-19によりプログラミングコミュニティのカンファレンスが熱量を失ってしまっていたことが理由です。 COVID-19の猛威は日中に襲いかかり、ありとあらゆるイベントを中止に追いやってきたわけですが、プログラミングコミュニティの集会も例に漏れませんでした。YAPC::2020はCOVID-19の打撃を受けて延期してしまいました。他のコミュニティも、2020年当時に同じような苦渋の決断を行っていたことと思い

    YAPC::2024 Hiroshimaにはてなパーカーで参加しました #yapcjapan - Lambdaカクテル
  • エンジニアの生産性を支える楽観主義 - Lambdaカクテル

    あなたはポジティブっつー言葉は好きですか。自分はそんなに好きじゃない。好きじゃない人に読んでほしい気がする記事。 自分はひねくれているのでポジティブという言葉があまり好みではない。精神論っぽいし、どうしたってポジティブにならない物事もあるからだ。たとえば人が死んで落ち込んでいるときにポジティブになれというのはもはや無謀だ。ポジティブという言葉には価値判断が練り込まれている。だから無闇矢鱈にこの言葉を使っても現状を歪めるだけになる。現状を歪めるとおかしなことが起こる。だから好きではない。 とはいっても、ポジティブであったほうがよいのは確かだ。 そんな中、楽観的(optimistic)、だったらすごく便利そうだなと思った。これは現状に対する価値判断を含んでいない。現状を肯定した上で、じゃあどういう態度を取りますか?という言葉だ。 そもそも楽観的とはなんなのか。自分だったらこう考える。暮らしのレ

    エンジニアの生産性を支える楽観主義 - 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カクテル