「Match」を含む日記 RSS

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

2024-04-07

anond:20240406234142

I mean sure, you can totally go full retard and butcher the fuck out of grammar and still perfectly sound natural so long as that’s what a native speaker would say (i.e. baby talk). But who’s gonna take you seriously if you talk like that anywhere you go? Every place has its established norm and if you deviate from it you might be ignored or worse bullied for being a nuisance, which is the case for me when I post on 4chan; I get far less (you)s when I write differently from how the majority of them does. If you wanna blend in and not stand out, it’s important to adjust the formality and wording to match the situation, which is what native speakers would normally do (And yes, most of what’s on 4chan, reddit or whatever else is far more complex than what we’ve written here in English, just go look at a random thread like this one: https://boards.4chan.org/pol/thread/464155987/elon-musk-is-retarded). Only using basic vocab/grammar/rhetoric, etc. only takes you so far.

(Btw I also was once told by a British that she couldn’t tell me apart from a native speaker, though I don’t think I’m even remotely close to being one cuz of these reasons.)

2024-03-02

anond:20240302043100

VBA嫌いのExcel師(営業事務)なんだけど、その程度のことをVBAでやろうとするヤツを駆逐したい。

お前は営業や他のユーザー理解度自分レベルだと勘違いするのをやめるべき。

うちの会社はVLOOKUP(最近INDEXMATCH)組めるのが「Excelできる」と名乗っていい最低限のラインで、営業営業事務では名乗れないやつはほとんどいない。でもVBAは使える人は稀。

基本はその「難しくてもVLOOKUPの知識を駆使すればなんとかなるレベル」でExcelを組まないと破綻する。

なので計算用シートは絶対必要

うちの会社の一事業部複数会社発注をしていて、そうすると会社ごとにデータ比較して見たいのに項目や項目順が違って簡単比較できない、ということがよくある。

その場合マッピングと呼ばれるデータ項目の統一化が必要なんだけど、会社によって合算したいデータがそれぞれ別の方法しか取れないとか、合算値に余計なデータが入ってるからrawデータ取ってきて件数レコード数でカウントしないといけないとか、まぁ色々出てくる。

取引に対してのデフォルト対応としての統一マッピングはしてるけど、そういうのはVBAでやらずにSaaS使ってるし、ものによって重視する値が変わるので例外が2割くらいある。うちの会社はその辺りの裁量営業に認められているので例外も多め(なおオンリーワンになりたいためだけに特殊対応した奴は一人を除いて矯正or自滅済)

そういう融通をきかせるのにExcel計算シートでマッピングするのは絶対

あとVBAだと営業側が「どういう計算をしてるのか」とか「正しい数値が出てるのか」が確認できない。

っていうのは例えば100円3件と150円2件の仕入れにうちの取り分2割乗せて720円として見せたかったのに、『=100*3+150*2*1.2』って数式書いたせいで660円になっとるやんみたいな。こんなんよくある眠い時のヒューマンエラーで、VBA書く人ならやらかさない、なんてことは絶対ない。

しか営業がこういうのの修正とか提案用にちょいちょいと列増やして数式入れようとしても「マクロ壊れるからやめて」とか言われる。営業自分で調整可能なら1時間以内でできるものでも、VBA書いた人に依頼しなきゃいけないんだと、書いた人の通常業務との兼ね合いで1週間待たされたりする。

営業からしたらそんなもんVBA野郎エゴ中のエゴですよ。

営業に金稼がせるためには営業利便性裁量必須で、Excel利用者裁量権が認められてないVBAツールなんか全体最適化されてないクソ。

※なお裁量大きいからってあんまり好き勝手するとやらかした時に他の助けも得られず(やれることに限界がある)自滅ルート

自分も軽くVBA習得してるんだけど、フォルダ内のデータ一括読み込みとシートの分割統合関数代わりにしか使ってない。しかもただの効率化なのでVBAが死んだところで手作業に戻せる範囲

他人保守できるように作るのならVBAなんか入れるべきではないし、VBA入れないなら計算シートは必須。あと計算周りを大掛かりにやるならSaaS入れてDX検討すべき。

2024-01-25

スパム非表示

Tempermonkey にぶちこめ

// ==UserScript==
// @name         増田ミュート
// @namespace    http://tampermonkey.net/
// @version      2024-01-25
// @description  try to take over the world!
// @author       You
// @match        https://anond.hatelabo.jp/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatelabo.jp
// @grant        none
// ==/UserScript==


function sleep(ms) {
    function timeout(resolve) {
         setTimeout(resolve, ms);
    }

    return new Promise(timeout);
}

(async function() {
    await sleep(100);

    const muteWords = [
        "https://huion.techinventory.com",
    ];

    const sections = document.getElementsByClassName("section");

    for (const sec of sections) {
        for (const word of muteWords) {
            if (sec.innerText.includes(word)) {
                sec.style.display = "none";
                break;
            }
        }
    }
})();

2023-10-10

anond:20231010132725

xlookup使えないとかindexmatch使えないとか詰られるかと思ったおじさん

2023-09-14

ずんだもんと結婚したい。

2人で市民プールに行って上がったらMATCHを飲みたい。

2023-08-04

綺麗なコードって綺麗に書くことじゃないよ

本当にあった話だけど、JavaScriptstrっていう変数テキストが入っていて

その変数に'apple'とか'banana'とかが入ってるかどうかを判別するっていうロジックを作るとき

const re = new RegExp("apple")
if(re.test(str)) console.log("match")

みたいなサンプルコードを見つけてきて

const re_apple = new RegExp("apple")
const re_banana = new RegExp("banana")
if ( re_apple.test(str) || re_banana.test(str) ) console.log("match")

っていうコードを書く人がおるんよ

別にプログラミング初めて3ヶ月の初心者じゃ無くて20年以上やってるようなベテランだったり

なんならチーフプログラマーとして若手指導してるような人でもこういうレベルの人って割といるわけ

これに対して

正規表現でORを書くべき」

「includeで十分」

かいう指摘ももちろん正しいんだけど

綺麗にコードを書くっていうのは

「これってappleとかbanana以外に増えたりしないの?」

「fruitsかどうかを判別するならその変数を作った方が良くない?」

っていうのを考えて実装するのが綺麗にコードを書くっていうことで

変数名だとか整形とかは大事だけどそういう話じゃ無いんだよね

ちなみに

正規表現でORを書きましょう」

とかをPRレビューコメントしても

「動いてるからいいじゃない」

「綺麗に書いても性能上意味ない」

「言ってることが良く分からない。何が違うのか」

とか言ってくるし

言ってこなくて言われた通りに直しても次もまた同じことしてくるのでマジでレビューって大変だよ

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-03-04

朝日新聞digitalプレゼント機能

無料会員のタダ読み3本機能の代わりに導入された有料会員によるプレゼント機能が導入されてもう1年(?)。増田が初めて知ったのはwattoさんのブコメプレゼントURLを貼ってくれた時だが、最近になってTwitterスーパーインフルエンサーの暇空アノンいちゃもんのおかげで一気に機能が周知された。その結果なのかTwitterでもプレゼントURLの貼り付けが増えた感。

面白いのは、いわゆるリベラル系のアカウントの利用のみならず、反リベラル系の有名アカウントもちらほらとプレゼント機能を利用してるってことな。閲覧数は反リベラル系が圧倒的。まあそれなりにコンサル系や研究者系なら思想の左右問わず朝日読売日経辺りを読まないわけにはいかないし、中立アピールのためにあえて朝日ソースを使うってことかな

 

そして我ながらとんでもなくみみっちいブックマークレットをChatGPTに頼んで作ってもらった

朝日有料記事プレゼント検索

朝日デジタルの有料記事ページを開いている時にクリックするとTwitterで有料記事プレゼント機能を使ってる(と思われる)ツイート検索するブックマークレット

javascript: (() =&gt; { const currentUrl = window.location.href; const digitalUrl = `digital${currentUrl.match(/\.asahi\.com\/articles\/.+\.html/i)[0]}`; const searchUrl = `https://twitter.com/search?q=${encodeURIComponent(digitalUrl)}&amp;f=live`; window.open(searchUrl, %27_blank%27);})();

2023-02-25

anond:20230224073522

国内最大のマッチングアプリペアーズの統計

男の年齢別人気会員の割合は26歳-37歳で高い(ピーク32歳)

女の年齢別人気会員の割合20歳-29歳で高い(ピーク26歳)

これこそがフェミニストが異常に発狂する男女の適齢期の違いであ

男の年齢は女のそれのマイナス7歳~8歳(市場価値は女の20歳=男の28歳、女の30歳=男の38歳、女の40歳=男の48歳...)

ソース)「match△app〇jp×al/×131805」(△は-に、〇は半角ピリオドに、×は半角スラッシュに変換)

