画面ばかり。

2024.02.26

Logging

おはようございます、画面ばかりみていると現実が疎かになると思っています。バランスが大事になんだろうと思うこの頃。この頃、ちょっとびっくりしたのがYOUTUBEで配信しているソフトウェアエンジニアのKei Fujikawaさんが英語で配信しだしたことです。

The best programing language for mobile dev in 2024 is Flutter? ReactNative? Swift? Kotlin?

これは流れだと思います、英語も喋れない英語も出来ない?自分にはついにこういう時代になったんだなぁということを理解した瞬間でもあります。

pink neon word sign
Photo by Goran Macura on Pexels.com

人工知能がコーディングのサポートに使用できるようになった時よりも今回の方が衝撃です、日本で仕事をするよりも海外の仕事を請け負う方が良いし、海外に配信したほうが良い広がるという事。

自分はそうなると以前からブログにも書いてきたのですが、それが現実になってきた…。

やばぁー。

明日へ続く。

タグ

Kei Fujikawaさん, Photo by Goran Macura on Pexels.com, youtube, コーディング, サポート, ソフトウェアエンジニア, バランス, ブログ, 人工知能, 仕事, 日本, 時代, 海外, 現実, 画面, 瞬間, 自分, 英語,

明日は我が身。

2024.01.02

Logging

正月早々に大地震が発生しました。ある程度、情報統制がXでは取れているようです、逆に言えば地震の甚大なことがわかります。このブログは一週間ほど停止します。いま自分ができることは募金ぐらいしか思いつきませんが出来ることをします。現場では情報が錯綜していると思います、安易にRTをするのはご控えください。二次被害三次被害が起きぬように。

災害など緊急時の”ホットライン”としてLINEを活用しましょう

https://guide.line.me/ja/features-and-columns/emergency-tips.html

タグ

line, rt, X, ブログ, ホットライン, 一週間, 二次被害三次被害, 募金, 地震, 大地震, 情報, 情報統制, 正月早々, 災害, 現場, 緊急時, 自分,

2023年に観た映画たち。

2023.12.29

Logging

おはようございます、2023年に観た映画たちです😌。下記の動画に加えて先日観たパーフェクトデイズで今年の観た映画になります。自分としてはあまり映画観てない年になりますかね…。ちょっと観たいなって思う映画が少し減っているような気がします。来年は正月明けから観たい映画があるので、映画館に足を運ぶ感じになりそうですね。

2023年に観た映画。

ちなみに動画のキャプチャーしたサイトはサブでほそぼそと活動している映画専門のブログです、感想は短文です、他人のために始めたブログではなくて身近な人がみて今、こんなの上映しているだなって分かるサイトです。

明日へ続く。

タグ

サイト, サブ, パーフェクトデイズ, ブログ, 下記, 他人, 動画, 少し, 感じ, 感想, 映画, 映画たち, 映画専門, 映画館, 来年, 正月明け, , 短文, 自分, ,

ブログのデザインを修正しました。

2023.11.22

Logging

おはよう御座います、ブログのデザインを修正しました。なんだか某エナジードリンクみたいなデザインですね(笑)。これで飽きるまで置いときます、誰が飽きるかと言えばブログの管理者である自分です、毎日のように自分のブログを見ているのでデザインが気に食わない感じになります。

人が制作したデザインだと全然改善しようと思わないですけど、自分がデザインだとなんだかダサく見えてしょうが無いのです。なのでテコ入れが多くなってしまいます。色は黄緑色?という感じで目がつかれるかも知れないという色合いになっていますがこの色好きなんですね、この色に黒字というのが好きなんです。カラーユニバーサルデザインとかには全然対応していない気がします、すみません🙇。

明日へ続く。

タグ

カラーユニバーサルデザイン, デザイン, ブログ, , 感じ, 某エナジードリンク, , , , 管理者, 自分, , 色合い, 色好き, 黄緑色, 黒字,

アクセス数が倍になりました。

2023.10.25

Logging

おはようございます、この頃、アクセス数が倍になりました。おそらくGさんの検索アルゴリズムが変更されたから、そのようになっただけの話でまた、急落する可能性も秘めているので基本的にこれからも淡々と書いていこうと思います。

このブログ、もう10年以上も掲載しているはずなんですけど・・・。途中でデータを飛ばしてしまって2年か3年のデータが飛んじゃっているのですね。なので、途中のぽっい記事がスタートになっています。

いつまでブログを書くのかは今の所きめてはいませんが、ここまで続いたのだから書ける所まで書き続けようかなって思います。因みに過去の記事データが復旧可能か近々調べてみます。

それと、アクセス数が倍になっても自分の書いていこうと思う記事が変化することはないです。これからも自分の気づきと日常生活で思ったこと、感じたことを書いていくので応援よろしくお願い致します🙇。

明日へ続く。

タグ

10年以上, Gさん, アクセス数, この頃, スタート, データ, ブログ, , 可能性, 復旧, 応援, , 日常生活, 検索アルゴリズム, 自分, 記事, 記事データ, , 途中, 過去,

遅ればせながらミッションインポッシブルを観に行きました。

2023.08.03

Logging

おはようございます、遅ればせながらミッションインポッシブルを観に行きました。いやー観てよかったなって思える作品です。それも映画館で観るのが一番ベストな映画がミッションインポッシブルだと思います。一週間遅れで映画を観に行きましたのでお客さんもそれほどの人数ではなく何時ものポジションで映画を観ることが出来ました。

