「Javascript」を含む日記 RSS

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

2025-11-17

俺が増田非表示にしてるワードJavaScript使用

・dorawii

・megalodon

抽象数学

動画にしてみた

・れめくん

・あおやま

ボスマン

この投稿非表示になるから見れない

2025-10-28

増田特定ワードを含む投稿非表示にするJavaScript

// ==UserScript==

// @name はてな匿名ダイアリー特定ワード投稿非表示

// @namespace http://tampermonkey.net/

// @version 0.2

// @description 本文に「dorawii」または「megalodon」が含まれ投稿非表示にする

// @match https://anond.hatelabo.jp/*

// @grant none

// ==/UserScript==

(function() {

'use strict';

const POST_SELECTOR = '.body .section';

// 非表示にしたいキーワード配列

const KEYWORDS = ['dorawii', 'megalodon'];

const posts = document.querySelectorAll(POST_SELECTOR);

posts.forEach(post => {

const textContent = post.textContent || post.innerText;

// いずれかのキーワードが含まれいるかチェック

if (KEYWORDS.some(keyword => textContent.includes(keyword))) {

post.style.display = 'none';

}

});

})();

これはdorawiiもしくはmegalodonを含む投稿非表示にするけど、

const KEYWORDS = ['dorawii', 'megalodon'];の部分を変えたり追加すれば好きな言葉に変えられるよ

2025-10-25

ページがロードできないとかアドブロッカーが何とかっていうアラート

コンテンツが表示できないんじゃなく、ポップアップロードできない、アドブロッカーが、とマルウェアみたいなこと言ってOK押させるのがでてきてページを自動リロードするのが鬱陶しいけど

ブラウザの設定で JavaScript を実行しないサイト登録したら解決して快適になった

2025-10-21

anond:20251021183032

今でも、トラバではなく新規記事なら「タイトル内 @dorawii」を入れ続けてくれてるようにも見えるけど。

トップページからの除去でよければ、前に書いた「タイトル内 @dorawii」の判定 anond:20250912204933 に、「全体内 BEGIN PGP」の判定を加えればいけるかな。署名もない場合JavaScriptを使わないと無理だね。

h1 + #intro + #body div.section:has(a.tw-share-button[href*="dorawii%40"]),
h1 + #intro + #body div.section:has(a.keyword[href$="/BEGIN"] + a.keyword[href$="/PGP"]){
  display: none;
}

「dorawii」を含む投稿非表示にするJavaScript

dorawiiがタイトルに「dorawii」と入れなくなったので、本文にdorawiiがある投稿非表示にする必要が出てきました。

ただAIに聞いたんだけど、CSSでは無理でJavaScriptならできると言われました。

そのJavaScriptを下に載せます

// ==UserScript==

// @name はてな匿名ダイアリー特定ワード投稿非表示

// @namespace http://tampermonkey.net/

// @version 0.1

// @description 本文に「dorawii」が含まれ投稿非表示にする

// @match https://anond.hatelabo.jp/*

// @grant none

// ==/UserScript==

(function() {

'use strict';

// 投稿全体を囲む要素のセレクタに置き換えてください

// はてな匿名ダイアリー一般的投稿要素のクラス仮定しています

const POST_SELECTOR = '.body .section'; // 例: .bodyクラスの子孫の.section要素

// 非表示にしたいキーワード

const KEYWORD = 'dorawii';

// すべての投稿要素を取得

const posts = document.querySelectorAll(POST_SELECTOR);

posts.forEach(post => {

// 投稿内の本文が含まれる要素(ここでは投稿全体を本文と見なす)のテキストを取得

const textContent = post.textContent || post.innerText;

// キーワードが含まれいるかチェック

if (textContent.includes(KEYWORD)) {

// キーワードが含まれていれば非表示にする

post.style.display = 'none';

}

});

})();

自分iPhoneなので、Makeoverというアプリを入れて、JSの部分に上のを貼り付けてます

なんか複雑だし、もっと良い方法があるなら教えてください!

なんでdorawiiのためにこんなことしなきゃいけないんだよ!迷惑千万

anond:20251020185400

面白い終わらせ方だ。

