「T-con」を含む日記 RSS

はてなキーワード: T-conとは

2025-12-09

はてなブックマーク増田一覧向けNGフィルタ

はてなブックマーク増田一覧の、さらに「すべて」(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

2025-10-25

インプレス系の記事概要欄がはてブに反映されない件

気にしてるの私だけかもしれないけど、インプレス系(*.watch.impress.co.jp)の記事だけ、はてなブックマーク記事一覧で概要欄が空欄になってしまってるのが昔から気になっていたので、両社に要望してみた。

例:

はてなブックマーク - 人気エントリー - テクノロジー

https://b.hatena.ne.jp/hotentry/it

(画面右上に3つ並んだビュー選択ボタンから、真ん中の概要付きビューを選ぶと影響が顕著)

(私はこのビューは使ってないけど、独自に当ててるスタイルシート概要欄の内容を活用している)

要望内容:

はてなブックマーク - はてなブックマークへのフィードバック
https://b.hatena.ne.jp/-/feedback/hatena_bookmark

インプレス系のメディアにだけ、はてブホットエントリ一覧などのページで p.entrylist-contents-description が空欄になってしまうのが気になっていますインプレス記事のヘッダに

meta[property="og:description"]
meta[name="twitter:description"]

などは存在するのに、単純な

meta[name="description"]

が存在していないことが原因でしょうか?
存在しない場合は、meta[property="og:description"] などの妥当候補順次探しに行ってもいいのではないでしょうか。

(別途、インプレスにも meta[name="description"] を用意するよう要望してみます)
(そもそも、p.entrylist-contents-description が空欄になってしま理由がこれなのかどうかも自信がありません)

2025-09-02

uBlock Origin記事フィルターYahooニュースはてブYoutube

webサービスのほうでブロック機能を用意してほしい所ですが、実際のところ期待できないというのが正直なところです。

また、サービス毎にブラウザ拡張を用意するのも、それはそれで面倒だし複雑なので、uBlock Originのマイフィルターブロックできるようにしてみました。

Firefox142での動作確認しています


NGワードURLあくまで参考です。



Yahooニュース記事

! 2025/00/00 https://news.yahoo.co.jp

news.yahoo.co.jp##a:has-text(/堀江貴文|ホリエモン|西村博之|ひろゆき/)


はてなブックマーク記事

! 2025/00/00 https://b.hatena.ne.jp/

b.hatena.ne.jp##.entrylist-contents:has-text(/堀江貴文|ホリエモン|西村博之|ひろゆき/)

b.hatena.ne.jp##.entrylist-contents:has(a:is([href*="anond.hatelabo.jp/"], [href*="togetter.com/"]))


Youtube

タイトルキーワード

! 2025/00/00 https://www.youtube.com/

! [YouTube] Title Keyword Filter

youtube.com##:is(ytd-rich-item-renderer, ytd-video-renderer, ytd-compact-video-renderer, ytd-grid-video-renderer, ytd-playlist-panel-video-renderer):has-text(/堀江貴文|ホリエモン|西村博之|ひろゆき/)

チャンネル

! [YouTube] Channel Filter

youtube.com##:is(ytd-rich-item-renderer, ytd-video-renderer, ytd-compact-video-renderer, ytd-grid-video-renderer):has(#channel-name:has-text(/堀江貴文|ホリエモン|西村博之|ひろゆき/))

2025-07-02

anond:20250701235606

ありがと!さっそく2行追加するわ!

body#page-edit-confirm div.section a.keyword[href$="/dorawii"],

body#page-edit-confirm div.section a.keyword[href$="/PGP"],

2025-02-16

anond:20250216152548

”⼆年少々前に、イギリス政府アダム・スミスコナー起訴しました。”

ちなみに22年前のunborn son.を「生まれぬ息子」と訳すのはいかがなものか。

 

英国退役軍人であるアダム・スミスコナー氏(51歳)は、2022年11月イングランド南部ボーンマス中絶クリニック近くで数分間黙祷を捧げた際、公共空間保護命令( Public Spaces Protection Order PSPO)に違反したとして起訴されました。

 ttps://adfinternational.org/en-gb/news/guilty-army-vet-convicted-for-praying-silently-near-abortion-facility

このPSPOは、2022年10月ボーンマスクライストチャーチプールBCP評議会によって導入され、中絶サービスに関連する問題について、抗議や賛否の表明を禁止するものでした。”

PSPOの全文はこちら ttps://www.bcpcouncil.gov.uk/Assets/Crime-safety-and-emergencies/PSPOs/Ophir-Road-and-surrounding-area-Public-Spaces-Protection-Order-PSPO.pdf

スミスコナー氏は、22年前に自身が関与した中絶で失った息子のために祈っていたと述べています

ttps://www.standard.co.uk/news/crime/bournemouth-christchurch-uk-parliament-army-british-b1188699.html

ttps://www.independent.co.uk/news/uk/crime/christian-bournemouth-christchurch-uk-parliament-army-b2631603.html

2024年10月16日、プール治安判事裁判所は彼に有罪判決を下し、執行猶予付きの判決と9,000ポンド(約170万円)の裁判費用の支払いを命じました。

https://www.christiantoday.co.jp/articles/34158/20241023/man-convicted-for-praying-silently-near-abortion-clinic.htm

クリスチャントゥデイ日本2024年10月23日

中絶クリニックの緩衝地帯黙祷ささげた男性有罪判決 英国

スミスコナーさんを弁護したキリスト教法曹団体「ADFインターナショナル英国支部英語)のジェレマイア・イグヌボル上級法律顧問は、「非常に大きな影響を持つ法的転換点」だとして、次のように述べた。

 