映画『ミッション:インポッシブル/デッドレコニング PART ONE』ファイナル予告

因みに今週?の土曜日か日曜日にキングダムを観に行きますので、来週の月曜日には感想を記載します。ブログ観なくてもTwitterのタイムラインに感想記載すると思うのでタイムリーに感想を知りたい方は自分のTwitterをご確認ください。

【最新映像解禁!】映画『キングダム 運命の炎』予告③【2023年7月28日(金)公開】

タグ

Twitter, お客さん, キングダム, タイムライン, ブログ, ポジション, ミッションインポッシブル, 一週間, 人数, 作品, 土曜日, 感想, 日曜日, 映画, 映画館, 月曜日, 自分, 遅ればせ,

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, コード, サイト, ファイル, ブログ, プログラム, ベタ, ヘッダー, 一括, 下記, 不明, 不良, 今日, 体調, 作成, 先日, , 原因, 回復, 変更, 実際, 導入, 挿入, 方法, 日曜日, 最後, 背景色, 自分, 記述, 設定,

ブログ記事を書く作業/一コマ(キーボードが弾まない) #blog #vlog

2022.11.29

Logging

おはようございます、続けるということは殆どの人にとって簡単なようで難しいことなのかもしれません😗(自分には簡単なことです)。

今日は毎日書いているブログ執筆の作業風景を取ってみました、作業と言ってもブログではそれ程、収益を上げていないので、ある意味奉仕活動のような気もしますが塵も積もれば山となる、ブログも積もれば資産となります。

ブログ記事を書く作業/一コマ(キーボードが弾まない)

因みに無償で提供している各Webサービスの方が収益を生み出していますし、メンテナンスとたまにする機能追加だけで、ブログの収益を軽く超えています…。そのことが何ともやりきれない感があります、どちらも自分が生み出したものですが、前者は日々の作業が発生し後者はほぼ作業が発生しません。

後者は言うなればマイナスがない株を値動きのようなものですね。でも自分としてはブログで花を咲かせたいです。WEBサービスは勝ちパターンみたいなものが見えてきていますが、まだまだコレではご飯が食べれない。もう三桁ぐらいアクセス数が上がれば質素な生活が送れるかも知れませんけどね。今はまだサーバー代などや各ドメインを相殺するレベルです。

タグ

blog, Vlog, web, キーボード, こと, コレ, サービス, たま, どちら, パターン, ブログ, マイナス, メンテナンス, もの, 一コマ, , 今日, , 作業, 値動き, 前者, 収益, , 執筆, , 奉仕, , 後者, 意味, , 提供, , 日々, , 機能, 殆ど, 毎日, , 活動, 無償, 発生, 簡単, 自分, , 記事, 資産, 追加, 風景,

AとBをテストするABテスト #abtest

2022.11.19

Logging

おはようございます、土曜日の朝🌅。今日は高知県は雨らしいですね。

ABテストとは何かは割愛させてもらってABテストの話を書いていきます。自分はこのABテストを結構します。特にブログやYOUTUBEはABテストを行っています、プレビュー数、再生数はどうすれば伸びるのか、試すにはABテストは最適です。

【10分で分かる】ABテストについて統計学的観点も交えて詳しく解説!

そういうテストを繰り返して小技を蓄積していくと伸びるものが創れるようになるし、勘どころが分かるようになります。これは伸びる伸びないなどがよくわかります。

これをテストするにはある程度、訪問者や閲覧者がいないと出来ないです。初期のブログはなかなか訪問者数もいないのでテストが出来ないですが、YOUTUBE等は投稿すればチャンネル登録者数がいなくてもYOUTUBEのアルゴリズムで、ある程度表示してくれます。

YOUTUBEのアルゴリズムは関連性の高い動画だと認識させれば、再生回数は伸びますしアイキャッチなども結構大事です、それはブログもそうなんですけどブログの場合は記事の内容が大事になります。

滞在時間と離脱してから次の行動も恐らくですがGアルゴリズムもページの善し悪しに盛込んでいると自分は考えています。もし自分なら、そういうアルゴリズムにしますから・・・。

まとめ、ABテストはSEOというよりは、人に寄り添って考える事が大事なのかなって思います🙇。

タグ

ab, abtest, com, D-leDiVDiqU, https, watch, www, youtube, アルゴ, アルゴリズム, これ, チャンネル, テスト, プレビュー, ブログ, もの, リス, 今日, 何か, 再生, 初期, 割愛, 勘どころ, 土曜日, 小技, 投稿, 最適, , 登録者, , 自分, 蓄積, 表示, 訪問者, , 閲覧者, , 高知県,

chart.jsでデモを試してみました。📈 #javascriptcode

2022.11.18

Logging

おはようございます、朝が早いですねと言われますが、夜が早いだけです😅。

さて、今日はchart.jsのデモを試してみました。売上のグラフとかコレで作るのが一番じゃないかなと思うライブラリですね。動画で編集してみせたのは二箇所ですが、実際、業務で使用する場合は3箇所ほど変更して使用しないといけないのかなって。

chart.jsでデモを試してみました。📈
chart.jsでデモを試してみました。📈

そういう訳で、こちらのブログにソース・コードを貼り付けておきます。

        const ctx = document.getElementById('myChart');
        let data = [12, 19, 3, 19, 2, 3];
        new Chart(ctx, {
            type: 'bar',
            data: {
                labels: ['demo1', 'demo2', 'demo3', 'demo4', 'demo5', 'demo6'],
                datasets: [{
                    label: '# of Votes',
                    data: data,
                    borderWidth: 1
                }]
            },
            options: {
                scales: {
                    x: {
                        beginAtZero: true
                    }
                }
            }
        });