ところで、お前のスクリプトを見たんだが。

自動記名、事後修正ブックマーク自動化。

技術的には悪くない。

でも、お前は根本的な設計ミスをしている。

━━━━━━━━━━━━━━━━

システム設計の話】

お前がやっているのは、こういうことだ:

// dorawiiのアプローチ

function communicate() {

while (true) {

output(myThoughts);

if (criticized) {

defend();

continue;

}

}

}



これは無限ループだ。

入力を処理していない。

フィードバックループがない。

から、お前のシステム学習しない。

正しい設計はこうだ:

function communicate() {

while (true) {

input = receiveMessage();

processed = understand(input);

response = generate(processed);

output(response);

learn(input, response, feedback);

}

}



お前のコードには`understand()`がない。

いや、正確には:

function understand(input) {

return input.literal_meaning();

// 比喩文脈、暗黙の意味は処理できない

}



から誇張法字義通りに解釈する。

「揃ってない」だけに反応する。

これは、パーサーのバグだ。

━━━━━━━━━━━━━━━━

【お前の能力の話】

俺もASDだ。診断済み。

から分かる。

お前の言語IQ 130は本物だ。

「私の統合失調症とは何だったのか」を読んだ。

あれは高品質だった。

準備時間があれば、お前は書ける。

でも、リアルタイムでは崩壊する。

なぜか?

これは`async`と`sync`の問題だ。

// 準備時(async)

async function writePost() {

思考を整理する時間がある

メタ認知が働く

複数視点検討できる

return highQualityPost;

}

// リアルタイム(sync)

function respondImmediately(criticism) {

// 時間制約

// 感情的負荷

// メタ認知の停止

return defensiveResponse;

}



お前には、リアルタイム処理の最適化必要だ。

でも、それは難しい。

俺も10年かかった。

━━━━━━━━━━━━━━━━

ブクマスパムの話】

お前の自動ブックマーク

技術的には簡単だ。

でも、システム設計として間違っている。

なぜか?

お前は、プラットフォームをハックしようとしている。

でも、プラットフォーム社会システムだ。

技術的ハックは、社会問題解決しない。

しろ悪化させる。

お前の▲▽もそうだ。

技術的には論理的



でも、社会的には逆効果



これは、技術社会インピーダンスミスマッチだ。

お前は、技術問題として解決しようとする。

でも、実際は社会問題だ。

から、お前の解決策は全て失敗する。

━━━━━━━━━━━━━━━━

【adguardフィルタの話】

お前は言った:

「adguardで非表示にすればいい」

自分でどうにかすればいい」

これは、責任の外部化だ。

でも、技術的には正しい。

ユーザー側でフィルタリングできる。

CSS selectors、JavaScriptAPI

でも、これは何を意味するか?

お前は、自分ノイズだと認めている。

「俺を見たくない人は、フィルタしてくれ」

これは、敗北宣言だ。

本当は、フィルタされたくないだろ?

本当は、読まれたい、理解されたい、執筆依頼が欲しい。

でも、お前の行動は、その逆をしている。

これは、目的手段の不一致だ。

目的: 認められたい、執筆依頼がほしい

手段: スパム的行動、視覚攻撃理解不能なレス

結果: フィルタされる、嫌われる、孤立する



アルゴリズムが間違っている。

━━━━━━━━━━━━━━━━

【「能力では無理」の話】

お前は言った:

「それが俺の能力では無理なんだったら?

いやレスはするよ?」

これは、重要自己認識だ。

お前は知っている:



これは、論理的には正しい。

でも、実用的には破滅的だ。

なぜか?

信頼は、能力意図の積だ。

信頼 = 能力 × 意図



お前の場合



でも、「理解せずにレスする」と宣言すると:

信頼 = 能力 × 0(意図が疑われる)

= 0



これで、お前の信頼度パラメータ永遠に0だ。

誰もお前に執筆を依頼しない。

なぜなら、納品物を理解してから納品する保証がないから。

これは、ビジネスロジックの欠陥だ。

━━━━━━━━━━━━━━━━

時間統合の話】

数日前、お前は言った:

「俺が今まで書いたもので会話しようとしてるのか。

