Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

「console.log」を含む日記 RSS

はてなキーワード: console.logとは

2024-09-22

AIインフルエンサーたちはChatGPTが世に出る前は何を投稿していたのか?(2/2)

AIインフルエンサーたちはChatGPTが世に出る前は何を投稿していたのか?(1/1)の続き

吉見拓哉|Takuya Yoshimi

このTwitterアカウントは、主にYouTubeSEO競馬アニメなどの話題について呟いており、自身活動や興味関心について発信しています

YouTubeプレミアムが500円増額。しかし、、、不可逆!!!

shimayuz@AIクリエイター

このアカウントは、日々の米国株暗号通貨市場動向、特にテクノロジー関連株やビットコイン価格変動についてツイートしています

ゼロコロナ政策再び。 $AAPL生産に影響が懸念され大きく下落。更に経済混乱が想定され、株価はSP500全業種で

一方で年末商戦売上堅調な滑り出しで $AMZN

暗号資産レンディングBlockFiが経営破綻暗号通貨も軒並み下落。

チャート上、なんとか踏み止まるか? 」

元木大介ᯅシステム生成AI Babel/Zoltraak & 生成AI塾

このアカウントは、AI特にプロマネAIや量子AIに関する話題や、仕事効率化、プログラミング、そして最新の技術トレンドについて呟いています

"プロマネAI実証実験を開始しました!量子AI×NotionによるプロマネAI実証実験を開始 https://prtimes.jp/main/html/rd/p/000000003.000082094.htmlvia @PRTIMES_JP"

sangmin.eth | Dify Ambassador

このアカウントは、主にOpenAIの最新言語モデルtext-davinci-003」の進化と、そのモデルを用いた英語学習ツールサービスについて呟いています特に英語学習におけるAI活用とその重要性を強調しています

"朝起きたら世界がまた変わっていた(笑)。@OpenAI が最新モデルtext-davinci-003」を発表。主な特徴は、①より明確で、説得力のある文章が書ける②より複雑な指示にも対応③より長い形式コンテンツが生成可 1月に"InstructGPT"が出た時も感動したけどそれを遥かに上回る進化、です。"

深津 貴之 / THE GUILD

このアカウントは、主にAI特に画像生成AIに関する話題を呟いています特にStable Diffusionのバージョンアップや使い方について多くのツイートをしています

結果

ここにリストアップした人たち以外もみましたが、分類すると3種類のアカウントがいて

1. ChatGPTブーム後にアカウントを始めた人

2. NFTなどの儲かりそうな技術を追いかけていた人

3. 日常ツイートをしていたが目覚めてしまった人

共通する特徴としては会社代表の人が多いです。

またIDを変更してログがヒットしない人は含まれていません(IDから特定できるけどそこまでやらなかった)

ツイートを取得するJS

javascript:(function() {

const text = Array.from(document.querySelectorAll('[data-testid="tweetText"]')).map(s => s.textContent.trim()).join('\n');

const textarea = document.createElement('textarea');

textarea.value = text;

document.body.appendChild(textarea);

textarea.select();

try {

document.execCommand('copy');

console.log('結果がクリップボードコピーされました!');

} catch (err) {

console.error('クリップボードへのコピーに失敗しました:', err);

}

document.body.removeChild(textarea);

})();

2024-09-15

RSS 取得メモ

const axios = require('axios'); // HTTPリクエストを行うためのモジュール

const fs = require('fs'); // ファイル操作モジュール

const xml2js = require('xml2js'); // XMLJSONに変換するためのモジュール

const chardet = require('chardet'); // 文字エンコーディングを検出するためのモジュール

const iconv = require('iconv-lite'); // 文字エンコーディングを変換するためのモジュール

// RSSフィードURL

const rssUrl = 'https://www.mlit.go.jp/important.rdf'; // 例としてRSSフィードURL指定

// RSSフィードを取得してファイルに保存する関数