厚生労働省人口動態統計」による2015年結婚した夫婦の年齢差

夫が11歳以上年上 … 6.9%

妻が11歳以上年上 … 0.8%

夫が年上 … 57.6%

妻が年上 … 24.2%

https://nova.5ch.net/test/read.cgi/livegalileo/1662357800/

2023-02-03

最近UserScriptを書くのが楽しい

最近UserScriptを書くことに目覚めて、不便なWebサイトちょっと改造して好みにするのにハマってる

例えば「辞書系のサイトなのにページを開いた瞬間から入力欄にカーソルがあってないのがいや」とか、そういう細かい点をこちらで勝手に改修するするような感じね

で、増田において「この人記事に対して毎回○○って反応つけてるけど面白いと思ってやってんのかな? 面白いと思ってやってんなら致命的に自分センスが合わないから消したいし、面白いと思ってないならただの害悪から消したいな」と思うことがあるわけですが、そういった異なる価値観に対して自動的に適切な距離を置くためのスクリプトを作ったのでメモがてら貼り付けておきます

// ==UserScript==
// @name        ますどくさいスイッチ
// @namespace   Violentmonkey Scripts
// @match       https://anond.hatelabo.jp/2*
// @grant       none
// @version     1.0
// @author      anond
// @description description
// ==/UserScript==