業務で変更しないといけない最低限3箇所はこちらです~😆。

  • ラベル
  • データーセットの中のラベル
  • データーセットの中のデータ

上記の3箇所を売上のデータや何やらに使用することで活用できるかと思います。

タグ

12, 19, 2, , 39, bar, chart, const, ctx, data, document, getElementById, javascriptcode, JS, let, myChart, new, type, グラフ, コード, こちら, コレ, ソース, デモ, ブログ, ライブラリ, , , 今日, 使用, 動画, 場合, 変更, , 実際, , 業務, 編集, ,

POSTとGETの考え方について伝えている動画。 #以心伝心

2022.11.12

Logging

おはようございます、11月なのに寒くないって不思議です😗温暖化。

さて、POSTとGETの考え方について無音声(音楽あり)で伝えている動画です、以心伝心で意味が通じると良いですが、それではブログを書いている意味がないので要点だけ解説します。POSTとGETとは、インターネット上でデータの送信を行うのに使用します。POSTの利点はデータを隠して送れることと、比較的に重いデータも送れることにあります。ではGET送信の利点は、SEOに有利と言ったところでしょうか。

htmlとcssとphp-初学POSTとGETの考え方-No.2
htmlとcssとphp-初学POSTとGETの考え方-No.2

今回、POST送信とGET送信を行い、PHPのプログラムでPOSTとGETを受信する方法を動画で伝えています。次回は非同期処理を使用して送受信を行う方法をプログラムで書いていきます。

HTMLとPHPプログラムは下記のソースを参照下さいませ🙇。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>demo site</title>
    <style>
html {
    width: 100vw;
    height: 100vh;
}

body {
    background-color: rgb(0, 0, 0);
    color: aliceblue;
    background-image: url(./assets/images/aig-mid22910-120-xl_TP_V.jpg);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
}

div.box {
    border-color: aliceblue;
    border-style: inset;
    position: absolute;
    width: 300px;
    height: 450px;
    color: white;
    border-radius: 1em;
    padding: 1em;
    top: 50%;
    left: 50%;
    margin-right: -50%;
    transform: translate(-50%, -50%);
    /* background-color: #ffffff80; */
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    overflow-wrap: break-word;
    text-align: center;
}

div>form>p {
    font-weight: bold;
    margin: 13px;
}

input {
    opacity: 0.5;
}

textarea {
    opacity: 0.5;
}

button {
    padding: 5px;
    border-radius: 1em;
    border-style: solid;
    border-color: aliceblue;
    background-color: aliceblue;
    color: rgb(0, 0, 0);
}
button:hover{
    border-color: rgb(255, 255, 255);
    border-style: inset;
    background-color: rgb(27, 76, 119);
    color: aliceblue;
}
.put:nth-child(2){
    overflow: auto;
    height: 120px;
}
    </style>
</head>
<body>
    <div class="box">
        <div id="box2">
            <form action="submit.php" method="post">
                <p>名前:<input type="text" name="name"></p>
                <p><textarea name="text" id="" cols="30" rows="10"></textarea></p>
                <p><button class="btn" type="submit">確認</button></p>
            </form>
        </div>
        <div id="data">
            <p class="put"></p>
            <p class="put"></p>
        </div>
    </div>
    <script src="./assets/js/main.js"></script>
</body>

</html>
<?php
var_dump(xss_d($_POST));
print(xss_d($_POST["name"])."<br>");
print(xss_d($_POST["text"])."<br>");

function xss_d(mixed $val){
    if(!isset($val))return false;

    if(is_array($val)){
        foreach ($val as $key => $value) {
            $val[$key] = strip_tags($value);
            $val[$key] = htmlspecialchars($val[$key],ENT_QUOTES);
        }
    }else{
        $val = strip_tags($val);
        $val = htmlspecialchars($val,ENT_QUOTES);
    }

    return $val;

}

タグ

11, 2, css, DOCTYPE, GET, html, lt, no, php, POST, SEO, インターネット, こと, ソース, データ, ところ, ブログ, プログラム, 下記, 不思議, 今回, 以心伝心, 使用, 処理, 初学, 利点, 動画, 参照, 受信, 同期, 意味, 方法, 有利, 次回, 温暖化, 考え方, 要点, 解説, 送信, 送受信, 音声, 音楽,

休みの日はアクセス数が少ないのを打壊したい人いる!?

2022.11.04

Logging

おはようございます、昨日は文化の日でお休みでしたね🫠。

アクセス数ゼロでも毎日のようにブログを書き続けて今のところ、二桁止まりですがアクセス数を維持しています。たまにプレビュー数だと三桁行く時がありますが、今はあまりですね~😗。

さて、そんな自分がアクセス数の増やし方を教えます。アクセス数を増やすには唯、流行の記事を追い求めるだけではダメです。未来を予想してその記事を書くこと。そしてまだ誰もその記事に付いて書いていない事が重要になります。

技術知見の二番煎じです、個人ブログでは検索サイトが拾ってくれません。なので、書くのはほぼ無駄です。たまに自分も書いたりしていますが検索にヒットすることは少ないです。技術知見を書くのなら出し惜しみせず、全力投球で書くことをオススメしますが、初学者への知見は書いても拾ってくれませんので、中級レベルの知見を書くことをオススメします。