async function fetchAndSaveRSS() {

try {

// RSSを取得

const response = await axios.get(rssUrl, { responseType: 'arraybuffer' });

const rssData = response.data;

// 文字エンコーディングを検出

const detectedEncoding = chardet.detect(rssData);

console.log('検出された文字エンコーディング:', detectedEncoding);

// UTF-8に変換

const utf8Data = iconv.decode(rssData, detectedEncoding);

// XMLJSONパース

xml2js.parseString(utf8Data, (err, result) => {

if (err) {

console.error('XML解析エラー:', err);

return;

}

// パース結果をファイル書き込み

const jsonData = JSON.stringify(result, null, 2);

fs.writeFileSync('rss_feed.json', jsonData, 'utf8');

console.log('RSSフィードファイルに保存されました。');

});

} catch (error) {

console.error('エラーが発生しました:', error);

}

}

// 実行

fetchAndSaveRSS();

2024-09-05

anond:20240904032316

anond:20240904032316についてたブクマカの初めて買ったCDリリース年を調べた。

スクレイピング

Chromeコンソールから

for (let a of document.body.getElementsByClassName('entry-comment-text js-bookmark-comment')) console.log(a.textContent) 

ってやってテキスト集める。

AIリリース年を教えてもらう

Microsoft Copilotに「以下の文章に出てくる、音楽CDタイトルリリース年を一覧で表にしてください。」って指示。