(async () =&gt; {
    // ここにNGワードをどんどん追加する
    // 基本は文字列文字列で引っ掛けにくいなら正規表現でもいい
    const keywords = [
        "あえいうえおあお",
    ];

    const checkedMarker = `data-a${Math.random().toString(36).slice(-8)}`;
    const query = `div[id^="excerpt-"]:not([${checkedMarker}]`;

    const delTree = () =&gt;{
        const elems = [...document.querySelectorAll(query)];
        for(const elem of elems) {
            const textContent = elem.textContent;
            if(keywords.some((x) =&gt; (typeof x === "string") ? textContent.includes(x) : x.test(textContent))) {
                const parentContainer = elem.closest("li");
                parentContainer?.remove();
            } else {
                elem.setAttribute(checkedMarker, "true");
            }
        }
    };

    delTree();

    const mo = new MutationObserver(delTree);
    mo.observe(document.body, { childList: true, subtree: true });
})();
  1. ブラウザーにTampermonkeyやViolentmonkeyをインストールしUserScriptを動かせるようにする
  2. インストールした拡張機能ダッシュボードを開き新規スクリプトを追加する
  3. 上記全てをペタッと貼り付ける
  4. 配列keywordsに消したい文字列またはそれにマッチする正規表現を入れる
    1. いくらでも追加可能
    2. 多少増えたところで大して重くはならないと思う
  5. Ctrl+Sを推して保存する
  6. 記事の反応のうち消したい文字列に当てはまる発言(とさらにそれに反応した発言)がツリーから消える

keywordsを増やして君だけのどくさいスイッチを育ててね!

(追記)

ぐええ 文字勝手に置換されてる…不便だなあ

&gt;」となっている箇所を「>」を半角で入力したものに置き換えてください

2023-01-10

増田引退にあたり過去投稿掃除した

以下のスクリプト登録することで。以下のループを繰り返させることができる。

https://anond.hatelabo.jp/ここにユーザー名/を開く」→「直近の投稿編集画面に遷移」→「削除ボタンを押す」→「ダイアログに答える」→「https://anond.hatelabo.jp/ここにユーザー名/に戻る」

実質ダイアログに答えるところだけやればよい。

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://anond.hatelabo.jp/ここにユーザー名/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatelabo.jp
// @grant        none
// ==/UserScript==

function sleep(ms) {
    return new Promise(resolve =&gt; setTimeout(resolve, ms));
}

(async function() {
    'use strict';

    await sleep(100);
    window.location.href = document.querySelectorAll("div.section")[0].querySelector("a.edit").href;
})();
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://anond.hatelabo.jp/ここにユーザー名/edit*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatelabo.jp
// @grant        none
// ==/UserScript==

function sleep(ms) {
    return new Promise(resolve =&gt; setTimeout(resolve, ms));
}

(async function() {
    'use strict';

    await sleep(100);
    document.querySelector("input.delete-button").click();
})();

2022-12-12

伊藤詩織神原元にカンパしていた私が今回は暇空茜の肩を持つわけ

敬称略

暇空茜の肩を持つ理由基本的にこれ。

もし、暇空が仁藤のプライベートについてあれこれ書いていたら仁藤持ちだったと思う。

今回仁藤に直接関係するとしたら、例の「○○と関係が深い」のところしかなく、あとは「仁藤が代表を務めるColabo」というように団体主語になっている。

企業や団体は自然人ではなく、その業務についてあれこれ評価されることについては必然性があり受忍の限度は高く設定されるべきと考える。

実際にひどい中傷により影響が出たのであれば、業務妨害関係法律により賠償を求めるべきとも思う。

また、税金支出される団体として一定以上の説明責任を有すると考える。

さらに、日本においてはSLAPP訴訟のものへのペナルティほとんどないことからも、企業団体への名誉棄損の成立は慎重に行うべきと考える。

(もちろん、そう考えているのは私なだけなので、日本民事訴訟において政府大企業有名団体に対して裁判官心証は限りなく甘い)

反論する手段も十分にありながらいきなり訴訟を行ったのも心証が悪い。仮処分も求めていないのに保護活動への影響の緊急性を主張するのだろうか?

また、暇空はペンネームであるがこれは完全に顕名である。いきなり半生記を書き出して何かと思ったが、自分特定個人本人であることを示したということであろう。

この増田のようなものであれば個人名誉存在せず名誉棄損を訴える法益がない。一方で暇空は無名匿名人ではない。

弁護団はそれを認識したうえで、件の会見を開いた以上、その内容に行き過ぎがあれば当然に名誉棄損が成立する。

ネトゲ有名人であることを開陳したのも名誉棄損の損害を上積みするためであろう。体を張ってる。

Colabo側がこれ以上の嫌がらせを考えるとしたら暇空の証人召喚だろう。


本筋ではないけど、漫画表現への攻撃の件

攻撃ではないとか言い出す人もいるのがどうかと思うので。

最初攻撃したのは絵を掲示したほうであるなどという人もいる。どんな検閲社会だ)

これらは別々に成立する。

例えば表現撤去要求であれば、ポリコレマスターした欧米人ならこう言うだろう。

「great workだけど、この場にはmiss matchと思うんだ」

これはこれで交渉余地はあるだろう。

表現へのマイナス評価についても、ある程度感想自由だ。

ただし、正直に思ったからと言って、キモイ、ブス、デブなどと口に出したら幼稚園生かと思われる。

それでも表現自由範囲ではある。

ここで両方いっぺんに(キモイグロイ・女性を消費している・ズリネタ撤去せよ)やったとすれば、それはもう攻撃しか言いようがない。

物語だったら、生涯をかけて学会復讐するレベル

何度も攻撃が繰り返されたおかげでもはや話し合いの余地はなく、ちょっとした感想アレルギーが生じる状態である

全て手遅れ。

2022-12-03

ボール内蔵チップ記事の誤り。

今回のW杯スペイン戦の三笘選手アシストに関連してこんな記事話題になっている。

W杯日本勝たせた進化したVAR、ボール内蔵チップで1ミリ以下まで驚異の計測 開発者証言

https://www.nikkansports.com/soccer/qatar2022/news/202212020000720.html

