はてなキーワード: らりるれろとは
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下の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
深く咥えたまま「らりるれろ」って言うのがいいみたいよ
https://anond.hatelabo.jp/20100217113611
https://anond.hatelabo.jp/20100218173903
2016年の1月、ジョナサンで慶應の受験勉強をサボりながら上のはてなの匿名ブログを読んでたのが、いつのまにか4年前になるとはね。
当時から慶應版がなかったのが気になっていたので、今年の3月に卒業を控えた俺が新入生にアドバイスをしたいと思う。
俺は慶應の文系だ。新入生にはもちろん、これから慶應を受験しようとする奴らのモチベーション維持になればと思って書く。
ちなみに慶應義塾関係者はほぼ100%、「慶応」ではなく「慶應」の文字を使い、在学生のことは塾生といい、学生部のことを学事という。
入学する前、广(まだれ)の中にKOを入れる書き方(广K广O)をするのが普通とか聞いたが嘘だ。一回も見たことない。慶應の「應」の字難しいけど、早く覚えような。
一人暮らししてる奴は、体感30%ぐらい。文系のキャンパスは1・2年が神奈川県の日吉キャンパス、3・4年が東京の三田キャンパスに通うことになる。文学部だけは2年で三田キャンパスに鞍替えになる。
1・2年次はやっぱり東急東横線沿線に住む人が多いかな。日吉・元住吉・武蔵小杉・武蔵小山とか。キャンパスが変わっても日吉〜三田間は直通でいけるから、4年間ずっと引っ越さないって奴もいる。武蔵小山がちょうど三田・日吉の中間にあるし、商店街もあって住みやすさで言えば一番いいかな。ただ、大学仲間と遊ぶのは5回中10回は渋谷なので、それを頭に入れとくといいかも。(新宿なんかで飲み会開いたら、多分だれも集合できない)
変わり種で、寮とか矢上・新川崎(矢上キャンパス側)の方に住んでるやつもいるにはいる。ただ駅から結構遠いこともあって、飲み会の参加率は下がりがち。終電で帰ってもタクシー使わないと帰れなくなったりしている。寮は、下田学生寮が留学生多い。綱島国際学生寮は新しいのもあってめっちゃ綺麗。安ければあり。
親が金持ちなのか、3回とか4回とか引っ越ししてる奴とか白金高輪に住んでる資産家の息子とかいたけど、普通に礼金・仲介手数料勿体無いので、せめて立地はしっかり考えたほうがいい。
「大学は人生の夏休みです。」入学オリエンテーションで、学年担当の教授が放った衝撃の一言だ。もちろん俺を含めた新入生はざわついた。が、断言しよう。大学生活は、小中高時代夢にまでみた「8月32日」の連続であったと。
95%の慶應生にとって、「講義でノートを取るためにペンを持っている時間」よりも、「スタバのバイトで容器に落書きするためにペンを持ってる時間」・「トイレチェック表に記入するためにペンを持ってる時間」・「ビールジョッキの取っ手を持ってる時間」・「ラーメン二郎で食券を持って行列に並んでいる時間」の方が残念ながら長い。
学部ごとにアドバイスは異なるが、とにかく「来日」だけは避けろ。所属キャンパスが三田でありながら、「日吉に来る」ことを茶化して「来日」という。来日になると三田で前後のコマの授業が取れなくなるとか、非常に面倒だ。語学・必修は早めに片つけるべし。留学とか考えてる奴は、必死でGPA(評定)をとった方がいい。
慶應は春学期に1年分の授業を登録する。だから、学期初めの授業選びはめちゃくちゃ大事。授業の評判を知るために、塾生総合研究所っていうところが出してるReshruit(リシュルート)っていうのが多分日吉の駅の本屋とかで買えると思うけど、ぶっちゃけ楽天の「みんなのキャンパス(https://campus.nikki.ne.jp/)」の方が情報量・正確度は高い。かなりお世話になった。ただ、リシュルートには大学語録とか乗ってて面白かった覚えがある。1年時は買うのはアリかも。
活字ベースではどうしても情報に限界があるから、後述する新歓期でのサークル勧誘時に同じ学部の先輩を見つけて履修相談に乗ってもらうっていう方法が一番ベスト。サークルによっては履修相談を客寄せパンダにしてるところもあるから、サークル自体に興味がなくても相談しに行くことをオススメする。
こういう言い方はあんまり好きではないけど、塾内団体種別を”イケてる”順で表すと、「體育會(体育会のこと)>>ダンサー>オーラン(インカレ)>テニサー>三田実(文化祭実行委員会)>国際交流系>その他」みたいな感じがなんとなーく蔓延ってる。
4年間スポーツしたい人は是非、体育会へ。野球とか強いし、環境は整ってると思う。実は体育会にも種類があって、体育会・準体育会(通称ジュンタイ)・理工学部体育会(通称リコタイ)、スポーツ・体育会の種類によってはそこまで練習がきつくないところもあるって噂。体育会は無条件にモテる。就活もめちゃくちゃ強い。
昔は花形だったテニサーは、近年の飲酒事故とかで人気が下火になってる。「らりるれろ」が頭文字につくテニサーに所属してると飲み会番長間違いなし。テニサーのサークル入会方法だけ特殊で、基本的には新歓期しか入会できないから注意が必要。
テニサーに代わって台等してきたのがダンサー。可愛い子とかだいたいここにいる。大体男の方が少ないサークルが多いから、モテたい男性諸君は今のうちから踊っとこう。
三田実・国際交流系の団体にはわりと真面目な人が多いイメージ。試験期間にはこういう真面目な友達が、神みたいに思える。
いろいろ言ったが、サークルは最低3つ以上は入った方がいい。途中でフェードアウトするのはベネッセ模試ぐらい簡単だが、途中で入るのは慶大オープンぐらい難しい。ぶっちゃけ所属してみないと本当の雰囲気はわからないので、たくさん入って自分にあったところだけ残って所属すればよし!俺もなんとなく籍だけいれてたところが最終的な居場所になってた。
1年で日吉に入学すると、イチョウ伝説を聞くと思う。「キャンパス内の日吉記念館までの道に植えられているイチョウが散るまでに彼氏/彼女ができないと、大学時代に付き合えない」とかいうよくある奴だ。イチョウ伝説が1年時のことを指してるのか2年時まで猶予があるのかとか、どうでもいい論争があるが、この伝説はマジだ。欲しけりゃ早く動け。ほんと、慶應で4年間彼女いないって本当に、まずい、まずいって。あぁ・・・。
日吉時代はカフェ、家庭教師・塾講師とかが多いかな。なぜか教える系のバイトはだいたいみんな2年でやめる。たまに意識高く有給インターンとかしてる奴とかいるが、焦らなくて大丈夫だ。どうせコーヒー運びしかしてない。
好き勝手業種を変えられるのも今のうちだ、社会勉強だと割り切っていろんなことを経験してみるといい。大学の名前に恥じないようにブッチ(無断欠席)だけはしないようにな。せめて連絡ぐらいいれろ。
やってみたいこと、やりたいこと、学びたいことがたくさんあるのはいいことだ。全部やってみる時間があるのが、大学生活の良さだと思う。
特にウチの大学は、単位に関して楽をしようと思えば本当に簡単に卒業ができてしまう。大学・資格勉強・サークル活動・学生団体・留学・ボランティア・バイト、試行錯誤しながら自分なりの時間の使い方を見つけられるといいな。最後に某W大学みたいに一流から三流まで表して終わりたいと思う。多様一流、起業二流、卒業三流。
○昼食:おはぎ
○調子
はややー。
行ってきたけど、先生に「病気ではないですね、激しい運動(意味深な笑顔)のしすぎなだけですね」と言われた。
なんじゃそりゃと、ずっこけたが何もないに越したことはないので、よかったよかった。
ただ一応検尿して検査してもらうことになったので、来週もう一回行かないといけないみたい。
うーむ、うちの会社早退の概念がないから、こういう時不便なんだよなあ。
ちょっと考えよう。
あああああああ!
もうダメだ。
課金ゲーいやだ。
いや、課金ゲーは他にもいくつかプレイしてるんだけど、ポケモンの課金ゲー嫌だ。
スパっとやめようかなあ。
ポケモンならなんでもプレイするわけじゃないんだから、やめればいいのに。
(ポケカは前はやってたけど、今はやってないし。ガオーレも二回ぐらいプレイしただけだし)
何より、本編のUSUMがまだ殿堂入りすらしてないってのが、意味不明すぎる。
こんなガチャゲーにイライラするぐらいなら、本編でオンライン対戦やればいいんだよ、お金もソフトもハードもあるんだから、もうかからないし。
●3DS
○ポケとる