1 ポイント 投稿者 GN⁺ 2025-04-11 | 1件のコメント | WhatsAppで共有
  • Susam Palは、誰でも接続できる netcatビーパーループ をDebianサーバー上で24時間公開し、接続が入るたびに ok と応答してターミナルのビープ音を4回鳴らすようにした
  • ワンライナーは nc で接続を受け、バックグラウンドの for ループが ベル文字 を出力し、その間に外側の while ループが次の接続を受ける新しいプロセスを即座に起動する構造になっている
  • 最初の実験では24時間で 4,761件の接続 があり、合計19,044回のビープ音が鳴り、ブラウザ・nccurlsshirssi など多様なクライアントで参加できた
  • 2025年4月10日にこの投稿を Hacker News に共有した後は、14時間で 352,831件の接続 と1,396件のユニークなクライアントアドレスが記録され、合計 1,411,324回 のビープ音に膨れ上がった
  • 第2ラウンドでは匿名化されたクライアント C0276 が327,209件を発生させてトラフィックの大半を占め、小さないたずら的実験が HN での露出によって大きく拡大した

netcatで作ったターミナルビーパー

  • 実験は、Debianサーバーで任意の接続を受け付ける小さな netcat ループ で構成されている
    • クライアントが接続すると ok メッセージを送る
    • 接続をただちに閉じる
    • ターミナルでビープ音を4回鳴らす
  • 実行したコマンドは次のとおり
while true; do (echo ok | nc -q 1 -vlp 8000 2>&1; echo; date -u) | tee -a beeper.log; for i in 1 2 3 4; do printf '\a'; sleep 1; done & done
  • nc コマンドは ok を送ったあと接続を閉じ、内側の for ループはバックグラウンドシェルで 非同期に ベル文字を4回出力する
  • 外側の while ループはすばやく新しい nc プロセスを実行し、次の接続を受けられるようにする
  • HN スレッドでは、ポート8000にどんな方法でも接続すれば4回のビープ音が鳴ると案内している
    • 例: Webブラウザ
    • 例: nc HOST 8000
    • 例: curl HOST:8000
    • 例: ssh HOST -p 8000
    • 例: irssi -c HOST -p 8000

HNで2度拡大した接続急増

  • 最初の実験は、奇妙なDIY通知システムに関する HN スレッドへの反応として行われた、いたずら的な実験だった
    • 元の議論は HN thread にある
    • 24時間で4,761件の接続が発生した
    • 接続ごとに4回鳴るため、合計 19,044回 のターミナルビープ音が記録された
    • データは beeper.log にある
  • 2025年4月10日にこの記事を Hacker Newsで共有 した後、接続は再び急増した
    • 14時間で 352,831件 の接続が記録された
    • ユニークなクライアントアドレスは1,396件だった
    • ビープ音の総数は 1,411,324回 に達した
    • データは beeper2.log にある
  • 第2の実験で発生したトラフィックの多くは、ビーパーループに接続し続ける 継続的なクライアントループ から来たように見える
    • 匿名化されたクライアント C0276 は327,209件で、最も多くの接続を発生させた
    • 2番目に活発だった C0595 は6,771件を記録した
    • 正確に1回だけ接続したクライアントは491件だった
    • クライアントごとの接続数は beeperclient2.log にある
  • 第1ラウンドではコメントスレッドを見た一部読者から4,761件が発生したが、HN フロントページに載った第2ラウンドでは352,831件にまで拡大した
  • この実験は、問題解決よりも 奇妙なアイデアの探索 と、ほかの人たちが一緒に参加する楽しさに焦点を当てたコンピューティング活動として締めくくられている