タイトルリリース
パンチ・ザ・クロック (エルヴィス・コステロ)1983年
ハイランドハードレイン (アズテックカメラ)1983年
TSUNAMI (サザンオールスターズ)2000年
ロケット団永遠に (ポケモン)1998年
パラダイス銀河 (光GENJI)1988年
さよなら人類 (たま)1990年
SUPER BEST II (CHAGE&ASKA)1992年
LOVEマシーン (モーニング娘。)1999年
treasure (B’z)1998年
pleasure (B’z)1997年
POP LIFE (JUDY AND MARY)1998年
F-ZERO GX サウンドトラック2003年
Chicago 17 (Chicago)1984年
Wind Climbing ~風にあそばれて~ (奥井亜紀)1997年
バロック音楽不明
季節がいく時 (SPEED)1999年
天外魔境 (ゲーム)1989年
旅人のうた (中島みゆき)1995年
ドリームシフト (地球防衛組)1991年
INNOCENT SORROW (abingdon boys school)2006年
カルトグラススターズ (ミッシェルガンエレファント)2000年
悪の華 (BUCK-TICK)1990年
風が通り抜ける街へ (ZARD)1993年
My Little Lover1995年
globe1996年
小松未歩 ファーストアルバム1997年
愛の言霊 (サザンオールスターズ)1996年
そばかす (JUDY AND MARY)1996年
中村めいこ不明
ポケットモンスター赤緑 BGM音源1997年
TWO-MIX TRUTH1996年
Wind Climbing ~風にあそばれて~ (魔法陣グルグル)1997年
ジュラシックパーク サウンドトラック1993年
After Burner サウンドトラック (SEGA)1987年
Love Wing (ハミングバード)1993年
super best 2 (CHAGE&ASKA)1992年
中山美穂 8cmCDシングル不明
C-Girl (浅香唯)1988年
天晴 (サディスティック・ミカ・バンド)1974年
Hi! (光GENJI)1988年
CAROL (TM NETWORK)1988年
DORA THE BEST (ドラえもん)1999年
がじゃいも1997年
美少女戦士セーラームーン~In Another Dream1992年
交響曲ドラゴンクエストIV 導かれし者たち N響1990年
ポケモン言えるかな1997年
dear (大江千里)1989年
めずらしい人生 (KAN)1990年
BECAUSE (有頂天)1986年
スーパーゼビウス 12inchEP (細野晴臣)1984年
ZUTTO (永井真理子)1990年
愛は勝つ (KAN)1990年
クラシックCD (100円ショップ)不明
ブルーハーツ ファーストアルバム1987年
I’m Here (小比類巻かほる)1988年
微笑みの爆弾 (幽遊白書)1992年
くじら12号 (JUDY AND MARY)1996年
無罪モラトリアム (椎名林檎)1999年
愛のままにわがままに 僕は君だけを傷つけない (B’z)1993年
WORST (聖飢魔II)1990年
BADDEST (久保田利伸)1989年
Delight Slight Light KISS (松任谷由実)1988年
リフレインが叫んでる (松任谷由実)1988年
Gift for Fanks (TM NETWORK)1987年
もっと強く君を抱きしめたなら1994年
Che Che-Bye Bye (種ともこ)1991年
負けないで (ZARD)1993年
愛と虐殺の日々 (聖飢魔II)1991年
ペットショップボーイズ1986年
機動戦士Zガンダム オリジナルサウンドトラック1985年
マルコじいさん (さねよしいさこ)1995年
めざせポケモンマスター1997年
淋しい熱帯魚 (Wink)1989年
キャロル (TM NETWORK)1988年
幽遊白書 ミュージックバトル編1993年
蜘蛛の糸 (筋肉少女帯)1990年
Winners (サイバーフォーミュラー)1991年
だんご3兄弟1999年
Achtung Baby (U2)1991年
faith (George Michael)1987年
ダイアモンド (プリンセス プリンセス)1989年
The very best of Unicorn1993年
ALFEE GOLD (ALFEE)1985年
そして伝説へ (鴻上尚史)1986年
マシンガンズの集い (SEX MACHINEGUNS)1998年
FF4 アレンジミニアルバム1991年
ブルーウォーター (森川美穂)1990年
鉄骨飲料1990年
SPY (槇原敬之)1994年
尾崎家の祖母(3) (まりちゃんズ)1977年
TIME (REBECCA)1986年
もう一度TENDERNESS1995年
HIGH LANDER (爆風スランプ)1989年
空耳の丘 (遊佐未森)1990年
Yellow Yellow Happy (ポケットビスケッツ)1996年
リッジレーサー2 サウンドトラック1994年
フラッシュパパメンソール (電気グルーヴ)1995年
さよなら人類 (たま)1990年
倉木麻衣アルバム不明
カルミナ・ブラーナ (輸入盤)不明
スキャットマン (Scatman John)1994年
白い雲のように (猿岩石)1996年
幽☆遊☆白書 オリジナルサウンドトラックVol2~魔界の扉編~1994年
ヴェルディ川崎応援歌不明
ShinWeAre (BoA)2003年
忘れない/風の住む星 (西脇唯)1995年
ヴィヴァルディ四季不明
田園 (小学館クラシック・イン」)不明
ゼルダの伝説 風のタクト オリジナルサウンドトラック2003年
MUSIC from HYDLIDE31987年
君だけのTomorrow (ドロンズ)1997年
松浦亜弥アルバム不明
ドラクエサントラ不明
マンモスフラワー (フラワーカンパニーズ)2000年
めざせポケモンマスター1997年
ユグドラシル (BUMP OF CHICKEN)2004年
マリオRPG サウンドトラック1996年
ファイナルファンタジーVII リユニオントラック1997年
Time to Destination (Every Little Thing)1998年
ショパンアルバム (アルゲリッチ)不明
ここは春の国 (谷山浩子)1988年
Valkyrie Notes (TONERICO)2019年
Love Phantom (B’z)1995年
with you (三上博史)1993年
夏の日の1993 (class)1993年
いとしのエリー (サザンオールスターズ)1979年
Round About Midnight (Miles Davis)1957年
Gift for Fanks (TM NETWORK)1987年
ez do dance (TRF)1993年
イージューライダー (奥田民生)1996年
ロマサガ サウンドトラック1992年
ドラクエ2 ドラマCD1990年
DATE (岡村靖幸)1988年
ETERNAL WIND (森口博子)1991年
ARAKAWA魂 (荒川ラップブラザーズ)2003年
愛の言霊 (サザンオールスターズ)1996年
ドラゴンクエスト3 サウンドトラック1988年
モールワールド (ヒューイ・ルイス&ザ・ニュース)1988年
HOME (Mr.Children)2007年
trfアルバム不明
ガニ (とんねるず)不明
暴動 (There’s a Riot GoinOn) (Sly and the Family Stone)1971年
カミワザ -dIvine works-不明
シングルベスト10 おまけつき (シャ乱Q)1997年
カウボーイビバップ サウンドトラック1998年
ガンダムF91 サウンドトラック (森口博子)1991年
暴れだす (ウルフルズ)1995年
団子3兄弟1999年
エルドラド (THE ALFEE)1997年
foo? (ポルノグラフィティ)2001年
Until Strawberry Sherbet (林原めぐみ)1997年
勇気のしるし~リゲインテーマ~ (時任三郎)1989年
いとしさと切なさと心強さと (篠原涼子 with t.komuro)1994年
REVIEW (GLAY)1997年
愛の言霊 (サザンオールスターズ)1996年
ナイスビート (キンモクセイ)2002年
Carol (TM NETWORK)1988年
サン=サーンスオルガン (マルティノン)不明
銀河鉄道の夜 (細野晴臣)1985年
ロード第二章 (THE 虎舞竜)1993年
IT’S ONLY LOVE (福山雅治)1994年
バザール3兄弟音頭不明
さよなら人類 (たま)1990年
フロムイエスタデイ (桑田佳祐)1992年
アスタリスク (ORANGE RANGE)2005年
ark (L’Arc~en~Ciel)1999年
春よ、来い (松任谷由実)1994年
ray (L’Arc~en~Ciel)1999年
ポケモン言えるかな1997年
ニーベルングの指環 管弦楽曲集 (ショルティ/VPO)1986年
minoru land (向谷実)1986年
1stアルバム (人間椅子)1990年
the great escape (JUDY AND MARY)2001年
bluebird (浜崎あゆみ)2006年
Variety (竹内まりや)1984年
Watermark (エンヤ)1988年
BEAT EMOTION (BOOWY)1986年
ARAKAWA魂 (荒川ラップブラザーズ)2003年
MYSELF ~風になりたい~ (徳永英明)1991年
ひとりじゃない (DEEN)1996年
ドリームハンター麗夢 サウンドトラック1985年
シンディ・ローパー不明
Keep The Faith (Bon Jovi)1992年
君がいるだけで (米米CLUB)1992年
シェイク (SMAP)1996年
決戦は金曜日 (DREAMS COME TRUE)1992年
SelEVENTH MOON (FireBomber)1995年
田園 (玉置浩二)1996年
プロビジョン (スクリッティ・ポリッティ)1988年
クラッシュ万事休す不明
yellow yellow happy (ポケットビスケッツ)1996年
STONED TOWN (akeboshi)2004年
ナイトフォール・イン・ミドルアース (ブラインド・ガーディアン)1998年
1st (ブルーハーツ)1987年
FENCE OF DEFENSE III (FENCE OF DEFENSE)1988年
カラクリハウス (レピッシュ)1989年
just communication (two-mix)1995年
マーラー交響曲7番「夜の歌」ロリン・マゼール指揮ウィーンフィル不明
未来航路 (La’cryma Christi)1997年
BELLS (吉田美奈子)1986年
原子心母 (Pink Floyd)1970年
プリパラミュージックコレクション不明
トラブル・イン・ヘブン (宇都宮隆)1994年
Kiss me (氷室京介)1992年
Past Masters1 (The Beatles)1988年
super donuts (スターダストレビュー)1990年
ザ・タイマーズ1989年
LIFE (小沢健二)1994年
FF5 サウンドトラック1992年
踊るポンポコリン (B.B.クィーンズ)1990年
イノセントマン (ビリー・ジョエル)1983年
だんご3兄弟1999年
ベト5シューベルト未完成 (カルロ・マリア・ジュリーニ)不明
MAGIC OF LOVE (アニメ魔法陣グルグル)1994年
ラグランジュポイント サウンドトラック1991年

