カテゴリー
Hack

Slackクライアントで相手が削除したメッセージを残すパッチスクリプト

SharonBrizinov/slack-anti-delete は、Slackクライアント上で相手が消したメッセージをこちら側では残したままにする、というツールです。

管理者が「メッセージは削除できない」設定としていない限り、Slack で送ったメッセージは編集したり削除したりすることができます。チャット相手のクライアントではそれらは無かったことにされタイムラインから消されます。

しかし、このツールを使うと相手が削除してもメッセージが残り続けると。

Slack社が作っているクライアントでどうやってそんな改造をするのかな、と思ってみたら、Slack の実行ファイルの場所を見つけ、クライアントが呼び出している JavaScript ファイルのキャッシュを探してそれらの動作を書き換える Python スクリプトという力技でした。

Windows も対応というので試してみたところ、確かに相手が消したはずのメッセージが残り続けます。

ツールを使って削除メッセージが消えないようにした様子を再現

作者がこのツールを作った動機は、友人の愚痴で以前の上司が品の無いメッセージを彼に送ってはすぐに消す、という行為を繰り返していて、その件について上司を詰めようとしたけれど(消されているから)証拠が何もなかった、という話を聞いたことによるものだそうです。

この件だけ見るとパワハラやセクハラの告発として使えそうだし、ツールの意義もあるかもです。Hacker News の議論では「相手が消したつもりのものを収集するのは可能であっても倫理的にどうなんだ」という意見も出てはいます。

まあ、Slack API で連携させたツールから全部を保存してるような場合もあるだろうし、消されたメッセージを残す方法はこれに限らないところではあるので、消さないといけないような発言はするな、というのはまず基本ではありますが。

間違って書かれたものが残ると困る場合として、パスワードを間違ってSlackに打ち込んだ場合があり、実際にPCにログインするつもりでPCのパスワードを同僚に送ってしまった場合など、消して済むなら消えてるのが望ましい場合もあるでしょう。ただ、どのみちこのパスワードは直ちに変更しなければいけないでしょうけど。

twitter などでも有名人が「まずい」と思ってかすぐに削除したはずのツイートがフォロワーのtwitterクライアントにはずっと残っていて、そのスクリーンショットが流出して批難される、なんていうことも起こりますよね。送り側の消して無くしたい気持ちと受け手側の消せば無かったことになるのかという気持ちの狭間で、送ったメッセージの削除をどうするかについて人々の意見はわかれるところなのかもしれません。

via Hacker News

カテゴリー
ツール

Slacktyping – Slackで相手がタイプ中にこちらもタイプ中と見せかけるジョークツール

自称とても良いプログラム(very good program)は、Slackチャットにおいて相手がタイプしている時に、相手にあなたも「入力しています(typing…)と表示するという小さな Ruby プログラムです。

あなたも何かタイプしてるかと思って相手が手を止めると、あなたの「入力しています」も止まります。

とても良いプログラムかもしれませんが、これ使われたらイライラしそうです。

このような小さなジョークプログラムを多数公開しているウィル・レインウェバーさん(Will Leinweber)、彼のサイトにもネタが多数仕込まれています。

via Hacker News

カテゴリー
技術

css-only-chat CSSだけで動くブラウザチャット

ケビン・クッチャさん(Kevin Kuchta)のkkuchta/css-only-chat は、JavaScript を使わない非同期ウェブチャットサーバーです。

二つ(以上)のブラウザからこのサーバに接続し、アルファベットをクリックしてメッセージを作り送信すると、同じサーバに接続した他のブラウザでも即時表示される、いわゆるブラウザチャットです。しかし面白いのは、このページで JavaScript は使われていないというところ。

送信側

CSS の :active 疑似クラスを使うことで、ある領域をクリックした際に、はじめて画像ファイルを読み込ませることができます。つまり、ボタンが押されたタイミングを画像ファイルの読み込みでサーバ側から検知できるということ。

「同じボタンが2度目押された時は(画像はもうブラウザ側にロード済なので)サーバはわからないのでは?」となりますが、たとえば “a””a” と押した時は、接続しっぱなしの状態で、元のボタンを隠し、新たに「”a”を押した」という情報を持った別の画像ファイル名を持つボタンを表示しているようです。これをすべてのボタンに対して行うことで、ボタンが持つ画像ファイルのパスが、過去のすべてのタイプ内容を保持することになります。

受信側

表示はどうやって更新してるのか、も解説されています。接続しっぱなしの状態で、これまで送った html が不要になったら、style タグを送って過去の要素を display:none で隠し、新たにページ内容を追記します。

これを、自身か他のブラウザから新たなデータが届くまで待機しながら繰り返しているということ。じゃあソースコードはとても長くなるのでは、と思って Chrome でソースを表示しようとしましたが、何も表示されません。Firefox では何千桁もある一行のソースコードを確認できました。

今のところデモサイトは用意されていないので、試すには自分で動かす必要があります。

via Hacker News