Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
http - はてな匿名ダイアリー
[go: Go Back, main page]

「http」を含む日記 RSS

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

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

2025-06-04

JA共済の“捏造広告”を許すな!(転載) 過失が軽い弱者責任転嫁し、より有害で過失が重い自動車側を咎めない異常な捏造広告を流し読者を騙すJA共済

1行要約;自動車自転車事故の約9割は自動車側のほうがより悪質だったと認定されている。そんななか自転車けが悪いと嘘を流し読者を騙す詐欺広告を流すJA共済。利口な者はそんなJA共済を信用しない。

ツーキニストの疋田智さんが自身メルマガ広告ウソにかみついている。本当の事を知らなければならない。

 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

┏━┫ 週刊 自転車ツーキニスト "Weekly Bicycle Tourkinist" ┣━┓

┃ ┗┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳┛ ┃

┗━━┛                          ┗━━┛

JA共済の“捏造広告”を許すなの510号

自転車事故の2/3は、自転車側の違反

 4月6日付の全国のブロック紙地方紙に、こんな広告が載った(私が確認したのは『東京新聞東京版朝刊)。

http://or2.mobi/index.php?mode=image&file=53841.jpg

 JA共済イメージ広告ともいえるものなんじゃが、いやはや、すごいなぁ。

「知ってるかな。自転車事故の2/3は、自転車側の違反なんです。」

 だそうな。

 これ、どう見たって、自転車事故3分の2は、自転車に非があるように受け取れますよね。

 知ってましたか? 私は知らんかった。たぶん知る人はほぼゼロだと思う。

 なぜなら、事実と違うから

 ヘッドコピーの後に、小さな文字で「※警察庁統計データによる」とあるけれど、これいったいどういうデータなんだろう。

 元ネタにあたってみると、こういう数字です。

http://www.google.com/url?sa=t&rct=j&q&esrc=s&source=web&cd=3&ved=0CEkQFjAC&url=http%3A%2F%2Fwww.npa.go.jp%2Fkoutsuu%2Fkikaku%2Fbicycle%2Fkondankai%2Fsiryo1-2.pdf&ei=Sa9fUbCMOKqWiQfQyYDYBQ&usg=AFQjCNEdnr52Nzvzyypox1i3KB5jp5xYEQ&sig2=l60hyApRqlFLnBi539odCA&bvm=bv.44770516%2Cd.aGc&cad=rja

 上記↑の資料の2ページ目、たしか事故自転車の2/3に法例違反があるということが書いてある。統計上それは事実だ。警察庁言葉では「自転車乗用中の死傷者の3分の2に何らかの法例違反」。

 ただ、それは「自転車側が悪い」ということを指しているわけじゃない。

 あらゆる自転車事故は「あちらが悪い、こちらが悪い」と軽々に決めつけられるものではなく、双方に法例違反があり、双方に過失がある場合の方が多いわけだ。つまり2/3の事故自転車法例違反があるのと同時に、クルマ側にも(歩行者側にも)法例違反がある場合が多々あるというわけ。

 中でも、今回の警察庁資料にあげられた「自転車側の違反」については、過半数が「安全運転義務違反」つまりハンドル操作不適、安全不確認、前方不注意、動静不注視などを指していて、そういう事故場合ほとんど、それ以上の過失がクルマ側に認められているのだ。

■正解は「自転車側が第一当事者割合は15.4%」

 では、そうした状況の中、自転車が「一番悪い」と認定されたのは、どのくらいの割合なのだろうか。

 つまり自転車第一当事者」の事故ことなんだけど、警察庁資料によると、これが15.4%(「交通統計平成23年版」(警察庁交通局)平成24年7月発行)。

 6分の1弱だ。

自転車事故の2/3は自転車側の違反なんです」は、完全無欠の虚偽なのである

2025-05-22

ワンパンマンONE更新されてるのにはてなアンテナが検知できてない。このサイトはまだhttpなのでそれが原因なのかなと思ってるが、はてなアンテナまだ使ってるんだから頼むで。

2025-05-15

原始的フィッシング詐欺対策が普及しそう

証券業界で1カ月で1400億円以上の被害が発生してるフィッシング詐欺だが、もの凄く原始的対策が今後行われそうなので先に書いておく。

それは、「メールSMShttpリンクを貼らない」というめちゃくちゃ原始的対策

リンクがあるからクリックしてフィッシングサイトに行ってあれこれしてしまうので、なら金融機関から正式な連絡メールにはリンクを一切書かないようにすれば、リンクの有無でフィッシングか否かを見分けられる、というものだ。

大昔のインターネットの「HTMLメールは送らない」に匹敵するダサさではあるが、メールドメインよく見なさいとか、DMarkやBIMIを確認といった、IT専門知識がある人じゃないと敷居が高い見分け方よりははるかに分かりやすい。

課題パスワード再発行のケース。今までならパスワード再発行用のリンクセッションIDにあたるエンコード文字列付の長いアドレス)をメールSMSに貼り付けて送るのが主流だったと思うが、この方式NGとなる。

パスワード再発行に関しては電話や窓口、郵送による対応になる公算が高い。

マイナンバーパスワード再発行がネット完結出来ないのが以前かなり叩かれていた記憶があるが、結局このアナログなやり方が日本では最適解なのかも知れない。

PS Vita コンテンツ管理アシスタントWindows 11で使う方法

PS Vitaデータで使うPCソフトコンテンツ管理アシスタントは死んだ。

実際にはまだ働かされているが、誰もサポートしてないゾンビのようなものだ。

この記事で多少サポートしてみようと思う。

※この記事Windows向けです

結論

セーブデータバックアップPS Plusがおすすめ

コンテンツ管理アシスタントは頑張れば使えるが、PC詳しくない人には全然おすすめしない

コンテンツ管理アシスタントの現状

・配布サイトhttp暗号化されていないので、ブラウザから保護されてない通信」「安全ではないダウンロード」とボロクソ言われる

http://cma.dl.playstation.net/cma/win/jp/index.html

インストーラを実行するとエラーで止まる

エラー内容①

ファイルhttp://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/wcredist_x86.exeダウンロード中にエラーが発生しました。処理を指定してください。

・再試行するとエラーループ。諦めてキャンセルを押すと次のエラー

エラー内容②

インストール要件 Microsoft Visual C++ 2008 SP1 RedistributablePackage (x86)のファイルが見つかりませんでした。インストールを中断します。ダウンロードに失敗したかキャンセルされた可能性があります

なぜこんなことが起きるか

・起動要件に『Microsoft Visual C++ 2008 再頒布可能パッケージランタイム)』 がインストールされていること』が入っている

コンテンツ管理アシスタントインストール時に、上記インストール済みかチェックしてる(エラー内容②)

Microsoft Visual C++ 2008が見つからない場合インストールしに行くリダイレクト設定がされてる

・が、恐らくそリダイレクトが切れてる(エラー内容①)

 ↓

Microsoft Visual C++ 2008 SP1 RedistributablePackage (x86) を自分で入れたらたぶん解決する

注意

終わったら消すの推奨

今回出てくるのは古いソフトパッケージばかりなので、PCセキュリティリスクが超高まります

新版インストールしたとしても脆弱です。一時的インストールして、使い終わったら消す くらいがちょうど良いと思います

漏洩リスクやばいです

コンテンツ管理アシスタントは初期設定ではPCのフォト、ビデオミュージックなどのフォルダにフルアクセス権限を得ます

写真動画PCバックアップ取っている場合、それら全てにソフトアクセスできると思って下さい

一番やばいパターンは「C++コンテンツ管理アシスタントに未修正脆弱性がある」→そこを突かれてデータが抜かれる→しかPC内の写真動画へフルアクセス権限与えてた パターンです

一応対策は書きます

時間かかる可能性大

この記事情報2025年5月時点のものです。現時点では解決できても、数年経つと新しい課題が生じて時間がかかったりします。

繰り返しになりますが、PS Plusのクラウドバックアップの方が全然ラクです。


解決手順

ステップ1】 Microsoft Visual C++ 2008 再頒布可能パッケージランタイム)をインストールする
1, インストーラダウンロード

Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージ MFCセキュリティ更新プログラム

https://www.microsoft.com/ja-jp/download/details.aspx?id=26368

ダウンロードクリック

・『希望するダウンロード選択』では「vcredist_x86.exe」を選択し、ダウンロード

2, ダウンロードしたフォルダを開く
3, 「vcredist_x86.exe」を管理者権限で実行する

右クリック→「管理者として実行」

4, インストールを進める