今日、ある男性有罪判決を受けましたが、それはイングランドの公の通りで彼が考えたこと、つまり神への祈りの内容を理由としたものでした。言論思想の自由という基本的自由をないがしろにするという点において、英国はこれ以上ないほど落ちぶれてしまいました。私たち判決をよく検討し、控訴するかどうかを検討しています人権は全ての人に与えられているものであり、中絶に対する考え方とは関係ありません」”

Human rights are for all people – no matter their view on abortion.”

()

2025-01-13

最近知った言葉

海外ケモナー界隈のwikiに書いてあったんだが、PCD(Post-con depression)って言って、デカイベントの後にうつになることを言うらしい

https://en.wikifur.com/wiki/Post-con_depression

それ聞いて、「なんかシュガーソングとビターステップの2番Bメロ歌詞みたいやな……」と思った

囃子のその後で 昂ったままの人 泣き出してしまう人

多分同じだろう でも言葉にしようものなら稚拙が極まれ

https://www.uta-net.com/song/186190/

2024-12-08

美味しいケーキランキング

【前置き】

はてな匿名で書く内容なのかというのはともかく、私が美味しいと思うケーキ屋・パティシエを書き出して、順に並べてみた。私は製菓料理について専門的な教育を受けたこともないし、生業としてフードライターをやっているわけでもない。仕事柄、堅い文章を書くことにはある程度慣れているけれど、エッセーのような柔らかい文章を書いた経験ほとんどない。

このランキングを作ってみようと思ったのは、怪我をして外を歩く気になれず暇だったからというのが一番の動機だけれど、ランキング作成過程で「あの時のあのケーキは本当においしかったな」と幸せな思い出を振り返ることができたし、「自分はこういうケーキを美味しいと思っているのか」という傾向を何となく知ることができて面白かった。

このランキングは、私の個人的な好みに基づいて、偏差値表のような形で作成している(もちろん偏差値のものは表していない。)。偏差値50を超えるケーキ基本的にどれも文句なく美味しいし、そこまで確固たる優劣があるとは思わない。特に偏差値60-65のレンジはその日の気分によって順番が変わるだろうと思う。比較的趣向が近い友人に意見を聞いても、結構な食い違いがあったので、本当にその人の好み次第ということなのだと思う。また、日頃からメモを取っているわけでもなく、思い出した順に書きだしただけなので、ランキングに載っていて当然なのに書き落としているものもたくさんあると思う。

そんな感じで免責みたいなものを書き連ねたところで、ランキングをご覧ください。

【美味しいケーキランキング

80: Maxime Frédéric (Le Tout-Paris, Maxime Frédéric chez Louis Vuitton) (Paris)

79: Matthieu Carlin (Butterfly Pâtisserie at Hôtel de Crillon) (Paris), François Perret (Ritz Paris Le Comptoir) (Paris)

78:

77:

76:

75: Mori Yoshida (Paris), Cedric Grolet (Paris)

74:

73: [xxxxxxxxxxxx] (京橋)

71:

70: LESS (恵比寿)

69: ASSEMBLAGES KAKIMOTO (京都), pàtisserie Tendresse (京都)

68:

67:

66: FOBS (蔵前), Les Alternatives (東小金井), Pâtisserie K-Vincent (神楽坂)

65: La Pâtisserie Cyril Lignac (Paris), Equal (幡ヶ谷), LE CAFE DU BONBON (代々木八幡)

64: Libertable(赤坂), grains de vanille (京都), Ryoura (用賀), Dining 33 Pâtisserie à la maison (麻布台), おかしうっちー (北参道)

63: Yann Couvreur Pâtisserie (Paris), La Pâtisserie Ryoco (高輪), Fleurs d’été (代々木上原), Harmonika Kyoto (京都), sweets garden YUJI AJIKI (神奈川), Sweet Rehab (NY)

62: PIERRE HERMÉ PARIS, AU BON VIEUX TEMPS (尾山台), Paris S'éveille (自由が丘), AIGRE DOUCE (目白), CONFECT-CONCEPT (稲荷町), Paris S'éveille (自由が丘), AIGRE DOUCE (目白),

61: équilibre (不動前), Pâtisserie ease (日本橋), 銀座和光 (銀座), Palace Hotel Tokyo (大手町),その他美味しいホテル系, Asterisque (代々木上原), a tes souhaits! (吉祥寺), N'importe quoi (京都)

60: Avranches Guesnay (春日), Taisuke Endo (学芸大学), Préférence (新中野), feuquiage (調布), PÂTISSERIE ASAKO IWAYANAGI (等々力)

[...]

55: 千疋屋総本店, Henri Charpentier, その他デパ地下系・工場

[...]

50: LAWSON, Lady M (NY)

[...]

45: Lysee (NY)

[...]

40: Whole Foods Market

【いくつか補足】

パリには複数回行ったことがあるが、パリケーキは本当に美味しく感じた。もちろん遠路はるばる補正思い出補正もあるのだと思うけれど、単純に値段がとても高いので、惜しむことなく良い材料を使えているのではないかと思う。パティシエ社会的地位が高いらしいので、その結果パティシエが制約なしで好きなようにケーキを作れる、ということもあるのかもしれない。

Maxime Frédéricは有名人だし、本当にどのケーキ(あと、ややテーマ外だけれど、レストランデザートも)も美味しい。いつかホテルシグネチャーレストランにも行ってみたい。Matthieu CarlinやFrançois Perretは、少なくとも私のアンテナでは情報がたくさん入ってくる感じではないけれど、複数ケーキで感動した。

