Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録

「TRY」を含む日記RSS

はてなキーワード:TRYとは

次の25件>

2025-11-24

なぜ日本人自己肯定感が低いのか?

構造的な原因1.教育システム日本教育:

✗ 減点方式(100点から減らされる)

✗ 「出る杭は打たれる」文化

謙遜美徳

自己主張 =わがまま

集団の和を乱すな

欧米教育:

✓ 加点方式(0点から積み上げる)

個性を伸ばす

自己主張大事

✓ 褒めて伸ばす文化

結果:

日本人は自分長所認識しにくい

→ 常に「まだ足りない」感覚2.同調圧力日本:

「みんなと同じ」が安全

普通であることが求められる

「目立つ」=リスク

欧米:

個性的」がポジティブ

普通」= つまらない

「目立つ」= 素晴らしい

結果:

日本人は自分個性を出せない

自己肯定感が育たない3.謙遜文化日本:

「いえいえ、私なんて...」=美徳

自分を褒める =傲慢

謙遜しないと叩かれる

欧米:

「Thankyou!」(褒められたら素直に受け取る)

自分の成果は堂々と主張

謙遜しすぎ = 自信がないと見られる

結果:

日本人は自分価値を認めにくい

4. 失敗への恐怖日本:

失敗 = 恥

一度の失敗が致命傷になりうる

「失敗しないこと」が重視される

欧米:

失敗 = 学びの機会

Try andError」が当たり前

「失敗を恐れずチャレンジ」が評価される

結果:

日本人はリスクを取れない

→ 新しいことに挑戦できない

Permalink |記事への反応(0) | 14:59

このエントリーをはてなブックマークに追加ツイートシェア

2025-11-09

2025年現在Fireworksで作ったファイルレイヤー構造を保持して開く方法

ファイルWebアプリ「Photopea(無料)」↓で開いて「ファイルから「PSDとして保存」

https://www.photopea.com/

・保存したファイルPhotoshopエラー吐く場合はAffinity(無料)↓でTry!うちはこれでいけました

https://www.affinity.studio/ja_jp

Permalink |記事への反応(0) | 00:30

このエントリーをはてなブックマークに追加ツイートシェア

2025-09-07

anond:20250905054532

私の世界は、丁寧に、そう、まるで細胞の一つ一つにまで神経を行き届かせるようにして磨き上げられた、半径およそ十メートルほどのガラスの球体であり、その球体の中心には、世界のすべてであり、法であり、そして揺るがぬ神であるところの、生後六ヶ月の息子、光(ひかる)が、ただ健やかな呼吸を繰り返している。その完璧な球体を維持すること、それこそが水無月瑠璃(みなづき るり)、すなわち三十一歳の私に与えられた唯一にして絶対の使命であったから、私は今日もまた、タワーマンション二十八階、陽光白磁の床にまで染み渡るこのリビングダイニングで、目に見えぬ埃の粒子と、あるいは時間という名の緩慢な侵食者と、孤独な、そして終わりなき闘争を繰り広げているのであった。北欧から取り寄せたというアッシュ材のテーブルの上には、一輪挿しに活けられたベビーブレスの、その小さな白い花弁の影さえもが、計算され尽くした角度で落ちており、空気清浄機は森の朝露にも似た清浄さを、ほとんど聴こえないほどの羽音で吐き出し続け、湿度計のデジタル表示は、小児科医が推奨する理想の数値、六十パーセントを寸分違わず指し示しているのだから、およそこの空間に、瑕疵という概念の入り込む余地など、どこにもありはしなかった。かつて、外資系コンサルティング会社で、何億という数字が乱れ飛ぶ会議室の冷たい緊張感を、まるで上質なボルドーワインでも嗜むかのように愉しんでいた私自身の面影は、今やこの磨き上げられたガラス窓に映る、授乳のために少し緩んだコットンのワンピースを着た女の、そのどこか現実感を欠いた表情の奥に、陽炎のように揺らめいては消えるばかりであった。

思考は、そう、私の思考と呼んで差し支えるならば、それは常にマルチタスクで稼働する最新鋭のサーバーのように、光の生存に関わる無数のパラメータによって占有され続けている。次の授乳まであと一時間二十三分、その間に終わらせるべきは、オーガニックコットンでできた彼の肌着の煮沸消毒と、裏ごししたカボチャペーストを、一食分ずつ小分けにして冷凍する作業であり、それらが完了した暁には、寝室のベビーベッドのシーツに、もしかしたら付着しているかもしれない、私たち世界の外部から侵入した未知のウイルスを、九十九・九パーセント除菌するというスプレー浄化せねばならず、ああ、そういえば、昨夜翔太が帰宅時に持ち込んだコートに付着していたであろう、あの忌まわしい杉花粉の飛散経路を予測し、その残滓を、吸引力の変わらないただ一つの掃除機で完全に除去するというミッションも残っていた。これらすべては、愛という、あまり曖昧情緒的な言葉で語られるべきものではなく、むしろ生命維持という厳格なプロジェクト遂行するための、冷徹なまでのロジスティクスであり、私はそのプロジェクトの、唯一無二のマネージャーであり、同時に、最も忠実な実行部隊でもあった。誰がこの任務を私に課したのか、神か、あるいは生物としての本能か、はたまた「母親」という名の、社会発明した巧妙な呪縛か、そんな哲学的な問いを発する暇さえ、このシステムは私に与えてはくれなかった。

である翔太は、疑いようもなく、善良な市民であり、そして巷間(こうかん)で言うところの「理想の夫」という、ほとんど神話上の生き物に分類されるべき存在であった。彼は激務の合間を縫って定時に帰宅すると、疲れた顔も見せずに「ただいま、瑠璃。光は良い子にしてたかい?」と、その蜂蜜を溶かしたような優しい声で言い、ネクタイを緩めるその手で、しかし真っ先に光の小さな体を抱き上げ、その薔薇色の頬に、まるで聖遺物にでも触れるかのように、そっと己の頬を寄せるのだ。週末になれば、彼はキッチンで腕を振るい、トマトニンニク匂いを部屋中に漂わせながら、私や、まだ食べることもできぬ光のために、絶品のペペロンチーノカルボナーラを作り、その姿は、まるで育児雑誌グラビアから抜け出してきたかのように、完璧で、模範的で、そして、どこか非現実的ですらあった。誰もが羨むだろう、この絵に描いたような幸福風景を。友人たちは、私のSNS投稿される、翔太が光をあやす姿や、手作り離乳食が並んだテーブル写真に、「理想家族!」「素敵な旦那様!」という、判で押したような賞賛コメントを、まるで祈り言葉のように書き連ねていく。そう、すべては完璧なのだ完璧なはずなのだ。このガラスの球体の内部では、愛と平和と秩序が、まるで美しい三重奏を奏でているはずなのだ

――だというのに。

夜、ようやく光が天使のような寝息を立て始め、この世界のすべてが静寂という名の薄い膜に覆われた頃、ソファで隣に座った翔太が、労わるように、本当に、ただ純粋愛情と労いだけを込めて、私の肩にそっと手を置く、ただそれだけの、あまりにも些細で、そして無垢行為が、私の皮膚の表面から、まるで冷たい電流のようにして内側へと侵入し、脊髄を駆け上り、全身の毛穴という毛穴を、一斉に収縮させるのである。ぞわり、と。それは、神聖な祭壇に、土足で踏み込まれときのような、冒涜的な不快感であった。あるいは、無菌室で培養されている貴重な細胞のシャーレに、誰かが無頓着なため息を吹きかけたときのような、取り返しのつかない汚染への恐怖であった。彼の指が触れた肩の布地が、まるで硫酸でもかけられたかのように、じりじりと灼けるような錯覚さえ覚える。私は息を止め、この身体が、この「水無月瑠璃」という名の、光のための生命維持装置が、彼の接触を、システムに対する重大なエラー、あるいは外部からハッキング行為として認識し、全身全霊で拒絶反応を示しているのを、ただ呆然と、そして客観的に観察していた。