この記事にはボールに内蔵されているIMUというチップによりボール位置を測定し、今回の判定が下されたと書かれている。しかし、実際には内蔵チップ使用されていないと思われる。なお私は一介のサッカーファンであり専門家ではないので間違っていたら指摘してほしい。

・内蔵チップ半自動オフサイド判定システム使用されるもので、ゴールラインテクノロジー(GLT)には使用されていない。

FIFA公式サイトhttps://www.fifa.com/technical/football-technology/football-technologies-and-innovations-at-the-fifa-world-cup-2022/goal-line-technology)には内蔵チップはGLT使用しないとされている。

Q:Does goal-line technology use the data from the sensor inside the ball?(GLTボールに内蔵されたセンサーからデータ使用していますか?)

A:The goal-line technology system used at the FIFA World Cup 2022 is based on 14 high-speed cameras. The data from the sensor inside the ball is not used to determine if the ball has crossed the goal line or not. (2022年W杯のGLTは14のハイスピードカメラ構成されていますボールに内蔵されたセンサーデータゴールラインを超えたか否かの判定には使用されません。)

ただ、この記述だけでは今回の判定に使用されていないことを確定することはできない。GLTはゴールが入ったかどうかの判定にの使用されるシステムであって、今回の三笘選手アシストのようなゴール横のラインを超えたかどうかの判定には使用されない為であるしかし、内蔵チップがゴール判定に使われないのであれはゴール横のラインを割ったかどうかの判定にも使われていないと考えるのが自然である。(今回の判定に使えるならわざわざGLTのためにハイスピードカメラを導入する必要がないため。)

そもそもFIFA映像から判定したとツイートしてる。

FIFAが今回の判定について説明するツイートをしており、そこに

The video match officials used the goal line camera images to check if the ball was still partially on the line or not.(マッチオフィシャルは、ゴールラインカメラ画像使用して、ボールがまだ部分的ライン上にあるかどうかを確認しました。)

と書かれているため、実際にはラインから映像を見て判定を下したと思われる。

2022-08-30

現代イラストレーターは、必ず滅びる

mimicなるものが、今Twitterで物議を醸している。タイムラインに浮上するくらいにツイートされていると言うことだ。その中で一つ唸ったツイートがあった。「果たして二次創作パロディの形で書いたり自身エゴを満たすのに何の違いがある」とのツイートだ。全員が全員、イラストレーター全員が二次創作で私腹を肥やしたりエゴを満たす訳ではないだろう。中には姉なるもののような、正に理想の姉を描く素晴らしいぽち先生や単純なラブコメでは説明できない、男女間の性に根差した秀逸なラブコメを描く西沢5㎜先生や、最高に素晴らしい関係を独特で流麗なイラストで描くmatch先生のように、少し思い出しただけでもざっと列挙出来る神クリエーターがいるのは承知している。

が、印象論で語るがコミケコミックブースでは一次創作ではなく、二次創作で溢れているように見受けた。性質上有志による有志の為の、とまさに趣味性をコミケ全面に押し出している訳だが実際は金をやり取りして、要は商品として作品を扱っている。純然なマーケットである印刷代の為との反論の向きはあるだろうが、私はなぜ二次創作電子配信では無料放出しない、と反論する。別の言い方をすれば、他人の褌で相撲を取るような連中の集まりだと言える。

二次絵ではない戦艦に関する考察本、或いはマイナー民俗学を扱ったような、実にオリジナルしか言えないものは本趣旨から完全に外れるのでここでは扱わない。

要はこの問題は、言うまでもないだろうが生活の糧を失いかねない人々の叫びだ。この生活の糧とはイラスト、及びそこから出る利益である

が、これは私の完全なる愚痴になるがAV新法が制定されたときイラストレーターは声を上げなかった。それは何故か。自分に降りかかる火の粉が無かったからだ。法律が縛るが故生活の糧を失いかねない人々に声を上げなかった者、その一部が今度は法律が見逃すが故に生活の糧を失いかねない状況に陥っている。世界から目を背け、自分世界に籠ったが故に危機を察知出来なかった者の末路だ。

ここで私は富野由悠季言葉を思い出す。漫画業界は、漫画しか興味がない者の集まりです、と。拡大解釈するが、ただの絵を漫画とするならストーリー性を持たせられない者が今回の被害者、となる。遅かれ早かれストーリーテラーそのものAI計算機に淘汰されるかも知れないが、これも本趣旨ではないので放置する。

私自身はイラストで食っている人間ではないが、各方面から集中砲火を受けることだろうと覚悟して敢えて言う。「予期出来なかったにせよ、AI如きに取って替わられる仕事を選んだのが悪い」と。また富野由悠季言葉引用するが、エンジニアとは元来作ったもの未来どう影響を与えるか、とかは一切考えない人間の集まりで、その最たる例が車でありFacebookでありTiktokでありTwitterであるのだろう。それが偶々イラストに波及しただけの話だ。

更に言うならば、かなり大きく乱暴に括った上で語れば、イラストとは情報である。線が複雑に絡み合って視覚情報に訴える、そのことこそがざっくりと言って情報のものだ。そもそも情報自体一種お布施文化なのである。元々が消費者側のチップにより生活をする、昔で言えば観阿弥世阿弥構造であろう。或いは新しい作品であれば犬王に近い。言ってしまえばチップ生活を営むもの現代クリエーターなのである

