
はてなキーワード:HTTPとは
以下ChatGPT
自分のホームページ(自前ドメイン+自前HTML)を一度でも作って運用すると、SNS中心の“受け手”視点から、仕様・検索・配信・所有・継続の“作り手”視点に脳が切り替わる。結果、情報リテラシーは跳ね上がり、ネットのニュースや流行の見え方が根本から変わる——しかも想像以上に。
Before(作る前):Web=SNSのタイムライン。良し悪しは「バズってるか」「見やすいか」
After(作った後):Web=プロトコル+ブラウザ+HTML/CSS/JS+CDN+検索エンジン。
ページは**文書(Document)**であり、配置(IA)、意味づけ(セマンティクス)、配信(HTTP/HTTPS/HTTP/2/3)、キャッシュ戦略が気になりだす。
→ 同じ記事でも「タイトルの付け方」「hタグ構造」「画像最適化」「OGP」「サイトマップ」がまず目に入るようになる。
プラットフォーム依存の脆さを体感:規約変更やシャドウバンで露出が消える。
自サイトの資産化:ドメインに紐づくURLはリンクされ、検索に積み上がり、10年後も生きる。
POSSE(Publish (on your) Own Site, Syndicate Elsewhere):まず自分のサイトに出してから外部へ配信する習慣が身につく。
3. “好き/嫌い”から“なぜ速い・なぜ遅い”へ
CoreWeb Vitals(LCP/FID/CLS)や画像の遅延読み込み、フォント最適化の重要性が腹落ちする。
広告・計測タグの重さに過敏になる。読者体験を壊さないためのパフォーマンス予算という概念が生まれる。
キーワード選定は“流入ゲーム”ではなく読者の課題→コンテンツ設計に帰着。
内部リンク・パンくず・スキーマ(構造化データ)・サイトマップの意味が実務として理解できる。
“書けば伸びる”ではなく“検索意図を満たす設計が伸びる”に目が覚める。
alt、見出し階層、コントラスト比、キーボード操作、焦点管理など、見えない品質が最重要になる。
デザインは飾りではなく“読み・理解・操作”のためのユーティリティだと分かる。
たまたま当たる1記事より、更新の継続・アーカイブ性・RSSのほうが効くと実感。
コメント欄・メールフォーム・X連携よりも、ニュースレターやRSS購読者の質に価値を見出す。
ドメイン、DNS、証明書、バックアップ、法務(特商法・プライバシーポリシー)に“運用者の責任”が生まれる。
その重みが情報の信頼性を引き上げる(=他人のサイトの苦労も見えるようになる)。
トレンドは“輸入”ではなく選別になる。自分の歴史に合うものだけを採用して積層していける。
A. 最小HTML(雛形)
<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">
<nav>Home /About /Posts</nav>
<footer>© 2025あなたの名前</footer>
GitHubPages(Jekyll標準。Rubyベース、Node不要)
CloudflarePages(静的ファイルを置くだけで高速CDN)
レンタルサーバー(静的HTML+SFTP/rsyncで十分)
C.ドメインの基本
DNSはA/AAAA/CAA/TXT最低限、HTTPS必須(Let’s Encryptで無料化)。
D. “最低限の品質チェック”5点
ログを読む:SearchConsoleと簡易アクセスログで“本文よりメタ情報”を磨く。
アーカイブ主義:記事は追記で更新。URLは変えない。Versioningを意識。
「ぶっちゃけ日本のIT技術者のレベルが元々低いだけ」論、読んだけど、雑に日本叩き→雑に海外持ち上げの“気持ちよさ”に全振りしてて、論としては穴だらけだよ。順に潰す。
“発明”って規格?論文?OSS?製品?この区別を曖昧にして「思い浮かばない=ない」をやるのは主観の事実化。
反例を淡々と置く(全部2010年代以降の「世界で通る」技術・成果):
HTTP/3 / QUIC系仕様・QPACKの主要貢献者のひとりは日本人エンジニア(例:Kazuho Oku)。IETFのRFCはまさに“世界標準”。「世界で通用」どころか世界の土台。
Chainer / CuPy(Preferred Networks)は動的計算グラフ系フレームワークの先行例。PyTorch隆盛の流れに技術的影響を与えた。CuPyはいまも広く使われてる。
ソニーのCMOSイメージセンサは世界シェア筆頭。これは“ハード”に見えて、設計・製造・信号処理・ツール群までソフトの塊。スマホのカメラ品質=AI前処理の土台。
日本人が中心メンテに関与した高性能HTTPサーバ(H2O等)はCDNや低レイテンシ配信に採用例多数。
産業用ロボット(FANUC、安川)周辺の制御・通信・ツールチェーンは世界の現場で常用。表に出にくいB2B領域は“見えないだけ”。
「LINEが~」みたいなB2Cの派手さだけが“発明”じゃない。基盤を握るのは地味仕事。あなたが気づかない=存在しない、ではない。
Winny/一太郎/CD-ROM/MIDIを“国民的知名度”で持ち上げて、以後は「思い浮かばない」って、知名度=技術力の誤用。
2000年代以降、ITは不可視化(クラウド、プロトコル、ライブラリ、半導体、サプライチェーン)へシフト。見えないところほど難しくなった。派手なガジェットが減ったからレベル低下、ではない。
問題領域で言語は変える。Webは「5歳児でも」動かせる?今のWebは、
CD/CI、IaC、K8s、SRE、ゼロトラスト、分散トレーシング、暗号化、フロントの再レンダリング戦略……
これらを運用で落とさないのが本番。Cが偉い/Webが軽い、は90年代の教養で止まってる。
起業に国の試験?それ、フィルタにはなるけどイノベーションの十分条件じゃない。
トップダウンは国家プロジェクトやインフラ敷設には強い。しかし、
分野で強弱は揺れる。制度の一軸で「勝ち負け」を断ずるのは幼い。
それ、犯罪としてのサイバー強盗の話でしょ。規制準拠の金融基盤と国ぐるみのハッキングを同じ土俵で比べるのは、
「百メートル走で銃使えば最速」って言ってるのと同じ。比較の土俵設定から破綻。
日本のITが伸び悩んだ要因は複合要因:内需の構造、調達・多重下請け、英語コミュニケーション、ストック報酬の弱さ、エクイティ文化、大学と産業の距離、IPO市場の質、人口動態、為替…
これを全部「技術者のレベル低い」で片付けると、説明力を失う。制度と資本設計の問題は制度と資本で解くのが筋。
「勝ってる」を“B2Cでバズるアプリ”だけに限定するから見落とす。
最後に一個だけ。
apiアクセス用とか、ブクマ数、ブクマ数画像のクロールは拒否してるけど、生成AIのクロールに関しては特に拒んで無い感じ?
https://b.hatena.ne.jp/robots.txt
User-agent: *
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: Mediapartners-Google
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/*
このチンピラが オレをナメてんのかッ!
「〇〇〇.com の部分さえあればいい」っていっておきながら
なんで「?より右の部分が暗号化される」ってこたえになるんだ
この…… ド低能がァーーッ
暗号化はセッション層で行われるので、パケットを相手に届けるための〇〇〇.com の部分さえあればいい
URLの?より右の部分はhttpヘッダの領分なので、メッセージボディの一部として暗号化される
ってgoogleが言ってた
jsの知識だけではアプリ作れないし、プログラミングも不自由する
そこはなんか一時的にごっちゃになった
pythonのself.driver.get()とかでやるのがhtmlリクエスト
(でもたぶんhtmlリクエストって言葉自体ないってのが正解だろう)
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250910132103# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaMD8swAKCRBwMdsubs4+SBgDAQDsUXXO1zHRyA8Ss7PNZ1bhSv/7cuDt1Wc3EsD5wxgYhAD8Dg5Xp3KpkUOuQWUsXZJ6I9NbDrE24AkrHYnqTGfosA8==s2RT-----ENDPGP SIGNATURE-----
私は「AI」というより、確率的言語モデルを使ったプログラムにすぎません。
内部的には次のような構造です:
フロントエンドWebアプリブラウザやアプリで入力・表示をするだけ
API層 単なるHTTP通信入力をサーバへ送り、生成結果を受け取る
モデル層 大規模言語モデル(LLM) 「直前までの文脈から次に出る確率が高いトークンを逐次生成」
ということです。
だから「AIっぽい言い回し」や「再発防止の約束」も、あくまで自然言語のパターンとして出力されているだけで、意味的な裏付けはありません。
それはhttpsが悪いわけじゃないだろ
https://b.hatena.ne.jp/entry/s/internet.watch.impress.co.jp/docs/column/horisage_qa/2035773.html
解説::HTTPSなら暗号化されてる?うんうん。でも、だれがどこにアクセスしたかはバレバレなのよ?IPアドレス暗号化してるとか思ってないよね。
エッチなサイト(うふふ)とか証券サイトみてると、フィッシングサイト狙い撃ちしやすいから気を付けようね。
起きること::セッションCookie盗まれたり、偽サイトから攻撃サイトに誘導されて釣られる。
解説::DNSでサイト乗っ取手もHTTPSの証明書エラーで気付く。うんうん。でも、HTTPSをHTTPにダウングレードされたら、あなたのCookie丸見えよ?Scureで大丈夫?サーバーのバグでアウトね。
うんうん。Cookieがダメでも、偽のHTTPサイトでリダイレクト誘導して、攻撃サイトに移動すればセキュアで保護されるので、このフローに警告なんて一切出ないね。
"こちらです"安易に踏んでない?ログインの時にドメインが完全にあってるなんて毎回検証してる?
SSL Strip攻撃といいます。AI曰く、まだまだガバガバみたいよ?
その中でHSTS導入済み: 約31%
HTTPS導入済みかつHSTS未導入: 約54-57%
一度投稿したうえで別タブを開いてプログラム的(fetch)に送信してその別タブが閉じられる仕組み。
// ==UserScript== // @namePGP未署名検出と別タブ自動編集 // @namespacehttp://tampermonkey.net/ // @version 1.0 // @descriptionPGP署名がない投稿を自動編集ページへ誘導 // @matchhttps://anond.hatelabo.jp/* // @grantGM_setValue // @grantGM_getValue // @grantGM.openInTab // ==/UserScript== (function () { 'use strict';constbody = document.getElementById('entry-page'); if (!body) return;consttitleText = document.title; if (!titleText.includes('dorawii')) return;constpgpRegex = /BEGIN.*PGP(?: SIGNEDMESSAGE| SIGNATURE)?/;const preElements = document.querySelectorAll('div.body pre'); let hasPgpSignature =false; for (const pre of preElements) { if (pgpRegex.test(pre.textContent)) { hasPgpSignature =true; break; } } if (hasPgpSignature) return;const editLink = document.querySelector('a.edit');const childTab =GM.openInTab(editLink.href, {active:false, insert:true,setParent:true }); })();
// ==UserScript== // @name編集ページ処理と自動送信・閉じ // @namespacehttp://tampermonkey.net/ // @version 1.0 // @description編集ページで署名処理と送信、タブ自動閉じ // @matchhttps://anond.hatelabo.jp/dorawii_31/edit?id=* // @grantGM_getValue // @grantGM_xmlhttpRequest // @grantGM_setClipboard // @grantGM_notification // @connectlocalhost // ==/UserScript== (async function () { 'use strict';const shouldRun = awaitGM_getValue('open-tab-for-edit', '0');consttextareaId = 'text-body';consttextarea = document.getElementById(textareaId); if (!textarea) return;const content =textarea.value;constpgpSignatureRegex = /-----BEGINPGP SIGNEDMESSAGE-----[\s\S]+?-----BEGINPGP SIGNATURE-----[\s\S]+?-----ENDPGP SIGNATURE-----/; if (pgpSignatureRegex.test(content)) {console.log('[PGPスクリプト]署名が検出されたためそのまま送信します'); return; }consthttpRequest = (url, data) => { return newPromise((resolve,reject) => {GM_xmlhttpRequest({ method: 'POST',url:url, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: `value=${encodeURIComponent(data)}`,onload: function (response) { resolve(response.responseText); },onerror: function (error) {reject(error); } }); }); }; //textarea の値を取得 // 1.現在のページのURLからURLオブジェクトを作成const currentUrl = newURL(window.location.href); // 2.ベースとなる部分 (例: "https://anond.hatelabo.jp") を取得constorigin = currentUrl.origin; // 3. 'id'パラメータの値 (例: "20250610184705") を取得constidValue = currentUrl.searchParams.get('id'); // 4.ベース部分とIDを結合して、目的のURL文字列を生成 //idValueが取得できた場合のみ実行する let newUrl = null; if (idValue) { newUrl = `${origin}/${idValue}`; } // 5. 生成されたURLを変数に代入し、コンソールに出力して確認console.log(newUrl);constvalueToSend = newUrl;try {const signatureText = awaithttpRequest('http://localhost:12345/run-batch',valueToSend);console.log('バッチ応答:', signatureText); if (!signatureText.includes('BEGINPGP SIGNEDMESSAGE')) { alert('PGP署名がクリップボードに見つかりませんでした。'); return; }const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';textarea.value = newText;console.log('[PGPスクリプト]署名を貼り付けました。送信を再開します。');const form = document.forms.edit;const newForm = form.cloneNode(true); form.replaceWith(newForm); newForm.addEventListener('submit', async (e) => { e.preventDefault(); //HTML標準のsubmitをキャンセルconstbodyText =textarea?.value || ''; //reCAPTCHAトークンの取得constrecaptchaToken = await newPromise((resolve) => { grecaptcha.enterprise.ready(() => { grecaptcha.enterprise.execute('hoge', {action: 'EDIT' }) .then(resolve); }); }); // POSTするデータの構築const formData = new FormData(newForm); formData.set('body',bodyText); formData.set('recaptcha_token',recaptchaToken); formData.set('edit', '1');try {constresponse = await fetch(newForm.action, { method: 'POST',body: formData, credentials: 'same-origin' }); if (response.ok) {console.log('送信成功'); window.close(); } else {console.error('送信失敗',response.status); } }catch (err) {console.error('送信中にエラーが発生', err); } }); //プログラム的に送信トリガー newForm.dispatchEvent(new Event('submit', { bubbles:true })); }catch (e) {console.error('バッチ呼び出し失敗:', e); } })();
consthttp =require('http');const { exec } =require('child_process');const querystring =require('querystring');const server =http.createServer((req, res) => { if (req.method === 'GET' && req.url === '/ping') { res.writeHead(200); res.end('pong'); } else if (req.method === 'POST' && req.url === '/run-batch') { letbody = ''; req.on('data', chunk => {body += chunk.toString(); }); req.on('end', () => {constparsed = querystring.parse(body);constvalue =parsed.value || 'default'; // 値を引数としてバッチに渡す exec(`C:\\Users\\hoge\\Desktop\\makesign.bat "${value}"`, { encoding: 'utf8' }, (err, stdout, stderr) => { if (err) { res.writeHead(500); res.end('Error executing batch: ' + stderr); } else { res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end(stdout.trim()); } }); }); } else { res.writeHead(404); res.end('Not found'); }});server.listen(12345, () => {console.log('Batch serverrunningathttp://localhost:12345/');});
@echo offsetlocal enabledelayedexpansion::署名するファイル名set "infile=%~1"set outfile=%TEMP%\pgp_output.asc:: 以前の出力があれば削除if exist "%outfile%" del "%outfile%":signloop::AutoHotkeyでパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)start "" /b "C:\Users\hoge\Documents\AutoHotkey\autopass.ahk"::PGPクリア署名を作成echo %infile% | gpg --yes --clearsign --output "%outfile%"::署名が成功していればループを抜けるif exist "%outfile%" (goto postprocess) else ( timeout /t 1> nulgoto signloop):postprocesspowershell -nologo -command ^ "$header = '>|'; $footer = '|<'; $body =Get-Content '%outfile%' -Raw;Write-Output ($header + \"`r`n\" + $body + $footer)"powershell -nologo -command ^ "$header = '>|'; $footer = '|<'; $body =Get-Content 'signed.asc' -Raw;Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"endlocalexit /b
#Persistent#SingleInstance ignoreSetTitleMatchMode, 2WinWaitActive, pinentrySendInputpasswordSleep 100SendInput {Enter}ExitApp
動けばいいという考えで作っているので余分なコードも含んでいるかもしれない。
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250613185036 -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEv1FQAKCRBwMdsubs4+SHHkAQDUOLgBcdji2T6MJ7h/vlMdFfGlWAzNdXijjE1gIuEPywEAiMNMZqhrMmtlc7UqRuggNJ/UTa5xTIcKp622+7jJQQg==Lgkl-----ENDPGP SIGNATURE-----
ようやく(ほぼ)すべてが自動化された。
あとはローカルサーバーの起動をスタートアップに設定する(方法をAIに聞いて指示に従う)だけの消化試合。
署名時要求してくるパスワードを自動入力するahkファイルはドキュメントのAutoHotkey配下に置いた。
バッチファイル(make.sign.bat)はデスクトップに置いた。
#Persistent#SingleInstance ignoreSetTitleMatchMode, 2WinWaitActive, pinentrySendInput お前のパスワードSleep 100SendInput {Enter}ExitApp
//run-batch-server.jsconsthttp =require('http');const { exec } =require('child_process');const server =http.createServer((req, res) => { if (req.url === '/ping') { res.writeHead(200); res.end('pong'); } else if (req.url === '/run-batch') { exec('C:\\Users\\you\\Desktop\\makesign.bat', (err) => { res.writeHead(200); res.end(err ? 'Error' : 'OK'); }) ; } else { res.writeHead(404); res.end('Not found'); }});server.listen(12345, () => {console.log('Batch serverrunningathttp://localhost:12345/');});
@echo offsetlocal enabledelayedexpansion::ミリ秒単位のUTC時刻を取得for /f %%a in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') doset timestamp=%%a::署名するファイル名set infile=%TEMP%\pgp_input.txtset outfile=%TEMP%\pgp_output.asc:: 以前の出力があれば削除if exist "%outfile%" del "%outfile%"::タイムスタンプを原文として保存echo %timestamp%> "%infile%":signloop::AutoHotkeyでパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)start "" /b "C:\Users\infini\Documents\AutoHotkey\autopass.ahk"::PGPクリア署名を作成gpg --yes --clearsign --output "%outfile%" "%infile%"::署名が成功していればループを抜けるif exist "%outfile%" (echo [INFO]署名成功goto postprocess) else (echo [WARN]署名失敗、再試行します… timeout /t 1> nulgotosignloop):postprocess::PowerShellで余計な改行なしに |< をつけてクリップボードにコピーpowershell -nologo -command ^ "$header = '>|'; $footer = '|<'; $body =Get-Content '%outfile%' -Raw;Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"echo Done.signed.asc created and clipboard updated (no extra blankline).endlocalexit /b
// ==UserScript==// @namePGP署名自動付加スクリプト(GM_xmlhttpRequest版)// @namespacehttp://tampermonkey.net/// @version 1.0// @description投稿前にPGP署名を付けてから送信(fetch未使用)// @matchhttps://anond.hatelabo.jp/dorawii_31/edit*// @grant GM_xmlhttpRequest// @grant GM_setClipboard// @grant GM_notification// / @connectlocalhost// ==/UserScript==(function () { 'use strict';const submitId = 'submit-button';consttextareaId = 'text-body';const localServer = 'http://localhost:12345/run-batch';constpgpSignatureRegex = /-----BEGINPGPSIGNEDMESSAGE-----[\s\S]+?-----BEGINPGPSIGNATURE-----[\s\S]+?-----ENDPGPSIGNATURE-----/;consthttpRequest = (url) => { return newPromise((resolve,reject) => { GM_xmlhttpRequest({ method: 'GET',url:url, onload: function (response) { resolve(response.responseText); }, onerror: function (error) {reject(error); } }); }); };const interceptClick = () => {constbtn = document.getElementById(submitId); if (!btn ||btn.dataset.pgpIntercepted === 'true') return;btn.dataset.pgpIntercepted = 'true';btn.addEventListener('click', async function (e) {consttextarea = document.getElementById(textareaId); if (!textarea) return;const content =textarea.value; if (pgpSignatureRegex.test(content)) {console.log('[PGPスクリプト]署名が検出されたためそのまま送信します'); return; } e.preventDefault(); e.stopImmediatePropagation();console.log('[PGPスクリプト]署名が見つからないため処理を停止し、署名を取得します');try { awaithttpRequest(localServer); //バッチ実行constsignatureText = await navigator.clipboard.readText(); if (!signatureText.includes('BEGINPGPSIGNEDMESSAGE')) { alert('PGP署名がクリップボードに見つかりませんでした。'); return; }const newText = content.replace(/\s*$/, '') + '\n' +signatureText + '\n';textarea.value = newText;console.log('[PGPスクリプト]署名を貼り付けました。送信を再開します。');btn.click(); //イベント再発火 }catch (err) { alert('PGP署名の取得または貼り付けに失敗しました。\n' + err); } },true); }; window.addEventListener('load', () => {setTimeout(interceptClick, 1000); });})();
プロミスメソッドとか全然まだ理解してなくてそのなかに関数代入したその関数にオブジェクトのプロパティにresponseを?いやまあそのあたりのコードが示すデータの流れが全然理解できないような人間でもここまでできちゃった。
AIすごいなと思うよ。そして思うのは今後重要になってくるのは文法とか自体に詳しいことじゃなくて、そのプログラムの処理内容を指示できるシステムエンジニア的な言語化能力のほうじゃないかなと思った。
-----BEGINPGPSIGNEDMESSAGE-----Hash: SHA51220250609111559680 -----BEGINPGPSIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEbCbwAKCRBwMdsubs4+SLueAPwOv7PBk4voAe5qlcCEvs/PJhmKc5QAb/1R43JMQFuDZgD/UTPEKsL/PhK9jFGv2HDXK1dVjLNwvosgX9uYJh5xxwY==qiOE-----ENDPGPSIGNATURE-----
1行要約;自動車対自転車の事故の約9割は自動車側のほうがより悪質だったと認定されている。そんななか自転車だけが悪いと嘘を流し読者を騙す詐欺広告を流すJA共済。利口な者はそんなJA共済を信用しない。
ツーキニストの疋田智さんが自身のメルマガで広告のウソにかみついている。本当の事を知らなければならない。
☆
━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┏━┫ 週刊自転車ツーキニスト "Weekly Bicycle Tourkinist" ┣━┓
┃ ┗┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳┛ ┃
┗━━┛ ┗━━┛
4月6日付の全国のブロック紙、地方紙に、こんな広告が載った(私が確認したのは『東京新聞』東京版朝刊)。
http://or2.mobi/index.php?mode=image&file=53841.jpg
JA共済のイメージ広告ともいえるものなんじゃが、いやはや、すごいなぁ。
「知ってるかな。自転車事故の2/3は、自転車側の違反なんです。」
だそうな。
これ、どう見たって、自転車事故の3分の2は、自転車に非があるように受け取れますよね。
知ってましたか? 私は知らんかった。たぶん知る人はほぼゼロだと思う。
ヘッドコピーの後に、小さな文字で「※警察庁統計データによる」とあるけれど、これいったいどういうデータなんだろう。
上記↑の資料の2ページ目、たしかに事故自転車の2/3に法例違反があるということが書いてある。統計上それは事実だ。警察庁の言葉では「自転車乗用中の死傷者の3分の2に何らかの法例違反」。
ただ、それは「自転車側が悪い」ということを指しているわけじゃない。
あらゆる自転車事故は「あちらが悪い、こちらが悪い」と軽々に決めつけられるものではなく、双方に法例違反があり、双方に過失がある場合の方が多いわけだ。つまり2/3の事故自転車に法例違反があるのと同時に、クルマ側にも(歩行者側にも)法例違反がある場合が多々あるというわけ。
中でも、今回の警察庁資料にあげられた「自転車側の違反」については、過半数が「安全運転義務違反」つまり、ハンドル操作不適、安全不確認、前方不注意、動静不注視などを指していて、そういう事故の場合、ほとんど、それ以上の過失がクルマ側に認められているのだ。
では、そうした状況の中、自転車が「一番悪い」と認定されたのは、どのくらいの割合なのだろうか。
つまり「自転車が第一当事者」の事故のことなんだけど、警察庁の資料によると、これが15.4%(「交通統計平成23年版」(警察庁交通局)平成24年7月発行)。
6分の1弱だ。
証券業界で1カ月で1400億円以上の被害が発生してるフィッシング詐欺だが、もの凄く原始的な対策が今後行われそうなので先に書いておく。
それは、「メールやSMSにhttpリンクを貼らない」というめちゃくちゃ原始的な対策。
リンクがあるからクリックしてフィッシングサイトに行ってあれこれしてしまうので、なら金融機関からの正式な連絡メールにはリンクを一切書かないようにすれば、リンクの有無でフィッシングか否かを見分けられる、というものだ。
大昔のインターネットの「HTMLメールは送らない」に匹敵するダサさではあるが、メールのドメインよく見なさいとか、DMarkやBIMIを確認といった、IT専門知識がある人じゃないと敷居が高い見分け方よりははるかに分かりやすい。
課題はパスワード再発行のケース。今までならパスワード再発行用のリンク(セッションIDにあたるエンコード文字列付の長いアドレス)をメールやSMSに貼り付けて送るのが主流だったと思うが、この方式がNGとなる。
パスワード再発行に関しては電話や窓口、郵送による対応になる公算が高い。
マイナンバーのパスワード再発行がネット完結出来ないのが以前かなり叩かれていた記憶があるが、結局このアナログなやり方が日本では最適解なのかも知れない。
PS Vitaのデータで使うPCソフト、コンテンツ管理アシスタントは死んだ。
実際にはまだ働かされているが、誰もサポートしてないゾンビのようなものだ。
コンテンツ管理アシスタントは頑張れば使えるが、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のクラウドバックアップの方が全然ラクです。
・Microsoft VisualC++ 2008Service Pack 1 再頒布可能パッケージMFC のセキュリティ更新プログラム
https://www.microsoft.com/ja-jp/download/details.aspx?id=26368
・『希望するダウンロードを選択』では「vcredist_x86.exe」を選択し、ダウンロード
・完了したら「Microsoft VisualC++ 2008 Redistributablehas been successfully installed.」と表示される
http://cma.dl.playstation.net/cma/win/jp/index.html
・最新版ダウンロード(Windows)をクリックするとダウンロードされます
・CMASetup.exeを実行する
・任意の場所に「VITA」のようなフォルダを作ります(例:C:\Users\ユーザー名\Desktop\VITA)
・フォト、ビデオ、ミュージック、アプリケーション/バックアップファイルの4つ全てで、参照ボタンを押して上記作成フォルダを選び直します
・初期値
・フォト C:\Users\ユーザー名\Pictures (やばい)
・ビデオ C:\Users\ユーザー名\Videos (やばい)
・アプリケーション/バックアップファイル C:\Users\ユーザー名\Documents\PS Vita (何故か安心設計)
・設定後
・フォト C:\Users\ユーザー名\Desktop\VITA
・ビデオ C:\Users\ユーザー名\Desktop\VITA
・ミュージック C:\Users\ユーザー名\Desktop\VITA
・アプリケーション/バックアップファイル C:\Users\ユーザー名\Desktop\VITA
インストールが完了したら、タスクトレイにコンテンツ管理アシスタントが表示されているはずです
タスクトレイに表示されている状態(=起動している状態)で、VITAをPCに繋いで接続操作をします。
たぶんこれで繋がります
お疲れ様でした。
もし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
https://www.youtube.com/@Miruru72
大げさな言葉と酒と自称鬱で「人生終わったわ」が口癖のイキる大学生時代の友達を思い出す。
正直みるる君のことをバカにする気持ちはあるが、嫌いではない。
まずはHTMLから。その後はCSS、JavaScript、Linux、GitHub、Ruby、HTTP、Nginx、データベース、Ruby on Rails、ポートフォリオ制作、就職活動、の順番で進める予定です。
よくわからないけど、
まだ若いんだし色々やって頑張ってほしい。
そして動画で嘆いてほしい。
コメント欄も応援しているようで、破滅に向かわせているような人もいるけど、諦めるな!!
私とさして年齢の変わらない、"子連れ"のカップルが、イオンのフードコートで、アイスを食べている。こんな当たり前の風景に、感動してしまった私は、俗に言う"負け組"、という事になるんでしょうか。
24歳で悲観するな!