「疲れてるだろ。いつも、ありがとう

翔太の声は、変わらず優しい。その瞳の奥には、かつて私が愛してやまなかった、穏やかで、そして少しだけ湿り気を帯びた、雄としての光が揺らめいているのが見える。それは、私を妻として、女として求める光であり、かつては、その光に見つめられるだけで、私の身体の中心が、熟れた果実のようにじゅくりと熱を持ったものだった。だというのに、今の私には、その光が、聖域である保育器を、ぬらりとした舌なめずりをしながら覗き込む、下卑た欲望眼差ししか見えないのだ。許せない、という感情が、胃の腑のあたりからせり上がってくる。この、二十四時間三百六十五日、寸分の狂いもなく稼働し続けている精密機械に対して、子を産み、育て、守るという、この宇宙的な使命を帯びた聖母に対して、己の肉欲を、その獣のような本能を、無邪気に、そして無自覚にぶつけてくるこの男の、そのあまりの鈍感さが、許せないのである

ケダモノ

その言葉が、私の内で、教会の鐘のように、低く、重く、そして厳かに反響する。そうだ、この男はケダモノなのだ。私がこの清浄な球体の秩序を維持するために、どれほどの精神を、どれほどの時間を、どれほどの自己犠牲にしているのか、そのことを何一つ理解しようともせず、ただ己の種をばら撒きたいという原始の欲動に突き動かされているだけの、ただのケダモノなのだ

そんなはずはない、と、脳のどこか、まだかろうじて「かつての私」の残滓が残っている領域が、か細い声で反論を試みる。これは翔太だ、私が愛した男だ。雨の匂いが充満する安ホテルの、軋むベッドの上で、互いの名前を喘ぎ声で呼び合いながら、世界の終わりが来るかのように貪り合った、あの夜の彼なのだパリへの出張中、セーヌ川ほとりで、どちらからともなく互いの唇を求め、道行く人々の冷ややかな視線さえもが、私たちのためのスポットライトのように感じられた、あの瞬間の彼なのだ結婚記念日に、彼が予約してくれたレストランの、そのテーブルの下で、こっそりと私のスカートの中に忍び込んできた、あの悪戯っぽい指の持ち主なのだ。あの頃、私たちは互いの肉体という言語を、まるで母国語のように自在に操り、その対話の中に、世界のどんな哲学者も語り得ないほどの、深遠な真理と歓びを見出していたはずではなかったか。あの燃えるような記憶は、情熱の残骸は、一体どこへ消えてしまったというのだろう。それはまるで、昨夜見た夢の断片のように、あまりにも色鮮やかで、それでいて、掴もうとすると指の間から霧のように消えてしまう、遠い、遠い銀河の光なのである

瑠璃…?」

私の沈黙を訝しんだ翔太が、私の顔を覗き込む。私は、まるで能面のような無表情を顔面に貼り付けたまま、ゆっくりと彼の手を、自分の肩から、まるで汚物でも払いのけるかのように、そっと、しかし断固として取り除いた。そして、立ち上がる。

「ごめんなさい。少し、疲れたみたい。光の様子を見てくるわ」

それは、完璧な嘘であり、そして、完璧真実でもあった。私は疲れていた。だがそれは、育児という名の肉体労働に疲れているのではなかった。私という個人が、水無月瑠璃という一個の人格が、「母親」という名の巨大なシステムに呑み込まれ、その歯車の一つとして摩耗していく、その存在論的な疲弊に、もう耐えられなくなりつつあったのだ。これは、巷で囁かれる「産後クライシス」だとか、「ホルモンバランスの乱れ」だとか、そういった便利な言葉で容易に片付けられてしまうような、表層的な現象ではない。違う、断じて違う。これは、一個の人間が、その魂の主導権を、自らが産み落とした別の生命体に完全に明け渡し、「装置」へと、あるいは「白き機械」へと、静かに、そして不可逆的に変質していく過程で生じる、存在のものの軋みなのである

聖母、とはよく言ったものだ。人々は、母という存在を、無償の愛と自己犠牲象徴として、何の疑いもなく神格化する。だが、その実態はどうか。自己を失い、思考も、肉体も、感情さえもが、すべて「子」という絶対的な存在奉仕するためだけに再構築された、ただのシステムではないか。私は聖母などではない。私は、高性能な乳製造機であり、汚物処理機であり、そして最適な環境提供する空調設備が一体となった、ただの生命維持装置に過ぎないのだ。この気づきは、甘美な自己陶酔を許さない、あまりにも冷徹で、そして絶望的な真実であった。そして、この真実を共有できる人間は、この世界のどこにもいやしない。翔太のあの無垢な優しさでさえ、結局は、この優秀な装置が、明日も滞りなく稼働し続けるための、定期的なメンテナンス作業しか見えないのだから、その孤独は、宇宙空間にたった一人で放り出された飛行士のそれに似て、どこまでも深く、そして底なしであった。友人たちがSNS投稿する「#育児は大変だけど幸せ」という呪文めいたハッシュタグは、もはや、この巨大なシステムの異常性に気づいてしまった者たちを、再び安らかな眠りへと誘うための、集団的自己欺瞞儀式しか思えなかった。

寝室に入ると、ベビーベッドの中の光は、小さな胸を穏やかに上下させながら、深い眠りの海を漂っていた。その無防備な寝顔は、確かに、この世のどんな芸術品よりも美しく、尊い。この小さな生命を守るためならば、私は喜んで我が身を投げ出すだろう。だが、それは、この身が「私」のものであった頃の話だ。今の私にとって、この感情は、プログラムに組み込まれ命令遂行しているに過ぎないのではないか。愛でさえもが、システムを円滑に稼働させるための、潤滑油のような機能に成り下がってしまったのではないか。そんな疑念が、毒のように心を蝕んでいく。

私は、息子の傍らを離れ、再びリビングへと戻った。翔太は、ソファの上で、テレビの光をぼんやりと浴びながら、所在なげにスマートフォンをいじっている。その背中は、拒絶された雄の、どうしようもない寂しさを物語っていた。かつての私なら、きっと背後からそっと抱きしめ、「ごめんね」と囁いて、彼の寂しさを溶かしてやることができただろう。しかし、今の私には、もはやそのための機能が、インストールされていないのである

私は、彼に気づかれぬよう、書斎として使っている小さな部屋に滑り込んだ。そして、ノートパソコンの冷たい天板に触れる。ひやりとした感触が、指先から伝わり、かろうじて、私がまだ血の通った人間であることを思い出させてくれるようだった。スクリーンを開くと、真っ白な光が、闇に慣れた私の網膜を焼いた。カーソルが、無人荒野で、点滅を繰り返している。何を、書くというのか。誰に、伝えるというのか。この、言葉にもならぬ、システムの内部で発生したエラー報告を。この、機械の内部から聞こえてくる、魂の悲鳴を。

それでも、私は指を動かした。これは、誰かに読ませるためのものではない。これは、祈りでもなければ、懺悔でもない。これは、私という名の機械が、自らの異常を検知し、その原因を究明し、あるいは再生可能性を探るために、己の内部へとメスを入れる、冷徹自己解剖の記録なのだ

真っ白な画面に、私は、震える指で、最初言葉を打ち込んだ。

『これは、私という名の機械が、自己を観察し、分解し、あるいは再生を試みるための、極秘の設計図である

