配列と乱数

2024.04.10

Logging

おはようございます、配列の中からランダムでデータを取得したい場合はアレイランドがベストです.この関数の良いところは、指定回数が設けれているところです.デフォルトは1回に設定されていてintで返却されますが、指定数が1以上の場合は配列にインデックスが返されます.

自分の説明が分からない方用に、Geminiにも解説してもらいます.

PHPのarray_rand関数は、配列からランダムな要素(キー)を1つまたは複数取得する関数です。

array_rand(array $input, int $num_req = 1): mixed
  • $num_reqが1の場合: ランダムな要素(キー)
  • $num_reqが1より大きい場合: ランダムな要素(キー)の配列
https://gemini.google.com/

この関数を知る前は配列をカウントしてランダムを発生していましたが、array_rand関数を知ってからはこちらを使用しています.調べたところ他の言語でも同じ様な関数が用意されているようですね.

明日へ続く.

タグ

$num_req, array, array_rand, array_rand関数, gemini, input, int, mixed, php, アレイランド, インデックス, キー, デフォルト, ランダム, 指定回数, 複数取得, 要素, 言語, 配列, 関数,

デザインを変更しました。

2023.10.06

Logging

おはようございます、ブログのデザインを変更しました、オリジナルなデザインにしました。前々から変えようと思っていてやっとこさデザインを変更した感じですね。すごく単純なテンプレートですが、これから先、いまのテンプレートをベースに変更していきたいと思っています。

背景は動く動画にしています、スマホでは動きませんがこちらも動くようにgif画像か何かにして対応します。。また動画は飽きたら変えていくか、ランダムか時間帯で動画を変更していきたいと思っています。

このテンプレートの利点は画像や動画を差し込まなくても滞在時間が昔とあまり変わらないことが利点です、そしてSEOはもう生成AIの時代にはあまり役に立たない、むしろBOTに引っ掛からないほうがページを参照して頂けるのではと思っています。

なお、今まで通りアイキャッチ画像は入れていますが、RSSやシェアして頂けるときぐらいしか表示されない感じです。

タグ

BOT, Gif画像, RSS, SEO, スマホ, デザイン, テンプレート, ベース, ランダム, 利点, 前々, 動画, , , 時代, 時間帯, 滞在時間, 生成AI, 背景, 通りアイキャッチ画像,

385円で有料会員ってあるですね。#Radiko

2023.06.12

Logging

おはようございます、385円で有料会員ってあるですね。昔、ラジコの有料会員になっていたのですが、数ヶ月で解約し先日また有料会員になりました。会員になった理由はフルリモートでお仕事をするとき、無音で仕事をすると何か静か過ぎてテンション下がるので音楽を流していたのですが、それにもやはり飽きてきて、この頃は高知放送のFMをラジコで聴いていたわけです。そんな訳でこの際、有料会員になって全国各地のラジオを聴いてみようと至った訳です。

ラジコの良いところは、いろんな曲がランダムで聴けるところです。サブスクでスポティファイなどの音楽サービスもあると思いますが、アレだと似通った音楽しか聞けないので、再度ラジコの有料会員になりました。これで全国各地のFMが聴けるので飽きるまで有料会員でいたいなって今のところ思っています。

このサービス凄く安い気がします。全国各地のラジオが385円です、ただ広告スキップされません。そこが残念なところですが価格帯は痛くないかなって思います。

タグ

fm, アレ, この際, サブスク, スポティファイ, テンション, フルリモート, ラジオ, ラジコ, ランダム, 価格帯, 全国各地, 再度ラジコ, , , 有料会員, 無音, , 音楽, 高知放送,

Gドライブの画像仕分けがGASを使うと楽すぎでした! #gas #jscode

2022.11.09

Logging

おはようございます。昨日は暖か陽気でしたね~?、今日はどうかな?🤔

今日はGoogleドライブで画像仕分けが楽すぎた件を書いていきます。GASとはgoogle apps scriptの略です、このGASを使用するとGmailやスプレッドシート、Googleドキュメント等をプログラムで操作出来ちゃうサービスです。尚、プログラムコードはjavascriptベースになっていてとても書きやすいです。

