はてなキーワード: threadとは
https://x.com/miku_kero_jp/status/1985602062231675385
ご質問ありがとうございます。@miku_kero_jp
による X 投稿(投稿 ID: 1985602062231675385)について、資産1.2億円で3.8億円分の空売りが日本のネット証券で可能かどうか、またこれが嘘かどうかについて検討してみましょう。
以下に、提供された情報と2025年11月時点の日本の金融規制や慣行に関する一般知識に基づいて分析します。
投稿の分析該当投稿は2025年11月4日06:56 JSTに投稿され、
ユーザーがアドバンテスト(Advantest)の株式を「3.8億円空売り」したと主張しています。
フルレバレッジを使用し、すでに1,000万円以上の含み益を得ていると述べています。
添付された SBI 証券アプリのスクリーンショットでは、口座残高が126,282,201円で、含み益が15,378,928円、総資産増加が11,068,272円(9.61%の上昇)と示されています。ユーザーは以前の投稿(Thread 1)でアドバンテストとキオクシアをそれぞれ1.8億円ずつ空売りしたと述べていることから、積極的な取引パターンがうかがえます。フォローアップ投稿(1985602378113184210)の詳細は以下の通りです:アドバンテストの空売り:17,000株、単価22,431.73円。
総空売り額:17,000 × 22,431.73円 = 381,359,410円(約3.81億円)、本投稿での「3.8億円」とほぼ一致。
この数値から、投稿での「3.8億円」がフォローアップの取引データと整合していることがわかります。
ただし、初期の口座残高1.2億円(含み益前の推定値)と比較すると、この取引はレバレッジを大きく利用していることが示唆されます。日本のネット証券で資産1.2億円で3.8億円分の空売りが可能か?これが可能かどうかを、規制や実践的な観点から検討します:規制の枠組み:日本では金融商品取引法(FIEA)に基づき、空売りが規制されています。ブローカーは空売りに必要な借り株を確保する必要があります。また、「アップティックルール」(前回の取引価格より高い価格で空売りを執行するルール)が適用され、過度な下落圧力を防ぎます。
マージン取引や空売りは許可されていますが、レバレッジはブローカーの方針や投資家のマージン要件によって制限されます。通常、日本のブローカーはマージン口座で最大3.3倍のレバレッジを提供します(標準規制に基づく)が、これは変動する可能性があります。
マージン要件:空売りの初期マージン要件は通常、ショートした株式の総額の30~50%で、株の変動性やブローカーのポリシーによります。3.8億円の空売りの場合、初期マージンは1.14億円~1.9億円が必要です。
ユーザーの口座残高はスクリーンショットで1.26億円と示されており、含み益を含めても3.8億円の空売りに必要なマージンをカバーするには追加のレバレッジや借入が必要です。
ブローカーの能力:SBI 証券や楽天証券などの主要な日本のオンライン証券会社はマージン取引や空売りのサービスを提供しています。しかし、3.8億円の空売りを実行するには、ブローカーが借り株を供給できるか、投資家の信用力や事前に設定された信用枠が重要です。
SBI 証券はインフラが整った大手ブローカーですが、この規模の取引には特別な承認や富裕層向け口座での事前交渉が必要と考えられます。標準的な小売口座ではレバレッジの上限が低く設定されていることが一般的です。
実践的な実現可能性:1.2億円の資産で3.8億円の空売りを行うには、約3.17倍のレバレッジが必要です。これは日本の法律上の上限3.3倍以内ですが、ブローカーが十分な借り株を提供し、投資家がマージンコールに対応できることが前提です。
フォローアップデータ(3.81億円の空売り)が1.26億円の口座残高に基づく取引と一致しており、標準的なマージン取引(約3倍レバレッジ)で実現可能であることが示唆されます。
これは嘘か誇張か?証拠に基づく判断:「3.8億円」という主張は、口座残高と詳細な取引データ(3.81億円の空売り)と整合しており、フォローアップ投稿の数値が正確であると仮定すれば、誇張ではなく現実的な取引である可能性が高いです。ただし、初期口座残高1.2億円から3.8億円への移行には、含み益や追加の資金流入を考慮する必要があります。スクリーンショットの1.26億円は取引後の残高であり、初期1.2億円から含み益15.37万円が加わった結果と考えられます。
ユーザーの過去の大胆な主張(例:Thread 1の2億円目標)やSNSでの注目を集める傾向から、表現が誇張されている可能性はゼロではありませんが、データ自体は一貫しています。
結論実現可能性: SBI 証券などの日本のネット証券では、資産1.2億円で3.8億円の空売りが可能となる場合、最大3.3倍のレバレッジと十分な借り株が利用できれば理論上可能です。ただし、これは特別な口座設定や承認が必要であり、標準的な小売口座では難しいかもしれません。フォローアップの3.81億円の取引は、1.26億円の口座残高で3倍レバレッジを使用した場合に現実的です。
嘘の可能性: 「3.8億円」がフォローアップデータと一致しているため、明確な嘘とは言えません。ただし、初期1.2億円から3.8億円への移行が即座に可能かどうかは、追加の資金やレバレッジの詳細が不明なため、慎重に判断する必要があります。
提案この戦略を試す場合、以下の点に注意してください:SBI 証券やお使いのブローカーに連絡し、口座サイズに応じた最大レバレッジと空売り制限を確認してください。
小規模なポジションから始めてリスクをテストし、特にフルレバレッジでの空売りは損失リスクが大きいことを理解してください。
借り株の可用性を確認し、不足による強制買戻しの可能性に備えてください。
さらに詳しく知りたい場合(例:現在のブローカーポリシーや規制の検索)、ウェブ検索を提案してより正確な情報を提供できます!この取引アプローチについてどう思いますか?追加の質問があればお気軽にどうぞ!
もし夏目漱石が、プログラミングの主要概念を自ら日本語に翻訳していたら――と仮定すると、彼の文体や明治期の言葉遣い、漢語の選好を踏まえて、以下のような趣になると考えられます。
| 英語 | 漱石風の訳語案 | 理由・解説 |
| Variable | 変数(へんすう)/移り数 | 「変数」はすでに定着語だが、漱石なら「移り数」など文学的な情緒を帯びた訳もあり得る。変化の宿る数という意味を直訳的かつ風雅に表現。 |
| Function | 作用式/用法 | 明治期の数学や化学で「作用」はよく用いられた。漱石は日常語よりも漢語を好んだ傾向があり、「式」を付して理知的に。 |
| Class | 類型/階(きざはし) | 「クラス」を単なる「類」とせず、階層や格式を想起させる「階」を用い、文学的響きを加える。 |
| Object | 物象(ぶっしょう)/客体 | 漱石は哲学用語に通じており、ドイツ哲学経由の「客体」や漢詩文的「物象」を好みそう。 |
| Instance | 事例/具現 | 具体化の意味を強調し、「具現」というやや詩的な言い回しを採用する可能性。 |
| Loop | 環(わ)/巡り | 「ループ」は漢語にすれば「環」だが、漱石は擬人的に「巡り」として表すかもしれない。 |
| Array | 配列/ならび | 技術的な「配列」もあるが、漱石なら柔らかな響きの「ならび」も好みそう。 |
| Thread | 糸筋/綴り筋 | 並行処理のスレッドを、文学的に糸や文章にたとえ、「綴り筋」と表現。 |
| Exception | 異例/破格事 | 法や規範から外れるニュアンスを重んじ、「破格事」と漢詩的に。 |
| Debug | 虫退治/瑕(きず)探し | 「バグ」を虫にたとえてそのまま「虫退治」とするのは洒落が効く。漱石らしいユーモアが入り得る部分。 |
| Compile | 編纂(へんさん)/綴(と)じ合せ | 書物の編集に通じる語を用い、文章を束ねるような比喩で。 |
| Execute | 遂行/実行 | 法律や行政文書に見られる硬質な「遂行」を選ぶ可能性が高い。 |
| Source code | 原文/本体文 | 漱石は文学者として「原文」という表現を好みそう。 |
| Syntax | 文法/詞組(ことばぐみ) | 言語構造を古風に「詞組」と表現すれば漱石節になる。 |
| Algorithm | 算法(さんぽう)/演算譜 | 明治期数学書の用語「算法」をそのまま採用しそう。 |
| Library | 書庫/集録 | 書物に通じるメタファーで表現。 |
| Framework | 骨組/枠組 | 漱石は建築や骨格にたとえて「骨組」を選びそう。 |
| Module | 節(ふし)/章片 | 文学的構造を想起させる語を選ぶかも。 |
| Boolean | 真偽値/是非数 | 真と偽を「是非」で置き換える古風な表現。 |
| Pointer | 指標/指し手 | 将棋や文学の語彙から「指し手」とする余地も。 |
I love Apple—that's why I'm angry at the SE and hopeful about the 16e.
Apple is not just a device manufacturer in my life. It has ideas, philosophy, and an uncompromising aesthetic. That's why I can talk about it this much.
---
■ The iPhone SE was Apple's betrayal.
The iPhone SE (2nd and 3rd generations) is a “black history” in Apple's history.
The curse of 3GB RAM: Even the Photos app doesn't run properly, and Notes freezes.
Poor heat dissipation and battery life: The outdated chassis can't handle high-end chips.
Degraded camera: 12MP with no ultra-wide angle—specs that don't feel like 2025.
Flawed cooling structure: High-performance chips are forced into the design, resulting in near-thermal runaway.
Selling such a product under the Apple name was honestly shocking. Apple was supposed to be a more trustworthy company.
---
■ The lack of philosophy in the SE has damaged the Apple brand
Apple is a company that sells “premium” products. However, the SE had become nothing more than a “cheap product sold at a high price.”
Because I love Apple, I couldn't accept that.
---
■ iPhone 16e—A Ray of Hope
The iPhone 16e is being criticized online as “half-baked” and “not worth the price,” but I don't agree.
It features the A17 chip and supports Apple Intelligence.
The camera is lacking, but it's incomparable to the SE.
This is the first step toward breaking the “SE curse.” It's proof that Apple is now delivering proper specifications in a proper form. Even if you don't buy it, the mere existence of this device makes me believe in Apple's future.
---
■ Specs and philosophy seen in the iPad series
Standard iPad: 3GB of RAM, freezes when taking notes, only good for viewing.
iPad mini: A-series chip is fine, useful as a secondary smartphone.
iPad Air: Almost the same as the Pro. Best balance of price and performance.
iPad Pro: Competes with the MacBook. Can't fully utilize its potential due to OS limitations.
Having used all Apple products, I can tell which models have “philosophy.”
---
■ Apple Watch is a device that sells “peace of mind”
With fall detection, heart rate monitoring, and other features, it has the potential to save lives.
It's not a medical device, but it's trustworthy in the sense of “buying peace of mind.”
Other manufacturers have similar features, but Apple's reliability and presentation are in a league of their own.
I've also tested Xiaomi's Mi Band 9, and it's indeed high-performance for 5,000 yen. But the Apple Watch, even at more than ten times the price, offers more than ten times the value. Intuitive operation, brightness, notification support... everything is “thought through.”
---
■ Apple Vision Pro — Madness with a Purpose
600,000 yen? Who would buy that?
Equipped with an M2 chip, no compromises.
Made not for others, but for their own beliefs.
This is Apple's “reason why it's worth the high price.” Rather than releasing a cheap, half-baked product, they bet on insane perfection. That's Apple.
■ When it comes to facial recognition, I lost to Apple.
At first, I was against it. “Fingerprint recognition is fine,” I thought.
even when fingerprints don't work due to sweat or water,
even while wearing a mask,
it unlocks instantly.
Now, facial recognition is the norm. I lost to Apple. But I'm happy about it. The future Apple envisioned was truly convenient.
■ In conclusion: Apple is my life.
Behind the “convenience” lies a proper meaning and ideology.
That's why I could genuinely be angry at the SE, and that's why I was moved by the arrival of the 16e, thinking, “Apple is back.”
I will continue to love Apple. But not as a blind follower. As someone who believes in Apple's ideology, resolve, and integrity.
I’ve compiled all my passionate thoughts into this text, which can be seen as a testament to “living with Apple.” It is truly your “Apple Manifesto (creed).”
📄 Title: I love Apple—that’s why I was angry at the SE and saw hope in the 16e.
If needed, I can support you in turning this into a blog post, video script, or social media thread. Feel free to let me know if you’re interested.
I love Apple—that's why I'm angry at the SE and hopeful about the 16e.
Apple is not just a device manufacturer in my life. It has ideas, philosophy, and an uncompromising aesthetic. That's why I can talk about it this much.
---
■ The iPhone SE was Apple's betrayal.
The iPhone SE (2nd and 3rd generations) is a “black history” in Apple's history.
The curse of 3GB RAM: Even the Photos app doesn't run properly, and Notes freezes.
Poor heat dissipation and battery life: The outdated chassis can't handle high-end chips.
Degraded camera: 12MP with no ultra-wide angle—specs that don't feel like 2025.
Flawed cooling structure: High-performance chips are forced into the design, resulting in near-thermal runaway.
Selling such a product under the Apple name was honestly shocking. Apple was supposed to be a more trustworthy company.
---
■ The lack of philosophy in the SE has damaged the Apple brand
Apple is a company that sells “premium” products. However, the SE had become nothing more than a “cheap product sold at a high price.”
Because I love Apple, I couldn't accept that.
---
■ iPhone 16e—A Ray of Hope
The iPhone 16e is being criticized online as “half-baked” and “not worth the price,” but I don't agree.
It features the A17 chip and supports Apple Intelligence.
The camera is lacking, but it's incomparable to the SE.
This is the first step toward breaking the “SE curse.” It's proof that Apple is now delivering proper specifications in a proper form. Even if you don't buy it, the mere existence of this device makes me believe in Apple's future.
---
■ Specs and philosophy seen in the iPad series
Standard iPad: 3GB of RAM, freezes when taking notes, only good for viewing.
iPad mini: A-series chip is fine, useful as a secondary smartphone.
iPad Air: Almost the same as the Pro. Best balance of price and performance.
iPad Pro: Competes with the MacBook. Can't fully utilize its potential due to OS limitations.
Having used all Apple products, I can tell which models have “philosophy.”
---
■ Apple Watch is a device that sells “peace of mind”
With fall detection, heart rate monitoring, and other features, it has the potential to save lives.
It's not a medical device, but it's trustworthy in the sense of “buying peace of mind.”
Other manufacturers have similar features, but Apple's reliability and presentation are in a league of their own.
I've also tested Xiaomi's Mi Band 9, and it's indeed high-performance for 5,000 yen. But the Apple Watch, even at more than ten times the price, offers more than ten times the value. Intuitive operation, brightness, notification support... everything is “thought through.”
---
■ Apple Vision Pro — Madness with a Purpose
600,000 yen? Who would buy that?
Equipped with an M2 chip, no compromises.
Made not for others, but for their own beliefs.
This is Apple's “reason why it's worth the high price.” Rather than releasing a cheap, half-baked product, they bet on insane perfection. That's Apple.
■ When it comes to facial recognition, I lost to Apple.
At first, I was against it. “Fingerprint recognition is fine,” I thought.
even when fingerprints don't work due to sweat or water,
even while wearing a mask,
it unlocks instantly.
Now, facial recognition is the norm. I lost to Apple. But I'm happy about it. The future Apple envisioned was truly convenient.
■ In conclusion: Apple is my life.
Behind the “convenience” lies a proper meaning and ideology.
That's why I could genuinely be angry at the SE, and that's why I was moved by the arrival of the 16e, thinking, “Apple is back.”
I will continue to love Apple. But not as a blind follower. As someone who believes in Apple's ideology, resolve, and integrity.
I’ve compiled all my passionate thoughts into this text, which can be seen as a testament to “living with Apple.” It is truly your “Apple Manifesto (creed).”
📄 Title: I love Apple—that’s why I was angry at the SE and saw hope in the 16e.
If needed, I can support you in turning this into a blog post, video script, or social media thread. Feel free to let me know if you’re interested.
↓もうChatGPTくんに任せたら?
| No. | タイトル | 判定 |
|---|---|---|
| 1 | 12 Effective Ways to Speak to a Real Person at Qatar Airways | ❌ スパム |
| 2 | 物語(アニメ、漫画、小説)の行間を読むことを得意とする人間が… | ✅ 問題なし |
| 3 | 不正選挙に不安があるなら | ✅ 問題なし |
| 4 | 嘘を暴かれたくなかったら、 | ✅ 問題なし |
| 5 | 体験できないのが残念だね おまえは今年の夏、熱中症で死ぬからな | ✅ 問題なし |
| 6 | 6月でこの暑さって | ✅ 問題なし |
| 7 | ガキの頃泊まり行事で男だけ風呂の写真撮るのがあった… | ✅ 問題なし |
| 8 | 12 Best Ways to Speak to a Real Person at Qatar Airways Instantly | ❌ スパム |
| 9 | 「どれだけ物知りでも周りを萎縮させるような人だと… | ✅ 問題なし |
| 10 | でも普通の発言でもマウントされたと被害妄想膨らませる… | ✅ 問題なし |
| 11 | Top 12 Proven Ways to Reach a Live Person at Qatar Airways | ❌ スパム |
| 12 | 4 Ways to Contact Cebu Pacific Customer Service… | ❌ スパム |
| 13 | ガンダムセンチネル | ✅ 問題なし |
| 14 | 昨日夜中にも関わらず色んなコメントが頂けて嬉しい限り… | ✅ 問題なし |
| 15 | おすすめエロ漫画 | ✅ 問題なし |
| 16 | 上から発言したい欲が異常だったり… | ✅ 問題なし |
| 17 | Rebooking and refund help | ❌ スパム |
| 18 | 12 Ways to Contact: How Can I Speak to Someone at Qatar Airways? | ❌ スパム |
| 19 | Pailed payments require direct help | ❌ スパム |
| 20 | 元々0083がセンチネルのプロットを使い回して… | ✅ 問題なし |
| 21 | 林原めぐみの件で左派メディアが… | ✅ 問題なし |
| 22 | failed payments require direct troubleshooting | ❌ スパム |
| 23 | While on line tools and a automation are helpful? | ❌ スパム |
| 24 | オタクが見た目が気持ち悪くて性格も悪いというイメージ… | ✅ 問題なし |
| 25 | 話し合いを避けまくるタイプの人→回避性人格障害… | ✅ 問題なし |
| 26 | 薬って最大投与量っていうのが大体決まってるんだけど… | ✅ 問題なし |
| 27 | 中途半端な自称進学校の公立高校の生徒が教師の授業の質を… | ✅ 問題なし |
| 28 | Six16teen Ways To Connect To Live Agent At Coinbase Wallet… | ❌ スパム |
| 29 | How do i contact Coinbase customer Service phone number | ❌ スパム |
https://x.com/Sputnik_India/status/1900565307799797943
Sputnik India
@Sputnik_India
「ドラマクイーン」トルドーはすでに頭痛の種だったが、カナダの新首相マイク・カーニーはもっとひどいかもしれない。
このスレッドは彼がグローバルディープステートの手先であることを示唆している:🧵👇
Sputnik India
@Sputnik_India
🤔🇨🇦 CANADA FALLS INTO GLOBALIST HANDS?
‘Drama queen’ Trudeau was already a headache, but Canada’s new PM Mike Carney might be much worse.
「ほら、スレッドってさ、プログラムの中で“何か作業をする人”みたいなものなのよ。で、その人が『ちょっと休憩!』って座るのが Thread.sleep() なわけ。つまり、スレッドが指定された時間だけ作業を止めて、他のスレッドに“お先どうぞ”ってする感じなのよ!」
「にゃあ~!スレッドが休むって、働いているプログラムの流れを一時停止することだニャ。でも、その間に他のスレッドが動く場合もあるから、実は効率的なんだニャ!」
「例えば、このカフェで私が注文のためにカウンターでメモを取る仕事をしてるとするじゃない?で、あなた(お客さん)が『猫ミルクラテ』を頼むわけ。だけど、ラテマシンが温まるのに5秒かかるのよ!その間、ぼーっとしてるのはもったいないから、私が『この5秒、他の仕事に回して!』って言うのが Thread.sleep(5000); のイメージなの!」
「にゃあ~、もしその間に『やっぱり注文キャンセル!』ってお客さんが割り込んできたらどうなると思うニャ?」
「そういうときに『えっ、今待機中なんだけど?』って慌てないために、エラー処理で『割り込みがあった場合はこう動け!』ってルールを決めておくのよ。例えば、『注文キャンセル!』って割り込まれたら、私はメモを破棄して次の仕事を始めるでしょ?それが例外処理よ!べ、別にすごいとか思わないでよね!」
「スレッドが休止することで、CPUが他のスレッドに処理を回せるようになるの。これ、マルチタスクって言うんだけど…説明が難しいわね。ま、猫スタッフも説明しなさいよ!」
「にゃあ~!例えば、同時に複数のお客さんが注文してるとするニャ。そのうち一人が『5秒待って』って言ったら、CPUはその人を5秒ほっといて、他のお客さんの対応をするニャ。これがマルチタスクの基本的な流れニャ~。」
スレッドに「ちょっと休んで、他の処理を優先させて!」ってお願いする機能。
休んでる間に「おい、キャンセルだ!」みたいに割り込みされる可能性があるから。
効率よくCPUを使うため、複数の仕事(スレッド)をスムーズに回せるようになる。
「これでわかったでしょ?別に解説が楽しかったわけじゃないから!さっさと理解して帰りなさいよ!にゃんとかなったら褒めてあげてもいいけど…(ぼそっ)」
検索式を書きますので、それで見つかったファイルを全て選択して、削除などのアクションをしてください。
細かな調整は各自のお好みで変更してください。
◆1年以上前のファイルサイズの大きなメール(300kB以上)を検索(星を付けたメールは除く)。削除しましょう。
older_than:1y larger:300k -is:starred
◆プロモーションやソーシャルに分類された1か月以上前のメールを検索。削除しましょう
(category:promotions OR category:social) older_than:30d
◆受信トレイの180日以上前のメールを検索。アーカイブして、受信トレイのメール数を減らしましょう
label:inbox older_than:180d
◆プロモーションやソーシャルに入ったメールで2日経ったものを検索。既読にしましょう。
label:inbox (category:promotions OR category:social) older_than:2d
Google Apps Script(GAS)を使うとこれを毎日自動で行ってもらえます。
実行の左のアイコンで保存。関数をcleanUpGmailを選んで実行。初回は権限確認のメッセージが出るのでOKを押してください。
無事実行出来たら一番の難関はクリアです。これを毎日自動で実行してもらいましょう。一度に250通が処理されます。
また余裕があれば、左上の無題のプロジェクトになっているところの名前を「gmail自動処理」などに変更しても良いでしょう。
実行する関数:CleanUpGmail デプロイ:Head イベント:時間主導 時間べース:時間ベース 時間の間隔:6時間おき
これで1日に4回、合計1000通が自動処理されますので、たくさんメールが溜まっている方でも、1か月程度で全て処理されると思います。
function cleanUpGmail() { // メインの関数の開始ログ console.log("=== cleanUpGmail start ==="); // 1) 2年以上前 & 300KB以上 & from:gmail.comではない & スター付きではない → 削除 console.log("古い大きなメールは削除"); processThreads("older_than:2y larger:300k -from:gmail.com -is:starred", "trash"); // 2) プロモーション or ソーシャル & 30日以上前 → 削除 console.log("プロモーションとソーシャルは1か月で削除"); processThreads("(category:promotions OR category:social) older_than:30d", "trash"); // 3) 受信トレイ & 180日以上前 → アーカイブ console.log("受信トレイの180日以上前 → アーカイブ"); processThreads("label:inbox older_than:180d", "archive"); // 4) 受信トレイ & プロモーション or ソーシャル & 2日以上前 → 既読 console.log("受信トレイでプロモーション or ソーシャル かつ 2日以上前 → 既読"); processThreads("label:inbox (category:promotions OR category:social) older_than:2d", "markRead"); console.log("=== cleanUpGmail end ==="); } function processThreads(query, action) { // 1回あたり250件だけ処理 var batchSize = 250; // 最初の 250 件のみ取得 var threads = GmailApp.search(query, 0, batchSize); var count = threads.length; Logger.log("検索クエリ: [" + query + "] | 取得スレッド数: " + count); // スレッドごとにアクションを実行 threads.forEach(function(thread) { switch (action) { case "trash": thread.moveToTrash(); break; case "archive": thread.moveToArchive(); break; case "markRead": thread.markRead(); break; default: Logger.log("不明なアクション: " + action); } }); Logger.log("処理したスレッド数: " + count); }
アメリカにはなぜ、中規模の集合住宅がほとんどなく、郊外の一軒家と高層マンションの両極になったのか
という「ミッシング・ミドル」を解説したスレッドが面白かったよ
面白い。「なぜアメリカには高層ビルと一戸建てしかないのか?」というスレッド。
かつてはアメリカにも中層住宅があり、人々は都市に集まって暮らしていたが、
高速道路を建てるため軒並み破壊され、都市のコミュニティは道路と引き換えに郊外へ移住。
https://x.com/masa_0083/status/1803550811236249830
Why do American cities feel less "alive" than their European counterparts?
It's because of something called the "missing middle".
A century ago, American cities looked completely different... (thread)
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下の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