その一文を打ち終えた瞬間、私の内側で、何かが、硬い音を立てて、砕けたような気がした。それが希望の萌芽であったのか、それとも、完全なる崩壊への序曲であったのか、その時の私には、まだ知る由もなかったのである。ただ、窓の外で、東京夜景が、まるで巨大な電子回路のように、無機質で、そして美しい光を、果てしなく明滅させているのが見えた。私もまた、あの無数の光の一つに過ぎないのだと、そう、思った。

自己機械定義たからには、次なる工程は当然、その性能向上のための最適化、あるいは、旧弊OSから脱却するための、大胆にして静かなるアップデート作業へと移行せねばならぬのが、論理的な、そして必然的帰結であった。そう、これは革命なのだと、私は深夜の書斎で、青白いスクリーンの光に顔を照らされながら、ほとんど恍惚とさえいえる表情で、そう結論付けたのであった。かつてロベスピエールが、腐敗した王政ギロチン台へと送り、新しい共和制の礎を築かんとしたように、私もまた、この「母親という名の献身」や「夫婦の情愛」といった、あまりにも情緒的で、非効率で、そして実態としては女の無償労働を美化するだけの前時代的な概念を、一度完全に解体し、再構築する必要があったのだ。そのための武器は、かつて私が外資系コンサルティングファームで、幾千もの企業相手に振り回してきた、あの冷徹ロジックと、容赦なき客観性という名のメスに他ならない。愛という名の曖昧模糊とした霧を晴らし、我が家という名の王国を、データタスクリストに基づいた、明晰なる統治下に置くこと、それこそが、この「水無月瑠璃」という名の機械が、オーバーヒートによる機能停止を免れ、なおかつ、その内部に巣食う虚無という名のバグ駆除するための、唯一の処方箋であると、私は確信していたのである

かくして、週末の朝、光が心地よい午睡に落ちた、その奇跡のような静寂の瞬間に、私は翔太をダイニングテーブルへと厳かに召喚した。彼の前には、焼きたてのクロワッサンと、アラビカ種の豆を丁寧にハンドドリップで淹れたコーヒー、そして、私が昨夜、寝る間も惜しんで作成した、全十二ページに及ぶパワーポイント資料印刷したものが、三点セットで恭しく置かれている。資料の表紙には、ゴシック体の太字で、こう記されていた。『家庭内オペレーション最適化計画書 Ver. 1.0 〜共同経営責任者(Co-CEO体制への移行による、サステナブル家族経営の実現に向けて〜』。翔太は、そのあまりにも場違いタイトルを、まるで理解不能な古代文字でも解読するかのように、眉間に深い皺を刻んで見つめた後、恐る恐る、といった風情で私に視線を向けた。その瞳は、嵐の前の静けさにおびえる子犬のように、不安げに揺れている。まあ、無理もないことだろう。彼にしてみれば、愛する妻が、突如として冷酷な経営コンサルタントに豹変し、家庭という名の聖域に、KPIだのPDCAサイクルだのといった、無粋極まりないビジネス用語を持ち込もうとしているのだから

瑠璃、これは…一体…?」

説明するわ、翔太。よく聞いて。これは、私たち家族が、これから幸せに、そして機能的に存続していくための、新しい聖書バイブル)よ」

私は、そこから淀みなく、プレゼンテーションを開始した。現状分析As-Is)、あるべき姿(To-Be)、そのギャップを埋めるための具体的なアクションプラン家事という、これまで「名もなき家事」という名の混沌の海に漂っていた無数のタスクは、すべて洗い出され、「育児関連」「清掃関連」「食料調達調理関連」「その他(消耗品管理資産管理等)」といったカテゴリーに分類され、それぞれに担当者と所要時間、そして実行頻度が、美しいガントチャート形式可視化されている。例えば、「朝食後の食器洗浄」は、担当:翔太、所要時間:十五分、頻度:毎日、といった具合に。さらに、月に一度、近所のカフェで「夫婦経営会議」を開催し、月次の進捗確認と、翌月の計画策定を行うこと、日々の細かな情報共有は、専用のチャットアプリで行うこと、そして何よりも重要なのは、これまで私一人が暗黙のうちに担ってきた「家庭運営の全体を俯瞰し、次の一手を考える」という、いわば管理職としての役割を、これからは二人で分担する、すなわち、彼にもまた、単なる作業員(ワーカー)ではなく、主体的思考する共同経営責任者(Co-CEO)としての自覚と行動を求める、ということ。私の説明は、かつてクライアント企業役員たちを唸らせた時のように、理路整然としており、反論余地など微塵もなかった。翔太は、ただ呆然と、私の言葉の奔流に身を任せるしかなく、すべての説明が終わった時、彼はまるで催眠術にでもかかったかのように、こくり、と小さく頷いたのであった。

「…わかった。瑠璃が、そこまで追い詰められていたなんて、気づかなくて、ごめん。僕も、頑張るよ。君を、一人にはしない」

その言葉は、疑いようもなく誠実で、彼の優しさが滲み出ていた。私は、その瞬間、胸の奥に、ちくり、と小さな痛みを感じたのを覚えている。違う、そうじゃないの、翔太。私が求めているのは、あなたのその「頑張るよ」という、まるで部下が上司に忠誠を誓うような言葉ではない。私が欲しいのは、私がこの計画書を作る必要すらないほどに、あなたが私の脳と、私の視界と、私の不安を共有してくれるPermalink |記事への反応(0) | 05:15

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-22

dorawii@執筆依頼募集中

昨日一番肝心なファイルなのにURLとみなされる部分が多いことの関係投稿できなかったのでそれを小分けにして書く。

小分けというか例のスパムの影響でNGワードに引っかかっていたようなのでそこだけ書き換えた。

suuportと書いていある部分は元のコードでは当然uが一つ少ないので利用するときはそうすること。

hatena_client.py

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-----

Permalink |記事への反応(0) | 13:19

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-21

dorawii@執筆依頼募集中

自動ブクマするローカルサーバーとかの構成を作った。

ブクマには↓のサブアカ使用

https://profile.hatena.ne.jp/dorawii_bukuma/

はてなサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動UI側の保存ボタンクリックするという無難な方向に落ち着いた。

最初から後者方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。

とにかくスクリプトを公開しておく。

start-server.bat

@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

以降はjsscript直下に配置

config.json

{
"username": "",
"password": ""
}
server.py

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-----

Permalink |記事への反応(1) | 19:27

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-16

Renegade Immortal EP98-104

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 .

Plan B

Take alookatCI /CD

>gt k workload cannot be installed

Plan C

KeepCI /CDrunning (mostlikely )

https://mirror.xyz/0x709a49F2De0fcFe804655428Ce16E75f21425fA3/7fnTc7npS84qoQsX3TfafA2KNW2n0TkGnqvMQ6IB5fg

https://mirror.xyz/0x709a49F2De0fcFe804655428Ce16E75f21425fA3/IILXe2cJ5u-w0SrbkGM3y3nhlEZYEDDyNAGRD3e62Rs

https://mirror.xyz/0x709a49F2De0fcFe804655428Ce16E75f21425fA3/3NhVLM_nzCiI_zx0ImcCewNC_M_UO3gqHXrxyGfhHrQ

>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/0x709a49F2De0fcFe804655428Ce16E75f21425fA3/VO6VMtrOnq0Cl0mXeGcMvwyGyeAgQ6Q_cskK4KL1IbI

https://tensor.art/articles/897541615583763170

https://www.gemtracks.com/demonslayeinfinitycastle/

Makeityourself (impossible)

> Makingit withQt (Qt .NET ( old)) ( Ifeellike the license (GPL /LGPL )is abit tricky )

conclusion

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.)