途中で切れたので分割する。 続き→ anond:20240905115337

2024-08-16

anond:20240816092530

増田コードを表示する方法説明しますね。

記法

ふつう投稿と違うのは以下の3点だけです。

特殊文字は、実体参照(& や <)ではうまくいきません。数値参照を使ってください。

出したい文字数値文字参照
&&
<&#60;
>&#62;

このようなコードを表示したい場合

const dinner = (chicken, curry) => {
if (chicken && curry) {
console.log('チキンかつカレー')
}
}

このように入力してください。

<pre>const dinner = (chicken, curry) =&#62; {<br>    if (chicken &#38;&#38; curry) {<br>        console.log('チキンかつカレー')<br>    }<br>}</pre>

2024-03-01

Imagusの設定

imagusがあにまん掲示板マウスオーバー画像表示に対応してなかったのでsieve設定を自前で書いてみた。

名前:animan

img:bbs\.animanch\.com\/(?:thumb_m|storage\/thumb_m)\/(\d{7}\/\d{1,4})

to:

:

var s0=$[0];

if (s0.includes("storage")) {

console.log("過去ログ.");}

else {

console.log("現行スレ.");}

return s0.replace("thumb_m","img");

2024-01-05

JavaScript でさあ

変数 value が null でも undefined でもない事を確認するのに

   if (value) {
      console.log('null でも undefined でもねーわ');
   }