1件のコメント

 
GN⁺ 2025-04-11
Hacker News の意見
  • すばらしい。自分でも偽善的だとはわかっている。ブログは好きで書いているし、分析指標の奴隷になるのはひどいことだと言いながら、実際には数時間かけたプロジェクトにアクセスが殺到するのを見ると、即時のフィードバックがあまりにも気持ちいい。
    結局、本格的な分析ツールまでは使わずに承認欲求を満たそうとして、サイトに簡単な訪問カウンターを付けた。ビープ音は鳴らないが、もしかすると鳴るべきなのかもしれない。

    • 自分がどれほど堕落したかを証明するように、訪問カウンターが反応したときにビープ音を鳴らす1行のシェルスクリプトを今作った。
      tail -F -n 0 /var/log/visitlog | while read ; do printf '\a' ; done
      あとは誰かが自分のサイトを訪れてくれればいい。
    • 私も似たようなことをした。ユーザーのプライバシーを奪いたくなかったので、2022年に自分で簡単なカウンターを作り、ブログで寝室に置いている Raspberry Pi 400 について書いた。
      クリック音のファイルを今ダウンロードしたので、組み込んだら自分が狂ってしまうか試してみるつもり。
      https://joeldare.com/private-analtyics-and-my-raspberry-pi-4...
    • 数時間かけた成果物について認められたいと思うことが、なぜ悪いことのように感じられるのか気になる。
    • 昔、自作の PHP ページでサイトを運営していたとき、内部的には普通のテキストファイルを使う訪問カウンターがあった。意外と有効で、面白い体験だった。
  • 普通の HN スレッドに埋もれていた自分のあまり知られていないコメントが記事に載った \o/

    • かなり埋もれたコメントでも数千ビューを生み出せることを示している。実際にコメントを読んだ人のうち反応したのは一部だけだったはずだが、その一部が4千人を超えていたのだから、見方が変わる。
  • Susam の鐘を鳴らすのではなく、Fish Doorbellを見るべき。魚が通ろうとして待っているのを見たら知らせればいい。
    https://visdeurbel.nl/en/

    • Fish Doorbell はAI の活用例としては素晴らしいだろうが、魚が通りたがっているときにボランティアたちが映像を見て手動でベルを鳴らす世界に住んでいたい。
  • 面白い。今かなり愛されているのがわかる。
    while true; do; sleep 5; curl http://susam.net:8000 ; done
    curl: (1) Received HTTP/0.9 when not allowed
    curl: (1) Received HTTP/0.9 when not allowed
    curl: (7) Failed to connect to susam.net port 8000 after 11 ms: Couldn't connect to server
    curl: (56) Recv failure: Connection reset by peer
    curl: (7) Failed to connect to susam.net port 8000 after 8 ms: Couldn't connect to server
    curl: (1) Received HTTP/0.9 when not allowed
    curl: (7) Failed to connect to susam.net port 8000 after 8 ms: Couldn't connect to server
    curl: (1) Received HTTP/0.9 when not allowed
    curl: (7) Failed to connect to susam.net port 8000 after 10 ms: Couldn't connect to server
    curl: (7) Failed to connect to susam.net port 8000 after 11 ms: Couldn't connect to server
    curl: (56) Recv failure: Connection reset by peer
    curl: (56) Recv failure: Connection reset by peer
    curl: (1) Received HTTP/0.9 when not allowed

    • この状況を本当にうまく手助けしているね…
    • curl--http0.9 フラグを追加するとよい。単に "ok" だけが返ってくるレスポンス、つまりヘッダーなしで本文だけの HTTP 0.9 方式がエラーではないと伝えられる。
    • 次は watch -n 5 を使ってみるといい。
  • 「結局これは面白い実験だった。役には立たないが面白かった!」
    こういう実験が最高だ。時にはそこから大きなイノベーション、発明、医学的進歩、さらに大きな楽しさが生まれることもある。

    • 以前聞いた「役に立たないからといって価値がないわけではない」という表現があり、本当に好きな言葉だ。
    • ある日はただ廊下の先の休憩室に淹れたてのコーヒーがあるか知りたかっただけなのに、翌日にはウェブカメラを発明することになる。
      https://en.m.wikipedia.org/wiki/Trojan_Room_coffee_pot
  • このアイデアの、より発展した古い2000年版として Peep (The Network Auralizer) がある。音でネットワークを監視するツールだ [1]。
    以前数か月動かしていたが、リビングがジャングルのように聞こえた。今どきのトラフィック増加量で同じ設定を動かしたら、おそらく地獄の門のように聞こえると思う。
    まだ SourceForge で見つけられるが、少し手を入れるか、古い Linux ディストリビューションを動かす VM が必要かもしれない。
    https://sourceforge.net/projects/peep/
    [1] https://www.usenix.org/legacy/publications/library/proceedin...

  • 1998年ごろ、投資先スタートアップの新しい技術人材を探していたグループがあった。おそらく /., のような場所に、非標準ポートの SMTPで履歴書を受け付けると投稿し、それをフィルタリングの仕組みとして使っていた
    返事はもらえなかったが、結局その翌年、彼らが投資していた会社の1社で働くことになった

    • 同じころには、ウェブサイトのHTML ソース内に求人情報を入れているケースもあった。当時は技術職を探していたわけではなかったので応募しなかったが、いつも賢いやり方だと思っていた
      ウェブ開発に興味のあるギークたちは、面白いページを見るたびにひたすら「View Source」を押していた。それは初期のウェブフロントエンド技法が広まる主要な経路で、本当に良かった。HTML をコピー&ペーストし、.css や他のリソースを自分でダウンロードして、オフラインでサイトのモックを動かしながら秘密を学ぶことができた。すべての魔法は公開されていて、カーテンをめくる気さえあれば、未来はどこまでも開けているように思えた
    • 同じように DNS で求人を出していた会社を覚えている。実際の応募方法を教える TXT レコードがあった気がする
    • そのポートが文書化されていたのか、それとも自分でスキャンする必要があったのか気になる
  • 今日学んだこと: ヘッダーなしでテキストだけを返す HTTP/0.9 レスポンスは、現代のブラウザでもまだ動作する。素晴らしい

    • ずっとそうであってほしい。小さなプロジェクトに役立つ
  • 少し関連して、以前 HN の1位投稿で受けたトラフィックをアニメーションにしたことがある
    https://idiallo.com/blog/surviving-the-hug-of-death モバイルフレンドリーではなくて申し訳ない
    ボットが驚くほど多い。次に HN からトラフィックを受けたら、こういうものを設定してみると面白そうだ

    • 「最初は手動で対抗し、偽データを食わせていた。だがすぐに飽きた。そこで秘密兵器である zip 爆弾を配備した。ボットが自分のサイトにアクセスすると、小さな圧縮ファイルを提供し、彼らのサーバーは一生懸命ダウンロードして展開し、数ギガバイトの混沌を炸裂させた。ドカン。終了。」
      でも、そのボットが展開するとなぜ分かったのか気になる。ボットなら記事の HTML コンテンツと画像くらいをコピーして自分のサイトに貼り付けるように思えるし、ファイルを編集したり展開したりすることはなさそうだ
      アニメーションは印象的で、ボットの数はものすごい
  • http://susam.net:8000 が応答しなくなったのを見ると、今日はビープ音がずっと多く鳴りそうだ

    • 14回ほど試して ok を2回受け取った ;)
    • これは HTTP サーバーではない。nctelnet のようなもので試すと、接続が切れる前に ok レスポンスを受け取れる
      telnet -4 susam.net 8000