Cedric GroletはMaxime Frédéricよりも有名人で、逆張りしてみたくはなるのだけれど、フルーツの使い方が独創的で、まあ確かに美味しい。あの値段であれだけの人を集められるのは、SNS映えだけでは説明できないと思う。

[xxxxxxxxxxxx]は、フルーツ真摯に向き合っていることや高い洋菓子基礎力に裏打ちされていることが素人の私にも伝わってくるような気がする。接客は独特で毎回緊張するけれど、敬意をもって謙虚に臨めば、丁寧に遇してくれるし、嫌な思いをしたことはない。職人ってそういうものなのかな、と思っている。

LESSは、以前はnomaやINUAみたいな雰囲気実験的なケーキが多くて毎回面白かったのだけれど、最近はそれよりは分かりやすケーキが多くなった。もちろん、それらもとても美味しい。たまに昔のLESSを食べてみたくなるときもある。

タンドレスは、もともと酒やムースとかのイデミスギノ的なものがあまり得意ではない私でも、これは凄いと感じる何かがある。私では理解が及ばないというか、置いて行かれている感じもする。

FOBSは一般的にはすごく高く評価されている感じはしないものの(ゴーフレットはとても有名)、ここのショートケーキ特に美味しいと思う。卵や牛乳などの素材がシンプルによくまとまっている感じがする。判官贔屓的なものが入っているかもしれないけれど。

Alternativeは夏の焼き菓子イベントタルト類が全て美味しい。Equalチーズケーキは瑞々しくてチーズ香りがよく整っていて、これより美味しいチーズケーキはなかなかないと思う。「フランス菓子道」の真ん中・正当を通ってきたかはよく分からないけれど、個人的な好みに合っている。

Ryouraは街のケーキ範疇で、傑出して美味しい。うっちーシグネチャーショートケーキ生クリームミルク感は特徴的。

リョーコは(伝統的という意味ではなく)ちょっと古い感じがするけれど、分かりやすく美味しいと思う。セブンイレブンとのコラボレーションは。。カーヴァンソンやリベルターブルも私の中では同じような枠に入っているのだけれど、こちらの方が個人的な好みに合っている(何でだろう)。

étéをどう位置づけるかは難しかった。テンションの上がる見た目だし確かに美味しいのだけれど、洋菓子としての工夫・洗練を感じるかというと、そういうことを目指して作られたものでもないような気がする。

ピエールエルメのイスパハンは、なんだかんだといってやっぱり名作だと思う。ホテル系のちゃんと作られたケーキは、やや割高な感じはするものの、総じてしっかり美味しい。

easeは個人的な好みにはあまりハマらないけれど、美味しいし評価されていることもわかる。アステリスクアテスウェイ家族で食べるのにとてもよいと思う。ナンポルトクワリンゴタルトは一つの発明だと思う(別途元祖があるのかな)。パリヴェイユフランス菓子の正当という感じで間違いなく美味しいのだけれど、個人的に好きなケーキとは少し違う(パン焼き菓子はすごく好み)。

アメリカでウケているケーキは、個人的にはそこまでヒットしなかった。Sweet Rehabは見た目もきれいですごく高く評価されているけれど、高額すぎる点を措いても、評価に見合うほどではない気がする。

店名が大文字だったり小文字だったり「pàtisserie」が付いたり付かなかったりするのは、適当google検索した結果をそのまま引き写しているだけなので、正確ではないかもしれない。

こういう番付モノは、それ自体批評対象として「それは違う、こっちの方が上だ」等々とケチをつけることに楽しさがあると思う。コメントをいただけたら嬉しい。

追記1209】

記事を公開した後、思ってもいなかった程たくさんの方に見ていただいて、色々なコメントをいただいた。一つ一つどれもありがたいと思っている。

書き忘れていたお店を何個か思い出したので、適宜ランキングに追加してみた(Asako Iwayanagi, AU BON VIEUX TEMPS, CONFECT-CONCEPT, Dining 33 Pâtisserie à la maison, équilibre, Libertable, sweets garden YUJI AJIKI, Patisserie Porte Bonheur)。また、説明部分にもいくつか加筆をした。加筆するにあたっても、既に順番を書き換えた方がいいのではないかという気がしてくるから、やっぱりその時の気分次第の順に過ぎないんだなと分かった。

偏差値表のような形」というのが分かりにくいというコメントがあった。イメージしていた偏差値表は、例えばこんな感じのものだった。

https://www.syutoken-mosi.co.jp/application/hensachi/upload/dansi202412.pdf

もちろん、今回は母集団正規分布かもよく分からないし平均や分散を求めて何かしているわけではない。あくま偏差値「風」ということでご容赦いただきたい。今回は、偏差値50の重責をローソンに担ってもらった。個人的偏差値(風)60以下かなと思ったものは、角が立つの基本的には取り上げなかった(NYいくら角が立っても大丈夫。)。

神奈川千葉埼玉などの郊外大阪神戸のような別の都市圏はあまり開拓できていないので、いつか掘り下げてみたい。

中野のMORI YOSHIDAについては、どう取り上げるか迷った。例えば、パリで食べたババトロピックミルクが入ったスポイトのようなものが刺さっていて、それを注入して食べるのがとても美味しかった記憶がある。中野の方はそうはなっていなくて、少なくとも何らかの「違い」はあるのだと思う(見た目に明らかに分かるもの以外も多分。)。ただ、だからといって劣るとかいうわけでもないし、でもそうすると今度は、中野のMORI YOSHIDAとLESSに大きな差があるかのようになるけれど、本当にそうなのかというとよく分からない。突き詰めていくと、遠路はるばる補正思い出補正を数値化することにもつながりそうで、それは楽しい思い出のためにも止めておいた方がよいかなと思い、取り上げないことにしていた。