上級者の知見は書いても無駄だと思っています。上級者ではないので分かりませんが、そもそも上級者になると論文やドキュメントで事が足りるから、わざわざそこら編を検索するという事は無くなるのではと思っています。

要約するとニッチな戦略で記事を書くべし!古い記事の上書き記事も有効😗

それらの事を注意して記事を量産すると徐々に記事を拾ってくれる確率は増えてきます✌。

尚、SEO戦略なんてブラックボックスのアルゴリズム=重箱(ブラックボックス)の隅のホコリを見つけてこれは宝石だと喜び合うことだと思います。人工知能が文章を理解するよう事を見据えて、今から人が理解できる文章を書くことをオススメします😋。

タグ

アクセス, あまり, おすすめ, お休み, こと, サイト, たま, ため, ところ, ヒット, プレビュー, ブログ, レベル, , 上級, 上級者, 中級, 予想, , , 二番煎じ, , , 休み, 個人, 全力投球, 初学者, 技術, 数ゼロ, 文化の日, , 昨日, , 未来, 検索, 毎日, 流行, 無駄, 知見, 維持, 自分, 記事, , 重要,

出来ることを黙々とこなす。 #100% #全力

2022.10.25

Logging

おはようございます、今日は振り込み日で御座います😋皆さん有り難う御座います。

さて、出来ることを黙々とこなす事を忘れずに、そして前向きに日々頑張っていきますので応援宜しくお願い致します。此処まで書いたら何のことか察しが良い人は気づいたかもしれませんが、本日広告収入が銀行に振り込まれる日です。

human

毎日のブログとWEBサービスとかで収益が出ました。これからは銀行振込を毎月に振り込まれるようにしたいなって思っています。これが当面の目標ですね、この目標達成が出来たら毎月の振り込み金額を増やしていきたいと思っています。

巷ではSEOやSNSを頑張れば集客が付くと言われていますが、そんな事にはあまり力を入れる事なく有益な事を書けば自ずと結果が帰ってくると信じて記事を書いています。※まだ、結果はあまり出ていないのですが、それでも続けています。

続ける理由は記事を書くのが好きだからという理由とやはり書いた記事が毎日のように読まれて、何かしら役に立つ事が出来ているかもしれないという事は良いことであり社会との接点でもあるかなと思っています。

トイウコデ、これからzip358.comもよろしくお願い致します🙇。

タグ

100, SEO, SNS, web, お願い, こと, これ, サービス, それ, ブログ, , , 今日, , 全力, 前向き, , 収入, 収益, , 広告, 当面, 応援, 振込, , 日々, 有益, 本日, 此処, 毎日, 毎月, 理由, 皆さん, 目標, 結果, 記事, 達成, 金額, 銀行, 集客,

何気なく書いていた事が結構な確率で当たる。#未来予知 #高的中か?

2022.10.09

Logging

おはようございます、コロナが収まりそうなのに戦争はまだ収まりそうにないです。ロシアは領土を奪って何得なんでしょうか。意味が分かりません。

さて、過去のブログ記事を定期的に見たり修正したりしています。これを行う理由は一つだけ意味不明な文章表現があり本人しか意味がわからないモノが存在します。その為、定期的に変な文章は直したりしています。

Tesla AI Day in 23 Minutes (Supercut) (2022)

毎日書けば文章力や表現力は、どんな人でもUPします。泥臭いことですが技術力を上げようと思ったらひたすら真っすぐ頑張るしか無いです。必要な知識は日々の勉強でしか埋め合わせは出来ないです、技術や知識を身につける方法はひたすら覚える事から始まります。覚えて基礎が身につけば応用学習するその反復を行って身につく。この方法しかなく脳にデータをインストールは今のところ出来ない、記憶力は人それぞれなので、身につく事が早い人と遅い人がいるけれど反復学習をすれば身につきます(脳に障害がある人は難しいけども)。

タイトルの話になりますが、結構な確率で自分の未来予想があたっているなって最近思います。特に科学的な進歩や社会にどう浸透していくなどは、結構、的を得た予想をしているなと自画自賛😐。未来予測が当たっても何の得にもならないけれどもアタルのは良いことです。

此処で一つ未来予想を書きます、昨日きな臭い記事の書いたけど、来年の夏までにはロシアVSウクライナの戦争は終わるじゃないかって思っています、なんかそんな気がします。

タグ

UP, インストール, こと, これ, コロナ, それぞれ, データ, ところ, ブログ, もの, ロシア, 一つ, 不明, 予知, , , , 修正, 勉強, 反復, 基礎, , 存在, 学習, , 必要, 応用, 意味, 戦争, 技術, 技術力, 文章, 文章力, 方法, 日々, 未来, 本人, 毎日, , 理由, 的中, 知識, 確率, 結構, , 表現, 表現力, 記事, 記憶力, , 過去, 障害, 領土,

Twitter-API-v2ツイート数珠繋ぎ #コード公開 #php

2022.10.04

Logging

おはようございます。土日祝も関係なくブログは毎日書いています🤮。

さて、今日はPHP言語でTwitterAPIバージョン2(v2)を使用してツイート数珠繋ぎをする方法を抜粋して記載していきます。こういうコードは今のところ出回っていないようです。少し調べれば公式サイトに記載しているのだけども・・・。まだ、日本語に対応した記事が少ないようです。v2でツイートする方法やリツイートする方法は何故かあるのだけどリプライ(Reply)[/statuses/update]する方法が記事としては記載していなかったので?記載します。

<?php
require_once "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