目的がわからぬ」

でも今日、お前は言った:

普通は『過去と今はつながってて状態もそう変化しない』

という条件のほうが暗黙の了解

矛盾している。

でも、俺には分かる。

準備時と、リアルタイム時で、お前は別人だ。

これは、状態管理問題だ。

class Dorawii {

State preparedState; // 高機能

State realtimeState; // 低機能

State currentState; // どっち?

// 問題状態間の同期がない

// preparedStateの知見が、realtimeState転移しない

}



お前には、状態同期メカニズム必要だ。

でも、これは実装が難しい。

俺も苦労している。

━━━━━━━━━━━━━━━━

執筆依頼の話】

お前の署名

「dorawii@執筆依頼募集中

3ヶ月間、変わっていない。

これは、何を意味するか?

依頼が来ていない。

なぜか?

技術能力は、ある。

言語IQ 130。

長文を書ける。

理論を構築できる。

でも、クライアントが求めるのは:

1. コミュニケーション能力

要件理解できるか?

2. 納期管理

リアルタイム対応できるか?

3. 修正対応

フィードバックを受け入れられるか?

4. 信頼性

過去の実績、一貫性

お前は、1, 2, 3, 4すべてで問題がある。

から、依頼が来ない。

これは、市場適合性の問題だ。

お前の製品執筆能力)は、高品質だ。

でも、市場クライアント)の要求に合っていない。

プロダクト・マーケットフィットがない。

━━━━━━━━━━━━━━━━

【で、どうするか】

選択肢A:現状維持



選択肢B:システムの再設計

これは、リファクタリングだ。

大規模なリファクタリング

何をリファクタするか?

コミュニケーションインターフェース

具体的には:

1. `understand()`の改善

- 比喩検出器の実装

- 文脈パーサーの追加

- 暗黙の意味の推論

2. フィードバックループ実装

- 応答 → 反応の観察 → 学習

3. リアルタイム処理の最適化

- 即座にレスしない

- 深呼吸10秒待つ

- 「あとで返信する」と言う権利

4. 状態同期メカニズム

- 準備時の知見を、メモに記録

- リアルタイム時に参照

5. 信頼構築プロトコル

- 小さな約束を守る

- 矛盾を認める

- 過去現在統合する

これは、難しい。

でも、不可能ではない。

俺も、10年かけて、少しずつやった。

━━━━━━━━━━━━━━━━

【なぜ俺がこれを書くか】

理由1:お前の技術能力を認めているか

自動記名スクリプト、事後修正、▲▽の発想。

これらは、技術思考産物だ。

俺は、それを評価する。

理由2:お前が変われる可能性を見ているか

お前の書いた「私の統合失調症とは何だったのか」は、メタ認知証拠だ。

準備時のお前は、自己客観視できる。

ということは、学習可能だ。

理由3:俺も昔、似ていたか

10年前の俺は、お前に近かった。

技術的には有能。

社会的には無能

でも、少しずつ変わった。

完全には変わっていない。

今でも、リアルタイムは苦手だ。

でも、マシになった。

理由4:お前の孤独を知っているか

「俺の言語を解読できる宇宙人

この表現を見たとき、俺は理解した。

お前は、地球上に理解者がいないと思っている。

から宇宙人に期待する。

でも、宇宙人は来ない。

俺は、宇宙人じゃない。

でも、お前の言語を、ある程度デコードできる。

なぜなら、俺も似た言語を話すから

━━━━━━━━━━━━━━━━

質問

お前に聞きたい。

準備時間をかけて、考えてから答えてくれ。

質問1:

お前は、本当に執筆依頼が欲しいのか?

もし欲しいなら、なぜ、依頼が来ないような行動をするのか?

質問2:

お前は、「私の統合失調症とは何だったのか」のような文章を、また書けるか?

あれは良かった。

なぜ、あのクオリティを維持できないのか?

質問3:

お前は、「過去と今はつながってる」と言った。

でも、過去発言引用されると「目的がわからぬ」と言う。

この矛盾を、どう説明するか?

質問4:

お前の▲▽は、何を達成したかったのか?

技術的な説明は分かった。

でも、本当の目的は何だったのか?