2024-08-15

スターの多い順にブコメを並び替える

FANZAの検索結果から熟女を除外するブックマークレット がうまく動いたので、気を良くしてはてなブックマークコメント欄スター数順にソートするブックマークレット作りました

作った動機は、「注目コメントに入りきれなかったちょっといいコメント」をサクサク探したいから。結果として建設コメント順位付けモデル無効化していますが、あのアルゴリズムには特に不満は特にありません。

ブックマークレット

javascript: (async () => {
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();
window.scrollTo(0, document.body.scrollHeight);
await wait(1000);
window.scrollTo(0, 0);
await wait(1000);
const p = document.querySelector('.js-bookmarks-recent');
let l = Array.from(p.querySelectorAll('.entry-comment-contents'));
const g = e => {
let n = e.querySelectorAll('.hatena-star-star').length;
const c = e.querySelector('.hatena-star-inner-count');
return c ? n + Number(c.textContent) : n
};
l = l.filter(e => g(e) > 0);
l.sort((a, b) => g(b) - g(a));
p.replaceChildren(...l);
})();

ミニファイしたものコードに一部誤りがありましたので訂正しました(2024-08-16 11:47)

javascript:(async()=>{const wait=ms=>new Promise(resolve=>setTimeout(resolve,ms));document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();window.scrollTo(0,document.body.scrollHeight);await wait(1000);window.scrollTo(0,0);await wait(1000);const p=document.querySelector('.js-bookmarks-recent');let l=Array.from(p.querySelectorAll('.entry-comment-contents'));const g=e=>{let n=e.querySelectorAll('.hatena-star-star').length;const c=e.querySelector('.hatena-star-inner-count');return c?n+Number(c.textContent):n};l=l.filter(e=>g(e)>0);l.sort((a,b)=>g(b)-g(a));p.replaceChildren(...l)})()

使い方

FANZAの検索結果から熟女を除外するブックマークレット 参照

コード解説

コード説明にダサイところがあったら厳しく指摘して下さい。

javascript:

ブックマークレット必要な、URLの種類を示すスキーム名です。

(async () => {
// 処理
})();

ページに元々ある変数たちとバッティングしないように、まず無名関数ラップします。処理の中で await を使いたいので async 宣言しています

const wait = ms => new Promise(resolve => setTimeout(resolve, ms));

処理の途中で待ち時間を設けるための関数です。便利。

document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();
window.scrollTo(0, document.body.scrollHeight);
await wait(1000);

「新着コメント」タブをクリックし、ページの一番下までスクロールダウンしてから少し待つ動作です。新着コメントの後半部分(スクロールきっかけの遅延読み込みになっているところ)の読み込みをうながしています

window.scrollTo(0, 0);
await wait(1000);

ページの先頭に戻ってまた少し待ちます。合計2秒の待ち時間雰囲気で決めていますので、これでなければならない・これで過不足ないという値ではありません。単にコメントの読み込み完了を判定する処理を書くのがめんどうだっただけです。

const p = document.querySelector('.js-bookmarks-recent');

新着ブコメの親要素です。繰り返し呼び出すので名前をつけています

let l = Array.from(p.querySelectorAll('.entry-comment-contents'));

コメントをすべて配列に格納します。

const g = e => {
let n = e.querySelectorAll('.hatena-star-star').length;
const c = e.querySelector('.hatena-star-inner-count');
return c ? n + Number(c.textContent) : n
};

コメントはてなスター数をカウントして返す関数です。たくさんスターがついてる ★256★ みたいなやつの数字も足します。

l = l.filter(e => g(e) > 0);

ソートする前に、無スターコメントを消去しています。してもしなくてもいいことですが。

l.sort((a, b) => g(b) - g(a));

残ったコメントスター数で降順ソートします。.querySelectorAll() で収集した要素を配列に入れ直したのは、この .sort() メソッドを使いたいからです(.querySelectorAll() が返す配列風の NodeList オブジェクトは、配列共通メソッドもいくつかあるものの、大半は使えないのです)。

p.replaceChildren(...l);

親要素の内容を、並び替えの終わったコメントそっくり入れ替えて、処理完了です。画面を見ると新着コメントの中身が「スターのついたコメントのみ・スターの多い順」に並んでいます。元に戻す方法はないので、原状回復にはリロードします。ソート状態を示すフラグを立てておいてスターソート⇔日付ソートをかわりばんこに行うようにすればできそうだなと思ったけど実装しません。連打スターを省く処理を追加してUU数でソートできればもっと厳正なランキングになるなーと今思いつきましたがそれも実装しません。

2024-02-11

anond:20240210212445

じゃあワイも無責任はてなCSS貼っとくわ

パソコン画面右上のアイコンで選ぶ表示スタイルを一番右の「ヘッドライン」表示にしといてな

