はてなキーワード: Joinとは
自殺配信が好き。週一くらいで自殺配信を巡るのが趣味になっている。
信頼していたカウンセラーにこの趣味を打ち明けたらドン引きされたのでこのゴミ溜めに書いて同胞を募りたい。
病んでるとか死にたいとかじない。ただ好きなだけ。
しいていえば自殺配信は「闇金ウシジマくん」「みいちゃんと山田さん」みたいな露悪ポルノ的面白さがある。あとザ・ノンフィンクション的な面白さも。
それと自殺によって人生が完結してるのもいい。これ以上その人間からコンテンツが発信されないのが安心する。
飛び降りでも勢いよく飛んだり、最後まで躊躇して滑るように飛び降りたりと幅広い。
海外では拳銃自殺も多いが、あれは日本人として食指がわかない。てかなんかずるい。画としてもつまんないし。
一番好きなのは首吊り配信で死んだあとに母親が遺体を見つけるのが好み。だるまとか、かさのんチャンネルとかのやつは名作で何度も見返している。
自殺配信を好きになったきっかけはだるまだった。母親が遺体を見つけて泣け叫んでいたのを聞いてハマってしまった。
SNSの流行のせいでああいう気合入った遺書を読めなくなったのが悲しい。
最近で好きなのはJoin Me in Deathを流しながらのやつでサビに合わせて飛び降りたのがこだわりがあってよかった。
ここ数年で一番知名度が高いであろう松戸自殺配信はチルい曲つけられて動画にされてさすがにポルノすぎる。
この記事で興味をもったひとRe:fileってサイトがおすすめです。
これはマイナーだけど見とけってやつとか、ここおすすめのサイトとかあったら教えてください。
みなさま、よき倫理を!
Strokess is one of India’s leading brands offering high-tech, durable, and top-quality Pickleball Rackets. Designed with advanced T700 Raw Carbon technology, our paddles deliver unmatched spin, control, and power for players of all levels.
Choose between our 16mm Control Core for precision and 13mm Power Core for explosive performance - trusted by players across India. Whether you play in Mumbai, Delhi, Haryana, Telangana, Gujarat, or beyond, Strokess Pickleball Rackets are crafted for durability, innovation, and performance.
Join India’s growing pickleball community with Strokess, where performance meets passion. Order online today or visit our flagship store in Vadodara for a hands-on experience with the best pickleball rackets in India.
懐かしいなぁ。10年以上放置してたんだけど、はてなってまだサービス続いてるんだね。
こんにちは。俺はかつてGREEとDeNAがソシャゲ戦争やってた時代に、ソフトウェアエンジニアとしてDeNAに入社したかつての新人だよ。
サービスのプラットフォーム争いを両社がやってる最中に一人だけハードウェア抽象化の研究やってた、当時としてはちょっと逸れた事やってたgeekだよ。
DeNA vs GREEの勝者はAlphabetとAppleになっちゃったね。それで良かったと思う、両社ともゲームしか見えて無くてエコシステムの設計は全然だったから。
当時はDeNAとGREEの新卒年収1000万が連日話題になってたね。俺も例に漏れずその帯域だった。
入社祝い金だけで奨学金完済出来るとは思ってなかったよ。それどころか3年目処に家買いなって当時の上司に言われたときはビビった。
そういう金銭感覚って当時は外資のバイオ系以外持ってなかったから、というか内外証券マンすら新卒は700届かなかった時代だから、なんかやばいとこきちゃったなって。
でも、持たなかったね。
知っての通り、2012年のJP広域エンジニアショックで優秀な人材は海外に散った。二次派生は2014だっけ、Dowangoの高専流入組がすごい流出したね。優秀だったのに勿体無い。
俺は全然優秀じゃないから先輩の後を追う事しかできなくて、というか何も考えずに、成り行きでアメリカに来た。当時のJTC仕草にうんざりしてた人たちも大体このあたりだね。
まぁ株式会社って大きくなりすぎると国籍宗教問わずJTC化するなってのは後々体験するんだけど。
それでもソフトウェアが世界を変えるという盲信から、ハードウェア抽象を社会実装してDockerにJoinしたり、AmazonにJoinしたりした。
学生の時から仮想環境を使い捨てることによる冪等性がもたらすソフトウェア開発体験がテスタビリティを向上させるっていう論文書いてたんだけど、まさにDockerだよね。
同じこと考えてる人が海の向こうに何人も居る!って楽しくなって、無我夢中でコード書いてた。同僚と深夜までブレストするのが楽しくて仕方なかった。
今ではリファクタリングとか最適化とかでblameすら探すの困難だけど、初期DockerのPoCコミッターだったのは割と自慢。
ソフトウェアエンジニアと平行して投資業もやって、フルコミットが難しくなったタイミングでAmazonにJoinした。ロックダウン前年の話。
AmazonはマジでJTCそのもの。ソフトウェアにどうコミットしたか、どう改善すると社会のエコシステムに還元できるかなんて考えない。チケットの消化。それだけが、評価基準。
JTC仕草にうんざりしてた人にとっては拷問なんだよ、これ。確かに給料は良いけど、良いのは給料だけ。マジで仕事したっていう感覚は無い。
その上コロナのロックダウンを皮切りに、部署の資金繰りを二転三転させたり、業績悪化を理由に人身御供を吊し上げて首にしたり、マジで狂っていった。
コロナ明け、Amazonの株価がゴリっと減ったのを契機に退職した。それでも仕事続けてれば多分資産は250万ドルに到達したと思う、今はその半分も無いけど。
でも社内政治で消耗してたらいずれ働くのが嫌になる。ソフトウェアを書けなくなる。Amazon離職を金脈捨てた咎人のように責め立てられたけど、そうなる前に判断できたつもりでいる。
そう判断して数年経ってる。が、生きてはいるし総資産は平行線だ。増えてないけどね。
アメリカに来るきっかけになった当時の上司は、かつてはてなで働いていた。2000年代のはてなは今のNvidiaみたいな輝きを放ってたらしい。
そういう話をしたなぁと思ってふとググってみたらまだサービスが残っていて嬉しかった。DeNA時代にやった事は全部畳まれてしまっているので。。
というのを昼飯食いながら思い返している。
10数年前の自分の書き込みがらき☆すたの放送に言及してて懐かしい。
10数年前の自分の書き込みが日本はオワコンと言っていて微笑ましい。
日本語の完全パングラムを作ってください。できたら、最後にプログラムで完全パングラムであることを確認してください
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
下に検証プログラム(Python)を実行し、各文字が1回ずつ現れることを確認しました。
# 日本語ひらがな46文字の完全パングラムを検証します from collections import Counter import pandas as pd import re # 対象とする文字集合(現代のひらがな46文字:ゐ・ゑは含めない) hiragana46 = list("あいうえお" "かきくけこ" "さしすせそ" "たちつてと" "なにぬねの" "はひふへほ" "まみむめも" "やゆよ" "らりるれろ" "わをん") # 提示する完全パングラム(ひらがな46文字を各1回ずつ) pangram = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" # ひらがなのみを抽出(安全のため) filtered = "".join(re.findall(r"[ぁ-ゖ]", pangram)) # 出現回数をカウント cnt = Counter(filtered) # 検証ロジック is_perfect = ( set(hiragana46) == set(filtered) and # 同じ文字集合か all(cnt[ch] == 1 for ch in hiragana46) and # 各1回ずつか len(filtered) == len(hiragana46) # 文字数一致(=46) ) # 集計表を作成 df = pd.DataFrame({ "かな": hiragana46, "出現回数": [cnt.get(ch, 0) for ch in hiragana46] }) from caas_jupyter_tools import display_dataframe_to_user display_dataframe_to_user("ひらがな46文字の出現回数", df) print("パングラム文字列:", pangram) print("総ひらがな数:", len(filtered)) print("ユニークひらがな数:", len(set(filtered))) print("完全パングラム判定:", "はい ✅" if is_perfect else "いいえ ❌")
総ひらがな数:46
😠💢💢💢💢💢💢💢
https://profile.hatena.ne.jp/dorawii_bukuma/
はてなのサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動でUI側の保存ボタンをクリックするという無難な方向に落ち着いた。
最初から後者の方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。
とにかくスクリプトを公開しておく。
@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
{
"username": "",
"password": ""
}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-----
もう少ししたら自動ブクマするコードができそうなんだけど、そのうえでコード公開に便利なように事前にpre記法に囲まれた部分はその外部の文字を適切にエスケープするコードをchatgptに指示して作ってもらった。
ぶっちゃけなんでこれで動くのかはわからないので動くからゴーサインを出したというだけなのが情けない所。flushってなんだ?
使うときはchatgptにこのコード丸ごと書いて「ブックマークレット用に一行にして」と丸投げするのを要推奨。
https://anond.hatelabo.jp/20240820150546#
javascript:(function () {
function escapeHtml(text) {
return text.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
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-----
一番右の上から3番目のテーブルをDeleteするのに一番左の一番上まで繋がってるのが見えると思うが
一番右の上から3番目のテーブルをDeleteするのに一番左の一番上まで繋がってるのが見えると思うが
* → 評価・主張(事実断定ではない)。「不十分かどうか」は価値判断の領域。
https://anond.hatelabo.jp/20250807221532
◉「AIを使った結果、大事な論点(民主制の正統性)がスルーされた」
とおっしゃるなら、多数決を採用する中で少数者を「価値中立」の立場で掬い上げるのは如何なる手法ですか。代替案をお聞きしたい。
そしてその手法に問題があるという指摘は上記増田に書きました。
民主制の正統性自体は 現在の日本国憲法が採用する原理であり、一意見としてスルーされるのは本当に残念です。
* → 一般的規範として妥当(AI活用の国際原則も人権・包摂を重視)。 ([oecd.ai][1], [unesco.org][2], [欧州議会][3])
で、チームみらいは価値中立だからこの考えには乗らないのですか?
◉「AIは価値中立のコピペだと『少数者を取り残さない』は難しい」
* → 一般論として妥当(AIは設計に価値前提が必要)。 ([oecd.ai][1], [OECD法令][6])
その価値とは人権尊重ではないのですか?やはりそこは価値中立ですか?
あなたの論調は常に人権尊重から一歩距離を置いているように感じます。(「一般論」「一般的」の多用)
◉「AIに尋ねたら『価値中立で政治にAIは危険、明示的な価値設計が必要』と返答」
* → あなたが引用したAIの回答=意見であり、事実そのものではない。
で、チームみらいはそのような意見には乗らずあくまで価値中立ですか?
◉同一視は飛躍では?
参政党は排外主義的言説が国内外メディアで問題視されており、イデオロギー色が強い右派ポピュリズムとして報じられている。他方、チームみらいの一次資料は透明性・立法の“見える化”・資金のオープン化等のテック・ガバナンス寄り。“似ている”と断ずるなら、具体的にどの政策・言動が重なるのかの提示が必要。
透明性の確保だけでは中身が右派ポピュリズム化することは避けられません。結局多数決なので。
もちろん手続きが透明化されることは右派ポピュリズム化を抑制する働きはあるでしょう。しかし、結局どの価値観に拠るかが(前述の増田でも述べましたが)なければただの多数決です。
また、前述の増田でも述べましたが、そもそも反体制的な意見は投稿しづらいという問題があります。
同党は“しゃべれるマニフェスト”や参加型ツールを人手の審査と組み合わせる前提を謳っている。運用設計次第で、人権指針を埋め込む余地はある。まずは設計の具体(データ公開、監査、異議申立て)で評価すべき。 ([TibSocpjqvxxipszbwui][9])
確かに運用設計次第で人権指針を埋め込む余地はあると思います。そこにはとても期待しています。
ただまずjoinの参加のハードルが下がらないことには話が始まらないです。
そして参加者がそれなりに憲法のリテラシーがある人でないとAIに適切なスクリプトを投げることもできません。
憲法のリテラシーが高い層は主にリベラル側にいるので、政府に対しては批判的です。
なので運用にはその人たちの参加のハードルを下げる必要があると思います。
台湾のvTaiwan等は長年の市民ハッカー文化と制度接続の蓄積が土台。日本で同モデルを実装するには、同等の制度・文化的前提が必要で、単純比較で断じるのは不正確。 ([Democracy Technologies][4])
それはその通り。そもそも大統領制でvTaiwanは諮問機関にすぎない。
joinはチームみらいとの切り離しが困難。前述の増田にも書きました。
◉”人権の明示的フレーム(影響評価・アクセシビリティ・異議申立て・監査)をどこまで制度に埋め込むかは今後の検証点。”
◉まず「不十分だと思う具体箇所」を3つだけ挙げてもらえますか?
そんなわけで
https://anond.hatelabo.jp/20250807221532
色々批判していますが、第二の参政党が生まれてほしくないだけです。
何か誤解されているようですが、エリート臭が気に食わないわけでもありません。
白雪姫の譬え話も何をおっしゃりたいのか全くわかりません。
支持者の批判者に対する苛烈な反応が気になる(個人的なただの印象です)。
お忙しい中レスポンスありがとうございます。是非頑張っていただきたいです。
まあ確かに「不十分」だけだとそれこそ不十分な指摘だから、今の所の自分の問題意識を呈示しておく。
一つ目は【政権与党に自分の政治信条を知られ、参加履歴が思想調査と化すリスクがある】 これは自分の観測範囲ではあまり言われていないので一つ目に挙げてみた。広い意味でのアクセシビリティの話なので話の流れ的には先に二つ目を挙げたほうが良かったかもだが。 議院内閣制を採用する日本では当然政権与党になる可能性がある。 となると、最悪自民、参政、みらいの三党連立政権ができたときに戦争ばっちこいの政府に政治信条を把握され、戦中の治安維持法のような法律ができたら思想信条から「赤狩り」をされる恐れがある。 となると、憲法が保障する秘密選挙の趣旨に反する恐れがある。 台湾ではあくまで諮問機関であり、そこの意見に法的拘束力はなく、更にこの機関の独立性が保障されているようだが、日本では一体化している、というかむしろその判断自体が党の政策となるから不可分。 そうなると参加履歴が思想調査と化すリスクがあり、政府に批判的な意見は呈示しづらくなる。
とりわけみらいは価値中立を謳っておりみらいはストッパーたり得るのかという部分が心配。
例えば5000いいねがあれば必ず政策として議論の俎上に上げるという方式として、現状で参政党支持者が押し寄せればあっという間にクリアするだろう。 二つ目の懸念点とも共通するが、台湾では有識者や利害関係者による諮問機関があって、そこが一応のストッパーとなり得る。
日本で同様のシステムを採用したとして、その選抜方式が定まっていないし、最近石破内閣の下ですら「日本学術会議」の改正案が通ってその独立性が弱められたばかり。人権の二文字を出しただけで左翼認定、外国人認定される昨今、日本学術会議も同様の批判を浴びて改正案が通ってしまった。その選抜方式こそが最後の砦だが、選抜の際に人権配慮という価値判断を挟むのか、挟むならそれをどう担保するのかが不明。
台湾ではその過程を透明化することで担保しようとしているようだが、過程が透明化されたからといってその結果が人権配慮されたものとなる保証もない。
この砦が崩壊するとそのまま政策として採用されてしまう。
二つ目は【アクセシビリティ】
これは最近ホッテントリにも入っていたし割と指摘する人が多いので問題意識は支持者の中でもあるとは思うが、忙しい人、身体障害者などはそもそもjoinできない。
joinできる人の意見しか反映されなくなる。そもそもわざわざ政党に意見を申すほど熱意のある人はなかなかいない。演説会に足を運ぶレベルに熱心な人は多くない。陳情に行ったことがある人などほとんどいないだろう。結果取り残される。
これも前述の有識者、利害関係者の諮問を通した上で政策として取り上げるという方法があるが、前述通りその選抜時に価値判断は挟まざるを得ないし、その価値判断が担保される保証もない。
I have a dream that one day on the red hills of Georgia, the sons of former slaves and the
sons of former slave owners will be able to sit down together at the table of brotherhood.
I have a dream that one day even the state of Mississippi, a state sweltering with the heat
of injustice, sweltering with the heat of oppression, will be transformed into an oasis of
I have a dream that my four little children will one day live in a nation where they will not
be judged by the color of their skin but by the content of their character.
I have a dream that one day, down in Alabama, with its vicious racists, with its governor
having his lips dripping with the words of "interposition" and "nullification" -- one day right
there in Alabama little black boys and black girls will be able to join hands with little white
(Verse 1 / Diggy-MO'風)
Yo 昔々 その遥か昔
育ったBoyは武闘派StyleでElectric
腹減ったら “黍団子(ギビダンゴ)” 片手に
「ついてきなキミ 俺の旅路」
Dog, Monkey, Pheasant──Join the synergy!
悪を討つぜ! 桃太のスキルで!
(Verse 2 / Bro.Hi風)
チェケラ!鬼退治は任しとけ
宝ごっそり Peaceに戻し
村人ハッピー 叫べ “おかえり!”
俺らのBeatで島が揺れる
鬼の城もBreakin’ down with flare
伝説超えたら “昔話” Back!
悪を討つぜ! 桃太のスキルで!
語り継げよ 千年先まで
Chrome系ブラウザには増田を快適に閲覧するための コンパクトな増田 という古い拡張機能があったが、Chromeの更新に対応し切れておらず、既にChromeには新規インストールできなくなってしまっている。Edgeにはまだインストール可能だが、いずれ対応しなくなる可能性が高い。
そこで、「増田のトップページで、言及エントリ(返信・トラバ)を一覧から除外することで、新規エントリだけを一覧できる」という機能に絞ってコンパクトな増田を再現、ついでにいくつかのおまけ機能を付与したスタイルシート(CSS)を今年の4月に公開していたのだが、今回改めて英文スパム対策を追加したので公開する。
これを導入するには Stylus という拡張が必要で、少し気軽さには欠けるが、増田以外にも活用できるので、この機会にぜひ導入してみてほしい。拡張をインストールしたあとは、下記のコードをコピペして新規スタイルとして導入する方法もあるが、スタイルシートを公開できる userstyles.world の増田CSSページ(※毎朝9:00直後はアクセスできない) から [Install] ボタンでインストールするほうが、自動更新にも対応するので便利かもしれない。
/* トップページで言及エントリを除外 */ /* via: 最近ファーストブクマカが静か https://anond.hatelabo.jp/20250326171302 */ h1/*はてな匿名ダイアリー*/ + #intro/*名前を隠して楽しく日記。*/ + #body div.section:has(h3 > a/*■*/ + a:not(.keyword, .edit)/*anond:YYYYMMDDhhmmss*/){ display: none; } /* うっかりクリックしがちなキーワードリンクを無効に */ a.keyword{ pointer-events: none; } /* 執筆時のテキストエリアを広く */ textarea#text-body{ min-height: 50vh !important; } /* 執筆時に特殊記号のヒント(疑似要素なので選択してコピペできないのがもどかしいけど) */ p.post-submit > span.explain::after{ margin-left: 1em; padding-left: 1em; content: "特殊記号: &[&] <[<] >[>]"; background: url(/images/common/outsite-wh.gif) 0 3px no-repeat; } /* スパム対策部分は下記URLの [Install] ボタンで事前確認できます(随時更新中) */ /* https://userstyles.world/style/23028/ */
なお、このCSSを適用すると、NGワードを含むこの増田自体も、増田トップページからは消えてしまう(この増田単体の個別ページなら閲覧できる)。
念のため、PC・スマホにCSSを適用する方法の解説にもリンクしておく。
PC: 【Stylus】ウェブサイトにCSSを適用できる拡張機能。自由にカスタマイズ! | ナポリタン寿司のPC日記
https://www.naporitansushi.com/stylus/
※ StylusはFirefox版もある https://addons.mozilla.org/ja/firefox/addon/styl-us/
iPhone: MaKeoverアプリでiPhone SafariのCSSをカスタマイズ!万博パビリオン予約結果一覧を見やすくする使い方
https://gintachan.com/makeover-app-css-change-safari-how-to/
Android: スマートフォン Android版FirefoxのCSSカスタマイズ Stylus の使い方・初期設定方法
(7/21追記) また、スパムが特に多い時は、1ページまるごとスパムということもあるので、PCなら uAutoPagerize (Chrome) や weAutoPagerize (Firefox) などの拡張を使うと、自動でページが継ぎ足されて快適に読み進められる。ただし、継ぎ足ししまくるとメモリ不足などでブラウザが重くなることがあるので、そうなったら page: 20 などのページ番号をクリックしてから続きを読もう。
また、スパム対策の簡易NGワードは、下記のスクリプトを使って抽出した「直近の増田の頻出キーワードリンク上位20件」から、誤判定しそうな line と user を除いた18件を用いた。10件だと生き残る英文スパムがあったので20件にしたが、それでもわずかに洩れはある。しかし日本語による真っ当な(?)増田の直近の誤判定はなかった。はてなキーワードのリンクだけを対象にしているので、URLにはこれらのキーワードが入っていても大丈夫だ。ただし、スパムのトレンドが変われば話は変わってくるかもしれないし、過去や未来の増田の誤判定は当然あるだろう。気になる人は前掲のCSSを行単位で編集してほしい。
// AutoPagerizeでまとまった数のページを読み込ませた後に実行するとよい。 (function(){ const keywords = []; // はてなキーワードの集計 document.querySelectorAll('a.keyword').forEach(a => { // 4文字未満は誤検出の可能性が高まるので除外 if(a.textContent.length < 4) return; let index = keywords.findIndex(k => k.keyword === a.textContent); if(index >= 0) keywords[index].count += 1; else keywords.push({keyword: a.textContent, count: 1}); }); keywords.sort((a, b) => a.count < b.count); // ランキング配列の出力 console.log(keywords); // CSS埋め込み用に上位キーワードのみをURIエンコードして出力 console.log(keywords.slice(0, 20).map(k => encodeURIComponent(k.keyword)).join('\n')); })();
anond:20250326171302 ←元はこの増田がきっかけでした。
anond:20250701194328 ←キーワード判定に踏み切る後押しとなりました。
ここで、「Aのデータと共に、関連するBとCのデータも取得したい」という一般的な要件を考えます。多くの人が最初に思いつくのは、`JOIN`を使ったクエリでしょう。
SELECT A.A_id, A.A_attrs, B.B_attrs, C.C_attrs FROM A JOIN B ON A.B_id = B.B_id JOIN C ON A.C_id = C.C_id WHERE A.A_id = 'some_a_id'; -- 特定のAレコードを取得する場合
このクエリは、B,Cの重複が大量発生し、さらに属性のデータサイズが大きい場合は非効率になる可能性があります。
データベースは`JOIN`を行う際に、結合条件に合うレコードを探すために複数のテーブルをスキャンしたり、一時的な結合結果を作成したりするオーバーヘッドが発生します。
特に、`JOIN`するテーブルの数が増えたり、それぞれのテーブルのレコード数が多かったりすると、このオーバーヘッドは顕著になります。
また、「JOIN乱用するなら第三正規形にする必要ないんだよな」という点も重要です。
第三正規形はデータの冗長性を排除し、データの一貫性を保つための設計原則です。
しかし、その結果としてデータが複数のテーブルに分散され、結合が必要になります。
もし結合による性能劣化が許容できないレベルであれば、データの一貫性を犠牲にしてでも、冗長性を持たせる(非正規化する)方がパフォーマンス上のメリットがあるというジレンマに陥ることもあります。
しかし、それは正規化のメリット(データの一貫性、更新時の不整合防止など)を失うことにもつながります。
主張されているのは、以下のようなアプローチです。
1. まずAのデータを取得する。
2. Aのデータから得られた`B_id`と`C_id`を使って、必要に応じてBとCのデータを個別に取得する。
-- ステップ1: Aのデータを取得 SELECT A_id, B_id, C_id, A_attrs FROM A WHERE A_id = 'some_a_id'; -- アプリケーション側で、上記で取得したB_idとC_idを元に、必要であれば以下のクエリを発行 -- ステップ2: Bのデータを取得 (例: Aから取得したB_idが'b1', 'b2'だった場合) SELECT B_id, B_attrs FROM B WHERE B_id IN ('b1', 'b2'); -- ステップ3: Cのデータを取得 (例: Aから取得したC_idが'c1', 'c2'だった場合) SELECT C_id, C_attrs FROM C WHERE C_id IN ('c1', 'c2');
この方法の利点は以下の通りです。
Laravelを使ってる奴けっこう多いと思うんだけど、みんなEloquentに満足してるの?
自分は正直、あれが賢いと思ったことが一度もない。触るたびにゴミ箱に捨てたくなる。
たとえば、belongsToとかhasOneみたいなリレーション。普通なら、JOINで一発で取りたいじゃん?
でもEloquentは基本的に別クエリでselectしやがる。
「with使えばいいじゃん」とか言ってるやつ、頭の中までEloquentに最適化されてんじゃねえのか。
いや、確かにwithでまとめて取れるけど、それでもJOINじゃなくて複数クエリ投げてるだけだからな?
リレーション多いDB設計になってくると、Eloquentの無能っぷりがどんどん見えてくる。
速攻でN+1問題にブチ当たって、「え?みんなこれで仕事してるの?」って本気で思うわ。
あと、Laravelのマイグレーションもゴミ。DB周り本当にゴミ。
自分もLaravelに初めて触れたとき(もう十年以上前か)「これが現代のPHPか」と思って浮かれてたけど、業務でLaravelを自ら選定したのは一度だけだわ。
引き継ぎ保守でLaravelを触るとめっちゃ気分が下がる。マジで滅びてくれんかな。
世のLaravel信者たち、「Eloquent最高!」とか言ってるけど、あんたたちもEloquentと同じレベルでバカになってないか?