映画、ジョンウィック コンセクエンス言い難いw

2023.09.25

Logging

おはようございます。先日、映画ジョンウィック コンセクエンスを観てきましたので、ネタバレ無しで感想を残そうと思ったのですが、言い難いので感想は述べませんがこれでシリーズ最後です、エンディング後、長いエンドロール後にオマケ映像も有り、ファンの方はとても良いじゃないかなとは思ったものの自分はシリーズ1だけが印象が良かったなっていう感想ですね。ここまでシリーズが長くなると飽きてしまいます。アクションシーンも何だか凄いだけどワンパターンに見えてしまってのが正直な感想です。

これが初めてでアクションシーンが好きな方なら、結構入り込める内容だと思います、あとアクションシーンなどにも疑問を持たずに見えたならですけどね。今回も辛口、コメントになりましたが何か惜しいなって思いです。そういう面ではミッションインポッシブはうまいですよね。ワンパターンなのに飽きの来ない見せ方です。

【本予告】『ジョン・ウィック:コンセクエンス』9/22公開

タグ

アクションシーン, エンディング後, オマケ映像, コメント, コンセクエンス, シリーズ1, ファン, ミッションインポッシブ, 内容, 印象, 感想, 映画ジョンウィック, 最後, 疑問, 自分, 見せ方, 辛口, 長いエンドロール後, ,

あなたの感想やご意見などをお聞かせ下さい。

2023.05.24

Logging

おはようございます、あなたの感想やご意見などをお聞かせ下さい。この頃、記事のネタに困っておりまして、記事にフォームを設けることにしました。設置することにより一方的な配信から少しは改善するかなという思いもあります。設置しても大体、コメントを書いてくれる人って稀な存在なのかもしれません。

高校入学までの大変さが違いすぎる!日本VSアメリカ#Shorts

こういう所は指定して頂けると有り難いです、例えばプログラムコードが間違っているとかの問題や解説文が変だとかいうのは、極力少なくしたいですけど、中々、過去のプログラムにまで手がまわらないので・・・・。

因みになんですが、このブログはもう5年以上続いています。自分が書けなくなるまで書いていこうと思います。個人的見解がほぼ大半を占めるのですが、たまに自分が書いた過去記事を読んであのときはこういう考えだったんだと思うところがあったり、これは不味いなと言うような記事もあったりします。そういう記事を見つけたら自分で極力アップデートしていってます、、、、。

タグ

アップ, あなた, コメント, ご意見, ところ, ネタ, フォーム, プログラム, プログラムコード, 問題, 大半, 少し, 感想, , , 見解, 解説文, 過去, 過去記事, 配信,

常時ディレクトリ監視を行う方法。 #CPU使用率 #炎上

2022.11.03

Logging

おはようございます。何だかアカウントを作ってまでコメントする人の考えがわからない🤔。

Qiitaに、このコードのsleep関数がないバージョンをアップしたら、何やらアカウントを作ってまでコメントする人が現れる、理由はCPU使用率がMax近くになるのが駄目だからです、そんな事は分かっているのが普通だと思っていたのだけども…例文として掲載するのも駄目だそうです、コピペで運用する人が結構いるのかもしれない。

正直なところ、そこまで叩かれるとは思っていなかったので、正直なところ驚きを隠せない。段々と世間の常識とズレていっている気がします😗。

昔はそういうコードは巷に溢れていたのにな・・・そんな事も出来なくなってきたのか・・・。

トイウコトデ、常時ディレクトリ監視を行い任意の画像ファイルだけ別のディレクトリへ移動するコードです。

nohup php File_Check.php &
├── File_Check.php
├── upload
└── data
<?php
while(true){
    if($result = is_scandir("./upload")){
        foreach($result as $key=>$value){
            rename("./upload/$value","./data/$value");
        }
    }
    sleep(3);
}

function is_scandir(string $dirname="",array $ext_list = ["png","jpg"]){
    $is_filelest = [];
    $result = scandir($dirname);
    foreach($result as $key=>$value){
        $ext = substr($value, strrpos($value, '.') + 1);
        if(in_array($ext,$ext_list,false)!== false){
            $is_filelest[] = $value;
        }
    }
    return count($is_filelest)>0 ? $is_filelest : false;
}

タグ

check, CPU, file, max, nohup, php, qiita, sleep, アカウント, アップ, コード, コピペ, コメント, そこ, ディレクトリ, トイウコトデ, ところ, バージョン, ファイル, 世間, , , 任意, 使用, 例文, , , 常時, 常識, 掲載, 方法, , 普通, 正直, 段々, , 炎上, 理由, 画像, 監視, 移動, 近く, 運用, 関数, 駄目,

WP予約投稿ツイートプラグイン作り方。#php言語 #code #v2

2022.10.11

Logging

おはようございます😤 お仕事に飢えてます…寒い季節ですね…。

さて、今日はWP予約投稿ツイートプラグイン作り方を記載していきます。ワードプレスでプラグインを作る場合はWordPressの下記の場所に任意のフォルダを作り、その中にディレクトリ名(任意名)と同じファイル名でphpファイルを作ります。※昔の名残なので今は命名が違っても動くかも知れませんが・・・。

cd /wp-content/plugins
mkdir mytweets
vi mytweets.php

そして、命名したファイル名を開き、ファイルの上部に下記のコメントを記載します。プラグイン名やプラグインの説明、プラグインバージョンをそれぞれ変更して頂き保存、その後サーバーサイドにアップロードします(フォルダごと)。

<?php
/*
Plugin Name: My tweets
Description: tweets
Version: 1.0
*/

これで何も動作しないプラグインが出来上がります。

後はコマンドラインからプラグインフォルダにcomposerをインストールしtwitteroauthのライブラリを入れます。

此処までが前手順です。此処までで挫折した人は結構いると思います🙄。

因みに此処までの事がすんなりと出来る人は、このブログの情報は必要ないものです。なのでココからはソースコードを記載します。WP予約投稿ツイートプラグインなんてオチャノコサイサイだと思います。

<?php
/*
Plugin Name: My tweets
Description: tweets
Version: 1.0
*/
if (!defined('ABSPATH')) exit;
require_once  "tw-v2-config.php";
require_once  "./vendor/autoload.php";

use Abraham\TwitterOAuth\TwitterOAuth;