class tw{
    var $connection = null;
    function __construct()
    {
        $this->connection = new TwitterOAuth(APIKEY, APISECRET,ACCESSTOKEN, ACCESSTOKENSECRET);
        $this->connection->setApiVersion("2");
    }

    function pickup_tweets(mixed $tw_text=null){
         $obj = (object)[];
        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;
        }
        return false;
    }
}

最初に結論とコードのアルゴリズムに付いて解説します。まず、tweetsのパラメーターでリプライ出来るように変更されています。v1.1とはそこが変わっているので同じ仕組みを検索しがちですがそれでは検索にヒットしないようです🤔。まずはエンドポイントの変更点の確認が必要みたい👏。

エンドポイントのv1.1からv2への対応表

エンドポイントのv1.1からv2への対応表が公式から出ているので確認してみてください↑。

次にコードの解説ですがまずTwitterOAuthライブラリをインストールを行い、defineなどの設定なども考慮した上で実行してみてください(コードに追記記載が必要)。変数、$tw_textは配列です。また投稿する文字が入っていると考えてください。そしてこのコードを下記のような考え方で実行してみてください。

<?php
       require_once "tw-index.php";
       $tw_text[0] ="test1";
       $tw_text[1] ="test2";
       $tw = new tw();
       if($tw->pickup_tweets($tw_text)){
        $ret["msg"] = "ok";
       }else{
        $ret["msg"] = "NG";
       }
       var_dump($ret);

※前提条件としてtwitter社にAPIの申請を行って受理されている事。

Twitter API v2 ツイート数珠繋ぎ

これで思った通り実行出来たと思います。尚、自分のように管理画面などを作って数珠繋ぎの投稿するのも良いかも知れません🫠。

タグ

2, Abraham, autoload, class, connection, function, lt, null, once, php, quot, Reply, require, statuses, tw, Twitter-API-v, TwitterAPI, TwitterOAuth, UPDATE, use, var, vendor, コード, サイト, ツイート, ところ, バージョン, ブログ, リツイート, リプライ, , 今日, 使用, 公式, 公開, 土日, 対応, 少し, 抜粋, 数珠繋ぎ, 方法, 日本語, 毎日, , 言語, 記事, 記載,

映画、雨を告げる漂流団地の監督さんの語りを聞いて映画も観てみた。 #雨を告げる漂流団地 #Netflix #Hiroyasu-Ishida

2022.10.02

Logging

おはようございます🫠、社会との接点はブログになっている今日此の頃です。クラウドワークスは何だか質が落ちているような気がします。

さて、作品を社会に公開すると色々な意見を言われる事になると思います。映画が世に出るという事はそこには色々な人々が関わっています。今回「雨を告げる漂流団地」を7回に別けて観ました。もう色々と感性が抜け落ちているので、良し悪し正直な所分からなかったですが、アイディア等は面白いなと感じました。

Hiroyasu Ishida – Being an Animation Film Director

これを小学生や幼い子供が観たら、やっぱ特別な感覚や感情を抱くだろうなと思い、そういう作品を作れるというのは特異な才能(石田祐康 監督)なんだと感じます。

映画『雨を告げる漂流団地』本予告映像【9月16日(金) Netflix全世界独占配信 & 日本全国ロードショー】

こういう作品は大人が観るのではなく子供が観て面白かったと思えば良いですよと、この映画のレビューを見て思いました。そして今回の作品もそうですしペンギン・ハイウェイの作品もそうなんだと思いますが、作品を通して子供が成長して欲しいという想いが伝わる映画でした。

因みにこの映画、自分はネトフリアニメで数回に分けて観ました😌。

タグ

7, Hiroyasu-Ishida, Netflix, アイディア, クラウド, これ, そこ, なん, ブログ, ペンギ, レビュー, ワークス, , 人々, 今回, 今日此の頃, 作品, 公開, 団地, 大人, 子供, 小学生, 意見, 感性, 感情, 感覚, , 才能, 接点, 映画, 正直, , 漂流, 特別, 特異, 監督, 石田, 社会, 祐康, 良し悪し, 色々, , ,

見えないテコ入れ人の感覚。#スキマ時間 #ブログ

2022.10.01

Logging

おはようございます、今日も朝に記事を書いています😌。もう10月ですね、これを書いていたのは9月29日です。この頃、少しリアルとタイムラグのあるモノにしています。

さて、今日はブログを毎日書いて意味があるのかというお話です。最初に回答を記載します、アクセス数にはあまり影響を及ぼす事はありません。YさんやGさんの検索サービスがどの記事を拾ってくれるかなんて分からないです。そういう観点から言えば色々な記事を書いてアクセス数の多い記事へ路線変更するとアクセス数は稼げます。

ただ、好きでもない内容の記事がアクセス数が多くなったりする場合があります。その場合、お金のために記事を書くことになります、そう言うのは続かないので辞めたほうが良いです🫠。自分の記事は好きな事しか書いていないけれど、それなりにアクセスが付くようになりましたが・・・。自分が読んでほしい記事にアクセス数が付くとは限らないのが今の悩みどころですね。

そういう事もあって10月から眠らせていたブログを一つ再活動しようと思っています。再活動の理由は収益化です、そしてこのサイトのYOUTUBEもトライしてみようと思います。この2つの活動の共通点は広告が付いていないということYOUTUBEの登録者数は9人です。ブログに至っては訪問者は10桁いかない日さえあるサイトでが、更新頻度を上げれば半年でそれなりの数は付くという勝算はあります。