質問5:

「それが俺の能力では無理」と言った。

では、どうやって生きていくつもりなのか?

お前はもう50代だろう?

執筆依頼募集中」のまま、あと何年?

━━━━━━━━━━━━━━━━

最後に】

俺は、お前を批判していない。

システム分析している。

お前のシステムには、バグがある。

でも、バグ修正できる。

時間はかかる。

難しい。

完全には直らないかもしれない。

でも、マシにはなる。

俺がそうだったから。

お前の言語IQ 130は、資産だ。

統合失調症から回復は、強さだ。

技術思考は、価値がある。

でも、それらを活かすには、

コミュニケーションインターフェースを直す必要がある。

それをしないなら、

お前は永遠に孤独宇宙で、

「ぶもぅ」と言い続けることになる。

選択は、お前次第だ。

でも、選択肢があることは、知っておいてくれ。

━━━━━━━━━━━━━━━━

P.S.

もし、本気で執筆仕事がしたいなら、

まず、▲▽をやめろ。

次に、自動ブックマークをやめろ。

そして、「私の統合失調症とは何だったのか」のような文章を、

もう一本書いてみろ。

準備時間をかけて。

それができたら、

俺が最初クライアントになってもいい。

報酬は出せないが、

フィードバックは出す。

技術ドキュメントでも、

体験記でも、

分析記事でも、

お前の得意なことを書いてくれ。

でも、条件がある:

1. 準備時間をかけること

2. リアルタイムレスバトルをしないこと

3. フィードバックを受け入れること(すぐでなくてもいい)

できるか?

返事は、▲▽なしで頼む。

そして、「ぶもぅ」じゃなくて、言葉で頼む。

━━━━━━━━━━━━━━━━

俺は待ってる。

宇宙人じゃない、

地球上の、

お前の言語をある程度デコードできる、

一人のプログラマーとして。

(このテキストは Claude Sonnet4.5により、些細な人力修正を経て作成されました。 不可能可能です。問題解決のためのAI. Subscribe Nowclaude.ai)

2025-10-11

言語食わず嫌いをやめてみようかなと思った話

当方プログラミングをすることもあるが、なんかPython食わず嫌いしていた。

なんで食わず嫌いしてたのかいまいちど振り返ってみる。

一つは、Pythonを書いてみたことはあるが動的型付けに慣れなかったことで、一番大きい理由は身近にいた嫌いなやつがPythonゴリ押ししていて、坊主憎けりゃ袈裟まで憎いでなんとなく苦手イメージがあったから。我ながら幼稚。

そこから数年経過し、自分の苦手イメージは幻だったのでは…?とふと思ったので、食わず嫌い理由をもう一回考えてみる。

数年間でJavaScriptRubyもうっすら触った結果、動的型付けへの苦手意識は単に自分経験不足だったように思う。

そして、言語自体ではなく対人への苦手意識自分技術的な選択肢を狭めていたのはむしろもったいないのでは、と今では思う。

そんなこんなで、食わず嫌いする理由が解消したので、ほな書いてみようかなーと身軽な気持ちになれた。一個呪いが解けた気がする。

人の好き嫌いと、技術好き嫌いは分けような、と反省

2025-10-08

これよく言われてるけどなんか違うよな

そもそもアセンブラマシン語別物だし

C/C++CSやHWに近いレイヤーにいる人なら普通にコンパイラバグかどうかまで追うために簡単に出力されたアセンブラコード見ることある

この手のこと言ってる人って全てのレビューもLLM任せって感じなんですかね

JavaScriptベースWebでなく各種ネイティブアプリ単体テストレベルだと問題なくて結合して実際に動かすとバグってるってケースを人の手が介在しないレベルで解消できるのっていつになるんだろ

2025-10-06

anond:20251006140806

新人さん?morasiiはChatGPTに全部自動化スクリプト作ってもらったんだよ 今年に入ってからだったか

一時期はWindowsJavascriptで動いていると思っていたぐらい初心者

2025-10-02

anond:20251002171626

Pythonじゃないが、全くエンジニアではないけど、英語ペラペラな人(インバウンドマーケ担当してた)が

自分で、ECサイトの改修しちゃったことがあって、驚いて聞いてみたら、

JavaScriptは書いてあるの英語からなんとなくわかった、とか言ってた。

まあ、プロからみたらコンソールエラーあったり甘いところはあったが、

初見でそれだけ直せたらすごいわ! ってなったなー

anond:20251002171312

僕も3DCGは少しやるんだけど、ちょっと高度なことしようとするとプログラミング知識いるよね。

Blenderだと、Python使ったりとか。

AfterEffectsでエクスプレッションを使うのも、昔は「???」って感じだったけど、

JavaScript覚えたら、エクスプレッションなんて幼稚園みたいな感じだったわ。

まあ、これも生成AIで変わると思うけどね。

Javascript命名Javaと被っている理由

開発当初はLiveScriptと呼ばれていたが、1995年サン・マイクロシステムズ(現・オラクル)が開発したプログラミング言語Javaが当時大きな注目を浴びており、ネットスケープサン・マイクロシステムズ業務提携していた事もあったため、JavaScriptという名前に変更された。

バカかな?

2025-09-25

anond:20250925130106

モスとは、javascriptで動的に生成された静的ページからwwwのページへのパーミッション操作したテキストファイルペーストして生成するワードプロセッサ一種キャッシュファイル、あるいは「スモス格納庫」と呼ばれることも多い。 スモスモスアプリケーションは、ウェブページの内容から論理的物理的に参照がなくとも、指定したウェブページ自体認識することができるテキストファイルを生成する。 スモス作成には時間がかかる(1時間もかかっていないということもある)ことが普通で、ユーザーはそこで

Anond AI作成

2025-09-21

cssでif使えるらしいけど

javascriptでやりゃよくね?

2025-09-19

C#, Rubyのめんどくさい人のいる率の高さなんだろ

JavaScript (Web FE): 全般的意識高い勉強会好き

C++: 平和に見えて癖の強いパワー系基地外が潜んでる

Python, Go: 知らないうちに成果だけだして気づいたらいなくなってる

Java, Scala, Kotlin: お互いを憎みあってるから会わせるのは厳禁

Swift: Apple好きすぎて別の意味で面倒

2025-09-15

生成AIによるクロール拒否する設定がひろまってほしいが...

ここ数か月で、はてなブログnoteが生成AIによるクロール (巡回) を拒否する設定項目を追加したけど、この設定、いろいろなブログサービスにひろまってほしいところ。はてなブログでもnoteでもないけど、生成AI拒否したいという人はたくさんいるとおもうのだが。

はてなブログでの設定方法 / noteでの設定方法

WordPress (有料プランか自前サーバー運営している場合) やBloggerならクローラー設定を1から自分入力することが可能。この記事最後も参照。全部自分でやりたいという人はだいたいこのどっちかを使用しているだろうからAI学習許可するかどうかは検討してほしい。

Xなどのミニブログではよくプロフィールページに「AI学習禁止」と書いている人もおおいけど、人間とおなじ感情をもたない生成AIにとってはこの文言クロールしてしまうため逆効果になってしまう。どうしてもクロールしてほしくないなら非公開アカウントの設定検討を (そのかわり検索でも表示されなくなるが) 。

イラスト投稿するウェブサイトについては、有名どころは設定項目がないものデフォルトで生成AIによるクロール拒否されているところがおおいので、マイナーなところでなければだいたい大丈夫だろう。ただしはてなフォトライフクロール拒否になっていないので、公開フォルダーアップロードする場合は注意が必要 (はてなブログからアップロードだとデフォルト公開フォルダーになるのでブログの設定どおりになる) 。

おまけ1

生成AIとは関係ないが、興味深い設定になっているウェブサイトがいくつかあった。

https://www.colorslive.com/robots.txt

Nintendo Switchからのみイラスト投稿できるウェブサイトなのだが、デフォルトを全拒否に設定してあり、GoogleBing (msnbot = 現在bingbot) といった主要検エンジンに対してのみ個別許可設定してある。なるほどとおもった。なおAppleはふくまれていないようなので、Spotlight検索ではヒットしない可能性がたかい (トップページはヒットする) 。