function mytweets($new_status, $old_status, $post)
{
    
    if ($new_status == 'publish' && $old_status != 'publish') {
        try {
            $connection = new TwitterOAuth(APIKEY, APIKEYSECRET, ACCESSTOKEN, ACCESSTOKENSECRET);
            $connection->setApiVersion('2');
            $response = $connection->post('tweets', ['text' => get_the_title($post->ID) . "\n" . get_permalink($post->ID)], true);
        } catch (\Throwable $th) {
            //throw $th;
        }
    }
}
add_action('transition_post_status', 'mytweets', 10, 3);

上記のコードを記載した上で上書き保存&アップロードします。その後ワードプレスの管理画面よりプラグインを有効にして出来上がり、今回はtwitteroauthのライブラリを使用しましたがcrulなどのを理解している人はライブラリは特に必要ないのかなとも思います。ライブラリを使用すればお手軽ですが、万が一何かあった時に困るのでライブラリを使用せずにコードを書くという方もいらっしゃると思います。

自分も極力、公式のライブラリしか使わないようにしています🙇。

トイウコデ、ワードプレスのプラグインの作り方でした。

タグ

2, cd, Code, description, lt, mkdir, My, mytweets, name, php, plugin, plugins, Tweets, Vers, vI, WordPress, wp, wp-content, アップロード, お仕事, コメント, サーバー, それぞれ, ツイート, ディレクトリ, バージョン, ファイル, フォルダ, プラグイン, プレス, ワード, 上部, 下記, , 予約, , 今日, 任意, 作り方, 保存, 名残, 命名, 場合, 場所, 変更, 季節, , 投稿, , 言語, 記載, 説明,

一週間の予約が出来るデモコードです。良かったらどうぞ😌。 #php #code

2022.09.17

Logging

おはようございます、今日から台風接近らしいですね。この投稿は昨日書きました。

さて、一週間の予約(時刻表から)が出来るデモコードを書きました。これを書いたキッカケは昔の職場の方がこんな感じのUIを作られていたのを見て、自分も書いてみようと思いDEMOコードを朝起きて調べながら書きました。調べたことは選択を解除する方法だけで、後はオリジナルコードです、設計書も何もなく組み立ていきましたので、欠陥があるかもです。また、Qiitaにも記載しましたが、コメントをほぼ書いていません。書かずともプログラマーなら分かるだろうという感覚です。

予約ー時刻表DEMO

肝心の確認部分は記載していないのにも訳があります。営業妨害になっては駄目だからです。そういう理由で確認部分以降は書いていません。

こちらにもソースコードを掲載しときますね。

<?php
ini_set("display_errors",0);
/**
 * @param array $holiday
 * @return string $str
 */
function fn_header($holiday = [])
{
    $str = "";
    $date = new DateTime();
    for ($i = 0; $i < 7; $i++) {
        !$i ? "" : $date->modify('+1 day');
        $w = $date->format("w");
        $tabindex = $i*7;
        $ho = (function ($days, $holiday = []) {
            return (array_search($days, $holiday) !== false) ? "holiday" : "";
        })($date->format("Y-m-d"), $holiday);
        $str .= "
        <th tabindex=$tabindex>
            <span class='header_no week_no_$w $ho'>" . $date->format("Y-m-d") . "</span>
        </th>";
    }
    return $str;
}
/**
 * @param int $h_min
 * @param int $h_max
 * @param int $m_interval
 * @param array $cnt
 * @param array $reserve
 * @param array $holiday
 * @return string $str
 */