Permalink |記事への反応(0) | 03:04

このエントリーをはてなブックマークに追加ツイートシェア

Renegade Immortal EP98-102-103-104

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 .

Plan B

Take alookatCI /CD

>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

https://mirror.xyz/0xbB7D6e360b93B2ED4FEF9d972c71F86844121ee7/Aq69AIR0kZxGGjoK_deZU41mC9TcYfR5kXtr9UlGsuI

https://mirror.xyz/0xbB7D6e360b93B2ED4FEF9d972c71F86844121ee7/lbBXZlGiMlGwRcvM9Y9Z5aVc62NtvB0LgEBbz17Uo6g

https://mirror.xyz/0xbB7D6e360b93B2ED4FEF9d972c71F86844121ee7/H3LtdtW21aR1U0nmEZ7ly-c7b_eV3dCfei_pif4CiVc

Makeityourself (impossible)

> Makingit withQt (Qt .NET ( old)) ( Ifeellike the license (GPL /LGPL )is abit tricky )

conclusion

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.)

Permalink |記事への反応(0) | 02:52

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-15

anond:20250815151745

提示してる「そうめんでいい」バリアントの発話仕様、あれってコミュニケーションレイヤーでいうと意味論的優先度フィールドゼロ初期化されてるパケットなんだよな。

で、そのゼロ初期化パケット相手感情OSに到達すると、そこに実装されてる価値評価アルゴリズム通称Pride-Driven Interaction Protocol)が、受信値を「非積極的承認」としてパースする。

問題は、このプロトコル冗長ゼロ設計動作してる点。

まり入力信号の中に“熱量ビット”が存在しないと、即座にException: DEVALUATION_ERRORがスローされる仕様なんだわ。

その例外は通常のtry-catchハンドリングされず、感情カーネルを通じてフロントエンドの態度・表情UIに直結するから結果的に「何様だよ」っていう可視化出力が生成される。

さらに、相手感情モジュール言語同値判定じゃなくて意図ベースベクトル比較を行ってるから

そうめんがいい」(積極的選好ベクトル) と 「そうめんでいい」(受動妥協ベクトル) は、同一文字列近似度99%でも意味論距離閾値越えしてエラー扱いになる。

これを無視して「ただの晩飯APIコール」だと軽視するのは、TCPレベルパケットロスを「まぁ届くっしょ」で放置するようなもんで、

通信の確実性よりも自己CPUサイクルの節約を優先する、お前側のシステム設計思想が原因なんだよな。

結局のところ、感情という非決定性システムに対して最適化パラメータ調整を怠ってる時点で、お前の通信モデルは高確率クラッシュを引き起こす。

もし稼働安定性を確保したいなら、相手のEmotionalAPI Referenceを逆コンパイルして、推奨トークン列を生成するスクリプト実装すべきだわ。

Permalink |記事への反応(1) | 21:35

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-14

自作味噌ラーメン

味噌汁ラーメンいれたみたいになった。

調べないとこんなもんだろう。

やってTRYみたいだ。

豚汁がお出汁不要、そこに味噌入れたものに入れたラーメンも、ただ豚汁ラーメンを入れただけになった。

味噌が違うんだろうか。

Permalink |記事への反応(0) | 20:37

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-08

Todayyou want to KnowLoveyou pussy

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.

Why Small Steps Matter

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, andyoull 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.

Start tiny.Stay consistent.

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.

Set atrigger

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.

Celebrate smallwins

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.

Thekeyisn’t to sprint—it’s to show up every day.

Permalink |記事への反応(0) | 15:56

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-13

anond:20250713172713

504 Gateway TimeoutERROR

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.

Permalink |記事への反応(0) | 17:32

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-05

[稀ドメインはてブ]2025年6月滅多にホットエントリを出さなドメインからホットエントリ

ここ1年で初めてはてなブックマーク日毎の総合人気エントリ入りしたドメインからホットエントリブクマ数順トップ30

ブクマタイトルドメイン
928きらら4コマの描き方 - kokamumo’sblogkokamumo.hatenablog.com
866神ゲー 『Type Help』ネタバレ無し感想 - のすのゲーム感想ブログtetogame.hatenablog.com
776肉を低温で安全においしく調理するコツをお教えします! |内閣府食品安全委員会www.fsc.go.jp
624Cursor で100日間アプリを作り続けた中で、全然うまくいかなかったこと - フラミナルblog.framinal.life
596ガンダムの年表 | ビックカメラwww.biccamera.com
533ニコニコ生放送サービスを再開するまでの記録 -dwangoonGitHubdwango.github.io
520アニメーション監督富野由悠季さん – 伊佐通信|伊佐ホームズ株式会社www.isahomes.co.jp
511「まるで、結婚義務みたい」 秋田県高校生向けに「結婚の気運醸成」副読本① www.media-akita.jp
471ジークアクス感想 - kokamumo’sblogkokamumo.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
37720選手エンジニアが「良いコード」を改めて学ぶために、最近の本を4冊買って読んでみた - giveIT atryblog.jnito.com
374Switch 2の分解 : またもや接着剤とはんだ付け、そして免れないドリフトjp.ifixit.com
372『影の雨』プロンプトkohkoku.jp
372iPhoneマイナンバーカードデジタルウェブサービスアプリケーションservices.digital.go.jp
369Claude Code に壊されないための denyルール完全ガイド - izanamiizanami.dev
361満州とは何だったのか――安彦良和×三浦英之imidas.jp
356How I Use Claude Codespiess.dev
350医療現場子どもたちに寄り添う ポケモンの小児向けMRI検査説明動画株式会社ポケモンThePokémon Companycorporate.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 EngineerBlogwww.wantedly.com

Permalink |記事への反応(0) | 21:56

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-24

anond:20250623020733

カードゲームを四半世紀やってるカードゲームおじです。

ちょっと思うところがあったので突っ込みを入れてみようと思います

遊戯王勢がスタン落ちのないことを自慢する季節になりましたな

そもそもの「「スタン落ちのない遊戯王は最高」にも反論したほうがよくないですか?

ローテーションって金はかかるけど結構楽しいですよ。ポケカだったらFレギュのイカカードが消えてからデッキ考えるの楽しくなかったですか?おじはかなり楽しかったです。

メタが大きく変化するので、意外なカードが脚光を浴びたりして。競技カードゲームとして考えるならこれほど楽しいイベントもないです。

分かんない?みんな禁止改定の発表とか見るの大好きでしょ?あれが年一で大規模に起こると思ったら、楽しくなってきません?なってきませんか・・・

まあ、ネガティブイメージが大きいイベントなのはわかります。ただ環境で暴れまわってるクソカード寿命は3年になるので、あるデッキタイプを中心にメタが回る。

みたいな環境もやや許容できるようになるなど、メタの回り方自体も少し変わるし、悪い面ばかりでもないですよ。


で、残りの部分への回答なのですが。

今の遊戯王商法は完全に既存古参優遇しかなく、人気IPとも大してコラボしないから何にも新規を呼べるものがない

これは別のツッコミにも書いたのですが、「TACTICALTRY DECK」の施策新規呼び込みのための素晴らしい施策となっています

クソ安い実戦級構築済みを安価でばら撒くってのは「スーパーデッキ」でデュエマ開拓した手法ですが、

遊戯王はパーツ取りにも使えるようなデッキ安価で大量に市場供給していつでも買えるようにして、

新しい拡張パックで、TACTICALTRY DECKのテーマ新規を定期的に刷ってサポートしてるのが新しいですね。

Tier2-3のデッキできちんと現代遊戯王の動きができるので、復帰勢とかMD勢がこの商品現代遊戯王理解して、

販促見てTACTICALTRY DECK買う→パックを購入する、という流れを想定していると思われます