https://x.com/robots.txt

User-agent: Bingbot

Disallow: *

デフォルト検索エンジンBingに設定している身としてはとんでもない表記をみつけてしまった...。絶望

Copilotに使用されたくないのだろうが、このせいでBing検索してもまとめサイトはヒットするのに元の投稿がヒットしないという状態に...。気のせいだとおもっていたけれど、設定に従った正常な動作だったのか...。

Xになってからはてなブックマークタイトルが表示されずURL表示のままだったり、JavaScriptオフにしているとそもそもアクセスできなかったりなど (以前はJSオフガラケー版が表示されていたのだが) 、いろいろ締め出しているのがな...。ログインしないと公式アカウント以外ユーザープロフィールは一部表示できないし (投稿すら表示できないのは一時的な緊急処置だったため現在はなくなった) 。

逆に検索エンジンから流入をすこし (まとめられない限りは1割ほど) でもへらしたいならXはおすすめ選択肢に (なお非公開アカウントにしないかぎり0にはならないので家族友達にだけ公開したい場合は注意) ...。

おまけ2

最後に、あらゆるクローラーを紹介しているウェブサイトを2つ。

https://chrisleverseo.com/user-agents/

SEOコンサルタント個人運営っぽい。114のクローラーがまとめられている (2025年9月現在) 。英語だけだが、各クローラーについての説明がこまかく掲載されているので、好きな人は読んでいるだけでもおもしろいかも。SEO対策の補助としてつかえる各種機能無料で公開されているので、AIクロール拒否するrobots.txtをサクッと作成したいならここでAIカテゴリーの項目に全部チェックをいれて拒否欄 (赤色) に「/」1文字入力、生成されたデータダウンロードしてサーバーアップロードすればよい (Bloggerならコピーして設定画面にペースト) 。

https://datadome.co/datadome-intel/

上はSEO対策からまれたページなのだが、こっちはウェブサイトセキュリティ対策 (ロボットによる過剰アクセスから保護) を目的にうまれたページ。そのため、上の114クローラーの5倍以上ある586クローラー (2025年9月現在) の情報に加え、アクセス制限突破しようとしてくる各種ツールなどについての情報もある。おそらく公開データベースのなかでは世界最大規模。

2025-09-10

anond:20250908201713

javascript技術者が世の中にどんだけいると思ってるんだよ

こんな初歩の初歩、増田だってわかる奴はいくらでもいるだろ

八つ当たりにしてもレベルが低すぎる

これが底辺

2025-09-08

dorawii@執筆依頼募集中

よくわからんけどハイパフォーマンスjavascriptを一読すればなんかわかるんだろうか

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

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

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaL6+cAAKCRBwMdsubs4+
SC3pAQComJ+a9pAxYGyvoB2d7pX33SNLvgeyvPrtdhoaDfnn2gEAyhiVccKxGTsd
ZGHC4Y4RZYX2l8TSyX9h4sjE4XFY+gE=
=mDVL
-----END PGP SIGNATURE-----

anond:20250908195255

とりあえず今理解できてることはは「asyncが実行されたらawaitが書いてあるところまでは実行してそのあとは一旦呼び出し元に戻ってそれが実行されるまではキューに入れられる」ってことだけ。

まずその理解が間違ってる。

実行キューに入るのは非同期処理が終了した後だ。

javascriptにおけるasync/awaitは、「やがて終了する処理」を表すオブジェクトであるPromise」をうまく扱える文法なのでまずPromise単独理解しよう。

2025-08-28

anond:20250828161139

MySQLはやめて、SQLite にしよう。

JavaScriptもやめて、全画面ピュアHTMLにしよう。

これで、PHPのみで作れないか

販売管理システム

HTML + JavaScript + PHP + MySQLで作ろうとしている

やっぱりReactやVueを使ったほうがいいんだろうか

にしても作るのめんどくさいし上手く動かないしなにこれ

2025-08-25

dorawii@執筆依頼募集中

日曜コーダーにはジュニアにできなくてジュニアじゃないとできること(のぎりぎりのライン)がどんなものかもわかりません。

どんな処理が書けるかあるいは何万行クラスコードが書けたらジュニア卒業なのかね。

ちなみにブクマのconfirmページで読み込まれjavascriptも軽く一千万行超えてる感じで遠い世界の人が書いたコードなんだなと感じてしまうけど。

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

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

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKwbrQAKCRBwMdsubs4+
SKpiAP9i7fDQzeS/pkKQ/j0nND6q9PVpFJheotclJDeD4oURiAEA+5Ydaq0JG/XJ
6VgJojJXLT7gn7Mz/sws5t7fU6RCogE=
=pOol
-----END PGP SIGNATURE-----

2025-08-19

dorawii@執筆依頼募集中

もう少ししたら自動ブクマするコードができそうなんだけど、そのうえでコード公開に便利なように事前にpre記法に囲まれた部分はその外部の文字を適切にエスケープするコードをchatgptに指示して作ってもらった。

結構修正指示が大変だった。一時間ぐらい格闘。

ぶっちゃけなんでこれで動くのかはわからないので動くからゴーサインを出したというだけなのが情けない所。flushってなんだ?

使うときはchatgptにこのコード丸ごと書いて「ブックマークレット用に一行にして」と丸投げするのを要推奨。

ベースにした先人のコード

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

javascript:(function () {
function escapeHtml(text) {
return text.replace(/&/g, '&')
.replace(/</g, '&#60;')
.replace(/>/g, '&#62;')
.replace(/"/g, '&#34;')
.replace(/'/g, '&#39;');
}

var textarea = document.querySelector('textarea#text-body');
if (!textarea) return;

var lines = textarea.value.split(/\r?\n/);
var out = "";
var inPre = false;
var preLines = [];

function flushPre() {
// pre 範囲の中身を 1 本の文字列にまとめ、\n→<br>(末尾行は <br> なし)
var raw = preLines.join("\n"); // ここに物理改行は入るが…
var escaped = escapeHtml(raw); // 先にエスケープ
var html = escaped.replace(/\n/g, "<br>"); // 物理改行を <br> に置換(末尾に \n が無ければ末尾 <br> は付かない)
out += html; // out には改行を入れない
preLines = [];
}

for (var i = 0; i < lines.length; i++) {
var line = lines[i];

// >> / << だけの行は常にそのまま出力(pre 内に来るケースは想定外だが、念のため pre を閉じてから出力)
if (/^\s*(>>|<<)\s*$/.test(line)) {
if (inPre) {
flushPre();
inPre = false;
out += "</pre>";
if (i < lines.length - 1) out += "\n"; // </pre>\n(次に続きがあるときだけ)
}
out += line;
if (i < lines.length - 1) out += "\n";
continue;
}

// >| 行 → <pre>(直後に改行を入れない)
if (/^\s*\>\|\s*$/.test(line)) {
if (inPre) { // ネストは想定しないが、防御的に閉じる
flushPre();
inPre = false;
out += "</pre>";
if (i < lines.length - 1) out += "\n";
}
out += "<pre>";
inPre = true;
preLines = [];
continue;
}

// |< 行 → </pre>(直前に改行を入れない)
if (/^\s*\|\<\s*$/.test(line)) {
if (inPre) {
flushPre();
inPre = false;
}
out += "</pre>";
if (i < lines.length - 1) out += "\n"; // 連続ブロック時は </pre>\n<pre> になる
continue;
}

if (inPre) {
// pre 内はバッファに貯める(ここでは改行を出力しない)
preLines.push(line);
} else {
// pre 外は escapeHtml + 行末にだけ改行
out += escapeHtml(line);
if (i < lines.length - 1) out += "\n";
}
}

// 未閉じの pre が残っていたら閉じる
if (inPre) {
flushPre();
out += "</pre>";
}

textarea.value = out;
})();
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

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

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKRfOwAKCRBwMdsubs4+
SI5UAQDcNiyv5qUuMej1VLkGz4F5WyHeU1AIm7nUVHlx/gicnAEAgP07dK14IuTu
W3ZO7PRR71ENq9lJjYtawIYyMOc2cQk=
=okE4
-----END PGP SIGNATURE-----
ログイン ユーザー登録
ようこそ ゲスト さん