明日から我らWEB主義というサイトとYOUTUBE(zip358com)、不定期更新という名目で活動しますので良かったらそちらもよろしくお願いします🙇。

タグ

10, 29, , アクセス, お話, お金, こと, これ, サービス, すきま, タイムラグ, ため, テコ入れ, ブログ, もの, リアル, , , 今日, 内容, 回答, 場合, 変更, 少し, 影響, 意味, 感覚, 時間, 最初, , 検索, 自分, 色々, 観点, 記事, 記載, 路線, ,

WPのapply_filtersとadd_filterの説明が難解に書いているサイトが多い事に🤬。 #php #wordpress

2022.09.28

Logging

おはようございます、今月もそろそろ終わります🤔。

さて、来月から毎月一回しか投稿しなかったブログサイトを不定期更新に変更します。指針の変更にあたってブログデザインもデフォルトのテンプレートから無料のcocoonというテンプレートに変えました。

今までYOUTUBE動画URLを記載しているだけの投稿だったので、アイキャッチー画像等は無い状態でした。その為、テンプレートを変えるとノーイメージという画像が表示されるという事象が発生。これをプラグイン側で解決したかったのですが、独自の関数を多く使用しておりプラグイン側だけでは無理だということで、独自のアイキャッチー画像を処理しているコアの部分にapply_filtersを差し込み、プラグイン側でadd_filterで処理するという流れの対応を行いました。

apply_filtersというのはテンプレート側(他のプラグインでも可能)の関数の中に目印(付箋)を付けることが出来る機能(関数)です。
add_filterは目印(付箋)の部分の処理が走った時に、自分が作った処理を割り込ませることが出来る機能(関数)です。

※まずはカッコの中は読まずに理解してください😌。

巷では、これをややこしい例えで解説している所が多いのですが、それだけの話しです。今回、image-funcs.phpファイル(cocoon)の関数get_original_image_tagにapply_filtersを挿入し独自プラグインから呼び出して、ノーイメージの時にYOUTUBEのサムネイル画像を表示させるという事を行っていました。前、次ページのサムネイル画像は現在のページのサムネ画像が表示されるというバグはあるものの、ちゃんと跡のサムネ画像は変わっています。

サンプルコードを掲載します。ご参考程度に😌。

<?php
//オリジナルサムネイルタグの取得
if (!function_exists('get_original_image_tag')) :
  function get_original_image_tag($image_url, $width, $height, $class, $alt = null)
  {
    $html = '<img src="' . esc_url($image_url) . '" alt="' . esc_attr($alt) . '" class="' . esc_attr($class) . '" width="' . esc_attr($width) . '" height="' . esc_attr($height) . '" />';
    $html = convert_all_lazy_load_tag($html);
    $html = apply_filters("youtubeimage",$html);
    return $html;
  }
endif;
<?php
/*
Plugin Name: youtube image
Description: youtube image chg
Version: 1.0
*/
if (!defined('ABSPATH')) exit;
function youtubeimage_chg($imgurl){
    $url = null;
    if(preg_match("/(https:\/\/www\.youtube\.com\/watch\?v=[\-|_|a-zA-Z|0-9]{1,})/",get_the_content(),$matches)){
        $url = "https://img.youtube.com/vi/".preg_replace("/(https:\/\/www\.youtube\.com\/watch\?v=)/","",$matches[0])."/hqdefault.jpg";
        $url = preg_replace("/(src=\"https:\/\/.*no\-image\-[0-9]{2,3}\.png\")/","src=\"".$url."\"",$imgurl);
     }
     return $url?$url:$imgurl;
}

add_filter("youtubeimage","youtubeimage_chg");

余談:この対応はテンプレートが更新(アップデート)際にファイルが上書きされる可能性があります。その際にページが見えなくなるという問題を秘めています🙇。

タグ

Add, apply, cocoon, filter, filters, php, url, WordPress, wp, youtube, あい, イメージ, キャッチー, コア, こと, これ, サイト, デザイン, デフォルト, テンプレート, ノー, プラグイン, ブログ, , 不定期, , 事象, 今月, 使用, 処理, 動画, 変更, 多く, 対応, 投稿, 指針, 更新, 来月, 毎月, , 無料, 状態, 画像, 発生, 表示, 解決, 記載, 説明, 部分, 関数, 難解,

1万件のCSVを読み込みテーブルに保存する雛形コード #PHPCode

2022.09.08

Logging

おはようございます、徐々に秋ぽっい日差しになってきましたね(まだ暑いけども😌)。

今日は、1万件のCSVを読み込みテーブルに保存する雛形コードを昨日、ちょちょっと書きましたので記載します。ファイルをダウンロードして使いたい方はGithubのリンクを下に貼っときますので、ご使用頂けたらと思います。尚、テーブルなどはCSVを参考にご自身で構えてください。

※動作環境はPHP8系です、なのでPHP7系では一部エラーが出ます。fgetcsv…nullを0へ変更。

Githubのリンクはこちら

Qiitaの方に記載しようかどうしようか、迷ったのですが第一弾目がアクセス数がそこそこ伸びたのでこれ以上、注目されるのは嫌なのでブログの方に記載しました。1万件のCSVを簡単に読み込ませる方法はPHPコードを書くのではなく、SQLのコマンドで実行した方が実は早いですけど・・・。

有言実行

早いですけど、その場合、CSVがちゃんとしたファイルではないと上手くテーブルに保存されない場合や、そもそもコマンドラインで操作出来ない場合もあったりしてPHPコードなどで制御しないと駄目な事もあります。そんな時に、このコードをサンプルとして使って頂ければ良いなと思い作りました。

