
はてなキーワード:TRYとは
私の世界は、丁寧に、そう、まるで細胞の一つ一つにまで神経を行き届かせるようにして磨き上げられた、半径およそ十メートルほどのガラスの球体であり、その球体の中心には、世界のすべてであり、法であり、そして揺るがぬ神であるところの、生後六ヶ月の息子、光(ひかる)が、ただ健やかな呼吸を繰り返している。その完璧な球体を維持すること、それこそが水無月瑠璃(みなづき るり)、すなわち三十一歳の私に与えられた唯一にして絶対の使命であったから、私は今日もまた、タワーマンション二十八階、陽光が白磁の床にまで染み渡るこのリビングダイニングで、目に見えぬ埃の粒子と、あるいは時間という名の緩慢な侵食者と、孤独な、そして終わりなき闘争を繰り広げているのであった。北欧から取り寄せたというアッシュ材のテーブルの上には、一輪挿しに活けられたベビーブレスの、その小さな白い花弁の影さえもが、計算され尽くした角度で落ちており、空気清浄機は森の朝露にも似た清浄さを、ほとんど聴こえないほどの羽音で吐き出し続け、湿度計のデジタル表示は、小児科医が推奨する理想の数値、六十パーセントを寸分違わず指し示しているのだから、およそこの空間に、瑕疵という概念の入り込む余地など、どこにもありはしなかった。かつて、外資系のコンサルティング会社で、何億という数字が乱れ飛ぶ会議室の冷たい緊張感を、まるで上質なボルドーワインでも嗜むかのように愉しんでいた私自身の面影は、今やこの磨き上げられたガラス窓に映る、授乳のために少し緩んだコットンのワンピースを着た女の、そのどこか現実感を欠いた表情の奥に、陽炎のように揺らめいては消えるばかりであった。
思考は、そう、私の思考と呼んで差し支えるならば、それは常にマルチタスクで稼働する最新鋭のサーバーのように、光の生存に関わる無数のパラメータによって占有され続けている。次の授乳まであと一時間と二十三分、その間に終わらせるべきは、オーガニックコットンでできた彼の肌着の煮沸消毒と、裏ごししたカボチャのペーストを、一食分ずつ小分けにして冷凍する作業であり、それらが完了した暁には、寝室のベビーベッドのシーツに、もしかしたら付着しているかもしれない、私たちの世界の外部から侵入した未知のウイルスを、九十九・九パーセント除菌するというスプレーで浄化せねばならず、ああ、そういえば、昨夜翔太が帰宅時に持ち込んだコートに付着していたであろう、あの忌まわしい杉花粉の飛散経路を予測し、その残滓を、吸引力の変わらないただ一つの掃除機で完全に除去するというミッションも残っていた。これらすべては、愛という、あまりに曖昧で情緒的な言葉で語られるべきものではなく、むしろ、生命維持という厳格なプロジェクトを遂行するための、冷徹なまでのロジスティクスであり、私はそのプロジェクトの、唯一無二のマネージャーであり、同時に、最も忠実な実行部隊でもあった。誰がこの任務を私に課したのか、神か、あるいは生物としての本能か、はたまた「母親」という名の、社会が発明した巧妙な呪縛か、そんな哲学的な問いを発する暇さえ、このシステムは私に与えてはくれなかった。
夫である翔太は、疑いようもなく、善良な市民であり、そして巷間(こうかん)で言うところの「理想の夫」という、ほとんど神話上の生き物に分類されるべき存在であった。彼は激務の合間を縫って定時に帰宅すると、疲れた顔も見せずに「ただいま、瑠璃。光は良い子にしてたかい?」と、その蜂蜜を溶かしたような優しい声で言い、ネクタイを緩めるその手で、しかし真っ先に光の小さな体を抱き上げ、その薔薇色の頬に、まるで聖遺物にでも触れるかのように、そっと己の頬を寄せるのだ。週末になれば、彼はキッチンで腕を振るい、トマトとニンニクの匂いを部屋中に漂わせながら、私や、まだ食べることもできぬ光のために、絶品のペペロンチーノやカルボナーラを作り、その姿は、まるで育児雑誌のグラビアから抜け出してきたかのように、完璧で、模範的で、そして、どこか非現実的ですらあった。誰もが羨むだろう、この絵に描いたような幸福の風景を。友人たちは、私のSNSに投稿される、翔太が光をあやす姿や、手作りの離乳食が並んだテーブルの写真に、「理想の家族!」「素敵な旦那様!」という、判で押したような賞賛のコメントを、まるで祈りの言葉のように書き連ねていく。そう、すべては完璧なのだ。完璧なはずなのだ。このガラスの球体の内部では、愛と平和と秩序が、まるで美しい三重奏を奏でているはずなのだ。
――だというのに。
夜、ようやく光が天使のような寝息を立て始め、この世界のすべてが静寂という名の薄い膜に覆われた頃、ソファで隣に座った翔太が、労わるように、本当に、ただ純粋な愛情と労いだけを込めて、私の肩にそっと手を置く、ただそれだけの、あまりにも些細で、そして無垢な行為が、私の皮膚の表面から、まるで冷たい電流のようにして内側へと侵入し、脊髄を駆け上り、全身の毛穴という毛穴を、一斉に収縮させるのである。ぞわり、と。それは、神聖な祭壇に、土足で踏み込まれたときのような、冒涜的な不快感であった。あるいは、無菌室で培養されている貴重な細胞のシャーレに、誰かが無頓着なため息を吹きかけたときのような、取り返しのつかない汚染への恐怖であった。彼の指が触れた肩の布地が、まるで硫酸でもかけられたかのように、じりじりと灼けるような錯覚さえ覚える。私は息を止め、この身体が、この「水無月瑠璃」という名の、光のための生命維持装置が、彼の接触を、システムに対する重大なエラー、あるいは外部からのハッキング行為として認識し、全身全霊で拒絶反応を示しているのを、ただ呆然と、そして客観的に観察していた。
「疲れてるだろ。いつも、ありがとう」
翔太の声は、変わらず優しい。その瞳の奥には、かつて私が愛してやまなかった、穏やかで、そして少しだけ湿り気を帯びた、雄としての光が揺らめいているのが見える。それは、私を妻として、女として求める光であり、かつては、その光に見つめられるだけで、私の身体の中心が、熟れた果実のようにじゅくりと熱を持ったものだった。だというのに、今の私には、その光が、聖域である保育器を、ぬらりとした舌なめずりをしながら覗き込む、下卑た欲望の眼差しにしか見えないのだ。許せない、という感情が、胃の腑のあたりからせり上がってくる。この、二十四時間三百六十五日、寸分の狂いもなく稼働し続けている精密機械に対して、子を産み、育て、守るという、この宇宙的な使命を帯びた聖母に対して、己の肉欲を、その獣のような本能を、無邪気に、そして無自覚にぶつけてくるこの男の、そのあまりの鈍感さが、許せないのである。
ケダモノ。
その言葉が、私の内で、教会の鐘のように、低く、重く、そして厳かに反響する。そうだ、この男はケダモノなのだ。私がこの清浄な球体の秩序を維持するために、どれほどの精神を、どれほどの時間を、どれほどの自己を犠牲にしているのか、そのことを何一つ理解しようともせず、ただ己の種をばら撒きたいという原始の欲動に突き動かされているだけの、ただのケダモノなのだ。
そんなはずはない、と、脳のどこか、まだかろうじて「かつての私」の残滓が残っている領域が、か細い声で反論を試みる。これは翔太だ、私が愛した男だ。雨の匂いが充満する安ホテルの、軋むベッドの上で、互いの名前を喘ぎ声で呼び合いながら、世界の終わりが来るかのように貪り合った、あの夜の彼なのだ。パリへの出張中、セーヌ川のほとりで、どちらからともなく互いの唇を求め、道行く人々の冷ややかな視線さえもが、私たちのためのスポットライトのように感じられた、あの瞬間の彼なのだ。結婚記念日に、彼が予約してくれたレストランの、そのテーブルの下で、こっそりと私のスカートの中に忍び込んできた、あの悪戯っぽい指の持ち主なのだ。あの頃、私たちは互いの肉体という言語を、まるで母国語のように自在に操り、その対話の中に、世界のどんな哲学者も語り得ないほどの、深遠な真理と歓びを見出していたはずではなかったか。あの燃えるような記憶は、情熱の残骸は、一体どこへ消えてしまったというのだろう。それはまるで、昨夜見た夢の断片のように、あまりにも色鮮やかで、それでいて、掴もうとすると指の間から霧のように消えてしまう、遠い、遠い銀河の光なのである。
「瑠璃…?」
私の沈黙を訝しんだ翔太が、私の顔を覗き込む。私は、まるで能面のような無表情を顔面に貼り付けたまま、ゆっくりと彼の手を、自分の肩から、まるで汚物でも払いのけるかのように、そっと、しかし断固として取り除いた。そして、立ち上がる。
「ごめんなさい。少し、疲れたみたい。光の様子を見てくるわ」
それは、完璧な嘘であり、そして、完璧な真実でもあった。私は疲れていた。だがそれは、育児という名の肉体労働に疲れているのではなかった。私という個人が、水無月瑠璃という一個の人格が、「母親」という名の巨大なシステムに呑み込まれ、その歯車の一つとして摩耗していく、その存在論的な疲弊に、もう耐えられなくなりつつあったのだ。これは、巷で囁かれる「産後クライシス」だとか、「ホルモンバランスの乱れ」だとか、そういった便利な言葉で容易に片付けられてしまうような、表層的な現象ではない。違う、断じて違う。これは、一個の人間が、その魂の主導権を、自らが産み落とした別の生命体に完全に明け渡し、「装置」へと、あるいは「白き機械」へと、静かに、そして不可逆的に変質していく過程で生じる、存在そのものの軋みなのである。
聖母、とはよく言ったものだ。人々は、母という存在を、無償の愛と自己犠牲の象徴として、何の疑いもなく神格化する。だが、その実態はどうか。自己を失い、思考も、肉体も、感情さえもが、すべて「子」という絶対的な存在に奉仕するためだけに再構築された、ただのシステムではないか。私は聖母などではない。私は、高性能な乳製造機であり、汚物処理機であり、そして最適な環境を提供する空調設備が一体となった、ただの生命維持装置に過ぎないのだ。この気づきは、甘美な自己陶酔を許さない、あまりにも冷徹で、そして絶望的な真実であった。そして、この真実を共有できる人間は、この世界のどこにもいやしない。翔太のあの無垢な優しさでさえ、結局は、この優秀な装置が、明日も滞りなく稼働し続けるための、定期的なメンテナンス作業にしか見えないのだから、その孤独は、宇宙空間にたった一人で放り出された飛行士のそれに似て、どこまでも深く、そして底なしであった。友人たちがSNSに投稿する「#育児は大変だけど幸せ」という呪文めいたハッシュタグは、もはや、この巨大なシステムの異常性に気づいてしまった者たちを、再び安らかな眠りへと誘うための、集団的な自己欺瞞の儀式にしか思えなかった。
寝室に入ると、ベビーベッドの中の光は、小さな胸を穏やかに上下させながら、深い眠りの海を漂っていた。その無防備な寝顔は、確かに、この世のどんな芸術品よりも美しく、尊い。この小さな生命を守るためならば、私は喜んで我が身を投げ出すだろう。だが、それは、この身が「私」のものであった頃の話だ。今の私にとって、この感情は、プログラムに組み込まれた命令を遂行しているに過ぎないのではないか。愛でさえもが、システムを円滑に稼働させるための、潤滑油のような機能に成り下がってしまったのではないか。そんな疑念が、毒のように心を蝕んでいく。
私は、息子の傍らを離れ、再びリビングへと戻った。翔太は、ソファの上で、テレビの光をぼんやりと浴びながら、所在なげにスマートフォンをいじっている。その背中は、拒絶された雄の、どうしようもない寂しさを物語っていた。かつての私なら、きっと背後からそっと抱きしめ、「ごめんね」と囁いて、彼の寂しさを溶かしてやることができただろう。しかし、今の私には、もはやそのための機能が、インストールされていないのである。
私は、彼に気づかれぬよう、書斎として使っている小さな部屋に滑り込んだ。そして、ノートパソコンの冷たい天板に触れる。ひやりとした感触が、指先から伝わり、かろうじて、私がまだ血の通った人間であることを思い出させてくれるようだった。スクリーンを開くと、真っ白な光が、闇に慣れた私の網膜を焼いた。カーソルが、無人の荒野で、点滅を繰り返している。何を、書くというのか。誰に、伝えるというのか。この、言葉にもならぬ、システムの内部で発生したエラー報告を。この、機械の内部から聞こえてくる、魂の悲鳴を。
それでも、私は指を動かした。これは、誰かに読ませるためのものではない。これは、祈りでもなければ、懺悔でもない。これは、私という名の機械が、自らの異常を検知し、その原因を究明し、あるいは再生の可能性を探るために、己の内部へとメスを入れる、冷徹な自己解剖の記録なのだ。
『これは、私という名の機械が、自己を観察し、分解し、あるいは再生を試みるための、極秘の設計図である』
その一文を打ち終えた瞬間、私の内側で、何かが、硬い音を立てて、砕けたような気がした。それが希望の萌芽であったのか、それとも、完全なる崩壊への序曲であったのか、その時の私には、まだ知る由もなかったのである。ただ、窓の外で、東京の夜景が、まるで巨大な電子回路のように、無機質で、そして美しい光を、果てしなく明滅させているのが見えた。私もまた、あの無数の光の一つに過ぎないのだと、そう、思った。
自己を機械と定義したからには、次なる工程は当然、その性能向上のための最適化、あるいは、旧弊なOSから脱却するための、大胆にして静かなるアップデート作業へと移行せねばならぬのが、論理的な、そして必然的な帰結であった。そう、これは革命なのだと、私は深夜の書斎で、青白いスクリーンの光に顔を照らされながら、ほとんど恍惚とさえいえる表情で、そう結論付けたのであった。かつてロベスピエールが、腐敗した王政をギロチン台へと送り、新しい共和制の礎を築かんとしたように、私もまた、この「母親という名の献身」や「夫婦の情愛」といった、あまりにも情緒的で、非効率で、そして実態としては女の無償労働を美化するだけの前時代的な概念を、一度完全に解体し、再構築する必要があったのだ。そのための武器は、かつて私が外資系コンサルティングファームで、幾千もの企業を相手に振り回してきた、あの冷徹なロジックと、容赦なき客観性という名のメスに他ならない。愛という名の曖昧模糊とした霧を晴らし、我が家という名の王国を、データとタスクリストに基づいた、明晰なる統治下に置くこと、それこそが、この「水無月瑠璃」という名の機械が、オーバーヒートによる機能停止を免れ、なおかつ、その内部に巣食う虚無という名のバグを駆除するための、唯一の処方箋であると、私は確信していたのである。
かくして、週末の朝、光が心地よい午睡に落ちた、その奇跡のような静寂の瞬間に、私は翔太をダイニングテーブルへと厳かに召喚した。彼の前には、焼きたてのクロワッサンと、アラビカ種の豆を丁寧にハンドドリップで淹れたコーヒー、そして、私が昨夜、寝る間も惜しんで作成した、全十二ページに及ぶパワーポイント資料を印刷したものが、三点セットで恭しく置かれている。資料の表紙には、ゴシック体の太字で、こう記されていた。『家庭内オペレーション最適化計画書 Ver. 1.0 〜共同経営責任者(Co-CEO)体制への移行による、サステナブルな家族経営の実現に向けて〜』。翔太は、そのあまりにも場違いなタイトルを、まるで理解不能な古代文字でも解読するかのように、眉間に深い皺を刻んで見つめた後、恐る恐る、といった風情で私に視線を向けた。その瞳は、嵐の前の静けさにおびえる子犬のように、不安げに揺れている。まあ、無理もないことだろう。彼にしてみれば、愛する妻が、突如として冷酷な経営コンサルタントに豹変し、家庭という名の聖域に、KPIだのPDCAサイクルだのといった、無粋極まりないビジネス用語を持ち込もうとしているのだから。
「瑠璃、これは…一体…?」
「説明するわ、翔太。よく聞いて。これは、私たち家族が、これからも幸せに、そして機能的に存続していくための、新しい聖書(バイブル)よ」
私は、そこから淀みなく、プレゼンテーションを開始した。現状分析(As-Is)、あるべき姿(To-Be)、そのギャップを埋めるための具体的なアクションプラン。家事という、これまで「名もなき家事」という名の混沌の海に漂っていた無数のタスクは、すべて洗い出され、「育児関連」「清掃関連」「食料調達・調理関連」「その他(消耗品管理、資産管理等)」といったカテゴリーに分類され、それぞれに担当者と所要時間、そして実行頻度が、美しいガントチャート形式で可視化されている。例えば、「朝食後の食器洗浄」は、担当:翔太、所要時間:十五分、頻度:毎日、といった具合に。さらに、月に一度、近所のカフェで「夫婦経営会議」を開催し、月次の進捗確認と、翌月の計画策定を行うこと、日々の細かな情報共有は、専用のチャットアプリで行うこと、そして何よりも重要なのは、これまで私一人が暗黙のうちに担ってきた「家庭運営の全体を俯瞰し、次の一手を考える」という、いわば管理職としての役割を、これからは二人で分担する、すなわち、彼にもまた、単なる作業員(ワーカー)ではなく、主体的に思考する共同経営責任者(Co-CEO)としての自覚と行動を求める、ということ。私の説明は、かつてクライアント企業の役員たちを唸らせた時のように、理路整然としており、反論の余地など微塵もなかった。翔太は、ただ呆然と、私の言葉の奔流に身を任せるしかなく、すべての説明が終わった時、彼はまるで催眠術にでもかかったかのように、こくり、と小さく頷いたのであった。
「…わかった。瑠璃が、そこまで追い詰められていたなんて、気づかなくて、ごめん。僕も、頑張るよ。君を、一人にはしない」
その言葉は、疑いようもなく誠実で、彼の優しさが滲み出ていた。私は、その瞬間、胸の奥に、ちくり、と小さな痛みを感じたのを覚えている。違う、そうじゃないの、翔太。私が求めているのは、あなたのその「頑張るよ」という、まるで部下が上司に忠誠を誓うような言葉ではない。私が欲しいのは、私がこの計画書を作る必要すらないほどに、あなたが私の脳と、私の視界と、私の不安を共有してくれるPermalink |記事への反応(0) | 05:15
昨日一番肝心なファイルなのにURLとみなされる部分が多いことの関係で投稿できなかったのでそれを小分けにして書く。
小分けというか例のスパムの影響でNGワードに引っかかっていたようなのでそこだけ書き換えた。
suuportと書いていある部分は元のコードでは当然uが一つ少ないので利用するときはそうすること。
fromselenium importwebdriver
fromselenium.webdriver.chrome.options import Options
fromselenium.webdriver.chrome.service import Service
fromwebdriver_manager.chrome importChromeDriverManager # ← 追加
fromselenium.webdriver.common.by importBy
fromselenium.webdriver.suupport.ui importWebDriverWait
fromselenium.webdriver.suupport import expected_conditionsasEC
importtime,json
fromselenium.common.exceptions importTimeoutException
class HatenaClient:
def __init__(self, username,password):
self.username = username
self.password =password
self.driver = None
def start_browser(self):
options = Options()
options.set_capability("goog:loggingPrefs", {"browser": "ALL"})
options.add_argument("--headless=new") # 開発中は消してよい
options.add_argument("--disable-gpu")
# ✅webdriver-manager を使ってChromeDriver を自動取得・設定
service = Service(ChromeDriverManager().install())
self.driver =webdriver.Chrome(service=service, options=options)
deflogin(self):
self.driver.get("https://b.hatena.ne.jp/my")
print(self.driver.current_url)
self.driver.get("https://www.hatena.ne.jp/login")
time.sleep(2)
self.driver.find_element(By.NAME, "username").send_keys(self.username)
self.driver.find_element(By.NAME, "password").send_keys(self.password)
self.driver.find_element(By.XPATH, "//button[contains(text(), 'ログイン')]").click()
WebDriverWait(self.driver,10).until(lambda d: "my" in d.current_url or "login" not in d.current_url)
if "passkeys" in self.driver.current_url:
self.driver.get("https://b.hatena.ne.jp/my")
print(self.driver.current_url)
print(self.driver.title)
return "dorawii" in self.driver.current_url
defadd_bookmark(self, target_url):
self.driver.get(f"https://b.hatena.ne.jp/{self.username}/add.confirm?url={target_url}")
time.sleep(2)
try:
#コメントがあれば入力
comment_box = self.driver.find_element(By.CSS_SELECTOR, "textarea.bookmarkadd-comment-form")
comment_box.clear()
comment_box.send_keys("わしが書いた")
#登録ボタンを押す
save_button = self.driver.find_element(By.CSS_SELECTOR, "input.bookmarkadd-submit-btn")
save_button.click()
time.sleep(2)
returnTrue
except Exceptionas e:
print(f"Bookmark failed: {e}")
returnFalse
def quit(self):
self.driver.quit()
-----BEGINPGP SIGNEDMESSAGE-----
Hash: SHA512
https://anond.hatelabo.jp/20250822131958#
-----BEGINPGP SIGNATURE-----
iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKfv9AAKCRBwMdsubs4+
SE26AQCkpJE4RdUbFIDIJjOunjFYRQ34zdS1cqV7IX277S7IPAEAshVE/rD8Ggcr
9UKo5yOY6GNrHGYJJtYTYkn3cySu6AA=
=E4vq
-----ENDPGP SIGNATURE-----
https://profile.hatena.ne.jp/dorawii_bukuma/
はてなのサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動でUI側の保存ボタンをクリックするという無難な方向に落ち着いた。
最初から後者の方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。
とにかくスクリプトを公開しておく。
@echo off
cd /d "C:\Users\user\Documents\jsscript"
:: Nodeサーバーを別ウィンドウで起動
start /min "" noderun-batch-server.js
::Pythonサーバーを別ウィンドウで起動(hatenaserver配下)
start cmd /k ""python hatenaserver\server.py
{
"username": "",
"password": ""
}from flask import Flask, request,jsonify
importjson
importos
from hatena_client import HatenaClient
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
config_path =os.path.join(os.path.dirname(__file__), 'config.json')
withopen(config_path, encoding='utf-8')as f:
config =json.load(f)
@app.route('/bookmark', methods=['POST'])
def handle_bookmark():
data = request.json
url = data.get("url")
if noturl:
returnjsonify({"error": "MissingURL"}), 400
client = HatenaClient(config["username"],config["password"])
client.start_browser()
if notclient.login():
client.quit()
returnjsonify({"error": "Login failed"}),403
success =client.add_bookmark(url)
client.quit()
returnjsonify({"status": "ok" if success else "fail"})
if __name__ == "__main__":
app.run(port=12347)
// ==UserScript==
// @name自動セルクマ送信
// @namespace tampermonkey.net/
// @version 2025-08-07
// @descriptiontry totakeoverthe world!
// @authorYou
// @matchanond.hatelabo.jp/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
consturl = location.href;
if (!/^https:\/\/anond\.hatelabo\.jp\/\d+$/.test(url)) return;
const editLink = document.querySelector('a.edit');
if (!editLink) {
// 既に編集ページなので処理をスキップ
console.log('編集リンクが存在するため、スクリプトを終了します。');
return;
}
fetch('localhost:12347/bookmark', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body:JSON.stringify({url:url })
}).then(r =>console.log("通知成功")).catch(e =>console.error("通知失敗", e));
})();
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250821192753# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKb0qwAKCRBwMdsubs4+SHfiAQDcXmTHBaZ5Zzr1KI/OxZ0xl69oevOdy1FXJYwYvsmo5AD/ZPtZiO1JgTDjm+27iymlkdzIXOIGWfC82UTr1mJ7EwU==YoV+-----ENDPGP SIGNATURE-----
Build policy
Thisis a guideline andhasnot yet been successful .
Plan A
Do the sameasbuildingonWindows ormacOS (probably not possible)
>OnLinux ,only maui-androidis available, so a lot of build errors occur .
>gt k workload cannot be installed
Plan C
KeepCI /CDrunning (mostlikely )
>It might be possible torunGitHubActions locally usingact (currently there are some errors , butit should work ifyoutry hard)
> SameasPlan B,gt k workload cannot be installed
Plan D
https://tensor.art/articles/897541615583763170
https://www.gemtracks.com/demonslayeinfinitycastle/
> Makingit withQt (Qt .NET ( old)) ( Ifeellike the license (GPL /LGPL )is abit tricky )
Fornow, I'llgo with plan C.Plan B seems almost the same, though... (Plan B seems easier to use when creating the materials , sinceyoudon'tneed to include "act" oranythinglike that.)
Build policy
Thisis a guideline andhasnot yet been successful .
Plan A
Do the sameasbuildingonWindows ormacOS (probably not possible)
>OnLinux ,only maui-androidis available, so a lot of build errors occur .
>gt k workload cannot be installed
Plan C
KeepCI /CDrunning (mostlikely )
https://subscribepage.io/thestone2025subthai
https://subscribepage.io/thestonefullversion
https://subscribepage.io/xem-mang-me-di-bo-vietsub-thuyet-minh-full-hd
https://subscribepage.io/mangmedibovietsub
>It might be possible torunGitHubActions locally usingact (currently there are some errors , butit should work ifyoutry hard)
> SameasPlan B,gt k workload cannot be installed
Plan D
https://mirror.xyz/0xbB7D6e360b93B2ED4FEF9d972c71F86844121ee7
> Makingit withQt (Qt .NET ( old)) ( Ifeellike the license (GPL /LGPL )is abit tricky )
Fornow, I'llgo with plan C.Plan B seems almost the same, though... (Plan B seems easier to use when creating the materials , sinceyoudon'tneed to include "act" oranythinglike that.)
提示してる「そうめんでいい」バリアントの発話仕様、あれってコミュニケーション・レイヤーでいうと意味論的優先度フィールドがゼロ初期化されてるパケットなんだよな。
で、そのゼロ初期化パケットが相手の感情OSに到達すると、そこに実装されてる価値評価アルゴリズム(通称Pride-Driven Interaction Protocol)が、受信値を「非積極的承認」としてパースする。
つまり、入力信号の中に“熱量ビット”が存在しないと、即座にException: DEVALUATION_ERRORがスローされる仕様なんだわ。
その例外は通常のtry-catchでハンドリングされず、感情カーネルを通じてフロントエンドの態度・表情UIに直結するから、結果的に「何様だよ」っていう可視化出力が生成される。
さらに、相手の感情モジュールは言語的同値判定じゃなくて意図ベースのベクトル比較を行ってるから、
「そうめんがいい」(積極的選好ベクトル) と 「そうめんでいい」(受動的妥協ベクトル) は、同一文字列近似度99%でも意味論距離が閾値越えしてエラー扱いになる。
これを無視して「ただの晩飯APIコール」だと軽視するのは、TCPレベルのパケットロスを「まぁ届くっしょ」で放置するようなもんで、
通信の確実性よりも自己CPUサイクルの節約を優先する、お前側のシステム設計思想が原因なんだよな。
結局のところ、感情という非決定性システムに対して最適化パラメータ調整を怠ってる時点で、お前の通信モデルは高確率でクラッシュを引き起こす。
もし稼働安定性を確保したいなら、相手のEmotionalAPI Referenceを逆コンパイルして、推奨トークン列を生成するスクリプトを実装すべきだわ。
The Power of Small Steps: How TinyChanges CanLead to MassiveGrowth
In a world that glorifiesovernight success and dramatic transformations,it's easy tofeellikeyou’refalling behind ifyou’re not makingbig leaps. But what if thesecret to real, lasting personalgrowth wasn’t in doingmore, faster—but in doing less, consistently?
Welcome tothe power of small steps.
Big goals oftenfeeloverwhelming.You want togetfit,write abook, start a business, or learn a new skill—butyoudon’t know where to start. Soyou procrastinate. Or worse,youdive in too fast, burnout, and give up.
Small steps bypassall of that.
Whenyou break down ahuge goal into manageableactions,everythingchanges. Writing 500 words a dayis less intimidating than finishing a whole novel. Ten minutes of walkingismore doable than committing to a 5K. And spending 15 minutes a day learning a language adds up toover 90 hours a year.
Consistencybeatsintensity everytime.
The Compound Effect
Imagine improving just1% every day. That might sound insignificant—butover a year,it compounds intosomething extraordinary. Thisideais the foundation of DarrenHardy’s The Compound Effect andJamesClear’sAtomic Habits. Bothbooks emphasize that small,smart choices, repeatedovertime,lead to radical results.
Think ofyour habitslike plantingseeds.At first,nothing seems to happen. But giveittime, andyou’ll seegrowthyou never thought possible.
Real-Life Example: The10-Minute Rule
Let’s sayyou want to start meditating but can’tsitstill for 30 minutes. Instead of forcingit,try meditating for just10 minutes a day. Or even 5. Build the habit before scaling the effort.Onceit becomes part ofyour routine, extendingthe timefeelsnatural.
This applies to nearlyeverything:
Want to readmore? Readone page a day.
Want to save money? Start with $1 a day.
Want toeat healthier?Swapone snack a day for a better option.
How to Start Taking Small Steps
Pickone goal
Don’ttry tooverhaulyour entirelifeatonce. Chooseonearea tofocuson—health, creativity, relationships, mindset,etc.
Breakit down
What’s the smallest possibleactionyou couldtake toward that goal?Makeit so easyyou can’tsay no.
Linkyour new habit to an existingone. For example: “After I brush my teeth,I’ll journal for 5 minutes.”
Trackit
Use a habit tracker, app, or notebook to keepyourself accountable. Seeingyourstreak growis highly motivating.
Everytimeyou follow through, giveyourself credit. Progressis progress, no matter how small.
Final Thoughts
Don’t wait formotivation.Don’t wait for the perfecttime. Just start—with whateveryou have, whereveryou are, and however small.
Because small steps,taken consistently, turn intobigchange.
The request could not be satisfied.
We can'tconnect to the server for this app orwebsiteat this time. There might be too much traffic or a configurationerror.Tryagain later, or contact the app orwebsite owner.
Ifyou provide content to customers throughCloudFront,you can find steps to troubleshoot and help prevent thiserrorby reviewing theCloudFront documentation.
ここ1年で初めてはてなブックマーク日毎の総合人気エントリ入りしたドメインからのホットエントリ、ブクマ数順トップ30
| ブクマ数 | タイトル | ドメイン |
|---|---|---|
| 928 | きらら4コマの描き方 - kokamumo’sblog | kokamumo.hatenablog.com |
| 866 | 神ゲー 『Type Help』ネタバレ無し感想 - のすのゲーム感想ブログ | tetogame.hatenablog.com |
| 776 | 肉を低温で安全においしく調理するコツをお教えします! |内閣府食品安全委員会 | www.fsc.go.jp |
| 624 | Cursor で100日間アプリを作り続けた中で、全然うまくいかなかったこと - フラミナル | blog.framinal.life |
| 596 | ガンダムの年表 | ビックカメラ | www.biccamera.com |
| 533 | ニコニコ生放送がサービスを再開するまでの記録 -dwangoonGitHub | dwango.github.io |
| 520 | アニメーション監督富野由悠季さん – 伊佐通信|伊佐ホームズ株式会社 | www.isahomes.co.jp |
| 511 | 「まるで、結婚が義務みたい」 秋田県、高校生向けに「結婚の気運醸成」副読本① | www.media-akita.jp |
| 471 | ジークアクス感想 - kokamumo’sblog | kokamumo.hatenablog.com |
| 441 | 開発人生25年で学んだ7つのソフトウェア原則(翻訳)|TechRachobyBPS株式会社 | techracho.bpsinc.jp |
| 434 | 年収300万〜1億円の手取り早見表|確認方法や所得控除なども解説|RENOSYマガジン(リノシーマガジン) | www.renosy.com |
| 431 | 【東横イン公式】【注意喚起】一部の海外予約サイト(Agoda等)ご利用時のご注意事項|ホテル・ビジネスホテル予約 | www.toyoko-inn.com |
| 428 | 陰謀論だらけの桃太郎 -ナナオクプリーズ | 7oku.hatenablog.com |
| 427 | 転職時に前職の年収を盛ることは、どの程度まで許容されるのか? -弁護士 師子角允彬のブログ | sskdlawyer.hatenablog.com |
| 424 | ソフトウェアエンジニアからAIエンジニアへスキルチェンジ -As a Futurist... | blog.riywo.com |
| 377 | 20年選手のエンジニアが「良いコード」を改めて学ぶために、最近の本を4冊買って読んでみた - giveIT atry | blog.jnito.com |
| 374 | Switch 2の分解 : またもや接着剤とはんだ付け、そして免れないドリフト | jp.ifixit.com |
| 372 | 『影の雨』プロンプト | kohkoku.jp |
| 372 | iPhoneのマイナンバーカード |デジタル庁ウェブサービス・アプリケーション | services.digital.go.jp |
| 369 | Claude Code に壊されないための denyルール完全ガイド - izanami | izanami.dev |
| 361 | 「満州」とは何だったのか――安彦良和×三浦英之 | imidas.jp |
| 356 | How I Use Claude Code | spiess.dev |
| 350 | 医療現場で子どもたちに寄り添う ポケモンの小児向けMRI検査説明用動画|株式会社ポケモン|ThePokémon Company | corporate.pokemon.co.jp |
| 334 | 日本弁護士連合会:死刑執行に対し強く抗議し、直ちに全ての死刑執行を停止し、世界的な廃止の流れに沿った死刑制度廃止の実現を求める会長声明 | www.nichibenren.or.jp |
| 311 | 『アポカリプスホテル』キャラクター原案・竹本泉インタビュー |アニメイトタイムズ | www.animatetimes.com |
| 306 | 再使用型ロケット実験機の離着陸実験に成功 |Honda企業情報サイト | global.honda |
| 303 | 令和の若者は「8時10分前に集合」で8時8分に来る!?なぜ「7時50分」ではないのか?衝撃の世代間ギャップの理由 |めざましmedia | “好き”でつながる | mezamashi.media |
| 303 | 買ったら地獄、売っても地獄 BYDユーザー泣き寝入り | www.visiontimesjp.com |
| 291 | 東大教員は学術会議の法人化をどう見ているか ③工学系・理学系・数理科学研究科 -東大新聞オンライン | www.todaishimbun.org |
| 283 | おすすめ Claude Code 設定・運用まとめ |Wantedly EngineerBlog | www.wantedly.com |
ちょっと思うところがあったので突っ込みを入れてみようと思います。
そもそもの「「スタン落ちのない遊戯王は最高」にも反論したほうがよくないですか?
ローテーションって金はかかるけど結構楽しいですよ。ポケカだったらFレギュのイカれカードが消えてからデッキ考えるの楽しくなかったですか?おじはかなり楽しかったです。
メタが大きく変化するので、意外なカードが脚光を浴びたりして。競技カードゲームとして考えるならこれほど楽しいイベントもないです。
分かんない?みんな禁止改定の発表とか見るの大好きでしょ?あれが年一で大規模に起こると思ったら、楽しくなってきません?なってきませんか・・・。
まあ、ネガティブなイメージが大きいイベントなのはわかります。ただ環境で暴れまわってるクソカードも寿命は3年になるので、あるデッキタイプを中心にメタが回る。
みたいな環境もやや許容できるようになるなど、メタの回り方自体も少し変わるし、悪い面ばかりでもないですよ。
で、残りの部分への回答なのですが。
これは別のツッコミにも書いたのですが、「TACTICALTRY DECK」の施策が新規呼び込みのための素晴らしい施策となっています。
クソ安い実戦級構築済みを安価でばら撒くってのは「スーパーデッキ」でデュエマが開拓した手法ですが、
遊戯王はパーツ取りにも使えるようなデッキを安価で大量に市場に供給していつでも買えるようにして、
新しい拡張パックで、TACTICALTRY DECKのテーマ新規を定期的に刷ってサポートしてるのが新しいですね。
Tier2-3のデッキできちんと現代遊戯王の動きができるので、復帰勢とかMD勢がこの商品で現代遊戯王を理解して、
販促見てTACTICALTRY DECK買う→パックを購入する、という流れを想定していると思われます。
コラボが正解ではないが、カードゲームとしての他のIPを取り込める柔軟性やゲーム性を維持できる堅牢性のアピールでもあるんだよ
別にアピールとかではないです。たぶんここは「証左でもある」って言いたいんでしょうか。
コラボができるかどうかってのはゲーム性とかそういうのはあんま関係なく、権利関係ちゃんと処理できるかとか、アート/フレイバーのディレクションの観点からどうかみたいなやつです。
例えばポケカなんかはコラボは基本無理です。グッズですら殆どないんじゃないかな。ポケモンってIPが世界最強なので、そもそもコラボする必要がないとも言えます。
デュエマのコラボに関しては、アートディレクションがかなり緩いのと、小学館経由で様々なコラボができたことが大きいと思います。
MTGはアート/フレイバーのディレクションがガチガチでとてもコラボなんて、って感じでしたが、secret lairで地ならししたことで割と受け入れやすい土壌はできてたっぽいですね。
一方でKONAMIなんですが、遊戯王というめちゃくちゃ知名度のあるIPでまだまだ商品力あるので、他とコラボする必要がそもそもないって感じですね。ポケカと同じ状況です。
一応、パワプロなどのコラボカードはありますし、全然できないというわけではないです。システム面ではいくらでもできますけど、その必要がないというだけの状況かと思います。
ここは立て直しの最中なのでまあ。OCGストーリー押しなのも、いろいろな意向があってのことでしょうね。おそらく権利回りで。
そんな感じです。
横からなんだけど、
OCGがMDに頼りきりでどう考えても市場で目立つ製品を売り出せていないの事実だぞ/コアなユーザーではなく新規層にも届くような施策なんてあったのか?
これは前年からやってる構築済みでTier2~3ぐらいのテーマデッキを販売し、その後にリリースするパックで1年程度新規を定期的に刷ってサポート・デジタル版で販促という
クソ安い実戦級構築済みを安価でばら撒くってのは「スーパーデッキ」でDMが開拓した手法だけど、遊戯王はその後の拡張パックでテーマ新規を定期的に刷ることでサポートするのが新しい。
あと、TACTICALTRY DECKは販売当時ではかなり内容が良くて、本来なら即売り切れレベルの内容の構築済みなんだけど、通年できちんと売ってるし、誰でも買えるように潤沢に在庫が供給されてるのもえらい。
加えて、これらの構築済みデッキの販促をMDでもやることで、紙と同じカードが使えてかつデジタル版の環境が半年前の紙環境+良調整となっているMDの良さも十分に生かしている。
紙とカード自体が違うせいで販促としての立ち位置が微妙なプレイスではこんな施策できない。
結果、復帰勢とか新規の連中がMDやる→現代遊戯王を理解して、販促見てTACTICALTRY DECK買う→パックを購入するというきれいなサイクルができていて、これはマジでうまいなとおもった。
MTGでやってた「キッチンテーブルからLGSへ」施策をブラッシュアップした素晴らしい取り組みだと思う。
って、マジレスしたんだけど、返答返ってこねえんだろうな。
一度投稿したうえで別タブを開いてプログラム的(fetch)に送信してその別タブが閉じられる仕組み。
// ==UserScript== // @namePGP未署名検出と別タブ自動編集 // @namespacehttp://tampermonkey.net/ // @version 1.0 // @descriptionPGP署名がない投稿を自動編集ページへ誘導 // @matchhttps://anond.hatelabo.jp/* // @grantGM_setValue // @grantGM_getValue // @grantGM.openInTab // ==/UserScript== (function () { 'use strict';constbody = document.getElementById('entry-page'); if (!body) return;consttitleText = document.title; if (!titleText.includes('dorawii')) return;constpgpRegex = /BEGIN.*PGP(?: SIGNEDMESSAGE| SIGNATURE)?/;const preElements = document.querySelectorAll('div.body pre'); let hasPgpSignature =false; for (const pre of preElements) { if (pgpRegex.test(pre.textContent)) { hasPgpSignature =true; break; } } if (hasPgpSignature) return;const editLink = document.querySelector('a.edit');const childTab =GM.openInTab(editLink.href, {active:false, insert:true,setParent:true }); })();
// ==UserScript== // @name編集ページ処理と自動送信・閉じ // @namespacehttp://tampermonkey.net/ // @version 1.0 // @description編集ページで署名処理と送信、タブ自動閉じ // @matchhttps://anond.hatelabo.jp/dorawii_31/edit?id=* // @grantGM_getValue // @grantGM_xmlhttpRequest // @grantGM_setClipboard // @grantGM_notification // @connectlocalhost // ==/UserScript== (async function () { 'use strict';const shouldRun = awaitGM_getValue('open-tab-for-edit', '0');consttextareaId = 'text-body';consttextarea = document.getElementById(textareaId); if (!textarea) return;const content =textarea.value;constpgpSignatureRegex = /-----BEGINPGP SIGNEDMESSAGE-----[\s\S]+?-----BEGINPGP SIGNATURE-----[\s\S]+?-----ENDPGP SIGNATURE-----/; if (pgpSignatureRegex.test(content)) {console.log('[PGPスクリプト]署名が検出されたためそのまま送信します'); return; }consthttpRequest = (url, data) => { return newPromise((resolve,reject) => {GM_xmlhttpRequest({ method: 'POST',url:url, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: `value=${encodeURIComponent(data)}`,onload: function (response) { resolve(response.responseText); },onerror: function (error) {reject(error); } }); }); }; //textarea の値を取得 // 1.現在のページのURLからURLオブジェクトを作成const currentUrl = newURL(window.location.href); // 2.ベースとなる部分 (例: "https://anond.hatelabo.jp") を取得constorigin = currentUrl.origin; // 3. 'id'パラメータの値 (例: "20250610184705") を取得constidValue = currentUrl.searchParams.get('id'); // 4.ベース部分とIDを結合して、目的のURL文字列を生成 //idValueが取得できた場合のみ実行する let newUrl = null; if (idValue) { newUrl = `${origin}/${idValue}`; } // 5. 生成されたURLを変数に代入し、コンソールに出力して確認console.log(newUrl);constvalueToSend = newUrl;try {const signatureText = awaithttpRequest('http://localhost:12345/run-batch',valueToSend);console.log('バッチ応答:', signatureText); if (!signatureText.includes('BEGINPGP SIGNEDMESSAGE')) { alert('PGP署名がクリップボードに見つかりませんでした。'); return; }const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';textarea.value = newText;console.log('[PGPスクリプト]署名を貼り付けました。送信を再開します。');const form = document.forms.edit;const newForm = form.cloneNode(true); form.replaceWith(newForm); newForm.addEventListener('submit', async (e) => { e.preventDefault(); //HTML標準のsubmitをキャンセルconstbodyText =textarea?.value || ''; //reCAPTCHAトークンの取得constrecaptchaToken = await newPromise((resolve) => { grecaptcha.enterprise.ready(() => { grecaptcha.enterprise.execute('hoge', {action: 'EDIT' }) .then(resolve); }); }); // POSTするデータの構築const formData = new FormData(newForm); formData.set('body',bodyText); formData.set('recaptcha_token',recaptchaToken); formData.set('edit', '1');try {constresponse = await fetch(newForm.action, { method: 'POST',body: formData, credentials: 'same-origin' }); if (response.ok) {console.log('送信成功'); window.close(); } else {console.error('送信失敗',response.status); } }catch (err) {console.error('送信中にエラーが発生', err); } }); //プログラム的に送信トリガー newForm.dispatchEvent(new Event('submit', { bubbles:true })); }catch (e) {console.error('バッチ呼び出し失敗:', e); } })();
consthttp =require('http');const { exec } =require('child_process');const querystring =require('querystring');const server =http.createServer((req, res) => { if (req.method === 'GET' && req.url === '/ping') { res.writeHead(200); res.end('pong'); } else if (req.method === 'POST' && req.url === '/run-batch') { letbody = ''; req.on('data', chunk => {body += chunk.toString(); }); req.on('end', () => {constparsed = querystring.parse(body);constvalue =parsed.value || 'default'; // 値を引数としてバッチに渡す exec(`C:\\Users\\hoge\\Desktop\\makesign.bat "${value}"`, { encoding: 'utf8' }, (err, stdout, stderr) => { if (err) { res.writeHead(500); res.end('Error executing batch: ' + stderr); } else { res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end(stdout.trim()); } }); }); } else { res.writeHead(404); res.end('Not found'); }});server.listen(12345, () => {console.log('Batch serverrunningathttp://localhost:12345/');});
@echo offsetlocal enabledelayedexpansion::署名するファイル名set "infile=%~1"set outfile=%TEMP%\pgp_output.asc:: 以前の出力があれば削除if exist "%outfile%" del "%outfile%":signloop::AutoHotkeyでパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)start "" /b "C:\Users\hoge\Documents\AutoHotkey\autopass.ahk"::PGPクリア署名を作成echo %infile% | gpg --yes --clearsign --output "%outfile%"::署名が成功していればループを抜けるif exist "%outfile%" (goto postprocess) else ( timeout /t 1> nulgoto signloop):postprocesspowershell -nologo -command ^ "$header = '>|'; $footer = '|<'; $body =Get-Content '%outfile%' -Raw;Write-Output ($header + \"`r`n\" + $body + $footer)"powershell -nologo -command ^ "$header = '>|'; $footer = '|<'; $body =Get-Content 'signed.asc' -Raw;Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"endlocalexit /b
#Persistent#SingleInstance ignoreSetTitleMatchMode, 2WinWaitActive, pinentrySendInputpasswordSleep 100SendInput {Enter}ExitApp
動けばいいという考えで作っているので余分なコードも含んでいるかもしれない。
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250613185036 -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEv1FQAKCRBwMdsubs4+SHHkAQDUOLgBcdji2T6MJ7h/vlMdFfGlWAzNdXijjE1gIuEPywEAiMNMZqhrMmtlc7UqRuggNJ/UTa5xTIcKp622+7jJQQg==Lgkl-----ENDPGP SIGNATURE-----
ようやく(ほぼ)すべてが自動化された。
あとはローカルサーバーの起動をスタートアップに設定する(方法をAIに聞いて指示に従う)だけの消化試合。
署名時要求してくるパスワードを自動入力するahkファイルはドキュメントのAutoHotkey配下に置いた。
バッチファイル(make.sign.bat)はデスクトップに置いた。
#Persistent#SingleInstance ignoreSetTitleMatchMode, 2WinWaitActive, pinentrySendInput お前のパスワードSleep 100SendInput {Enter}ExitApp
//run-batch-server.jsconsthttp =require('http');const { exec } =require('child_process');const server =http.createServer((req, res) => { if (req.url === '/ping') { res.writeHead(200); res.end('pong'); } else if (req.url === '/run-batch') { exec('C:\\Users\\you\\Desktop\\makesign.bat', (err) => { res.writeHead(200); res.end(err ? 'Error' : 'OK'); }) ; } else { res.writeHead(404); res.end('Not found'); }});server.listen(12345, () => {console.log('Batch serverrunningathttp://localhost:12345/');});
@echo offsetlocal enabledelayedexpansion::ミリ秒単位のUTC時刻を取得for /f %%a in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') doset timestamp=%%a::署名するファイル名set infile=%TEMP%\pgp_input.txtset outfile=%TEMP%\pgp_output.asc:: 以前の出力があれば削除if exist "%outfile%" del "%outfile%"::タイムスタンプを原文として保存echo %timestamp%> "%infile%":signloop::AutoHotkeyでパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)start "" /b "C:\Users\infini\Documents\AutoHotkey\autopass.ahk"::PGPクリア署名を作成gpg --yes --clearsign --output "%outfile%" "%infile%"::署名が成功していればループを抜けるif exist "%outfile%" (echo [INFO]署名成功goto postprocess) else (echo [WARN]署名失敗、再試行します… timeout /t 1> nulgotosignloop):postprocess::PowerShellで余計な改行なしに |< をつけてクリップボードにコピーpowershell -nologo -command ^ "$header = '>|'; $footer = '|<'; $body =Get-Content '%outfile%' -Raw;Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"echo Done.signed.asc created and clipboard updated (no extra blankline).endlocalexit /b
// ==UserScript==// @namePGP署名自動付加スクリプト(GM_xmlhttpRequest版)// @namespacehttp://tampermonkey.net/// @version 1.0// @description投稿前にPGP署名を付けてから送信(fetch未使用)// @matchhttps://anond.hatelabo.jp/dorawii_31/edit*// @grant GM_xmlhttpRequest// @grant GM_setClipboard// @grant GM_notification// / @connectlocalhost// ==/UserScript==(function () { 'use strict';const submitId = 'submit-button';consttextareaId = 'text-body';const localServer = 'http://localhost:12345/run-batch';constpgpSignatureRegex = /-----BEGINPGPSIGNEDMESSAGE-----[\s\S]+?-----BEGINPGPSIGNATURE-----[\s\S]+?-----ENDPGPSIGNATURE-----/;consthttpRequest = (url) => { return newPromise((resolve,reject) => { GM_xmlhttpRequest({ method: 'GET',url:url, onload: function (response) { resolve(response.responseText); }, onerror: function (error) {reject(error); } }); }); };const interceptClick = () => {constbtn = document.getElementById(submitId); if (!btn ||btn.dataset.pgpIntercepted === 'true') return;btn.dataset.pgpIntercepted = 'true';btn.addEventListener('click', async function (e) {consttextarea = document.getElementById(textareaId); if (!textarea) return;const content =textarea.value; if (pgpSignatureRegex.test(content)) {console.log('[PGPスクリプト]署名が検出されたためそのまま送信します'); return; } e.preventDefault(); e.stopImmediatePropagation();console.log('[PGPスクリプト]署名が見つからないため処理を停止し、署名を取得します');try { awaithttpRequest(localServer); //バッチ実行constsignatureText = await navigator.clipboard.readText(); if (!signatureText.includes('BEGINPGPSIGNEDMESSAGE')) { alert('PGP署名がクリップボードに見つかりませんでした。'); return; }const newText = content.replace(/\s*$/, '') + '\n' +signatureText + '\n';textarea.value = newText;console.log('[PGPスクリプト]署名を貼り付けました。送信を再開します。');btn.click(); //イベント再発火 }catch (err) { alert('PGP署名の取得または貼り付けに失敗しました。\n' + err); } },true); }; window.addEventListener('load', () => {setTimeout(interceptClick, 1000); });})();
プロミスメソッドとか全然まだ理解してなくてそのなかに関数代入したその関数にオブジェクトのプロパティにresponseを?いやまあそのあたりのコードが示すデータの流れが全然理解できないような人間でもここまでできちゃった。
AIすごいなと思うよ。そして思うのは今後重要になってくるのは文法とか自体に詳しいことじゃなくて、そのプログラムの処理内容を指示できるシステムエンジニア的な言語化能力のほうじゃないかなと思った。
-----BEGINPGPSIGNEDMESSAGE-----Hash: SHA51220250609111559680 -----BEGINPGPSIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEbCbwAKCRBwMdsubs4+SLueAPwOv7PBk4voAe5qlcCEvs/PJhmKc5QAb/1R43JMQFuDZgD/UTPEKsL/PhK9jFGv2HDXK1dVjLNwvosgX9uYJh5xxwY==qiOE-----ENDPGPSIGNATURE-----
真面目に人生を歩んできたつもりだった。
高校時代は3カ年皆勤を受賞、推薦入試でもないくせに生徒会も本気で部活も毎年全国大会で上位に食い込んでいた。
大学は地方国立に進んだ。大学の授業を一度も欠席したことはないし、長期休暇には資格勉強や読書に励み、就活も大学2年から取り組みインターンにあししげく通って内定を勝ち取り、卒論では学士のくせに学会で賞を取るような真面目人間だった。サークルやアルバイトもやっていたが、飲み会は年数回程度だった。
しかし、社会人になって飲み会でヤリチン同期に出会ってすべてが変わった。
エロ漫画とかでしか存在しない概念だったヤリチンが、実在するんだと知った。
最初は嫌悪感しかなかった。というか普通に意味が分からなかった。付き合う前にするって何???って。
しかし学生時代ヤリチンだった同期は何人も居るし、彼女もセフレも居る同期だったり、彼女とFantiaに動画を上げて稼いでる同期とか、遠距離で彼女は居るけどヤリチンを東京でやってる同期とか、ナンパで営業力を磨いている同期とか、相席屋でお持ち帰りしまくる同期とか、そういう人がこの世界にはたくさん居ることを知った。
そしてみんな夜遊びのフェーズを大学生で終えている(ように感じた。実際大多数は遊んでなんかいない。インパクトのある話が伝搬してるだけ)。
彼女こそいたことはあるが、付き合う前にそういうことをするのは絶対にありえないと思っていた。そんな常識が壊れた。
自分は大学時代遊んでないんだ。そしてその大学時代はもう一生来ない。
そう思うと心が粉々になりそうなくらいの劣等感を感じた。
23歳だった。社会人としては若くても若者としてはアラサーが迫っていた。
23歳の遊びは若いねで笑われても、33歳がそれをやったらただのキモいでしかない。23歳でもキモいかもしれないが。
今が一番若い。
大学時代は終わっているがまだ今ならこのコンプレックスを取り除けるのではないかと思った。
若い頃のコンプレックスは一生引き摺るものである。半世紀を過ごしたおじさんが学園ソープに行くように、私自身にだって学生時代のコンプレックスがいくつかあった。
若いうちに遊んでないというコンプレックスが日に日に大きくなってくるように感じた。山月記のようにいつか虎になってしまうのではないかと思った。
そんなことを考えたとき、まだ今なら遊んでないコンプレックスを無効化できる。そう思った。
遊び終わった男がいいなんて世間では言われる。
平均初婚年齢を考えると残された時間は短い。結婚を前提としたとき、次付き合うまでに遊び終わった男になっていたい。
同時に女性から見ても、まだ結婚を考えず遊んでみたいと思う需要もある時期なのではないかと考えた。
さらに彼女が居ない今こそ、遊んでおくのが良いのではないかと思った。
それを考え始めると遊ばない=死のような感覚になった。
今を逃すと将来が真っ暗で永遠に一人だと思うようになった。
さらに自分は真面目な自覚があったし、それを改善することが至上命題となっていた。
加えて女性に対してのコミュニケーション力もコンプレックスであった。
技術カンファレンスの懇親会で同性同士のコミュニケーションは磨いてきた自負があったが、対女性となると極めて難しい。
これも早めに直したい。
まとめると遊びは
を目的として始めた部分が大きい。
欲の強さはかなりある方だが、そういう行為は正直好きな人とだけ楽しめていれば十分だと思っていた。
経験人数を増やしたい気持ちもないし、お持ち帰りする過程にもワクワク感を抱かないタイプである。
仕事のストレスがえげつない時期で正直死が迫っていたのだと思う。
狂っていた。
本質として相手を傷つけて得られる幸せや快楽はクソだと思っている。
いくら自分のためだとしても、タダ乗りは絶対にしてはいけない。
また1回目の行為は調査だとナンパ本にだって書いてある常識である。
楽しんではいけない。相手が何が好き化を調べる調査である。明確に客は女性で自分は施術者である自覚を忘れてはいけない。
遊びはどちらが好きになった瞬間終わりである。
期間を決めることにした。目標設定において期限を指定しないことはあまりにも意味のない行為である。
ヤリチンになれている・いないに限らず半年で一旦区切りをつけることは最初から決めていた。
これはマッチングアプリの料金プランとしてコスパが良いことに加え、思考に関わる習慣化の期間は約6ヶ月と言われていることにも起因している。
遊びという行為を経験しておりそれに対して不快感を抱いていない限られた知り合い(男女両方含む)に事情を話し定期的に話をする機会を設けてもらった。
これはスクラムにおけるSprintReview的な立ち位置となると同時に、依存先を増やしてメンタルコントロールをしていた側面も大きい。
数をまずはこなすことにした。
デート後に毎回記録をしていた。
好きな食べ物や嫌いな食べ物、アレルギーやMBTIなどの基本情報は大前提として
を毎回デート後に書き起こしていた。
これは経験学習効果を最大限増やすという意味合いもあるし、なにより相手を傷つけないためが大きかった。
相手に間違われるのはあまりにもつらい。それに相手が楽しくないことは絶対にしたくない。ポリシー違反。
人間を物として見てると言われそうだが、自分の中ではそれが最大限の誠実性だった。
最悪自分が傷つくのは自業自得だとしても、女の子を傷つけるのは良くないし、特に一生傷を追わせてはいけない(偉そうなこと言える立場でないのはわかっているが)。
例えば容姿を気にしている相手に容姿に対する指摘をするとか、体型を気にしている相手に体型の指摘をするとか。
そういうのは相手の人生を余裕で狂わせる。整形を繰り返したり、拒食症になったり。(自分が直接そうさせたことはないが、そういう風にされたことがある人を見たことがある。)
クラブナンパでは、クラブに1人で突撃し最初に同性と仲良くなり、そこ経由で女の子を紹介してもらうことで多少は仲良くなれたが、その後があるほどの関係性は構築できなかった。
相席屋や合コンは付き合ってくれる男さえいれば女の子と話すまでは確実だが、一方でお持ち帰りという部分に関しては極めて難易度が高い。
個人的に複数人の場での立ち振る舞いより、1対1のほうが得意であった。
結果として自分自身と相性が良い「マッチングアプリ(恋活系)」を中心に進めていくこととなった。
Tinderは最上級の課金をしても基本出会えず、性癖マッチ系は男女比が破壊的で現実的でなかった。どちらも自分でコントロールできる範囲で改善が難しかったため本業にはしなかった。
あたりで知識を蓄えた。
最も良いのは遊んでいる・遊んでいた男女に相談することである。疑問を対話形式で解決できることによる学習効果は大きい。
YouTubeに関しては有象無象で精度も低いが、複数人が言っている内容などある程度学習意義があった。(多くは会員制有料サイトへの誘導であるため注意)
各種書籍に関してはかなり効果が大きかった。特に「話を聞かない男、地図が読めない女(アラン・ピーズ 著)」は男女平等が叫ばれる中で必読の書籍であるように感じた。平等と公平の必要性もわかる。
少女漫画はふざけているかのように見えるが、女性にとっての1つの理想を知るうえで重要な資料である。(というかお持ち帰りした女性におすすめされた)
ヤリモクになることを通して、うまくやれてるヤリチンにある種の尊敬を抱いた。
(うまく、と書いているのは本能で行動し相手を傷つけて遊ぶ男や色恋や沼らせることで女性を依存させて遊ぶ男、恋人という安定に甘えながらヤリモク浮気をするような本物のクズ達には尊敬を抱けないためである)
難易度は正直人生でも相当上位に食い込む。大企業に内定を得るよりも断然難しい。就活は相当苦労した記憶だったが、それを遥かに上回るものだった。
運よく限界が来る直前に救いが何度もあったことで耐えれたが、辛さに耐えられずに人生が終わる可能性だって十分にあるくらいには精神的ダメージの大きいものであった。
一方で経験学習は明確に回る。性という人間の根幹を牛耳る部分が刺激を受けることで良くも悪くもアメとムチがデカかった。
食料が手に入るようになった現代で唯一本能的なPDCAを回せる場所であったのではないかとすら思った。
ドタキャンされたり嫌われたりは日常的にあって、かなり人格否定が発生するのが辛い。
仕事とかならプロジェクトのxxが悪いとか、スクラム開発ならPBIが悪いとか色々言い訳できるのだが、女の子から嫌われたり断られたとき、人格否定されたように感じてしまう。
(実際にはそんなことはなくて、たいてい相手側の都合とかタイミングのケースが多いが、論理でそうわかっていても感情はそうならない)
ヤリモクをやる前の事前調査で、ヤリチンをやっている友達数人に聞いたところ、まずは20人と会ってからだという話を聞いた。
これは遊び終えた上で振り返っても間違いないと考えている。
まずは数をこなして学習することが大事だし、正直相手のその日の体調や気分など運による部分が大きいというのもある。
会う直前や電話の直前で突然ブロックされることは相当な回数ある。半年間で20回は優にあった。
大半のケースは会うのが面倒なケースや他に良い相手ができたケースだと思われるが(というかそう思わないとやっていけない)とても辛い。
一番辛いのは会う約束をして当日待ち合わせ場所で待った挙げ句パターンである。
「ちょっと遅れるね」のメッセージを最後に何時間も真冬に待たされた挙げ句ブロックされたケースだってある。普通に数日落ち込んだ。
さらに厄介なのは一方的に好意を向けられた挙げ句、会う直前に突然ブロックされることだ。
簡単に好意を向ける人間は、簡単に他の人にも好意が向いて自分なんて存在は容易に捨てられる。
当たり前だが世界は甘くない。
ホテルに誘ったときに「そういうの無理なんだけど」って言われるのはまだ希望がある。貞操観念がしっかりしていて素敵だなと思う。
ちょっと嫌なのは、最後の最後に「今日女の子の日だから次ならいいよ」と言われた挙げ句、解散した瞬間にブロックされることである。これが結構ある。
基本的に初回でできなければ次は絶対にない。(1個人の統計としては1回だけ例外があったが割合としては相当低い)
またホテルに行ってやることやって、またしようねと笑顔で解散した次の日にブロックされるケースもある。
ホームで電車に乗り込む直前まで甘々にくっついてきたのに、である。本当に人を信用できなくなる。
いろいろな人と話すことができた。(実際に行為まで及んだのはごく少数であることは留意してほしい)
幼稚園の先生、小学校の先生、営業職、事務職、フリーター、様々な学部の大学生、専門学生、SE、舞台スタッフ、作業療法士、看護師など、職業や学種だけでも普段絶対関われない人と関われた。
出身地も日本全国様々だったし、それぞれの人生も唯一無二のものだった。
夜ご飯だけでも2時間は話を聞けるし、2件目、ホテルとなるとピロートークも含めてその人の人生の深淵まで触れられることもある。
理系人生だと女性と接する機会は極めて少ない。そんな自分にとっては知らない世界ばかりだった。
知ったところで何になるんだと言われるとそれまでだが。
常に、と書いているのはセフレという存在が極めて不安定な存在だからである。
自分なりに相手を満足させるように努力していても、当たり前のように関係が向こうから千切られるので常に新しい相手を供給し続ける必要がある。
セフレがほしい男は無限に居ると思うが、女性は大概そうでない。遊び前提で出会っても暗黙的に、なんなら本人は気づいてなくても付き合ったり結婚したりする未来を考えているケースが極めて多い。
というかそれ以外ほぼない。ごく稀に例外はいるが本当にごく稀でしかない。
途中で女の子側から消えていく。それは恋人になれないということに絶望を感じたり、単純に飽きられたり、私このままじゃだめだと思ったり。
だから常にセフレとなる候補を探すために新規の女の子と会い続けないといけないため、永遠に安定が来ない。
セフレという言葉に理想を描く人間は無限にいるが実際は想像以上に空虚な存在である。
自分にだけ一途でセフレな女の子という幻想は捨てるべきだ。矛盾している。
自分がセフレになる時点で他の男にも簡単に落とされて持っていかれるような存在であるし、仮に長期間セフレが維持できるほど好意を持たれていたらいつか相手が今の関係に満足できなくなって終わる。
一途なセフレは存在しないのでちゃんと誠実に遊ばず恋人を目指すべきである。
一時的に誰かの薬に立てている実感こそあったが、自分はこの人を一生幸せにできないんだと感じで絶望を感じることが多々あった。
穴の空いたポケットにビスケットを詰めているような感覚。すぐ落ちて無駄になっていく。
どれだけ優しくしたり貢献しても、すぐ離れて蓄積がない。
恋人だったらそうはならない。1年付き合って培った信頼とか共通認知とかがある。
遊びにはそういうのが一切ない。体験版でプレイするたびにリセットされるRPGと同じ。
=========
https://anond.hatelabo.jp/20250908003219
Permalink |記事への反応(28) | 00:30
令和7年4月1日以降、官報の帰化情報が90日経過で閲覧不可になった。
「プライバシーに配慮」とのことだが、最近の不自然な戸籍不要発言などと合わせて考えると嫌な予感しかしない。
そこでとりあえず官報を保存できるプログラムを作った。自分でダウンロードして保存すること自体は全く問題ない行為。
官報は平日の8:30に公開されるので、cronで8:31とかに実行すると良いのでは。
#官報のPDFデータを入手して保存するimport requestsimportosimporttimefrom bs4 import BeautifulSoupfromurllib.parse importurljoin#対象URLindex_url = "https://www.kanpo.go.jp/index.html"base_url = 'https://www.kanpo.go.jp/'#ダウンロード先フォルダdownload_dir = 'pdfs'os.makedirs(download_dir, exist_ok=True)# ページ取得response = requests.get(index_url)response.encoding = 'utf-8'text =response.text#HTMLを解析soup = BeautifulSoup(text, "html.parser")results = []# 「本日の官報」を対象にPDFの情報を取得するtoday_box = soup.find('div', class_='todayBox')if today_box:dl = today_box.find('dl')dt =dl.find('dt') ifdt: # 日付の抽出date_text =dt.get_text(strip=True).split('92;n')[0].replace(" ","").replace("全体目次はこちら","").replace("※インターネット版官報","").strip()dd =dl.find('dd') ifdd: for li indd.find_all('li', class_='articleBox'):title_tag = li.find('a', class_='articleTop')pdf_link = li.find('a', class_='pdfDlb') iftitle_tag andpdf_link:title =title_tag.decode_contents().replace("<br/>", "").strip()url =pdf_link['href'] results.append({ '日付':date_text, 'title':title, 'url':url })# 結果の表示for r in results:date = r['日付']title = r['title']url = r['url'] #pdfファイルのURLを作成url_parts =url.rsplit("/", 1)url_base =url_parts[0] filename =url_parts[1].replace("f.html", ".pdf") converted_url = f"{url_base}/pdf/{filename}" #pdfのURLとファイル名を作成 full_url =urljoin(base_url, converted_url) base_filename =date + "_" +title + "_" + filename.replace("f.html", ".pdf") #ダウンロードして保存print(f'Downloading {full_url} ...')try:response = requests.get(full_url)response.raise_for_status() withopen(os.path.join(download_dir, base_filename), 'wb')as f: f.write(response.content)print(f'Saved: {base_filename}')time.sleep(10) except Exceptionas e:print(f'Failed todownload {full_url}: {e}')
VitaにCFWを導入するにあたり、情報が散乱していたのでまとめる
・2022年末に革新的進歩があり、VITA単体でCFW導入できるようになった(通称 HENlo)
・にも関わらず古いCFW導入方法を案内しているブログが大量にある
・しかもタイトルの"20XX年最新"だけ更新し続けているから、最新記事に見える
↓
PC使用が前提になっているブログは全部古いので無視した方が良いです。
・『HENlo』について触れている
この2つが押さえられてれば最新情報です。(2025年5月現在)
ただし、現状だと実は『PC操作が一部必要』という罠があります。
その問題について書いている記事が見当たらないので、ここに残しておきます。
超具体的には
「HENkaku、VitaDeploy、VitaShellは導入できた」
「けどEnso導入ができない/つまづいている」 エラー:failed togetfwversion please disableallthe plugins andtryagain
5chでもRedditでも
『プラグインを無効にしろ』『0syscall6を無効にしろ』って書いてあったのですが、実はEnsoのバージョン変えれば解決します。(後述)
この記事が役に立ちました
[Vita]2023年最新手順【HENlo】3.65-3.74PC不要でCFW(HENkaku)導入
https://re-doing.com/vita-henlo-hack/
(一応魚拓:https://web.archive.org/web/20250226111105/https://re-doing.com/vita-henlo-hack/)
・HENkaku (カスタムファームウェア 3.65 変革 -2)
・VitaDeploy
・VitaShell
・最悪文鎮化する可能性があるのでセーブデータバックアップを取ったほうが良い
・VITAのセーブデータは特殊で、PCと繋ぐだけでは取り出せない
・バックアップにはいくつか方法があるが、PCのコンテンツ管理アシスタントは既に使えないと思ったほうが良い。PS Plusのクラウドバックアップが最も良いはず
・記事の内容を実施する前にバックアップ取るのを強くおすすめする
これをインストールすることで、電源を切ってからもCFW状態を維持できます。
VitaDeploy内のApp downloaderメニューからEnsoをインストールできますが、実はこのバージョンが古いです。※重要※
そのためVitaDeployからインストールすると先程のエラー(failed togetfwversion please disableallthe plugins andtryagain)が必ず出ます。
「PC不要になった」と書いてあったので盲点ですが、ここからPC必要です。
正しい方法は以下です
1,PC操作:GithubからEnso最新版のenso.vpkファイルをダウンロード(現在v1.1)
https://github.com/TheOfficialFloW/enso/releases
2,PCとVitaをUSBケーブルで繋げる ※データ転送対応ケーブルを使うこと。相性もある
5,PC操作:USBドライブとしてVITAのデータが表示されるので、ダウンロードしていたenso.vpkファイルを置く(フォルダはどこでもOK。自分はルート直下に置きました)
7,Vita操作:VitaShellでenso.vpkを見つける(さっきルートに置いたなら恐らくux0:にある)
9.Vita操作:Doyou want toinstall this package? → ◯ボタン
10.Vita操作:~~~ Wouldyoulike tocontinue theinstall? ※意訳:「失敗したら文鎮化するけど自己責任だけど続ける?」 → ◯ボタン
11. 進行バーが消えたらインストール完了 ホーム画面に戻ってOK
Ensoはファームウェアが3.60か3.65じゃないとインストールできないです。(3.65 変革 -2は3.65扱い)
先程の記事の通り進めていたら3.65 変革 -2 になっているはずですが、実行前に再確認して下さい。
1, ~~~ PressCIRCLE toaccept these terms orany otherkey to notaccept. → ◯ボタンを押す(=CIRCLE )
2, Options:
CROSS Install /reinstall thehack.
SQUARE Fix bootconfiguration (choose this if taiHEN isn't loadingon boot).
CIRCLE Exit without doinganything.
Locking sustem ..
(中略)
Theinstallationwas completed successfully.
suocess.
MBRwas detected butinstllation checksum dose notmatch.
Adumpwas createdat ux0:data/blocks.bin.
Press X tocontinue,any othekey toexit.
意訳:「ちょい待った。思ってた構成じゃないから危ないかもしれんわ。続ける?」
→✕ボタンを押す ※結局原因分かってないので自己責任でお願いします※
4,Locking sustem ..
(中略)
Theinstallationwas completed successfully.
suocess.
Enso導入が成功していると
・ファームウェアが3.65 変革 -2のままなっている
お疲れ様でした。
記事の本題は以上です。
VITAのセーブデータは暗号化されており、吸い出せてもエミュレータで使えないらしい。本体機体とセットで揃わないと使えない仕様。
調べたらセーブデータをここまでキツく縛ってるハードは他にない
だからメモリーカードのデータ管理でもPSPのセーブデータしか項目がなかったのか…
不便すぎる
当時の仮説
・HENkaku設定が悪さをしているのではないか(PSNの偽装を有効化、バージョンの偽装を有効化) →オフにしたが関係なかった
・本体にSD2VITAを刺しているのが良くないのではないか →抜いたが関係なかった
・enso.vpkの置き場所がルート(ux0:)が良くなかったのではないか →関係なかった
・VITAにメモリーカードを刺しているのが良くないのではないか →関係なかったが、データ保護的には抜くのが良さそう
・ゴミデータが残っていて悪さしているのではないか(手順を間違えたデータや古いデータなど) →関係ある可能性はある。最後までわからず
・Ensoのバージョンが古いのではないか →これが主要因だった
ゴミデータを疑った自分は正規のファームウェアに戻して、CFW化をやり直したりもした。
その際HENkakuすら入れられなくなってしまったので、抜け方を書いておく。
ENSO実行
↓
~~~ PressCIRCLE toaccept these terms orany otherkey to notaccept. → ◯ボタンを押す(=CIRCLE )
↓
Options:
CROSS Install /reinstall thehack.
SQUARE Fix bootconfiguration (choose this if taiHEN isn't loadingon boot).
CIRCLE Exit without doinganything.
→ △ボタンを押す(=TRIANGLE Uninstall thehack.)
↓
↓
↓
ファームウェアアップデートが促され、アップデートしないとメモリースティックが使えない
↓
↓
↓
HENloメニュー
・Exit
↓
「Eiting in 3」 の後に、以下のエラーメッセージがでて固まってしまう
Ifyou are stuckon thisscreen, hold downthe power button untilyourVita turns off, then turnit backon.
原因:恐らく余計なデータと衝突を起こしてる
(さっきのエラーメッセージ画面で)
↓
セーフモードが起動する
↓
↓
↓
HENloメニュー
・Exit
↓
その後
Install HENkaku、InstallVitaDeployを選択して、Exitを選択
この記事を書き終えた後に見つけたのですが、以下の記事の『改造方法』というところに情報がかなりまとまっています
Vita バージョンが低くてもPSNにサインイン&PSストアにアクセス(エラーNW-8942-3回避)&機器認証する方法(2025最新)
https://yyoossk.blogspot.com/2024/10/vitapsnps2024.html
今回VITAのセーブデータバックアップが主目的だったから、徒労でしかなかった
指摘、補足、最新情報あれば反応もらえるとありがたいです
def demo_unprocessed_emotion():
"""未処理感情システムのデモ。改善点(記憶再編集、言語学習、反応速度など)を活用"""
cognitive_queue = CognitiveQueue(attention_threshold=0.4)
print("=== 未処理感情システムのデモ(改善版) ===\n")
visual_signals = [
SensorySignal("visual", 0.7, -0.3),
SensorySignal("somatic", 0.4, -0.2)
]
visual_discomfort = cognitive_queue.register_new_emotion(visual_signals, 0.65)
print(f"生成された感情: {visual_discomfort}")
print(f"支配的モダリティ: {visual_discomfort.get_dominant_modality()}")
print(f"平均感情価: {visual_discomfort.get_average_valence():.2f}")
print(f"信号の反応速度: {[s.latency for s in visual_signals]}")
visual_discomfort.add_pattern_match("visual_discrepancy", 0.75)
try:
visual_discomfort.add_memory_path("/memory/recent/room_layout")
except ValueErroras e:
accessed_emotion = cognitive_queue.access_emotion(visual_discomfort)
print(f"新しい感情インスタンス: {accessed_emotion}")
print(f"構造化レベル(再編集後): {accessed_emotion.structure_level:.2f}")
# 3. 内受容感覚
intero_signals = [
SensorySignal("interoceptive", 0.6, -0.7),
SensorySignal("somatic", 0.5, -0.4)
]
intero_discomfort = cognitive_queue.register_new_emotion(intero_signals, 0.55)
print(f"生成された感情: {intero_discomfort}")
intero_discomfort.add_language_candidate("違和感", 0.4)
cognitive_queue.partially_process(intero_discomfort, "気分が悪い", 0.6, context="negative_mood")
print(f"学習済み言語: {cognitive_queue.learned_terms}")
audio_signals = [
SensorySignal("auditory", 0.8, 0.6),
SensorySignal("emotional", 0.7, 0.5)
]
audio_memory = cognitive_queue.register_new_emotion(audio_signals, 0.7)
print(f"生成された感情: {audio_memory}")
audio_memory.add_language_candidate("聞き覚えのあるメロディ", 0.75)
audio_memory.add_pattern_match("musical_fragment", 0.85)
audio_memory.add_memory_path("/memory/music/recent")
cognitive_queue.update_queue()
status = cognitive_queue.get_status_summary()
print(f"未処理感情の総数: {status['total_unprocessed']}")
print(f"処理キューのサイズ: {status['processing_queue_size']}")
print(f"モダリティ分布: {status['modality_distribution']}")
print(f"感情価分布: {status['valence_distribution']}")
print(f"学習済み言語数: {status['learned_terms_count']}")
# 6. 処理対象の取得
next_emotion = cognitive_queue.get_next_for_processing()
print(f"処理対象: {next_emotion}")
if next_emotion:
cognitive_queue.partially_process(next_emotion, "視覚的な違和感を感じている", 0.85, context="visual_anomaly")
print(f"処理後の状態: {next_emotion}")
print(f"構造化レベル: {next_emotion.structure_level:.2f}")
print(f"最良の言語マッチ: {next_emotion.get_best_language_match()}")
print("\n8.モダリティによる感情検索(インデックス使用)")
matches = cognitive_queue.lookup_by_modality("auditory")
print(f"検索結果数: {len(matches)}")
foremotion in cognitive_queue.unprocessed_emotions:
emotion.apply_decay(3.0)
cognitive_queue.update_queue()
status = cognitive_queue.get_status_summary()
print(f"時間経過後の未処理感情の総数: {status['total_unprocessed']}")
print(f"時間経過後の平均顕在性: {status['average_salience']:.2f}")
if __name__ == "__main__":
demo_unprocessed_emotion()
増田で 3 分以上投稿されない期間があるのか気になったから調べた
直近の 1 日だとこれだけあった
2025-03-22 00:14 -- 2025-03-22 00:182025-03-22 00:10 -- 2025-03-22 00:142025-03-21 07:56 -- 2025-03-21 08:002025-03-21 07:50 -- 2025-03-21 07:562025-03-21 07:44 -- 2025-03-21 07:482025-03-21 07:28 -- 2025-03-21 07:322025-03-21 06:58 -- 2025-03-21 07:032025-03-21 06:45 -- 2025-03-21 06:542025-03-21 06:32 -- 2025-03-21 06:372025-03-21 05:56 -- 2025-03-21 06:042025-03-21 05:51 -- 2025-03-21 05:562025-03-21 05:34 -- 2025-03-21 05:382025-03-21 05:30 -- 2025-03-21 05:342025-03-21 05:00 -- 2025-03-21 05:092025-03-21 04:56 -- 2025-03-21 05:002025-03-21 04:45 -- 2025-03-21 04:502025-03-21 04:09 -- 2025-03-21 04:132025-03-21 03:41 -- 2025-03-21 03:452025-03-21 03:29 -- 2025-03-21 03:392025-03-21 03:03 -- 2025-03-21 03:072025-03-21 02:56 -- 2025-03-21 03:022025-03-21 02:44 -- 2025-03-21 02:482025-03-21 02:33 -- 2025-03-21 02:372025-03-21 02:21 -- 2025-03-21 02:272025-03-21 02:14 -- 2025-03-21 02:19
秒はみてないから 00:01:01 - 00:03:59 はほぼ 3 分だけど 2 分扱いだし、 00:01:59 - 00:04:00 はほぼ 2 分だけど 3 分扱いになるくらいの誤差はある
日によって違うだろうし、曜日の影響も大きそうだから 1 ヶ月分くらい調査しようかと思ったけど、
増田の量が思いの外多すぎて 1 日分だけでも100 ページ以上取得しないといけなかった
件数だと 2500 以上
一応取得に使ったコードも載せとく
import{ setTimeout} from"node:timers/promises"import{Browser} from"happy-dom"const getTimestamps =asyncfunction* (){constbrowser =newBrowser()const page =browser.newPage()try{for (let num = 1; ; num++){await setTimeout(3000)await page.goto(`https://anond.hatelabo.jp/?page=${num}`)constdays = page.mainFrame.document.querySelectorAll(".day")for (const day ofdays){constdate = day.querySelector("h2 .date").textContent.trim()for (const footer of day.querySelectorAll(".sectionfooter")){consttime = footer.textContent.match(/\d{2}:\d{2}/)[0]yield`${date}${time}`}}}}finally{await page.close()awaitbrowser.close()}}constdiff = (a, b) =>{returnnewDate(b +":00") -newDate(a +":00")}let prev =nullforawait (constdatetime of getTimestamps()){if (prev &amp;&amp;diff(datetime, prev)>1000 * 60 * 3){console.log(datetime, prev)}prev =datetime}
基本は空いても 5 分程度であり、最大でも10 分となっている