これほんとやめろって。

おかげで value に 0 とかが入ってる時に、このコンディションが false になるわけだ。

色んな会社さんのコード見てきたけど、このタイプバグ本当に多い。

今まさに、まーたこバグを見つけて増田を書いてるわけで。

昨年は、世界的にも有名な会社さんのフレームワークがこれでバグってた。

ももう既にシステムの一部は本番稼働しててフレームワークはいじれない。

仕方ないので value には一旦文字列の '0' を渡しておいて if (value) {~} の中の重要ロジックを動かして

(めっちゃ幸運な事に、数値 0 のかわりに文字列 '0' でも正しく動くような、型について緩いロジックだったから)

その後で改めて value に数値 0 を入れなおすという、きったないハックで誤魔化した事もある。

自分お客様だったら怒るね。「いやいや、全部理想的コードにしてちょうだいよ。お金払ってんだよ?」って。

もし建築世界でこんな誤魔化しが起こってたら、人の命が消えちゃうよ。。。

2023-12-25

let hello = {hello: "hello"};

let bye = hello.hello;

hello.hello = "aaa";

console.log(bye); helloが表示

↑わかる。helloの値とそれに伴い参照が変わってもbyeの参照は以前"hello"を指してるから

let hello = {hello: "hello"};

let bye = hello;

hello.hello = "aaa";

console.log(bye.hello);aaaが表示

↑わかったようなわからんような…これ以上オブジェクトネストした者同士の代入の組み合わせされるといよいよ理解が追い付かなくなる

2023-10-31

数分で始めるJavaScript

Hello, World!

と出力されていれば成功

これで JavaScript を実行する最小限の環境は整った。

好きなようにプログラムを書いてコンソールに出力したり画面に書き出したりしてみて。