梅棹忠夫先生言葉で語るのならば、農業工業と二つの時代代替され、到来した精神産業時代が今なのである。そしてここからは私の言葉になるが、恐らく精神産業は次の産業に移り変わらねばならない。もう既にデザイン時代は終わったか、終わりが目の前にまで来ている。

イラストを単体で考えた上、頭の中で完結する可能性が極めて高い商品と言える。人間が見、脳に億のイラストを放り込み感覚器官で入出力を繰り返した結果生まれ確立されたもの楽器演奏DAW関係に似ている。私は無知であるのでDAWが出てから食いっぱぐれたスタジオミュージシャンがどれだけいるか知らないが、それでもあらゆるデジタルエフェクトが開発され、果てはDAWで完結したホームレコーディング作品グラミー賞を取り、そのアーティスト007主題歌を歌う現代でも、スタジオミュージシャンからDAW音楽シーン破壊した、或いは食いっぱぐれたなんて訴えるのは寡聞故か聞かない。

それでも音楽が今も、昔の勢いこそ削がれたが存在するのはオリジナリティ以上に、アイデア重要視されるからだろう。今もyoutubeを覗けば昨日アップロードされたばかりの二重の意味で新鮮な音楽に巡り合えることもあるのだから

問題そもそもない。デジタル恩恵に与り生活の糧を得てきたイラスト、画風なんて人間模倣できるものを売り物にした産業構造、それに乗っかったイラストレーターがいるだけの事だろう。その産業構造の中で生じたmicmicなる癌細胞産業全体の破壊に掛かっているだけのことだろう。もう次の産業モデルを考えねばならない時代が来ている。

私は予言する。micmicが我々の声で死滅させられたにしても、十年以内にまた、今度は別の強敵となってもしかしたらストーリーテラーでさえも呑み込む強度に成長して広義のコミック文化破壊しに来る。それよりも少し遠い未来その流れはもしかしたらアニメーションにまで来てしまうのかも知れない。個人の解剖が、趣味性格の傾向さえも分析される進んだ未来、個々人向けにカスタマイズされた娯楽を一つ一つ出力する未来が必ず来る。そこでは現代我が物顔でマーケット荒らしまわるディズニーでさえも、単なる人間による珍しいスタジオの一つとして扱われる。特定個人が最もドーパミンの出るシーンを映すことに特化した、娯楽に特化したAIが確実に出現する。無論、マーベルDC太刀打ち出来ない。

それを前提とした上で、漸く本題だ。以上は前置きである。ここまで読んでくれた読者諸君に敬意と心から謝意を表明する。そしてここから先は、与太話がたんなる一つのアイデアだと思って読んでもらいたい。私には才がないから、実現する力はない。これに触発された、いるか解らない若い君に実現の道を切り開いて欲しい。私にはその時間が割けないので。

例えばArtist Shareと言うものがある。クラファンのアーティスト版と言ったところか。そう言うものを作ればよい。そこでは中抜きを極力排して、要はコミケオンライン版のように運営にかける費用は抑え、出来るだけイラストレーター漫画家に支払われる額を大きくする。Boothやfantiaのように、単なる消費者-クリエーター関係を越えて、youtube投げ銭のように金持ち消費者は好きなクリエーターに幾らでも投げ銭が出来る、その代わりに審査を厳しく、micmicのような精神産業破壊AI会社と密に連携し、売られた作品を一度AI人間かどちらでも構わないが審査解析を行い、過去他人作品AIに掛けて描かれていないかを厳密に判断するシステムを作る。人間の描いた作品のみを取り扱う、それを可能にするシステムを構築する。可能ならば、有志達が本気ならばそこに参画したクリエーター保証する為に、歴史から引用すればメディチ家のようにそのシステム消費者全員、それは全世界さえも包括する億単位に達するか解らんが多くのスポンサーを受け入れる。その為に出来るだけ多くの言語圏に届けるために翻訳陣を用意する。勿論、ここでAIGoogle翻訳のような機能を使ってはならない。我々の優位性が失われるし、各文化圏に最適化される必要があり、それは恐らく未だAIでは実現出来ないだろうからだ。まさかエロ漫画のようなオホ声が例えばイスラム圏に最適化されるライブラリは未だAIにはない筈だ。人間の生きた脳で翻訳必要だ。

エロフォーカスし過ぎた。エロだけではない、例えば今なろうが流行しているらしいが、そのテキストさえも、要はイラストストーリー、果ては音楽も包括した組織理想ではあるが、果たしてその組織が正常に作用してくれるかは私の頭では想像できない。要は作品として一から終いまで完結出来るだけのシステムを整える必要がある。

この、Micmicのような精神産業破壊AIは、法律倫理で縛れるものではないことを前提としなければならない。幸いAV新法のように、今回は法律が縛るのではなく、むしろ縛るものがない。そこを利用し、利益を齎すシステムを作る必要がある。

だが陥ってはならない罠がある。最近で言えば確かネトフリが振るわない番組製作途中で打ち切った、なんて報道があった。それはプロ観点からである欧米道徳である利益重視である。それはクリエーターが下すべき判断であって、マネージメントの側から判断してはならぬのである

現代は高度に断片化され過ぎた。あらゆる音楽で言うところのレーベルが乱立している。集英社だけでも四つ以上はある。私の幼少では考えられぬことだった。

とは言え、現代では資本が全てなのが痛いところだ。暗号資産のように、純粋資本とは言い難いものベースにするわけにもいかない。何しろクリエータ生活が掛かっている故に、浮ついた貨幣を用いてはならぬので。