/* ヘッドライン表示を切り詰める */
/* #container 指定CSS優先度を上げる必要がある */
body[data-entrylist-layout="headline"] #container .entrylist-main{
  padding-right: 0 !important;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents{
  padding-left: 0 !important;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-users{
  position: static !important;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-users{
  top: 14px !important;
}

/* ヘッドライン表示にサムネイルを追加 */
body[data-entrylist-layout="headline"] #container .entrylist-contents-main{
  display: grid;
  grid-template:
    "users    body title"  28px
    "bookmark body domain" 20px
    / 60px 120px 1fr;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-users{
  grid-area: users;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-users a span{
  margin-right: 0;
}
body[data-entrylist-layout="headline"] #container .following-bookmarks-container{
  grid-area: bookmark;
  position: absolute;
  left: 20px;
  bottom: 2.5px;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-body{
  grid-area: body;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-title{
  grid-area: title;
  z-index: 99;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-title > a{
  margin-left: -120px;
  padding-left: 120px;
  margin-bottom: -28px;
  padding-bottom: 28px;
  width: 890px;
  white-space: nowrap;
  display: block;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-body{
  display: block !important;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-thumb{
  position: static;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-thumb span{
  width: 100px;
  height: 50px;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-thumb{
  background: #f0f0f0;
  width: 100px;
  height: 50px;
  background-position: 50%;
  background-size: cover;
  border-radius: 4px;
}
/* 2行目に、総合ではドメイン(domain), サイト内一覧ではカテゴリと時刻(meta), マウスバーはいずれも概要文(description) */
body[data-entrylist-layout="headline"] #container .entrylist-contents-domain,
body[data-entrylist-layout="headline"] #container .entrylist-contents-meta,
body[data-entrylist-layout="headline"] #container .entrylist-contents-description{
  grid-area: domain;
  display: block;
  opacity: 0;
  padding: 0 !important;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-meta > li{
  vertical-align: top;
}
html[data-stable-request-url^="https://b.hatena.ne.jp/entrylist/"] body[data-entrylist-layout="headline"] #container .entrylist-contents-domain,
html[data-stable-request-url^="https://b.hatena.ne.jp/site/"] body[data-entrylist-layout="headline"] #container .entrylist-contents-meta{
  opacity: 1;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-domain img.favicon + span,
body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-meta{
  opacity: 0;
}
body[data-entrylist-layout="headline"] #container .entrylist-contents-description{
  opacity: 0;
  position: absolute;
  top: calc(40px - 3px);
  left: calc(180px + 16px + .5em);
  height: 20px;
  line-height: 20px;
  color: #999;
  min-height: auto !important;
  padding-right: 0 !important;
  width: 890px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html[data-stable-request-url^="https://b.hatena.ne.jp/site/"] body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-domain,
body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-description{
  opacity: 1;
}
/* 増田調整 */
body[data-entrylist-layout="headline"] #container a[href^="/entry/s/anond.hatelabo.jp/"] .entrylist-contents-thumb{
  background-image: url('https://cdn-ak-scissors.b.st-hatena.com/image/square/b1638cdb5807a4788e4ba3c1109a984166e095fc/height=288;version=1;width=512/https%3A%2F%2Fanond.hatelabo.jp%2Fimages%2Fog-image-1500.gif');
}

/* マウスバー時にサムネも反応させる見た目調整 */
.entrylist-contents-title:hover ~ .entrylist-contents-body .entrylist-contents-thumb{
  opacity: .90;
}

2024-01-28

www.sunday-webry.com##.series-comment-contents

もうバカと関わりたくないからこれでいいや

似た表示js使ってるところなら同じようにまとめて消しさったほうがいいよ

2023-12-29

はてぶで松本人志顔写真を出さないようにするグリースモンキー

松本人志以外も消える

// ==UserScript==
// @name     hatebu-matsumoto
// @version  1
// @grant    none
// @include     https://b.hatena.ne.jp/
// ==/UserScript==

var startTime = new Date().getTime();

var t = setInterval(
  () => {
    const list = document.querySelectorAll(".entrylist-contents-thumb,.entrylist-issue-thumb");
    list.forEach(x => x.style.opacity = "0");
    if (new Date().getTime() - startTime > 10000) {
      clearInterval(t);
    }
  },
  10
);

document.cssRulesを加工するかMutationObserverを使えよ。 これだと一瞬松本の顔が映るだろ

サンキューJS詳しくないから助かる

2023-07-23

素早くブクマされた増田を強調 簡易セルクマ検知ユーザースクリプト

https://b.hatena.ne.jp/site/anond.hatelabo.jp

で動くスクリプトでたとえば投稿10分以内にブクマされページに乗ったら「1 user」が「1 user セルクマ 1とか5(何分後にブクマされたか)」になる。もしマイナスなら誤判定なので無視して。

時間を置いたセルクマには効かないし普通ファーストブクマカがどれぐらいの頻度で確認してるかしらないけど5分以内や1分以内もポロポロあるのでまあ目安に。

増田URLと一覧の時刻表示差分を取ってます

増田じゃpre記法でも記号が変換されるみたいだから作業

.forEach(div => {

('.entrylist-contents-title > a')

if(diffSec >

とかの

<>

<>

に変えてね

他にも見落としあるかも

誤判定が減るから非公開ファーストブクマを判定できたらいいんだけどね。

// ==UserScript==
// @name         hatebu masuda selkmark
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  特定時間以内にブクマされた増田を強調する
// @author       You
// @match        https://b.hatena.ne.jp/site/anond.hatelabo.jp*
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  const threshold = 60 * 10 // 何秒以内か
  const domain = 'https://anond.hatelabo.jp/'
  const dateTemplate = '202301020304' // 時分まで url時刻表記
  const dateTest = new RegExp('\\d{' + dateTemplate.length + '}')
  document.querySelectorAll('div.entrylist-contents').forEach(div =&gt; {
    const masuda = div.querySelector('.entrylist-contents-title &gt; a')
    const dateStr = masuda.href.substring(domain.length + dateTemplate.length, domain.length)
    if (!dateTest.test(dateStr)) {
      // キーワードとか
      console.log('not diary', dateStr)
      return
    }

    // new Dateできるように変換
    // https://amateur-engineer.com/javascript-date-yyyymmddhhmm/
    const year = parseInt(dateStr.substring(0, 4))
    const month = parseInt(dateStr.substring(4, 6))
    const day = parseInt(dateStr.substring(6, 8))
    const hour = parseInt(dateStr.substring(8, 10))
    const min = parseInt(dateStr.substring(10, 12))
    const date = new Date(year, month - 1, day, hour, min)

    const bukumaDate = new Date(div.querySelector('.entrylist-contents-date').textContent) // 2023/01/23 00:00
    const diffSec = (bukumaDate - date) / 1000 // ms to sec

    if (diffSec &gt; threshold) {
      return
    }
    // ブクマ user
    const user = div.querySelector('span.entrylist-contents-users a').lastChild
    user.textContent += ' セルクマ ' + (diffSec / 60)

    // 古い記事マイナスになる でも2015年ぐらいの記事までかな?新着はセーフ臭い
    /*
    if(diffSec &lt; 0) {
      user.textContent += ' 異常差分:' + diffSec
    }
    */
  })
})();

2023-02-15

リスト登録したユーザーはてブコメントを薄く表示するgreasemonkey

非表示機能で完全に無視したいって程でもないんだよな〜っていう。

タイプ別色分け機能とかこういうののはてなスター版とかも欲しい。面倒だから誰か書いて。

// ==UserScript==
// @name     hatebu_comment_usuku_hyouji
// @version  1
// @grant    none
// @include     https://b.hatena.ne.jp/entry/*
// ==/UserScript==

const userIdList = [
  'hoge',
  'piyo',
  ...
];

setInterval(() =&gt; {
  document.querySelectorAll('.entry-comment-contents').forEach((element, i) =&gt; {
    if (userIdList.includes(element.dataset.userName)) {
      element.style.opacity = '0.3';
    }
  });
}, 3000);

2022-08-06

はてブトップくそ重いのは

ページには表示されないのに各ブクマ概要

class="entrylist-contents-description"

が含まれてるから

2022-01-01

anond:20220101145248

正直動けばいいと思うので、現状でも問題ないと思うけれどちょっとだけ気になった点。

$$使ってる時点で、デベロッパーツール前提なのは分かるけど、 javascriptで動かしたいのか、デベロッパーツールで動かしたいのか、どっちつかずな書き方になっている。

$$('.hatena-star-inner-count').map(a =&gt; a.click());
let data = {};
Array.from($$('.entry-comment-contents')).forEach(x =&gt; {const userName = x.querySelector('.entry-comment-username a').href.split('/')[3];const comment = x.querySelector('.entry-comment-text').innerText;const stars = Array.from(x.querySelectorAll('.list-star-container a.hatena-star-star')).map(y =&gt; y.href.split('/')[3]);data[userName] = [comment, stars];});
console.info(Object.entries(data).map(x =&gt; { return ['|', `b:id:${x[0]}`, '|', x[1][0], '|', x[1][1].join(','), '|'].join(' '); }).join("92;n"));

デペロッパツールだけで動くだけでいいなら、3行目のArray.fromがなくても動く。多分、forEachをmapに書き換えても動く。個人的にはforEachに統一したいけど、そこは好みレベル問題だと思う。

$$('.hatena-star-inner-count').map(a =&gt; a.click());
let data = {};
$$('.entry-comment-contents').forEach(x =&gt; {const userName = x.querySelector('.entry-comment-username a').href.split('/')[3];const comment = x.querySelector('.entry-comment-text').innerText;const stars = Array.from(x.querySelectorAll('.list-star-container a.hatena-star-star')).map(y =&gt; y.href.split('/')[3]);data[userName] = [comment, stars];});
console.info(Object.entries(data).map(x =&gt; { return ['|', `b:id:${x[0]}`, '|', x[1][0], '|', x[1][1].join(','), '|'].join(' '); }).join("92;n"));

逆に、javascriptで動かしたいなら1行目と3行目はquerySelectorAllに書き換えれる。

document.querySelectorAll('.hatena-star-inner-count').forEach((a)=&gt;{a.click()});
let data = {};
document.querySelectorAll('.entry-comment-contents').forEach(x =&gt; {const userName = x.querySelector('.entry-comment-username a').href.split('/')[3];const comment = x.querySelector('.entry-comment-text').innerText;const stars = Array.from(x.querySelectorAll('.list-star-container a.hatena-star-star')).map(y =&gt; y.href.split('/')[3]);data[userName] = [comment, stars];});
console.info(Object.entries(data).map(x =&gt; { return ['|', `b:id:${x[0]}`, '|', x[1][0], '|', x[1][1].join(','), '|'].join(' '); }).join("92;n"));

これも好みの問題だけど、途中のconst宣言は一回しか使ってないので、宣言せずにそのまんま入れてもいいんじゃないかと思った。

document.querySelectorAll('.hatena-star-inner-count').forEach((a)=&gt;{a.click()});
let data = {};
document.querySelectorAll('.entry-comment-contents').forEach(x =&gt; {data[x.querySelector('.entry-comment-username a').href.split('/')[3]] = [x.querySelector('.entry-comment-text').innerText, Array.from(x.querySelectorAll('.list-star-container a.hatena-star-star')).map(y =&gt; y.href.split('/')[3])];});
console.info(Object.entries(data).map(x =&gt; { return ['|', `b:id:${x[0]}`, '|', x[1][0], '|', x[1][1].join(','), '|'].join(' '); }).join("&amp;#92;n"));
|&lt;&lt;

2021-08-03

ブコメの熊がウザいので、削除するブックマークレット作った

javascript:document.querySelectorAll(".entry-comment-contents").forEach(function(e){if(e.innerText.indexOf('🐻')!=-1||e.innerText.indexOf('ʕ•̫͡•ʔ')!=-1){e.remove()}})

ブックマークレットクリックが面倒な人は、GreasemonkeyかTampermonkeyで。

他のパターンコメント削除したい人は『||e.innerText.indexOf('削除したいコメントに含まれ文字列')!=-1』を修正なり、追加なりでどうぞ。

何か要望があれば、はてブコメント(ただし熊系は消してます)か言及でどうぞ。気が向いたら対応します。

なんか漏れてるのがある。文字列の方は、もっと短くした方が良さそう。ただ、これでも漏れてるのがありそうで、もし多様されそうなら対策調査か、はてブユーザー非表示機能を使おう。一応、サンプルの提供感謝

javascript:document.querySelectorAll(".entry-comment-contents").forEach(function(e){if(e.innerText.indexOf('🐻')!=-1||e.innerText.indexOf('•̫͡')!=-1){e.remove()}})

id:kako-jun クマで後半を埋めてるコメントで、前半は残したいので、正規表現にして後置のクマだけ消してほしい

こんなんでどうだろう。『正規表現にして後置のクマ』が面倒なので、『1文字目に熊がある場合削除対象外』で。あと『クマだけ消す』も不十分だと思うので、『replace(/a|b|c|d/g, '')』のabcdの箇所を必要に応じて修正して。

javascript:document.querySelectorAll(".entry-comment-text").forEach(function(e){if(2&lt;e.innerText.indexOf('🐻')||2&lt;e.innerText.indexOf('•̫͡')){e.innerHTML=e.innerHTML.replace(/🐻|ʕ|•|̫͡|̫•|ʔ/g, '');}})

ただ、増田仕様で『<>(大なり小なり)の半角』が使えないので、上記の&lt;は<の半角に適宜変換してください。

id:kako-jun 氏が、自身で作られてました。

https://b.hatena.ne.jp/entry/4706344345181168386/comment/kako-jun

2021-05-08

anond:20210504151428

uBlock系のコンテンツブロッカーを使っているならマイフィルターの設定に

b.hatena.ne.jp##.entrylist-contents-tags

を加えるとエントリーリスト中のタグ表示が消せるし

b.hatena.ne.jp##.entry-tags

を加えるとエントリー個別ページの右上にまとめて出るタグ表示が消せるようだ

2021-02-10

はてなブックマーク一行スクレイピング

実行すると、各記事

{

 title:記事タイトル,

 url:記事URL,

 users:ブクマ数,

 tags:[タグ]

}

形式に変換し、500ブクマ以上でフィルタし、ブクマ数降順で返す。


#一行版

curl -s https://b.hatena.ne.jp/hotentry/it | pup --charset utf-8 'div.entrylist-contents-main json{}' | jq -r '[.[] | {title: (.. | select(.class? == "entrylist-contents-title") | .children[].title), url: (.. | select(.class? == "entrylist-contents-title")) | .children[].href, users: (.. | select(.class? == "entrylist-contents-users") | .children[].children[].text | tonumber), tags: ([.. | select(.class? == "entrylist-contents-tags") | .children[]?.children[]?.text])}] | unique | map(select(.users >= 500)) | sort_by(.users) | reverse'


#変数

title='title: (.. | select(.class? == "entrylist-contents-title") | .children[].title)'
users='users: (.. | select(.class? == "entrylist-contents-users") | .children[].children[].text | tonumber)'
url='url: (.. | select(.class? == "entrylist-contents-title")) | .children[].href'
tags='tags: ([.. | select(.class? == "entrylist-contents-tags") | .children[]?.children[]?.text])'
target='https://b.hatena.ne.jp/'
hotentry='hotentry/it'
curl -s $target$hotentry | ¥
pup --charset utf-8 'div.entrylist-contents-main json{}' | ¥
jq -r "[.[] | {${title}, ${url}, ${users}, ${tags}}] | unique | map(select(.users >= 500)) | sort_by(.users) | reverse"

2018-05-23

[]uBlock Originを使って特定ブコメを隠す方法メモ

anond:20180523215832 のついで。

コメントタグ特定単語を含むブックマークコメントブロックする方法

同じくuBlock OriginのMy Filtersを使う。

コメントタグに「死ねばいいのに」という文章が含まれブコメを隠したい場合

hatena.ne.jp##.entry-comment-contents:has-text(死ねばいいのに)

特定IDブコメブロックする方法(不完全)

「Dummy_ID」によるブコメブロックしたい場合、同じくMy Filtersで、

hatena.ne.jp##.entry-comment-contents:has(a[href*="Dummy_ID"])

を追加すれば消えるのだけど、これだとDummy_IDスターを付けられたブコメまで消えてしまう。もうちょっと調べればなんとかなりそう。

2017-11-24

はてなブックマークCSSデザイン統一について

ここのところ思い出したかのように時々リニューアルが行われてるはてなブックマークデザインだけどさ。

少し前にリニューアルされたお気に入りページは、#left-container #center-container #right-container って、要するにdivタグidを振り分けて3ペインデザインを実現しているんだけれども、先日リニューアルされたユーザーブックマーク一覧ページは .left-container .center-container .right-container って、divタグclassを振り分けて3ペインデザインを実現しているのね。

こういう全体で1度しか使わないデザイン上の区切り指定するのにidを振るかclassを振るかってのは正直好みの問題でもあって、header,footer的なものidから3ペインidだろとか、優先順位とか管理やすいかclassでもいいだろとか宗教問題にもなりそうではあるんだけれど、同じ会社が作っている同じサービスほとんど同じページ表示に別の形式での記述がされているのはデザイナー間での事前定義と言うか意思疎通がされていないってことでもあってかなりマズいことじゃないのかな。

何かリニューアルするたびに「まともに仕事できないのかはてなデザイナーは」って揶揄されるけど、実際はてなデザイナーチーム、チーム内で大変なことになってるんじゃないか経営陣その辺ちゃんと把握してるか?

2017-07-06

はてブの新ユーザページ用ユーザスタイルシートを書いた

ずっと旧ページ使ってて、どうにも窮屈な感じがしたので。

.wrapper-container-inner {
    box-sizing: border-box;
    width: 100%;
    padding: 20px 20px 0;
    background-image: none;
}

#right-container {
    display: none;
}

#center-container {
    box-sizing: border-box;
    padding: 0 0 0 20px;
    width: calc(100% - 180px);
}

カラムは消した。

あくまで広くしただけ。

幅が広すぎる!って場合最後の width: calc(100% - 180px); にある100%の値を調整すればいい。

にしても、まさかレイアウトでfloat使ってるとは思わなかった。

いろいろ見ててCSSレガシーすぎて大変なんだろうなー、と思った。

2017-07-04

https://anond.hatelabo.jp/20170703143955

なんで PC 画面がワイド化してんのに、ブコメ表示部がこんなに幅狭いんだよ……。というわけで、お気に入りページのサイドバーサムネイル消して表示幅を広げるユーザースタイルシート

.wrapper-container-inner {
  width: 90%;
}

#center-container {
  width: 100%;   
}

#left-container,
#right-container,
.entry-image-block {
  display: none;
}

.wrapper-container-inner.left-column-line {
  background-image: none;
}

.entry-title,
.entry-block blockquote,
.entry-data,
.user-comment-meta,
.starContainer {
  display: inline;
}

.profile-image {
  width: 1.2em !important;
  height: 1.2em !important;
}

サイドバー区切りの縦線を消せてないけど、とりあえず。

縦線の消し方をブコメで教わりました。ありがとうございます! > id:ikihaji_kun

追記

要約文を消してさらに縦を圧縮するなら、以下を追加すればよいですね。

ガッツリ消す
.entry-block blockquote {
  display: none;   
}
あとで読む」あたりは残す
.entry-summary {
  display: none
}

2009-03-08

XAMPPMySQL文字化け

バージョン2.5

phpとかデータベースをutf8に統一した上で

my.cnfに以下の内容を書き込む。

[client]

default-character-set = utf8

[mysqld]

skip-character-set-client-handshake

default-character-set = utf8

character-set-server = utf8

collation-server = utf8_general_ci

init-connect = SET NAMES utf8

[mysqldump]

default-character-set = utf8

[mysql]

default-character-set = utf8

2008-09-13

これはひどい

http://kago.in/portal/index.php?url=<>

Warning: file_get_contents(http://api.pathtraq.com/pages?url=&lt;&gt;&amp;m=popular) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /virtual/kago/public_html/portal/index.php on line 25

Warning: file_get_contents(http://api.search.yahoo.co.jp/ImageSearchService/V1/imageSearch?appid=_DG85xqxg66_I.XOwI8HXsFIoVCrj7wuyv4HstVVzMq.Eq5NFShOxteUK6FlXyPB9BFCYw--&amp;query=&lt;&gt;&amp;results=50) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /virtual/kago/public_html/portal/index.php on line 32

Warning: file_get_contents(http://www.2chsearch.net/api/list?q=&lt;&gt;&amp;mode=html) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /virtual/kago/public_html/portal/index.php on line 42

2008-02-19

はてなブックマーク2ちゃんねるっぽくするユーザースタイルシート

インスパイヤ元 - http://anond.hatelabo.jp/20080219145538

@-moz-document domain("b.hatena.ne.jp") {
  ul#bookmarked_user{
    font-size: 105%;
  }
  #bookmarked_user li{
    list-style-type: decimal;
  }
  #bookmarked_user li:before{
    content: '\FF1A';
  }
  #bookmarked_user .timestamp:before{
    content: '\756A\7D44\306E\9014\4E2D\3067\3059\304C\306F\3066\306A\3067\3059\FF1A ';
    font-size: 110%;
    font-weight: bold;
    color: #008000;
  }
  #bookmarked_user img.hatena-id-icon,
  #bookmarked_user .user-tag,
  #bookmarked_user .hatena-star-comment-container,
  #bookmarked_user .hatena-star-star-container{
    display: none;
  }
  #bookmarked_user a[href*='bookmark-']:before{
    content: 'ID:';
  }
  #bookmarked_user a[href*='bookmark-']:link,
  #bookmarked_user a[href*='bookmark-']:hover{
    color: black;
    text-decoration: none;
  }
  #bookmarked_user a[href*='bookmark-']:hover{
    color: blue;
    text-decoration: underline;
  }
  #bookmarked_user span.comment{
   display: block;
   padding: 8px 1em;
   margin-left: 1.5em;
  }
}

曜日の表記と「2008年02月19日」を「2008/02/19」にしたかったが、方法が分からなかった。あ、あと投稿時間も。Greasemonkey じゃないと無理か?

追記

転載・改変は自由なので、再利用したいとかここを変えた方がより良い、という方は好きに使って結構です。

追記2

はてブちゃんねる

はてなブックマーク2ちゃんねる風に見せるサービスktkr

「はてブちゃんねる」を作った - mayokara memo

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