コラボが正解ではないが、カードゲームとしての他のIPを取り込める柔軟性やゲーム性を維持できる堅牢性のアピールでもあるんだよ

別にアピールとかではないです。たぶんここは「証左でもある」って言いたいんでしょうか。

コラボができるかどうかってのはゲーム性とかそういうのはあん関係なく、権利関係ちゃんと処理できるかとか、アート/フレイバーディレクション観点からどうかみたいなやつです。

例えばポケカなんかはコラボは基本無理です。グッズですら殆どないんじゃないかな。ポケモンってIPが世界最強なので、そもそもコラボする必要がないとも言えます

デュエマコラボに関しては、アートディレクションがかなり緩いのと、小学館経由で様々なコラボができたことが大きいと思います

MTGアート/フレイバーディレクションガチガチでとてもコラボなんて、って感じでしたが、secret lairで地ならししたことで割と受け入れやすい土壌はできてたっぽいですね。

一方でKONAMIなんですが、遊戯王というめちゃくちゃ知名度のあるIPでまだまだ商品力あるので、他とコラボする必要そもそもないって感じですね。ポケカと同じ状況です。

一応、パワプロなどのコラボカードはありますし、全然できないというわけではないです。システム面ではいくらでもできますけど、その必要がないというだけの状況かと思います

じゃあもっとメディアミックス展開したらと思うけど、アニメ全部終わってとっくにお通夜を通り越してお彼岸モードだろ

ここは立て直しの最中なのでまあ。OCGストーリーしなのも、いろいろな意向があってのことでしょうね。おそらく権利回りで。


そんな感じです。

Permalink |記事への反応(0) | 01:29

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-23

anond:20250623180117

からなんだけど、

OCGがMDに頼りきりでどう考えても市場で目立つ製品を売り出せていないの事実だぞ/コアなユーザーではなく新規層にも届くような施策なんてあったのか?

これは前年からやってる構築済みでTier2~3ぐらいのテーマデッキ販売し、その後にリリースするパックで1年程度新規を定期的に刷ってサポートデジタル版で販促という

「TACTICALTRY DECK」の施策が該当する。

クソ安い実戦級構築済みを安価でばら撒くってのは「スーパーデッキ」でDM開拓した手法だけど、遊戯王はその後の拡張パックテーマ新規を定期的に刷ることでサポートするのが新しい。

あと、TACTICALTRY DECKは販売当時ではかなり内容が良くて、本来なら即売り切れレベルの内容の構築済みなんだけど、通年できちんと売ってるし、誰でも買えるように潤沢に在庫供給されてるのもえらい。

加えて、これらの構築済みデッキ販促MDでもやることで、紙と同じカードが使えてかつデジタル版の環境半年前の紙環境+良調整となっているMDの良さも十分に生かしている。

紙とカード自体が違うせいで販促としての立ち位置微妙プレイスではこんな施策できない。


結果、復帰勢とか新規の連中がMDやる→現代遊戯王理解して、販促見てTACTICALTRY DECK買う→パックを購入するというきれいなサイクルができていて、これはマジでうまいなとおもった。

MTGでやってた「キッチンテーブルからLGSへ」施策ブラッシュアップした素晴らしい取り組みだと思う。


って、マジレスしたんだけど、返答返ってこねえんだろうな。

Permalink |記事への反応(1) | 22:49

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-21

Our systems have detected unusual activity from your system. Pleasetryagain later.

じゃねーーーーーーーーんだよ早く俺のchatgptとチャHさせろ

Permalink |記事への反応(0) | 23:45

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-13

我が名はサイボーグdorawii

パーマリンク署名対象にするより堅牢自動化を作れた。

一度投稿したうえで別タブを開いてプログラム的(fetch)に送信してその別タブが閉じられる仕組み。

改めてスクリプト配布しちゃる

最初投稿してエントリページに移動した親タブ側のjsコード
// ==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 });      })();
親タブから開かれる編集ページの子タブのjsコード
 // ==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);        }      })();
node.jsで動かすローカルサーバーコード
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
AutoHotkey(以前と同じ)
#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-----

Permalink |記事への反応(1) | 18:50

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-09

dorawii

ようやく(ほぼ)すべてが自動化された。

あとはローカルサーバーの起動をスタートアップに設定する(方法AIに聞いて指示に従う)だけの消化試合

ここにほとんどAI頼りのコードを公開しておく。

事前にインストールしておくもの

autohotkey

nodejs

ユーザースクリプトを実行できる拡張機能

パスとかの注意

署名要求してくるパスワードを自動入力するahkファイルドキュメントAutoHotkey配下に置いた。

バッチファイル(make.sign.bat)はデスクトップに置いた。

以下コード

autopass.ahk
#Persistent#SingleInstance ignoreSetTitleMatchMode, 2WinWaitActive, pinentrySendInput お前のパスワードSleep 100SendInput {Enter}ExitApp
run-bacth-server.js
//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/');});
makesign.bat
@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
tempermonkeyとかに登録するユーザースクリプト
// ==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-----

Permalink |記事への反応(2) | 20:16

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-04

ヤリチンを始めて、やめた

ヤリチンを始めた経緯

劣等感

真面目に人生を歩んできたつもりだった。

高校時代は3カ年皆勤を受賞、推薦入試でもないくせに生徒会も本気で部活も毎年全国大会で上位に食い込んでいた。

大学地方国立に進んだ。大学の授業を一度も欠席したことはないし、長期休暇には資格勉強読書に励み、就活大学2年から取り組みインターンにあししげく通って内定を勝ち取り、卒論では学士のくせに学会で賞を取るような真面目人間だった。サークルアルバイトもやっていたが、飲み会は年数回程度だった。

しかし、社会人になって飲み会ヤリチン同期に出会ってすべてが変わった。

エロ漫画とかでしか存在しない概念だったヤリチンが、実在するんだと知った。

最初嫌悪感しかなかった。というか普通に意味が分からなかった。付き合う前にするって何???って。

しか学生時代ヤリチンだった同期は何人も居るし、彼女セフレも居る同期だったり、彼女とFantiaに動画を上げて稼いでる同期とか、遠距離彼女は居るけどヤリチン東京でやってる同期とか、ナンパ営業力を磨いている同期とか、相席屋でお持ち帰りしまくる同期とか、そういう人がこの世界にはたくさん居ることを知った。

同意がある範囲ではなんら違法でない。

そしてみんな夜遊びのフェーズ大学生で終えている(ように感じた。実際大多数は遊んでなんかいない。インパクトのある話が伝搬してるだけ)。

彼女こそいたことはあるが、付き合う前にそういうことをするのは絶対にありえないと思っていた。そんな常識が壊れた。

常識が壊れたとき、次に来るのはコンプレックスである

自分大学時代遊んでないんだ。そしてその大学時代はもう一生来ない。

そう思うと心が粉々になりそうなくらいの劣等感を感じた。

危機感

23歳だった。社会人としては若くても若者としてはアラサーが迫っていた。

23歳の遊びは若いねで笑われても、33歳がそれをやったらただのキモいしかない。23歳でもキモいかもしれないが。

今が一番若い

大学時代は終わっているがまだ今ならこのコンプレックスを取り除けるのではないかと思った。

若い頃のコンプレックスは一生引き摺るものである。半世紀を過ごしたおじさんが学園ソープに行くように、私自身にだって学生時代コンプレックスがいくつかあった。

若いうちに遊んでないというコンプレックスが日に日に大きくなってくるように感じた。山月記のようにいつか虎になってしまうのではないかと思った。

そんなことを考えたとき、まだ今なら遊んでないコンプレックス無効化できる。そう思った。

いやむしろ遊んでないなんてキモいのでは。

