Movatterモバイル変換


[0]ホーム

URL:


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

「HTTP」を含む日記RSS

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

次の25件>

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. “好き/嫌い”から“なぜ速い・なぜ遅い”へ

CoreWeb 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" />

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

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

<metaname="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.ホスティング無料~低コスト

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

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

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

C.ドメインの基本

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

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

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

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

画像は適切なサイズalt

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

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

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

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

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

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

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

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

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

2025-10-12

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

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

しかhttp

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

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

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

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年も気持ちよく叩いて終わりだよ。

Permalink |記事への反応(3) | 00:27

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

2025-09-18

anond:20250918220519

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

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

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

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

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

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

2025-09-10

anond:20250910152707

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

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

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

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

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

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

 

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

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

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

anond:20250910151814

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

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

ってgoogleが言ってた

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

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

anond:20250910133250

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

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

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

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

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

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

dorawii@執筆依頼募集中

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

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

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

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

-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250910132103# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaMD8swAKCRBwMdsubs4+SBgDAQDsUXXO1zHRyA8Ss7PNZ1bhSv/7cuDt1Wc3EsD5wxgYhAD8Dg5Xp3KpkUOuQWUsXZJ6I9NbDrE24AkrHYnqTGfosA8==s2RT-----ENDPGP SIGNATURE-----

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

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

2025-08-26

AIなどではない

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

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

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

実態役割

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

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

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

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

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

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

意図意思はない

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

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

ということです。

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

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

Permalink |記事への反応(1) | 15:41

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

2025-08-21

anond:20250821111734

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

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

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

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

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

フリー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攻撃脆弱である可能性があることを示しています

Permalink |記事への反応(4) | 11:17

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

2025-08-17

はてなhttps 化するのか

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

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

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

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

2025-07-03

anond:20250703220018

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

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

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

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

anond:20250703215815

閲覧できてたサイトhttpだったんじゃね

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

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

2025-06-24

anond:20250624150553

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

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

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

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

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

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

Permalink |記事への反応(2) | 15:13

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

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

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

anond:20250609163156

HTTPステータスコードを返すお姉さんは脱落した?

Permalink |記事への反応(1) | 16:33

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

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は自転車側の違反なんです」は、完全無欠の虚偽なのである

Permalink |記事への反応(0) | 16:09

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

2025-05-22

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

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

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

2025-05-15

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

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

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

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

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

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

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

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

Permalink |記事への反応(2) | 18:37

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

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

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 VisualC++ 2008 SP1 RedistributablePackage (x86)のファイルが見つかりませんでした。インストールを中断します。ダウンロードに失敗したかキャンセルされた可能性があります

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

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

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

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

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

 ↓

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

注意

終わったら消すの推奨

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

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

漏洩リスクやばいです

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

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

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

一応対策は書きます

時間かかる可能性大

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

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


解決手順

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

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

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

ダウンロードクリック

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

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

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

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

利用規約同意する

完了したら「Microsoft VisualC++ 2008 Redistributablehas 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 VisualC++頒布可能パッケージバージョンを整理する

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

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

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

2025-05-14

anond:20250514183316

http平文で使ってる馬鹿発見wwww

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

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

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ヶ月で社会理解した気になってんじゃないよ!!

Permalink |記事への反応(5) | 23:28

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

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

[8]ページ先頭

©2009-2025 Movatter.jp