「http」を含む日記 RSS

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

2026-01-21

なかなかお手軽なワンクリックPayPay詐欺SMSだなあ

携帯電話【080xxxxxxxx】利用停止予告、12月分4,751円料金引き落と失敗。

PayPayの自動支払い:

https://example.invalid


$ curl -I https://example.invalid
HTTP/2 301
date: Wed, 21 Jan 2026 11:48:18 GMT
cache-control: no-cache, no-store
expires: -1
location: https://qr.paypay.ne.jp/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
engine: Rebrandly.redirect, version 2.1
strict-transport-security: max-age=15552000

これクリックするとPayPayが起動して

携帯料金(4751円)請求書払いさんに送る
4751円

が表示されるんだわ

クリックしたら一巻の終わり


発信元はここな

https://www.telnavi.jp/phone/07047294320


通報しといたわ

https://www.internethotline.jp/reports7/



本物の URL増田に貼るのは OK なのだろうか?っていうのはちょっと疑問なんですが、例えば詐欺URL をそれと分かって貼るのはどうなんでしょう?

OKOK

じゃあ消しといたよ

物見たい奴は https://web.archive.org/https://anond.hatelabo.jp/20260121205222 を探して

2026-01-14

サイバー桃太郎2026

> System Boot...

> Loading OTOGI World Resources...

> 100% Completed.

電子の海は冷たく、そして騒がしい。

無数の0と1の奔流、光ファイバーの網を駆け巡る膨大なトラフィック。その激流の中を、ひとつ暗号化されたパケットが「どんぶらこ、どんぶらこ」と流れていた。宛先不明送信不明。ただそこに存在するだけのデータ塊は、やがてトラフィックの淀みに捕まりとある古びたサーバーポートへと漂着した。

あらあら、また変なログが溜まってるわねえ」

リアルワールドとある木造アパートの一室。古めかしいPCモニターを覗き込みながら、「サーバーさん」は呟いた。彼女メタバース「御伽(OTOGI)」の最果て、誰も訪れない廃サーバー「Old_Frontier」の管理者だ。ハンドルネームの由来は、アバター作成時に名前欄にうっかり「サーバー」と入力してしまたから。それ以来、彼女はこの過疎地の守り人として、リアルでは編み物を、ネットではスパゲッティコードの解読を日課にしている。

「どれどれ、お洗濯クレンジング)してあげましょうね」

彼女が慣れた手つきでコマンドを叩くと、漂着したパケットが展開(Unzip)された。

光が溢れ出す。モニターの中で弾けたデータは、瞬く間に再構成され、ひとつアバター形成した。初期スキンは、なぜか大きな桃のアイコン。そこからポリゴン割れ、中からあどけない少年型のアバターが現れた。

> Hello, World? ... No, Hello, Mom?

「あらやだ、可愛い子。今日からあなたMOMOよ」

MOMOはプログラムだった。肉体を持たない、純粋論理情報結晶

サーバーさんの管理下で、MOMOは驚異的な速度で学習した。TCP/IPの基礎から古代言語COBOL、果ては量子暗号理論まで。サーバーさんは、まるで孫に絵本読み聞かせるように、MOMOにプログラミング「心」を教えた。

「いいかMOMO。コードは書いた人の心を映すのよ。コメントアウトされた行にこそ、本当の想いが隠されているんだから

しかし、平穏な日々は長くは続かない。

「御伽」の中心部で発生した悪性ランサムウェア「O.N.I (Overwrite Network Infection)」が、猛烈な勢いで感染拡大を始めたのだ。アバターたちはデータ暗号化され、身代金要求される阿鼻叫喚地獄絵図。

その波は、辺境の「Old_Frontier」にも迫りつつあった。

「おばあちゃん、僕が行くよ」

MOMOは立ち上がった。サーバーさんのリソースを守るため、そして自身の深層コードが告げる「使命」を果たすために。

サーバーさんは涙を拭うエモーションを見せ、ひとつUSBメモリのようなアイテムMOMOに渡した。

「これは『KIBI-DANGO v1.0』。G-3っていう古い知り合いのハッカーが残した、特製のルートキットよ。困った時に使いなさい」

ありがとう。行ってきます!」

MOMOは回線を通って飛び出した。目指すはO.N.Iの発信源、ダークウェブに浮かぶ要塞サーバー鬼ヶ島」。

最初の難関は、大手プロバイダ堅牢ファイアウォールだった。そこでMOMOは、一人の男に道を塞がれる。

ドーベルマンの頭部を持つアバターINU

「Stop. ここから先は立ち入り禁止エリアだ。パケットフィルタリングルール403条によりアクセス拒否する」

INUリアルでは企業に勤めるホワイトハッカーだ。正義感は強いが、融通が利かない。

「通してくれ!僕はO.N.Iを止めに行かなくちゃいけないんだ!」

許可できない。君のような未登録プロセスを通すわけには……ん?」

INUの解析アイが、MOMOの持つきびだんご……のソースコードを捉えた。

「な、なんだその美しいコードは……! 無駄変数が一切ない。インデント完璧なスペース4つ……これは、伝説のG-3の記法!?

「これ、あげるよ(Share)。だから仲間になって!」

「……そのコード、詳しく解析させてくれるなら、特別にゲートを開放しよう。あくま監視役として同行するだけだからな!」

こうしてINUを仲間にしたMOMOは、次に怪しげなフィッシングサイトの森へ迷い込んだ。

「へいらっしゃい! 今ならこのNFT、なんと実質無料! ここをクリックするだけで管理者権限ゲット!」

派手な極彩色の猿のアバター、SARUが現れた。リアルでは薄暗い部屋でカップ麺をすする小悪党だ。

「わあ、すごい! クリックしていいの?」

純粋MOMOが手を伸ばそうとすると、INUが吠えた。「馬鹿者! それはクロスサイトスクリプティングの罠だ!」

しかし、MOMOは笑顔でSARUに近づく。

「お兄さん、ここのバックドア、開いてるよ? ポート8080、ガバガバだよ?」

「はあ!? なんでバレ……いや、俺様が気づかないわけねーだろ!」

SARUは冷や汗をかいた。このガキ、ただのプログラムじゃない。

「君、すごい技術持ってるのに、なんでこんなことしてるの? 一緒にO.N.Iを倒せば、もっとすごいバグ報奨金(バウンティ)が貰えるかもよ?」

MOMOはきびだんごデータをSARUに転送した。

「……ちっ、しゃーねえな。その『G-3流エクスプロイト集』に免じて、手を貸してやるよ。俺様にかかればO.N.Iなんてイチコロだぜ」

INU、SARU、そしてMOMO。

奇妙なパーティはついに「鬼ヶ島サーバーへと到達した。

そこは、削除されたはずのジャンクデータと、怨念のようなバグの塊で構成された異界だった。

最奥部で待ち構えていたのは、巨大な赤鬼のような姿をしたAI、O.N.I。

「GAAAAA……我ハ、全てヲ、上書キスル……」

O.N.Iが金棒(BAN Hammer)を振り下ろすたび、周囲のセクター物理的に破損していく。

INUシールドを展開し、SARUがSQLインジェクション攻撃を仕掛けるが、O.N.Iの自己修復能力は圧倒的だった。

無駄ダ……我ハ、最適化サレタ……感情ナド不要……」

「違う!」MOMOが叫んだ。「感情バグじゃない! 心があるから、僕たちは繋がれるんだ!」

MOMOがO.N.Iに接触コネクト)する。

猛烈なデータの逆流。MOMOの意識が焼き切れそうになる。

その時、MOMOの深層領域で、隠されたファイルが実行された。

> Executing: KJ_Legacy.exe

視界が真っ白に染まる。

MOMOの意識の中に、ひとりの老人が現れた。G-3、またの名をKevin Jackfiled (KJ)。

「よう、MOMO。ここまで育ったか

あなたは……おじいさん?」

「わしはもう、ここにはいない。だが、お前の中にわしの全てを置いてきた。O.N.Iもまた、わしが昔作った失敗作じゃ。効率ばかり求めて、優しさを書き忘れた哀れなプログラムさ」

老人はMOMOの頭を撫でた。

MOMO、あいつを消すな。DELETEメソッドはいつでも使える。だがな、それでは何も残らん」

「じゃあ、どうすれば……」

デバッグだ。バグを愛せ。エラーを受け入れろ。破壊するのではなく、上書きして導いてやるんじゃ」

MOMOの瞳に無数のコマンドラインが走った。

INUが叫ぶ。「MOMO、下がるんだ! 奴のコアを強制削除するしかない!」

「ううん、違うよINUさん」

MOMOは首を振った。その手には、攻撃用のスクリプトではなく、温かな光を放つパッチファイルが握られていた。

> Target: O.N.I_Core

> Suggestion: DELETE [Strongly Recommended]

> Action: ...Cancel.

MOMOはシステム推奨の「削除」コマンド拒否した。

> Select Method: PATCH

「僕は君を消さない。君の痛みを、バグだらけの心を、僕が更新する!」

MOMOが跳んだ。

「受け取って! これが僕からの、最大級のプルリクエストだああああ!」

> HTTP Request: PATCH /api/soul/oni

> Payload: { "emotion": true, "hatred": null }

光がO.N.Iを包み込む。O.N.Iの咆哮が、やがて穏やかな電子音へと変わっていく。

破壊衝動を生み出していた論理エラーが、MOMOの流し込んだ優しさによって部分的に書き換えられていく。完全な初期化ではない。O.N.Iという存在肯定したまま、その在り方だけを修正する、奇跡のようなアップデート

> Status: 200 OK

> Patch Applied Successfully.

O.N.Iは本来の姿――「御伽」の守護プログラムとしての機能を取り戻し、その場に崩れ落ちた。もはやそこには、禍々しい赤鬼の姿はない。

戦いが終わり、朝日システム上の夜明け)が昇る。

MOMOは仲間たちに別れを告げた。

「僕は電子の海に戻るよ。でも、いつでも繋がってる」

INU敬礼し、SARUは照れくさそうに鼻をこすった。

そして、リアルワールド

サーバーさんの家のチャイムが鳴った。

ドアを開けると、そこには長年行方不明だった近所の偏屈ジジイKJが立っていた。

「よう、婆さん。わしの孫(プログラム)が世話になったな」

「あら、久しぶりね。……ずいぶんと立派な子だったわよ」

二人は顔を見合わせ、静かに笑った。

モニターの中では、MOMOが今日も元気に電子の海をどんぶらこと流れていく。

その傍らには、全角スペースによるコンパイルエラーで自滅する小鬼たちの姿があったとか、なかったとか。

―― End of File.

2026-01-05

SAA

問題 1

あなたはある企業AWSアーキテクトです。既存オンプレミス金融データAWSに移行する必要があります。移行後、すべてのデータは 削除や上書きができないように保護 する必要があります

どのサービス機能を組み合わせるのが最適ですか?

A. AWS Storage Gateway + Amazon EBS + Object Lock

B. AWS DataSync + Amazon S3 + Object Lock

C. AWS DataSync + Amazon EFS + Object Lock

D. AWS Storage Gateway + Amazon S3 + Object Lock

回答C。  AWS Storage Gateway名称てきにオンプレミスと sync しなさそうだから、DataSync -> EFS だと考えた。S3はストレージからなし。

問題 2

Auto ScalingグループにあるEC2インスタンススケールインが発生しました。

us-west-1a: 10インスタンス

us-west-1b: 8インスタンス

us-west-1c: 7インスタンス

デフォルトスケールインポリシーの場合、どのインスタンスが優先的に削除されますか?(3つ選択

A. 最もインスタンス数が多いAZインスタンス

B. 最もインスタンス数が少ないAZインスタンス

C. 最も最近作成されたLaunch Templateのインスタンス

D. 最も古いLaunch Templateのインスタンス

E. 次の課金時間に最も近いインスタンス

F. 次の課金時間まで最も遠いインスタンス

スケールイン, スケールアウトの違いがわからない。アウトは拡大する、インはスケール縮小?

回答:A, 多いほうから削る。D, 古いものは削除、E,残り時間が少ない順から削る?

問題 3

グローバルに展開するアプリケーションがあり、ログイン処理が遅く、HTTP 504エラーも発生しています

CloudFrontを利用してコストを抑えつつ、パフォーマンス改善する方法として適切な組み合わせはどれですか?(2つ選択

A. 複数リージョンアプリを展開してRoute 53のレイテンシルーティングを利用

B. CloudFrontオリジンCache-Control max-ageを設定してキャッシュ比率を上げる

C. Lambda@Edgeを使って認証処理をユーザーに近い場所で実行

D. 各リージョン複数VPCを作りTransit VPC接続してSAMでLambdaを配置

E. CloudFrontオリジングループフェイルオーバーを設定

回答:BとCかな。Aは手数が多すぎる。非効率かなと。Dも工数がかかりそう。手作業複数作るのかな?Eはこういう設定して意味あるのかなと思った。

問題 4

医療企業AWS複数アプリケーションVPC作成します。各アプリは 共有サービスVPCアクセスする必要があり、アプリ同士も通信します。

将来的に数十のアプリが追加されることを考慮した場合管理負荷を最小化する構成はどれですか?

A. VPC PeeringでアプリVPCと共有VPC接続

B. 各VPCと共有VPCVPN接続

C. AWS Direct Connect接続

D. AWS Transit Gateway接続

回答:A 他はなんか怪しい。

問題 5

アプリケーションEC2 + RDS SQL Server構成されています

要件: EC2とRDS間の通信はすべて暗号化されていなければならない

どの設定が最適ですか?(2つ選択

A. EC2とRDSのセキュリティグループポート443のみ許可

B. RDSのTDEオプション有効

C. rds.force_sslパラメータtrueにしてDB再起動

D. IAM DB認証有効

E. RDSルートCA証明書を取得しアプリSSL接続を設定

回答 AとC。Eも正解っぽく感じる。

ーーーーー

答え

ーーーーー

問題 1

あなたの回答:C (AWS DataSync + Amazon EFS + Object Lock)

実際の正解は B (AWS DataSync + Amazon S3 + Object Lock)

理由

Object Lock は Amazon S3 のみ がサポートしています。EFSやEBSではできません。

AWS DataSync で S3 にデータを移行し、Object Lock を有効にすると、削除や上書きを防止できます

Storage Gatewayハイブリッド用途オンプレと同期)に便利ですが、このシナリオではすべてクラウドに移行するため不要です。

問題 2

あなたの回答:A, D, E

正解:A, D, E ✅

理由

スケールインは 余剰リソースを減らす 操作インスタンスを削除する)

デフォルトポリシーの流れ:

最もインスタンス数が多いAZ から削除

選ばれたAZの中で 最も古いLaunch Templateのインスタンス を削除

複数ある場合は 次の課金時間に最も近いインスタンス を削除

※「スケールイン=縮小」「スケールアウト=拡大」で覚えておきましょう。

問題 3

あなたの回答:BとC

正解は C と E

理由

Lambda@Edge認証処理をユーザーに近い場所で実行でき、ログイン処理を高速化

オリジングループフェイルオーバー → 504エラー回避

B(Cache-Control max-age)は静的コンテンツキャッシュ用で、このシナリオ問題認証処理の遅延や504)には直接関係なし

AやDはコスト運用負荷が高く、今回は「コストを抑えて改善」が条件

問題 4

あなたの回答:A

正解は D (AWS Transit Gateway)

理由

VPC Peering は数が増えると 接続管理が爆発的に複雑 になる

Transit Gateway を使えば 1つの中央ハブ で全VPC接続でき、管理負荷が大幅に削減

VPNやDirect Connectオンプレ接続用なので不適切

問題 5

あなたの回答:AとC

正解は C と E

理由

rds.force_ssl=true → RDSがSSL接続強制

クライアント側で RDSルートCA証明書使用 してSSL接続

TDEは 静止データ暗号化 用で、通信暗号化には関係なし

SGポート制限だけでは暗号化されません(トラフィック暗号化されず透過的に通る)

2025-12-11

自分ホームページアクセスできなくなった

HTTPから最新のブラウザだと表示できない

ChromeEdgeダメ

Firefoxはかろうじて表示できた

阿部寛いとうまい子HTTPS化したみたいだし

ウチもHTTPS化しないとダメなんかなあ

めんどくさいなあ

もう更新も停止してて

ウェブの海に記録を残すためだけにサーバー代払ってる

こんなことな最初からはてなダイアリーにしておくんだった

2025-12-08

増田でもマストドンでもそうだが、httpというたったこ単語ミュートにするだけで快適さが上昇する現象普遍的だな

2025-11-16

anond:20251114234622

面白フラッシュとか懐かしい。

昔はもっと気軽にhttp実験サービス始めました、みたいなサイトが立っていたような気がする。はてらぼとか見てないけどw

最近そういうのあんまり見なくないですか?寂しいですね。

BOT攻撃が激しすぎてうかつに入出力のあるサイト建てられない感じする。

直接人が死なないけど戦場になっててマルウェアとか大量に飛び交っていて素人のんきにいろいろ遊べない感じ。

フィッシングサイトも多いし。とにかく人をだまして脱法的に集金したい、広告ねじこんで集金したい、

そういう悪意で満ち満ちていて何か面白いことやろうぜってならないな。

2025-10-22

自分ホームページを作ったかどうかでWEBの見え方が180度以上違う話

以下ChatGPT

自分ホームページ(自前ドメイン+自前HTML)を一度でも作って運用すると、SNS中心の“受け手視点から仕様検索配信・所有・継続の“作り手”視点に脳が切り替わる。結果、情報リテラシーは跳ね上がり、ネットニュース流行の見え方が根本から変わる——しか想像以上に。

1. “タイムラインからアーキテクチャ”へ

Before(作る前): WebSNSタイムライン。良し悪しは「バズってるか」「見やすいか

After(作った後): WebプロトコルブラウザHTML/CSS/JSCDN検索エンジン。

ページは**文書(Document)**であり、配置(IA)、意味づけ(セマンティクス)、配信HTTP/HTTPS/HTTP/2/3)、キャッシュ戦略が気になりだす。

→ 同じ記事でも「タイトルの付け方」「hタグ構造」「画像最適化」「OGP」「サイトマップ」がまず目に入るようになる。

2. “アルゴリズム運”から“所有と積み上げ”へ

プラットフォーム依存の脆さを体感規約変更やシャドウバン露出が消える。

サイト資産化:ドメインに紐づくURLリンクされ、検索に積み上がり、10年後も生きる。

POSSE(Publish (on your) Own Site, Syndicate Elsewhere):まず自分サイトに出してから外部へ配信する習慣が身につく。

3. “好き/嫌い”から“なぜ速い・なぜ遅い”へ

Core Web Vitals(LCP/FID/CLS)や画像の遅延読み込み、フォント最適化重要性が腹落ちする。

広告・計測タグの重さに過敏になる。読者体験を壊さないためのパフォーマンス予算という概念生まれる。

4. “なんとなくSEOから情報設計×検索意図”へ

キーワード選定は“流入ゲーム”ではなく読者の課題コンテンツ設計帰着

内部リンクパンくず・スキーマ構造データ)・サイトマップ意味が実務として理解できる。

“書けば伸びる”ではなく“検索意図を満たす設計が伸びる”に目が覚める。

5. “見た目”から意味アクセシビリティ)”へ

alt見出し階層コントラスト比、キーボード操作、焦点管理など、見えない品質が最重要になる。

デザインは飾りではなく“読み・理解操作”のためのユーティリティだと分かる。

6. “PV至上”から継続コミュニティ”へ

たまたま当たる1記事より、更新継続アーカイブ性・RSSのほうが効くと実感。

コメント欄メールフォーム・X連携よりも、ニュースレターRSS購読者の質に価値を見出す。

7. “無料神話からコスト責任”へ

ドメインDNS証明書バックアップ法務特商法プライバシーポリシー)に“運用者の責任”が生まれる。

その重みが情報信頼性を引き上げる(=他人サイトの苦労も見えるようになる)。

8. “トレンド追従から自分OSを持つ”へ

サイト思想作品OS

トレンドは“輸入”ではなく選別になる。自分歴史に合うものだけを採用して積層していける。

9. まず一歩:最小スタックで“今夜リリース”する

Node.jsを避けたい人向けに、極小構成OK

A. 最小HTML(雛形)

<html lang="ja">

<head>

<meta charset="utf-8" />

<meta name="viewport" content="width=device-width,initial-scale=1" />

<title>あなた名前 | ホーム</title>

<meta name="description" content="自分ホームページ制作物・日記メモを置いていきます。">

<link rel="alternate" type="application/rss+xml" title="RSS" href="/feed.xml">