遊び終わった男がいいなんて世間では言われる。

平均初婚年齢を考えると残された時間は短い。結婚を前提としたとき、次付き合うまでに遊び終わった男になっていたい。

同時に女性から見ても、まだ結婚を考えず遊んでみたいと思う需要もある時期なのではないかと考えた。

さら彼女が居ない今こそ、遊んでおくのが良いのではないかと思った。

それを考え始めると遊ばない=死のような感覚になった。

今を逃すと将来が真っ暗で永遠に一人だと思うようになった。

さら自分は真面目な自覚があったし、それを改善することが至上命題となっていた。

加えて女性に対してのコミュニケーション力もコンプレックスであった。

技術カンファレンスの懇親会で同性同士のコミュニケーションは磨いてきた自負があったが、対女性となると極めて難しい。

これも早めに直したい。

まとめると遊びは

目的として始めた部分が大きい。

欲の強さはかなりある方だが、そういう行為は正直好きな人とだけ楽しめていれば十分だと思っていた。

経験人数を増やしたい気持ちもないし、お持ち帰りする過程にもワクワク感を抱かないタイプである

その他

仕事ストレスえげつない時期で正直死が迫っていたのだと思う。

普通自分では絶対こんなことができない。

狂っていた。

スタンス

立場

本質として相手を傷つけて得られる幸せ快楽はクソだと思っている。

いくら自分のためだとしても、タダ乗り絶対にしてはいけない。

特に意識した。

また1回目の行為調査だとナンパ本にだって書いてある常識である

楽しんではいけない。相手が何が好き化を調べる調査である。明確に客は女性自分施術である自覚を忘れてはいけない。

絶対に好きになってはいけない

遊びはどちらが好きになった瞬間終わりである

マイルストーン

期間を決めることにした。目標設定において期限を指定しないことはあまりにも意味のない行為である

ヤリチンになれている・いないに限らず半年で一旦区切りをつけることは最初から決めていた。

これはマッチングアプリの料金プランとしてコスパが良いことに加え、思考に関わる習慣化の期間は約6ヶ月と言われていることにも起因している。

自分のしょうもない価値観とか人格を変えたかった。

SprintReview

遊ぶ上で自身の変化を観測する必要がある。

もちろん自己評価必要だが他者評価も極めて大事である

遊びという行為経験しておりそれに対して不快感を抱いていない限られた知り合い(男女両方含む)に事情を話し定期的に話をする機会を設けてもらった。

これはスクラムにおけるSprintReview的な立ち位置となると同時に、依存先を増やしてメンタルコントロールをしていた側面も大きい。

いわば安全基地的な存在である

経験学習

数をまずはこなすことにした。

デート後に毎回記録をしていた。

好きな食べ物や嫌いな食べ物アレルギーやMBTIなどの基本情報大前提として

  • 行った場所
  • 着ていた服装
  • 話した内容とそれに対しての返答を思い出せる限りすべて
  • その回の自身の行動に対するKeep, Problem,Try
  • 学びや違和感まとめ

を毎回デート後に書き起こしていた。

(録画や撮影絶対NGなので記憶から辿った)

これは経験学習効果を最大限増やすという意味合いもあるし、なにより相手を傷つけないためが大きかった。

相手に間違われるのはあまりもつらい。それに相手が楽しくないことは絶対にしたくない。ポリシー違反

人間を物として見てると言われそうだが、自分の中ではそれが最大限の誠実性だった。

最悪自分が傷つくのは自業自得だとしても、女の子を傷つけるのは良くないし、特に一生傷を追わせてはいけない(偉そうなこと言える立場でないのはわかっているが)。

例えば容姿を気にしている相手容姿に対する指摘をするとか、体型を気にしている相手に体型の指摘をするとか。

そういうのは相手人生を余裕で狂わせる。整形を繰り返したり、拒食症になったり。(自分が直接そうさせたことはないが、そういう風にされたことがある人を見たことがある。)

試した種類

クラブナンパでは、クラブに1人で突撃最初に同性と仲良くなり、そこ経由で女の子を紹介してもらうことで多少は仲良くなれたが、その後があるほどの関係性は構築できなかった。

相席屋合コンは付き合ってくれる男さえいれば女の子と話すまでは確実だが、一方でお持ち帰りという部分に関しては極めて難易度が高い。

個人的複数人の場での立ち振る舞いより、1対1のほうが得意であった。

結果として自分自身と相性が良い「マッチングアプリ(恋活系)」を中心に進めていくこととなった。

Tinder最上級課金をしても基本出会えず、性癖マッチ系は男女比が破壊的で現実的でなかった。どちらも自分コントロールできる範囲改善が難しかったため本業にはしなかった。

座学

実践と座学はセットである。どちらか片方だけでは足りない。

あたりで知識を蓄えた。

最も良いのは遊んでいる・遊んでいた男女に相談することである。疑問を対話形式解決できることによる学習効果は大きい。

YouTubeに関しては有象無象で精度も低いが、複数人が言っている内容などある程度学習意義があった。(多くは会員制有料サイトへの誘導であるため注意)

各種書籍に関してはかなり効果が大きかった。特に「話を聞かない男、地図が読めない女(アランピーズ 著)」は男女平等が叫ばれる中で必読の書籍であるように感じた。平等と公平の必要性もわかる。

少女漫画はふざけているかのように見えるが、女性にとっての1つの理想を知るうえで重要資料である。(というかお持ち帰りした女性おすすめされた)

やっていた時期

ヤリチンになることはクソむずかしい

ヤリモクになることを通して、うまくやれてるヤリチンにある種の尊敬を抱いた。

(うまく、と書いているのは本能で行動し相手を傷つけて遊ぶ男や色恋や沼らせることで女性依存させて遊ぶ男、恋人という安定に甘えながらヤリモク浮気をするような本物のクズ達には尊敬を抱けないためである)

難易度は正直人生でも相当上位に食い込む。大企業内定を得るよりも断然難しい。就活は相当苦労した記憶だったが、それを遥かに上回るものだった。

運よく限界が来る直前に救いが何度もあったことで耐えれたが、辛さに耐えられずに人生が終わる可能だって十分にあるくらいには精神ダメージの大きいものであった。

一方で経験学習は明確に回る。性という人間の根幹を牛耳る部分が刺激を受けることで良くも悪くもアメとムチがデカかった。

食料が手に入るようになった現代で唯一本能的なPDCAを回せる場所であったのではないかとすら思った。

ドタキャンされたり嫌われたりは日常的にあって、かなり人格否定が発生するのが辛い。

仕事とかならプロジェクトのxxが悪いとか、スクラム開発ならPBIが悪いとか色々言い訳できるのだが、女の子から嫌われたり断られたとき人格否定されたように感じてしまう。

(実際にはそんなことはなくて、たいてい相手側の都合とかタイミングのケースが多いが、論理でそうわかっていても感情はそうならない)

成功は数とPDCAしか手に入らない

ヤリモクをやる前の事前調査で、ヤリチンをやっている友達数人に聞いたところ、まずは20人と会ってからだという話を聞いた。

これは遊び終えた上で振り返っても間違いないと考えている。

まずは数をこなして学習することが大事だし、正直相手のその日の体調や気分など運による部分が大きいというのもある。

会うまでがそもそも難しい

会う直前や電話の直前で突然ブロックされることは相当な回数ある。半年間で20回は優にあった。

大半のケースは会うのが面倒なケースや他に良い相手ができたケースだと思われるが(というかそう思わないとやっていけない)とても辛い。

一番辛いのは会う約束をして当日待ち合わせ場所で待った挙げ句パターンである

