30万件のデータを扱っている方の話を聞いて一瞬😱となる。 #laravel #Queue #worker #jobs

2022.12.01

Logging

おはよう12月!!。皆さんおはようございます。今日から寒くなるそうですね。

先日、面談の中で30万件のデータを扱っている方の話を聞いて一瞬尻込みしましたが、自分でもその処理を捌くことが出来そうだなと思ったので、ダミーデータを作って今月中に捌いてみようと思います。なお、ローカルサーバーを使用して捌くのでレンタルサーバーやクラウドサーバーでメモリリークなんかで落ちたりしたらごめんなさい🙇。

因みに30万件のデーターをどう捌いているかといえば、非同期処理(Queue)で捌いているとの事。フレームワークはLaravelを使用し、非同期処理はララベルの機能であるキューを使用してバックエンドで処理を立ち上げているとの事。要は個々プロセス複数立ち上げて並列処理で動かすという事です、プロセスを立ち上げ過ぎたら、メモリ食いすぎてサーバー事態が落ちる可能性があるので別サーバーで動かすのが理想ぽっい、その場合はコネクションの設定してあげないといけない事やプロセスをどれぐらい立ち上がると良いのかなどの設定が必要みたいですね。

php artisan queue:table
php artisan migrate

ともあれ自分でダミーデータを用意して試してみないと感覚が掴めないし、実際上手くいくかなどが分からないので試してみます😳。

明日、1万件のダミーデーターを複製(コピペ)して30万件のエクセルファイル作る方法を記載します。

タグ

12, 30, jobs, Laravel, Queue, worker, エンド, キュー, クラウド, こと, サーバー, ダミー, データ, データー, バック, フレームワーク, プロセス, メモリ, ララベル, リーク, レンタル, ローカル, 一瞬, , 並列, , , 事態, 今日, 今月, 使用, 個々, 先日, 処理, , 可能性, 同期, , 機能, 皆さん, 自分, 複数, , , 面談,

CSSファイルの設定を読み込んで一括背景色変更するコード。 #cssfile #javascript #coding #colors

2022.11.30

Logging

おはようございます、先日の日曜日は原因不明の体調不良で寝込んでおりました(¦3[▓▓]。

今日は何とか体調が回復したので、CSSファイルの設定コード読み込んで一括背景色変更するプログラムコードを作成しました。※実際、自分のブログ・サイトで動いているコードになります。

<link rel="stylesheet" href="examplestyle.css">

導入方法はまずヘッダーに変更したいCSSファイルを記述します。次にbody内に下記のコードを記述します。

<span id="site_description"></span>

最後にJSコードを挿入します。JSコードはファイルで読み込むでもベタ書きでも良いのですが、上記のHTMLタグより下に記述してください。そうしないと動作しません😗。

let htmlcode = ["#efefef", "#181B39", "#262a2e", "#192734", "#1c483b", "#bf7800", "#83094f"].map(elm => `<span class='color_code' style='color:${elm}' data-color-code='${elm}'>■</span>`).join("\n");

const basecolor = "#262a2e";
let cookiefn = function (CodeColor) {
    let r = document.cookie.split(';');
    return r.length ? ((r) => {
        let changecolor = "";
        for (let ii = 0; ii < r.length; ii++) {
            let content = r[ii].split('=');
            for (let i = 0; i < content.length; i++) {
                if (content[i].replaceAll(" ", "") === "bgcolor_code") {
                    changecolor = content[i + 1];
                }
            }
        }
        return changecolor?changecolor:CodeColor;
    })(r) : CodeColor;
};

let old_color = cookiefn(basecolor);
document.getElementById("site_description").insertAdjacentHTML("afterend", htmlcode);
[...document.querySelectorAll(".color_code")].forEach(elm => {
    elm.addEventListener("click", function (e) {
        color_set(elm.getAttribute("data-color-code"));
    });
});

color_set(old_color);

function color_set(color) {
    for (let ii = 0; ii < document.styleSheets.length; ii++) {
        if (String(document.styleSheets[ii].href).match(/mag_tcd036-child\/style\.css\?ver=/)) {
            for (let i = 0; i < document.styleSheets[ii].cssRules.length; i++) {
                let element_css_code = document.styleSheets[ii].cssRules[i];
                try {
                    element_css_code.style.backgroundColor = color;
                    if (color === "#efefef") {
                        element_css_code.style.color = "#000000";
                        
                    } else {
                        element_css_code.style.color = "#FFFFFF";
                    }
//いらないかも領域🤔👇
                    document.querySelectorAll("#wp-calendar > tbody > tr > td > a").forEach(elm=>{
                        elm.style.backgroundColor = "#909091";
                    });
                    document.getElementById("searchsubmit").style.backgroundColor = "#000";
                    document.querySelector("#s").style.backgroundColor = "#909091";
                    [...document.querySelectorAll("code")].forEach(elm=>{
                        [...elm.querySelectorAll("span")].forEach(childen_elm=>{
                            childen_elm.style.backgroundColor = "#565656";
                        });
                    });
//いらないかも領域🤔👆                    
                } catch (error) {
                }
            }

            document.cookie = "bgcolor_code=" + color;
        }
    }
}

注意事項:背景色を変更するCSSファイルをJSコードでチェックしています。そのチェックしている部分を外すと全てのCSSファイルの背景色を変えることが可能です。

タグ

, body, coding, colors, css, cssfile, description, examplestyle, gt, href, ID, javascript, JS, link, lt, quot, rel, site, span, stylesheet, コード, サイト, ファイル, ブログ, プログラム, ベタ, ヘッダー, 一括, 下記, 不明, 不良, 今日, 体調, 作成, 先日, , 原因, 回復, 変更, 実際, 導入, 挿入, 方法, 日曜日, 最後, 背景色, 自分, 記述, 設定,

そういやインフラ系やサーバーサイドのYOUTUBERってあまり知らないよね。

2022.10.26

Logging

おはようございます。先日、コロナワクチンを接種して熱が出たので昨日、薬を飲みました。本日は通常と変わらないですという予約投稿を書いている日曜日の夜。

さて、今日はサーバーサイドのYOUTUBERを見かけたのでご紹介です、お名前はうんちゃまさん、何故、そんな名前なのかや動画をまだ三本しか見ていないので、どんな人なのか等は分からない部分は有るものの。そんな悪人さんではないみたいなので、今回、ご紹介します。

マイクラサーバーのセキュリティ対策って何をするの?【マイクラサーバーお悩み相談室】

サーバーを建てるに当ってどういう所を気にしているのかとか、自分の知見はどの程度なのかの答え合わせが出来て良かったと思っています。

因みにうんちゃまさんは、マイクラサーバーを運営している人です、自分も昔、マイクラサーバーを運営したいなと思って友人にマイクラサーバーは儲かるのか質問した事があります。結果、儲からないとの返答を得たので結局、運営せずに今に至っています。うんちゃまさんは、有志などがいて何とかなっているらしいです。自分もそういうITエンジニアの横のつながりが欲しいなというこの頃。

トイウコトデ、うんちゃまさんのYOUTUBEチャンネルはこちら

散財系鯖主うんちゃま

タグ

YOUTUBER, インフラ, うん, コロナ, ご紹介, サーバー, マイクラ, ワクチン, 三本, 予約, , , , 今回, 今日, , 先日, 動画, 友人, 名前, , 悪人, , 投稿, 接種, 日曜日, , 昨日, 有志, 本日, , , 知見, 程度, 答え, 結果, 自分, , 質問, 返答, 通常, 運営, 部分,

映画、#21ブリッジ を観ましたので感想を残しときます😋

2022.10.21

Logging

おはようございます、LINEチャンネルってどうやって削除したら良いのか???

さて、遅れながら先日、21ブリッジを観ましたので感想を残しときます、感想というか短文なのだけども…。このストーリー感は何処かで観たことが有るので、そこが少し残念だったけども全体を通して見飽きない作りになっていたのは確かです。

今回、VRとかを使用して仮想大画面(スクリーン)で観たらもっと楽しめた可能性はあります、エンタメ系な作品なので、スマホなどで観るようには作られていないですね。

次回、21ブリッジを観るときは大画面で観ようと思います。

尚、今回は若干、辛口レビューでしたがあまり映画を観ない人にとっては、ハラハラ・ドキドキのストーリー展開だと思います、自分の場合、映画を観尽くしているので前、こういう展開の落ちは観たなって感じになりやすい…。

タグ

21, line, Vr, エンタメ, こと, スクリーン, ストーリー, スマホ, そこ, チャンネル, とき, ブリッジ, レビュー, , 今回, 仮想, 何処か, 作り, 作品, 使用, 先日, 全体, 削除, , 可能性, 場合, 少し, 展開, , 感じ, 感想, 映画, 次回, 残念, 画面, 短文, 自分, 若干, 落ち, 辛口,

数珠繋ぎのツイートシステムに予約機能を付けました😂 #php #code

2022.10.07

Logging

おはようございます、偏頭痛持ちは雨が降るが一番大変です☔。

先日、数珠繋ぎのツイートシステムを作ったのですが、そのシステムに予約機能を付けました。尚、TwitterAPIのバージョン2でスケジュールのパラメーターが今のところ無いですね。これから先、機能が付くかも知れないですが今のところ無いようです。因みにソースコードは近日中にQiitaGithubにUPします。此処ではソースコードの一部を掲載します(※記事を更新しました下へスクロール🫠)。

Twitter API v2 ツイート数珠繋ぎ

尚、crontabでPHPファイルを叩くようにしています、あと注意事項ですが予約を一度した投稿については変更等は出来ません、編集機能等の機能追加の予定はないです。また、予約管理はsqlite3を使用して管理しています。

<?php
date_default_timezone_set('Asia/Tokyo');
ini_set("display_errors",0);
require_once "./data/tw-config-v2.php";
require_once "../vendor/autoload.php";

use Abraham\TwitterOAuth\TwitterOAuth;

class tw
{
    var $connection = null;
    var $pdo = null;
    function __construct()
    {
        $this->connection = new TwitterOAuth(APIKEY, APISECRET, ACCESSTOKEN, ACCESSTOKENSECRET);
        $this->connection->setApiVersion("2");
    }
    function db_connection()
    {
        try {
            //code...
            $res = $this->pdo = new PDO("sqlite:./data/tw-tweets-db.sqlite3");
        } catch (\Throwable $th) {
            //throw $th;
            //print $th->getMessage();
            $res = false;
        }
        return $res;
    }

    function timecheck($timeonoff, $times)
    {
        if (!$timeonoff) return true;
        $n = new DateTime();
        $t = new DateTime($times);
        return $t <= $n ? true : false;
    }

    function pickup_tweets(mixed $tw_text = null, int $timeonoff = 0, mixed $times = null, string $id = "")
    {
        if (!$times) return false;
        $obj = (object)[];
        $times = preg_replace("/\-/", "/", $times);
        $times = preg_replace("/T/", " ", $times);

        if ($this->timecheck($timeonoff, $times)) {
            if (isset($tw_text) && is_array($tw_text)) {
                foreach ($tw_text as $key => $value) {
                    if (preg_replace("/[ | ]/", "", $value)) {
                        $obj = !$key ? ($this->connection->post("tweets", ["text" => $value], true)
                        ) : ($this->connection->post("tweets", ["reply" => ["in_reply_to_tweet_id" => $obj->data->id], "text" => $value], true)
                        );
                    }
                }
                return true;
            }
        } else {
            return $timeonoff ? $this->save_sqlite($tw_text, $timeonoff, $times, $id): true;
        }
    }

    function save_sqlite($tw_text = null, int $timeonoff = 0, mixed $times = null, string $id = "")
    {
        if ($this->db_connection()) {
            try {
                //code...
                if (isset($tw_text) && is_array($tw_text)) {
                    foreach ($tw_text as $key => &$value) {
                        if (preg_replace("/[ | ]/", "", $value)) {
                            $stmt = $this->pdo->prepare("insert into tweets (tw_id,user,times,tw_text)values(:tw_id,:user,:times,:tw_text)");
                            $stmt->bindValue(":tw_id", $key, PDO::PARAM_INT);
                            $stmt->bindValue(":user", $id, PDO::PARAM_STR);
                            $stmt->bindValue(":times", $times, PDO::PARAM_STR);
                            $stmt->bindValue(":tw_text", $value, PDO::PARAM_STR);
                            $stmt->execute();
                        }
                    }
                }
                $this->pdo = null;
                return true;
            } catch (\Throwable $th) {
                //throw $th;
                return false;
            }
        }
    }
    function tweets_load(string $id = "")
    {
        if (!$id) return false;
        try {
            //code...
            $value = null;
            if ($this->db_connection()) {
                $stmt = $this->pdo->prepare("select * from tweets where user = :user order by times,tw_id asc;");
                $stmt->bindValue(":user", $id, PDO::PARAM_STR);
                $res = $stmt->execute();
                $value = $res ? $stmt->fetchAll() : false;
                $this->pdo = null;
            }
            return $value;            
        } catch (\Throwable $th) {
            //throw $th;
            return false;
        }
    }
    function tweets_update(int $key = 0, int $timeonoff = 0, mixed $times = null, string $id = "",mixed $tw_text="")
    {
        try {
            //code...
            if(!preg_replace("/[ | ]{0,}/","",$tw_text))return false;
            if ($this->db_connection()) {
                $stmt = $this->pdo->prepare("update tweets set tw_text = :tw_text where tw_id = :tw_id and user = :user and times = :times");
                $stmt->bindValue(":tw_id", $key, PDO::PARAM_INT);
                $stmt->bindValue(":user", $id, PDO::PARAM_STR);
                $stmt->bindValue(":times", $times, PDO::PARAM_STR);
                $stmt->bindValue(":tw_text", $tw_text, PDO::PARAM_STR);
                $stmt->execute();
                $this->pdo = null;
            }
        } catch (\Throwable $th) {
            //throw $th;
            return false;
        }
        return true;

    }

    function tweets_delete(int $key = 0, int $timeonoff = 0, mixed $times = null, string $id = "")
    {
        try {
            //code...
            if ($this->db_connection()) {
                $stmt = $this->pdo->prepare("delete from tweets where tw_id = :tw_id and user = :user and times = :times");
                $stmt->bindValue(":tw_id", $key, PDO::PARAM_INT);
                $stmt->bindValue(":user", $id, PDO::PARAM_STR);
                $stmt->bindValue(":times", $times, PDO::PARAM_STR);
                $stmt->execute();
                $this->pdo = null;
            }
        } catch (\Throwable $th) {
            //throw $th;
            return false;
        }
        return true;
    }

    function bat_tweets(mixed $value = null)
    {
        if (!$value) return false;
        $obj = (object)[];
        $t = "";
        foreach ($value as $key => $val) {
            if ($this->timecheck(1, $val["times"])) {
                $obj = ($val["times"]<>$t)? ($this->connection->post("tweets", ["text" => $val["tw_text"]], true)
                ) : ($this->connection->post("tweets", ["reply" => ["in_reply_to_tweet_id" => $obj->data->id], "text" => $val["tw_text"]], true)
                );
                $this->tweets_delete($val["tw_id"], 1, $val["times"], $val["user"]);
                $t = $val["times"];
            } else {
              //  var_dump($val);
              //  break;
            }
        }
    }
}

if ($argv[0]) {
    $tw = new tw();
    $value = $tw->tweets_load(xss_d($argv[1]));
    $tw->bat_tweets($value);
}
function xss_d($val = false)
{
    if (is_array($val)) {
        foreach ($val as $key => $value) {
            $val[$key]  = strip_tags($value);
            $val[$key]  = htmlspecialchars($val[$key]);
        }
    } else {
        $val  = strip_tags($val);
        $val  = htmlspecialchars($val);
    }
    return $val;
}

追記:予約編集機能なども付けました🙄。

GithubとQittaのリンクはこちらです。
Github:https://github.com/taoka-toshiaki/tweets-system-box1
Qitta:https://qiita.com/taoka-toshiaki/items/5ef12b60b267742bf584

タグ

2, , 39, Asia, Code, crontab, date, default, github, ini, lt, php, qiita, Se, set, Sqlite, timezone, Tokyo, TwitterAPI, UP, コード, これ, システム, スクロール, スケジュール, ソース, ツイート, ところ, バージョン, パラメーター, ファイル, 一部, , 予定, 予約, 事項, , 使用, 偏頭痛, , 先日, 変更等, 大変, 投稿, 掲載, 数珠繋ぎ, 更新, 機能, 機能等, 此処, 注意, 管理, 編集, 記事, 近日, 追加, ,

基本情報技術者試験ワード集と単語帳作りアプリで学習の下準備をする方法! #FE #英語 #効率

2022.10.06

Logging

おはようございます、朝、3時半頃から起きています😪。

先日から英語の勉強をアプリではじめました、自分が使用しているのはモノグサというアプリです。このアプリをインストールしたのは二年前の話です、そのアプリを使用して効率良く英単語を覚えていってます、なんかよく分からないけど覚えて行けている🙄。

さて、それとは別に本題のお話です、単語帳作りアプリを使って基本情報技術者試験に出てくるワードを再学習しています。ワードの方は基本情報技術者試験ドットコムから引っ張ってきています、そのワードをCSV化してアプリに入れました。個人的に使用している分にはOKですが、これを公開や共有するとNGになりますので使用時はお気をつけてください🙇。

ワードを収取する方法はブラウザのコンソール画面に下記のコードを貼り付けて収集しました。
基本情報技術者試験ドットコムのキーワード集「あ」から「ん」までのリンクページをそれぞれ開きコンソール画面でコードを実行して、それをUTF8のファイルにペーストして一つのファイルにしてCSV保存。本当はnode.jsでコードを書いて実行でもしようかなと思っていたのですが、それすら面倒くさいと思ったので、こちらの地味な方法を選択しました。尚、行末に必要なカンマを追加して上げてくださいね🙄。

let s = [];
let $moji = function(m){
   return String(m).replace(/[\,|\n|'|"]/g," ");
};
Object.keys(document.querySelectorAll(".big")).forEach((e)=>{
    s[e] = "'" + $moji(document.querySelectorAll(".big")[e].innerText) + "'" + "," + "'" + $moji(document.querySelectorAll("ul > li > div > div")[e].innerText) + "'";
});
copy(s.join("\n"));

タグ

, CSV, FE, NG, OK, アプリ, インストール, お気, お話, キーワード, コード, これ, コンソール, それ, ドットコム, ブラウザ, モノグサ, ワード, 下準備, 下記, , 使用, 先日, 公開, 共有, , 効率, 勉強, , 単語帳, , 収集, , 基本, 学習, 情報, 技術者, , 方法, , 本題, 画面, 自分, 英単語, 英語, 試験, ,

文字数カウントは奥が深いよ。日本語より𓅇エジプト😇 #javascript #code #プログラミング #unicode

2022.10.05

Logging

おはようございます、先日(日曜日のこと)は久しぶりに本屋さん巡りしていました😋。本屋📖は良いですね落ち着きます。

さて、文字コードのカウントは奥が深いなって話を記載していきます。人目線からすれば文字をカウントするという至って簡単な話にですが、PC(コンピューター)にとっては奥が深いです・・・日本語漢字も面倒だけどエジプト系の象形文字系(unicode)は本当に面倒そうです。まだ、作りかけですがツイッターの用な文字コードのカウントするjavascriptコードを書きましたのでサンプルコードとしてご使用ください

※WindowsOSの環境下でChromeブラウザ動作させ検証しました。コピペ文字には対応していません😇。UTF-8 ではない違う文字コードを貼り付けてみてください、変なことになると思います😂。例えばEUC文字コードだとか・・・。

動作サイトはこちらです。

        function moji(o) {
            let m = o.nextElementSibling;
            //ads
            let h = ((o) => {
                let l = o.value.match(/(https?:\/\/[a-z|A-Z|0-9|\-|_|%|\.|\/]{0,})/giu);
                let ml = l ? ((l) => {
                    return sum = l.reduce((s, e) => {
                        return s + e.length;
                    }, 0);
                })(l) : 0;
                return l ? {
                    len: (l.length * 23),
                    mlen: ml
                } : {
                    len: 0,
                    mlen: ml
                };
            })(o);
            //zenkaku            
            let k = ((o) => {
                let l = o.value.match(/[^\x20-\x7e]/giu);
                let ml = l ? ((l) => {
                    return sum = l.reduce((s, e) => {
                        return s + e.length;
                    }, 0);
                })(l) : 0;
                return l ? {
                    len: (l.length * 2),
                    mlen: l.length
                } : {
                    len: 0,
                    mlen: ml
                };
            })(o);
            m.innerHTML = "【 " + (o.value.length + h.len - h.mlen + k.len - k.mlen) + "文字{半角/280} 】";
            if ((o.value.length + h.len - h.mlen + k.len - k.mlen) >= 280) {
                m.innerHTML = "<span class='text-danger'>【 " + (o.value.length + h.len - h.mlen + k.len - k.mlen) + "文字{半角/280} 】</span>";
            }
        }
                    <label for="my-textarea" class="h3">文字を入力してください。</label>
                    <textarea id="my-textarea" class="form-control" oninput="moji(this);" name="" rows="3"></textarea>
                    <span class="h3"></span>

尚、サンプルコードは1バイトを一文字としてカウントしていきます、そしてURL文字はどんなに長くても23文字にカウントされます、これはTwitter社の仕様と合わしています。URL文字はURL短縮が行われ23文字の短縮URLが生成されるからその様にカウントしているのですが、なんか本物と違うですよね挙動が・・・🙇‍♂。因みに絵文字がどのようにカウントされるかは確認していません。

UTF8では絵文字(unicode)を3バイトで表記させているそうです。昔、UTF-8は2バイトで表現しているとか習っていたのですが、それはカナリ古い知識だったみたいです😇。

タグ

8, Chrome, Code, EUC, javascript, PC, Unicode, UTF-, WindowsOS, エジプト, カウント, コード, こと, コピペ, コンピューター, サンプル, ツイッター, ブラウザ, プログラミング, 久しぶり, 人目, 使用, 先日, 動作, , , 対応, , 文字, 日曜日, 日本語, 本屋, 本当, 検証, 漢字, 環境, , 簡単, 記載, , 象形, 面倒,

インターネットが常時接続が当たり前になって数年。

2022.09.24

Logging

おはようございます、予約するのを忘れて今記事を書いています🫠。

先日、ふと思ったことを記載しますね、インターネットの常時接続が当たり前になってから、10年以上の時間が経過しています。

そんな中、この頃TVの劣化が酷いなと感じることもあります、それぐらい劣化している気がします。番組も健康商品などの通販TVが多く感じます、また、コマーシャル(CM)も健康商品か保険のCMが多い気がします。

『天才の頭の中: ビル・ゲイツを解読する』予告編 – Netflix

これはどの局も同じで、どんどんとTVが劣化していっている証拠なのかもしれません。もうTVを見るのは高齢者ばかりになっている気がします。因みに私達の世代ももうインターネットでYOUTUBE等を見る割合が増えているらしいです。

そう思うと自分達が老人になる時にはTVって存在感がますます薄れていくのか、TVがインターネットへ寄り添う形、例えば今、実験的に始まっているTVの放送をインターネットに流す試みを定着させるしか他ならないような気がします。

何にせよ、あと数十年後にはYOUTUBEが老人のプラットホームになることは間違いないでしょう🫠、その頃、若者たちはVR等の違うプラットホームで生きていると思います。

時代の流れを感じる今日此の頃でした。

タグ

10, CM, TV, youtube, インターネット, こと, コマーシャル, これ, それぐらい, 世代, , 予約, , 保険, 健康, 先日, 割合, 劣化, 商品, 存在感, 定着, , 常時, 当たり前, , 接続, 放送, , , 時間, , 番組, , , 経過, 老人, 自分, 記事, 記載, 証拠, 通販, , 高齢者,

ページ無限スクロールの作り方 #インフィニティ#InfinityPageScroll #JavaScript

2022.09.22

Logging

おはようございます、台風14号が過ぎ去ってからいきなり秋模様ですね🫠。

さて、先日ツイートしたページ無限ループが出来るJavaScriptコードを書きました。これを作ろうと思ったキッカケは、自分が運営しているWordPressサイトに巷のページ無限スクロールプラグインが尽く(ことごとく)使用出来なかったので自分で自作した訳です。因みにページ無限スクロールプラグインとはページを送りをしなくてもページの最下までスクロールすると次頁を読み込んでくれるプラグインの事を指します。

下記のコードは自サイト専用なのでそのまま使用することは出来ませんが、重要な部分だけ抜き取って再利用すれば、独自のページ無限ループに対応することは可能かと思います。

コードを読んで頂ければ分かることですが、重要なポイントはページを読み込む方法とそれをDomに変換する方法だと思います。まず、ページを読み込む方法は下記のファンクションで可能です。

fetch(next_url).then(
                response => response.text()
            ).then(data => {

そしてDomに置き換えている所はこの部分になります。これら2つの箇所が重要になります。

                const parser = new DOMParser();
                const doc = parser.parseFromString(data, 'text/html');

これらの事に注意して独自コードを書いてみてください。最後に全コードを記載しときます。


let cnt = 2;
let blk = 0;
async function nextpage() {
    if (cnt !== blk) {
        blk = cnt;
        await (async () => {
            let next_url = "https://fox-black.com/blog/page/" + cnt;
            return await fetch(next_url).then(
                response => response.text()
            ).then(data => {
                const parser = new DOMParser();
                const doc = parser.parseFromString(data, 'text/html');
                let blogs = doc.querySelectorAll('.blogpage');
                cnt++;
                if (blogs[0].innerHTML !== undefined) {
                    document.querySelector(".foxpage").insertAdjacentHTML("beforeend", (function (elm) {
                        let str = "";
                        for (const key in elm) {
                            const element = elm[key];
                            if (element.innerHTML !== undefined) {
                                str += "<div class=\"blogpage\">" + element.innerHTML + "</div>";
                            }
                        }
                        return str;
                    })(blogs));
                } else {
                    if (document.querySelector("#fin") === null) {
                        document.querySelector(".foxpage").insertAdjacentHTML("beforeend", "<div id=\"fin\"></div>");
                    }
                }
            }).catch(error => {
                if (document.querySelector("#fin") === null) {
                    document.querySelector(".foxpage").insertAdjacentHTML("beforeend", "<div id=\"fin\"></div>");
                }
            });
        })();
    }
}

if (navigator.userAgent.match(/iPhone|Android.+Mobile/)) {
    window.addEventListener("scroll", async function () {
        let s = (() => {
            let tgt;
            if ('scrollingElement' in document) {
                tgt = document.scrollingElement;
            } else if (this.browser.isWebKit) {
                tgt = document.body;
            } else {
                tgt = document.documentElement;
            }
            return tgt;
        })();
        if (document.querySelector("#fin") === null && s.scrollTop >= (s.clientHeight - 650)) {
            await nextpage();
        }
    });
} else {
    document.querySelector(".foxpage").addEventListener("scroll", async function () {
        if (document.querySelector("#fin") === null && document.querySelector(".foxpage").scrollTop >= (document.querySelector(".foxpage").scrollHeight - 300)) {
            await nextpage();
        }
    });
}


タグ

14, dom, InfinityPageScroll, javascript, WordPress, インフィニティ, キッカケ, コード, こと, これ, サイト, スクロール, それ, ツイート, プラグイン, ページ, ポイント, ループ, 下記, , 作り方, 使用, 先日, 利用, 可能, 台風, 変換, 対応, 専用, , 方法, 最下, 模様, 次頁, 無限, , , 自作, 自分, , 運営, 部分, 重要,

Sqliteで作った簡易掲示板のコードを配布致します。#php #code

2022.09.20

Logging

おはようございます。台風は過ぎ去りましたがせっかくの三連休が残念です💦。

今日は先日、Sqliteを使用して簡易掲示板を作ってみましたのでコードを配布致します、尚、PHP8の環境下で動作させています(PHP7系でも動作すると思います)。

Sqliteってnow()関数がなかったりだとか、Deleteする時に、noカラムを昇順しlimitを使用して削除出来ないだとか、いろいろとMysqlとは違う所があり、面倒だなと思いながらコードを書きました、尚、SqliteはWebサーバーの階層に置かないように、置いても良いですが・・・。そのままの状態だと誰でもダウンロードが可能になってしまいますのでご注意ください。自分は地下に眠らしています😅。

一応、二重投稿防止の為に20秒経過しないと再投稿出来ないようにしています😌。トライしていない事は禁止ワード等がありません🤔。つけようと思ったのですがまぁ良いかなと、、、。

動作している環境のリンクはこちら。

https://reborn9.sakura.ne.jp/

軸となるPHPのソースコードを2つ貼っときますね。

<?php
session_start();
$toke_byte = openssl_random_pseudo_bytes(16);
$csrf_token = bin2hex($toke_byte);
$_SESSION['csrf_token'] = $csrf_token;
?>
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="Description" content="Enter your description here" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <link rel="stylesheet" href="assets/css/style.css?<?= time() ?>">
    <title>掲示板</title>
</head>

<body class="p-3 text-white">
    <div class="p-4 shadow rounded" style="background-color:#d6dbdf;">
        <div class="container mt-5">
            <div class="row">
            <div class="col-12 text-center">
                <h1 class="shadow" style="color:#195a57;">掲示板::version 2.5</h1>
            </div>
                <div class="col-12">
                    <div class="input-group shadow rounded">
                        <div class="input-group-append">
                            <span class="input-group-text bg-dark text-white" id="my-addon">ニックネーム</span>
                        </div>
                        <input class="form-control" type="text" name="name" placeholder="ニックネームを入力" aria-describedby="my-addon">
                    </div>
                    <div class="form-group shadow rounded">
                        <label for="my-textarea">コメント</label>
                        <textarea id="my-textarea" class="form-control" name="comment" rows="7"></textarea>
                    </div>
                    <button id="btn" class="mt-2 btn btn-info text-white shadow rounded" type="button">投稿する</button>
                </div>
            </div>
        </div>
        <div class="container mt-5">
            <div class="row">
                <div id="view" class="col-12"></div>
            </div>
        </div>
    </div>
    <footer>
        <a href="/">TOP</a> :: © Reborn9.sakura.ne.jp <?=date("Y")?>
    </footer>
    <input type="hidden" name="csrf_token" value="<?= $csrf_token ?>">
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.9.2/umd/popper.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.0/js/bootstrap.min.js"></script>
    <script src="assets/js/main.js?<?= time() ?>"></script>
</body>

</html>
<?php
class db
{
    var $pdo = null;
    function __construct()
    {
        try {
            $this->pdo = new PDO("sqlite:../../bbs.sqlite3");
            $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);        //code...
        } catch (\Throwable $th) {
            //throw $th;
            print $th->getMessage();
        }
    }
    function select_limit()
    {
        if($this->pdo){
            $stmt = $this->pdo->prepare('select * from bbs order by no desc limit 0,5');
            $stmt->execute();
            $result = $stmt->fetchAll();
            $stmt = null;
            $this->pdo = null;
            return new view($result);
        }
    }
    function insert($name,$comment,$sns_cnt=0)
    {

        try {
            $stmt = $this->pdo->prepare('INSERT INTO bbs (`time`,`name`,`comment`,sns_cnt)values(strftime(\'%Y年%m月%d日 %H時%M分%S秒\',CURRENT_TIMESTAMP, \'localtime\'),:name,:comment,:sns_cnt)');
            $stmt->bindParam(':name', $name, PDO::PARAM_STR);
            $stmt->bindParam(':comment', $comment, PDO::PARAM_STR);
            $stmt->bindParam(':sns_cnt', $sns_cnt, PDO::PARAM_INT);
            $stmt->execute();
            $stmt = $this->pdo->prepare('DELETE FROM bbs WHERE bbs.no = (SELECT no from bbs ORDER BY no ASC LIMIT 1);');
            $stmt->execute();
            $stmt = null;
            $this->pdo = null;
            return true;
        } catch (\Throwable $th) {
            print $th->getMessage();
            return false;
        }
    }
}

class view{
    var $item = null;
    function __construct($item)
    {
        $this->item = $item;        
    }
    function view_item($item="")
    {
        try {
            $item = $item?$item:$this->item;
            ob_start();
            ?>
            
            <?php
            foreach($item as $key=>$value){
                ?>
                <div class="mt-2 row txtbox shadow rounded">
                <div class="col-3 name_<?=$value["no"]?> rounded-start fs-6">
                    ニックネーム::<?=$value["name"]?>さん
                </div>
                <div class="col-9 time_<?=$value["no"]?> fs-6">
                    投稿日時::<?=$value["time"]?>
                </div>
                <div class="col-12 comment_<?=$value["no"]?>">
                    <?= nl2br($value["comment"])?>
                </div>
                <div class="col-12 sns_cnt_<?=$value["no"]?>">
                    <!-- <?=$value["sns_cnt"]?> -->
                </div>
                </div>
                <?php
            }        
            ?>
                
            <?php
            $ret["view"]= ob_get_clean();
            $ret["msg"]= "done";
    
        } catch (\Throwable $th) {
            //throw $th;
            $ret["msg"] = "error";
        }
        return $ret;
    }
}

session_start();
$ret = null;
$mode =  xss_defence($_POST["mode"]);
// $time =  ;
$name =  xss_defence($_POST["name"]);
$comment =  xss_defence($_POST["comment"]);
$sns_cnt =  (int)xss_defence($_POST["sns_cnt"]);
if (isset($_POST["csrf_token"]) 
 && $_POST["csrf_token"] === $_SESSION['csrf_token'] && (function($t){
    return time() - $t > 20?true:false;
 })($_SESSION["save"])) {
    if($mode==="save"){
        $name = !preg_replace("/[ | ]/","",$name)?"匿名":$name;
        $comment = !preg_replace("/[ | ]/","",$comment)?"":$comment;
        if($comment){
            $db = new db();
            $db->insert($name,$comment);
            $_SESSION["save"] = time();
        }
    }
    $db = null;
    $db = new db();
    $ret = $db->select_limit()->view_item();
    print  json_encode($ret);
}
function xss_defence($value){
    if(is_array($value)){
        foreach($value as $key=>$val){
            $value["$key"] = strip_tags($val);
            $value["$key"] = htmlspecialchars($value["$key"],ENT_QUOTES);
        }

    }else{
        $value = strip_tags($value);
        $value = htmlspecialchars($value);
    }
    return $value;
}

配布コードはこちらです。

タグ

20, 7, 8, Code, Delete, LIMIT, MYSQL, no, Now, php, Sqlite, web, いろいろ, カラム, コード, ご注意, サーバー, せっかく, そのまま, ダウンロード, トライ, ワード, 三連, , , 今日, , 使用, 先日, 削除, 動作, 可能, 台風, 地下, , 投稿, 掲示, 昇順, , 残念, , 状態, 環境, 禁止, 簡易, 経過, 自分, , , 配布, 関数, 防止, 階層, 面倒,

一億円の配当金が入るXさんの利回りを調べてみました。

2022.08.19

Logging

おはようございます、今日は偏頭痛もなく一日を過ごしたいです。

先日、株式デイトレーダーで生活している人、その界隈では有名なテスタさんが下記の呟きをしていたので、配当利回り率を調べてみました。

配当利回りを見ると殆どの銘柄で配当利回り5%超え。配当利回り率の高い銘柄では7%超えの物もありました、平均すると5%超えになります。データで見てみると意外に手堅いなと思う反面、結局、堅実派が勝つだなって印象を持ちました。

必勝法なんて無くて株が下がりだしたら売って、株が買値より高くなったら売る、その繰り返しで坦々と出来る人、そして復習と明日の策を考えられる人がトレーダーとして勝っていくだろうなって、そういう意味ではIT関係者はそういう素質を持っている人は結構多い気がします。

タグ

5, 7, IT, データ, デイトレーダー, テスタ, トレーダー, , 一億, 下記, , 今日, 偏頭痛, 先日, 利回り, 印象, 反面, 堅実, 平均, 復習, 必勝法, 意味, 明日, 有名, , 株式, 殆ど, , , 生活, 界隈, , 素質, 買値, 配当, 配当金, 銘柄, 関係者,

最高権限でも削除できないファイルが有る?

2022.08.18

Logging

おはようございます。今日は生憎の雨☔ですね。

さて、先日の事ですがBluetoothが使用できなくなって悪戦苦闘のすえ、何とか復旧した話を記載します。最初はWindowsの設定画面にBluetoothがオフになっていますという文言が表示されていました。差し込んでいるのにも関わらず、このような文言が表示されていたのでデバイスマネージャーで確認するとなにやらエラーが出ていてデバイスが強制終了している模様でした。

ドライバーを削除して再度入れ直したら、上手く動作するだろうと思っていたのですが何度繰り返しても全然駄目。そんな回復しない状態が1時間続きました。これでは埒が明かないので考えを切り替えドライバーの原因ではなく、恐らくWindows側の問題だと思いレジストリを調べました。

これが結果的に正解でした。途中レジストリが削除出来ない問題などに直面しながら最終的に使用できるようになったのです。ここで一つ勉強になったのがアドミニストレータでも削除が出来ないレジストリがあるという事です。恐らくセキュリティの観点からマイクロソフトがそういう設定をしているのだと思いますが、これが結構厄介だなと感じました。

因みにWindows10、11はバグがありブルートゥースと接続した機器が削除出来ないという不具合があるのです。今回、それが間接的に悪さをしていたのですが直接原因はオフとオンのフラグが反転していたのが問題でそちらを修正して再起動をかけると認識したという結果になります。

今回の事象は特殊なので対応はご自身でググりながら解決をお願い致します。尚、レジストリを変更したり削除したりするとWindowsが動かなくなる恐れがあるので、素人にはオススメしません。

タグ

, bluetooth, Windows, アドミ, エラー, オブ, ここ, これ, デバイス, ドライバー, ファイル, マネージャー, レジストリ, 一つ, , 今日, 何度, 使用, , 先日, 再度, 削除, 勉強, 動作, 原因, 問題, 回復, , 強制, 復旧, 悪戦苦闘, 文言, 最初, 最高, 模様, 権限, 正解, 状態, 生憎, 画面, 直面, 確認, 終了, 表示, 記載, 設定, , 途中, , 駄目,

先日からNASを導入しました🍆。良かったことしかない。

2022.08.15

Logging

こんにちは。音楽を聞きながらブログを書いています。

先日、NASを導入しました。これによって自宅で作業していた事を外出先でも出来るようになりました。まだ外出先から本当に作業できるかはわからないけど、ファイルのダウンロードしたりすることは出来るのでそれだけでも満足です。

自分の使い道としては共有フォルダ(NAS)にソースコードを入れて作業しています。共有フォルダはパスコードでロックしています、ゲストは入れないような感じにしています。その中にソースコードを入れてVScodeで開発作業をしているって感じですね。

今回のNASの導入はとっても良かったと思います。どこからでも使用できるのは快適です。本当はもっと良いNASを導入すれば良かったのですが、今のところこれが精一杯かな。いま収入もないのであまり出費は良くないなって。

そういう事もあってもなくてもですが…。安定した収入を得るため転職活動やフリーランスエンジニアで自分にあった案件があれば応募していきます。それと並行して開発も進めていくつもりです、ちょっとしたツールから半年以上かかりそうなWEBサービス開発までトライして行こうと。まぁ前と同じですね。

タグ

NAS, VScode, いま, ゲスト, コード, こと, これ, スエ, ソース, それだけ, ダウンロード, ため, どこ, ところ, パスコード, ファイル, フォルダ, フリーラン, ブログ, ロック, , , , 今回, 作業, 使い道, 使用, 先日, 共有, 出費, 収入, 外出, 安定, 導入, 快適, 感じ, 本当, 活動, 精一杯, 自分, 自宅, 転職, 開発, 音楽,

あの噂のパン屋さんへ行ってきました。小麦の○☓。

2022.07.20

Logging

こんにちは、今日は先日の雨の中、あの噂のパン屋さんへ行ってきたのでレビューします。辛口コメントです😌。

先日、小麦の奴隷というホリエモンプロデュースのパン屋さんへ行ってきました。このパン屋さんは奇抜なカレーパンが美味しいという事で有名です!!なので、自分もカレーパンと数点のパンを購入しました。味の方は食べてみてください、多くは食べれないけど自分はカレーパン好きですね。

尚、小麦の奴隷 高知瀬戸店の場所は高知県高知市瀬戸1丁目4-21サンパティオビル1Fにあります。
AM10:00~PM17:00まで(完売次第終了)
※定休日は水曜日です。

追伸:なぜ、帯屋町に店を出店しなかったのだろう、絶対そちらの方が話題になってたと思うのに!?

タグ

00, , 10, 17, 21, 4, AM, PM, カレー, コメント, サン, そちら, パティオ, パン, ビル, プロデュース, ホリエモン, レビュー, , , 今日, 先日, 出店, , , 場所, 多く, 奴隷, 完売, 定休日, 小麦, 帯屋町, , , , 有名, 次第, 水曜日, 瀬戸, 終了, 自分, 話題, 購入, 辛口, 追伸, , 高知, 高知市, 高知県,

カウントダウンしなくても片手で数えれる日数。

2022.07.11

Logging

おはようございます。毎日の事を淡々とこなしていたら、もうあと数日で今の会社を退職することになります。

先日いろいろな動画を見て結局のところ何か自分が掲げた目標で成功する方法はコレだなと思いましたので書いていきます。

何か自分が掲げた目標で成功する方法は、熱意をもって毎日のことをこなしていく事だと誰かが言っていました。ある程度、目標は必要ですがやり続ける熱意や努力がある人のほうが実になる人が多いだとか、逆に計画的に物事を進めようとしても上手くいかない事が多く、失敗するケースが多いのだとか。

これを聞いて「確かにそうだよな」と感じましたね、人生って思い通りにいかないものですよね。自分の思い通りにならないのが人生だと。思い通りになるとある意味、それは怖い事なのかもしれません。

あと掲げた目標に到達したいのならば、小さな目標をいくつも掲げると良い、例えば毎日のアクセス数をいついつまでに、10人、10人の目標が達成できたら次は20人と少しだけ目標を上げる、その連続で目標に近づく、もしくは達成することが出来ます。目標の修正と見直し(改善)も大事です。

目標に達成したければもう一つ大事になるのが、己を知るという事らしいです。自分はどんな人であるのかを深掘りしていき、欠点や優位性を箇条書きにして俯瞰することが大事になるらしいです。

そして達成するかどうかは徹頭徹尾の力がないと無理なのかも。

以上、動画を見て自分なりにまとめてみました。

タグ

10, 2, アクセス, いくつも, いろいろ, カウントダウン, ケース, こと, これ, コレ, それ, ところ, もの, , , 人生, , 会社, 何か, 先日, 到達, 努力, 動画, 失敗, 必要, 思い通り, 意味, 成功, 数日, 方法, 日数, , 毎日, 熱意, 片手, 物事, 目標, 自分, 誰か, 退職, , 達成,

自分の立ち位置はマイノリティだと思うけども。

2022.07.10

Logging

おはようございます、先日、元首相の安倍 氏が無くなりました。お悔やみ申し上げます。
今日は投票日ですね、どうなるか分かりませんが投票率は高くなりそうです。

ある宗教団体と関係があるとか言う思い込みであんな事になってしまった。本当に驚きです。いま安倍さんを称える、空気がありますが、自分はこの事件の一報を聞いて巡り巡って行いが返ってきたと感じました。

なので、何かよく分からないが行いがこの世界は返ってくる、其れはいつ返ってくるのかは分からないけど、そういうシステムになっている気がします。だから、人を傷つけたりするのは良くないどんな事情があれども。そして今の社会がこういう人たちを生み出している気がします、被害者も加害者も巡り巡ってなんだと。

だから自分は誠意を持って人には接しないといけないと、この頃、忘れかけていた事を思い出しました。

タグ

いつ, いま, お悔やみ, システム, マイノリティ, 一報, 世界, , 事件, 事情, , , 今日, 位置, 元首相, 先日, 其れ, 加害者, 団体, 安倍, 宗教, 投票, 本当, , 社会, 空気, 自分, 被害者, 誠意, 関係, ,

先日のau通信障害。今も続いていたら悲惨だな。

2022.07.05

Logging

おはようございます。通信障害は改善されたでしょうか。

復旧されていない場合もこのまま投稿タイトルで、記載していきます。因みに通信障害一日目の夜に夜な夜なデスクトップに向かって一週間分の予約投稿記事を書いていたりします。この記事は火曜日に投稿される予定です。

さて、先日のau通信障害ですが一応、不便なく電子決済とかお昼は出来たので助かりましたが夕方、仕事帰りに試しに機内モードをOFFONしてみたところ、繋がらない状態になりました。これでやっと不便だなって感じましたが、そもそも今日は土曜日出社だったので直行帰宅。

因みにこういう時の為に、オフラインデータ等を自分は保持しているので其処ら辺は大丈夫でしたが、やはり電子決済出来ないのは不便。今まで何時もお金を入れていない状態でしたので、これで何かあると大変だなってヒシヒシと感じました。ある一定の金額は財布にも入れておくべきですね。

タグ

au, OFFON, オフライン, お昼, お金, このまま, これ, タイトル, データ, デスクトップ, ところ, モード, , 一定, 不便, 予定, 予約, , 今日, 仕事, 保持, 先日, 其処ら, 出社, 土曜日, 場合, 夕方, , 大変, 帰宅, 復旧, 悲惨, 投稿, 改善, , 機内, 決済, 火曜日, , 状態, 直行, 自分, 記事, 記載, 財布, , 通信, 金額, 障害, 電子,

先日、サーバーを移行しました。AWSさようなら。

2022.06.30

Logging

おはようございます。初夏らしいですが初夏? 増暑です…😆。映画、SLAM DUNKが待ち遠しいです。

其れはさておき、サーバーをAWSからさくらVPSサーバーに移行しました、迷っている暇は無かった・・どんどんと経費がかさむので止む得なく急遽、平日の休みを使用してサーバーを移行しました。移行したんだけど、少しミスってアクセスの多いサーバーを見えなくなるという現象が出てしまいました。40分ほど閲覧できなくなってしまっていた。

結構焦りますよね。

閲覧できない状態が数時間とか続いたら大変ですよ本当に…。仕事では失敗したくないなって思います。今回の反省点はやはりサーバー移行すると何かしら環境が違うので動かなかったりする。

そういう時は落ち着いて深呼吸でもして、ログを見ることが大事、結局のところログに答えが載っていることが多いです。今回もそんな感じでした。

因みに以前書いた、サーバー移行時にscpを使う方法。これはFTP使用するよりも時間短縮になるから覚えていたほうが賢明です。

scp -irp /~/example.pem /var/www/html/* root@example.com:/var/www/html/
# scp -irp [鍵.pem] [転送元ディレクトリ] [ユーザー@ホスト:転送先ディレクトリ]

タグ

40, AWS, DUNK, SCP, SLAM, VPS, アクセス, こと, サーバー, さくら, ところ, ミス, ログ, 今回, 仕事, 以前, 休み, 使用, 先日, 其れ, 初夏, 反省点, , 大事, 大変, 失敗, 少し, 平日, 感じ, , 方法, 映画, , , 本当, 深呼吸, 状態, 現象, 環境, 移行, 経費, 閲覧,

全てポイント買いです、この頃の本活事情です。😆

2022.06.18

Logging

おはようございます、今月のお給与は全て修理代金に飛んでいきましたが、貯金と投資で何とか生きています。因みに今はサイドビジネスはネットショップ経営とブログの広告収入と言いたい所ですが、年に一回ぐらい収入が入るぐらいです。

先日、本を大量に購入しました。知っていることが殆どだと思うのですが情報の上書きと抜けている情報を詰め込むために購入しました。本の感想やツマミはツイッターにでもアップするかもしれません。

因みに電子書籍って本を購入しているわけではないという話を聞きました。なので、アカウントなどが消えてしまった場合は、同一人物であってもデータの復元は出来ないそうですね。なので、IDやパスワードは厳重に保管しましょう。パスワードに記号が一つでも入るとセキュリティは高くなりますが、総当たりで攻撃されると結局解読できてしまうので、今では二段階認証や生体認証技術が取り入られていますよね。自分も生体認証技術などを使用してパスワードを管理しています。

パスワード管理アプリは結構、重要です。年に一回費用は発生しますが必要経費だと思っています。なので、Gさんのパスワード管理はあまり信用していません。

タグ

ID, アカウント, アップ, こと, サイドビジネス, ショップ, セキュリティ, ため, ツイッター, ツマミ, データ, ネット, パスワード, ブログ, ポイント, わけ, , 一つ, 上書き, 事情, , 人物, , 今月, 代金, 使用, 保管, 修理, 先日, 全て, 厳重, 収入, 同一, 場合, 大量, , 広告, 復元, 情報, 感想, , 技術, 投資, 攻撃, 書籍, , 本活, 殆ど, 段階, 生体, 経営, 給与, 総当たり, 自分, 解読, 記号, , 認証, 貯金, 購入, 電子, ,

E_ERROR | E_WARNING | E_PARSE🐸

2022.06.15

Logging

おはようございます。果報は寝て待て😌。果報(かほう)を家宝だと思い込んでいました・・思い込みって怖いですね。

先日、記載した「更新に失敗しました。 返答が正しい JSON レスポンスではありません。」ですがphp.iniのワーニング(警告表示)が問題でした。そこをE_ERROR | E_WARNING | E_PARSEに修正してあげることで難無く解決済みです。JSONの返却の際に警告表示も返却され正しい値が取得出来ていなかったことに問題があったようです。

因みにこの頃は警告表示も意識してコードを書く機会が多くなりました。その理由はそちらの方がスマートかなって思うからです。数式が美しいと思うように綺麗なコードというものはあります。まだまだ、プログラムのコードは美しく書けませんが意識することによりそれに近づける事は大事になると思っています。

尚、php.iniは大体、/etc/php.iniにあります?、無ければコマンドラインからかコードに下記のように記載してphp.iniは何処に保存しているか調べてみてください。

php -r "echo phpinfo();" | grep "php.ini"
<?php
echo phpinfo();

タグ

Error, etc, ini, json, parse, php, WARNING, かほう, コード, こと, スマート, そこ, そちら, それ, プログラム, もの, レスポンス, ワーニング, , 修正, , 先日, 取得, 問題, 大事, 大体, 失敗, 家宝, 意識, 数式, , 更新, 果報, 機会, 理由, 綺麗, 表示, 解決済み, 記載, 警告, 返却, 返答, , ,

サーバーを移行しました、行き着く先はここだった。

2022.06.14

Logging

おはようございます。先日、一日もかけてサーバーサイドを某サーバーに移行しました。移行しましたがまだ不具合などが存在しているのです。例えば「更新に失敗しました。 返答が正しい JSON レスポンスではありません。」などと頻度に表示されます。

ここらへんを早急に対応したいと思っています。

お待ち下さい~。

因みにPHPのバージョンは8にアップデートしました。そしてエンジンエックスからApacheに土台を変えました。今回、エンジンエックスを数ヶ月使用してApacheサーバの方がやはり歴史が長いので、かゆいところに手が届く仕様になっていることに気づきました。

タグ

8, Apache, json, php, アップデート, エックス, エンジン, ここ, ここら, こと, サーバ, サーバー, ところ, バージョン, べん, レスポンス, , 不具合, 今回, 仕様, 使用, , 先日, 土台, 失敗, 存在, 対応, , , , 更新, 歴史, 移行, 表示, 返答, 頻度,

千年女優という映画を倍速モードで観ました。つま・・・なかった。

2022.06.10

Logging

おはようございます。PGフリーランスの案件は結構高額が多い訳はお国が20%ピンハネするからです?

課税される所得金額税率控除額
195万円以下5%0円
195万円超330万円以下10%97,500円
330万円超695万円以下20%42万7,500円
695万円超900万円以下23%63万6,000円
900万円超1,800万円以下33%153万6,000円
1,800万円超4,000万円以下40%279万6,000円
4,000万円超45%479万6,000円

先日、千年女優という映画が面白いという評判をRSSで目にしてNetflixで見てみたのですが、あまりにも昭和レトロなアニメで途中から倍速モードというか飛ばし飛ばし観ました。

千年女優 特報

結局のところ、面白いと思わなかったです🙇、因みに「トップガン」の最新作を観て全然面白いと感じなかったので普通の人の感性と少しずれがあるのかもしれないです🤔。

これを観るだったら「パプリカ」をオススメします。あちらの方が断然、前衛的(アバンギャルド)だったと思います、因みに監督は千年女優と同じ監督(今 敏)さんだったと思います。

タグ

0, 000, , 10, 153, 195, 20, 23, 279, 33, 330, 4, 40, 42, 45, 479, 5, 500, 6, 63, 695, 7, 800, 900, 97, Netflix, PG, RSS, アニメ, これ, つま, ところ, トップガン, ピンはね, フリー, モード, ランス, レトロ, , , 倍速, 先日, , , 女優, 少し, 感性, 所得, 控除, 映画, 昭和, 普通, 最新作, 案件, , 税率, 結局, , 評判, 課税, 途中, 金額, 高額,

Illustratorを略してイラレと言います。

2022.06.05

Logging

おはようございます。

先日、イラレを再契約しましたのでご報告致します。丸一年ぐらいイラレを解約していましたが此の度、何とか一年契約をAdobeと結びました。一年も使用していなかったら忘れてしまったかもと思っていましたが案外、技は覚えておりましたので難無く使用できそうです。

全然、話が変わりますがTwitterなどのアイコンも新たに変更しております、あとツイッターの名前を本名に変えました。いつまで本名で活動するか分かりませんが、今のところ本名で活動です。

変更してメリットなんてなく殆どデメリットの方が多いと思いますよ、ただ責任感は生まれます。それだけは良いことかなって思います。

話し戻しまして、これからはイラレも前のように使用してアイキャッチ制作することも多くなると思いますが、今週はそれほどアイキャッチに自作デザインを使用することは無いと思います。

尚、いまから一週間分の記事を制作していきます(2022年6月4日19時45分)。

タグ

2022, 4, 6, Adobe, illustrator, Twitter, あい, アイコン, いつ, いま, イラレ, キャッチ, こと, これ, ご報告, それだけ, ツイッター, デザイン, デメリット, ところ, メリット, , , , 今週, 使用, 先日, 制作, , 名前, 変更, 契約, , , 本名, 此の度, 殆ど, 活動, 自作, 解約, 記事, , 責任感,

ストリートファイターVを購入しましたよ。1990円で?

2022.05.27

Logging

おはようございます。

先日の日曜日の朝、Twitterのタイムライン、通称TLにストリートファイターVが1990円で購入できるよというものが流れてきたので、Steamで購入しました。いま、Steamではpaypay決済も出来るようになっているのですね。いやはやなんとも便利になったなって感じでストリートファイターVをポチりました。

『ストリートファイターV』SPECIAL TRAILER 16 Launch Characters

内容は云わずと知れたストリートファイターVなので割愛しますが、テトリス以上に時間の合間に出来るので良い感じですよね。自分は不器用なのでプロゲーマーなどは目指しませんが、楽しみたいと思っています。

『ストリートファイターV』2022年3月タイトルアップデート紹介トレーラー

ストリートファイターを久々に遊んで、何かストレス発散になるなぁってちょっとした感覚を覚えました。ストレスが溜まっている人はイージーモードでコンピューターをボコボコにしてストレス発散してみてくださいな。1990円でストレス発散出来るって結構お手軽感がありますよ。

因みに新作ストリートファイター6の予告されています!!。

タグ

1990, Paypay, STEAM, tL, Twitter, イージー, いま, ゲーマー, コンピューター, ストリート, ストレス, タイムライン, テトリス, ファイター, プロ, ボコボコ, ぽち, モード, もの, りま, 不器用, 久々, , 便利, 先日, 内容, 割愛, 合間, , 感じ, 感覚, 日曜日, 時間, , 決済, 発散, 自分, 購入, 通称,

映画、バブルを観ました。キラキラアニメだなこれ!?

2022.05.26

Logging

おはようございます。昨日はブログが大荒れ?でしたので、プラマイゼロの記事にします

先日、映画、バブルを観ましたので感想を残しときます。バブルは俗にいうアニメ映画です。自分はアニメ映画は観ますがアニメ・ドラマ?はあまり観ないです、理由は時間を割くことが出来ないのと何だか途中まで見て終わってしまうので・・・という理由からです。

映画『バブル』本予告 劇場版2022年5月13日(金)公開

バブルを観る前に予告を観た感じ、ちょっと目がキラキラだなって思っていましたが内容も中盤からキラキラでした・・・。自分の心が汚れているのか分かりませんが、映像は綺麗なのだけど目がキラキラで内容もキラキラなので何だかなぁーって映画です。

因みにこのアニメ映画は小学生向きかなって思います。結末はバブルのタイトル通りでした?

タグ

アニメ, こと, これ, ゼロ, タイトル, ドラマ, バブル, プラマイ, ブログ, 中盤, 予告, 先日, 内容, , 小学生, , 感じ, 感想, 映像, 映画, 昨日, 時間, 理由, , 結末, 綺麗, 自分, 記事, 途中,