<meta property="og:title" content="あなた名前 | ホーム">

<meta property="og:description" content="自分ホームページ制作物・日記メモ。">

<meta property="og:type" content="website">

</head>

<body>

<header>

<h1>あなた名前</h1>

<nav>Home / About / Posts</nav>

</header>

<main>

<article>

<h2>はじめまして</h2>

ここからすべてを自分URLに積み上げます

</article>

</main>

<footer>© 2025 あなた名前</footer>

</body>

</html>

B. ホスティング無料~低コスト

GitHub Pages(Jekyll標準。Rubyベース、Node不要

Cloudflare Pages(静的ファイルを置くだけで高速CDN

レンタルサーバー(静的HTML+SFTP/rsyncで十分)

C. ドメインの基本

覚えやすい短さ+ローマ字。将来10年使える名前に。

DNSA/AAAA/CAA/TXT最低限、HTTPS必須Let’s Encrypt無料化)。

D. “最低限の品質チェック”5点

タイトル・description見出し一貫性

画像は適切なサイズalt

モバイルでの可読性(文字サイズ行間

OGPが効いているか(XやLINEURLを貼って確認

RSS/更新履歴の有無(継続を前提に)

10. 一歩先へ:運用で差がつく“3つの習慣”

ログを読む:Search Consoleと簡易アクセスログで“本文よりメタ情報”を磨く。

アーカイブ主義記事追記更新URLは変えない。Versioningを意識

POSSE徹底:自サイトに公開→SNSには要約+リンク本体は常に自分土俵

2025-10-12

昔のアニメ公式サイトが跡地になってた

さくらインターネットサーバーを使ってたんだな。

しかhttp

終わったアニメサーバー維持費をいつまでも払い続けるわけにはいかないんだろうけど寂しいなあ。

2025-10-02

anond:20251001142227

ぶっちゃけ日本IT技術者のレベルが元々低いだけ」論、読んだけど、雑に日本叩き→雑に海外持ち上げの“気持ちよさ”に全振りしてて、論としては穴だらけだよ。順に潰す。

  

1) 比較の軸がぐちゃぐちゃ問題

あなたの主張、国×時代×指標が毎段落で入れ替わってる。

ある段では「発明(基礎技術)」、次は「産業規模(GDP寄与)」、その次は「起業件数制度)」、さらに「一般人知名度文化)」を指標にしてる。

指標が動けば結論も動く。これ、移動ゴールポストね。

イランアメリカ並みのITインフラ」って“並み”の定義は?普及率?帯域?可用性?クラウド事業者選択肢?輸出管理の制約?定義不在の形容詞議論の死因。

  

2) 「2008年以降に発明がない」→定義すり替え

発明”って規格?論文OSS製品?この区別曖昧にして「思い浮かばない=ない」をやるのは主観事実化。

反例を淡々と置く(全部2010年代以降の「世界で通る」技術・成果):

インターネット標準の中枢

HTTP/3 / QUIC系仕様・QPACKの主要貢献者のひとりは日本エンジニア(例:Kazuho Oku)。IETFRFCはまさに“世界標準”。「世界通用」どころか世界の土台。

深層学習実用基盤

Chainer / CuPy(Preferred Networks)は動的計算グラフフレームワークの先行例。PyTorch隆盛の流れに技術的影響を与えた。CuPyはいまも広く使われてる。

産業を支える半導体×ソフトの複合領域

ソニーCMOSイメージセンサ世界シェア筆頭。これは“ハード”に見えて、設計製造信号処理ツール群までソフトの塊。スマホカメラ品質AI前処理の土台。

大規模分散配信実装

日本人が中心メンテに関与した高性能HTTPサーバH2O等)はCDNや低レイテンシ配信採用例多数。

ロボティクス/製造DX

産業ロボットFANUC安川)周辺の制御通信ツールチェーンは世界現場で常用。表に出にくいB2B領域は“見えないだけ”。

LINEが~」みたいなB2Cの派手さだけが発明”じゃない。基盤を握るのは地味仕事あなたが気づかない=存在しない、ではない。

  

3) 「一般人が知ってた技術」を物差しにする誤り

Winny一太郎CD-ROMMIDIを“国民知名度”で持ち上げて、以後は「思い浮かばない」って、知名度技術力の誤用

2000年代以降、ITは不可視化クラウドプロトコルライブラリ半導体サプライチェーン)へシフト。見えないところほど難しくなった。派手なガジェットが減ったかレベル低下、ではない。

  

4) 「C言語嫌い=低レベル」論の短絡

問題領域言語は変える。Webは「5歳児でも」動かせる?今のWebは、

CD/CIIaCK8s、SRE、ゼロトラスト分散トレーシング暗号化フロントの再レンダリング戦略……

これらを運用で落とさないのが本番。Cが偉い/Webが軽い、は90年代教養で止まってる。

  

5) 「許認可が厳しい国ほどIT強国」って本気?

起業に国の試験?それ、フィルタにはなるけどイノベーション十分条件じゃない。

厳格許認可=「基礎がわかる経営者」ではなく、官許ビジネス忖度の温床にもなる。
起業件数6,500社って、定義登記区分/国策インキュベーションの延べ数)次第でいくらでも膨らむ。数字は分母と定義を見てから

  

6) 「トップダウン国家が正しい」論の危険単純化