先に述べたシステムを生かすのならば、ある程度の出版社の力が必要となる。が、決してコミケオンライン版と直接に結び付けてはならない。幾ら有志とは言え、ある程度以上となれば確実に企業としての体が求められるし、資金調達が出来なくなる。そうと言っても、本体利益重視の団体と結び付けては、組織としての気風が崩壊する。それ故下位組織か、いっそ別組織で結びついた方がよい。

何よりも絶対にしなければならぬのが、出版社優位のシステムには絶対にしてはならぬことだ。私は出版業界は知らないが、組織化された集団は必ず利益の下に腐敗することを知っている。もう、出版社は腐敗していると言ってよい。が、彼らの力が最終的に必要になるのも現実だ。

それは考えねばならぬこであるが、現時点では解を得られない。君たち、読むか解らないが若者の頭で、考え出して欲しい。

些か理想に走った青写真であるのは認める。が、私が何よりも言いたのは、積極的自衛手段を編み出さねばならない、と言うことだ。出来てしまったのは仕方ないし、事実この世界自動化効率化の下進んでいっている。それに抗うのは無理だ。第二第三の者が来る。それに対抗するには流れを利用する。幸い現代資本主義が揺らいでいる。既存資本構造が正解とは限らない。使える手段は全部使え、自ら生存の為に。それが君らの世代では可能なはずだ。嘆き悲しむのは誰にでも出来る。質で来るなら量で抗え、君らにはそれだけの頭数がいる筈だ。私は知恵が足りぬので出来ず残念だが、君らでも知恵が無ければ最悪大学先生を使え、使えるものは親でも大学教授でもなんでも使え。

最後に、君らにエールを送りたい。是非とも、生き延びてくれ。

補足説明はするつもりだから、君らの意見を聞きたい

2022-08-26

anond:20220825154813

はぁ、最近は私(Ruby)は Python ちゃんにおされちゃって PHP ちゃんにもバカにされる始末。ああ、声が聞こえる、Perl ちゃんの声が「おいでよ」って。でも、Groovy とか Scala とかも元気だし、もうちょっと頑張ろう!... ということで、Ruby の駄目なとこと追加してほしい機能とかよろしく。俺は CASE 文の完全な刷新かな。in だとイマイチなんだよ、書きやすさとかが。Rust の match レベルのヤベーの欲しい。

2022-08-15

Webはてブミュー機能作った

勝手に tampermonkey とかに突っ込んで使ってヨロ

スクリプト保守とかするつもりないから、保守とかするつもりのあるパワーの溢れた人が

これ参考とかにしてもっとかっちょよくしたのを greasy fork あたりに公開してくれ

そしたら俺もそれ使う

使い方:

ブラウザの開発環境を開いて、開発コンソールを開く

localStorage.hatebu_ng_word_list に非表示トリガーになる文字列を|区切り登録する。

localStorage.hatebu_ng_word_list = "池田信夫|フェミ|弱者男性|やまもといちろう"

実際のコード

大なり小なり(&gt;)が実体参照で表示されるのはよくわからん。使う人で適宜コードを直してくれ。

// ==UserScript==
// @name         はてブの一覧NG記事非表示
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       masuda
// @match        https://b.hatena.ne.jp/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatena.ne.jp
// @grant        none
// ==/UserScript==

(function() {
	'use strict';

	if (!localStorage.hatebu_ng_word_list) {
		return;
	}
	console.log("はてブの一覧NG記事非表示", localStorage.hatebu_ng_word_list);

	/*
	 * 例:
	 * localStorage.hatebu_ng_word_list =
	 * "池田信夫|フェミ|弱者男性|やまもといちろう|togetter.com";
	*/
	let words = localStorage.hatebu_ng_word_list.split('|').map(w =&gt; new RegExp(w));

	function entryDelete(els) {
		els.forEach(el =&gt; {
			let hit = false;
			words.forEach(w =&gt; {
				hit = hit|| w.test(el.textContent);
			});
			if (hit) {
				el.remove();
			}
		});
	}

	// entrylist-header-main li 1つ目のアイテム
	entryDelete(document.querySelectorAll('.entrylist-header-main &gt; li'));
	// 2つ目以降の li アイテム
	entryDelete(document.querySelectorAll('.entrylist-item &gt; li'));
})();

文字正規表現として評価されて、ヒットした記事項目をページから削除する(DOMから要素を削除する)。

際限なくNG登録できるけど、沢山非表示するとつまらない一覧になる

2022-08-08

anond:20220808132334

matchとか。好きなんだけど自販機に中々ないしスーパーにも置いてない事が多い。でもなぜかドラッグストアではよく見る。

2022-08-01

anond:20220731183342

自動安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋) 

/**************************************

以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 &lt;h3&gt;o- *************************************/&lt;/h3&gt;

//CSVファイルが置かれてるディレクトリパス投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";

const CSV_DIR =

'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';

//ファイルパスCSV絶対パスで、拡張子必要。iimは相対パスでよく、拡張子不要

const FILE_PATHS = {

//投稿文が書かれたCSVファイル

textCsv: CSV_DIR + 'textNoAnker.csv',

//レス投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。

replyTextCsv: CSV_DIR + 'textReply.csv',

};

