はてなキーワード: IPアドレスとは
英語なら普通に住所の意味だぞ(大方IPアドレスやMACアドレスを答える例の画像を見たんだろうと思うが、もちろんあれはただのネタ)。
ちなみにPlease tell me your addressは役所の手続きとか文脈が共有されてるならいいけどそうでないならかなり不躾な感じがする。
せっかく課金したのにユーザが増えまくっているのか滅茶苦茶重くなっていて最悪。
だから流出したモデルを使ってローカルでNAIの環境を構築する。
ネットには情報もだいぶ転がってるけど陳腐化した情報があまりに多いため増田にまとめることにした。
もしかしたらこの記事もすでに陳腐化しているかもしれないが…単純に間違ってたらトラバで教えてほしい。
もちろん自己責任。この記事を見て導入した結果何かあっても増田は何も保証しない。
英語がわかる人はこっちを見た方が早いと思う。今は導入RTAができるくらい導入は楽になっている。
https://rentry.org/nai-speedrun
VRAMが2GB以上あるNVIDIA製のグラフィックボードがあればローカル環境を構築できる。
GPUの世代はGTX700シリーズ以降。なので一昔前のミドル級ボードでも動作するらしい。
IntelのオンボードGPUでも実行する方法があるらしい(stable_diffusion.openvino)が今回は割愛する。自分で探してね。
その他の推奨環境は以下の通り。
対応OS:Windows7以上(と言うがM1Macでも動作する方法があるとかなんとか)
メインメモリ:16GB以上(VRAMもたくさん必要だが起動時にメインメモリも大量に食う。WebUI起動時にタスクマネージャを見ているとよくわかる)
スマホしか持ってないような人やこういうのがよくわからない人はNovelAIを使った方が良いと思う。
今は重いけど、きっとそのうちみんな飽きてサーバも軽くなるかもしれないし。
(追記)NovelAIがリソースを確保してサーバが軽くなったからリスクを背負ってまで導入しなくても良いかも
(追記)Pythonは当然3系。最新の奴を入れれば問題無い。
導入方法はいちいち書かないけど、「python --version」や「git -v」で
正常にバージョン情報が出る(パスがきちんと通っている)ことはちゃんと確認しよう。
Stable Diffusion web UIはStable Diffusionやそれをベースとした画像生成AIを利用するためのフロントエンド。
その中でも特に開発が活発でデファクトスタンダードとなっているのがAUTOMATIC1111版だ。
導入したい適当なディレクトリに対してPowerShellなどで
「git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git」
なお、AUTOMATIC1111版は数時間単位でコミットが行われるから
定期的に「git pull origin master」で更新しよう。
クライアントはqBitTorrentが一番楽だと思う。
ここにはさすがにmagnetリンクは書かないから各自ググって欲しい。
結構誤解されがちなことだが流出データ50GBを全部ダウンロードする必要は無い。
必要なファイルはanimefull-final-prunedディレクトリの中身とanimevae.ptだから5GBちょっとくらいなんじゃないかな。
もし余裕があるならmoduleディレクトリの中身もダウンロードすればいいけど、ぶっちゃけ必要無いんじゃないか?
まずはanimefull-final-prunedの中身のファイルをリネーム。
「model.ckpt」を「animefinal-full-pruned.ckpt」のようなわかりやすい名前にして、
「animevae.pt」を例えば「animefinal-full-pruned.vae.pt」のような拡張子以外は同じファイル名にする。
WebUI起動フォルダ配下の\models\Stable-diffusionにリネームしたファイルを移動させれば配置はOK。
ちなみにmoduleディレクトリの中身は\models\hypernetworksに移動させて使う。
それらのファイルを設定で適用させると画風が結構変わるがNovelAI再現とは関係無いみたいだ。
(追記)moduleディレクトリの中身の.ptファイルはhypernetworksという技術によって画風などを学習したものらしい。
すでに複数のイラストレーターの画風を学習したptファイルが作成されており議論を呼んでいる。
自分のグラボのVRAMが4GB未満の場合は「set COMMANDLINE_ARGS=」の後に
4GB未満の場合は「--medvram」、2GB未満の場合は「--lowvram」とパラメータを追加しておこう。
自分の持ってるグラボのVRAMがわからないときはGPU-Zなどで調べよう。
またGTX1600系固有のバグ(単色の画像が出力される)があるらしいので
その場合は「--no-half-vae」もしくは「--no-half」や「--precision full」とパラメータを追加。
ちなみにパラメータに「--xformers」を追加してxformersを導入・使用すると
消費VRAMが減って画像生成処理時間も短縮されるので是非導入しよう。
画像からdanbooruのタグをAIで調査するdeepdanbooruを利用する場合は「--deepdanbooru」を追加。
のようになる。
ターミナルやPowerShellなどでwebui-user.batを起動しwebUIの初期導入と起動を行う。
過去には手動でCUDA等を導入する必要があったが、現在はこの初期導入でだいたいの導入が行われる。
ずいぶん楽にはなったがその分初期導入の時間は結構長い。10分~20分くらいかかるかもしれない。
途中で導入処理がエラーで止まってしまった場合は管理者権限で実行するなどして対応して欲しい。
起動ができたらSettingで以下の設定を変更してNovelAIに近づける。
Stop At last layers of CLIP modelを2に、
Eta noise seed deltaを31337にする。
これで設定は完了!
設定を合わせて完全にNovelAIと同じ内容になったのかを確認するテストがある。
出力結果から海外じゃHallo Asuka Testなんて呼ばれている。
これは初期SEEDをはじめとする設定内容が完全に一致していれば同じ出力結果を得られる仕組みを利用している。
プロンプトの内容:masterpiece, best quality, masterpiece, asuka langley sitting cross legged on a chair
ネガティブプロンプトの内容:lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name
https://i.imgur.com/Bfl5qJB.jpg
なお、このテストはAUTOMATIC1111のバージョンやxformersの適用状態によっては微妙に違う画像が出力されることがあるらしい。
xformersを適用させている増田の環境だと確かに二つ並べると間違い探しレベルの違いがあった。
「Booru tag autocompletion for A1111」を導入すればNovelAIのように自動でdanbooruのタグを保管してくれる。
画像生成AIモデルはStable DiffusionがOSSのため派生が結構多い。
自前で追加学習もできるため自前で学習した追加AIモデルを4chanのような掲示板などで共有する人もいるらしい。
しかしそのようなモデルの中にウィルスのような悪意のある動作を行うものもあるらしい。
FBIがペドフィリアを一網打尽にするためにIPアドレスなどの個人情報を抜き出す動作を行うロリ特化AIモデルを掲示板で配布していて
しかもそれには本物の児童ポルノが教師データとして使われている…などという都市伝説的な話が今界隈を賑わせている。
NetflixのドキュメンタリーThe Social Dilemmaは、ソーシャルメディアの問題を厳しく描写したことで、世界中で話題になった。
依存症からプライバシーの問題まで、ソーシャルメディアのマイナス面については耳にするが、ソーシャルメディア企業は、オンラインでのユーザーの行動や発言をどのように管理しているか、ユーザーデータをどのように扱っているかについて、秘密主義を貫いている。
Twitter等が収集できるデータの種類は、大きく 3 つのカテゴリに分類される。
サービスの対価を支払う顧客は広告主であり、サイトが販売しているのはユーザーの関心(アテンション)である。したがって、ソーシャル メディアにとっては、ユーザーをできるだけ長くページにとどめておくことが目的になる。
ユーザーが好きだったり関与したような投稿の情報を利用して、個人の好みに合わせたコンテンツをレコメンドするシステムを備えている。ユーザーは無意識のうちにYouTubeなどで長時間過ごすことになる。
お気に入りのブランドの靴をオンラインで検索した人は、 知らないうちに、ブランドのより多くのアイテムを求める広告に圧倒されるようになる。監視資本主義はここから引き起こる。
「監視資本主義」は、2014 年にハーバード大学のShoshana Zuboff 教授によって造られた言葉だ。データの収集と生成は、インターネットの大規模な監視に依存しており、多くの場合、Google などの無料のオンラインサービスを提供する企業によって行われている。要は、検索、いいね、購入を監視することにより、オンラインでの行動を収集および精査する。
感情から政治的傾向まで、ソーシャルメディアは直接的または間接的にお前の行動を操作できる。2018年、ケンブリッジ・アナリティカと呼ばれる会社は、「ドナルド・トランプを大統領に選出するのを助ける」ために、知らないうちに何千万人ものアメリカ人に関するFacebookデータを購入していたのだ。その後、マーク・ザッカーバーグが議会での証言に呼ばれ、オンライン消費者のプライバシー権に関する議論が始まった。
研究者は、オンラインで我々は「フィルターバブル」の中にいると主張している。人は反対意見を見ないため、自分の意見は常に正しいに違いないと信じるようになっている。
27.66.194.161 27.66.240.74 27.66.244.3 27.66.253.213 27.73.97.24 27.73.246.232 27.74.243.242 27.76.181.94 117.1.96.53 117.1.99.248 117.4.21.94 117.4.242.216 117.5.225.52 117.7.73.104 123.27.171.133 localhost 69.160.4.206 154.16.236.211 undefined.hostname.localhost
なにかの拍子にファイアーウォールを貫通しそう怖い!
5.8.71.235 cailinlucailin556.example.com 5.188.188.91 hy4b25cuhygesk92y52fr9h6wemzgxnh20.example.com 185.139.69.118 pron.script.example.com 217.12.203.117 server.example.com
行儀の悪いDNSサーバーが勝手にexample.comを名乗ってるのかな?
アリエナイシリーズの本は非常に教育的で素晴らしい本だと思ってます。これを有害図書に決定した責任者出てきて釈明しやがれと本気で思ってます。ただ一方で、必死に勉強して鳥取付近の地方(あのような決定をするような地方を以降言葉を選ばずひどい田舎と書きます)から無事脱出、都会の学校から都会で働くエンジニアになった身から見ると、今回のひどい田舎で行われた有害図書にまつわるドタバタについて、ひどい田舎あるあるであることもわかります。以下は自分の観測範囲の意見ですので、そうじゃない人もいると思います(が...多分少数派じゃないかな...。)
なにか決定するなら、十分な議論して物事を決定しましょうという、民主主義の根幹の考えなんて1mmも理解してないです。なんとなく、自分のまわり(彼らは「みんな」とよくいいます)に当たり障りがないことが最重要となりますので、当然議論なんてまともにしません。身の回りにいる誰かの機嫌を損ねないように自分の意見を同調させるだけです。これを彼らは民主主義とよんでます。
本が手に入るのは図書館で、そこには寄贈された軽く10年以上前のカビの生えたような大衆向けの古本を並べてるだけなので、本を読むといっても知識はその範囲に限定されます。更に悪いことに、本を読むことすらひどい田舎は上澄みの1%ぐらいじゃないかな。そうすると本すら読まないような偏った人たちだけで、雰囲気で物事を決めるので、決定はめちゃくちゃです。
自分たちは小さくて取るに足らないかわいい羊と本気で思っているので、取るに足らない自分たちの決定が、まさか都会の出版社様に多大な影響を与えるなんて1mmも思ってません。なので、amazonで本が販売停止担ってるなんて聞いても、出版社が直接講義してきても、最後まで、異世界ファンタジーの話か、違う世界線の話にしか思ってません。結果、担当に連絡してもありえないぐらいの塩対応になります。だって、異世界の出来事なんて彼らの生活には1mmも関係がないんだもの。しかもamazonで本を売っていることは知っていても、たくさん本のある便利な1サービスぐらいにしか思ってなくて、まさか世界の本の市場を牛耳る存在だなんてどこのSFかよと思ってると思います。
主義主張にしたがって動くような意識高い系はさっさと都会に出てますので、残っている人は基本的に明日を生き抜くために周りと雰囲気をあわせて生き抜くしか生きる道はありません。なので、正論はおろか、民主主義よりも、自分の周りに波風たてないのが優先されます。さらに、地方自治に務めないとまともに飯が食えないケースも多いので、そこで働く人たちはひどい田舎の事実上の実権を握ってる状況です。なので、民主主義を優先して波風立てようなら、マヂで生きていけなくなります。
中央の学のある人が一方的に決めた法律なんて、ひどい田舎の人たちには異世界の呪文にしか見えません。その法律の意味すら彼らには理解は難しいです。だって、その法律がなぜ必要なのか、過去にどんな議論が行われて制定されたのかなんてこと考えるよりも、ひどい田舎内部のルールの尊守の方が生き抜くために最重要事項なので、そんな法律のことなんて考える暇なんてないです。有害図書にまつわる話なんてちょっとでも考えようとしたことないと思います。ひどい田舎の有力者が有害と思ってくれそうな本を選んで、儀式的にいきなり投票で決定終了なんです。
インターネットで情報収集してるなら相当意識高いです。LINE使うために、都会に逃げ出した子供と連絡を取るためにインターネット使うだけです。情報の収集先はすべてTVでNHKです。新聞は野球・サッカーとTV欄のみ(しかも見れる局は3つぐらい。)Youtubeは高尚過ぎてついていけません。そもそも英語が混ざったら読まないですw彼らにとっては異世界の言語なので。
今回の騒動は起きるべくして起きた件です。対策するなら、ひどい田舎と中央とで生活する人も含めてお互い人が循環するようにする方策を本気で検討すべきです。そうしないと、ひどい田舎の自治体のあらゆる決定がどんどん異常になっていきます。それが難しいなら、せめてITないと何もできないこの世の中なので、総務省あたりで県ごとに別のIPアドレス(IPv6)割当とかしてください。このアドレスを利用して情報をフィルタすることで、ひどい田舎のイカれた意思決定の影響をひどい田舎に封じ込めて隔離するしかないと思ってます。なお、三才ブックスさんには大変申し訳ないのですが、多分このまま有害図書の件を努力されても、ひどい田舎の自治体の連中とは歩み寄りがおそすぎて永遠に並行線にしかなりません。だって、ひどい田舎の自治体は、三才ブックスさんの言い分なんて、いつまでたっても異世界からの通信ぐらいにしか思わないんだもん!
^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$
(出典:https://www.javadrive.jp/regex-basic/sample/index4.html)
0~255を判定している部分は置いといて、0~255を判定する記述が二つに分かれているのが気になる。
間に"."が挟まるからだ。
IPアドレスでは先頭に"."があってもおかしいし、末尾に"."があってもおかしい。
そのため、まずipアドレスの先頭三組("0~255".)だけドット付きで判定し、最後の一つだけドットなしで判定させている。
しかしそれなら、間に"."が挟まっても挟まらなくてもどっちでもマッチするように書いたあと、
その後、マッチした文字列の全体のフォーマットが正しいかを判定すればいいのではないか?
例えば以下のように。
^(?=^(\d+\.){3}\d+$)((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.?){4}$
0~255を判定する部分が一つになっている。にもかかわらず末尾に"."がついてしまうパターンがマッチしないのは
(または、途中の組で"."がつかないパターンがマッチしないのは)、
先読みで正しいフォーマットだけにマッチするようにして、それ以外の文字列をはじいているからだ。
正規表現が単純に短くなったし、「全体のフォーマットを判定する先読み部」と「各8bit+"\.?"の複雑な判定部分」に分けて描くことができた為、
先読みを使うことで、判定対象となる文字列の、「各部分判定の複雑さ」と「全体のフォーマットの判定の複雑さ」を分けることができる。
次に、0~255判定も複雑になっている。
正規表現では"0以上255以下"のような、複数桁にまたがる数の大小判定は出来ない。
例えば"2"と"10"では、数としては当然"10"が大きいが、辞書順で考えれば"2"の方が後に来る。
つまり、辞書順に並んだ文字列の中から、0~255の範囲だけにマッチするような正規表現を書かないといけない。そのため複雑になる。
しかし、0~255のような複数桁にまたがる数の大小判定ができないとしても、
全ての0~255に当てはまる厳密なパターンを書く((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]))より、
ある程度絞れる範囲だけ書いた後、除外したいパターンを書いて弾いた方が、読みやすく、意図が理解しやすくなるのではないか?
例えは以下のように。
^(?![3-9]\d\d)(?!2[6-9]\d)(?!25[6789])(?!0\d)\d{1,3}$
まず、上記正規表現末尾の\d{1,3}で、1~3桁のあらゆる数字列にマッチする。
するように記述されている。
「元々の0~255判定部分より複雑じゃん」と言われればそうなのだが、読み方が異なっている。
元々の正規表現は、
「250以上255以下、または、240以上249以下、または、100以上199以下、または、0~99」という読み方になる。
「3桁の数字列にマッチする、かつ、300以上999以下を除外、かつ、260以上299以下を除外、かつ、256以上259以下を除外、かつ、先頭が"0"の2ケタ以上の数字列を除外」という読み方になる。
個人的な意見になるが、「~、または、~」の連言では、「対象となる範囲の全体感と、除外されるべきパターン」が見えないため、どういった範囲の話をしているのかがピンとこない(場合もある)。
一方、「~、かつ、~~を除外」では、「対象となる範囲の全体感と、除外されるべきパターン」がそのまま書かれているため、対象文字列のどの部分のことを言及しているのか(比較的)理解しやすい(、と言いたい)。
ちょっと無理がある言い方か。
二つの変更を組み合わせたIPアドレス(IPv4)を判定する正規表現は以下になる。
^(?=^(\d+\.){3}\d+$)((?![3-9]\d\d)(?!2[6-9]\d)(?!25[6789])(?!0\d)(\d{1,3})\.?){4}$
"(?=..."や、"(?!..."で始まる部分は、「除外または許可されるべきパターンを指定している部分」であり、文字マッチを行っていない。
先読み部分を無視して、文字とマッチする部分だけに注目すると、この正規表現がマッチしようとしている文字列の全体感が把握できる。
((\d{1,3})\.?){4}
シュナムル事件に際して、アカ削除させるのは言論弾圧?とかネットストーカーとか、表現の自由の侵害ではとか言ってみる流れあるけど、違うと思う。あれは、言論の弾圧とか、アカウントを攻撃して無理やり消してやったとかでは、ないんだよな。表現の自由とか個人の権利が破壊されたわけではない。
匿名じゃなくなって、リアルとアカウントが結びついた時に、シュナムルは人に指さされるようなことをやってたのでリアルがヤベーことになった。
ネットの匿名性ってのはさ、個人に保証された守るべき権利とかでは、ぜんぜんないよね。
別にこれは破壊されても、幸福追求の権利とか思想の面で何も問題はない。なんなら匿名性などIPアドレスがある時点で厳密には存在しない。自分自身が胸を張って生きているなら、発言が匿名かであることなんて、誰に保証されなくても何も困らない。SNSのアカウントぐらいむしろ家族親戚に積極的に教えて、近況報告を簡単にする。
「アカバレ」なんてのは、アカウントで悪いことやバツの悪いことをやっている奴が気にすること。バレてるのはアカウントではなく、悪事なんだよ。だから、悪事を普段からしなければいいのだ。たとえばエッチな絵を描いているとしても、それが己の誇りならば、職場でアカウントを知られたらむしろ、あっ見てくれたんですか~あざす~、となるだろう。
そうできるようにリアルだろうがネットだろうが、胸張れるように生きるべき。
生きるべきように生きてないほうが悪い。
なのに、なんかネットの重鎮みたいなやつらが、シュナムルは嘘は悪いけどアカバレはやりすぎ可哀想……ってなってるの、変だと思うんだよね。
アカウントが家族バレぐらいで可哀想って思ってしまうやつら、SNSでどんだけ後ろめたいこと喋ってるんだっていう。
俺も今この匿名ダイアリーってとこで喋ってるけど、あとから、友達とかにこれ書いたんだけどどう?とか訊いたりする。
お前らもそうしろ。
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>
//CSVファイルが置かれてるディレクトリのパス。投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";
'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';
//ファイルのパス。CSVは絶対パスで、拡張子も必要。iimは相対パスでよく、拡張子不要。
const FILE_PATHS = {
textCsv: CSV_DIR + 'textNoAnker.csv',
//レス用投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。
replyTextCsv: CSV_DIR + 'textReply.csv',
};
baseWaitTime: 5,
//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ
waitTimeRange: 5,
//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)
waitTimeForAvoidingPunishment: 60 * 30,
//メール
mail: 'sage',
//名前設定
name: '',
//以下、偽装ワッチョイ設定。浪人でワッチョイを非表示にしてるときだけtrueにしてね。
//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。
//妙なニックネームの後に付く8桁の文字列をランダムで決めて付加するかどうか。
},
//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。
//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrueの場合、投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。
//最初に取得するアンカー無し投稿文CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力。
noAnkerPostTextCsvStartRow: 1,
//最初に取得する返信用投稿文CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力。
//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。
//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。
minAnker: 895,
//返信する場合、名前に以下の文字列を含む投稿にアンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列で複数指定可能。指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能。
//↑とは逆に、名前に以下の文字列を含まない投稿にアンカーをつけて返信する。↑と併用も可能。
//返信する場合、本文に以下の文字列を含む投稿にアンカーをつけて返信する。
filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演で擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],
},
//自分のIPアドレスの確認。VPNとかでIPを変更してマクロを動かしてるとき、突然VPNが作動しなくなってIPが元に戻ったときにマクロを止めるためのもの。
//以下の文字列が自分の現在のIPアドレスに含まれている場合、マクロを一時停止する。基本的に自分の本当のIPアドレスを入力。
},
//浪人設定。最後に動作を確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないから確認できずわからない。
//浪人にログインしてるかどうかをチェックするかどうか。trueならする。falseならしない。trueにしていてもし浪人にログインしていないことを確認したらログインしにいく。
password: '1234',
},
};
/**************************************
設定箇所終わり。
https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 <h3>o- *************************************/</h3>
/**************************************
・NULL演算子(??)は使えない。論理積(&&)は使える。
・オブジェクトの分割代入はできない。
・importはできない。 <h3>o- *************************************/</h3>
/**************************************
関数 <h3>o- *************************************/</h3>
/**
* ここから始まる。
*/
checkSettings();
var _TextCsvCursors = new TextCsvCursors(
SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0
? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1
: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
SETTINGS.postSettings.replyPostTextCsvStartRow > 0
? SETTINGS.postSettings.replyPostTextCsvStartRow - 1
: SETTINGS.postSettings.replyPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
);
var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);
const _MyPosterName = new MyPosterName({
name: SETTINGS.nameSettings.name,
});
const _ThreadUrl = openPromptThreadUrl();
//ループ
while (true) {
SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();
//スレを開く
openUrl(_ThreadUrl.fullUrlHttps());
//浪人にログインする設定なら、浪人にログインしているかどうかを確認し、していなければログインしにいく。
if (SETTINGS.roninSettings.checkLogin) {
}
}
if (SETTINGS.postSettings.replyPost) {
const targetAnkerNumber = createPostDOMList()
.filterPostnumberHigher(_LoopStatuses.currentMinAnker())
.filterByPostername(SETTINGS.postSettings.filterNames)
.filterByPosternameNotIncluded(
SETTINGS.postSettings.filterNamesNotIncluded,
)
.filterByText(SETTINGS.postSettings.filterText)
if (targetAnkerNumber !== null) {
const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);
messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);
return {
...r,
updatedLoopStatuses:
_LoopStatuses.updateMinAnker(targetAnkerNumber),
};
}
}
if (SETTINGS.postSettings.noAnkerPost) {
//返信対象無し、或いは返信しない設定の場合。アンカー無し投稿文を作る。
const r = _TextCsvCursors.takeNextRowTextAsNoAnker();
messageDisplay('返信対象無し。アンカー無し投稿。');
return {
...r,
updatedLoopStatuses: _LoopStatuses,
};
}
return null;
})();
if (p) {
//投稿。
nickname: SETTINGS.nameSettings.nickname,
korokoro: SETTINGS.nameSettings.korokoro,
area: SETTINGS.nameSettings.area,
}),
SETTINGS.mail,
p.text,
);
//_TextCsvCursorsと_LoopStatusesを更新。
_TextCsvCursors = p.updatedTextCsvCursors;
_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
} else {
`返信対象が現われるのを待機中...。`,
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
}
wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));
}
}
/**
* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。
* @param {string} serverName サーバー名
* @param {MyPosterName} _MyPosterName
* @param {string} postMail メール
*/
serverName,
postMail,
_MyText,
retryTimes = 0,
) {
const r =
retryTimes === 0
? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(
postTo5chTread,
)
serverName,
postMail,
_MyText,
).postSubstring(retryTimes, postTo5chTread, postConfirm);
if (r) {
back();
return;
}
wait(7);
const error = createPostErrorMessage().analyze();
messageDisplay(error.message);
if (error.order === 'KILL') {
kill();
} else if (error.order === 'SKIP') {
return;
} else if (error.order === 'TRUNCATE') {
back();
serverName,
postMail,
_MyText,
retryTimes + 1,
);
} else if (error.order === 'WAIT') {
wait(SETTINGS.waitTimeForAvoidingPunishment);
serverName,
postMail,
_MyText,
retryTimes,
);
} else if (error.order === 'LOGIN') {
serverName,
postMail,
_MyText,
retryTimes,
);
}
return;
}
/**
* 現在のIPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。
* @returns
*/
function checkCurrentIpNotTheIp() {
openUrl('https://www.cman.jp/network/support/go_access.cgi');
const _IpAdress = createIpAdressFromCMan();
if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {
pause('現在のIPに指定した値が含まれていることを確認。');
}
return;
}
/**
* @returns
*/
if (
SETTINGS.postSettings.noAnkerPost === false &&
SETTINGS.postSettings.replyPost === false
) {
return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');
}
if (
SETTINGS.postSettings.noAnkerPostTextCsvStartRow < 0 &&
SETTINGS.postSettings.replyPostTextCsvStartRow < 0
) {
return kill(
'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',
);
}
if (
SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||
SETTINGS.postSettings.replyPostTextCsvStartRow === 0
) {
return kill(
'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',
);
}
}
/**
* 入力フォームを表示して入力されたスレのURLを受け取る。
*/
function openPromptThreadUrl() {
const url = prompt('スレURLを入力');
}
/**
* 開いてるスレのレス全て読み取ってPostListインスタンスを作って返す。
* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。
*/
const posts = window.document.getElementsByClassName('post');
return new PostList(Array.from(posts).map((e) => new Post(e)));
}
/**
* 開いてるスレのレス全て取得してPostDOMListに格納して返す。
* @returns
*/
function createPostDOMList() {
const posts = window.document.getElementsByClassName('post');
for (let index = 0; index < posts.length; index++) {
//HTMLCollectionからElementを1つずつ抽出して配列に。
arrPostDOMList.push(posts.item(index));
}
return new PostDOMList(arrPostDOMList);
}
/**
* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。
*/
function createPostErrorMessage() {
window.document
まず誰もが疑問に思うであろう、何故荒らしが特定個人だと分かるのか?という点。
非常に単純だが荒らし方が完全に同じであり、IPアドレスも一致。語彙も変わらない。
5年眺めていれば「またあいつか」「まだ居んのかよ」と半ば呆れてしまう。
大体の場合、ソシャゲのちょっとしたマイナス意見、愚痴、あとは彼の好きな女性キャラの話題でスイッチが入る。
IPアドレスが表示されているので、ロックオンしたユーザーを荒らし認定、書き込みを手元に保存し、あまりレパートリーの無い罵倒と共にひたすら掲示板に貼り付けていく。
コピペbotとした彼の方が荒らしだという指摘には当然耳を貸さない。
文盲なので他のユーザーからすぐ揚げ足を取られたり言葉で負かされるが、荒らしらしい意地と謎の根性でひたすらコピペをしていく。
何が彼を掻き立て、何が彼にちからを与えるのかまったく分からないが、とにかく書き込みを見る限り、自治をしているつもりらしく、正義は我にありとばかりに1週間、10日、或いはそれ以上の期間コピペをしていく。
流石の公式も重い腰を上げ、木を削除したりBANしたり、ルールを明記したりもしたが意味はなかった。
法的措置をするかもとの案内が出た時は流石に静かになったが、結局訴えられなかったらしい。今も元気に荒らしと粘着をしている。
昼夜問わずいるものだから、おそらくニートだろうという話もある。
無課金宣言もしており、課金者をゲームが下手だとバカにする事もあった(そして即返り討ちにあい、コピペbotと化していた)
こいついつまで居んのかな、ソシャゲがサ終するまで居そうな気もするけれど、サ終したらこいつどこに行くのかな。
なんかまともな生活も能力もなさそうだけど、どんな私生活送ってんのかな。
「おれは増田のみんなを愛してる。ほんとうだ、神様に誓ってもいい。おれは増田を愛してる、おまえたちみんなを!」
まずは『増田のやべーやつ番付』の作成者に感謝を述べる。ポリンキー増田は番付掲載を目標に活動していたからだ。2022年7月場所【anond:20220720211525】にて、初掲載ながらも小結という高い階級を与えてくれてありがとう。目標は達成できたので、ポリンキー増田は今日限りをもって引退することを宣言する。
引退するにあたって、ポリンキー増田のこれまでの活動を振り返るとともに『△△△<教えてあげないよ! ジャン♪』の投稿を愚直に繰り返してきた理由を教えてあげよう。
教えてあげないよジャン♪
私が最初に行ったポリンキー増田の投稿だ。なんと、原初のポリンキーには『△△△<』が無かったのだ。トラバ元は削除されているので、トラバ元のはてブエントリーを以下に示す。
私がなぜ「教えてあげないよジャン♪」とトラバしたのかはもう憶えていないが、おそらくは「教えてください」というタイトルの記事に対してわざわざトラバをしておきながら何も教えない、というギャグのつもりで書いたのだと思う。「わざわざトラバしておいて教えないの草」、「ポリンキー懐かしくて笑った」などと、読んだ人が感じてくれたらいいなと私は考えたのだろう。
2回目に行ったポリンキー投稿のトラバ元である。これもタイトルに「教えて」と付いている点では共通だが、トラバした意図は最初の物とは大きく異なっていることは記憶している。その意図の説明として、回りくどくなるが増田全般に対する私の思いから教えてあげることにする。
私は増田が好きだ。私は増田を愛している。しかしながら、ポリンキー増田は増田での質問やアンケートを嫌っていると考えている人もいるだろう。その誤解を解くためにも、冒頭にSF小説のセリフをパロディして増田への愛を語った。
私が増田を好きな理由としては、自由な書き込みが多いことにある。名前欄が無くIPアドレスどころかIDの表示すらないことが、便所の落書きと称される5ちゃんねるやバカッターと称されるTwitter以上に自由な文章表現を生むのだろう。内部告発じみた怪文書だったりセックスやジェンダーに関わる主張だったりは顕著な例だろう。増田が無ければ増田文学と称される名文の数々は投稿されなかったことだろう。
大量のブクマが付くような増田だけでなく、トラバやブクマが付かないにもかかわらず強烈なインパクトを残す増田も好きだ。いわゆる「増田のやべーやつ」である。字下げ増田の独特なスペースや改行の混じった怪文書を解読して、その人の精神状況を想像するのが好きだ。パリコレ増田の特徴的な「❌」「⭕」記号を見ると、相変わらずこの人は元気に活動しているなとほほえましい気分になる。
そして、ブクマが全く付かなくても「増田のやべーやつ」でなくても、くだらない質問やアンケートを書いたり答えたりするのも好きだ。議論やネットバトルでトラバを重ねることも、それを見ることも好きだ。
しかしながら、ブクマカに関しては必ずしもみんな好きだとは言えない。もちろん、面白い増田を発掘してくれるブクマカは好きだ。しかしながら、「三大〇〇、あと一つは?」や「〇〇な漫画orアニメ教えて」のような内容が皆無のアンケート風タイトルの増田に対して、面白くも無いブコメを書いてスターを送り合って、はてブをくだらない雑談や馴れ合いの場にしているブクマカは嫌いだ。
はてブのサービス趣旨は、ブックマークを保存・公開することによりネット上で話題になっているWebページの発見を補助することにある。【参考:はてなブックマークって? - はてなブックマーク】
かつてははてブ上で互助会ブロガーが跋扈していたが、公式がサービスの趣旨に反していると明言したことで互助会は次第に姿を消していった。互助会がいなくなったことに、多くのはてな利用者は賛同したことだろう。私もその一人だ。しかしながら、増田のくだらないアンケートにブクマを付けて、エントリーをアンケート解答欄にしてスターを送り合うことは互助会とどこが違うのか? 私には互助会行為と同じくはてブのサービス趣旨に反していると思っている。
やっと本題に入ることができたが、『一人称視点の漫画教えて』の増田を見た時には、トラバが1件も付いていないにもかかわらず既にブコメ欄ではくだらない雑談やスターの送り合いが始まっていた。
「お前(ブクマカ)がくだらない増田の質問を出しにしてブコメ欄で馴れ合うのは、はてブのサービス趣旨に反するぞ。だから教えるな」
「ブコメ欄じゃなくて、こっち(増田)に来て好きなだけ教えてろよ。もっとも私は教えてやらないけどな」
このようなことを当時の私は主張したかったのだろう。しかし、そのことをブクマしてブコメ欄に書くのはミイラ取りがミイラになることも同然であるし、トラバで私のお気持ちを長々と書いたとて元増田にとってはただのとばっちりになってしまう。私の複雑な気持ちを端的に表現しながら、道化を演じて角が立たないような文章にしたのが「教えてあげないよ! ジャン!」である。
それ以降、アンケート風のタイトルの増田を見かけたら「教えてあげないよ! ジャン!」となんとなしにトラバすることを繰り返していた。しかし、そんなことをしても反応はほとんどなかったので、私の思想が伝わったか否かはわからなかった。そもそも、元ネタがポリンキーということすら通じていないのでは? せめて、元ネタだけでも気づいてほしい。そう思って△△△の記号でポリンキーを示した初めての投稿がこちらだ。
△△△<教えてあげないよ! ジャン♪
現在お馴染みとなっているポリンキー増田のフォーマットは、この投稿により完成したのだ。当時私が考えたのは、記号付きの定型文で機械的に反応するのは「チョコエッグ🍫🥚」でおなじみのチョコエッグ増田の様だということだ。そして、チョコエッグ増田が短期間の活動ながらも番付に掲載される勢いがあったのだから(チョコエッグ増田は2022年3月場所にて初掲載)、同じ様なことをすれば私も番付を狙えるのではないか? と思いついた。はてブをアンケート解答欄にしているブクマカを諫めるという目的は、番付に掲載される「やべーやつ」を作ることへと変貌するのはあっという間だった。あとは質問やアンケートに類する投稿を見つける度に「△△△<教えてあげないよ! ジャン♪」とトラバするのを習慣にするだけだった。ポリンキー増田の投稿とは別に、はてブをアンケート解答欄にしているブクマカを諫める文章を公表したい欲もあったが、それはポリンキー増田の活動の妨げになる。だから今日この瞬間まで、ポリンキー増田を愚直に継続する理由は何も教えてあげなかったのである。
私が『増田のやべーやつ番付』の掲載を目指した理由ついても教えてあげよう。私は500users超の増田を書いてはてブのトップページに載ったことがある。自分の文章がはてブのトップページに載ったのは嬉しかった。顔も名前も全く知らない大勢の人たちの反応によって、自分の思想が多くの人に影響を与えたことを実感できたので、世界を変革したかのような快楽さえ感じた。トラバやブコメが大量についたことはもちろんだが、増田内での雑談でも私の増田が話題になったり、便乗した増田が出てきたりもした。さらには、はてなとは全く関係ないネットメディアにも私の増田が掲載されたことが私の精神を昂らせた。しかし、そんな盛り上がりはほんの3日間ほどで終わりを迎えた。トラバやブコメの反応は3日後にはピタリと止まり、増田やブクマカは既に別の話題で盛り上がっていた。三日天下という言葉はその時の私の心情を表現するために作られたのだとさえ感じた。また、その増田は年末の増田文学に掲載されたが、それによってトラバやブクマが増えることは全く無かった。
増田でトップレベルのブクマ数を稼いだとて、しょせんはこのようなものだ。増田文学などバズった増田を投稿した人のほとんども、おそらくは私と同じような気持ちを味わってきたことだろう。それに対して「増田のやべーやつ」は違う。ブクマを全然稼げなくとも、常に増田界隈で話題の中心であり続けているからだ。横綱級のやべーやつでなく番付が低くても、「むきゅーはややー」のゲーム日記や「すいすいすいようび~」の回文増田のような何年も継続している「増田のやべーやつ」は高い知名度を持っている。ブクマされた増田でしか増田を見ない人に対してはピンとこないだろうが。
私は増田に投稿するだけでなくファーストブクマカとして増田発掘もやっていたので、「増田のやべーやつ」に遭遇するのは日常茶飯事だった。だから、4か月毎にある番付の内容に共感していたし楽しみにもしていた。そして、増田投稿でブクマ数を稼いだりファーストブクマカとしてスターを稼いだりするのに憧れるように、「増田のやべーやつ」として番付に掲載されることにも憧れがあった。その気持ちが、ポリンキー増田の原動力である。
「増田のやべーやつ」に掲載されるキャラクターを意図的に作っただけで、私がまともであるなどと主張するつもりはない。「狂人の真似とて大路を走らば即ち狂人なり」の言葉をそのまま解釈すれば、やはり私は「増田のやべーやつ」なのだろう。番付に掲載されるという目標が無ければポリンキー増田は1か月も続かなかっただろうが、そもそもそんな目標を立てて半年近くも活動を継続している時点で私は自身を「やべーやつ」だと解釈している。目標を達成した今となってはポリンキー増田としての活動は時間の無駄にすぎないので、引退を宣言したのだ。
しかし、私が引退してもポリンキー増田は完全には無くならないと思う。体感だが、ここ1か月ほどのポリンキー増田のうちで私が投稿したのは7割ほどである。それは、質問やアンケートに類する増田に「△△△<教えてあげないよ! ジャン♪」とトラバしようと思ったが、すでに同じことが書き込まれているというケースがままあることを意味している。しかしながら、自分の投稿でないポリンキー増田の正確な数は、検索性が無いのでわからない。「チョコエッグ」・「クンニ」・「パリコレ」などのキーワード検索ができる「増田のやべーやつ」とは違うのだ。番付掲載を狙っている人はキーワード検索も意識してキャラクター付けするといいだろう。
最後に、私自身のプロフィールを気にする人に向けたメッセージで締め括ろうと思う。そもそも、なぜポリンキー増田を気にする人が多いのだろうか。ポリンキー増田と同じく特定の話題に機械的な反応をする増田に「チョコエッグ🍫🥚」・「礼には及ばんでござる」がいるけれども、それらの増田に対してプロフィールを気にする言及はほとんど無いように思う。おそらくだが、人は肯定されることよりも否定されることの方が感情を揺さぶられてしまうのだろう。その結果として、否定意見を言われると「お前はいったい何なんだ?」などと同じく否定意見を言い返してしまって、相手の人格などに言及してしまうのだろう。インコやオウムに「バカ」と言われるも同然なことに、否定する価値は皆無であるにもかかわらずだ。
ポリンキー増田の年代を推測した人はおおむね当たっている。ポリンキーのテレビCMが放映されていた当時に私は子供だったからだ。しかしながら、職業・居住地・趣味嗜好などそれ以外のプロファイリングについて的を得たものはなかった。そもそも、「△△△<教えてあげないよ! ジャン♪」という投稿を繰り返しているという事実だけで、一体どう人物像を分析できるのだろうか。具体的な私のプロフィールについて語ったとて何も面白いことはないので、教えてあげるつもりは……教えてあげないよ! ジャン♪
ちなみに、この増田にブコメやトラバで何らかの質問や疑問が書かれたとしても、追記して教えてあげるつもりも……教えてあげないよ! ジャン♪