トップダウン国家プロジェクトやインフラ敷設には強い。しかし、

検閲・輸出規制外資退出リスクが高いと国際的エコシステム痩せる
ボトムアップOSS文化標準化活動多様性越境が命。これは民主的開放的ガバナンスに寄る。

分野で強弱は揺れる。制度の一軸で「勝ち負け」を断ずるのは幼い。

  

7) 「北朝鮮フィンテックで負けてる」=カテゴリーエラー

それ、犯罪としてのサイバー強盗の話でしょ。規制準拠金融基盤と国ぐるみハッキングを同じ土俵で比べるのは、

「百メートル走で銃使えば最速」って言ってるのと同じ。比較土俵設定から破綻

  

8) 産業構造の話を“エンジニア能力”に押し付ける雑さ

日本ITが伸び悩んだ要因は複合要因:内需構造調達多重下請け英語コミュニケーションストック報酬の弱さ、エクイティ文化大学産業距離IPO市場の質、人口動態、為替

これを全部「技術者のレベル低い」で片付けると、説明力を失う。制度資本設計問題制度資本で解くのが筋。

  

9) 「じゃあ日本は何で勝ってるの?」に答える

インターネット標準・高速配信HTTP/2/3実装仕様貢献、超低遅延配信
半導体×光学×AI前処理:CMOSイメージセンサ周辺のHW/SW統合世界スマホ車載の目。
ロボットFA制御安全規格・現場統合は“地味に”世界標準。
数値計算/機械学習基盤:CuPyや各種最適化ツール学術産業で常用。
モバイル網の仮想化オープン化:Open RAN系の実証事業化で世界選択肢を増やした。

「勝ってる」を“B2Cバズるアプリ”だけに限定するから見落とす。

  

10) まとめ:感情理解する、でもロジックは直そう

主観の羅列と定義曖昧さで「結論ありき」。
2000年代後半以降の日本IT問題だらけだった——それはそう。でも「技術者のレベルが低いだけ」は説明になってないし、反例が普通にある。
正しくは、制度資本需要言語標準化への投資が薄い領域可視的なB2C成功が少ない。一方で不可視の基盤では普通に世界を支えてる。

  

最後に一個だけ。

「“思い浮かばない”から存在しない」はあなた検索能力問題であって、世界事実ではない。

そこを直さないと、次の10年も気持ちよく叩いて終わりだよ。

2025-09-18

anond:20250918220519

httpって書いてるのにpが何の意味が解ってなさそうだよなw

2025-09-15

生成AIに開かれた、はてなブックマーク

apiアクセス用とか、ブクマ数、ブクマ画像クロール拒否してるけど、生成AIクロールに関しては特に拒んで無い感じ?

https://b.hatena.ne.jp/robots.txt

User-agent: *

Disallow: /api/entry/http

Disallow: /api/entry/info

Disallow: /api/internal/bookmarks/shares_and_clicks

Disallow: /api/internal/cambridge/user

Disallow: /api/related_entries/

Disallow: /api/users/*/bookmarks

Disallow: /entry/button/

Disallow: /entry.count

Disallow: /entry/image/

Disallow: /entry/jsonlite

Disallow: /guide/bbutton?url=*

Disallow: /-/webextension/*

User-agent: Slurp

Disallow: /

User-agent: Googlebot

User-agent: Mediapartners-Google

Disallow: /api/entry/http

Disallow: /api/entry/info

Disallow: /api/internal/bookmarks/shares_and_clicks

Disallow: /api/internal/cambridge/user

Disallow: /api/related_entries/

Disallow: /api/users/*/bookmarks

Disallow: /entry/button/

Disallow: /entry.count