function fn_time($h_min, $h_max, $m_interval,$cnt=[],$holiday = [], $reserve = [])
{
    $str= [];
    for ($h = $h_min; $h <= $h_max; $h++) {
        for ($m = 0; $m < 60; $m = $m + $m_interval) {
            print("<tr>\n");
            $date = new DateTime();
            for ($i = 0; $i < 7; $i++) {
                $cnt[$i]=!$cnt[$i]?(((($h_max - $h_min)+1)*(60/$m_interval))*($i))+7:(++$cnt[$i]);
                !$i ? "" : $date->modify('+1 day');
                $w = $date->format("w");
                $ho = (function ($days, $holiday = []) {
                    return (array_search($days, $holiday) !== false) ? "holiday" : "";
                })($date->format("Y-m-d"), $holiday);
                $time = sprintf("%02d:%02d",$h, $m);
                if ($ho) {
                    print("
                        <td class='' tabindex={$cnt[$i]}>
                            <span class='header_no week_no_$w $ho'>" . $time . "</span>
                        </td>");
                } else {
                    $r = (function ($days, $reserve = []) {
                        return (array_search($days, $reserve) !== false) ? "reserve" : "";
                    })($date->format("Y-m-d") . "_" . $time, $reserve);
                    if (!$r) {
                        print("
                            <td class='date_" . $date->format("Y-m-d") . "_{$time}' tabindex={$cnt[$i]} data-date='" . $date->format("Y-m-d") . "_{$time}'>
                                <a class='time_{$m}_" . $date->format("Y-m-d") . "_{$time}' data-sortno={$cnt[$i]}  href='#?data=" . $date->format("Y-m-d") . "_{$time}'><span class='header_no week_no_{$w} {$h}'>{$time}</span></a>
                            </td>");
                    } else {
                        print("
                            <td class='' tabindex={$cnt[$i]}>
                                <span class='header_no week_no_$w $r'>" . $time . "</span>
                            </td>");
                    }
                }
            }
            $date = null;
            print("</tr>\n");
        }
    }
    return "";
}
?>
<!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">
    <title>予約-時刻表(デモ版)</title>
    <style>
        table,tr,td{
            user-select: none;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-12 text-center">
                <h1 class="display-1">予約-時刻表<br></h1>
                <h5>{予約:時刻をクリックするか、<br>
                    左クリック選択状態で複数選択可能です<br>
                    (日付またぎは禁止しています)}</h5>
                <h5>{ダブルクリックすると予約画面に遷移します。<br>
                    ※DEMO版ですので予約登録画面は御座いません}</h5>
            </div>
        </div>
    </div>
    <div class="container-fluid  text-center">
        <div class="row">
            <div class="col-12">
                <table class="shadow-lg table table-hover table-bordered">
                    <thead>
                        <tr>
                            <?= fn_header() ?>
                        </tr>
                    </thead>
                    <tbody>
                        <?=fn_time(10, 20, 10,[],["2022-09-18","2022-09-23"],["2022-09-19_10:40","2022-09-19_10:50"]) ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    <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>
let date_obj = document.querySelectorAll("td");
let submit_url = "https://example.com";
let is_date_data = [];
let cnt = 0;

date_obj.forEach(function (elm, key) {
    elm.addEventListener("mouseout", select_in_value);
    elm.addEventListener("click", sp_select_in_value);
    elm.addEventListener("touchend", sp_select_in_value);
    elm.addEventListener("dblclick", select_out_value);
});
function check_value(o, e) {
    if (is_date_data.length === 0) {
        return true;
    }
    let d = o.getAttribute("data-date");
    return d ? ((d) => {
        let f = is_date_data.find(element => {
            let pattern = new RegExp(d.split("_")[0]);
            return !element.match(pattern);
        }) ? false : true;
        if (!f) {
            select_clear(o, e);
            is_date_data = [];
            cnt = 0;
        }
        return f;
    })(d) : false;
}
function select_in_value(e) {
    if (e.buttons === 1 && check_value(this, e)) {
        if (this.getAttribute("data-date")) {
            this.style.backgroundColor = "#555";
            this.children[0].style.color = "#fff";
            if (is_date_data.indexOf(this.getAttribute("data-date")) && is_date_data.indexOf(this.getAttribute("data-date"))) {
                is_date_data[cnt] = this.getAttribute("data-date");
                cnt++;
            }
        }
    }
}
function sp_select_in_value(e) {
    if (check_value(this, e)) {
        if (this.getAttribute("data-date")) {
            this.style.backgroundColor = "#555";
            this.children[0].style.color = "#fff";
            if (is_date_data.indexOf(this.getAttribute("data-date")) && is_date_data.indexOf(this.getAttribute("data-date"))) {
                is_date_data[cnt] = this.getAttribute("data-date");
                cnt++;
            }
        }
    }
}
function select_out_value(e) {
    if (is_date_data.length) {
        let is_data = is_date_data.map(function (elm, index) {
            return "date[" + index + "]=" + elm;
        });
        window.location.href = submit_url + "?" + is_data.join("&");
    }
}
function select_clear(o, e) {
    let is_ClassName = [];
    is_ClassName = is_date_data.map(function (d) {
        return "date_" + d;
    });
    is_ClassName.map(class_name => {
        document.getElementsByClassName(class_name)[0].style.backgroundColor = "#fff";
        document.getElementsByClassName(class_name)[0].children[0].style.color = "#0d6efd";
    })
}

タグ

0, Code, com, demo, https, ligaLgY-uZ, php, qiita, UI, watch, www, youtube, オリジナル, キッカケ, コード, こちら, こと, コメント, これ, ソース, デモ, プログラマー, , 予約, 今日, 台風, 営業, 妨害, , 感じ, 感覚, 投稿, 接近, 掲載, , 方法, , 昨日, 時刻表, , 欠陥, 理由, 確認, 職場, 肝心, 自分, 解除, 記載, 設計書, , 選択, 部分, 駄目,

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

2022.07.20

Logging

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

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

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

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

タグ

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

開発レビューした事がないが嫌いな人からレビューされたら。

2022.03.15

Logging

運悪く開発レビューした事がないので、今までコードに文句言われたことが殆どない、唯一Qiitaでコメントで指摘してくれるエンジニアはいるのですが、それ以外ないのです。でも嫌いな人からレビューされたら自分は心が狭いのでムカってなると思います。

そこらへん、皆さんどう思われているのでしょうか?

コードを書き直されるのは自分はあまりうれしくないですね。わざとわかり易く書いている部分があったりします。確かにコードを短くすることが出来るのだけど、それが正しいことなのかとは思わないタイプの人間です🤔。

駆け出しエンジニアにもわかり易く書くことのほうが、結果的に言えば自分に質問してくる事がなくなり自分の仕事に集中することが出来ると思っています。

これに関しては皆様が是々非々で判断してください😌。

タグ

qiita, エンジニア, コード, こと, コメント, これ, そこら, それ, タイプ, ムカ, レビュー, , , 人間, 仕事, 判断, 唯一, 嫌い, , 指摘, 文句, 是々非々, 殆ど, 皆さん, 皆様, 自分, 質問, 部分, 開発, 集中, 駆け出し,

コードを見れば大体の技術レベルが分かるは本当?しかも、性格も分かる場合がある。

2022.02.07

Logging

おはようございます。今日の朝も寒いですね。。。

朝からcode.orgの動画を見ていたら日本もアメリカもITエンジニアの割合はあまり変わりないみたいな事を知りました、そしてアメリカでも子供たちのなりたい職業1位でもないみたいです。

さて、コードを見れば大体の技術レベルが分かるは本当?しかも性格も分かる場合があるですが、ソースコードを見ると其の人の技術がわかり、変数の名前付けとかで性格もある程度分かってしまったりします。そしてバージョン管理、ファイル管理で仕事に対する姿勢までもが分かってしまったりします。

Computer Science is Changing Everything

なので・・・日頃からご注意ください。自分の場合、Githubのコメントなどを見るとこの人は適当な人なんだなぁって事が分かってしまうかもしれません。唯、仕事に対する姿勢は少し違うかなっていうのはあります。

仕事になるとファイル管理やバージョン管理もこの頃はちゃんとするようになりました。やはり整理整頓は結構大事な要素です。ファイルがどこにいったんだろうとか検索しないでも良いように管理することは大切なことです。昔はごちゃごちゃなファイル管理をしていましたけど(反省)😣。

因みに私生活で使用するパソコンのフォルダ整理は全然ダメダメですね。整理しようと思っているのだけどフォルダやファイル数が多くて大変な感じです(負の遺産が多いです)。

タグ

, Code, github, IT, org, アメリカ, エンジニア, コード, コメント, ご注意, ソース, バージョン, ファイル, レベル, , , 今日, 仕事, 割合, 動画, 名前, 場合, 変数, 大体, 姿勢, 子供, 少し, 性格, 技術, 日本, 日頃, , 本当, 管理, 職業, 自分, 適当, ,

アンフォローが多発しているのでアンフォローした人には自動でお礼コメントする。

2021.07.15

Logging

アンフォローが多発しているのでアンフォローした人には自動でお礼コメントするようにプログラミングコードを書いて五分間で処理を実行するようにcrontabに設定しました。ソースコードの一部を記載しますのでご自分の環境に合わしてご自由にお使いくださいませ。尚、TwitterOAuthライブラリを使用しておりますが、ライブラリの導入などに関しては割愛しております。

何故、こんなコードを書いたのか余談。フォロワーさんが外れるのはあまり嬉しいことではないですよね。離れていく人を食い止めようとは思いませんが、最後のお礼コメントぐらい言わせてくださいなという考えの元、今回のお礼コメントをするPHPのコードを書きました。相変わらずソースコードにコメントはありません、悪しからず?。

尚、一回目は一部コメントアウトして実行ください?

<?php
require_once("../vendor/autoload.php");

use Abraham\TwitterOAuth\TwitterOAuth;

if ($argv[0]) {
    require_once "./tw-config.php";
    $f_data = @file_get_contents("followers.dat");
    $f_data = $f_data?explode(PHP_EOL,$f_data):[];     

    date_default_timezone_set('Asia/Tokyo');
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
    $response = $connection->get("followers/ids", array(
        'screen_name' => 'zip358com',
        'count'=>1000
    ));

    $unFolloewers = array_diff($f_data,$response->ids);
    $data = @implode(PHP_EOL,$response->ids);
    file_put_contents("followers.dat",$data);

    if($unFolloewers){
        foreach($unFolloewers as $key=>$val){
            $response = $connection->get("users/show", array(
                'user_id' =>$val
            ));
            $text = "@".$response->screen_name. " さん 今までフォローありがとうございました(¯―¯?)。{フォロー解除されました? ([atmark]zip358comより自動投稿)}";
            print $text;
            $connection->post("statuses/update", array("status" => $text . " \n"));
        }
    }
}

タグ

aut, crontab, lt, once, php, quot, require, TwitterOAuth, vendor, アウト, アン, お使い, お礼, コード, こと, コメント, ご自分, ソース, フォロー, フォロワー, プログラミング, ライブラリ, , 一部, , , 今回, 何故, 余談, 使用, , 処理, 割愛, 多発, 実行, 導入, 最後, 環境, 自動, 記載, 設定,

LINE messaging apiでブログの配信通知するプログラムコード。

2021.07.14

Logging

暑い日が続いています、夕立になった後のアスファルトの匂いを嗅ぐと夏だなぁって思うのは自分だけでしょうか?
さてLINE messaging apiでブログの配信通知するプログラムコードを書きましたのでお裾分けします?、コードはいつもの通りコメントなんてものはありません。この2つのコードは何をしているのかだけ、解説しますね。

1つ目のコードは私のLINEチャンネルを友だち追加してくれたら、データベースにuseridを登録するコードです。解除したらuseridの削除もちゃんとしています。

2つ目のコードは私のLINEチャンネルに登録してくれた方々に最新の記事を送信しています。自分は毎日、9時に最新の記事を送信するようにcron登録しました。

一部、defineを設定している部分がありますのでコードに追加してください、よろしくお願いします?
※LINEチャンネル登録よろしくお願いします。

<?php
    class line{
        function webhook($webhook_object=null){
            if(!$webhook_object)return false;
            $obj = json_decode($webhook_object);
            $type = $obj->events[0]->type;
            $userId = $obj->events[0]->source->userId;
            $replyToken = $obj->events[0]->replyToken;
            if($type==="follow"){
                $pdo = self::db();
                if($pdo){
                    $sql = "insert into user (userid)values(:userid)";
                    $sth = $pdo->prepare($sql);
                    $sth->bindValue(":userid",$userId,PDO::PARAM_STR);
                    $sth->execute();
                }
            }
            if($type==="unfollow"){
                $pdo = self::db();
                if($pdo){
                    $sql = "delete from user where userid = :userid";
                    $sth = $pdo->prepare($sql);
                    $sth->bindValue(":userid",$userId,PDO::PARAM_STR);
                    $sth->execute();
                }
            }
            if($type==="message"){

            }
        }

        function db(){
            try {
                $pdo = new PDO(DSN,USERNAME,PASSWORD);
                return $pdo;
            } catch (\Throwable $th) {
                //throw $th;
                return false;
            }
        }
    }


    if($data = file_get_contents('php://input')){
       print line::webhook($data);
    }
<?php
    class blog_post_msg_line{

        function db(){
            try {
                //code...
                return new PDO(DSN,USERNAME,PASSWORD);
            } catch (\Throwable $th) {
                //throw $th;
                return false;
            }
        }

        function rss(){
            $obj = simplexml_load_file("https://zip358.com/feed");
            $post_message[2] = $obj->channel->item[0]->title ."\n". $obj->channel->item[0]->link;
            $post_message[1] = $obj->channel->item[1]->title ."\n". $obj->channel->item[1]->link;
            $post_message[0] = $obj->channel->item[2]->title ."\n". $obj->channel->item[2]->link;
            return $post_message;
        }

        function main(){
            $pdo = self::db();
            if($pdo){
                $post_message = self::rss();
                $sql = "select userid from user;";
                $sth = $pdo->query($sql);
                $res = $sth->fetchAll(PDO::FETCH_ASSOC);
                if($res){
                    foreach($res as $key=>$val){
                        $user_id = $val["userid"];
                        self::line_post($user_id,$post_message);
                    }
                }
                
            }
            
        }

        function line_post($user_id ='',$post_message=null){
            $text = [
                [
                    'type' => 'text',
                    'text' =>"最新の記事をお届けします"
                ],
                [
                'type' => 'text',
                'text' =>$post_message[0]
                ],
                [
                    'type' => 'text',
                    'text' =>$post_message[1]
                ],
                [
                    'type' => 'text',
                    'text' =>$post_message[2]
                ]                                
            ];
            
            $message = [
                'to' => $user_id,
                'messages' => $text
            ];
            
            $message = json_encode($message);
            
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . ACCESS_TOKEN, 'Content-Type: application/json'));
            curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/v2/bot/message/push');
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
            curl_setopt($ch, CURLOPT_POSTFIELDS, $message);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $res = curl_exec($ch);
            curl_close($ch);      
        }
    }

    if($argv[0]){
        blog_post_msg_line::main();
    }  

タグ

, 2, , API, cron, define, line, Messaging, userid, アスファルト, いつも, お裾分け, お願い, コード, コメント, チャンネル, データベース, ブログ, プログラム, もの, 一部, , 削除, 匂い, 友だち, , 夕立, , 方々, , 最新, 毎日, 登録, , 自分, 解説, 解除, 記事, 設定, 追加, 送信, 通り, 通知, 部分, 配信,

映画、るろうに剣心 最終章を観てきました。

2021.04.23

Logging

映画、るろうに剣心 最終章を観てきました。日本でしか再現できなかった映画かなと毎回観に行って感じます。漫画、るろうに剣心の再現度は高いですね。最終章の最後の戦いを一部、サウンドトラック無し(効果音だけ)で映像化したのは圧巻でした。ひとつ言うと漫画のセリフ通りでなくても良いかなという所かな。雰囲気が伝われば自分は良いかなと感じるので、そこだけ改善すればもっと良い感じの映画になったかなと思います。

https://twitter.com/zip358com/status/1385382759401619458

少し辛口コメントを書くと日本の映画なのでやはり演技力は気になってしまう所です。後半はバトルシーンになるのでそういう所は忘れてしまいますが・・・。お客さんの殆どは冒頭バトルシーンで感情移入出来るじゃないかなと思います、しかしスピード感がないシーンなどになると役者さんにより演技力の差がどうしても見えてしまうのが邦画の難点かなと感じました、辛口評価するとそうなります。。。。?ですが全体を通してみると良い感じに漫画『るろうに剣心』の世界観が再現出来ていると感じました、特にワイヤーアクション殺陣には圧巻です!!これだけは映画館でしか体験できないじゃないかと思います。

『るろうに剣心 最終章 The Beginning』特報映像
ONE OK ROCK – Renegades [OFFICIAL MUSIC VIDEO Short Ver.]

最後にエンディングで流れるONE OK ROCKのRenegades(反逆者・裏切者)の曲も凄くマッチしていて良かったです。

タグ

お客さん, かな, コメント, サウンドトラック, シーン, スピード感, セリフ, そこ, バトル, ひとつ, るろう, 一部, 世界観, 全体, 再現, 冒頭, 剣心, 効果音, 圧巻, 少し, , 役者, 後半, 感じ, 感情移入, 戦い, , 改善, 日本, 映像, 映画, 最後, 最終章, 殆ど, 毎回, , 演技力, 漫画, 自分, , 評価, 辛口, 邦画, 難点, 雰囲気,

高知城歴史博物館近くにライブカメラ!

2021.03.14

Logging

地元ネタでごめんなさい?
高知城歴史博物館近くにライブカメラが設置されていることを知っている人はあまりいないと思いますが、ライブカメラが設置されていて絶えず映像がYOUTUBEに流されています。なのでここら付近で交通違反などをすると確実に証拠が残ります(結構、通行人が・・・。)。流している人が法人なのか個人なのかわかりませんがTW高知というチャンネル名で活動されています。

https://www.youtube.com/channel/UCeseur4uv1xiJPaf06znfSg

https://www.youtube.com/watch?v=EaR67gitw9c

チャンネル登録は上記のURLを参照ください、またライブ映像を視聴したい方もまた上記のURLを参照くださいませ。

※このチャンネルがいつまで続くかは今後の視聴率次第かもしれません。高知駅前付近や高知中央公園などにライブカメラを付けると視聴率は高くなると思いますが・・・ここはよさこい祭り以外だと微妙なところですよね。
なんせ、視聴者一人とかですからね…。そしてコメント欄はオフになっているので見る人少なそうです。

追記:RKC高知放送さまがライブカメラつけていた・・・。

https://www.youtube.com/channel/UCI8NjCAztJIipObtK1sYueQ

因みに渋谷・スクランブル交差点にもライブカメラが設置されておりYOUTUBEで見れるようになっています。

https://www.youtube.com/user/FNNnewsCH

タグ

67, , com, EaR, gitw, https, tw, url, watch, www, youtube, いつ, オブ, ここ, ここら, こと, コメント, チャンネル, ところ, ネタ, よさこい祭り, ライブ, ライブカメラ, 一人, 上記, 中央, 交通, , 今後, 個人, 公園, 博物館, 参照, 地元, 微妙, , 映像, , 次第, 歴史, 法人, 活動, 登録, 視聴, 視聴率, 視聴者, 設置, 証拠, 通行人, 違反, 駅前, 高知, 高知城,

この頃の近況PV

2020.09.15

Logging

この頃、雑記の路線を絵描きにかえると高々と宣言していましたが、絵描きの本数を変えます。平日は絵描きの挿絵をやめてもとに戻します。理由は絵にしてもあまり反響がなかった。基本的にツイッターでコメントしてくれる人もいないので反響の指数はPVでしかわからないのですが、そのPVがあまり伸びなかったのと何だかプロでもないので、正直な所、絵を描いていると年相応でもない気がすると感じてきたのが原因。ちょっと恥ずかしいなと思ったので土日だけ絵の挿絵にします。

それ意外は日々ネタは極力書かないようにします。そういう事なので日々ネタは土日以外見えないかもしれませんがご了承くださいませ。

仕事を始めてもブログは続けていきますのでよろしくお願いします。

トイウコトデ、現場からでした?

タグ

PV, お願い, コメント, ご了承, それ, ツイッター, トイウコトデ, ネタ, プロ, ブログ, もと, , , 仕事, 原因, 反響, 土日, 宣言, 平日, 年相応, 意外, , 指数, 挿絵, 日々, 本数, 正直, , 現場, 理由, , 絵描き, 路線, 近況, 雑記, , 高々,

WPの記事を検索し一括カテゴリ変更する方法。

2020.05.25

Logging

WPの記事を検索し一括カテゴリ変更する方法は下記になります。ワードプレスのwp-load.phpを読み込み、下記のようなソースコードのファイルをcommandで実行すると、カテゴリが任意のカテゴリに変更されます。

重要点はwp_set_post_categoriesの引数です。arrayの配列の数値ですが、この数値をカテゴリIDのナンバーに変更することによってカテゴリが更新されます。

企業でご使用する場合はカテゴリ更新部分を一度、コメントアウトしCSVか何かでうまく記事が抽出できているか確認した後に、更新するようにお願い致します、当然ながら不具合等の苦情は受け付けません。自己責任でご使用くださいな。

尚、この下記のコードの意味がわからないという方は下記のURLからそれぞれのワードプレスようのメソッドが何を意味しているか調べてくださいね。
https://elearn.jp/wpman/

<?php
require_once(__DIR__ . '/../wp-load.php');
if ($argv[0]) {
    $args = array(
        'post_type ' => 'post',
        'posts_per_page' =>-1,
        's' => '映画'
    );
    $posts = get_posts($args);
    foreach ($posts as $val) {
        $href =  get_permalink($val->ID);
		$title = get_the_title($val->ID);
		$cnt++;
		echo $cnt.":".$title."\n".$href."\n";
		wp_set_post_categories($val->ID,array(1,2,3));
    }
}

タグ

-Command, 39, array, categories, CSV, DIR, ID, lt, once, php, POST, require, set, url, wp, wp-load, アウト, お願い, カテゴリ, コード, こと, コメント, ご使用, ソース, それぞれ, ナンバー, ファイル, プレス, メソッド, ワード, 一度, 一括, 下記, 不具合, 任意, 企業, , 何か, 使用, 場合, 変更, 実行, 引数, 当然, , 意味, 抽出, 数値, , 方法, 更新, 検索, 確認, 自己, 苦情, 記事, 責任, 部分, 配列, 重要点,

どちらかと言うと男のだらだらだと思います。YOUTUBER:ひげおやじ:さん

2020.04.23

Logging

ひげおやじと仲間たち/ガジェット通信というYOUTUBEチャンネルを運営されているひげおやじ事、ヒゲおじさん、ひげ無いのに何故、ヒゲおじさんなのか?不明です?知っている人は通な人だと思います。ちょくちょく「ひろゆき」さんと絡んでいる。親交はかなり深いみたいですね。

ヒゲおじさんもひろゆきさんも自分は嫌いじゃないので、暇な時にダラッと聞いています。ライブ放送を直で聞いてお酒飲みながらYOUTUBEのチャットでコメントを書いたりすると絡んでくれる人なのでなんか、親近感が生まれる人も多そうです。どちらかと言うと男がお酒飲みながら、語るとこうなるよ的なものかなと思います。

【ひげひろ】4/21 ZOOM飲み会ってどうよ

因みにヒゲおじさんはガジェット通信の社員さんだと思います。いまもそのはずだと。ヒゲおじさんとひろゆきさんは結構昔から親交があることはひろゆきさんの嫁さんがTwitterで(4コマ漫画)とか発言しています。なお、お正月はヒゲおじさん宅で迎えるのが恒例の行事だとか…。

そしてヒゲおじさん、最近?ご結婚されたそうです。そんなヒゲおじさんのチャンネルはこちらから

ひげおやじと仲間たち/ガジェット通信
https://www.youtube.com/user/gamelive/videos

タグ

4, Twitter, youtube, YOUTUBER, いま, おじさん, おやじ, お正月, お酒, ガジェット, かなり, こと, コメント, チャット, チャンネル, どちらか, パス, ひげ, ひろゆき, もの, ライブ, 不明, , , 仲間, 何故, 嫁さん, 嫌い, 放送, , , , 漫画, , 発言, 社員, 自分, 親交, 親近感, , 通信, 運営,

ハローワークサイトの仕様が変わった、使いづらいよ!! #ハローワーク

2020.01.06

Logging

本日(高知県)からおそらく高知県のハローワーク検索端末が変わったみたい?ウェブ(ホームページ)のハローワークサイトと統合した形になっている。要するに、わざわざハローワークへ行かなくても自宅で検索できるように
なったということです。

トイウコトデ、自宅でお仕事検索してそのナンバーを控えて最寄りのハローワークに問い合わせするのが便利かと思います。

ちなみにハローワークのサイトってアクションサーブレットで動いているよね。そろそろPHPで動かしたほうが良いじゃないかと思ってしまうのはじぶんだけなのでしょうかね?そしてcommon.jsを見た所、素人ぽっい記述だったが、エラーが一つも出ていないところは関心、ただWARNING(警告)はある。そしてコメント退けるべしとか、難読化しろよとかいろいろ言いたくなる。これ何次元の下請けがやってんだろうか・・・。


https://www.hellowork.mhlw.go.jp/

タグ

common, go, hellowork, https, JS, mhlw, php, WARNING, www, アクション, ウェブ, エラー, お仕事, こと, コメント, これ, サーブ, サイト, じぶん, トイウコトデ, ところ, ナンバー, ハローワーク, ホームページ, レッド, わざわざ, 一つ, 下請け, 仕様, 何次, 便利, 問い合わせ, , , 最寄り, 本日, 検索, 端末, 素人, 統合, 自宅, 記述, 警告, 関心, 難読, 高知県,

ちょっとした物。InstagramのAPI取得する

2019.10.05

Logging

Instagram(インスタグラム)の画像などが取得することが出来ます。アクセストークンの取得の方法がわからない場合はぐぐってください。尚、APIのバージョンが、今後上がった場合は下記のコードは使用できなくなる可能性があります。ちなみにこのコード動作確認はしておりません。このコードを理解して使用できる人のみお使いください。
尚、画像取得数はデフォルト10にしています。プログラムではアクセストークンと20を渡しています。
画像URLはコメントアウトのところに入ってきます。※プログラムを可変してお使いください。

<?php
//Instagram
//https://api.instagram.com/v1/users/self/media/recent/?access_token=&count=
class instagram_api{
    public const url ="https://api.instagram.com/v1/users/self/media/recent/?access_token=";
    public function api ($access_token= "",$img_count =10){
        $url = self::url;
        return (object)json_decode(@file_get_contents($url . $access_token."&count=".$img_count));
    }
    public function obj_img($obj=Null){
        if(!is_object($obj))return false;
        if(!$obj->data)return false;
        foreach ($obj->data as $key => $item) {
            var_dump($item);
            // $item->images->standard_resolution->url
            // $item->images->low_resolution->url
        }
        return true;
    }
}
$obj = instagram_api::api("access_token",20);
instagram_api::obj_img($obj);

タグ

, 10, 20, access, API, class, com, const, count, https, instagr, Instagram, lt, media', php, public, quot, recent, self, token, url, users, アウト, アクセス, インスタグラム, コード, こと, コメント, デフォルト, トークン, ところ, バージョン, プログラム, 下記, , 今後, 使用, 動作, 取得, 可能性, 場合, 方法, , 理解, 画像, 確認,

クローラーするサービスの基礎。

2016.11.19

Logging

クローラーするサービスの基礎のソースを載せときます。殆どサイボウズ・ラボの人が書いたコードです。
このサンプルソースをそのまま貼り付けても一階層のリンクしか取得できません。
再帰処理の部分をコメントアウトしているからです。ちなみにコメントアウトを外してもメモリオーバーでおそらく
大体のサーバでエラーが出力されます。どうしたら良いのかといえば、DBに1階層目のリンクデータ、2階層目のリンクデータという様に保存する機能を施す。次にajaxで階層を受け渡しながら、再帰処理を行う。
再帰処理が終わる要素はそれ以上、下階層がないことを判断する。そのためには保存したデータを検索することが重要になる。=(イコール)
新規にデータを登録しているうちは、再帰処理を終わらせないようにすることが大事になる。
これの機能を加えることで巡回する事が可能になる。ここで注意しないといけないのが、外部リンクを保存しないことです。外部リンクまで保存していると巡回は永遠に終わらないでしょう・・・。
トイウコトデ
ほぼ??コピペソースを貼っときます。

<?php
echo json_encode($obj);
exit;
function get_linkarray($link)
{
	$context = stream_context_create(array("http" => array("method" => "GET", "header" => "User-Agent: simplecrawler.library.php 0.0.1")));
	$resultR = array();
	$resultS = simplecrawler($context, $link, $link, parse_url($link));
	foreach ($resultS as $k => $v) {
		$resultR[] = $v;
	}
	return $resultR;
}
function simplecrawler($context, $link, $burl, $base, $linkArrayDat = array())
{
	$linkArrayPre = crawler_link(crawler_page($link, $burl, $base, $context), $link, parse_url($link));
	foreach ($linkArrayPre as $k => $v) {
		if (!isset($linkArrayDat[$v])) {
			$linkArrayDat[$v] = $v;
			//$linkArrayDat = array_merge($linkArrayDat, simplecrawler($context, $v, $burl, $base, $linkArrayDat));
		}
	}
	return $linkArrayDat;
}
function crawler_page($link, $burl, $base, $context)
{
	if (strpos($link, $burl) === 0) {
		$page = @file_get_contents($link, false, $context);
		return $page === FALSE ? null : $page;
	} else {
		return null;
	}
}
function crawler_link($page, $burl, $base)
{
	$linkArray = array();
	if ($page === null) {
		return $linkArray;
	}
	preg_match_all("/[\s\n\t]+href\s?=\s?”(.*?)”/i", $page, $href);
	for ($i = 0; $i < count($href[1]); $i++) {
		$link = $href[1][$i];
		if (preg_match("/^http(s)*\:\/\//", $link)) {
			$result = $link;
		} elseif (preg_match("/^\/.+$/", $link)) {
			$result = $base["scheme"] . "://" . $base["host"] . $link;
		} else {
			// echo $base["path"] . “\n”;
			$b = preg_split("/\//", dirname($base["path"]));
			$t = preg_split("/\//", $link);
			foreach ($t as $v) {
				$l = $v === "." ? true : ($v === ".." ? array_pop($b) : array_push($b, $v));
			}
			$result = $base["scheme"] . "://" . $base["host"] . join("/", $b);
		}
		$linkArray[$result] = $result;
	}
	return $linkArray;
}

タグ

, 2, ajax, db, アウト, イコール, うち, エラー, オーバー, クローラー, コード, ここ, こと, コメント, これ, サーバ, サービス, サイボウズ, サンプル, ソース, それ, ため, データ, トイウ, メモリ, ラボ, リンク, , , , , 保存, 再帰, 処理, 出力, 判断, 取得, 可能, 基礎, 外部, 大事, 大体, 巡回, 新規, 検索, 機能, 殆ど, 永遠, 注意, 登録, 要素, 部分, 重要, 階層,

フェイスブックのいいね以外のボタンリリースか?エモーション?

2015.10.09

Logging


フェイスブックのいいね以外のボタンリリースか?エモーション?
リリースかテスト段階か・・・英語がわからないので
憶測の域で話しますとおそらくリリースです。
(※テスト段階みたいですね。:共感ボタンって言うらしいです。)
自分はいいね以外のボタンに賛成です。
悪い出来事にいいねは出来ないし、良くないことにも
いいねっていうのは出来ないから
いいね以外のボタンが出来てよかったと思います。
これがリリースされる事に期待してます。
ちなみにYOUTUBEはいいね以外に悪いねっていう
評価がありますよね。あれは良いと思いますが
今回のフェイスブックのエモーションは
もっと、表現の幅があるのでもっと良いかと・・・。
(悲しいとか怒りとか笑いとか)
逆にエモーションボタンが増えたことにより
コメントを書く人が減りそうな気がします。
フェイスブック疲れとかしている人には
有難い機能かもしれないですね。
動画URL貼っときます。
フェイスブックのアカウントがある人は視聴できます。
https://www.facebook.com/chris.cox/videos/10101920404101583/

タグ

, youtube, アカウント, いいね以外, エモーション, エモーションボタン, コメント, テスト段階, フェイスブック, ボタンリリース, , 共感ボタン, 動画URL, , , 怒り, 悪い出来事, 憶測, 有難い機能, 笑い, 英語, 表現, 視聴, 評価,

jQueryでローディングって検索すると。

2015.05.20

Logging


 
jQueryでローディングって検索すると何やらいろいろヒットしました。なるほど、そういう事なのか、以外にも短いコードで書けるだなということが分かって目から鱗が落ちました。ロードされるまでGif動画を表示させてロード後切り替えているだけなんだ。jQueryってすごいですね。ちなみにjQuery.event.add(window,”load”,function(){…} こう書けばデータが読み込まれた後に処理が実行されます。ちなみにこの場合、HTMLや画像などのデータが読み込まれるまでGif画像を表示させる方法ですが、非同期通信を行っている間、ローディングのGif画像を表示させて普通に切り替える事も可能なんだということで、BBSもどきにその機能をつけてみました。コメントが表示されるまでローディング画像を表示させています。
https://zip358.com/tool/BBS

タグ

AM, BBSもどき, function, Gif動画, Gif画像, html, jQuery.event.add, load, window, コード, コメント, データ, ローディング, ローディング画像, ロード後, 以外, 処理, 方法, 機能, 短いコード, 非同期通信, ,

Accessのさんぷるコードができましたので(´Д`)貼っときます。

2014.08.21

Logging

突貫工事で作ったのでバグは多少あると思いますが{例えばsql インジェクション対策とか。}、Accessのsampleコードができましたので貼っときます。なお、これで何が出来るかって言えばDBの修正、追加、削除といった基本的な動きをします{挙動不審ぎみ嘘!?}。若干、ソースコードを弄くれば使い回しが出来るようにしております。飯くったり他のことをしながらもガリガリとコードを書きました。ちなみにAccessのViewerをマイクロソフトからダウンロードすると動作すると思います。ファイルは下記からダウンロードください。 追記:暇な時に改良していきますので( ゚д゚)ノ ヨロシクとコメントも暇があれば書いときます。そして無駄なコードがありますが、それも軽量していくつもりです(`・ω・´)。ちなみにいまはDBを空にすると落ちますので・・・・(直しました。)。?samplezip358.zip?[https://zip358.com/tool/samplezip358.zip][08/21 11:26]

Option Compare Database
Public db_x As Long
Public max As Variant
Function sel_all(tablename As Variant, tal_valname As Variant) As Variant
    Dim x As Long
    Dim y As Long
    Dim sql As String
    Dim RS As DAO.Recordset
    Dim db As DAO.Database
    Dim hoge(999, 999) As Variant
    Dim val_n As Variant
    Dim val As Variant
    Set db = CurrentDb
    sql = "SELECT * FROM " & tablename & " ORDER BY ID ASC;"
    MsgBox sql
    Set RS = db.OpenRecordset(sql)
    Do Until RS.EOF
        For y = 0 To UBound(tal_valname)
            hoge(x, y) = RS.Fields(tal_valname(y))
        Next y
        RS.MoveNext
        x = x + 1
    Loop
    Set db = CurrentDb
    sql = "SELECT MAX(ID) as maxs  FROM " & tablename & ";"
    MsgBox sql
    Set RS = db.OpenRecordset(sql)
    max = RS.Fields("maxs")
    db_x = x - 1
    Set db = Nothing
    sel_all = hoge
End Function
Function up_in(chk As Boolean, tablename As Variant, tal_valname As Variant, tal_val As Variant, ID As Long) As Variant
    Dim sql As String
    Dim RS As DAO.Recordset
    Dim db As DAO.Database
    Dim hoge_valname As String
    Dim hoge_val As String
    Dim hoge As Variant
    If chk = True Then
        For i = 0 To UBound(tal_valname)
            hoge_valname = hoge_valname & tal_valname(i) & ", "
        Next i
        hoge_val = sql_str(tal_val, "", "", True)
        sql = "INSERT INTO " & tablename & " (" & Left(hoge_valname, Len(hoge_valname) - 2) & ")VALUES (" & hoge_val & ");"
    Else
        hoge_valn_val = sql_str("", tal_valname, tal_val, False)
        sql = "Update " & tablename & " Set " & hoge_valn_val & " WHERE ID = " & ID & ";"
    End If
    MsgBox sql
    Set db = CurrentDb
    db.Execute (sql)
    Set db = Nothing
    up_in = True
End Function
Function del(tablename As Variant, tal_valname As Variant, tal_val As Variant) As Variant
    Dim sql As String
    Dim RS As DAO.Recordset
    Dim db As DAO.Database
    Dim hoge As Variant
    sql = "DELETE FROM " & tablename & " WHERE " & tal_valname & " = " & tal_val & ";"
    MsgBox sql
    Set db = CurrentDb
    db.Execute (sql)
    Set db = Nothing
    del = True
End Function
Function sql_str(hoge As Variant, tal_valname As Variant, tal_val As Variant, chk As Boolean) As Variant
    Dim i As Long
    Dim hoge_str As Variant
    If chk = True Then
        For i = 0 To UBound(hoge)
            If IsNumeric(hoge(i)) Then
                hoge_str = hoge_str & hoge(i) & ", "
            Else
                hoge_str = hoge_str & "'" & hoge(i) & "', "
            End If
        Next i
    Else
        For i = 0 To UBound(tal_valname)
            If IsNumeric(tal_val(i)) Then
                hoge_str = hoge_str & tal_valname(i) & " = " & tal_val(i) & ", "
            Else
                hoge_str = hoge_str & tal_valname(i) & " = '" & tal_val(i) & "', "
            End If
        Next i
    End If
    sql_str = Left(hoge_str, Len(hoge_str) - 2)
End Function

↑クラスdbソースコード

Option Compare Database
Dim max As Long
Dim ID As Long
Dim val_val As Variant
Private Sub Form_Load()
lod
End Sub
Sub lod()
    Dim db As db_db
    Dim val_name As Variant
    Dim x As Long
    Set db = New db_db
    val_name = Array("ID", "表題", "数値", "文字")
    val_val = db.sel_all("tableone", val_name)
    max = db.max + 1
    If cmb.ListCount > 0 Then
        For x = 0 To cmb.ListCount - 1
            cmb.RemoveItem 0
        Next
    End If
    For x = 0 To db.db_x
        cmb.AddItem val_val(x, 1)
    Next
    Set db = Nothing
End Sub
Private Sub cmb_Click()
    If cmb.ListIndex >= 0 Then
        Viw cmb.ListIndex
    End If
End Sub
Private Sub del_btn_Click()
    Dim db As db_db
    Dim hoge As Variant
    Set db = New db_db
    val_name = Array("ID", "表題", "数値", "文字")
    If ID > 0 And max > 1 Then
        hoge = db.del("tableone", "ID", ID)
    End If
    Set db = Nothing
    lod
End Sub
Private Sub in_btn_Click()
    Dim db As db_db
    Dim val_name As Variant
    Dim val As Variant
    Dim hoge As Variant
    chkchk
    val_name = Array("ID", "表題", "数値", "文字")
    val = Array(max, cmb, suuzi, moji)
    Set db = New db_db
    hoge = db.up_in(True, "tableone", val_name, val, max)
    Set db = Nothing
    lod
End Sub
Private Sub upd_btn_Click()
    Dim db As db_db
    Dim val_name As Variant
    Dim val As Variant
    Dim hoge As Variant
    chkchk
    val_name = Array("表題", "数値", "文字")
    val = Array(cmb, suuzi, moji)
    Set db = New db_db
    If ID > 0 And max > 1 Then
        hoge = db.up_in(False, "tableone", val_name, val, ID)
    End If
    Set db = Nothing
    lod
End Sub
Sub Viw(i As Long)
    ID = val_val(i, 0)
    suuzi = val_val(i, 2)
    moji = val_val(i, 3)
End Sub
Sub chkchk()
    If IsNumeric(suuzi) Then
        If suuzi > 9999 Then
            suuzi = 9999
        End If
    Else
        suuzi = 0
    End If
    If IsNumeric(moji) Then
        moji = "文字が不正>" & moji
    End If
    If IsNumeric(cmb) Then
        cmb = "文字が不正>" & cmb
    End If
End Sub

↑formソースコード

タグ

35, 358, access, db, https, sample, samplezip, SQL, Viewer, www, zip, いま, インジェクション, コード, こと, コメント, これ, サンプル, ソース, それ, ダウンロード, つもり, バグ, ファイル, マイクロソフト, ヨロシク, 下記, , , 修正, 削除, 動作, , 対策, 工事, 改良, , , 無駄, , 突貫, 若干, 軽量, 追加, 追記, ,