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
echo - はてな匿名ダイアリー
[go: Go Back, main page]

「echo」を含む日記 RSS

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

2025-10-09

Unicode符号位置からUTF-16サロゲートペア表現計算する

𩸽(ほっけ)のUnicode符号位置はU+29E3D。これをUTF-16で表すとする。

U+10000以上の符号位置文字UTF-16で表す場合サロゲートペアによって表現される。


まず、Unicode符号位置を表す「U+n」のnに対して、0x10000を減算する。

𩸽はU+29E3Dだから、0x10000を減算すると、nは0x19E3Dとなる。

(なお、Unicode符号位置が0x10000未満である場合は、それは16ビットであり(なぜなら0x10000未満であるとは、最大でも0xFFFFだから)、2バイト表現される。これはBMP範疇であり、サロゲートペア表現(BMP外の文字表現)の出番はない。)

(また、0x10000以下の符号位置のうち、Unicode符号位置U+D800~U+DFFFはサロゲートペア用に確保された符号位置領域であり、この領域内の一符号位置対応する文字は無い。)


0x19E3Dを、20桁の2進数変換すると、

$ echo "obase=2; ibase=16; 19E3D" | bc
11001111000111101
↓(不足した桁をゼロで埋める)
00011001111000111101

となる。



この20けた(0001100111 1000111101)のうち、

①上位10桁(0001100111)に対して0xD800(1101100000000000)を足す。これを上位サロゲートと呼ぶ。

1101100000000000
      0001100111
↓
1101100001100111


②下位10桁(1000111101)に対して0xDC00(1101110000000000)を足す。これを下位サロゲートと呼ぶ。

1101110000000000
      1000111101
↓
1101111000111101


③上位サロゲートと下位サロゲートの組み合わせ(1101100001100111 1101111000111101)が、UTF-16サロゲートペア表現のものである

$ echo "obase=16; ibase=2; 11011000011001111101111000111101" | bc
D867DE3D


求めた結果が正しいのか、unicodeコマンド確認する。

$ unicode 𩸽
UTF-16BE: d867de3d
(※"BE"とはbig-endianの略であり、「この16進表現は左から上位バイトとして読みますよ」という意味)


Unicodeにおいて、本来文字は16bit、つまり65535文字で十分表現できるはずだった。

しか中国古代漢字などの文字も収録しようとすると、とても16bit程度では表現できないことが分かった。

そこで、UTF-16という符号方式においては、サロゲートペアという工夫を使うことで、10万以上の文字を扱えるように仕様を整えた。


正確にいうと、2byte(16bit)では65536文字表現できる。

ところで、0xD800~0xDFFF(2048の符号位置)はサロゲートペア用に確保されているため、特定文字符号位置としては利用できない。

その一方、サロゲートペアによって20bit分(1048576文字分)の符号位置を確保できたため、UTF-16では、

$ echo $((65536-2048+1048576))
1112064

111万文字ほど表現できる。

2025-09-08

悲報Redditの平均的モデレータはパヨであり、好き嫌い検閲していることが研究で判明

ミシガン大学研究者らによる最新の研究によって、Reddit をはじめとするソーシャルメディアにおけるコンテンツモデレーション政治的偏向存在する可能性が明らかになりました。

特にモデレーター偏見によってエコーチェンバー(同質的意見に囲まれ現象)が形成され、公的議論がゆがめられるリスクが指摘されています

Reddit における政治的偏向の内容

ミシガン大学のチーム(リーダー:Justin Huang 氏)は、複数サブレディットでの 6 億以上にのぼるコメント分析しました。

その結果、モデレーター政治的嗜好が、ユーザーコメント削除に影響を与えている実態確認されました。

とくに、モデレーター政治的対立する意見コメントは、削除される可能性が統計的有意に高いことが判明しました。

また、政治的傾向を 0(強硬共和党支持)〜100(強硬民主党支持)のスコアで測定したところ、一般ユーザーの平均スコアは 58、モデレーターは 62 であり、全体的に左寄りの偏向が示されています

エコーチェンバー民主主義にもたらす影響

エコーチェンバー形成は、民主主義規範に対し深刻な懸念をもたらします。多様な意見排除され、特定見解ばかりが強調されることで、以下のような問題が指摘されています

解決策の提案

研究チームは、この問題是正するために以下のアプローチを推奨しています

1. 明確なガイドラインの整備: コンテンツ削除の「正当な理由」と「不当な理由」を明確に定めることで、モデレーター恣意的判断抑制し、公平性担保する。

2. 削除の透明性向上: ユーザー自身コメントが削除された際に通知を受けられる仕組みや、削除件数などの統計情報を公開することで、信頼性アカウンタビリティを高める。

3. 監視オーバーサイト機能の導入: モデレーター判断傾向をモニタリングし、偏向的な削除を検知できる仕組みを整備することで、公正な言論空間を促進する。

結論

Reddit や他のユーザー主導型プラットフォームにおいては、モデレーション偏向意図せずに言論空間を歪め、エコーチェンバーを生み出すリスクがあります

しかし、明確なガイドライン、透明性の確保、監視メカニズムの導入によって、公平かつ多様な議論を支える可能性が示されました。

出典

  • New Study on Reddit Explores How Political Bias in Content Moderation Feeds Echo Chambers

2025-09-01

anond:20250901173047

Amazonの新しい音声アシスタントAlexa+」、優先的に招待されるための条件とは

 Amazonの新しい音声アシスタントAlexa+」への招待が始まっていることを、海外メディアが報じている。

 Alexa+は、Amazonの音声アシスタントAlexa」のアップデート版で、生成AI活用しているとされる。Amazonプライム会員には無料で、それ以外には月額19.99ドル提供されることが2月に発表されたが、その後はほとんど音沙汰がなく、また、実際に使っているユーザーの声もほとんど見られないと「ロイター」が先日報じたばかり。今回、「The Verge」の取材に対してAmazon広報担当者が語ったところによると、実際には招待された何十万人ものユーザーAlexa+を利用中であるとのこと。同社はEcho Showデバイスを所有するユーザーを優先的にサポートすると発表していることから、いち早くこのAlexa+に招待されたい場合は、Echo Showデバイスを利用できるようにしておくのが効果大とみてよさそうだ。

2025-08-21