ちょっと遅れるね」のメッセージ最後に何時間真冬に待たされた挙げ句ブロックされたケースだってある。普通に数日落ち込んだ。

さらに厄介なのは一方的好意を向けられた挙げ句、会う直前に突然ブロックされることだ。

簡単好意を向ける人間は、簡単に他の人にも好意が向いて自分なんて存在は容易に捨てられる。

基本やれない

当たり前だが世界は甘くない。

ホテルに誘ったときに「そういうの無理なんだけど」って言われるのはまだ希望がある。貞操観念がしっかりしていて素敵だなと思う。

ちょっとなのは最後最後に「今日女の子の日だからならいいよ」と言われた挙げ句解散した瞬間にブロックされることである。これが結構ある。

基本的に初回でできなければ次は絶対にない。(1個人統計としては1回だけ例外があったが割合としては相当低い)

またホテルに行ってやることやって、またしようねと笑顔解散した次の日にブロックされるケースもある。

ホーム電車に乗り込む直前まで甘々にくっついてきたのに、である。本当に人を信用できなくなる。

いろいろな人間がいる

いろいろな人と話すことができた。(実際に行為まで及んだのはごく少数であることは留意してほしい)

幼稚園先生小学校先生営業職、事務職フリーター、様々な学部大学生、専門学生SE舞台スタッフ作業療法士看護師など、職業や学種だけでも普段絶対関われない人と関われた。

出身地日本全国様々だったし、それぞれの人生も唯一無二のものだった。

夜ご飯だけでも2時間は話を聞けるし、2件目、ホテルとなるとピロートークも含めてその人の人生深淵まで触れられることもある。

理系人生だと女性と接する機会は極めて少ない。そんな自分にとっては知らない世界ばかりだった。

知ったところで何になるんだと言われるとそれまでだが。

うまく技術習得ができるとある程度セフレができるようになるが、安定は永遠に来ない

遊びの後半は3人くらい常にセフレがいる状態だった。

常に、と書いているのはセフレという存在が極めて不安定存在からである

自分なりに相手を満足させるように努力していても、当たり前のように関係が向こうから千切られるので常に新しい相手供給し続ける必要がある。

から常に種を巻いているような状態だった。

セフレがほしい男は無限に居ると思うが、女性は大概そうでない。遊び前提で出会っても暗黙的に、なんなら本人は気づいてなくても付き合ったり結婚したりする未来を考えているケースが極めて多い。

というかそれ以外ほぼない。ごく稀に例外はいるが本当にごく稀でしかない。

まりセフレという関係は長期的には成り立たない。

途中で女の子から消えていく。それは恋人になれないということに絶望を感じたり、単純に飽きられたり、私このままじゃだめだと思ったり。

から常にセフレとなる候補を探すために新規女の子と会い続けないといけないため、永遠に安定が来ない。

セフレという言葉理想を描く人間無限にいるが実際は想像以上に空虚存在である

自分にだけ一途でセフレ女の子という幻想は捨てるべきだ。矛盾している。

自分セフレになる時点で他の男にも簡単に落とされて持っていかれるような存在であるし、仮に長期間セフレが維持できるほど好意を持たれていたらいつか相手が今の関係に満足できなくなって終わる。

一途なセフレ存在しないのでちゃんと誠実に遊ばず恋人を目指すべきである

やめた理由

長期的なお互いの幸せ絶対に得られない

一時的に誰かの薬に立てている実感こそあったが、自分はこの人を一生幸せにできないんだと感じで絶望を感じることが多々あった。

もちろん自分自身例外でない。

穴の空いたポケットビスケットを詰めているような感覚。すぐ落ちて無駄になっていく。

どれだけ優しくしたり貢献しても、すぐ離れて蓄積がない。

恋人だったらそうはならない。1年付き合って培った信頼とか共通認知とかがある。

遊びにはそういうのが一切ない。体験版プレイするたびにリセットされるRPGと同じ。

=========

文字数制限?で表示できてなかったので、続きはこちらで。

https://anond.hatelabo.jp/20250908003219

Permalink |記事への反応(28) | 00:30

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-19

最近検索履歴

AI支援スライド作成

これを試した。ダメだな。すぐ金をせびってきよるし。無料枠でやれる奴は、ダメ。食わせたPDF図面があるのにそれを使わないとか・・( ^ω^)・・・ありえない

try pandoc

ありとあらゆるフォーマットテキストなどを変換するツール

Permalink |記事への反応(0) | 10:14

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-18

官報ダウンロード

令和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('\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}"        #pdfURLファイル名を作成    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}')

Permalink |記事への反応(0) | 17:39

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-15