function imagesDrive() {
  //画像を仕分けフォルダID googleドライブURL->adaoiujxzouaunWxz33oam__ (ランダム英数字記号の部分)
  const folder = DriveApp.getFolderById('画像を仕分けフォルダID'); 
 //移動先のフォルダID googleドライブURL-> UQIJjaoskamlqaxalp98swq--e (ランダム英数字記号の部分)
  const imgfolder = DriveApp.getFolderById('移動先のフォルダID');
  let hasfiles = folder.getFiles();
  while(hasfiles.hasNext()){
    let hasfile = hasfiles.next();
    if(/(\.png|\.jpg)$/.test(hasfile.getName())){
      hasfile.moveTo(imgfolder);
    }
  }
}

今回、上記のようなコードを書いてサクサクと画像の仕分けを行いました。正規表現パターンを変えたりする事で任意の文字列ファイルだけを別フォルダに移動したりコピー、または削除したりすることも可能です(※コードの追加や変更が必要)。GASのエディタではコード補完機能もあるので初めての方でもプログラマーなら何とかなると思います。

プログラム初心者の方へ、jpg,png,gif等をそれぞれのフォルダに別けたい場合はどのようなコードを書いたら良いでしょうか?上記のコードをヒントにコードを書いてみて下さい。回答に関しては下記に一つの答えとして書いています。

function imagesDrive() {
  //画像を仕分けフォルダID googleドライブURL->adaoiujxzouaunWxz33oam__ (ランダム英数字記号の部分)
  const folder = DriveApp.getFolderById('画像を仕分けフォルダID'); 
 //移動先のフォルダID googleドライブURL-> UQIJjaoskamlqaxalp98swq--e (ランダム英数字記号の部分)
  let folderId = {png:'移動先のフォルダID1',jpg:"移動先のフォルダID2",gif:"移動先のフォルダID3"};
  Object.keys(folderId).forEach((keyname)=>{
    let imgfolder = DriveApp.getFolderById(folderId[keyname]);
    let hasfiles = folder.getFiles();
    while(hasfiles.hasNext()){
      let hasfile = hasfiles.next();
      let r = new RegExp("(\."+ keyname + ")$");
      if(r.test(hasfile.getName())){
        hasfile.moveTo(imgfolder);
      }
    }
  });
}

タグ

33, 39, adaoiujxzouaunWxz, apps, const, DriveApp, folder, function, GAS, getFolderById, Gmail, Google, gt, ID, imagesDrive, javascript, jscode, oam, script, UQIJjao, url, コード, サービス, シート, スプレッド, ドキュメント, ドライブ, フォルダ, プログラム, ベース, ランダム, 今日, , 使用, 操作, 昨日, 画像, , 移動, 英数字, 記号, 部分, 陽気,

パスコードをランダムで生成するコードです。JavaScriptで書いてみました。

2021.08.27

Logging

今日は朝から蒸し暑さを感じます。あの一週間も続いた雨はどこに行ってしまったのでしょうか?東京では立て続けに悲惨な事件が起きています、報道することにより模倣犯を増やしているような気がします。

さて、今日はパスコード(パスワード)をランダムで生成するコードをJavaScriptで書いてみました。パスコードの強度はそれ程、高くないかもしれませんが一応、パスコードを生成する事が出来ます。ソースコードを書いていてうっかりミスをしてしまいまして、無限ループを発生させてバグ取りに5分ぐらい費やしました。ループした原因は違う変数を判断文で使っていたという初歩的なミスです。この頃はそういうミスは稀ですが・・・その結果、無限ループに陥っていました。

パスコードというものを作ってみて案外簡単に作れるものだと実感。これを作る前にパスコードメーカーを作成するという動画を見ました。githubにソースコードも記載していましたので考え方は参考にしましたがコードは違うと思います。たにぐちさんの動画はvue.jsを使用してパスコードを作っているのに対して、自分はネイティブjsでパスコードを生成しているという違いがあります。

https://zip358.com/tool/PassCode/

JavaScriptでパスコードを生成するコード。
document.getElementById("btn1").addEventListener("click", () => {
    const mode = {
        mode0: !document.getElementById("mode0").value ? 8 : document.getElementById("mode0").value,
        mode1: document.getElementById("mode1").checked ? true : false,
        mode2: document.getElementById("mode2").checked ? true : false,
        mode3: document.getElementById("mode3").checked ? true : false,
        mode4: document.getElementById("mode4").checked ? true : false
    };
    const data = {
        txt_cnt: mode.mode0,
        txt1: mode.mode1 ? "0123456789" : "",
        txt2: mode.mode2 ? "ABCDEFGHIJKLMNOPQRSTUVWXYZ" : "",
        txt3: mode.mode3 ? "abcdefghijklmnopqrstuvwxyz" : "",
        txt4: mode.mode4 ? "#$&*@+-" : "",
    };


    // console.log(mode,data);

    let str = "";

    if (mode.mode1 || mode.mode2 || mode.mode3 || mode.mode4) {
        let txt_str = data.txt1 + data.txt2 + data.txt3 + data.txt4;
        do {
            str = "";
            for (let i = 1; i <= data.txt_cnt; i++) {
                str = str + txt_str.substr((getRandomInt(txt_str.length) - 1), 1);
            }
        } while ((() => {
            let flg = [];
            flg[0] = mode.mode1 ? /[0-9]/.test(str) : true;
            flg[1] = mode.mode2 ? /[A-Z]/.test(str) : true;
            flg[2] = mode.mode3 ? /[a-z]/.test(str) : true;
            flg[3] = mode.mode4 ? /[#|$|&|*|@|+|\-]/.test(str) : true;
            
            return (() => {
                let f = true;
                for (const key in flg) {
                    if (!flg[key]) {
                        f = false;
                    }
                }
                return f;
            })();
            return false;
        })() === false);
        document.getElementById("view").value = str;
    } else {
        alert("どれかを選択してください");
    }

});
function getRandomInt(max) {
    return Math.floor(Math.random() * max);
}

タグ

5, github, javascript, コード, こと, これ, ソース, どこ, バグ, パスコード, パスワード, ミス, メーカー, もの, ランダム, ループ, , , 事件, 今日, 作成, 判断, , 動画, 原因, 報道, 変数, 実感, 強度, 悲惨, , , 東京, 模倣犯, , 無限, 生成, 発生, 立て続け, 簡単, 結果, 記載, , ,

算数問題が100問ランダムで生成されます。そんなツールを作りました。

2021.08.08

Logging

暑い日が続いています、このまま茹でダコにでもなってしまいそうな部屋の温度ですが・・・エアコンは殆どOFFで日中を過ごして夕方から夜中まで稼働させております。そんな日を過ごしていて、たまに外へ出かけると夏休みなのか、学生さんたちが自転車でうろうろしているのを見かけるようになってきました。

そんな中で算数問題が100問ランダムで生成されるそんなツールを作りました。100問を暗算で計算すると中々、100点が取れないという事がわかってしまい、自分でもビックリしてしまいました。簡単なはずなのに何故か、足し算を間違えて引いてしまったりと単純なミスがあり、満点が取れないという事実をしってしまい、少し落ち込んでいます。

あのドラゴン桜の中にある数学教師がやるスパルタのあれは本当にそうなんだなって実感しました。これを毎日解き続けることにより、算数(数学の基礎)に打ち勝つことが出来そうですね。因みに計算などしない日々を過ごしているとロクに計算できない頭になりますよ。自分は計算しない字も書かないので読み書きが出来ない、結構、ヤバい状況になっているようです、皆さんもこんな自分のようにならないように、たまには頭の体操をすることをオススメします。

最後に100問:算数のリンクを貼っときます。

https://zip358.com/tool/arithmetic/

タグ

100, off, あれ, エアコン, こと, このまま, これ, スパルタ, たま, ツール, ドラゴン, パス, びっくり, ミス, ランダム, , 中々, , 事実, 単純, 問題, 基礎, 夏休み, 夕方, , 夜中, 学生, 実感, 少し, 教師, 数学, , 日々, 日中, 暗算, 本当, , 殆ど, 温度, 満点, 生成, 稼働, 算数, 簡単, 自分, 自転車, 茹でダコ, 計算, 足し算, 部屋,

IQテストをしてみたけど天才ではなかった事が残念です(嘘?。

2021.07.02

Logging

もともと天才(ギフテッド)ではない事は知っていましたが、あらためてIQ130の壁を思い知らされましたよ。

以前、国際IQテスト(有料)を受けてみてIQ113という結果を頂き、今度はあの天才(高IQ)だけが会員になれるメンササイト(公式ノルウエーサイト)のIQテストを受けた。IQテストを受けてみた結果はIQは115だったので、国際IQテストのスコアは間違っていない事がわかります。IQテストを受けてみて最初の問題は簡単なのだけど徐々に問題が難しくなっていき…、全問は解けなかった・・・そもそも何問あるか分かりません!?。因みに時間制限があります。そして問題はランダムではないです。再度解いてみて問題の傾向は変わらなかったですが、回答の並びは変わっているかもしれません??。

凡人にはギフテッドが良いという印象があるかと思いますが、実際、IQが高いから良い人生を歩むとは限らないみたいですね。最近、あのマカフィーを作ったジョン・マカフィーさん(メンサ会員)も刑務所で命を絶ちましたから。
ギフテッドの事を知りたいという方はNHKオンデマンドで素顔のギフテッドというのがありますので良かったらどうぞ?{頭が良いから他人の嫌な一面まで気づいてしまい、なかなか大変だな・・・と}
https://www.nhk-ondemand.jp/goods/G2020106400SA000/

タグ

113, 115, 130, IQ, ギフテッド, サイト, スコア, テスト, ノルウエー, マカフ, メンサ, もともと, ランダム, , 人生, 今度, 会員, 何問, 傾向, 全問, 公式, 再度, 凡人, 制限, 印象, 問題, , 回答, 国際, , 天才, 実際, 時間, 最初, 最近, 有料, 残念, 簡単, 結果, ,

カラーコード表をjson形式で取り込み背景をランダム表示。

2020.10.04

Logging

カラーコード表をjson形式で取り込み背景をランダム表示する、あまり使用しないかもしれない、プログラムコードを書きました?。
実際、必要とするのはオブジェクトで出来ているカラーコード表かなと思っています。ウェブの初心者だったとき、ジャバスクリプトで背景の色が変わったりすることが、新鮮で楽しかったのですが今はそういう感覚が昔より抜け落ちているなと感じます。プログラムを書くことが楽しいという感覚がここ数年、抜け落ちていて、休日はコードを前より書くことが少なくなっています。

何年もコードを書くと飽きるのかもしれないなというのは仕方がないことなのかもしれません。でもそこでモチベーションを下げずに要られるひとは更に上への技術が身につくのかもなと思っています。

飽きるというのは言い換えれば、上達が止まったことを指すそうです。

var h = {
	color: [
		{ name: "black" }
		, { name: "aliceblue" }
		, { name: "darkcyan" }
		, { name: "lightyellow" }
		, { name: "coral" }
		, { name: "dimgray" }
		, { name: "lavender" }
		, { name: "teal" }
		, { name: "lightgoldenrodyellow" }
		, { name: "tomato" }
		, { name: "gray" }
		, { name: "lightsteelblue" }
		, { name: "darkslategray" }
		, { name: "lemonchiffon" }
		, { name: "orangered" }
		, { name: "darkgray" }
		, { name: "lightslategray" }
		, { name: "darkgreen" }
		, { name: "wheat" }
		, { name: "red" }
		, { name: "silver" }
		, { name: "slategray" }
		, { name: "green" }
		, { name: "burlywood" }
		, { name: "crimson" }
		, { name: "lightgray" }
		, { name: "steelblue" }
		, { name: "forestgreen" }
		, { name: "tan" }
		, { name: "mediumvioletred" }
		, { name: "gainsboro" }
		, { name: "royalblue" }
		, { name: "seagreen" }
		, { name: "khaki" }
		, { name: "deeppink" }
		, { name: "whitesmoke" }
		, { name: "midnightblue" }
		, { name: "mediumseagreen" }
		, { name: "yellow" }
		, { name: "hotpink" }
		, { name: "white" }
		, { name: "navy" }
		, { name: "mediumaquamarine" }
		, { name: "gold" }
		, { name: "palevioletred" }
		, { name: "snow" }
		, { name: "darkblue" }
		, { name: "darkseagreen" }
		, { name: "orange" }
		, { name: "pink" }
		, { name: "ghostwhite" }
		, { name: "mediumblue" }
		, { name: "aquamarine" }
		, { name: "sandybrown" }
		, { name: "lightpink" }
		, { name: "floralwhite" }
		, { name: "blue" }
		, { name: "palegreen" }
		, { name: "darkorange" }
		, { name: "thistle" }
		, { name: "linen" }
		, { name: "dodgerblue" }
		, { name: "lightgreen" }
		, { name: "goldenrod" }
		, { name: "magenta" }
		, { name: "antiquewhite" }
		, { name: "cornflowerblue" }
		, { name: "springgreen" }
		, { name: "peru" }
		, { name: "fuchsia" }
		, { name: "papayawhip" }
		, { name: "deepskyblue" }
		, { name: "mediumspringgreen" }
		, { name: "darkgoldenrod" }
		, { name: "violet" }
		, { name: "blanchedalmond" }
		, { name: "lightskyblue" }
		, { name: "lawngreen" }
		, { name: "chocolate" }
		, { name: "plum" }
		, { name: "bisque" }
		, { name: "skyblue" }
		, { name: "chartreuse" }
		, { name: "sienna" }
		, { name: "orchid" }
		, { name: "moccasin" }
		, { name: "lightblue" }
		, { name: "greenyellow" }
		, { name: "saddlebrown" }
		, { name: "mediumorchid" }
		, { name: "navajowhite" }
		, { name: "powderblue" }
		, { name: "lime" }
		, { name: "maroon" }
		, { name: "darkorchid" }
		, { name: "peachpuff" }
		, { name: "paleturquoise" }
		, { name: "limegreen" }
		, { name: "darkred" }
		, { name: "darkviolet" }
		, { name: "mistyrose" }
		, { name: "lightcyan" }
		, { name: "yellowgreen" }
		, { name: "brown" }
		, { name: "darkmagenta" }
		, { name: "blush" }
		, { name: "cyan" }
		, { name: "darkolivegreen" }
		, { name: "firebrick" }
		, { name: "purple" }
		, { name: "seashell" }
		, { name: "aqua" }
		, { name: "olivedrab" }
		, { name: "indianred" }
		, { name: "indigo" }
		, { name: "oldlace" }
		, { name: "turquoise" }
		, { name: "olive" }
		, { name: "rosybrown" }
		, { name: "darkslateblue" }
		, { name: "ivory" }
		, { name: "mediumturquoise" }
		, { name: "darkkhaki" }
		, { name: "darksalmon" }
		, { name: "blueviolet" }
		, { name: "honeydew" }
		, { name: "darkturquoise" }
		, { name: "palegoldenrod" }
		, { name: "lightcoral" }
		, { name: "mediumpurple" }
		, { name: "mintcream" }
		, { name: "lightseagreen" }
		, { name: "cornsilk" }
		, { name: "salmon" }
		, { name: "slateblue" }
		, { name: "azure" }
		, { name: "cadetblue" }
		, { name: "beige" }
		, { name: "lightsalmon" }
		, { name: "mediumslateblue" }
	]
};
document.body.style.backgroundColor = h.color[getRandomInt(h.color.length)].name;
function getRandomInt(max) {
	return Math.floor(Math.random() * Math.floor(max));
}

タグ

Black, color, json, name, quot, var, ウェブ, オブジェクト, カラー, コード, ここ, こと, ジャバ, スクリプト, そこ, とき, ひと, プログラム, モチベーション, ランダム, , 上達, , 休日, 何年, 使用, 初心者, , 実際, 形式, 必要, 感覚, 技術, , 新鮮, , 背景, , 表示, ,

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。

2019.02.22

Logging

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。
実際、自分の階層に合わして呼び出しを変更してください。
なお、さくらレンタルサーバーでクロンの設定をして自動投稿できます。
ライブラリの設置などは割愛してます。

<?php
// cron:: cd /home/user/www/zip358.com/site/tw; /usr/local/bin/php tw.php
require_once ('../../wp-load.php');
require "vendor/autoload.php";
use AbrahamTwitterOAuthTwitterOAuth;
$consumer_key = "XXXXXXXXXXXXXX";
$consumer_secret = "XXXXXXXXXXXX";
$access_token = "XXXXXXXXXXXXXX";
$access_token_secret = "XXXXXXXXXXXXXXX";
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$args = array(
	'posts_per_page' => 1,
    'orderby' => 'rand'
);
$posts = get_posts($args);
foreach ( $posts as $val ){
    $href =  get_permalink($val->ID);
    $title = get_the_title($val->ID);
    $res = $to->post("statuses/update", array("status" => $title . " " . $href));
}

タグ

358, Abraham, access, autoload, bin, cd, com, consumer, cron, home, key, local, lt, once, php, require, secret, site, tok, tw, TwitterOAuth, use, user, usr, vendor, WordPress, wp-load, XXXXXXXXXXXX, XXXXXXXXXXXXXX, zip, クロン, サーバー, さくら, ツイート, ピックアップ, ライブラリ, ランダム, レンタル, , 割愛, 変更, 実際, 投稿, 自分, 自動, 記事, 設定, 設置, 階層,