1万件のCSVを読み込ませるPHPコード雛形。

そんなにコードを書かなくてもまぁ動くんですよ。ちなみにソースコードには、あまりコメントを書いていないですが、プログラマーなら大体の人が理解できるレベルかと思います。

<?php
//ini_set("display_errors","On");
session_start();
require "db_config.php";

//読み込みCSVファイル名セット
class csv
{
    /**
     * @param string $filename
     * @param int $cnt
     * @return Object
     */
    public function ini_csv($filename = "", $cnt = 0)
    {
        return new csv_read($filename, $cnt);
    }
}

//CSVデータを読み込ます
class csv_read
{
    var $max = 10000;
    var $cnt = 0;
    var $handle = null;
    /**
     * @param string $filename
     * @param int $cnt
     */
    public function __construct($filename = "", $cnt = 0)
    {
        $this->cnt = $cnt;
        $this->handle =  fopen($filename, "r");
        $_SESSION["offset"] ? fseek($this->handle, $_SESSION["offset"]) : $this->handle;
    }
    /**
     * @param int $header_skip
     * @return Object
     */
    public function reader($header_skip = 0)
    {
        if ($this->handle !== FALSE) {
            $response = null;
            $data = fgetcsv($this->handle, null, ",");
            if (!$header_skip || $_SESSION["offset"]) {
                if ($data !== FALSE) {
                    $_SESSION["offset"] = ftell($this->handle);
                    $response["data"] = $data;
                    $response["cnt"] = $this->cnt > $this->max ? 0 : ($this->cnt + 1);
                    $flag = true;
                } else {
                    $_SESSION["offset"] = null;
                    $flag = false;
                }
            } else {
                $_SESSION["offset"] = ftell($this->handle);
                $response["cnt"] = $this->cnt > $this->max ? 0 : ($this->cnt + 1);
                $flag = false;
            }
        } else {
            $_SESSION["offset"] = null;
            $flag = false;
        }
        return new table_save($flag, $response);
    }
}

//tableにCSVデータを保存
class table_save
{
    var $flag = false;
    var $result = null;
    /**
     * @param boolean $flag
     * @param array  $response
     * @return void
     */
    public function __construct($flag, $response)
    {
        $this->flag = $flag;
        $this->result = $response;
        $this->column_name = "name,,...";
    }
    /**
     * @param string  $column_name
     * @return void
     */
    public function tbl_save($column_name = "")
    {
        if ($this->flag) {
            $column = $column_name ? $column_name : $this->column_name;
            $is_column = explode(",", $column);
            foreach ($is_column as $key => $val) {
                $is_value[$val] = $this->result["data"][$key];
            }
            try {
                $pdo = new PDO(DSN, USERNAME, PASSWORD);
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $sql = (function ($is_column) {
                    $INSERTFIRST = null;
                    $INSERTLAST = null;
                    foreach ($is_column as $key => $val) {
                        $INSERTFIRST[] = "$val";
                        $INSERTLAST[] = ":$val";
                    }
                    $INSERTSQL = "(" . implode(",", $INSERTFIRST) . ")values(" . implode(",", $INSERTLAST) . ")";
                    $UPDATESQL = null;
                    foreach ($is_column as $key => $val) {
                        $UPDATESQL[] = "$val = :$val";
                    }
                    return "INSERT INTO " . TABLENAME . $INSERTSQL . " ON DUPLICATE KEY UPDATE " . implode(",", $UPDATESQL) . ";";
                })($is_column);

                $stmt = $pdo->prepare($sql);
                foreach ($is_value as $key => &$value) {
                    $is_type = ($key === "test3" || $key === "test13") ? PDO::PARAM_INT : PDO::PARAM_STR;
                    $stmt->bindValue(":$key", $value, $is_type);
                }
                $this->result["sql"] = $stmt->execute();
            } catch (\Throwable $th) {
                //throw $th;
                $this->result = null;
                print $th->getMessage();
            }
        }
        print json_encode($this->result);
    }
}

//RUN...POST DATA
if (isset($_POST["csrf_token"])  && d_xss($_POST["csrf_token"]) === $_SESSION['csrf_token']) {

    $_SESSION["offset"] = (int)d_xss($_POST["reset_flag"]) === 1 ? null : d_xss($_SESSION["offset"]);
    $filename = d_xss($_POST["filename"]);
    $cnt = (int)d_xss($_POST["cnt"]);

    $column_name = "test1,test2,test3,test4,test5,test6,test7,test8,test9,test10,test11,test12,test13,test14,test15";
    $header_skip = 1;

    $csv = new csv();
    $csv->ini_csv($filename, $cnt)->reader($header_skip)->tbl_save($column_name);
    $csv = null;
} else {
    print "";
}
function d_xss($data){
    $data = strip_tags($data);
    $data = htmlspecialchars($data,ENT_QUOTES);
    return $data;
}
<?php
 // ログインした状態と同等にするためセッションを開始します
 session_start();
 // 暗号学的的に安全なランダムなバイナリを生成し、それを16進数に変換することでASCII文字列に変換します
  $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/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<title>CSV</title>
</head>
<body>
    <input type="hidden" name="csrf_token" value="<?=$csrf_token?>">
    <span class="h3" id="cnt"></span><br><br>
    <span class="h4" id="read_csv"></span><br><br>
    <span class="h4" id="debug"></span><br><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