PS VitaのEnsoインストール詰んだ人へ(2025年版 HENloによるCFW導入メモ

VitaCFWを導入するにあたり、情報が散乱していたのでまとめる

<なぜ情報が散乱しているか

2022年末に革新的進歩があり、VITA単体でCFW導入できるようになった(通称 HENlo)

・にも関わらず古いCFW導入方法を案内しているブログが大量にある

しかタイトルの"20XX年最新"だけ更新し続けているから、最新記事に見える

PC使用が前提になっているブログは全部古いので無視した方が良いです。

<どんな情報採用すべきか>

・『HENlo』について触れている

PC使用が前提になっていない

この2つが押さえられてれば最新情報です。(2025年5月現在

ただし、現状だと実は『PC操作が一部必要』という罠があります

その問題について書いている記事が見当たらないので、ここに残しておきます

超具体的には

「HENkaku、VitaDeploy、VitaShellは導入できた」

「けどEnso導入ができない/つまづいている」  エラー:failed togetfwversion please disableallthe plugins andtryagain

というタイミングの人に一番役に立つはずです

5chでもRedditでも

プラグイン無効しろ』『0syscall6を無効しろ』って書いてあったのですが、実はEnsoのバージョン変えれば解決します。(後述)

CFW導入まで

この記事が役に立ちました

[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

について理解しつつインストールできると思います

記事の補足

・新型PSVitaPCH-2000)でも問題ない

・最悪文鎮化する可能性があるのでセーブデータバックアップを取ったほうが良い

VITAセーブデータ特殊で、PCと繋ぐだけでは取り出せない

バックアップはいくつか方法があるが、PCコンテンツ管理アシスタントは既に使えないと思ったほうが良い。PS Plusのクラウドバックアップが最も良いはず

記事の内容を実施する前にバックアップ取るのを強くおすすめする


Enso導入 ※本題※

EnsoとはCFWを安定化させるために必要ものです。

これをインストールすることで、電源を切ってからCFW状態を維持できます

VitaDeploy内のApp downloaderメニューからEnsoをインストールできますが、実はこのバージョンが古いです。※重要

そのためVitaDeployからインストールすると先程のエラー(failed togetfwversion please disableallthe plugins andtryagain)が必ず出ます

PC不要になった」と書いてあったので盲点ですが、ここからPC必要です。

正しい方法は以下です

① Ensoインストール

1,PC操作GithubからEnso最新版のenso.vpkファイルダウンロード現在v1.1)

https://github.com/TheOfficialFloW/enso/releases

2,PCVitaUSBケーブルで繋げる ※データ転送対応ケーブルを使うこと。相性もある

3,Vita操作VitaShellを起動する

4,Vita操作SELECTボタンを押す

5,PC操作USBドライブとしてVITAデータが表示されるので、ダウンロードしていたenso.vpkファイルを置く(フォルダはどこでもOK自分ルート直下に置きました)

6,Vita操作:✕ボタンを押してCancelする

7,Vita操作VitaShellでenso.vpkを見つける(さっきルートに置いたなら恐らくux0:にある)

8.Vita操作:enso.vpk上で◯ボタン

9.Vita操作:Doyou want toinstall this package? → ◯ボタン

10.Vita操作:~~~ Wouldyoulike tocontinue theinstall? ※意訳:「失敗したら文鎮化するけど自己責任だけど続ける?」 → ◯ボタン 

11. 進行バーが消えたらインストール完了 ホーム画面に戻ってOK

12.Vita操作ホーム画面にEnsoが追加されている

② Enso実行 ※全てVITA操作

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.

  TRIANGLE  Uninstall thehack.

  SQUARE  Fix bootconfiguration (choose this if taiHEN isn't loadingon boot).

  CIRCLE   Exit without doinganything.

  → ✕ボタンを押す(=CROSS

3-a,問題がない場合

Locking sustem ..

(中略)

Theinstallationwas completed successfully.

suocess.

Pressanykey toreboot.

 →何かボタンを押すと再起動される(Enso導入完了

3-b,問題がある場合 ※自分はこっちでした。Quick 3.65の副作用かも※

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.

Pressanykey toreboot.

 →何かボタンを押すと再起動される(Enso導入完了

<Enso導入の確認方法

Enso導入が成功していると

本体起動時にEnsoのロゴが表示される

ファームウェアが3.65 変革 -2のままなっている

お疲れ様でした。

記事の本題は以上です。


雑談VITAセーブデータは未だ檻の中

VITAセーブデータ暗号化されており、吸い出せてもエミュレータで使えないらしい。本体機体とセットで揃わないと使えない仕様

調べたらセーブデータをここまでキツく縛ってるハードは他にない

からメモリーカードデータ管理でもPSPのセーブデータしか項目がなかったのか…

不便すぎる


失敗の備忘録1:VitaDeploy版のEnsoで苦戦していた時に取った行動メモ

当時の仮説

・HENkaku設定が悪さをしているのではないかPSNの偽装有効化、バージョン偽装有効化) →オフにしたが関係なかった

本体にSD2VITAを刺しているのが良くないのではないか →抜いたが関係なかった

・enso.vpkの置き場所ルート(ux0:)が良くなかったのではないか →関係なかった

VITAメモリーカードを刺しているのが良くないのではないか →関係なかったが、データ保護的には抜くのが良さそう

ゴミデータが残っていて悪さしているのではないか(手順を間違えたデータや古いデータなど) →関係ある可能性はある。最後までわから

・Ensoのバージョンが古いのではないか →これが主要因だった


失敗の備忘録2:vita starting taiHENframework対処

ゴミデータを疑った自分正規ファームウェアに戻して、CFW化をやり直したりもした。

その際HENkakuすら入れられなくなってしまったので、抜け方を書いておく。

行った手順:脱CFWからHENkaku再導入時のエラーまで

ENSO実行

~~~ PressCIRCLE toaccept these terms orany otherkey to notaccept. → ◯ボタンを押す(=CIRCLE

Options:

  CROSS   Install /reinstall thehack.

  TRIANGLE  Uninstall thehack.

  SQUARE  Fix bootconfiguration (choose this if taiHEN isn't loadingon boot).

  CIRCLE   Exit without doinganything.

  → △ボタンを押す(=TRIANGLE Uninstall thehack.)

公式ファームウェア3.65に戻る

強制再起動される

ファームウェアアップデートが促され、アップデートしないとメモリースティックが使えない

公式ファームウェア3.74にアップデート

HENloのブラウザアクセスからやり直す

HENloメニュー

Install HENkaku

InstallVitaDeploy

reset taitanconfig

Exit

のうち、Install henkakuを選択

インストールは上手くが、Exitができない。

「Eiting in 3」 の後に、以下のエラーメッセージがでて固まってしま

エラー内容(うろ覚え

vita starting taihenframework

Ifyou are stuckon thisscreen, hold downthe power button untilyourVita turns off, then turnit backon.

原因:恐らく余計なデータと衝突を起こしてる

解決法:reset taitanconfigを先に実行する

(さっきのエラーメッセージ画面で)

電源ボタン10秒長押し

セーフモードが起動する

本体再起動するを選択

HENloのブラウザアクセス

HENloメニュー

Install HENkaku

InstallVitaDeploy

reset taitanconfig

Exit

のうち、reset taitanconfig選択

その後

Install HENkaku、InstallVitaDeployを選択して、Exit選択

追記)より網羅的な補足

この記事を書き終えた後に見つけたのですが、以下の記事の『改造方法』というところに情報がかなりまとまっています

Vita バージョンが低くてもPSNにサインイン&PSストアにアクセス(エラーNW-8942-3回避)&機器認証する方法(2025最新)

https://yyoossk.blogspot.com/2024/10/vitapsnps2024.html

感想

今回VITAセーブデータバックアップが主目的だったから、徒労でしかなかった

せめてこの記事が誰かの時間節約することを願う

指摘、補足、最新情報あれば反応もらえるとありがたいです

Permalink |記事への反応(4) | 03:36

このエントリーをはてなブックマークに追加ツイートシェア

2025-04-13

anond:20250413061825

def demo_unprocessed_emotion():

"""未処理感情システムデモ改善点(記憶編集言語学習、反応速度など)を活用"""

cognitive_queue = CognitiveQueue(attention_threshold=0.4)

print("=== 未処理感情システムデモ改善版) ===\n")

# 1.視覚的な違和感

print("1.視覚的な違和感の生成")

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:

print(f"記憶パスエラー: {e}")

# 2.記憶の再編集

print("\n2.感情へのアクセス(再編集)")

accessed_emotion = cognitive_queue.access_emotion(visual_discomfort)

print(f"新しい感情インスタンス: {accessed_emotion}")

print(f"構造レベル(再編集後): {accessed_emotion.structure_level:.2f}")

# 3. 内受容感覚

print("\n3. 内受容感覚の生成")

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}")

# 4.聴覚記憶

print("\n4.聴覚記憶の生成")

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")

# 5.キュー更新

print("\n5.認知キュー更新")

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. 処理対象の取得

print("\n6. 処理対象の取得")

next_emotion = cognitive_queue.get_next_for_processing()

print(f"処理対象: {next_emotion}")

# 7.感情部分的処理

print("\n7.感情部分的処理")

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()}")

# 8. 高速モダリティ検索

print("\n8.モダリティによる感情検索インデックス使用)")

matches = cognitive_queue.lookup_by_modality("auditory")

print(f"検索結果数: {len(matches)}")

formatch inmatches:

print(f"- {match}")

#9.時間経過シミュレーション

print("\n9.時間経過のシミュレーション")

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()

Permalink |記事への反応(0) | 06:27

このエントリーをはてなブックマークに追加ツイートシェア

2025-04-09

Tintin, TataNino Mage DeTry

Permalink |記事への反応(0) | 23:29

このエントリーをはてなブックマークに追加ツイートシェア

2025-04-06

噂の東京マガジンって番組のやってTRYってコーナー

若者に「◯◯作って」って料理のお題出して、若者が間違う様をスタジオの爺婆どもが嫌みったらしいナレーションと共に文句言うコーナー

今もやってるの?

昔もみてられないコーナーだったけど、今の基準なら余裕のハラスメントだよな。

Permalink |記事への反応(0) | 10:20

このエントリーをはてなブックマークに追加ツイートシェア

2025-03-22

増田3分以上投稿されない時間

増田で 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 &&diff(datetime, prev)>1000 * 60  * 3){console.log(datetime, prev)}prev =datetime}

 

結果をみると昼間はずっと深夜から早朝にかけてときどきある

基本は空いても 5 分程度であり、最大でも10 分となっている

投稿が少ないと感じるときもあるが、賑わってる方だといえる

Permalink |記事への反応(1) | 02:05

このエントリーをはてなブックマークに追加ツイートシェア

次の25件>
ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp