「UTF-8」を含む日記 RSS

はてなキーワード: UTF-8とは

2026-01-05

友達に「お前、モーパッサンみたいだな」と言われた

モーパッサン?なにそれと思ってネット画像検索する。

google:image:モーパッサン

うーん、なんか昔の人らしい。俺には似てない。髭も生えてないし。

普通にググってみる。

google:モーパッサン

なるほど、フランス小説家

代表作は「女の一生」「脂肪の塊」。

脂肪の塊」!これか!!

あの野郎!!!

教養のある悪口を言うな!!

2026-01-03

Appleの俺が正義だは今に始まったことじゃねーからなあ

UTF周りはマジ無茶苦茶やってる

2025-12-22

anond:20251222211834

それならゼンゼロとスタレと原神と崩壊3rdを同時にやろう

俺が狂気的に紹介するから

世のライブサービスゲームの中でこのホヨバ3作+1ほど短いスパンで開発費をもりもり掛けた贅沢なアップデートを投下し続けているタイトルはないと思う

オタク趣味抵抗さえなければ退屈しないしSNSを通して楽しんでる人や二次創作してる人は無数に見つかるから飽きることもない

掛け持ちだと忙しすぎるけどオタク心をよく理解してる壮大な作品作りでまじめに読んでいけば心が豊かになって情緒ジェットコースターのように日々揺り動かされることは俺の長年の経験から保証する

原神の年間の開発費は220億を超えてるとも言われ累計だと1000億は超えてるだろうし、続いて出たスタレゼンゼロもそれに引けを取らないくらリッチアニメ調タイトルとしてグローバルアニメゲームセールスでtop3にほぼ毎月いる

上海にはオフィスが7棟くらいあってデカい新社屋付近区画まるごと秋葉原化しようという計画もあるくらいぶっ飛んだオタク企業

ただでさえ高いガチャゲーの利益ほとんど既存新規作の開発体制増強や自社拡大に使ってる根っからクリエイター気質として非上場を貫いて、ほとんどを自己資金で賄ってるという奇跡っぷり

スタレゼンゼロは各1000人、原神だと2000人超えの社員を使ってる↓ようで、国産ガチャゲーとはジャンルが違うことが分かる

参考リンク:redditリンク禁止されてるのでgoogle検索からgoogle:mihoyo_employees_increasedecrease_as_of_2024

中国にはテンセントネットイースみたいな大資本から支えられてビジネス色強めで多産多死してる運営ゲームが多い中で、同人オタク大学生たちが起業した会社アニメゲー業界で上位独占し、自社IP大事にしててここは絶対サービス終了しないって信頼が得られてるところも異質

ここまでマーケット破壊的に支配してるやつらについていくのは最高にエキサイティングだと俺は感じてる

中の人達の顔もちゃんと見えてて先日出てたこ動画あたりが開発の様子を窺い知るのにちょうどいいんじゃないかな→ https://www.youtube.com/watch?v=anM3EvPHuZQ

どれもガチャゲーだけれどもアニメ調としてはAAAゲー品質マルチプラットフォーム作品で、個人的にはウルトラワイドモニターつないだPCでやるのが一番おすすめ

キャラを無凸で確保するだけに徹するなら、1タイトルあたり月平均3500円くらいの課金で全キャラ確保していけるので掛け持ちをしても低コストタイパに抑えることは可能

特定の最強編成をひたすら強化していくのが正解だったソシャゲ時代ゲームと違い、これらのゲームは新キャラを広く集めていったほうがゲーム性をよりストレスなく満喫できるし、ゲーマー的にもそれくらいが丁度歯ごたえのある難度になる

ただモチーフ武器や2凸くらいまで狙うとコスパよく数字が跳ね上がっていき、キャラ確保に無料石をすべて費やすとすると武器や凸を取るごとに2万ずつ払ってる計算になるので、欲のコントロールガチャゲーらしく求められる

とはいえ石油王が有利かというと1キャラ完凸するのは20万そこらで済み、キャラ追加も6週ごとに1~2体なので古のソシャゲのように3億円課金するとかは起こり得ないし、そもそも競争要素のないソロプレイゲームまりソーシャルゲームなのですべては自己満になる

ソシャゲほど戦闘コンテンツ比重が重くなく、難度も無凸で揃えてたら困らない程度と易しく、物語や探索、世界観への没入が主体で、あまり時間のかからないミニゲームの中の一つとして戦闘コンテンツがあるような感じ

ガチャシステム自体は結果が収束やすい超低確率からの変動確率制になっていて、天井までのカウント等も次以降の限定ガチャバナーまで引き継がれるので無課金でも着実に限定キャラを増やしていくことはでき、排出タイミングもほぼ読めるので、ガチャ運ゲーではなく計画性をもって攻略可能ものになっているのも付き合いやすポイント

実際にはそこまで悪辣ギャンブルではない確率設計なんだけど、ランダム性があるかのようなドキドキ感を演出することで健全さとドーパミン需要を両立させていて、特に原神にある掴みし明光ってシステム↓は運の悪い人だけをこっそり救済してくれる巧妙な設計で興味深い

参考リンク:redditリンク禁止されてるのでgoogle検索からgoogle:reminder_on_updated_capturing_radiance_theory

なんかさっきはてブゲームカテゴリで「わたしたち運ゲー揶揄しながら、ほんとうは運ゲーが大好きで、あたたかな偶然が好きなのだ」って言ってる記事を見かけたが

それをガチャ設計上すでに高い水準で達成してヒットしてる最たるものが原神という例だと思うんだよね

プレイヤーの多くはその暖かさに気づいてなくて、短期的な感覚ですり抜けに毒づく人も多いんだけど、長期的にプレイしていると守られていることに気づく、結果として毎回絶対すり抜けるような悪運の人も確率どおり勝率50%の人と変わらない限定キャラ所持数になっている

気づいてないところがいいんだよね、本当に統計値調べまくった数字に強い人しかこの非公開ガチャ仕様の巧みさに気づかなくて、そのお陰でガチャを楽しめてる部分があるから優良誤認ならぬ劣悪誤認みたいなもんだね

とにかく、ヒリつくマーケットに揉まれてきた人にとってホヨバースゲーム絶妙確率設計リアルタイムIPが成長していく体験は最高の揺りかごだと思うんだよ

まあ趣味さえ合えばの話だけどね

2025-12-10

タタール人砂漠って間に合うとか間に合わないとかの話なの?てことは人生無駄に仕方って感じの話っぽいな。砂の女みたいな。

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

2025-11-22

anond:20251122095000

これらのコード元ネタwebにあるはずなので出せ。

質問とした所、

いい質問。ただ、**今回私が提示した C# コード(MemoryMappedFile + Parallel.For で CR を数える)**には、明確に一つの「このネット上の記事リポジトリをそのままコピーした」元ネタはありません。

いくつか似たアイデアを使ってる部分と参考になる記事ドキュメントはあるので、それらを紹介します:

---

## 🔍 関連しそうな参考記事サイト

*Microsoft ドキュメント — Memory-Mapped Files (.NET)*

 メモリマップファイル基本的な使い方が説明されている。

 ([Microsoft Learn][1])

*Kieren Johnstone: 高速に MemoryMappedFile からバイト列を読む方法(StackOverflow)*

 `MemoryMappedViewAccessor` を使って unsafe コードからポインタを取得し、Marshal.Copy で効率よく読み出す方法

 ([Stack Overflow][2])

*Red-Gate: Sharing is Caring: Using Memory Mapped Files in .NET*

 MemoryMappedFile を使ったキャッシングなどの応用。

 ([Redgate Software][3])

*Stephen Cleary のブログ: Memory-Mapped Files と Overlaid Structs*

 メモリマップファイル構造体を重ねて(オーバーレイ)扱う方法など。

 ([blog.stephencleary.com][4])

---

もしよければ、**あなたコードCR を数えるもの)に特化した元ネタさらに探してみます**。やりましょうか?

[1]: https://learn.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files?utm_source=chatgpt.com "Memory-Mapped Files - .NET"

[2]: https://stackoverflow.com/questions/7956167/how-can-i-quickly-read-bytes-from-a-memory-mapped-file-in-net?utm_source=chatgpt.com "How can I quickly read bytes from a memory mapped file in ..."

[3]: https://www.red-gate.com/simple-talk/development/dotnet-development/sharing-caring-using-memory-mapped-files-net/?utm_source=chatgpt.com "Sharing is Caring: Using Memory Mapped Files in .NET"

[4]: https://blog.stephencleary.com/2023/09/memory-mapped-files-overlaid-structs.html?utm_source=chatgpt.com "Memory-Mapped Files and Overlaid Structs"

ChatGPT:

が、出てきて、やってくれと言ったら、こういうのが出てきた。

了解しました — 広く(英語日本語GitHubブログ・StackOverflow 等)再検索しました。結論と見つかった“近い”ソースをまとめます

結論(要点)**