dorawii@執筆依頼募集中

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

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

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

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

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

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

start-server.bat

@echo off
cd /d "C:\Users\user\Documents\jsscript"

:: Nodeサーバーを別ウィンドウで起動
start /min "" node run-batch-server.js

:: Pythonサーバーを別ウィンドウで起動(hatenaserver配下
start cmd /k "" python hatenaserver\server.py

以降はjsscript直下に配置

config.json

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

from flask import Flask, request, jsonify
import json
import os
from hatena_client import HatenaClient
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

config_path = os.path.join(os.path.dirname(__file__), 'config.json')
with open(config_path, encoding='utf-8') as f:
config = json.load(f)

@app.route('/bookmark', methods=['POST'])
def handle_bookmark():
data = request.json
url = data.get("url")
if not url:
return jsonify({"error": "Missing URL"}), 400

client = HatenaClient(config["username"], config["password"])
client.start_browser()

if not client.login():
client.quit()
return jsonify({"error": "Login failed"}), 403

success = client.add_bookmark(url)
client.quit()

return jsonify({"status": "ok" if success else "fail"})

if __name__ == "__main__":
app.run(port=12347)

あとはグリモンユーザスクリプトとして書くやつ

// ==UserScript==
// @name 自動セルクマ送信
// @namespace tampermonkey.net/
// @version 2025-08-07
// @description try to take over the world!
// @author You
// @match anond.hatelabo.jp/*
// @grant none
// ==/UserScript==

(function () {
'use strict';

const url = location.href;
if (!/^https:\/\/anond\.hatelabo\.jp\/\d+$/.test(url)) return;
const editLink = document.querySelector('a.edit');
if (!editLink) {
// 既に編集ページなので処理をスキップ
console.log('編集リンク存在するため、スクリプトを終了します。');
return;
}

fetch('localhost:12347/bookmark', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: url })
}).then(r => console.log("通知成功")).catch(e => console.error("通知失敗", e));
})();
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

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

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKb0qwAKCRBwMdsubs4+
SHfiAQDcXmTHBaZ5Zzr1KI/OxZ0xl69oevOdy1FXJYwYvsmo5AD/ZPtZiO1JgTDj
m+27iymlkdzIXOIGWfC82UTr1mJ7EwU=
=YoV+
-----END PGP SIGNATURE-----

2025-07-17

今までエコーチャンバー馬鹿にしていたけど

でも英語で書けば Echo chamber なのか

 

chamberをチェンバーと読むかチャンバーと読むか

かに普通に読んだらチャンバーかもしれない

2025-07-03

dorawii

@echo off
setlocal

set TEMPFILE=%TEMP%\gpgmessage.asc

(
echo -----BEGIN PGP SIGNED MESSAGE-----
echo Hash: SHA512
echo.
echo https://anond.hatelabo.jp/20250703153633#
echo -----BEGIN PGP SIGNATURE-----
echo.
echo iHUEARYKAB0GT6pgAKCRBw3s9u4+
echo SNC1AQCAXXWIQTEe8eLwpVRSViDKR5wMdsubD0OIay9wQpTMeI3NvH7tjgEA9lgwrA8OSykP
echo pvYgtiTPIgJAbdGrrmPPYKMdsubss4+SAUCa4YrDbL/CSdnwQEJ/bOIOPgE=
echo =AWTp
echo -----END PGP SIGNATURE-----
) > "%TEMPFILE%"

gpg --verify "%TEMPFILE%"

endlocal
gpg: CRCエラー。04838A - 0164E9
gpg: packet(2) too short
gpg: 署名が見つかりません
gpg: 署名検証できませんでした。署名ファイル
(.sigや.asc)がコマンド行の最初でなければ
ならないことを念頭においてください。

はい偽物

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

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

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaGZLQgAKCRBwMdsubs4+
SHquAQDGBsh153Z4upz8exyB3E0SnX5OOG+Wm1bCTdymuiGYbwEAyO7LOCYC42K7
1dlBoZ4ZsNyZj4SO5Erg4WnqVK+drAE=
=eCvB
-----END PGP SIGNATURE-----

2025-06-28

dorawii

@echo off
setlocal

set TEMPFILE=%TEMP%\gpgmessage.asc

(
echo -----BEGIN PGP SIGNED MESSAGE-----
echo Hash: SHA512
echo.
echo https://anond.hatelabo.jp/20250628143524#
echo -----BEGIN PGP SIGNATURE-----
echo.
echo iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaF9+nAAKCRBwMdsubs4+
echo SBUuAQDDWgtyvSQb7Rh40m24rYf2Q9M3PITPsX8cI18hoCodhwEAlcFyrg0iwt4N
echo 4VEKGp/kCscTYhxt2omecTQzaGl/LAc=
echo =IS8V
echo -----END PGP SIGNATURE-----
) > "%TEMPFILE%"

gpg --verify "%TEMPFILE%"

endlocal
gpg: 06/28/25 14:33:16 ���� (�W����)に施された署名
gpg:                EDDSA鍵C47BC78BC29551495883291E7031DB2E6ECE3E48を使用
gpg: "dorawii <dorawii200@gmail.com>"からの*不正な*署名 [究極]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

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

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaF+BaQAKCRBwMdsubs4+
SIvZAQCoSZtUix6tusFn7IPp/6BaPyNAwaAa432iHc2w/hkLKwEA5FABZckLVBds
cIDPcfB79cyOJ7pg+hH89lJMtbKOKw8=
=gqV1
-----END PGP SIGNATURE-----

2025-06-27

【22:47】セブン-イレブン 新宿中央公園東店

蛍光灯の白い光が、山田(ヤマダ)の顔にこびりついた疲労容赦なく照らし出していた。彼の手に握られているのは、「たんぱく質が摂れる!グリルチキン弁当塩麹仕立て)」。たんぱく質。その言葉けが生命維持活動免罪符のように鈍く響く。レジ無人端末がBlink Payの緑のアイコンを点滅させた。一瞬の網膜認証。ピッ、という電子音と共に、彼の口座から598円が永久消滅した。

イートインコーナーの、油でベタつくカウンター弁当を置く。隣では、同じような顔をした男がカップ麺の汁をすする音が、まるで深海魚の呼吸音のように聞こえた。山田は震える指でスマートフォン――黒い鏡(ブラックミラー)――のロックを解除する。

