はてなキーワード: userとは
◀暖かくして寝ろよ
正確に言うと「欲望よりも理屈を拠り所にして絵を描く事が多い」って感じかな。
AIの絵は呪文を唱えた人間の「こういう絵が欲しいんです!細部はどうでもいいからそれっぽいのをくれ!」って欲望に忠実なんだよ。
粗悪な材料も含まれてるけどより強くトリップ出来る合成ドラッグみたいな(まあ俺はタバコも吸ったことがない薬物エアプなんだが)。
対して人間はまず技術ありきというか、「自分が描けないような絵は目指さない」がまず前提にある感じ。
というよりも「目指そうとして失敗した絵は破り捨てる」が正しいのかも知れない。
超超初心者の場合はものすごい無茶な挑戦をして失敗した結果を「でもやろうとはしたんです><」で堂々とアップするけど、ブクマUSER100人ぐらい出せるレベルになるとそういった失敗作は人に見せないようになる傾向があるっぽい?
人間に戻った俺は理性を取り戻したので、何故俺の脳に潜む自動手記がこういう勘違いをしたのかを解説する。
そもそも最大の違いとして「AI絵師は自分に手直しを出来ないレベルの絵をアップするが、人力絵師は自分の絵に対して適切に手直しが出来る」という部分がある。
AI絵師の場合は多少の粗があったとしてそれを修正するためにもう一度ガチャを引き直すのは割に合わないけど、そこまでを人力で描いていた人間なら手直しの労力が完成品のクオリティに見合うので手直しを実行するんだ。
ただこれは現状のAIが「個別の箇所に対して画風を維持したまま小さく手直しを行う」という指示を出せないことが原因なので今後解決されていく可能性はある。
この話を聞くと「一部を削ってから残りを補わせるガチャを引けば良いのでは?」と考えるかもしれないが、それをやると人間は複雑骨折をしていくし風景はドンドンカオスになって所謂「AIらしさ」に溢れた絵が誕生する。
「描かれた人間の背骨を捻じ曲げないようにして制服の左右で色が違うのを解決しろ」みたいな命令が今のAIだと処理しきれないんだな。
そもそもこの問題が何故起こるかって言うと、やっぱ究極の所「AIってのはパクったもののキメラに過ぎないから」なんだよ。
これは初期の頃によくあった勘違いに近い間違いを再び起こしてるように聞こえるかもしれないけど、どうあっても根本的な所でAIってのはキメラしか作れないんだな。
100個のカレーを混ぜて一つのカレーを作るような例えがたまにされるが、その喩えに乗っかるなら「いくつも混ぜたせいで生まれた雑味を取りたい」って願いを解決しきれないんだ。
レシピを把握した上で人間が作るならどの肯定でどういった雑味が生まれるのかを逆算して対処していけるけど、AI特有の「近い物を無数に混ぜあった結果として完全じゃなさ」は無理なんだわ。
分数の割り算を普通の電卓でやろうとするといつの間にか小数点がいくつも並んで最終結果がちゃんとした数字にならないだろ?
それに対して近似値を把握している人間は不要な部分の誤差を取り除けるけど、本当にただ電卓に頼るしかないならどう計算し直せば良いのかも分からないから手の施しようがない。
まあこれが意味してるのは「本当に計算ができる人間が近似値を大雑把に出力させて後から手直しをするのに使うならAIは最強の武器になる」ってことだ。
まさに計算が出来る人間と電卓の関係なわけだなAIと絵師の関係もまた。
そしてAI絵師と人力絵師の違いを見抜ける人間は、電卓に無理な計算をさせたときに出る円周率の如き不規則な小数点の羅列のようなパターンを把握することで人間とAIを見分けているってことになるな。
ただAIを使いこなしてる人間やガチャを何度も引いている人間はこの誤差をドンドンマシにしていってるので、絵を見るときに細かい所に気づけない人間、「審美眼の有効桁数が小さい人間」を騙し続けているんだな。
(In my mind) Celia has completely surpassed Daso Edit
First of all, Japanese-made goods are now clearly marked with "Made in Japan" tags.
This is probably an improvement over the past year or two. Based on user feedback, the company has been promoting Japanese products.
Good Japanese-made kitchen tools account for half of the products.
My favorite Tupperware has been a best-seller for more than 5 years, and I have not changed the design at all.
In other words, I get the impression that this is a steady company that does not change its best-selling products at all, but improves them one millimeter at a time.
Even in 2022, many of DASO's products are still made in China, and there is little sense of progress.
When I visit the sales floor, the atmosphere is much the same as it was 10 years ago.
Celia seems to be getting more upscale every year. Without changing the price.
I want to support places where I can feel this kind of corporate effort.
Celia has completely surpassed Dasoh in my opinion.
What are you saying to a product that's 100 yen a pop? Are you a poor person?
But in fact, the quality of Japanese-made Tupperware and chopsticks is so good that you would not believe they are 100 yen.
せっかく課金したのにユーザが増えまくっているのか滅茶苦茶重くなっていて最悪。
だから流出したモデルを使ってローカルで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モデルを掲示板で配布していて
しかもそれには本物の児童ポルノが教師データとして使われている…などという都市伝説的な話が今界隈を賑わせている。
そうなんだ。
ちょっと調べたわ。
If MultiSelect is True, the return value is an array of the selected file names (even if only one file name is selected). Returns False if the user cancels the dialog box.
https://learn.microsoft.com/en-us/office/vba/api/excel.application.getopenfilename
はてな匿名ダイアリー 名作
最近の人気記事 - はてな匿名ダイアリー - はてラボ
個人的な名作
自走式彼女→https://anond.hatelabo.jp/20170907163356
会社の壁掛け時計→https://anond.hatelabo.jp/20170905110704
はてな匿名ダイアリー 人気
最近の人気記事 - はてな匿名ダイアリー - はてラボ
名作と変わらない結果に。ただTOP以降の結果は、名作は増田文学、人気はブクマ数等が表示される
気持ち悪いってなんだ!気持ち悪くねーだろ!いや、気持ち悪いか!増田は気持ち悪いってよ!
はてな匿名ダイアリー トレパク
トレス - はてな匿名ダイアリー - はてラボ
これはなんで??
はてな匿名ダイアリー なんj
なんJ - はてな匿名ダイアリー - はてラボ
TOPの次に表示される検索結果が「はてな匿名ダイアリーとかいうなんJ以下の場所 - 5ちゃんねる」で笑った。
これはわかる。自分も始めたばかりの時すぐ検索した。ちなみに次の検索結果はねとらぼの「増田さんって誰? ネットでよく見る謎の人物「増田」の正体」
面白い - はてな匿名ダイアリー - はてラボ
これTOPの次が「【上手すぎる…】Togetterを再現したはてな匿名ダイアリーが上手すぎると話題に「面白い」「お上手」「テンプレ」」なんだけど、元増田は消されていて見えなかった。めちゃくちゃ気になる
masdという増田を見る為のアプリが本当にあって笑った。なんて不毛なアプリなんだと思っていたら、
「はてな匿名ダイアリーを読むための非公式アプリです。
はてな匿名ダイアリーは株式会社はてなが運営するWebサービスです。
ダイアリーにコメントを書いたり読んだりして不毛な時間を過ごせます。」
以上
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下の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
弱者男性殺しは生きていた!! 更なる研鑚を積み人間凶器が甦った!!!
組み付きしだい種付けしまくってやる!!
返事がない場合は何が何でもさしむけまずぞ!!
タヌキックマスター!! でいだらぼっち!! では100万円増田!!!
真の求愛を知らしめたい!! おっ!おっ!おっ! オットセイ増田だァ!!!
ボクシングは3階級制覇だが非公開セルクマなら3つともオレのものだ!!
電磁波対策は完璧だ!! 増田全日本 集団ストーカー増田!!!!
バーリ・トゥード(なんでもあり)ならこいつが怖い!!
オウム真理教から炎の虎が上陸だ!! レヴェル増田 赤チャート先生!!!
ルールの無いケンカがしたいからハテナー(用心棒)になったのだ!!
おじさんへの欲情が今 実戦でバクハツする!! ビール腹増田だ―――!!!
ハッタショとヒョーガキが地上最悪の代名詞だ!!
ランジェリーの本場は今や増田にある!! オレを驚かせる奴はいないのか!!
パンティー
デカァァァァァいッ説明不要!! 3m60!!! 750kg!!!
オデ ゴーレム
出会いならこっちのもの 男女比1:3!! 思いきり出会い思いきり選ぶだけ!!
ピュアで礼儀正しい20代と知り合える 市民ミュージカル!!!
ダジャレに更なる磨きをかけ ”こマ?” ファクトチェックが帰ってきたァ!!!
今の自分に死角はないッッ!! 画像コーディネーター いらすとや増田!!!
増田十五年の拳技が今ベールを脱ぐ!! 増田から めぐみんだ!!!
”クソリプ妖怪” ブクマカ晒し増田 非表示セルクマで登場だ!!!
パリコレ⭕️がきてくれた―――!!!
匿名ダイアリーのデンジャラス・ライオン クンニ✋(👁👅👁)🤚増田だ!!!
草だったらこの人を外せない!! 超A級食玩 チョコエッグ🍫🥚!!!
超一流はてなー(Pro User)の超一流のエントリだ!! 生で拝んでオドロキやがれッ (回文)
若き王者が帰ってきたッ
どこへ行っていたンだッ チャンピオンッッ
俺達は君を待っていたッッッ 字下げ増田の登場だ――――――――ッ
加えて負傷者発生に備え超豪華なリザーバーを4名御用意致しました!
ウィッス 増田朝礼!!
クソガキ dorawii!!