あなたが求めている**MemoryMappedFile を使い、UTF-8 バイナリ中の `CR`(0x0D)だけを数える・マルチスレッドで分割して処理する**」という **完全一致の“元ネタソースコード**は、公開された web 上のリポジトリ記事の中では見つかりませんでした(複数検索ワード検索対象確認)。([hyr.mn][1])

ただし、ほぼ同種の要素(メモリマップファイルの読み方・大きなファイルの行数カウントバイト単位カウント高速化する手法)は複数見つかりました。これらを組み合わせれば、先に示した実装典型的パターンであることが確認できます。([Microsoft Learn][2])

見つかった“近い”・参考になりそうなソース抜粋)**

1. .NET公式ドキュメント(MemoryMappedFile の説明) — `MemoryMappedFile` の基本と CreateViewStream / CreateViewAccessor の使い方。必須の参照。([Microsoft Learn][2])

2. 「Counting lines with C#」というブログ記事C# で改行(CR/LFカウントに関する実装GitHub リンク) — 行数カウント目的とした実装パターンがある。([hyr.mn][1])

3. StackOverflow:MemoryMappedFile から高速にバイトを読む方法(`MemoryMappedViewAccessor` / unsafe ポインタ / Marshal.Copy 等の議論) — 高速実装のヒント。([Stack Overflow][3])

4. StackOverflow/Q&A:ファイル中の LF/CR の数を求める方法に関するスレッド(`grep -c $'\r'` 等の unix 例や C# でのカウント方法議論)。([Stack Overflow][4])

5. GitHubサンプルリポジトリ(MemoryMappedFile のテストサンプル) — メモリマップファイルを使う実装例。([GitHub][5])

もう少し深掘りできます選択肢)**

(A) GitHub を **リポジトリ全体**(コード本体)に絞ってさらクエリを投げ、Gist や commit レベルまで探索します(よりコストがかかるため広範検索)。

(B) ブログ技術記事対象に **全文一致(コード断片)検索** を行い、私が先に示した C# コードの実際の一節(たとえば `mmf.CreateViewStream(offset, size)` や `Interlocked.Add(ref totalCount, localCount)` など)を直接検索して完全一致を探します。

(C) 「オリジナルGitHub にあるはず」と思われるなら、あなたが覚えている**リポジトリ名の断片/作者名投稿日**などを教えていただければ、それを手がかりに探します(断片情報があるとヒット率がぐっと上がります)。

どれを優先して探しましょうか?(A: GitHub全探査 / B: コード断片で全文検索 / C: あなたからヒント提供

※続けて深掘りする場合は、すぐにさらに広い検索を行って該当ソースを探します(そのまま実行します)。

[1]: https://hyr.mn/catching-flowers-with-a-net?utm_source=chatgpt.com "Counting lines with C# - hyr.mn"

[2]: https://learn.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files?utm_source=chatgpt.com "Memory-Mapped Files - .NET"

[3]: https://stackoverflow.com/questions/7956167/how-can-i-quickly-read-bytes-from-a-memory-mapped-file-in-net?utm_source=chatgpt.com "How can I quickly read bytes from a memory mapped file in ..."

[4]: https://stackoverflow.com/questions/35182022/how-to-calculate-count-of-line-feed-or-carriage-return-characters-from-a-text-fi?utm_source=chatgpt.com "How to calculate count of line feed or carriage return ..."

[5]: https://github.com/byGeek/MemoryMappedFileTest?utm_source=chatgpt.com "test csharp code for using memory mapped file."

がでてきたので、どうもstack overflowgistMSDN元ネタのようだ

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には要約+リンク本体は常に自分土俵

ネトウヨ高市が言ってるライフワークバランス自分のことを考慮しないということだ!」

ワイ「そうなの?なら安心だね」

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ネトウヨ「…」

ワイ「話が違うやんけーーー!」

2025-10-15

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

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

これでも年収日本円換算で1,2億確約されてるなら別に構わないと思う

日本だとこれで1000万円届かないことありそう

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

2025-08-05

これ意外と持ち帰ろうとする人が多いって現実があるからなあ

ひざ掛けが持ってかれるのはデフォで機内エンタメ用のリモコンを外して持って帰ろうとするやつとかもいるらしいし

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

2025-08-03

ホンダ軽トラから撤退したのは進化に追いつけなかったからじゃない

軽トラのことがまた話題になってるが視野狭窄だ。端的に言って、軽トラ軽自動車日本だけの商品と考えているのが大本の間違いだ。軽自動車グローバル商品なんだよ。

https://b.hatena.ne.jp/entry/s/togetter.com/li/2584277

 

google:image:chevrolet damas画像検索してみてくれ。見覚えのある軽バンが出てくるだろう。スズキブリー(キャリーバン)だ。だがシボレーバッジをつけているのだ。しか左ハンドル。更にエンジン韓国大宇製だ。何者だこれは。

これはスズキキャリーバンGMライセンス生産しているものである

 

次はgoogle:image:suzuki bolangoogle:image:Carry Dabbaだ。

これはスズキキャリーパキスタン生産しているものだ。因みにパキスタン左側通行なので右ハンドル

この元になったキャリーは実は2スト360cc時代のもの。それに今の法規制に適合する4スト800ccEFIなんかのエンジンを載せているという異常進化を遂げている。

因みにこの生産ラインは、インドネシアキャリーモデルチャンジする際に売却されたものと思われる。

 

お次はgoogle:image:piaggio porterだ。ピアジオベスパスクーターで有名な2輪メーカーだ。ダイハツハイゼットがそのピアジオエンブレムを付けてイタリアや他のEU諸国を走っている。

これはダイハツ生産した部品を現地でノックダウン生産しているものだ。外装のプラ部品内装品は現地生産しているので見た目がかなり違う。

ついでにgoogle:image:piaggio porter ambulanceではハイゼット救急車が見られるぞ。ゲテモノっぽいし狭苦しいのだが、道が狭い、ローマなどの歴史地区では無くてはならない車だ。

更にこのポータートラックの方が香港救急車に改造されたのも見る事ができるだろう。日本イタリア香港と海を渡っているんだな。

 

日本だけ見てるとホンダ軽トラ撤退した意味は分からない。でもスズキダイハツはこういう風に世界中生産しているのだ。特にスズキは「グローバル軽自動車」界での巨人で、本当に世界中生産されている。

このグローバル展開の鍵は実はアメリカの車メーカー(と韓国大宇)で、東南アジアを牙城としつつ、その勢力圏から離れる南米中央アジア中東ではGMフォードライセンス生産しているのである

この馴れ初めは、経済が発展途上だった韓国GMと大宇が合弁して現地ライセンス生産をしていた事に始まる。またフォード台湾などで軽自動車ライセンス生産をしていた。

 

ホンダ場合海外展開北米に寄っている。北米は豊かなので軽トラバンなどの市場とならない。

からホンダ軽トラモデルチェンジしたら古いモデルラインは廃棄か部品生産用に低稼働となる。

だがスズキ場合無駄にならないのだ。他国に売却するし技術指導もするからだ。更にライセンス生産だけじゃなくてOEMやノックダウン供給もやっている。

すると規模の経済全然違うのだ。故に生産コストが断然有利だ。

すると、ホンダとしてはこういう条件で戦うのだったらOEM供給受けた方が良いということになる。

 

まあそういう訳で、軽自動車日本だけで作っているという考えは間違い。特に軽トラバンは昔からグローバル商品で、最近ではワゴンRもそれに続いている。多分、10年後の東南アジア南米ワゴンRだらけだろう。

同時に、アメリカの車メーカーGMフォード)が世界中軽自動車を作りまくっているので、アメ車メーカーデカい車しか作れない無能と考えるのも間違いだってことだ。それは米国市場だけのことなのだ。

 

ステラティ会長が「EU軽自動車規格作れ」と言ったのはこういうのを見据えてのことだ。規格が通ったら、ハンガリースズキ工場があるので東欧ワゴンRエブリイだらけになると思われるよ。

 

そういう事を逐一説明した増田を前に投稿したが長くてあまりまれなかった。気になる人はドーゾ→https://anond.hatelabo.jp/20250625180545

2025-08-01

anond:20250731160531

精神疾患治すのに、栄養が大事だよと伝えても、伝わらないのは何でですか..

服薬したって栄養状態悪いと薬の効きは悪くなるのでね。または、効いても予後が非常に悪い。まあ予後を考えられないような人が心を病むのだろうし薬に頼るのだろうから、どうしようもないのだが。2025/08/01 05:55

<script src="https://b.st-hatena.com/js/comment-widget.js" charset="utf-8" async></script>

2025-07-27

anond:20250727193225

アリ。大アリ。

乗客の男女比率をきちんと調査する必要がある。

まり男女の混雑格差をなくすために

男性専用車両2両

女性専用車両1両

のような編成をするのも当然である

だけどそれは差別

現時点での女性の少なさは社会進出が十分でない結果なので、現状に合わせ固定するなら女性差別環境保全してしまう。

追記

google:image:公平

のように、身体構造上・障害上、避けられないハンディキャップを結果平等にするのが公平。

車椅子のためのスロープなども同じ。

男女の泌尿器の仕組みからくる不可避の時間差をバランスをとるための数の調整は必要だと思う。

利用者の人数を元に結果平等にするならば、増田氏の結論と同じになるだろう。

2025-07-22

政党Youtubeチャンネル寸評

党名Youtubeリンク動画登録者コメント欄
自民党google:site:youtube.com LDPchannel570914万人オフ
公明党google:site:youtube.com Newkomeito_komei509323.1万人コメント可能
立憲民主党google:site:youtube.com 立憲民主党-cdp26296万人コメント可能
日本維新の会google:site:youtube.com OishinJpn463511.5万人コメント可能
国民民主党google:site:youtube.com DPFPofficial142227.2万人コメント可能
日本共産党google:site:youtube.com jcpmovie1.4万本16.8万人コメント可能
れい新選組google:site:youtube.com official_reiwa261939.6万人コメント可能
参政google:site:youtube.com sanseito-official161246.8万人コメント可能
社民党google:site:youtube.com shaminparty9849250コメント可能
日本保守党google:site:youtube.com hoshutojp197.36万人コメント可能
チームみらいgoogle:site:youtube.com チームみらい 公式チャンネル62612.2万人コメント可能

自民党

2週間くらい前からコメント欄閉鎖してますね。

誹謗中傷罵詈雑言懸念したのかもしれませんが、

国民の声に耳を傾ける気がないと解釈されても仕方がない行為

自民党中央政治大学院という、大学ではない自民党内部の組織がある模様。

こういう勉強会?をするような内部の組織を維持できるっていうのは政党として重要なのだろう。

公開講座Youtubeで公開しているのは良い点と思う。

公明党

まり見たいと思える動画がない。

チャンネルURLのNewkomeitoってなんなんですかね。新しいの?

立憲民主党

チャンネル登録者が少ない。社民党の次、日本保守党より少ない。

なんでこんなに少ないんだろう。

オードリータンとの対談なんかは、後で見てみてもいいかな?と思う。

チームみらいの安野貴博と対談してるのは、敵に塩を送った形なんでしょうか。

日本維新の会

チャンネルURLがOishinJpn。そのOはどこから来た?大阪のOなの?

対談者の人選が疑問。成田悠輔、箕輪厚介、堀江貴文呂布カルマひろゆき

その人たち、知名度はあっても好感度はない人じゃないですか?

国民民主党

正直なところ、動画サムネイルをざーと眺めて、視聴したくなるような動画はなかった。

しかし、それでも参議院選挙で躍進している。

ネットをうまく使っていると言われることも多いが、どういう点なのかまだわかっていない。

結局は、伝えるべき政策がしっかりしていないと意味がないのだろう。

玉木の個人チャンネルでの配信の方がメインか?

日本共産党

動画本数は最も多い。

記者会見動画と、国会での質問動画ほとんど。

国会動画は見たことないので、興味のある分野でどういう質問がされているのかは後で見てみてもいいかな。

れい新選組

チャンネル登録者がかなり多い。参政党の次で2位。その割に選挙の結果はぱっとしない。

参政

チャンネル登録者トップ参議院選挙で躍進。

登録者が多いほど当選やすいと単純化はできないだろうが40万人以上は立派な数字

サムネイルYoutubeっぽい。これは他の党も見習うべきでは?

ReHacQ、PIVOT、文藝春秋PLUS、TBS CROSS DIGとか、あのあたりの雰囲気サムネイル

人よりかはテーマを前に出したサムネイルで、興味を引きやすい。

参政党の候補者のことは知らないし興味もないけど、

ワクチンには興味がある、移民には興味がある、消費税には興味があるという人をひきつける。

この点は他の党と大きく異なる。

実際それは合理的でもある。政治家なんてものは、本来国民代理人しかない。

国民がやりたいこと実現したいことではあるがひとりではできないことを、代わりにやる存在

国民が興味があるのは政治家ではなくテーマの方だろう。

社民党

チャンネル登録者が少ない。

参政党のチャンネルを見た後だと、雰囲気が違うことがよくわかる。

候補者の紹介で、名前を売りたいのはわかるが、なんのテーマに興味がある人なのか、

サムネイルに書いておいてくれないとクリックしようという気になれない。

日本保守党

動画が少ない。19本しかない。

おそらく党首個人チャンネルの方がメインなのだろう。

しかし、そういう組織だった動きができていない点が、選挙の結果にも表れている。

チームみらい

チャンネルURLが安野貴博。個人Youtubeチャンネルを、政党のものとして使用している?

ここもまだ、組織だった動きができていない。

安野貴博氏と著名人との対談。人の名前が前面に出ている方式

対談相手は多いので、密度維新よりも薄いがここでも、堀江貴文呂布カルマひろゆき

対談受けてくれる人ならだれでもいいの?

AI解説をしていてDeep Seek, Devin, Grok, Cursorなどの名前が出てくるのは他の党にはない特徴。

公明党サブチャンネル

情報ありがとう動画105本と少なめではあるが、動画方向性おもしろ、親しみやすさを狙った方向性

ここでも、ホリエモン箕輪ひろゆき。この人たちの政党チャンネルへの呼ばれやすさはなんなんですかね。

2025-07-09

anond:20250708234043

きょうだい格差のやつ見て思い出した。

年齢が下の方を同程度の体調不良であれば優先するよ。迎えのために分身できればそうはしないけど、学校と調整の結果かもしれない。この一件では扱いに差をつけたい親とは思わない……そう捉えられたら悲しい2025/07/09 10:29

<script src="https://b.st-hatena.com/js/comment-widget.js" charset="utf-8" async></script>

2025-07-06

Grokが作ってくれたやつ


<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>GrokのPONGゲーム</title>
    <style>
        body { display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #1a1a1a; }
        canvas { border: 2px solid #00ff00; background: #000; }
        #score { color: #00ff00; font-family: 'Courier New', monospace; font-size: 24px; position: absolute; top: 20px; width: 100%; text-align: center; }
    </style>
</head>
<body>
    
0 : 0
<canvas id="gameCanvas" width="800" height="400"></canvas> <script> const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); const scoreDisplay = document.getElementById('score'); // ゲームオブジェクト const ball = { x: canvas.width / 2, y: canvas.height / 2, radius: 10, speedX: 5, speedY: 5 }; const paddleLeft = { x: 10, y: canvas.height / 2 - 50, width: 10, height: 100, speed: 8 }; const paddleRight = { x: canvas.width - 20, y: canvas.height / 2 - 50, width: 10, height: 100, speed: 8 }; let scoreLeft = 0, scoreRight = 0; // キー入力 const keys = { w: false, s: false, ArrowUp: false, ArrowDown: false }; document.addEventListener('keydown', e => { if (keys.hasOwnProperty(e.key)) keys[e.key] = true; }); document.addEventListener('keyup', e => { if (keys.hasOwnProperty(e.key)) keys[e.key] = false; }); // ゲームループ function gameLoop() { // 移動 if (keys.w && paddleLeft.y > 0) paddleLeft.y -= paddleLeft.speed; if (keys.s && paddleLeft.y < canvas.height - paddleLeft.height) paddleLeft.y += paddleLeft.speed; if (keys.ArrowUp && paddleRight.y > 0) paddleRight.y -= paddleRight.speed; if (keys.ArrowDown && paddleRight.y < canvas.height - paddleRight.height) paddleRight.y += paddleRight.speed; // ボール移動 ball.x += ball.speedX; ball.y += ball.speedY; // 壁衝突 if (ball.y + ball.radius > canvas.height || ball.y - ball.radius < 0) ball.speedY = -ball.speedY; // パドル衝突 if ( (ball.x - ball.radius < paddleLeft.x + paddleLeft.width && ball.y > paddleLeft.y && ball.y < paddleLeft.y + paddleLeft.height) || (ball.x + ball.radius > paddleRight.x && ball.y > paddleRight.y && ball.y < paddleRight.y + paddleRight.height) ) { ball.speedX = -ball.speedX * 1.05; // 少し加速 } // 得点 if (ball.x < 0) { scoreRight++; ballReset(); } if (ball.x > canvas.width) { scoreLeft++; ballReset(); } // 描画 ctx.fillStyle = '#000'; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = '#00ff00'; ctx.fillRect(paddleLeft.x, paddleLeft.y, paddleLeft.width, paddleLeft.height); ctx.fillRect(paddleRight.x, paddleRight.y, paddleRight.width, paddleRight.height); ctx.beginPath(); ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2); ctx.fill(); scoreDisplay.textContent = `${scoreLeft} : ${scoreRight}`; requestAnimationFrame(gameLoop); } function ballReset() { ball.x = canvas.width / 2; ball.y = canvas.height / 2; ball.speedX = (Math.random() > 0.5 ? 5 : -5) * (Math.random() * 0.5 + 0.75); ball.speedY = (Math.random() * 4 - 2); } gameLoop(); </script> </body> </html>

 

 

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

Claudeが作ってくれたやつ



<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PONG Game</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: #000;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            font-family: 'Courier New', monospace;
            color: white;
        }

