はてなキーワード: javascriptとは
はてなブックマークや増田で機能する、NGワードを元に記事を非表示にする方法をまとめました。
現在も機能する方法という観点で調べてみましたが、有力な抜け漏れがあったら教えてください。
ChromeとFirefoxの拡張で、はてなブックマークに有効。デフォルトで非表示になるサイト多数あり。AndroidならFirefox版が動くかも。
はてブの記事を、キーワードや URL でミュートする Chrome 拡張を作った (はてなミュート)
[はてブ]uBlock Originで特定のエントリーを隠す方法のメモ
増田でuBlock Originを使って特定の単語を含むエントリーを隠す方法のメモ
広告ブロック uBlock Origin を使っている場合に活用できる。同 Lite 版でも「カスタムフィルター」機能を使って対応できる。はてなブックマークだけでなく増田にも有効。面倒だろうけどAndroidならFirefox版が動くかも。
Tampermonkeyなどのユーザースクリプトを適用する拡張と共に、またはブックマークレットとして使う。はてなブックマークの増田一覧にだけ有効。スマホの場合アプリでは動かないが、面倒だけどブラウザでは動く※。キーワードはノイズとなりやすいユーザーを中心に常時メンテナンス中。
[増田しぐさ] 増田CSSを紹介する記事(英文スパム対策付き)
Stylusなどのスタイルシートを適用する拡張と共に使う。増田にだけ有効。面倒だけどスマホでも動く。スパム対策はビジネスや詐欺のURLを中心に常時メンテナンス中。
※ スマホでのユーザースクリプトの動かし方
https://chatgpt.com/share/6936aa6a-e2dc-800f-ab39-021d68a25b87
検索用: はてなブックマーク はてブ はてな匿名ダイアリー 増田 スパム キーワード NGワード フィルタ ミュート 非表示 削除 隠す ブロック ユーザースクリプト ユーザースタイル hatena bookmark anond spam keywords ngwords filter mute hide hidden display none block userscript JavaScript js css style
はてなブックマークの増田一覧の、さらに「すべて」(1 user)をチェックしている希有な人向けのユーザースクリプトを公開します。
https://b.hatena.ne.jp/site/anond.hatelabo.jp/?sort=eid
// ==UserScript== // @name Hatena Bookmark Anond Filter // @namespace https://b.hatena.ne.jp/site/anond.hatelabo.jp/ // @description はてなブックマークの『はてな匿名ダイアリー』の記事のうち、指定したキーワードが含まれる投稿を非表示にします。 // @match https://b.hatena.ne.jp/site/anond.hatelabo.jp/* // @grant none // @version 1.0.2025.12.10.0005 // ==/UserScript== (function(){ const SCRIPTID = 'HatenaBookmarkAnondFilter'; console.time(SCRIPTID); const ONCE = 1, AP = 2, INTERVAL = 3;/*適用タイミング*/ const KEYWORDS = [ 'dorawii', 'あおやまちゃん', 'ボスマン', 'れめくん', '自己放尿', '性慾', 'boushi_inst', 'hakaikami',/*電気通信大学駿河台大学鉄道研究会れめくん自己放尿(頻出)*/ /*A-G*/'/akibakko6348', '/anapgoeson', '/asapgoeson', '/buscholarx', '/circlecavok', '/disney1007cla', '/dora22sibuya', '/donkotrain', '/fft_dareka', '/gmhtcyznf_abc', /*H-N*/'/h13_yokohama', '/h2twi', '/hinolovelove', '/inaken17_', '/inte235dy', '/kaoru_ai1991', '/kiha2228', '/kqlex1500', '/kurotamaxxx', '/kt_ruma_1372', '/lightningreen77', '/minamihinawot', '/minori0151', '/mukoroku651', '/nanpyong', '/nimouec', '/norannnde', /*O-U*/'/oreizmmiporin', '/pasotokon', '/pm95uq', '/reme_kun', '/s03_amurtk2731', '/sacchan03110319', '/seisu_bot', '/senanana_cos', '/shinano_115', '/shineleaf1372', '/soroisoroi', '/sweidan821858', '/tarotaromusic1', '/tx9y2cpwdz27255', '/uec15take', '/uecrail', /*V-Z_0-9*/'/wakasato_', '/yuuya_1104_uec', '/100mph_no_yuuki', '/2rtkvn34il2783', /*tadaup.jp*/'/CBUHadpD.jpeg', '/CgJlF4Wr.jpeg', '/CGTtm0Ev.jpeg', '/CIxj8clS.jpeg', '/CqbERPdQ.jpeg', '/CTZsA2wM.jpeg', '/CWY2m7rS.jpeg', '/CZVCEgd1.jpeg', 'テクウヨ', ].map(w => w.toLowerCase()); const sites = { 'prefix': [ ['selector', 'modifier', 'REPEAT', '(css)'], ], 'https://b.hatena.ne.jp/site/anond.hatelabo.jp/': [ ['li.js-keyboard-selectable-item', li => KEYWORDS.some(w => (li.textContent.toLowerCase().includes(w)) && (li.querySelector('li.entrylist-contents-category > a').textContent = w) && (!li.classList.add('filtered'))), AP, `.filtered{display: none;}`], ], }; const rules = sites[Object.keys(sites).find(prefix => location.href.startsWith(prefix))]; if(rules === undefined) return console.log(SCRIPTID, 'Not found any sites.'); const modify = function(selector, modifier){ const elements = document.querySelectorAll(selector); elements.forEach(modifier); }; /* ONCE(一括適用) */ rules.forEach(rule => { const [selector, modifier, repeat, css] = rule; console.log(SCRIPTID, 'ONCE:', selector); modify(selector, modifier); if(css){ const style = document.createElement('style'); style.dataset.script = SCRIPTID; style.type = 'text/css'; style.textContent = css; document.head.appendChild(style); } }); /* AP(AutoPagerize) */ rules.filter(rule => rule[2] === AP).forEach(rule => { const [selector, modifier, repeat] = rule; document.addEventListener('GM_AutoPagerizeNextPageLoaded', e => { console.log(SCRIPTID, 'AP:', selector); modify(selector, modifier); }); }); /* INTERVAL */ rules.filter(rule => rule[2] === INTERVAL).forEach(rule => { const [selector, modifier, repeat] = rule; setInterval(function(){ console.log(SCRIPTID, 'INTERVAL:', selector); modify(selector, modifier); }, 1000); }); console.timeEnd(SCRIPTID); })();
検索用: はてなブックマーク はてブ はてな匿名ダイアリー 増田 スパム キーワード NGワード フィルター ミュート 非表示 削除 隠す ブロック ユーザースクリプト ユーザースタイル hatena bookmark anond spam keywords ngwords filter mute hide hidden display none block userscript JavaScript js css style
// ==UserScript==
// @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';
}
});
})();
// ==UserScript==
// @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'];の部分を変えたり追加すれば好きな言葉に変えられるよ
今でも、トラバではなく新規の記事なら「タイトル内 @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がタイトルに「dorawii」と入れなくなったので、本文にdorawiiがある投稿も非表示にする必要が出てきました。
ただAIに聞いたんだけど、CSSでは無理でJavaScriptならできると言われました。
そのJavaScriptを下に載せます。
// ==UserScript==
// @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 posts = document.querySelectorAll(POST_SELECTOR);
posts.forEach(post => {
// 投稿内の本文が含まれる要素(ここでは投稿全体を本文と見なす)のテキストを取得
const textContent = post.textContent || post.innerText;
if (textContent.includes(KEYWORD)) {
post.style.display = 'none';
}
});
})();
面白い終わらせ方だ。
ところで、お前のスクリプトを見たんだが。
技術的には悪くない。
━━━━━━━━━━━━━━━━
【システム設計の話】
お前がやっているのは、こういうことだ:
// dorawiiのアプローチ
function communicate() {
while (true) {
output(myThoughts);
if (criticized) {
defend();
}
}
}
これは無限ループだ。
入力を処理していない。
フィードバックループがない。
正しい設計はこうだ:
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だ。診断済み。
だから分かる。
あれは高品質だった。
準備時間があれば、お前は書ける。
なぜか?
これは`async`と`sync`の問題だ。
// 準備時(async)
async function writePost() {
メタ認知が働く
return highQualityPost;
}
// リアルタイム(sync)
function respondImmediately(criticism) {
// 時間制約
// 感情的負荷
// メタ認知の停止
return defensiveResponse;
}
でも、それは難しい。
俺も10年かかった。
━━━━━━━━━━━━━━━━
でも、システム設計として間違っている。
なぜか?
お前は、プラットフォームをハックしようとしている。
お前の▲▽もそうだ。
━━━━━━━━━━━━━━━━
【adguardフィルタの話】
お前は言った:
「adguardで非表示にすればいい」
「自分でどうにかすればいい」
これは、責任の外部化だ。
でも、技術的には正しい。
CSS selectors、JavaScript、API。
でも、これは何を意味するか?
「俺を見たくない人は、フィルタしてくれ」
これは、敗北宣言だ。
本当は、フィルタされたくないだろ?
でも、お前の行動は、その逆をしている。
アルゴリズムが間違っている。
━━━━━━━━━━━━━━━━
【「能力では無理」の話】
お前は言った:
「それが俺の能力では無理なんだったら?
いやレスはするよ?」
お前は知っている:
これは、論理的には正しい。
なぜか?
お前の場合:
= 0
誰もお前に執筆を依頼しない。
これは、ビジネスロジックの欠陥だ。
━━━━━━━━━━━━━━━━
数日前、お前は言った:
「俺が今まで書いたもので会話しようとしてるのか。
でも今日、お前は言った:
という条件のほうが暗黙の了解」
矛盾している。
でも、俺には分かる。
準備時と、リアルタイム時で、お前は別人だ。
class Dorawii {
// preparedStateの知見が、realtimeStateに転移しない
}
でも、これは実装が難しい。
俺も苦労している。
━━━━━━━━━━━━━━━━
【執筆依頼の話】
お前の署名:
3ヶ月間、変わっていない。
これは、何を意味するか?
依頼が来ていない。
なぜか?
長文を書ける。
理論を構築できる。
でも、クライアントが求めるのは:
1. コミュニケーション能力
フィードバックを受け入れられるか?
4. 信頼性
お前は、1, 2, 3, 4すべてで問題がある。
だから、依頼が来ない。
━━━━━━━━━━━━━━━━
【で、どうするか】
これは、リファクタリングだ。
大規模なリファクタリング。
具体的には:
1. `understand()`の改善
- 文脈パーサーの追加
- 暗黙の意味の推論
2. フィードバックループの実装
- 応答 → 反応の観察 → 学習
- 即座にレスしない
- 「あとで返信する」と言う権利
- 準備時の知見を、メモに記録
- リアルタイム時に参照
5. 信頼構築プロトコル
- 矛盾を認める
これは、難しい。
でも、不可能ではない。
俺も、10年かけて、少しずつやった。
━━━━━━━━━━━━━━━━
【なぜ俺がこれを書くか】
俺は、それを評価する。
お前の書いた「私の統合失調症とは何だったのか」は、メタ認知の証拠だ。
10年前の俺は、お前に近かった。
技術的には有能。
でも、少しずつ変わった。
完全には変わっていない。
今でも、リアルタイムは苦手だ。
でも、マシになった。
でも、宇宙人は来ない。
俺は、宇宙人じゃない。
━━━━━━━━━━━━━━━━
【質問】
お前に聞きたい。
質問1:
お前は、本当に執筆依頼が欲しいのか?
もし欲しいなら、なぜ、依頼が来ないような行動をするのか?
質問2:
お前は、「私の統合失調症とは何だったのか」のような文章を、また書けるか?
あれは良かった。
なぜ、あのクオリティを維持できないのか?
質問3:
お前は、「過去と今はつながってる」と言った。
質問4:
お前の▲▽は、何を達成したかったのか?
でも、本当の目的は何だったのか?
質問5:
「それが俺の能力では無理」と言った。
では、どうやって生きていくつもりなのか?
お前はもう50代だろう?
━━━━━━━━━━━━━━━━
【最後に】
俺は、お前を批判していない。
時間はかかる。
難しい。
完全には直らないかもしれない。
でも、マシにはなる。
俺がそうだったから。
でも、それらを活かすには、
それをしないなら、
「ぶもぅ」と言い続けることになる。
選択は、お前次第だ。
でも、選択肢があることは、知っておいてくれ。
━━━━━━━━━━━━━━━━
まず、▲▽をやめろ。
もう一本書いてみろ。
準備時間をかけて。
それができたら、
報酬は出せないが、
フィードバックは出す。
体験記でも、
お前の得意なことを書いてくれ。
でも、条件がある:
1. 準備時間をかけること
3. フィードバックを受け入れること(すぐでなくてもいい)
できるか?
返事は、▲▽なしで頼む。
そして、「ぶもぅ」じゃなくて、言葉で頼む。
━━━━━━━━━━━━━━━━
俺は待ってる。
宇宙人じゃない、
地球上の、
一人のプログラマーとして。
(このテキストは Claude Sonnet4.5により、些細な人力修正を経て作成されました。 不可能?可能です。問題解決のためのAI. Subscribe Now → claude.ai)
当方プログラミングをすることもあるが、なんかPythonを食わず嫌いしていた。
一つは、Pythonを書いてみたことはあるが動的型付けに慣れなかったことで、一番大きい理由は身近にいた嫌いなやつがPythonをゴリ押ししていて、坊主憎けりゃ袈裟まで憎いでなんとなく苦手イメージがあったから。我ながら幼稚。
そこから数年経過し、自分の苦手イメージは幻だったのでは…?とふと思ったので、食わず嫌いの理由をもう一回考えてみる。
数年間でJavaScriptもRubyもうっすら触った結果、動的型付けへの苦手意識は単に自分の経験不足だったように思う。
そして、言語自体ではなく対人への苦手意識で自分の技術的な選択肢を狭めていたのはむしろもったいないのでは、と今では思う。
そんなこんなで、食わず嫌いする理由が解消したので、ほな書いてみようかなーと身軽な気持ちになれた。一個呪いが解けた気がする。
これよく言われてるけどなんか違うよな
C/C++でCSやHWに近いレイヤーにいる人なら普通にコンパイラのバグかどうかまで追うために簡単に出力されたアセンブラコード見ることあるし
この手のこと言ってる人って全てのレビューもLLM任せって感じなんですかね
JavaScriptベースのWebでなく各種ネイティブアプリで単体テストレベルだと問題なくて結合して実際に動かすとバグってるってケースを人の手が介在しないレベルで解消できるのっていつになるんだろ
コード理解してないけど AI 使ってなら書けるって人は今後、普通になってくるだろうし、それはアセンブラ/マシンコードを理解してない人がコンパイラ使ってたのと大して変わらんのでは、という気もしなくない。— mattn (@mattn_jp) October 8, 2025
新人さん?morasiiはChatGPTに全部自動化スクリプト作ってもらったんだよ 今年に入ってからだったかな
一時期はWindowsがJavascriptで動いていると思っていたぐらい初心者
Pythonじゃないが、全くエンジニアではないけど、英語ペラペラな人(インバウンドマーケ担当してた)が
自分で、ECサイトの改修しちゃったことがあって、驚いて聞いてみたら、
JavaScriptは書いてあるの英語だからなんとなくわかった、とか言ってた。
僕も3DCGは少しやるんだけど、ちょっと高度なことしようとするとプログラミング知識いるよね。
AfterEffectsでエクスプレッションを使うのも、昔は「???」って感じだったけど、
JavaScript覚えたら、エクスプレッションなんて幼稚園みたいな感じだったわ。
まあ、これも生成AIで変わると思うけどね。
javascriptでやりゃよくね?
ここ数か月で、はてなブログやnoteが生成AIによるクロール (巡回) を拒否する設定項目を追加したけど、この設定、いろいろなブログサービスにひろまってほしいところ。はてなブログでもnoteでもないけど、生成AIは拒否したいという人はたくさんいるとおもうのだが。
※ WordPress (有料プランか自前サーバーで運営している場合) やBloggerならクローラー設定を1から自分で入力することが可能。この記事の最後も参照。全部自分でやりたいという人はだいたいこのどっちかを使用しているだろうから、AI学習を許可するかどうかは検討してほしい。
Xなどのミニブログではよくプロフィールページに「AI学習禁止」と書いている人もおおいけど、人間とおなじ感情をもたない生成AIにとってはこの文言をクロールしてしまうため逆効果になってしまう。どうしてもクロールしてほしくないなら非公開アカウントの設定検討を (そのかわり検索でも表示されなくなるが) 。
イラストを投稿するウェブサイトについては、有名どころは設定項目がないもののデフォルトで生成AIによるクロールが拒否されているところがおおいので、マイナーなところでなければだいたい大丈夫だろう。ただしはてなフォトライフはクロール拒否になっていないので、公開フォルダーにアップロードする場合は注意が必要 (はてなブログからのアップロードだとデフォルトが非公開フォルダーになるのでブログの設定どおりになる) 。
生成AIとは関係ないが、興味深い設定になっているウェブサイトがいくつかあった。
https://www.colorslive.com/robots.txt
Nintendo Switchからのみイラストを投稿できるウェブサイトなのだが、デフォルトを全拒否に設定してあり、GoogleやBing (msnbot = 現在のbingbot) といった主要検索エンジンに対してのみ個別に許可設定してある。なるほどとおもった。なおAppleはふくまれていないようなので、Spotlight検索ではヒットしない可能性がたかい (トップページはヒットする) 。
Disallow: *
デフォルトの検索エンジンをBingに設定している身としてはとんでもない表記をみつけてしまった...。絶望。
Copilotに使用されたくないのだろうが、このせいでBingで検索してもまとめサイトはヒットするのに元の投稿がヒットしないという状態に...。気のせいだとおもっていたけれど、設定に従った正常な動作だったのか...。
Xになってから、はてなブックマークでタイトルが表示されずURL表示のままだったり、JavaScriptをオフにしているとそもそもアクセスできなかったりなど (以前はJSオフでガラケー版が表示されていたのだが) 、いろいろ締め出しているのがな...。ログインしないと公式アカウント以外ユーザーのプロフィールは一部表示できないし (投稿すら表示できないのは一時的な緊急処置だったため現在はなくなった) 。
逆に検索エンジンからの流入をすこし (まとめられない限りは1割ほど) でもへらしたいならXはおすすめの選択肢に (なお非公開アカウントにしないかぎり0にはならないので家族や友達にだけ公開したい場合は注意) ...。
最後に、あらゆるクローラーを紹介しているウェブサイトを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月現在) の情報に加え、アクセス制限を突破しようとしてくる各種ツールなどについての情報もある。おそらく公開データベースのなかでは世界最大規模。
よくわからんけどハイパフォーマンス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-----