const SETTINGS = {

//投稿後の基本待ち時間

baseWaitTime: 5,

//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ

waitTimeRange: 5,

//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)

waitTimeForAvoidingPunishment: 60 * 30,

//メール

mail: 'sage',

//名前設定

nameSettings: {

//名前名無しなら''。

name: '',

//以下、偽装ワッチョイ設定。浪人ワッチョイを非表示にしてるときだけtrueにしてね。

//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。

nickname: false,

//妙なニックネームの後に付く8桁の文字列ランダムで決めて付加するかどうか。

korokoro: false,

//IPランダムで決めて付加するかどうか。

ip: false,

//地域ランダムで決めて付加するかどうか。

area: false,

},

postSettings: {

//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。

noAnkerPost: false,

//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrue場合投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。

replyPost: true,

//最初に取得するアンカー無し投稿CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力

noAnkerPostTextCsvStartRow: 1,

//最初に取得する返信用投稿CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力

replyPostTextCsvStartRow: 1,

//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。

textCsvLoop: true,

//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。

minAnker: 895,

//返信する場合名前に以下の文字列を含む投稿アンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列複数指定可能指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能

filterNames: [],

//↑とは逆に、名前に以下の文字列を含まない投稿アンカーをつけて返信する。↑と併用も可能

filterNamesNotIncluded: [],

//返信する場合、本文に以下の文字列を含む投稿アンカーをつけて返信する。

filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '&gt;&gt;660', '自演擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],

},

//自分IPアドレス確認VPNとかでIPを変更してマクロを動かしてるとき、突然VPN作動しなくなってIPが元に戻ったときマクロを止めるためのもの

ipSettings: {

//自分現在IPアドレス確認をする。

checkIp: true,

//以下の文字列自分現在IPアドレスに含まれている場合マクロを一時停止する。基本的自分の本当のIPアドレス入力

avoidTheIp: '133.206.99.224',

},

//浪人設定。最後動作確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないか確認できずわからない。

roninSettings: {

//浪人ログインしてるかどうかをチェックするかどうか。trueらするfalseならしない。trueにしていてもし浪人ログインしていないことを確認したらログインしにいく。

checkLogin: false,

//浪人ログインメールアドレス

mailAdress: 'abc@def.com',

//浪人ログインパスワード

password: '1234',

},

//false: run()実行させず(デバッグ用)

run: true,

//true: 投稿処理だけしない デバッグ

skipPost: false,

};

/**************************************

設定箇所終わり。

書き込めない時の早見表 - 5ちゃんねるwiki

https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 &lt;h3&gt;o- *************************************/&lt;/h3&gt;

/**************************************

メモ

クラスフィールド宣言できない。

・NULL演算子(??)は使えない。論理積(&amp;&amp;)は使える。

オブジェクトの分割代入はできない。

・importはできない。 &lt;h3&gt;o- *************************************/&lt;/h3&gt;

/**************************************

関数 &lt;h3&gt;o- *************************************/&lt;/h3&gt;

/**

* ここから始まる。

*/

function run() {

//設定ミスがないか調べる。

checkSettings();

var _TextCsvCursors = new TextCsvCursors(

new TextCsvCursor(

SETTINGS.postSettings.noAnkerPostTextCsvStartRow &gt; 0

? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1

: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,

FILE_PATHS.textCsv,

SETTINGS.postSettings.textCsvLoop,

),

new TextCsvCursor(

SETTINGS.postSettings.replyPostTextCsvStartRow &gt; 0

? SETTINGS.postSettings.replyPostTextCsvStartRow - 1

: SETTINGS.postSettings.replyPostTextCsvStartRow,

FILE_PATHS.replyTextCsv,

SETTINGS.postSettings.textCsvLoop,

),

);

var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);

const _MyPosterName = new MyPosterName({

name: SETTINGS.nameSettings.name,

});

//スレURL指定

const _ThreadUrl = openPromptThreadUrl();

//ループ

while (true) {

//IP確認する設定なら、それをする。

SETTINGS.ipSettings.checkIp &amp;&amp; checkCurrentIpNotTheIp();

//スレを開く

openUrl(_ThreadUrl.fullUrlHttps());

//浪人ログインする設定なら、浪人ログインしているかどうかを確認し、していなければログインしにいく。

if (SETTINGS.roninSettings.checkLogin) {

if (!checkRoninLogin()) {

loginRonin();

continue;

}

}

//投稿に使うテキスト取得。

const p = (function () {

if (SETTINGS.postSettings.replyPost) {

//返信あり設定の場合。返信対象が無いか調べる。

const targetAnkerNumber = createPostDOMList()

.filterPostnumberHigher(_LoopStatuses.currentMinAnker())

.filterByPostername(SETTINGS.postSettings.filterNames)

.filterByPosternameNotIncluded(

SETTINGS.postSettings.filterNamesNotIncluded,

)

.filterByText(SETTINGS.postSettings.filterText)

.lowestPostNumber();

if (targetAnkerNumber !== null) {

//返信対象があったのでアンカー付き投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);

messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);

return {

...r,

updatedLoopStatuses:

_LoopStatuses.updateMinAnker(targetAnkerNumber),

};

}

}

if (SETTINGS.postSettings.noAnkerPost) {

//返信対象無し、或いは返信しない設定の場合アンカー無し投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsNoAnker();

messageDisplay('返信対象無し。アンカー無し投稿。');

return {

...r,

updatedLoopStatuses: _LoopStatuses,

};

}

return null;

})();

