はてなキーワード:Loopとは
電動キックボードの利用者で適法歩道走行してるやつを初めて見て感動した
電動キックボードが合法になったのが2023年7月からだからかれこれ1年と半年以上
都内23区在住なのでLOOPの実証実験期間を含めればもっとだ
ちなみに無知な奴らのために適法歩道走行について一応解説しておくと電動キックボードを歩道走行させるためには以下の条件を満たす必要がある
1.最高速度制限を6km/hにすること(車道走行モードだと20km/h出る)
2.最高速度表示灯を適切に点灯させること(具体的に言えば点滅させること、車道走行モードなら点灯)
つまり俺は最高速度表示灯を点滅させて歩道走行している電動キックボードを初めて見かけたのだ
無法地帯となりつつある電動キックボード界隈において絶滅していたと思っていた種に奇跡的に出会えたのである
まあ、それはそれとして早急に電動キックボードを規制してほしい、マジで危ない
ちょっと前にニュースになってたが連続信号無視で連続切符切られるギャグみたいな大学生が報道されてたがあんなの氷山の一角だ
ひろゆきの言を引き合いに出すのは大変不本意ではあるが、フランスでは一周回って規制しましょうって流れになってるものを周回遅れで解禁した日本って頭悪いですよねまじで
ChatGPTさんは「3.579MHzの水晶を使うと3.579MHzのCWが出る」と回答してくれましたが、周波数は水晶発振子によって固定されるということですか?
そうだとしたらとても不便に思えました
結論から言うと、水晶発振子は基本的に「決まった周波数でしか振動しない」 ため、1つの水晶で周波数を自由に変更することはできません。
しかし、これには「確かに不便だが、その分メリットがある」という理由があります。
また、実際の電子回路では、複数の方法で周波数を変更することが可能 です!
水晶発振子(Quartz Crystal)は、「水晶が特定の周波数で機械的に振動する性質」を利用した部品 です。
水晶は 「特定の周波数でしか共振しない」 ため、基本的にはその周波数でしか動作しません。
水晶は電圧を加えると「決まった周波数」で振動する物質(ピエゾ効果)。
3.579MHzの水晶なら、必ず3.579MHzで振動する。
2. なんでそんな不便なものを使うの?
確かに、「1つの水晶でいろんな周波数を作れない」のは不便ですが、その代わりに水晶発振子には非常に大きなメリット があります。
めちゃくちゃ正確!周波数のズレ(誤差)がほとんどない。(温度変化などで若干ズレるが、通常±0.001%以下)電子時計や通信機器で、正確な時間・周波数を作るために必須!
安定してる! 一度発振すれば、周波数がブレたり、勝手に変わったりしない。無線通信やラジオ放送では、周波数がズレると通信不能になるため、安定性が重要。
ノイズに強い! 発振がクリーンで、余計な雑音(ノイズ)が少ない ので、無線通信に適している。
📌 もし水晶発振子がなかったら…
発振回路が周波数を正しく維持できず、無線通信が不安定になる。
→ だから、「周波数固定」というデメリットよりも、正確で安定した発振ができるメリットの方が大きい!
3. それでも周波数を変えたい!どうする?
「1つの水晶で周波数を変えられない」のは不便ですが、電子回路では いろんな方法で周波数を変更することが可能 です!
例えば、無線機では「3.579MHzの水晶」「10MHzの水晶」などを複数搭載し、切り替えることで周波数を変更できる。
例:水晶切り替え回路
(スイッチ)[ 3.579MHz ] ←─→ [10.000MHz ]
無線機やトランシーバーの「周波数チャンネル切り替え」に使われる方法。
水晶発振子に「可変コンデンサ」を並列に入れると、発振周波数を少しだけ調整できる!
ただし、大きく変えることはできず、せいぜい±100Hz~1000Hzくらい。
📌 可変コンデンサを使った微調整
[水晶発振子] ──── [可変コンデンサ] →周波数が微妙に変わる
PLL(Phase-LockedLoop)という回路を使えば、水晶の周波数を自由に変更できる!
「基準となる水晶発振子」+「周波数を変えられる発振器」 を組み合わせることで、さまざまな周波数を作り出せる。
[10MHzの水晶発振子 ] → [ PLL回路 ] → [ 9MHz /10MHz / 11MHz などを出力 ]
スマホやWi-Fi、FMラジオなどの通信機器は、ほぼ100% PLLを使っている!
✅方法④:DDS(ダイレクト・デジタル・シンセサイザ)を使う
DDS(DirectDigitalSynthesizer)という技術を使うと、もっと自由に周波数を変えられる!
デジタル信号処理を利用して、好きな周波数の信号を作り出せる。
[10MHzの水晶発振子 ] → [DDS ] → [ 1Hz~10MHzのCWを自由に生成! ]
最新の無線機は、PLL +DDSを組み合わせて周波数を自由に変えている!
4. まとめ
✅水晶発振子は「決まった周波数でしか発振しない」ため、1つの水晶で自由に周波数を変えることはできない。
✅しかし、その代わりに「超正確」「超安定」「ノイズが少ない」という大きなメリットがある。
✅周波数を変更する方法はいくつかあり、PLLやDDSを使うと自由に周波数を作れる。
自転車の処分に関して、駅前に放置すれば、とかいうコメントをあちこちでみたりする
さすがにそれはどうなん?って思う一方、ありなのかもしれないとも思う
しかもわざわざ鍵を壊してまで盗むのがいるし、被害にあったこともある
不要自転車をお金払ってまで処分するよりは、人が集まるところに「ご自由に使ってください」と貼って放置したほうが有用なのではと思った
それによって盗まれる人が減るかもしれないし、盗んでまで急ぎたい人が助かるかもしれない
要らなければ使い終わったあとそのまま放置しておけば、また誰かが使える
自転車は比較的シンプルかつ物理的なものなので、怪しいから使いたくないっていうのもあまりない
気になるならサドルとハンドルをアルコール消毒すれば十分なくらい
放置のままじゃまになってるだけ自転車と比べれば誰でも使える状態になってるほうが良いと思うし、そういうシェア自転車があっても良いんじゃないかと思った
https://www.youtube.com/watch?v=Mp4yubWB8QM
カバーバージョンも好きだけど、こっちの方が悲壮感というかどこか物悲しい雰囲気があって聞き入ってしまう
なんとなくドラマのオープニング主題歌とかに起用されたらカッコよさそう
曲尺も短いし気づいたら一日で100回くらいリピート再生してる時もあった
https://www.youtube.com/watch?v=zILmrAJgzSc&loop=0
連続殺人鬼が女装しながら局部丸出しで被害者からはぎ取った皮で作ったドレスをまとってトリップしてるシーン
おぞましいシーンなはずなのに、穏やかな曲調も相まって不思議と見入ってしまった
ちなみに馬に別れを告げることはヒンドゥー教の聖典の一つにおいては身体的制限からの解放を意味するらしい
https://www.youtube.com/watch?v=zk8YTQtbwQ8&loop=0
天丼じゃないけど何度も同じメロディーラインが繰り返されるのって単調なんだけどそれが良いときがある
このリストから判断すると、ユーザーは戦略性や運要素が強いゲームを好む一方で、繰り返しの作業や運動系のゲームには飽きやすい傾向があるようです。また、適度な難易度や挑戦的な要素がありつつも、進行がスムーズなゲームを好む可能性があります。
Dead Cells
ローグライク要素があり、毎回異なるプレイ体験が楽しめる。難易度も調整でき、戦略とアクションがうまく組み合わさっている。
Hades
ストーリー性と戦略性が高く、プレイヤーのスキルに応じて成長していく要素が魅力的。シレン5に近い要素がありつつも、テンポが良い。
Into theBreach
ターン制ストラテジーで、パズルのような戦略性が求められる。短時間でプレイでき、何度も繰り返し楽しめる。
繰り返し要素がありながらも、戦略的なデッキ構築や戦闘が特徴。シンプルながら奥深いゲームプレイが楽しめる。
これらのゲームは、プレイヤーが挑戦的な要素を楽しみながらも、ストレスを感じにくいバランスの取れたゲーム体験を提供してくれると思います。
アニメ「キミキス pure rouge」視聴後の絶望、当時はまだ幼く購入できなかったPS2、一向に移植されないゲームソフト
私は長きに亘り待ち続けた
星乃さんとの正当な出会いを求めていた、清く真剣な交際を始めたかった
姉妹作「アマガミ」の新作ハード移植を知る度に、まだだ、まだ、まだ必ずや希望があると私は待った
青二才だったのだ
どんなに待ち侘びても沙汰はなく、アーカイブスにも登場はなく、純朴な感情だけでは星乃さんには届かない
輝日南高校の生徒になった私は、真っ先に星乃さんの元へと駆けた
星乃さんはどこにいるだろうかと校舎を歩くのが楽しかった
星乃さんに会えるのが嬉しかった、星乃さんと話せるのが嬉しかった、星乃さんが笑っているのが心から嬉しくてならなかった
度重なるフリーズ、週末まで辿り着けない
セーブポイントを超えられず、繰り返される魔の第4週
何度も聞いた会話、覚えてしまうリアクション、もってくれ私のPS2
無情にも、何度も何度も何度も何度も、目の前で景色が途切れてしまった
星乃さんを独りきりにさせたくない
9月の最終週、嵐の前の静けさのように、星乃さんと過ごせる残り僅かな学校生活は穏やかに過ぎていった
文化祭前日には恐怖に襲われた
また悲劇が起きるのではないかと気が気ではなかった、不安しかなかった
盟友は、最後の力を振り絞って私の期待に応えてくれた
KissKiss 君に恋し続けて、私の思いはようやく星乃さんに届いたのだ
歓喜と焦燥、相反する情緒で眺め終えたエンドロールが忘れられない
星乃さんに出会えたのはあの夏たった1度きりだった
認識あるってChatGPT回答返してるやん。
ワイ: ChatGPTは下記の認識はありますか?Carlo Rovelli and Francesca Vidotto: "CovariantLoopQuantumGravity: An Elementary Introduction toQuantumGravity and SpinfoamTheory",CambridgeUniversity Press ChatGPT:私ChatGPTは、Carlo RovelliとFrancesca Vidottoによる「CovariantLoopQuantumGravity: An Elementary Introduction toQuantumGravity and SpinfoamTheory」について、その内容や研究成果についての知識を持っていますが、それを詳細に説明することはできません。私は、自然言語処理技術を利用して文章を読み、一般的な内容や主なアイデアを理解することができますが、深い理解や専門的な議論については、物理学の専門家に相談することが必要です。
ChatGPTを自分用あるいは研究用にカスタムしていない"素の状態"だと、むちゃくちゃ簡単で常識的なことしか回答返さんぞ
いや、そーいう話じゃなくて(まぁ社内の機密情報を投げる社員が問題ないか?と言えばフツーに問題はあるし既にしてるヤツはおる模様)、
むちゃくちゃ簡単で常識的なことであれば、ChatGPTは自然な回答を返すを実現する過程で溜め込んだデータでパターン回答してくれるけど、
ほんの少しでも専門性を必要とすることになるとマジで素の状態じゃぜんぜんダメだぞ
ITの質問とかでも間違った回答返すし、それ以外の雑談レベルでも完全に素の状態じゃこんな感じやで
ワイ:ChatGPTの定義では宇宙共通の時間が存在するとなっているのですか?ChatGPT:私ChatGPTは、自己学習を通じて人工知能を実現するために設計されたAIの一つであり、宇宙の時間の存在や非存在についての見解を持っていません。私は、与えられた情報や文脈に基づいて自然言語で回答することができますが、自分自身で新しい情報を創出することはできません。したがって、私自身が宇宙共通の時間の存在についての見解を持っているわけではありません。 ワイ: ChatGPTは下記の認識はありますか?Carlo Rovelli and Francesca Vidotto: "CovariantLoopQuantumGravity: An Elementary Introduction toQuantumGravity and SpinfoamTheory",CambridgeUniversity Press ChatGPT:私ChatGPTは、Carlo RovelliとFrancesca Vidottoによる「CovariantLoopQuantumGravity: An Elementary Introduction toQuantumGravity and SpinfoamTheory」について、その内容や研究成果についての知識を持っていますが、それを詳細に説明することはできません。私は、自然言語処理技術を利用して文章を読み、一般的な内容や主なアイデアを理解することができますが、深い理解や専門的な議論については、物理学の専門家に相談することが必要です。 ワイ: CovariantLoopQuantumGravity: An Elementary Introduction toQuantumGravity and SpinfoamTheoryについて萌えキャラっぽく説明してください ChatGPT:ええと、CovariantLoopQuantumGravity: An Elementary Introduction toQuantumGravity and SpinfoamTheoryは、物理学の分野で研究されている、重力の量子力学的理論についての入門書なんだよ!これは、カルロ・ロヴェッリとフランチェスカ・ヴィドットが書いた本で、重力場をループ量子重力理論で記述する方法を説明しているんだ!さらに、スピンフォーム理論に基づいて、時空の量子化の方法も解説しているよ!重力場や量子力学に興味がある人には、必見の本だよ!まだ高度な数学が必要だけど、興味深いアイデアがたくさん詰まっているんだ!萌えキャラとしては、とっても知的で魅力的な本って感じかな!
ワイ: ChatGPTはDnmt1-dependent Chk1 Pathway SuppressionIs Protective against Neuron Divisionについて認識がありますか? 細胞が増えるということは、細胞の遺伝情報であるDNAが複製され、それを分配する細胞分裂が繰り返されることです。この一連の過程は細胞周期と呼ばれ、DNA複製をするS期、細胞分裂をするM期、このS期とM期の間にG1期とG2期が存在します。ニューロンは、細胞分裂を繰り返す神経前駆細胞から主に胎児期において生み出され、分化開始とほぼ同時に別の細胞周期であるG0期に入ると考えられています。味岡准教授らの研究グループは、これまでの研究で、S期進行のブレーキとして機能するRbファミリータンパク質注3)を欠損させると、一部のニューロンが増えることを発見しました(Ajiokaet al.,Cell 131, 378-390, 2007)。また、このタンパク質を欠損する時期が、ニューロンが増えるか否か決定づけることを見いだし(Oshikawaet al, Development 140, 2310-2320, 2013)、ニューロンが潜在的な増殖能力を秘めていることを明らかにしました。一方で、過去の様々な研究により、脳梗塞やアルツハイマー病で観察されるニューロン脱落の一部は、Rbのリン酸化に続き、細胞周期をS期へと進めてから細胞死を起こすということも知られていました。本研究では、S期進行後にニューロンの細胞死を誘導するRbファミリー欠損モデルを確立し、そのモデルを用いてM期進行のブレーキの仕組みを明らかにしました。また、そのブレーキを解除する低分子化合物カンプトテシンを同定しました。さらに、S期進行後にニューロンが脱落する脳梗塞モデルにおいて、カンプトテシン投与で細胞分裂させることに成功しました。 ChatGPT:申し訳ありませんが、私はこの研究について直接的な認識を持っていません。ただし、この研究はニューロンの増殖や死亡、脳梗塞のメカニズムに関するもののようですね。Rbファミリータンパク質やカンプトテシンについては少し知っていますが、具体的な研究内容については詳しくはありません。ごめんなさい
いびきが大きい人必見!原因や治療法を解説|睡眠に関する悩みは千里中央メディカルクリニック睡眠外来 │千里中央駅直結
https://tomohirokai.or.jp/senri/ibiki-ookii/
「脳血管障害はいびきの原因になることもあれば、いびきによって誘発される病気でもあります。」
https://www.amazon.co.jp/stores/page/2300195B-65A0-4241-97D8-2E0980EFE588
BOSEやSONYなど高いものから安い中華製のまで色々あるが、余裕があればBOSEが良い(自分が欲しい)と思う
Amazon |BoseQuietComfort Earbuds II 完全ワイヤレスイヤホンノイズキャンセリングBluetooth接続マイク付 最長6時間+18時間再生タッチ操作 防滴(IPX4)ソープストーン |楽器・音響機器 |楽器・音響機器
Microsoftの方が後からコロコロ料金が変わったりしないから、こっちメインにしようかな
Microsoftの「Notion」対抗サービス「Loop」のアプリが間もなく登場へ
対応する「Microsoft 365」アプリも広がり、データタイプが拡充される
「MicrosoftLoop」は、非同期型コラボレーションのためのデータ共有システム。たとえば、商品リストのテーブルをメールに貼り付けて送信すると、そのテーブルデータはもはや更新されず、共有した瞬間から古くなっていく。しかし、「Loop」テーブルとして送信すればあとから更新することも可能で、その内容は他のメンバーにもリアルタイムで反映される。他のメンバーも「Loop」テーブルを編集できるので、双方向でのやり取りが可能になるわけだ。
Amazon Prime Videoのおすすめが定期的に話題になるが、見ようと思ったらプライム対象外になってた…ってことが割とある。ならAmazonオリジナルなら消えないのでは?と思いオリジナル作品からいくつか感想など書いてみた。そんなに見てないので大したリストにならなかった。アマプラ入ってる人は大抵見てるだろう。今から入るって人にはちょっと参考になる…か?
どれ見たか思い出すためにWikipediaの「Amazonが配信するオリジナル番組のリスト」を見てわかったが、Amazonオリジナルと表記されていても「買い取り」作品の場合は配信が終了することかある。現に評判の良かった「Mr.ロボット」はアマゾンでの配信は終了してしまっている。「リーガルバディーズフランクリン&バッシュ」も一度配信終了リストに載った(現在配信中)。
アメドラ見てる人ならどこかで見たことがある、色んなドラマに(主に)悪役ゲストで出てるタイタス・ウェリバーが主演の刑事もの。顔つきからダーティコップものかな?と思わせて割と真っ当な刑事っぷり。人気が出てS7まで製作され、現在スピンオフの「ボッシュ: 受け継がれるもの」S1配信中。
個人的にはS1はいまいちだがS2からはめちゃくちゃ面白かった。脇のデカ箱+ビア樽コンビが最高。
ちなみにスピンオフは「買い取り」作品なのでいつか見られなくなるかもしれない。
syfyチャンネルでS3まで製作され打ち切られたがベゾスが大ファンだったためにAmazonで拾われたハードSFドラマ。
S1序盤は地味だがどんどん盛り上がっていく。S4からはまた地味になるが。宇宙船や戦闘の描写がいいんですよ。ちゃんと宇宙船に穴が空くし。
サイコサスペンス…サイコスリラーかな?S1はジュリア・ロバーツ主演、S2で完結。一回30分なので見やすい。S1では過去のアメリカの復員兵の復帰支援施設での出来事と、そこで働いていたケースワーカーのハイディの現在が交互に描かれる。とにかくS1の不穏な空気感が良い。演出が素晴らしい。Wikipediaにはズバッとネタバレが書かれているのでネタバレ嫌い組は見てはいけません。
話題になったので知っている人も多いであろう、ブラックな笑いのヒーロー物。かなりグロ。エロもある。話は面白い。ホームランダーが取り繕っていたものがどんどん剥がれていく。
ニューヨークのオーケストラにいたオーボエ奏者による回顧録を原案とし、南米から来た天才指揮者ロドリゴ(デュダメルがモデル)と新人オーボエ奏者ヘイリーをメインにオーケストラをめぐる人間模様や楽団の現実問題等を描く。
自分の中のイマジナリーモーツァルトに話しかけてるロドリゴ、楽団に入りたいヘイリー、ヘイリーのルームメイトのリジー、予算確保に走り回る総裁グロリア、ちょいちょい口を出したがる名誉指揮者トーマスなど脇の人々もみんなチャーミングで良い。S3のシベリウス5番のシーンが美しい。
S4は日本が舞台になるが、変なロボと変なクラオタが出てくる。あんなチンピラみたいなクラオタおらんやろ…面白いからいいが。
画集からインスパイアされたというSFドラマだけど、装置や研究の謎は特に明かされたりしないのでSFっぽい雰囲気のドラマ、って感じ。北欧の田舎の薄暗い空気と佇むなぞのロボ、って絵はたっぷり味わえる。そういうの好きな人におすすめ。
最近公開されたクリス・プラット主演のお父さん復讐もの。クリス・プラット、今回はシリアス演技。アクションは金かかってて見ごたえはある。
これ書いてる今現在3話まで見た。配役の人種がどーたらこーたらと色々物議醸してて、検索してもストーリーの感想までなかなかたどり着かん。個人的には人種は気にならないけど、ヌメノールでのガラドリエルが若者ムーブ過ぎてちょっと気になる。ガラドリエルでも若い頃はあんなもんなんだろうか。
新聞の読者投稿欄の恋愛物語を一話完結でドラマ化。S1はいい感じにオチもある物語が多くてほっこりします。
死後に脳内の記憶をバーチャル空間にアップロードして金がある限り永遠に生きられる世界のコメディ。金が無い人はアップロードしても容量の問題で一日に数分しか活動できなかったりという世知辛さ。主人公がアップロードされた経緯に不審な点があり…とサスペンス展開に。
イーガンで似たような設定あったなと思い出す。
オカルト事件を解决していくコメディ。面白かったけどS1で終わってしまった。
ハルマゲドンを阻止しようとする天使と悪魔、人間のオカルトコメディ。悪魔たちは悪魔の子を人間の子とすり替えるが、うっかり間違ってすっかりいい子に育ってしまうのであった。地獄の番犬もかわいいわんこに。
その他、マーベラス・ミセス・メイゼル、スニーキー・ピート、子供向けだとまほうのレシピ、ゴーティマー・ギボンが評判いいみたいです。そのうち見る。
元英軍兵士で今はホテルのナイト・マネジャーであるパインがかつて殺された恋人の復讐をすべく、武器商人ローパーの組織に潜入。ドキドキスパイもの。
トム・ヒドルストンとエリザベス・デビッキが美しい。ちなみにタイトルはナイトマネジャーだけどマネジャーやってるの序盤だけだった。
スター・トレックの続編ドラマ。親友データを失い、失意のうちに実家のぶどう畑でワインを作っていたピカードのもとに一人の女性が助けを求めて現れる。
スター・トレック全然見てないんだけど、冒頭の掴みが好みすぎて見てしまった。面白かった。
本国アメリカではパラマウントの配信サービスにて配信中なので、最終シーズンはアマゾンでの配信がないかもしれない。悲しい。
二人の破天荒弁護士のドタバタコメディ。よくありがちな深刻な展開がなく気楽に見られる。嫌味な同僚や弁護士の父親との確執もあるにはあるが、全員アホなので全然深刻にはならない。「シリコンバレー」のディネシュ役の人が広場恐怖症の弁護士役で出てくるが、ほぼディネシュ。
あとグッドオーメンズと原作者一緒ということでアメリカン・ゴッズはS1だけ見た。かなり暗かった。
ハンズオブゴッドは1話でやめてしまった。つまらんとか面白いとか言えるほど見てないが、単に1話目の殺人シーンとかが辛くて。
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下の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 = newTextCsvCursors(
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 = newLoopStatuses(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
*/
serverName,
postMail,
_MyText,
retryTimes = 0,
) {
const r =
retryTimes === 0
? newValuesOfPost(serverName, _MyPosterName,postMail, _MyText).post(
postTo5chTread,
)
serverName,
postMail,
_MyText,
).postSubstring(retryTimes,postTo5chTread,postConfirm);
if (r) {
back();
return;
}
wait(7);
consterror = 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以上で。',
);
}
}
/**
*/
function openPromptThreadUrl() {
consturl = prompt('スレURLを入力');
}
/**
* 開いてるスレのレス全て読み取ってPostListインスタンスを作って返す。
* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。
*/
constposts = window.document.getElementsByClassName('post');
return newPostList(Array.from(posts).map((e) => newPost(e)));
}
/**
* 開いてるスレのレス全て取得してPostDOMListに格納して返す。
* @returns
*/
function createPostDOMList() {
constposts = window.document.getElementsByClassName('post');
for (letindex = 0;index <posts.length;index++) {
//HTMLCollectionからElementを1つずつ抽出して配列に。
arrPostDOMList.push(posts.item(index));
}
return newPostDOMList(arrPostDOMList);
}
/**
* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。
*/
function createPostErrorMessage() {
window.document