「指示の通りにならない!」という時はどこでつまずいてるか書いて。対応策を助言できるかもしれない。

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 =&gt; {

('.entrylist-contents-title &gt; a')

if(diffSec &gt;

とかの

&lt;&gt;

<>

に変えてね

他にも見落としあるかも

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

// ==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-07-17

console.logデバッグしてたけどデバッガ使ったら便利でしたくらいのレベル感の話

2023-02-03

anond:20230203143007

OfficeScriptsで結合されたセル範囲を求めるには、「Range.MergeAreaメソッド使用します。このメソッドは、結合されたセル範囲を含むRangeオブジェクトを返します。以下は、結合されたセル範囲を求めるためのサンプルコードです。

 

var range = context.workbook.getActiveSheet().getRange("A1");

if (range.getMergeCells().length &gt; 0) {

var mergeArea = range.getMergeArea();

console.log("Merge Area: " + mergeArea.getAddress());

}

 

このサンプルコードでは、アクティブシート内の「A1セルが結合されているかどうかを確認しています。もし結合されている場合、「Range.MergeAreaメソッド使用して結合されたセル範囲を求め、そのアドレスコンソールに出力しています

2022-11-06

anond:20221102154429

これまだ1/2だとか言っている人がいるので、本当に2/3かどうかプログラミングで確かめれば良い。

// 「ある夫婦に2人子供がいる」
// 1. 男or女 である確率は 1/2 (トランスジェンダーなどは考えない)
function child() { return ["男", "女"][Math.round(Math.random())]; }
// 2. 100000組の二人の子がいる夫婦を作る
const families = Array(100000).fill(null).map(function () { return [child(), child()] });

// 「片方の子が男であるとき」
// 3. その中で少なくとも一人が男である夫婦を選ぶ
const families_have_son = families.filter(function (children) { return ~children.indexOf("男"); });

// 「もう片方が女である確率は?」
// 4. 3の総数が母数である
const total = families_have_son.length;
// 5. 3の中で、女のいる夫婦を選ぶ
const families_have_son_and_dauter = families_have_son.filter(function (children) { return ~children.indexOf("女") });
// 6. 5を母数で割る
console.log(families_have_son_and_dauter.length / total);

ブラウザコンソールに打ち込めば動くので試してみてほしい。

私の環境では 0.6674999002778923 になった。

2/3が正しそうだ。

実際には、このコードを書いている時点で答えは明確になってしまう。

コードに落とし込むことによって隠された前提をつまびらかにする必要が出るため、実行ボタンを押す以前にはっきりする事がある。

よくわからない問題コードに落とし込むとよい。

ちなみに 1/2 にしたければ、

// 「片方の子が男であるとき」
// 3. その中で「はじめの子」が男である夫婦を選ぶ(間違い)
const families_first_is_son = families.filter(function (children) { return children[0] === "男" });
const total = families_first_is_son.length;
// 5. 3の中で、「次の子が」女である夫婦を選ぶ
const families_first_is_son_and_second_is_dauter = families_have_son.filter(function (children) { return children[1] === "女"; });
// 6. 5を母数で割る
console.log(families_first_is_son_and_second_is_dauter.length / total);

のようにすれば予想通り 0.49868384317792047...(1/2に近似する) のようになる。

しかしこれは問題文の読み間違いであるということがわかる。

2022-11-05

anond:20221105105948

問題点はそこじゃないだろ。1/2 か 2/3 かであって、、 

せっかくコードを書いてやってみるなら、そこがわかるようにしろよ、、

こうやな。

samples = [...new Array(10000)].map(_=> [...new Array(2)].map(_=>Math.random()<0.5?"男":"女") );
// 片方の子が男であるパターンを数える
all = samples.filter(childs=> childs.filter(x=>x=="男").length > 0).length;
// 片方の子が男でもう片方が女であるパターンを数える
hit = samples.filter(childs=> childs.filter(x=>x=="男").length > 0 && childs.filter(x=>x=="女").length > 0).length;

// 確率を出す
console.log(hit / all); // →だいたい 0.6666.. になる。

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-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-12

もしJavaScriptに自信ニキがいたら教えてくれ

html上で埋め込んでる動画再生位置指定したくてコードを書いた

PCとかAndroidではうまく動いてるんだが、iPhoneでだけはなぜか動かなくて困ってる

別の方法とかあったら教えてほしい

↓今書いてるスクリプト

console.log($('#video').get(0).currentTime);

$('#video').get(0).currentTime = 120;

2022-02-22

ES6

const masuda = (masuda_boyaki) => {

 return masuda_boyaki.map(el => el.includes("クンニ") ? "✋(👁👅👁)🤚せい!" : "クンニ🤚(👁_👁)✋せん" )

}

console.log(masuda(data))

anond:20220222131301

var a = "input[tx]"

console.log(a);

って感じでコンソールでだそうとすると不明エラー云々がでるんよ。

anond:20220222131428

まじで?

function testlogin() {

var a = "input[tx]"

console.log(a);

}

ってやったら

不明エラーが発生しました。しばらくしてからもう一度お試しください。”って出来たからできないものかと思った。

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