if (p) {

//投稿

postThenCheckError(

_ThreadUrl.serverName(),

_MyPosterName.randomize({

nickname: SETTINGS.nameSettings.nickname,

korokoro: SETTINGS.nameSettings.korokoro,

ip: SETTINGS.nameSettings.ip,

area: SETTINGS.nameSettings.area,

}),

SETTINGS.mail,

p.text,

);

//_TextCsvCursorsと_LoopStatusesを更新

_TextCsvCursors = p.updatedTextCsvCursors;

_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();

messageDisplay([

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

} else {

messageDisplay([

`返信対象が現われるのを待機中...。`,

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

}

//短時間で連投しまくると規制されるので一定時間待機。

wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));

}

}

/**

* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。

* @param {string} serverName サーバー

* @param {MyPosterName} _MyPosterName

* @param {string} postMail メール

* @param {MyText} _MyText

* @param {number} retryTimes

* @returns {void}}

*/

function postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes = 0,

) {

const r =

retryTimes === 0

? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(

postTo5chTread,

postConfirm,

)

: new ValuesOfPost(

serverName,

_MyPosterName,

postMail,

_MyText,

).postSubstring(retryTimes, postTo5chTread, postConfirm);

if (r) {

back();

return;

}

//エラーページに飛ばされた。エラー情報取得。

wait(7);

const error = createPostErrorMessage().analyze();

messageDisplay(error.message);

if (error.order === 'KILL') {

kill();

} else if (error.order === 'SKIP') {

return;

} else if (error.order === 'TRUNCATE') {

back();

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes + 1,

);

} else if (error.order === 'WAIT') {

wait(SETTINGS.waitTimeForAvoidingPunishment);

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

} else if (error.order === 'LOGIN') {

//動作未確認

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

}

return;

}

/**

* 現在IPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。

* @returns

*/

function checkCurrentIpNotTheIp() {

//IP確認ページへ飛ぶ

openUrl('https://www.cman.jp/network/support/go_access.cgi');

const _IpAdress = createIpAdressFromCMan();

if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {

pause('現在IP指定した値が含まれていることを確認。');

//ポーズ解除したならもう一度確認しに。

checkCurrentIpNotTheIp();

}

return;

}

/**

* 設定に致命的な問題が無いか検査

* @returns

*/

function checkSettings() {

if (

SETTINGS.postSettings.noAnkerPost === false &amp;&amp;

SETTINGS.postSettings.replyPost === false

) {

return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow &lt; 0 &amp;&amp;

SETTINGS.postSettings.replyPostTextCsvStartRow &lt; 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',

);

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||

SETTINGS.postSettings.replyPostTextCsvStartRow === 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',

);

}

}

/**

* 入力フォームを表示して入力されたスレURLを受け取る。

* @returns {ThreadUrl}

*/

function openPromptThreadUrl() {

const url = prompt('スレURL入力');

return new ThreadUrl(url);

}

/**

* 開いてるスレレス全て読み取ってPostListインスタンスを作って返す。

* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。

* createPostDOMListを使う。

* @returns {PostList}

*/

function createPostList() {

const posts = window.document.getElementsByClassName('post');

return new PostList(Array.from(posts).map((e) =&gt; new Post(e)));

}

/**

* 開いてるスレレス全て取得してPostDOMListに格納して返す。

* @returns

*/

function createPostDOMList() {

const posts = window.document.getElementsByClassName('post');

var arrPostDOMList = [];

for (let index = 0; index &lt; posts.length; index++) {

//HTMLCollectionからElementを1つずつ抽出して配列に。

arrPostDOMList.push(posts.item(index));

}

return new PostDOMList(arrPostDOMList);

}

/**

* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。

* @returns {PostErrorMessage}

*/

function createPostErrorMessage() {

return new PostErrorMessage(

window.document

.g Permalink | 記事への反応(0) | 15:40

2022-04-30

あのエロい広告をもう一度見たい

彼氏浮気してたのでおしゃれに変身して見返しちゃお!みたいな感じの海外ゲームがあって(Love fantasymatch and stories〜というもの)、その広告エロくて最高なんだけど全然出てこない

なんかおっぱいを強調した秘書っぽい格好の女とビジネスマンの男がイチャイチャしてるのを彼女が目撃みたいな感じだったんだけどすんげーエロくてやばかった。拙者、オフィスセックス大好き侍であるがゆえに……

つべにも見たいバージョン広告動画は上がってない

アプリストアにもなし

自分home pinってゲームやっててこれが出たのでもうずっとhome pinやって探してるけど出てきてくれない

あああああのエロい女に合わせてくれえええええ

2022-04-06

ニコニコプレミアムアワードランキングが酷いのでアレを非表示にするスクリプト

ニコニコプレミアムアワードランキング、某んがすランキングになっていて鬱陶しいので、ふにん某を非表示にするスクリプトを書いた。

Tempermonkeyとかで使ってくれ。文字実体参照は適宜置き換えること。

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       masuda
// @match        https://site.nicovideo.jp/premiumaward/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=nicovideo.jp
// @grant        none
// ==/UserScript==

const sleep = (ms) =&gt; new Promise((resolve) =&gt; setTimeout(resolve, ms));

const blockList = [
    "ふにんがす",
    "なのそん",
    "Among us",
    "Among Us",
    "アモアス",
];

(async function() {
    'use strict';

    await sleep(100);
    const list = document.querySelectorAll("li.game");

    for (const elem of list) {
        const title = elem.getElementsByClassName("title")[0].innerText;
        if (blockList.some((word) =&gt; title.includes(word))) {
             elem.remove();
        }
    }
})();

https://site.nicovideo.jp/premiumaward

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