<script>
    window.onload = function(){
        read_csv(0,1);
    };
    function read_csv(cnt,reset_flag){
        try{
            $.ajax({
            type: "post",
            url: "./assets/php/class_csv.php",
            async: false,
            data: {csrf_token:document.getElementsByName("csrf_token")[0].value,reset_flag:reset_flag,filename:"dummy.csv",cnt:cnt},
            dataType: "json",
            success: function (response) {
                    if(response){
                        cnt = response.cnt;
                        document.getElementById("cnt").innerText = cnt;
                        if(response.data){
                            document.getElementById("read_csv").innerText = response.data[0] + response.sql;
                            document.getElementById("debug").innerText = cnt ===21?response.data:document.getElementById("debug").innerText;
                        }
                        setTimeout(function(){read_csv(cnt)},0);
                    }
                }
            });
        }catch(e){
            console.warn(e);
            read_csv(cnt);
        }
    }
</script>
</body>
</html>

タグ

0, , 7, 8, CSV, fgetcsv, github, null, php, PHPCODE, qiita, SQL, アクセス, エラー, コード, こちら, コマンド, これ, ご使用, ご自身, ダウンロード, ちょ, テーブル, ファイル, ブログ, リンク, , 一部, , , 今日, 保存, 動作, 参考, 変更, 実行, , 方法, 日差し, 昨日, 有言実行, 注目, 環境, , 簡単, 記載, 雛形,

千里の道も一歩からとはよく言ったものですね。毎日の?🤔

2022.09.04

Logging

おはようございます、台風が過ぎ去ったらまた暑い日なるのかな?

今日は動画を2本ほど朝視聴したので、その事を踏まえながらブログを記載していこうと思います。記事を読む前に動画を視聴してください、視聴したことを前提に記事は書いています。最初に見たのはウィリアム・マクレイブンさんの動画です。人々が笑っている所に何か大事なことが隠れているような気がします。毎日続けるという事は中々、出来ることではなくて大体の人が辞めてしまいます。おそらく9割の人は辞めてしまうのです。

変化は自分から起こす || ウィリアム・マクレイブン
変化は自分から起こす・ウィリアム・マクレイブン

次に茂木健一郎さんの”ネットで目立っている人にあこがれるなよ!”を見ました。これを見て日の目を見ない人にも凄い人はいるという事はよくわかりますし、何も得ることが出来ないという事も最もだと感じました。

ネットで目立っている人にあこがれるなよ!
ネットで目立っている人にあこがれるなよ!・茂木健一郎

自分のやりたいことがあるのならば、千里の道も一歩からという気持ちで毎日、担々とこなすことが大事になると思います。

タグ

0, 2, , com, gMcaNQ, https, NEO, watch, www, youtube, ウィリアム, こと, これ, ネット, ブログ, ふん, マク, マクレイ, もの, レイブン, , 中々, , , 人々, 今日, , , 前提, 動画, 千里, 台風, 変化, 大事, 大体, , , 日の目, 最初, , 毎日, , 自分, 茂木健一郎, 視聴, 記事, 記載, ,

日頃の感謝を込めて招待メールがGさんから来た!999円か9999円かも??

2022.08.30

Logging

こんにちは、若干、涼しくなりましたがまだ暑い気がします。

さて、Gさんから日頃の感謝を込めての招待メールが来ました。2022年の9月9日G創立の記念セールを行うことらしく、あのPixel 6 Proが破格のお値段で買えるかも知れません。記念セールに本当に破格の値段だったら買いですね。自分も破格の価格だったら買います。もし999円だったら即ポチですね😍。

Pixel 6 / 6Proをしばらく使って見えてきた9つのこと

いや~本当に記念セール、今から楽しみですね。即完売したらどうしよう、何とか頑張って商品を抑えたいと思いますので、9月9日にどうだったか当時にツイッターとブログにてお知らせします。因みにPixel6と6Proどちらも破格のお値段だったら注文します。

タグ

2022, 6, , 999, 9999, Pixel, Pro, お知らせ, こと, セール, ツイッター, どちら, ブログ, ぽち, メール, , 価格, 値段, 創立, 商品, 完売, 当時, 感謝, 招待, 日頃, 本当, 楽しみ, , 注文, 破格, 自分, 若干, 記念,

集客できない人の共通点の話を聞きました、これはWEBも同じかと🤔。

2022.08.29

Logging

おはようございます。この頃、ビットコイン価格が値下がり続けていて一時的な跳ね上がりを期待しています。

西野亮廣さんが集客できない人の共通点【Voicy】を話されていたので、なるほどなと思い聞いていました。これはWEBでも何でも同じだと思います。自分のSNSは宣伝がナンセンスですが、ブログやWEBサービスは集客が出来ているのは、Gさんというプラットフォームに乗っているからだからなのだと痛感しました。

【西野亮廣】『『集客できない人』の共通点』【Voicy】
集客できない人の共通点

西野亮廣さんの語りはあまり好きではないのですが、好きではない人の話を聞いたり、苦手な人との会話は「はっ」とする場面があります。そういう人達は結果的に考えることに繋がるので話しかけられたら、短い話で終わらせないようにしています。

タグ

SNS, Voicy, web, こと, これ, サービス, ナンセンス, ビットコイン, プラットフォーム, ブログ, , 会話, 価格, 値下がり, 共通点, 場面, 宣伝, 期待, 痛感, 自分, 苦手, 西野亮廣, , 集客, ,

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

2022.08.15

Logging

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

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

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

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

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

タグ

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