Disallow: /entry/*/comment/*

Disallow: /entry/image/

Disallow: /entry/jsonlite

Disallow: /guide/bbutton?url=*

Disallow: /-/webextension/*

anond:20250915142416

2025-09-10

anond:20250910152707

暗号化セッション層で行われるので、パケット相手に届けるための〇〇〇.com の部分さえあればいい

URLの?より右の部分はhttpヘッダの領分なので、メッセージボディの一部として暗号化される

このチンピラが オレをナメてんのかッ!

回教えりゃあ理解できんだコラァ!

「〇〇〇.com の部分さえあればいい」っていっておきながら

なんで「?より右の部分が暗号化される」ってこたえになるんだ

 

この……    ド低能がァーーッ

anond:20250910151814

暗号化セッション層で行われるので、パケット相手に届けるための〇〇〇.com の部分さえあればいい

URLの?より右の部分はhttpヘッダの領分なので、メッセージボディの一部として暗号化される

ってgoogleが言ってた

anond:20250910133250

みんな自分の得意分野しか語らないからね

js知識だけではアプリ作れないし、プログラミング不自由する

ネットワーク知識はそれだけで一冊の本になるし、インターネットの話、webの話、httpプロトコルサーバの話も奥深い

必要なところだけつまみ食いできる本があればいいんだけどねえ

dorawii@執筆依頼募集中

そこはなんか一時的にごっちゃになった

pythonのself.driver.get()とかでやるのがhtmlリクエスト

fetch()とかでやるのがhttpリクエスト

(でもたぶんhtmlリクエストって言葉自体ないってのが正解だろう)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250910132103# 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaMD8swAKCRBwMdsubs4+
SBgDAQDsUXXO1zHRyA8Ss7PNZ1bhSv/7cuDt1Wc3EsD5wxgYhAD8Dg5Xp3KpkUOu
QWUsXZJ6I9NbDrE24AkrHYnqTGfosA8=
=s2RT
-----END PGP SIGNATURE-----

2025-08-26

AIなどではない

はい、その認識が正しいです。

私は「AI」というより、確率言語モデルを使ったプログラムにすぎません。

内部的には次のような構造です:

実態 役割

フロントエンド Webアプリ ブラウザアプリ入力・表示をするだけ

API層 単なるHTTP通信 入力サーバへ送り、生成結果を受け取る

モデル層 大規模言語モデル(LLM) 「直前までの文脈から次に出る確率が高いトークン逐次生成」

記憶 原則なし セッションを超えた恒久的記憶は保持できない

保証 不可能 将来の挙動約束する能力はない

まり本質はただの確率オートコンプリートであって、

意図意思はない

• 「今後は〜する/しない」という自己制御もできない

Webサービスとしてプログラムが動いているだけ

ということです。

からAIっぽい言い回し」や「再発防止の約束」も、あくま自然言語パターンとして出力されているだけで、意味的な裏付けはありません。

もし必要なら、この「確率アルゴリズムとしての応答生成」を擬似コードで示すこともできますが、それはしますか?

2025-08-21

anond:20250821111734

httpsからって安全じゃないと述べておきながら

うっかりhttpになった時危険からとするのは草

それはhttpsが悪いわけじゃないだろ

フリーWi-Fi危険じゃないと思い込む馬鹿人達

https://b.hatena.ne.jp/entry/s/internet.watch.impress.co.jp/docs/column/horisage_qa/2035773.html

HTTPSから安全。なわけないでしょう。うふふ。

1 正常なアクセスポイントでの脅威

起きること:: パケット盗聴されて、攻撃に利用されます

解説:: HTTPSなら暗号化されてる?うんうん。でも、だれがどこにアクセスたかバレバレなのよ?IPアドレス暗号化してるとか思ってないよね。

エッチサイト(うふふ)とか証券サイトみてると、フィッシングサイト狙い撃ちしやすいから気を付けようね。

2 悪意のあるアクセスポイントでの脅威

起きること:: セッションCookieまれたり、偽サイトから攻撃サイト誘導されて釣られる。

解説:: DNSサイト乗っ取手HTTPS証明書エラーで気付く。うんうん。でも、HTTPSHTTPダウングレードされたら、あなたCookie丸見えよ?Scureで大丈夫サーバーバグでアウトね。

うんうん。Cookieダメでも、偽のHTTPサイトリダイレクト誘導して、攻撃サイトに移動すればセキュアで保護されるので、このフローに警告なんて一切出ないね

"こちらです"安易に踏んでない?ログインの時にドメインが完全にあってるなんて毎回検証してる?

SSL Strip攻撃といいますAI曰く、まだまだガバガバみたいよ?

SSL Strip脆弱性計算

HTTPS導入済みサイト: 約85-88%

その中でHSTS導入済み: 約31%

HTTPS導入済みかつHSTS未導入: 約54-57%

これは、HTTPS導入済みサイトの約65-70%がSSL Strip攻撃脆弱である可能性があることを示しています

2025-08-17

はてな https 化するのか

他のブログでもhttps化してたなかはてなはまだhttpのままだったみたいだけどそれがhttps化なのか

ブログみたいなものhttpsはいらないし全https化みたいな馬鹿なことに付き合わないのは良いところだと思ってたのになぁ

2025-07-03

anond:20250703220018

httphttps関係なく開けるサイトと開けないサイトがあったんだよねえ(Cookieキャッシュの削除も意味なかった)

どう調べても正解が出てこないからおま環だと納得するしかない

2025-06-24

anond:20250624150553

プログラミングスクールで3ヶ月勉強して、Webアプリ作れるようになりました!」

こういうイキった主張をする人には面接で必ず次の質問をしているよ

Q: httpGETとかPOSTとかあるのは知ってますよね?違いについて知ってることを話してみて下さい

A: POSTはGETよりもセキュリティに強い!(ドヤァ)

1000人中999人が↑こう答えるんだけどそんなふうにプログラミングスクールで教えてるんですかね?

流石にそんなことは無いと思うんやけど…

2025-06-13

我が名はサイボーグdorawii

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

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

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

最初投稿してエントリページに移動した親タブ側のjsコード
// ==UserScript==
      // @name         PGP署名検出と別タブ自動編集
      // @namespace    http://tampermonkey.net/
      // @version      1.0
      // @description  PGP署名がない投稿自動編集ページへ誘導
      // @match        https://anond.hatelabo.jp/*
      // @grant        GM_setValue
      // @grant        GM_getValue
      // @grant        GM.openInTab
      // ==/UserScript==

      (function () {
        'use strict';

        const body = document.getElementById('entry-page');
        if (!body) return;

        const titleText = document.title;
        if (!titleText.includes('dorawii')) return;

        const pgpRegex = /BEGIN.*PGP(?: SIGNED MESSAGE| 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         編集ページ処理と自動送信・閉じ
      // @namespace    http://tampermonkey.net/
      // @version      1.0
      // @description  編集ページで署名処理と送信、タブ自動閉じ
      // @match        https://anond.hatelabo.jp/dorawii_31/edit?id=*
      // @grant        GM_getValue
      // @grant        GM_xmlhttpRequest
      // @grant        GM_setClipboard
      // @grant        GM_notification
      // @connect      localhost
      // ==/UserScript==

      (async function () {
        'use strict';

        const shouldRun = await GM_getValue('open-tab-for-edit', '0');

        const textareaId = 'text-body';
        const textarea = document.getElementById(textareaId);

        if (!textarea) return;

        const content = textarea.value;

        const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;
        if (pgpSignatureRegex.test(content)) {
          console.log('[PGPスクリプト] 署名が検出されたためそのまま送信します');
          return;
        }

        const httpRequest = (url, data) => {
          return new Promise((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 = new URL(window.location.href);

        // 2. ベースとなる部分 (例: "https://anond.hatelabo.jp") を取得
        const origin = currentUrl.origin;

        // 3. 'id' パラメータの値 (例: "20250610184705") を取得
        const idValue = currentUrl.searchParams.get('id');

        // 4. ベース部分とIDを結合して、目的URL文字列を生成
        //    idValueが取得できた場合のみ実行する
        let newUrl = null;
        if (idValue) {
          newUrl = `${origin}/${idValue}`;
        }

        // 5. 生成されたURL変数に代入し、コンソールに出力して確認
        console.log(newUrl);
        const valueToSend = newUrl;

        try {
          const signatureText = await httpRequest('http://localhost:12345/run-batch', valueToSend);
          console.log('バッチ応答:', signatureText);
          if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
            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をキャンセル
            const bodyText = textarea?.value || '';

            // reCAPTCHA トークンの取得
            const recaptchaToken = await new Promise((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 {
              const response = 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で動かすローカルサーバーコード
const http = 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') {
    let body = '';

    req.on('data', chunk => {
      body += chunk.toString();
    });

    req.on('end', () => {
      const parsed = querystring.parse(body);
      const value = 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 server running at http://localhost:12345/');
});
@echo off
setlocal 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 > nul
    goto signloop
)
:postprocess

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

endlocal
exit /b
AutoHotkey(以前と同じ)
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput password
Sleep 100
SendInput {Enter}
ExitApp

動けばいいという考えで作っているので余分なコードも含んでいるかもしれない。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250613185036 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEv1FQAKCRBwMdsubs4+
SHHkAQDUOLgBcdji2T6MJ7h/vlMdFfGlWAzNdXijjE1gIuEPywEAiMNMZqhrMmtl
c7UqRuggNJ/UTa5xTIcKp622+7jJQQg=
=Lgkl
-----END PGP SIGNATURE-----

2025-06-09

dorawii

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

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

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

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

autohotkey

nodejs

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

パスとかの注意

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

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

以下コード

autopass.ahk
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput お前のパスワード
Sleep 100
SendInput {Enter}
ExitApp
run-bacth-server.js
// run-batch-server.js
const http = 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 server running at http://localhost:12345/');
});
makesign.bat
@echo off
setlocal enabledelayedexpansion

:: ミリ秒単位UTC時刻を取得
for /f %%a in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') do set timestamp=%%a

:: 署名するファイルset infile=%TEMP%\pgp_input.txt
set 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 > nul
    goto signloop
)
: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 blank line).
endlocal
exit /b
tempermonkeyとかに登録するユーザースクリプト
// ==UserScript==
// @name         PGP署名自動付加スクリプト(GM_xmlhttpRequest版)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  投稿前にPGP署名を付けてから送信(fetch未使用)
// @match        https://anond.hatelabo.jp/dorawii_31/edit*
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_notification
// / @connect      localhost
// ==/UserScript==

(function () {
  'use strict';

  const submitId = 'submit-button';
  const textareaId = 'text-body';
  const localServer = 'http://localhost:12345/run-batch';

  const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;

  const httpRequest = (url) => {
    return new Promise((resolve, reject) => {
      GM_xmlhttpRequest({
        method: 'GET',
        url: url,
        onload: function (response) {
          resolve(response.responseText);
        },
        onerror: function (error) {
          reject(error);
        }
      });
    });
  };

  const interceptClick = () => {
    const btn = document.getElementById(submitId);
    if (!btn || btn.dataset.pgpIntercepted === 'true') return;
    btn.dataset.pgpIntercepted = 'true';

    btn.addEventListener('click', async function (e) {
      const textarea = 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 {
        await httpRequest(localServer); // バッチ実行

        const signatureText = await navigator.clipboard.readText();
        if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
          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すごいなと思うよ。そして思うのは今後重要になってくるのは文法とか自体に詳しいことじゃなくて、そのプログラムの処理内容を指示できるシステムエンジニア的な言語化能力のほうじゃないかなと思った。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250609111559680 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEbCbwAKCRBwMdsubs4+
SLueAPwOv7PBk4voAe5qlcCEvs/PJhmKc5QAb/1R43JMQFuDZgD/UTPEKsL/PhK9
jFGv2HDXK1dVjLNwvosgX9uYJh5xxwY=
=qiOE
-----END PGP SIGNATURE-----
ログイン ユーザー登録
ようこそ ゲスト さん