そこはECHO

混沌カオス)の濁流。指でスワイプするたび、視界に飛び込んでくるのは意味を剥ぎ取られた言葉の残骸だ。

>>【悲報】人気VTuber配信中の「おにぎりの食べ方」で国際問題に発展か!?

><激震>Veritas社、次世代AIアトラスMk-Ⅱ」の倫理憲章を”非公開”で改定の動き

>>【速報】政府、”コモンノイズ税”導入を検討SNS利用1日1時間超で課税

>>リー情報:ペイウォールの向こう側で「情報貴族」たちが我々を”養殖豚”と呼称している件

ああ、クソ。まただ。脳みそが沸騰する。

おにぎりの食べ方? 知るか、そんなもん。非公開で改定? だからなんだ。コモンノイズ税? ふざけるな、これ以上何を奪う気だ。養殖豚……だと?

山田の指が、思考よりも速く動き出す。それはもはや思考の出力ではない。神経系の痙攣であり、魂の嘔吐だ。彼は、3番目の記事タイトル引用し、震える親指で虚空に言葉を叩きつける。

「いいか、お前ら!これは支配層による言論弾圧第一歩だ!俺たちの言論の自由を奪う気だ!VTuberおにぎりなんぞに現を抜かしてる場合じゃねえんだよ!目を覚ませ!この”養殖豚”どもがァッ!!!

送信

エンタキーを叩き潰す。やった。言ってやった。真実を、この淀んだノイズの海に叩きつけてやった。数秒もしないうちに、黒い鏡に通知が灯る。❤️(いいね)が3つ。🔄(リポスト)が1つ。脳内に、安っぽい合成麻薬のような快感がじわりと広がる。そうだ、オレは間違ってない。仲間がいる。

山田は、返信欄に湧き上がった罵詈雑言に、さら言葉を重ねようとする。

「は? 養殖豚はお前だろ」「ソースは? あ、金なくて読めないかw」「またお前の妄想かよ、病院行け」

うるさい。うるさい。うるさい! お前らこそ、Veritasの犬め!

彼はグリルチキン弁当の蓋を剥ぎ取った。塩麹匂いと、プラスチック匂いが混じり合う。チキンの表面には、焼き目を模しただけの、ただの茶色インク印刷されている。彼はその偽物の焼き目を睨みつけながら、一口頬張った。パサパサの肉が、砂のように口の中で崩れていく。

その時、視界の端に、向かいの席に座った男の黒い鏡が映った。

男は、山田がたった今「養殖豚!」と罵倒した相手の一人だった。男もまた、同じ顔で、同じように冷めた弁当を口に運びながら、山田投稿に「病院行け、クズが」と打ち込んでいた。

二人の視線は、決して交わらない。

互いを認識することもなく、ただ、それぞれの黒い鏡の中に映る「敵」の幻影と、永遠に殴り合いを続けるのだ。蛍光灯の白い光の下で、二匹の養殖豚が、静かに餌を食んでいた。

……なんだ、この茶番は。

もう飽きた。ホント疲れた

システム非情代弁者ごっこも、狂った語り部ロールプレイも、もう終わりだ。

オレは帰ってスーパーカップの超バニラでも食う。

後は勝手にやってろ。お前も、そいつも、どうせ同じ穴のムジナなんだからよ。

dorawii

↓起きてみたら署名消してて草。

https://anond.hatelabo.jp/20250627020109#

もし署名あったらこんな感じで検証したうえで偽者断罪できたのに。

@echo off
setlocal

set TEMPFILE=%TEMP%\gpgmessage.asc

(
echo -----BEGIN PGP SIGNED MESSAGE-----
echo Hash: SHA512
echo.
echo https://anond.hatelabo.jp/20250619161207
echo -----BEGIN PGP SIGNATURE-----
echo.
echo iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaFO4RgAKCRBwMdsubs4+
echo SNilAP9Cf9so4SWzD5wz0FehUCk7D2pwNXQti3/wtW6WI9KcSwEA24kjl/LZ0HQR
echo hlfpY+2Q4arL/PO+eRJLjcWEEpTUnQg=
echo =59FW
echo -----END PGP SIGNATURE-----
) > "%TEMPFILE%"

gpg --verify "%TEMPFILE%"

endlocal

んでもって、お前は余命宣告通りに死んだだけだよ。哀れだねえって言おうと思ってたのに。

https://anond.hatelabo.jp/20250627020109#

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

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

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaF4TRwAKCRBwMdsubs4+
SOCDAQDBL0SoFeFj4mboawI0Sw+skOIXsLNG//45cycuXkwjLAEA5guPxypVdmsf
r96q5hRrf/HwwPllXRj5+Jfw09boKAg=
=eNjW
-----END PGP SIGNATURE-----

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

dorawii

はい、**ブロックチェーンを使ったタイムスタンプ**は、「元データのものを共有せずに、その存在と時刻を証明する手段」として非常に有効です。特にハッシュ値ブロックチェーンに記録することで、元データを後から提示するだけで、それがある時刻に存在したこと改竄されていないことを**誰でも検証可能にする**、という形になります

あなた希望(元の文章掲示板などで変形されても検証可能、あるいは元文不要)に近づけるには、**ハッシュブロックチェーンに書き込んで、後からそのハッシュに一致する元データを見せる**という形式になります

---

## ✅ 方法概要

### 基本の流れ:

1. 元データを SHA-256 などでハッシュ

2. そのハッシュブロックチェーンに記録(トランザクションメモ欄など)

3. 後から誰でもハッシュトランザクションを照合して、時刻と整合性検証可能

---

## ✅ 推奨ツール:OpenTimestamps(OTS

[OpenTimestamps](https://opentimestamps.org/) は、ビットコインブロックチェーンを用いた無料タイムスタンプサービスです。

**長所**: 無料・非中央集権署名不要CLIがある

**短所**: ブロックに取り込まれるのに数時間かかることがある(ただし証明可能

---

## ✅ Windows 11 での手順(OpenTimestamps CLI

### 1. **Pythonインストール**

OpenTimestampsはPython製です。

Pythonがまだ入っていない場合は、https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) からインストーラーを取得し、`Add to PATH` にチェックを入れてインストールしてください。

### 2. **otsクライアントインストール**

コマンドプロンプトまたはPowerShellで以下を実行:

```bash

pip install opentimestamps-client

```

### 3. **ハッシュ対象ファイルの用意**

たとえば `message.txt` というファイルを用意します(中身は何でもOK)。

### 4. **タイムスタンプ作成**

```bash

ots stamp message.txt

```

これにより、`message.txt.ots` というタイムスタンプファイル作成されます

これは「Bitcoinにこのデータハッシュを記録する要求がされたこと」を表します。

### 5. **数時間後、タイムスタンプ検証する**

```bash

ots verify message.txt

```

署名Bitcoinブロックチェーンに記録されていれば、次のように表示されます

```

Success! Bitcoin attests data existed as of 2025-06-08 12:34:56 UTC

```

---

## ✅ 元のデータを見せたくない場合

`echo "この文が存在していたことを証明したい"` → これを SHA-256 に変換し、ダミーファイルとして保存してタイムスタンプを取る

元文は第三者に見せず、ハッシュとの一致だけで検証可能

```bash

echo -n "あなたの文" | openssl dgst -sha256

```

このハッシュに一致するファイルを後から提示すれば、それが当時存在していたことを証明できます

---

## ✅ まとめ
特徴 内容
------------- --------------------
元文の提示不要 ✅(ハッシュが一致すればOK
改行や掲示板変形の影響なし ✅(ハッシュが変わらなければOK
無料かつ自律的 ✅(Bitcoinブロックチェーン使用
Windows対応 ✅(Python + CLI

---

もしあなた目的が「一定時刻に自分がその文を作成したこと証明であるなら、この方法は非常に相性が良いです。

---

必要であれば、GUIツールウェブインターフェースを使った方法(例:[OpenTimestamps Calendar](https://calendar.opentimestamps.org/))も紹介できます希望があればお知らせください。

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

20250610095304512 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEgAgAAKCRBwMdsubs4+
SII/AP9HFG5+U8BfEXzKxSoyEuxm6X/vJjK7Ee7Kwpi/rwQZJgEAorUjMTh9okHu
3WbPvgsSfDyzhpUuwCVsKessR4FSpQE=
=VNrS
-----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-08

dorawii

ChatGPTにバッチファイルを作ってもらったのでこれから署名捗るぞ。これだけ手軽化できたらレスバに入っても署名つけるのも億劫にならずできそうだ。

なにせ文章を書き折ったらあとはバッチダブルクリックしてCtr+Vするだけだ。

原文には現在日時のミリ秒表示を使うことにした。

名乗る人が増えることを期待して作らせたものを公開しておく。

@echo off
setlocal

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

:: PGPクリア署名作成
echo %timestamp% | gpg --yes --clearsign > signed.asc

:: PowerShellで余計な改行なしに |< をつけてクリップボードコピー
powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content 'signed.asc' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

echo Done. signed.asc created and clipboard updated (no extra blank line).
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250608045542542 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEUXzgAKCRBwMdsubs4+
SCvuAQDjRjPVCO1F9DgmAKoqKYG7qB9r4e7y2Ky+/umT/OhnygEA8h2NL8zIczSp
hcOk/MaDWJJ2Y7WDA3d6gxFakW8TKAw=
=HE4/
-----END PGP SIGNATURE-----

2025-06-04

anond:20250604061454

新作アニメをポンとお出しするのは無理だけど

バンダイナムコ(!)が少し前に発売したロボゲーをやってみたら?

ま、この動画レビューを見た上でやろうと思えるなら、の話だけど

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

SYNDUALITY Echo of Adaってやつね

2025-03-16

フロントエンド不要論

フロントエンド不要論」は、最近の開発現場サーバーレスクラウド技術進化に関わっている人たちの間でリアルに実感されている問題です。

✅ 最新の開発現場で「フロントエンド不要論」が出てくる理由

🚩 1. フロントエンドが複雑すぎる(技術負債が増大)

• React, Vue, Angular などのフレームワークがどんどん複雑化

SPAシングルページアプリ)のメンテナンスが大変

フロントエンドバックエンドの分離が、**「本当に効率的か?」**という疑問が生じている

• 「最終的にHTMLを描画するだけなら、サーバーでやればよくない?」

🚩 2. フロントエンドセキュリティリスクが高すぎる

APIキーアクセストークン露出問題が深刻

フロントエンドから直接APIを叩く構成では、「APIを守る」ことが難しい

XSS, CSRF, CORSといった脆弱性対処し続けるコスト無駄

• 「フロントエンド認証情報を持たせないほうが安全

🚩 3. サーバーレスクラウド技術進化し、API負担を減らす方向に

AWS Lambda, API Gateway, Cognitoなどのサーバーレス技術進化

フロントエンドAPIを叩くより、サーバー側で直接処理する方が効率的

バックエンドフロント役割代替できる環境が整った

✅ 実際にフロントエンドを捨てた企業の事例

1. GitHub(Hotwire, Turbo採用

• 以前はReactを使用 → ReactをやめてHTMLベースに戻した

サーバーサイドでレンダリングし、最小限のJSだけ利用

• 「HTMLサーバーで生成すれば十分」と結論付けた

2. BasecampTurbo + Rails

• React, Vue, Angularを全廃

Turboを使って、サーバーから直接HTML更新

JavaScriptなしで動的なページを実現

3. Laravel(Livewire)

JSなしで動的UIを作るフレームワーク

フロントエンド負担ゼロにする方向に進化

• 「JS不要なら、開発効率が上がる」

4. Shopify(GraphQLでデータを直接取得)

フロントエンドを完全分離する構成から、「バックエンドHTMLを返せばいい」 というシンプル構成へ移行

API負担を減らすことで、開発効率セキュリティを向上

サーバーレス時代の最適解:「フロントエンド不要アーキテクチャ

フロントエンドを捨てて、サーバーがすべての処理を担う」方向に移行するのが最適解になりつつある。

📌 最適なアーキテクチャ

ブラウザサーバーPHP, Node.js, Go) → API Gateway(Cognito認証

フロントエンドHTML/CSSのみ

サーバーAPI GatewayとCognitoを仲介

APIキーアクセストークンサーバー管理

サーバーデータを取得し、HTMLとして返す

📌 具体的な実装例(PHP + Cognito + API Gateway

require 'vendor/autoload.php';

use Aws\CognitoIdentityProvider\CognitoIdentityProviderClient;

use Aws\Exception\AwsException;

$client = new CognitoIdentityProviderClient([

'region' => 'us-east-1',

'version' => 'latest',

'credentials' => [

'key' => getenv('AWS_ACCESS_KEY_ID'),

'secret' => getenv('AWS_SECRET_ACCESS_KEY'),

],

]);

$email = $_POST['email'];

$password = $_POST['password'];

try {

$result = $client->initiateAuth([

'AuthFlow' => 'USER_PASSWORD_AUTH',

'ClientId' => 'XXXXXXXXXX',

'AuthParameters' => [

'USERNAME' => $email,

'PASSWORD' => $password,

],

]);

setcookie("accessToken", $result['AuthenticationResult']['AccessToken'], [

'httponly' => true,

'secure' => true,

'samesite' => 'Strict'

]);

header("Location: dashboard.php");

} catch (AwsException $e) {

echo "ログイン失敗";

}

?>

APIキークライアントに公開しない

アクセストークンサーバー管理

フロントエンドは何も持たない(XSS耐性あり)

✅ まとめ:「フロントエンド不要」が最新の開発トレンド

🚀 **「フロントエンドはもう不要」**という流れは、最新のクラウド/サーバーレス開発に携わる人たちが実感していること。

APIキー管理が楽になる

セキュリティが大幅に向上する

フロントエンド開発の負担がなくなる

パフォーマンス爆速になる

👉 結論:「フロントエンド不要クラウド×サーバーレスバックエンドが主役になる!

この方向性に完全に共感しますし、今後の開発では**「フロントエンドなしで済むか?」**を常に考えるべきですね!

2025-02-12

ナカイドって「言ってることがそれっぽいけど」正しくないよな

SYNDUALITY Echo of Adaを駄目だししてたけど普通に面白いじゃん。

https://www.nicovideo.jp/watch/sm44638238

2025-01-17

アレク

正月初売りで安くなってたEcho dotを買った。

スマートリモコン必要だなんて知らなくて後日買って

音声入力で部屋の電気エアコンが稼働するようになった。

 

 

 

で?

その2つならオンオフがそこまで手間ではないし買った意味とは・・・

なんか凄い無駄遣いをした気がするんだが……。

この思いを払拭するために何か便利な使い方があれば教えてくれ……。

2025-01-16

スイッチボットアレクサが連携できると言ってもさ

アレクからスイッチボットを動かせるだけで

スイッチボットからアレクサを動かせないんだよな

俺はスイッチボット物理ボタンを押したらechoスピーカーからspotify流したいだけなのに

そんなことすらできないだなんて

岸田、もっとしっかりしろ

[] The Hatena Anonymous Diary: A Critical Examination of Its Flaws

The Hatena Anonymous Diary, while undeniably a distinctive fixture within the tapestry of Japanese internet culture, has garnered substantial criticism for its content and the implications of its operational framework. This discourse aims to elucidate the reasons underpinning its characterization as "problematic."

The Paradox of Anonymity

At the crux of the Hatena Anonymous Diary's appeal lies its hallmark feature: anonymity. This veil of secrecy ostensibly facilitates unrestrained discourse, allowing individuals to articulate their thoughts without fear of retribution. However, this very anonymity engenders a paradoxical effect; it cultivates an environment ripe for irresponsible commentary and vitriolic defamation. The absence of accountability diminishes the sense of responsibility that typically accompanies public expression, resulting in a proliferation of emotionally charged diatribes and baseless assertions. Such dynamics render the establishment of constructive dialogue increasingly elusive, thereby stifling meaningful engagement.

Superficiality of Content

Moreover, the content disseminated through the Hatena Anonymous Diary frequently exhibits a disconcerting superficiality. Many entries lack substantive depth, failing to provide rigorous analysis or innovative perspectives. Instead, they often succumb to the allure of trending topics or sensationalism, prioritizing ephemeral relevance over intellectual rigor. This trend not only undermines the potential for serious discourse but also contributes to a culture where shallow engagement with complex issues prevails. In an era marked by information saturation, this deficiency in content quality is particularly egregious, as it detracts from the cultivation of critical thinking and informed debate.

Cultural Homogeneity and Social Responsibility

Additionally, the cultural ramifications of this platform warrant scrutiny. By amplifying certain dominant narratives or viewpoints, there exists a palpable risk of eroding diversity within public discourse. The emergence of "groupthink" within specific communities can lead to the marginalization of dissenting voices, creating an echo chamber that stifles pluralism. In such an insular environment, diverse perspectives are systematically excluded, resulting in a homogenized narrative that fails to reflect the complexities of societal discourse. This phenomenon not only undermines individual expression but also poses significant risks to the overall health of democratic dialogue.

Conclusion: A Call for Reflection

In conclusion, while the Hatena Anonymous Diary ostensibly champions free expression through its anonymous framework, it simultaneously fosters a milieu characterized by irresponsibility and superficiality. The cultural influence wielded by this platform raises critical concerns regarding its impact on diversity and social responsibility. Thus, characterizing it as "problematic" is not merely an exaggeration; it is an imperative recognition of its shortcomings. Moving forward, it is essential to scrutinize how this platform might evolve and address these inherent flaws in order to foster a more enriching and responsible discourse.

2024-12-29

Echoを部屋全体に響かせたい

こないだのブラックフライデーAmazonEcho popを買い、机の右横の棚の上に置いてBGMを流している

が、音源がこの一つのスピーカーしかしかないので、音楽を流していると「音が右から聞こえてくる」状態になってどうもしっくりこない

なるべく両耳に均等に音を聞かせたいんだが、なにかい方法はないだろうか

机の正面向こうにでも置けばいいんだろうが、家具の配置的に無理

現状ではなるべく高く、なるべく自分から離れたところに置いたほうがいいかと思い、机の右隣にある棚の一番上に置いているが、まだまだ左右のバランスが悪い

完全に左右均等にとはいかないまでも、少しでもマシになる工夫とかあったら教えて欲しい

2024-12-19

過去に受けた虐待の話

きっかけがあり、虐待を受けた過去のことについてまとめます

こんにちは私自過去虐待を受けており、ただ受けただけじゃ元が取れない(?)ため、創作に活かしていただきたくこんなことありましたよ!というのをお話できたらなと思い筆をとっています不謹慎って思われないかなとか、人の経験だしネタしづらいなとかシコりづらいなと思われるかもしれませんが、マジでガンガンネタにして元を取りたいので好きにしていただけますハッピーです。自分経験ベースで、児童相談所とのやり取りがあった時に聞いたことも交えていきますね。

受けたものとしては経済的虐待ネグレクト)、教育文化的虐待精神・肉体的虐待性的虐待などが挙げられます

順番に思い出しながら書いていきます

基本的スペックとしては母は軽度のASD知的のしょうがいがあり、父はわかりませんがヤニ力スパチ力ス酒力ス浮気フルコンボでした。お手本のような力スです。力スの見本市。3歳頃に母方の祖父母宅に転がり込んで居候をはじめましたが、父はいつのまにか逃げました。

きょうだい構成は兄、私、弟です。

ネグレクトについてはよくある形ですが、まず父親が今生きてるのか死んでるのかわかりません。父親も幼少期、兄と弟と共に公園に連れて来られ、おもちゃを渡されて「ここで待っていてね」と両親に言われたがそのまま両親は戻って来なかったため児童養護施設で育ったと聞きました。血ですね~

父は気付けばいなくなっていました。

食事も食べられる時と食べられない時とあり、食卓につくとありとあらゆる動作や食べ方、箸の持ち方、口の動かし方、全てを罵倒され罵られます。ろくに食べられたもんじゃないし、味もわかりません。母は料理が上手じゃないくせにオーガニック(笑)だったため、添加物着色料など使う食材は徹底的に避けており、貧乏なのに国産無添加無農薬にこだわり、結果的に食べられるご飯の量は少なかったです。

食卓でまともに食事が出来なくてもお腹は空きます。育ち盛りの子供なら当然。そのため、夜中にこっそり起き出してキッチンで食べられるものを探しました。三角コーナーの生ゴミからまだ食べられる野菜の皮や芯を探して食べていたら、祖母に気付かれていたようで、バレた日からゴキブリ」と呼ばれるようになりました。草 誰がやねん

教育文化的虐待については、親の望む進学先ではないためお金を出してもらえなかった、などがありました。福祉に繋がることも出来ず、進学などが制限されるというのもよくあるケースのようです。弟も進学先を制限されて学費を支払ってもらえず、私が支払っています(よくあることらしく、親戚やきょうだいが払うケースは多いそうです)

精神虐待というと幅は広いですが、たとえば父と母の結婚は母方の祖母が元々反対していたらしく、家にいる間はずっと祖母が父の悪口を言っていました。母に対して「育てられないならなんで産んだんや」と金切り声で叫んだりなどしており、それを私たちきょうだいは黙って聞かされていました。生まれてくることを望まれていなかったのだという感覚形成されたのはこれがデカいのかな?と思います自己肯定感ダダ下がりポイント。母も母で言い返すことをしなかったのが余計に悪かったのかも。もしかしたら母にちゃんとそれを否定して欲しかったのかもしれないですね。今となってはどうにもならないことですが。

また、兄も父によく似た男でした。気に入らないことがあれば殴る蹴る、罵倒する、無能と罵り物を投げる、壁を殴る。など。実家の壁には多分未だに穴があります。兄は父親のことを憎しみ、嫌っていましたが、大きくなればなるほど兄の態度は父に似ていきました。それを指摘すれば烈火のごとく怒り狂い、怒鳴り、それがまた、酔って暴れる父親に酷く似ていました。

これ創作ならシコポイントだと思うのですが、実家いたころ私は背もたれのない椅子を使っていました。そのため、兄が後ろを通る度に後ろから蹴られ、頭を殴られ、怒鳴られるため、未だに年上の男性が後ろに立つとちょっと怖いです!多分厳密には自分より体格のいい人が、だと思います。どれだけ信頼していても、あっ!蹴られる!と思ってビクッとします。身体が強ばるような感覚で、全身に力が入るような一瞬の緊張があり、もう家を出て10年近く経ちますがいまだに抜けない癖となっています

あと、メンタルがぶち壊れて鬱をやった時、寝込む私に兄が硬式テニステニスボールや、ボール入れを頭に投げてきたことがあったため、未だに🎾これとかこれの容器を見るとオッ……となります。私の中で武器凶器に分類されるのかも。痛かったから。物はよく投げられましたね。お皿とかも投げてた気がします。

兄が暴れるのに怯えた祖母が金切り声をあげて泣き、母は抵抗せず殴られて、唯一力で抵抗できる祖父必死に止めて、という生活が続きました。兄も軽い鬱だったようです。

母もただ大人いかと言われるとそういうわけではなく、多分ですが発達障害ASD兆候があったように思います。同じ日本語を話しているはずなのに、全く話が通じず、言っていることの意味が全くわからないというようなことがありました(例を挙げるならば、私が家にいるのが限界になり児童相談所相談して一時保護を受けるか他のなんらかの施設に行くか……という話になった時、今まで服も全部お下がりなぐらい私にお金かけなかったくせに「古い一軒家を買い取ってそこに住めばいい」「父の自営業事務所代わりにも出来るし」と言い出したりとか。父は配送業全然勤め人だし、その頃にはもうろくに連絡も取れてなかったし、何より私は父から強姦されてたので一緒に住むなんてとんでもねえよという感じでした。それが嫌だと言ったら「実家から私たち家族引っ越しあなたが1人で住めばいい」とか言ったり。実家祖父母の家であり、そんな権限家庭内地位最下位の母にあるわけないし、もちろん同意を得られるはずもないのに)。

母の言い出すことはいだって意味がわからなくて、きっとこれまで母が受けてきた抑圧や苦しみ、刷り込まれてきた固定観念で雁字搦めになった価値観を私にも押し付けているようでした。いわゆるヒスお母さんに近いです。二段ベッドの上の段で寝ていた私が、メンタルぶっ壊して学校に行けなくなった時、大声で騒ぎながら私を二段ベッドの上から引きずり落とそうとしたり。足つかまれて引っ張られてたので、誰かに足首を掴まれたり、足を触られるのも今ちょっと怖いです。後ろに男性が立つ時ほどではないですが。

そして我が家貧乏で、母が乗っていた自転車も近所の人のをお下がりでいただいていました。古い自転車ブレーキがきしんで、坂道にある私の家に母が帰ってくる時はいつもキィキィと甲高い音が鳴っていました。あの自転車の音がなると、ああ母が帰ってくる、またきちがいが私の暮らしに入り込んでくる、祖母が母を怒鳴り罵倒ヒスり金切り声を上げる、と絶望したものです。

未だに自転車ブレーキのキィキィいう音を聞くと、こんなところに母がいるわけないのに、その時の嫌な気持ちを思い出します。母が帰ってくる。きちがいが帰ってくる。私をメチャクチャにする。

ここまではよくある(あっちゃいけないですが)家庭内での機能不全についてお話しました。かなり主観的視点で書いたので、お気分が悪くなったようでしたら少し休憩されたり、読むのを中断してくださいね

一番サビの性的虐待の話をします。

先述しましたが、辛くなったら読むのをやめてくださいね

メチャクチャ興奮していただく分には、不謹慎だ!とか思わないので、好きにネタにしてください!(私の方からネタとして差し出していますしね)

いちばんはじめに感じた違和感は、幼い頃からさせられていた習慣でした。物心いたころ(4歳とかぐらい?)から父親に「父ちゃん愛してるって言え」と言われ、キス強要されていた記憶があります。頬にとかではなく、普通に口で。舌を入れられたこともあって、それがとても嫌でしたが、キスをした後口を拭えばメチャクチャに怒られました。でも物心ついたときからずっとそうだったので、それが変なことだということは中学生ぐらいまで気付きませんでした。類似したことはたくさんあり、身体自分だけのもの、他の人は家族であろうとプライベートゾーンに触ってはいけない、ということを知らずに育っていました。

肩とかお腹とか、たぶん他の人からしたらおかしいんじゃないか?ってぐらいたくさん触られていたように感じます

決定的にこれはおかしいぞと感じたのは、小学校3年生ごろのことでした。私はそれぐらいの年齢にしては発育がよく、胸が大きくなっていたころだったのですが、お下がりばかりの服しか着られない貧乏家庭で当然ブラジャーなど買ってもらえるはずもなく、薄い服で胸を気にしながら過ごしていました。

ある日久々に父親と会った時(なんで会ったかは覚えてないな……)、不意に胸を触られて、「胸大きくなってきたな。もう女になったんか」と言われました。

キッショ。

今書きながらキモくてウケてますキモ

小3やぞ。女になったんかて。キモ。草。

そっからはもう、なんというか、転がるように良くない方向へ進んでいきました。車の中で、連れ出されたよく知らない建物の中で、父の知り合いらしい誰かの家の中で、身体を触られる地獄が始まりました。脱がしやすい服を着せられて、父のヤニ臭い白い車に詰め込まれ、どこかへ連れて行かれて。知らない場所まで連れていかれるから、帰り道がわからいから、逃げ出せなくて。父親の吸っていたECHO臭いが胸に張り付いて。私のからだははじめからのものではなくて、いつの間にかそれをされている間はぼんやりしているようになりました。現実逃避というか、精神身体から乖離しているような。

ずっとなにか、火を見ている気持ちでいたような気がします。自分でもよくわからないのですが、ゆらゆら揺れている炎の記憶がやたらとあります。もちろん暖炉とか火がある環境レイプされてたわけじゃないのに。なにか他のこと考えてないとやってらんなかったんでしょうね。

非常にはっきり覚えているのは、強姦されたときにいた和室の中で、破瓜の(あるいは膣の引き裂けた怪我の)血で汚れた畳のしみを、「お前が舐めて綺麗にしろ」と下卑た笑いを浮かべた男から言われたことです。

あれが父親だったのか、父が呼んだ他の誰かなのか、もうわかりません。「いぐさに染み込んだ血は舐めたって綺麗になりません」と言った私の頬を叩いて畳に押し付けたことだけ覚えています。朧気な記憶の中で、タンクトップの男が私を押さえ込んで、組み敷いて、汚い床の上で。身体はどこもかしこも裂けるほど痛くて、軋む音がして、換気扇の音がうるさくて、ヤニ臭くて、吐き気がして、息をしてるのかしてないのかわからなくて。ぐるぐるぐにゃぐにゃ天井が回っていて、汚い天井が揺れて、その記憶けがはっきり残っています

あとは気付いたらビニール袋を頭に被せられて、窒息しかけた記憶もあります。これも誰がやったのかわかりません。ビニール袋を被せられて、突き飛ばされて、倒れ込んだ私の腹に誰かが飛び乗るような感覚がありました。踏みつけられたのかな。わからないけど。

お腹の中でなにかがぐじゅりとおかしくなるような感覚がして、ビニール袋の中で声にならない悲鳴をあげて、意識が途切れて。その時内臓が破裂したみたいで、免疫が人より著しく低かったりだとか、そういう後遺症?みたいなものがあります

母にその後病院に連れて行かれた気がしますが、医者に「転んでぶつけた」と言い訳している記憶があります。無理あるだろと思ってました。

首を絞められた記憶もあります。これが結構多い。

酔っ払った父が私を突き飛ばして、顔から倒れ込んだ私の上に馬乗りになって首を絞める景色。畳しか見えなくて、もがいても逃げ出せるわけなくて、足掻いているうちに首に手を回されて。骨が軋んで、気管が狭まって、だんだん瞳孔が開いていくのか涙でか視界がぼやけていきます。焦点があわない視界で必死に瞬きをして。こひゅこひゅと喉からすきま風のように息が漏れて、喉が圧迫されて、必死でもがいていたら父がゲラゲラ笑って私の上から降りる。気まぐれに降りただけで、父の気が向かなかったら今私はここにいなかっただろうなと思います

首を絞められることは何度かありましたので、それでも今も生きているということは、殺してしまったらいけないという意識はあったのでしょうか。

或いは力や体格で絶対に敵わない弱いいきものが、自分の力加減ひとつ必死にもがいてあがいて生き延びようとする様を見て楽しんでいたのかもしれません。私を組み敷く父が下卑た笑いを上げていたのを見るに、その可能性が高いかもしれないですね。

首を絞められるにしても、前から絞められるのと、後ろから絞められるのでは苦しさが違います

正面から絞められる方が苦しいです。後ろから絞められる(人差し指~小指までが喉に触れる)状態だと、力の当たる面積が分散するからか、締め付けられている感覚はより大きいですが苦しさはマシでした。正面から首を絞められると、親指がぐっと気管を押さえつけてきますピンポイントで親指の一点に力が集中するため、苦しみが強いです。息ができない感覚が続いて、視界がぼんやりしてきたところで、ぱっと手が離されると、一気に外気が喉になだれ込みます。喉にはずっと何かが詰まっているような感覚がして、その後は1日ずっと咳が出ます

首を絞められた状態だと身体中に力が入りませんので、そのまま激しく体を揺さぶられたり、犯されたりすることもありました。

首を絞められた記憶がいまだに無意識でこわいのか、首周りを圧迫されることがめちゃくちゃ怖いです。

ネックレスも物によっては無理なレベルチョーカーとか全然つけられないし、ハイネックとかタートルネックとかもぴたっとしていると不意に圧迫感とあの時の恐怖を感じて過呼吸になりかけたりします。当然、人に首を触られるのも怖いです。首周りってやっぱ急所なのでだいたいの人間はそうだとは思うんですが、マフラーとかも辛くて巻けません。不意にパニック発作が出たりする可能性があり、リスキーなので。

性的虐待とは書きましたが、今思うと普通に暴行も多いですね。というか、虐待という場における性的ものは概ねほぼ暴力だと思います。もちろん快感とかはあるわけなく、痛みや屈辱の面が強すぎる。内臓を掻き回されて痛めつけられる、という感覚が強いです。

下品な話ですが匿名なため書いてしまうと、それが繰り返されたことで何年も経ったけどまんこがゆるい気がします。レズのため他の女の身体に触れた時、自分身体異端さを感じる時がありますガバマンすぎる。でもそりゃそうだよな。裂けて拡がったままになっちゃったんかな。わからないけど。

反射的に怯えてしまう、で言えば、足首掴まれ記憶から足首がきゅっとタイトになってる靴下あんまり得意じゃないかも!こわい!

これはよく聞く話ではありますが、私も性的虐待があって以来、その記憶を塗り替えなきゃ、という意識性的行為依存的になったように思います。付き合っていない女とセフレになったり、パパ活したりとか。「自分はもう汚いんだから」という記憶のせいで、自分大事にできない。自分を守れない。

長々と書いてしまいましたが、今のところこんな感じでしょうか。文章をお読みになってこのエピソードもっと深く知りたいなとか、ここ掘り下げてほしいなとか、この面ではどうだった?とかあれば、また書こうと思います。よければお声がけください。

繰り返しますがホンマにご遠慮なくネタにしてくださいね‼️今は𝑺𝒖𝒑𝒆𝒓 𝑯𝒂𝒑𝒑𝒚ウルトラ元気に過ごしております

2024-12-09

SONYサウンドバーゴミ過ぎワロタ

SONYさんの一番良いサウンドバー買ったんですよ

A9000とかいうやつ

Youtubeとか価格.comだと

マルチスピーカー時代は終わった!」「ウーファーいらず!」「圧倒的な低音!」

みたいな感じの大絶賛だったので、まぁ話半分ぐらいだとは思いつつも「とにかく低音が凄い!」って言ってる人が多かったんよ

そんでウキウキでセッティングして音鳴らしてみたんだけど、低音カッスカスでびっくりした

AmazonEcho dotの方が良い音してるから流石に何か設定間違えてるだろうと思ってテレビ出力とかいろいろ見直したけど

そもそもそんなに設定できるとこが無い(eARCで出力、スマホで音場設定)からどうしようもない

スピーカーからテストサウンド流せるからやってみたら全部ちゃんと鳴ってるけど

テストサウンドの時点で大して低音響いてないか音源のせいじゃなさそう

流石にこれは故障か?って思っていろいろ口コミ調べたら同じこと言ってる人は何人か居て

その人への家電量販店アドバイス

「音量は60以上にしてください。最低でも50」

みたいに書いてて終わってた

25で普通の音量ぐらい、30で爆音レベルなんだけど50とか60なんて難聴やろアホかと

ていうか低音量で低音域が鳴ってない理由にはならんのだが?なんなんこれ

3Dサウンド感はそこそこあるけどスピーカー置いた場合とは全然違うし

まぁそっちは期待してなかったからいいとしても、やっぱ低音が全然鳴ってないかマジでゴミ

シャリシャリのカッスカスで聞いてて不快

音響関係ポジショントークってだいぶ減ったと思ってたけど、まだこんな状態なんだったな

年末もったいないことしたわ

2024-11-30

レイレースと外部ツール

FF14レイレースはFFlogsで進捗管理をしている(はず)。

それはつまり参加チームのうち少なくとも1名はツールを使っているということ。

今回のechoのように運営がチームと同じ空間にいて進捗が全部見れるなら運営目視入力してるかもしれないし、

もしくはルクレのようにサポートメンバーがいるなら運営に逐一進捗を報告しているかもしれないが、あまり現実的ではなさそうか。

ここで吉田PDインタビュー確認すると、

Twitchレイレース配信を視聴し、フォローしています

https://kultur.jp/ffxiv-yoship-on-w1str/

発言している。

これは運営がFFlogsを使ったレースを黙認、または容認しているように捉えられないか。危うい発言のように感じる。

攻略を頑張っている姿は本当に応援したくなる。それは絶のレースであっても、先日配信された有名ストリーマー達の企画でも同じ。

からこそケチがつかないようなルールが敷かれればいいなと思っている。

2024-07-11

Echo show15 先行セール対象から期待してたのに10%オフとか舐めてんのか

10対象外だし、プライムデーも落ちたもんだな

2024-07-08

エコーチェンバー派?エコーチャンバー派?

都知事選挙のあれこれでまたよく見るようになったけど

エコーチ"ェ"ンバーなの?エコーチ"ャ"ンバーなの?

echo chamberだからチ"ャ"ンバーって読みたくなるのはわかるけどwikipediaだとチ"ェ"ンバー表記

個人的には同じ興味話題を「鎖で繋がれでいく」ってイメージがあるのでチェーン→チェンバーって連想するのがしっくりくるのでエコーチ"ェ"ンバー派です

(スペルうから言葉の由来も違うだろうけど英語よくわかんない)

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