```
    .game-container {
        text-align: center;
    }
    
    canvas {
        border: 2px solid white;
        background-color: #000;
    }
    
    .score {
        font-size: 24px;
        margin: 20px 0;
        letter-spacing: 2px;
    }
    
    .controls {
        margin-top: 20px;
        font-size: 14px;
        opacity: 0.8;
    }
    
    .start-button {
        background-color: #333;
        color: white;
        border: 2px solid white;
        padding: 10px 20px;
        font-size: 16px;
        cursor: pointer;
        font-family: 'Courier New', monospace;
        margin: 10px;
    }
    
    .start-button:hover {
        background-color: white;
        color: black;
    }
</style>
```

</head>
<body>
    
<canvas id="gameCanvas" width="800" height="400"></canvas>
<button class="start-button" onclick="startGame()">ゲーム開始</button> <button class="start-button" onclick="resetGame()">リセット</button>

W/S キーまたは ↑/↓ 矢印キーパドル操作
``` <script> // Canvas要素とコンテキストの取得 const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d'); // ゲーム状態管理 let gameRunning = false; let animationId; // スコア要素の取得 const playerScoreElement = document.getElementById('playerScore'); const computerScoreElement = document.getElementById('computerScore'); // ゲームオブジェクト定義 const game = { // プレイヤーパドル(左側) playerPaddle: { x: 10, y: canvas.height / 2 - 50, width: 10, height: 100, speed: 5, upPressed: false, downPressed: false }, // コンピューターパドル(右側) computerPaddle: { x: canvas.width - 20, y: canvas.height / 2 - 50, width: 10, height: 100, speed: 3.5, // プレイヤーより少し遅く設定 targetY: canvas.height / 2 - 50 }, // ボールの設定 ball: { x: canvas.width / 2, y: canvas.height / 2, radius: 8, speedX: 4, speedY: 3, maxSpeed: 8 }, // スコア管理 score: { player: 0, computer: 0 } }; // キーボード入力の処理 const keys = {}; // キーが押されたときの処理 document.addEventListener('keydown', (e) => { keys[e.key.toLowerCase()] = true; // ゲームが停止中にスペースキーゲーム開始 if (e.key === ' ' && !gameRunning) { startGame(); } }); // キーが離されたときの処理 document.addEventListener('keyup', (e) => { keys[e.key.toLowerCase()] = false; }); // パドルの移動処理 function updatePaddles() { // プレイヤーパドルの移動(W/S キーまたは矢印キー) if (keys['w'] || keys['arrowup']) { game.playerPaddle.y -= game.playerPaddle.speed; } if (keys['s'] || keys['arrowdown']) { game.playerPaddle.y += game.playerPaddle.speed; } // プレイヤーパドルの画面外移動を防ぐ if (game.playerPaddle.y < 0) { game.playerPaddle.y = 0; } if (game.playerPaddle.y > canvas.height - game.playerPaddle.height) { game.playerPaddle.y = canvas.height - game.playerPaddle.height; } // コンピューターパドルAI処理 // ボール位置を追跡するが、完璧ではない動きを実装 const ballCenterY = game.ball.y; const paddleCenterY = game.computerPaddle.y + game.computerPaddle.height / 2; // ボールパドルの中心の差を計算 const difference = ballCenterY - paddleCenterY; // 反応に少し遅れを持たせる(人間らしい動き) if (Math.abs(difference) > 10) { if (difference > 0) { game.computerPaddle.y += game.computerPaddle.speed; } else { game.computerPaddle.y -= game.computerPaddle.speed; } } // コンピューターパドルの画面外移動を防ぐ if (game.computerPaddle.y < 0) { game.computerPaddle.y = 0; } if (game.computerPaddle.y > canvas.height - game.computerPaddle.height) { game.computerPaddle.y = canvas.height - game.computerPaddle.height; } } // ボールの移動と衝突判定 function updateBall() { // ボール位置更新 game.ball.x += game.ball.speedX; game.ball.y += game.ball.speedY; // 上下の壁との衝突判定 if (game.ball.y - game.ball.radius < 0 || game.ball.y + game.ball.radius > canvas.height) { game.ball.speedY = -game.ball.speedY; } // プレイヤーパドルとの衝突判定 if (game.ball.x - game.ball.radius < game.playerPaddle.x + game.playerPaddle.width && game.ball.x + game.ball.radius > game.playerPaddle.x && game.ball.y + game.ball.radius > game.playerPaddle.y && game.ball.y - game.ball.radius < game.playerPaddle.y + game.playerPaddle.height) { // ボールパドルに当たった位置によって跳ね返り角度を調整 const hitPos = (game.ball.y - (game.playerPaddle.y + game.playerPaddle.height / 2)) / (game.playerPaddle.height / 2); game.ball.speedX = Math.abs(game.ball.speedX); game.ball.speedY = hitPos * 4; // ボールの速度を少し上げる(ゲームをエキサイティングに) if (Math.abs(game.ball.speedX) < game.ball.maxSpeed) { game.ball.speedX *= 1.02; } } // コンピューターパドルとの衝突判定 if (game.ball.x + game.ball.radius > game.computerPaddle.x && game.ball.x - game.ball.radius < game.computerPaddle.x + game.computerPaddle.width && game.ball.y + game.ball.radius > game.computerPaddle.y && game.ball.y - game.ball.radius < game.computerPaddle.y + game.computerPaddle.height) { // ボールパドルに当たった位置によって跳ね返り角度を調整 const hitPos = (game.ball.y - (game.computerPaddle.y + game.computerPaddle.height / 2)) / (game.computerPaddle.height / 2); game.ball.speedX = -Math.abs(game.ball.speedX); game.ball.speedY = hitPos * 4; // ボールの速度を少し上げる if (Math.abs(game.ball.speedX) < game.ball.maxSpeed) { game.ball.speedX *= 1.02; } } // ボールが左右の壁を越えた場合得点処理) if (game.ball.x < 0) { // コンピューター得点 game.score.computer++; updateScore(); resetBall(); } else if (game.ball.x > canvas.width) { // プレイヤー得点 game.score.player++; updateScore(); resetBall(); } } // ボールリセット得点後の処理) function resetBall() { game.ball.x = canvas.width / 2; game.ball.y = canvas.height / 2; // ランダムな方向でボールを発射 game.ball.speedX = (Math.random() > 0.5 ? 4 : -4); game.ball.speedY = (Math.random() - 0.5) * 6; } // スコア表示の更新 function updateScore() { playerScoreElement.textContent = game.score.player; computerScoreElement.textContent = game.score.computer; } // 描画処理 function draw() { // 画面をクリア ctx.fillStyle = '#000'; ctx.fillRect(0, 0, canvas.width, canvas.height); // 中央の点線を描画 ctx.setLineDash([5, 5]); ctx.beginPath(); ctx.moveTo(canvas.width / 2, 0); ctx.lineTo(canvas.width / 2, canvas.height); ctx.strokeStyle = '#fff'; ctx.stroke(); ctx.setLineDash([]); // プレイヤーパドルを描画 ctx.fillStyle = '#fff'; ctx.fillRect(game.playerPaddle.x, game.playerPaddle.y, game.playerPaddle.width, game.playerPaddle.height); // コンピューターパドルを描画 ctx.fillRect(game.computerPaddle.x, game.computerPaddle.y, game.computerPaddle.width, game.computerPaddle.height); // ボールを描画 ctx.beginPath(); ctx.arc(game.ball.x, game.ball.y, game.ball.radius, 0, Math.PI * 2); ctx.fillStyle = '#fff'; ctx.fill(); // ゲームが停止中の場合メッセージを表示 if (!gameRunning) { ctx.fillStyle = '#fff'; ctx.font = '20px Courier New'; ctx.textAlign = 'center'; ctx.fillText('ゲーム開始ボタンを押してください', canvas.width / 2, canvas.height / 2 + 60); } } // ゲームのメインループ function gameLoop() { if (!gameRunning) return; updatePaddles(); updateBall(); draw(); animationId = requestAnimationFrame(gameLoop); } // ゲーム開始 function startGame() { gameRunning = true; gameLoop(); } // ゲームリセット function resetGame() { gameRunning = false; if (animationId) { cancelAnimationFrame(animationId); } // スコアリセット game.score.player = 0; game.score.computer = 0; updateScore(); // ボールパドル位置リセット game.ball.x = canvas.width / 2; game.ball.y = canvas.height / 2; game.ball.speedX = 4; game.ball.speedY = 3; game.playerPaddle.y = canvas.height / 2 - 50; game.computerPaddle.y = canvas.height / 2 - 50; draw(); } // 初期描画 draw(); </script> ``` </body> </html>

 

 

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

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