利用規約同意する

完了したら「Microsoft Visual C++ 2008 Redistributable has been successfully installed.」と表示される

ステップ2】 コンテンツ管理アシスタントインストールする
1, インストーラダウンロード

公式配布サイト

http://cma.dl.playstation.net/cma/win/jp/index.html

・最新版 ダウンロードWindows)をクリックするとダウンロードされます

Chromeだとダウンロードできないとの情報があります

2, インストーラを実行

・CMASetup.exeを実行する

使用許諾契約同意する

3, アクセス許可するフォルダを変更する ※任意

任意場所に「VITA」のようなフォルダを作ります(例:C:\Users\ユーザー名\Desktop\VITA

・フォト、ビデオミュージックアプリケーション/バックアップファイルの4つ全てで、参照ボタンを押して上記作成フォルダを選び直しま

・初期値

 ・フォト   C:\Users\ユーザー名\Pictures (やばい

 ・ビデオ   C:\Users\ユーザー名\Videos (やばい

 ・ミュージック C:\Users\ユーザー名\Music

 ・アプリケーション/バックアップファイル C:\Users\ユーザー名\Documents\PS Vita (何故か安心設計

・設定後

 ・フォト   C:\Users\ユーザー名\Desktop\VITA

 ・ビデオ   C:\Users\ユーザー名\Desktop\VITA

 ・ミュージック C:\Users\ユーザー名\Desktop\VITA

 ・アプリケーション/バックアップファイル C:\Users\ユーザー名\Desktop\VITA

インストール完了したら、タスクトレイコンテンツ管理アシスタントが表示されているはずです

コンテンツ管理アシスタントの使い方

タスクトレイから起動して使うものではないです。

タスクトレイに表示されている状態(=起動している状態)で、VITAPCに繋いで接続操作します。

1, VITA操作コンテンツ管理アプリを起動
2, コンテンツコピーする→接続する機器で「パソコン」を選択
3, 機器接続する方法選択(例:USBケーブル

USBケーブルデータ転送である必要があります

たぶんこれで繋がります

お疲れ様でした。

補足は最新情報がある場合は、反応にてお願いしま

補足:CFW化している場合

もしCFW化している場合システムアップデートを求められてうざいですよね

これは別途回避必要です。以下の記事が参考になりそう

PS VITAエミュ機にして遊ぼう! https://note.com/fieldwest/n/n43c17bf36d70

参考情報

Microsoft Visual C++頒布可能パッケージバージョンを整理する

https://tyawanmushi.hatenablog.com/entry/Microsoft-Visual-C%2B%2B-Redistributable-Lists

Yahoo知恵袋 PSVitaコンテンツ管理アシスタントインストールについて質問です。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12136357312

Yahoo知恵袋 PlayStationVitaカメラ撮影されたプライベート画像動画PC、もしくはスマホに移動・コピーしたいのですが、上手くいきません。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11314301156

2025-04-24

新卒銀行3ヶ月退職→未経験エンジニアを目指す「みるる」君を応援

https://www.youtube.com/@Miruru72

Youtubeおすすめに流れてきた。

大げさな言葉と酒と自称鬱で「人生終わったわ」が口癖のイキる大学生時代友達を思い出す。

正直みるる君のことをバカにする気持ちはあるが、嫌いではない。

等身大自分動画に表れていていね

チャンネル登録者数も1310人と伸びていて期待大。

銀行を辞めて、エンジニアを目指すらしい。

まずはHTMLから。その後はCSSJavaScriptLinuxGitHubRubyHTTPNginxデータベースRuby on Rails、ポートフォリオ制作就職活動、の順番で進める予定です。

エンジニアとしての就職を目指すことにしました。

https://www.youtube.com/watch?v=boKMk36ugkw

よくわからないけど、

まだ若いんだし色々やって頑張ってほしい。

そして動画で嘆いてほしい。

コメント欄応援しているようで、破滅に向かわせているような人もいるけど、諦めるな!!

私とさして年齢の変わらない、"子連れ"のカップルが、イオンフードコートで、アイスを食べている。こんな当たり前の風景に、感動してしまった私は、俗に言う"負け組"、という事になるんでしょうか。

24歳で悲観するな!

3ヶ月で社会理解した気になってんじゃないよ!!

ログイン ユーザー登録
ようこそ ゲスト さん