@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
ブルーレイレコーダーを廃棄処分した話とnasuneの外部HDDの話.
2024.09.09
おはようございます.先日、1ヶ月間ぐらい寝かしてブルーレイレコーダーの壊れたHDDをクローンすることを行うと記載していましたが、1ヶ月間待つことは出来なかったので昨日の休みにHDDのクローンを試みてみましたが、残念なことにブルーレイレコーダーのHDDが壊れていてクローンすら出来ない状態でした.
なので、今までブルーレイレコーダーの外部HDDしていたHDDをnasuneに使おうと思い、一度、フォーマットしてnasuneのUSBに繋いでみたものの全く認識しない.その為、このHDDはNAS機器を購入したときに使用することに決めました.因みにNAS機器は持っているのですがあまり多機能なNASではないので、そろそろ交換しようと思っています.
いま、このNAS機器が良いかなと思っているのは「Synology NASキット 2ベイ DS223j」です.このNAS機器はDockerも使用できたりするので仕事で重宝しそうです.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1ヶ月間, 1ヶ月間待つこと, docker, DS223j, HDD, nasune, NAS機器, Synology NASキット, USB, クローン, ブルーレイレコーダー, 一度, 仕事, 休み, 外部, 多機能なNAS, 状態,
DifyというAIサービスをローカル環境で試してみました.
2024.08.15
おはようございます.DifyというAIサービスをローカル環境で試してみましたが良いじゃないかなって思いました.下記の画像が実際動かしてみた感じです.
何が良いかと言えば社内アプリを構築するのに大変良いなということです.APIと連動しないと行けないですが、フェイスブックのOllama使えばAPI連動もローカルで出来るので実質無料で社内アプリが構築することが可能になります.
なお、作成された社内アプリのAPIURLを叩けばAPIとしても機能するのでいろいろと出来る感じがします.巷ではdify自体にアップロード機能は無いから不便との意見がありgithubのイシューにも書かれているらしいので機能追加される可能性は高そうです、それまでは外部で実行してテキストかURLを読み込ますことによって解決出来るのではないかなって思っています.
最後に自分としては良いサービスだと感じました.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AIサービス, API, APIURL, Dify, dify自体, github, Ollama使えばAPI連動, アップロード機能, イシュー, テキストかURL, フェイスブック, ローカル環境, 下記, 外部, 実質無料, 実際, 巷, 意見, 最後, 社内アプリ,
爆発的に広がるGPT4≒一般に認知するということ。
2023.03.28
おはようございます、一昨日の続きを書きます。まだGPTで何が出来るのか一般人は知らないひとが多いけど、時間の問題かなって思います。これから「あっ」これAIに置き換えるじゃないという事が結構出てくると思っています。
そして、ホワイトカラーが労働へ流れていくということも有り得る話だと思っていてそうなると、今まで雇用されていた人材が解雇される可能性も出てくるかもしれない。そして、今まで外部に委託してきた仕事を外部に委託しなくなるかもしれない。そういう事が世界中で起きてくるじゃないのかとヒシヒシとGPT-4に触れていると思います。
GPT-4のお陰で検索を使う頻度が下がっている。でも、GPTもBardもそうだけど、検索サイトから引っ張ってきたデータなどを使用して結果を表示しているので、今は広告などは流れていないけど使用する前に一回、CMを流したりするようになるだと思います。そして、人工知能に引用された記事は報酬を得ることが出来るようになる時代が来るじゃないかな。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AI, Bard, CM, GPT, GPT-4, お陰, データ, ひと, ホワイトカラー, 一昨日, 人工知能, 人材, 労働, 問題, 報酬, 外部, 広告, 時代, 結果, 頻度,
airpodとsonyのlinkbudsどちら買おうかと思案してます。
2022.03.30
おはよう御座います☀。日の出も徐々に早くなってきてますね。
ipodとsonyのlinkbudsどちら買おうかと思案してます。airpodとの良いところはインイヤー型のイヤホンって所なんですね。自分は耳の中までフィット感のあるのは、ちょっとゴワゴワ感が感じるので無理なんですね、、なんでインイヤー型のイヤホンをいつも選択しています。
linkbudsは外部の音も物理的に取り入れているところが売りのイヤホンです、こちらもインイヤー型のイヤホンです。
書いていて分かったのですが、airpodを買います。理由は旅先で使うときに外部音はいらないので・・・。そういう事を考えるとairpodが良いかなって思います。本当はインイヤーのairpod proがあればそちらを購入していると思います。
そう思うとairpodにノイズキャンセリング機能がつくまで待つのも良いかなって、それまでは保留にしておくのも良いかもしれないな。
それが今の心の声です。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, 4, 5, airpod, com, https, ipod, linkbuds, Pro, SONY, watch, www, youtube, YqrlOr, イヤー, イヤホン, いん, こちら, そちら, とき, ところ, どちら, フィット, 中, 事, 売り, 外部, 思, 思案, 感, 所, 旅先, 日の出, 本当, 理由, 耳, 自分, 購入, 選択, 音,
WordPressのapply_filtersを使うと便利ですよ。
2021.11.29
明日(2021/11/30)は高知県は雨が降るそうです、冬の雨はあまり自分は好きではないです・・・。どんより曇り空よりかはマシですけどね。
さて「WordPressのapply_filtersを使うと便利ですよ。」というお話です、有名なプラグインにはapply_filtersが大体あるので、それを使ってプラグインに自分のオリジナル処理を割り込むことが可能です。では、 apply_filtersはどんな動作をするかと言えば、独自のフィルターを登録するときに使用します。
なので、add_actionを使って登録されている独自のフィルター名を参照することで外部のプラグインに変更処理を行うこと等が可能になります。
<?php apply_filters( $tag, $value, $var ... ); ?>
<?php add_action( $hook, $function_to_add, $priority, $accepted_args ); ?>
apply_filtersとadd_filterがどういう物なのかを完結に説明しているサイトが有りましたので、リンクを記載しときます。
https://blog.z0i.net/2016/11/apply-filters-add-filter.html
余談:ある有名なプラグインのコードを読んでいて、自分がプラグインを作るときにもapply_filtersなどを記載しておくと開発者に使用していただける確率は高くなるなと感じました。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
11, 2021, 30, Action, Add, apply, filters, function, gt, hook, lt, php, tag, To, value, var, WordPress, オリジナル, お話, こと, それ, とき, フィルター, プラグイン, まし, 使用, 便利, 冬, 処理, 動作, 参照, 可能, 変更, 外部, 明日, 曇り空, 有名, 登録, 自分, 雨, 高知県,
外部VPSサーバーからさくらレンタルサーバーのDBに接続する方法。
2020.12.04
外部VPSサーバーからさくらレンタルサーバーのDB(データベース)に接続する方法は下記のコードだけでは上手く動かない。だけど、tmpファイルを生成時にパーティションにu+xの権限を与えればこのコードは要件をみたします。因みにプロセスが残ったままになるので接続が終わったら、プロセスを削除してあげてください。なのでどのプロセスを削除する機能として追加しないと使えないかな?、時間があれば完成したコードをアップします。
なお、変数の初期値はご自身で入れてください。あとポート開放やexpectが入っていない場合はyumなどでインストールする必要もあります。
<!DOCTYPE html>
<html lang="en">
<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.5.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>ssh sqli</title>
</head>
<body>
<?php
print ssh_sqli_connect();
?>
<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.5.2/js/bootstrap.min.js"></script>
</body>
</html>
<?php
function ssh_sqli_connect()
{
global $dblink,$dbname,$sshuser, $sshhost, $sshpassword,$host,$sshport;
$ret = null;
$cmd = "#!/usr/bin/expect -f
set timeout 3
expect -c \"spawn ssh -f -N -L $sshport:$host:3306 $sshuser@$sshhost -oStrictHostKeyChecking=no
expect \\\"$sshuser@$sshhost's password:\\\"
send \\\"$sshpassword\\n\\\"
\"
";
$tmpfname = tempnam(sys_get_temp_dir(), 'ssh');
$handle = fopen($tmpfname, "w");
fwrite($handle, $cmd);
shell_exec("sh $tmpfname");
sleep(3);
$dblink = db_connect();
try{
for($id = 1 ;$id<=99;$id++){
$ret = $dblink->query("SELECT * FROM $dbname.X.xtbl where $dbname.X.xtbl.id=$id;");
if ($cnt = (int) mysqli_num_rows($ret)) {
$row = mysqli_fetch_assoc($ret);
print ($row["id"].", ".$row["name"]);
}
}
}catch(PDOException $e){
echo "失敗: " . $e->getMessage() . "\n";
}
fclose($handle);
unlink($tmpfname);
db_close();
return "未完成";
}
function db_connect()
{
global $dblink, $host, $user, $password, $dbname,$sshport;
try {
$dblink = new mysqli("127.0.0.1", "$user", $password, $dbname ,$sshport);
//$dblink->set_charset("utf8");
return $dblink;
} catch (PDOException $e) {
echo "接続失敗: " . $e->getMessage() . "\n";
}
}
function db_close()
{
global $dblink;
$dblink->close();
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
8, charset, db, DOCTYPE, en, expect, gt, head, html, lang, lt, meta, name, quot, tmp, UTF-, vie, VPS, yum, アップ, インストール, コード, ご自身, サーバー, さくら, データベース, パーティション, ファイル, プロセス, ポート, まま, レンタル, 下記, 初期, 削除, 場合, 変数, 外部, 完成, 必要, 接続, 方法, 時間, 権限, 機能, 生成, 要件, 追加, 開放,
QuartzJapan[クオーツジャパン]を知ってる?
2020.01.15
QuartzJapanを知ってる方はこの記事をスルーして大丈夫です。自分は今日知ったばかりです。クオーツジャパンとは簡単に言えば、これから先、世界で起こるHOTなサービスやテクノロジーなどの情報をメールとアプリで配信してくれるサービスです。
月額1000円で最新の情報が手に入るというのは良いかなと感じます。ただ自分、現在安定した収入がないので、契約を結びませんでしたがニューズピックスよりも情報が良さげかなと感じました。ニューズピックスは動画配信などに力を入れている為か肝心の記事は殆ど外部からのニュースでサイトを埋めている気がします。
実際、契約を結んでいないので評価し難いのですが朝と夕方に記事が毎日配信されるということです、サンプルを読む限り良い感じがします。ビジネスマンや最新の情報が読みたい人は下記より購買が可能になります。
なお、自分には一銭も収益は入りません…。
https://qz.com/japan/subscribe/payment/
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1000, HOT, QuartzJapan, アプリ, クオーツ, こと, これ, サービス, サイト, サンプル, ジャパン, スルー, テクノロジー, ニュース, ビジネスマン, ピックス, メール, 一銭, 下記, 世界, 人, 今日, 先, 力, 動画, 収入, 収益, 可能, 夕方, 外部, 契約, 安定, 実際, 情報, 感じ, 手, 方, 最新, 月額, 朝, 殆ど, 毎日, 気, 為, 現在, 簡単, 肝心, 自分, 記事, 評価, 購買, 配信,
さくらレンタルサーバーでWordPressのDBバックアップを支援するPHPコード
2020.01.10
さくらレンタルサーバーでWordPressバックアップを支援するPHPコードです。
駆け出しのWEB担当者用のプログラムです、動作環境はPHP5.6以上でお願いします。バックアップする際にWARNINGが発生してしまうには対応しておりません。メールが貯まりますが大丈夫ですよ、きっと。
プログラムを読めば何を書いているのか、駆け出しのWEB担当者様もわかるとは思いますが、変更してほしいのはIDとPASS部分です?。ルートにWordPressをインストールしていない場合は $wploadfile の変更もお願いします。
ファイルをアップロードした階層に dbbackup名でフォルダを設置しそのフォルダにベーシック認証をかけておいてください。外部からダウンロードが容易に出来るので・・・。
上記の設定が完了したらファイルをアップロードし sakura-rental-wpdb-backupfullにアクセスしてください。
ログイン後、管理画面より設定を行った後、さくらレンタルサーバーのコントロールパネルよりCRONの設定を行ってください。
ダウンロードはこちらから
https://zip358.com/tool/sakura-rental-wpdb-backupfull/sakura-rental-wpdb-backupfull.zip
尚、CRON設定に関しては例を管理画面に書いていますのでそちらの参考に設定をお願いいたします、またバックアップは1週間保持します。
月曜日?日曜日まで7ファイルのMYSQL、DBのバックアップファイルが出来上がります。管理画面の曜日設定にチェックが入っていないものはバックアップ致しません。
※ソースコードは下記になります。
※2020年12月、修正しました。ソースコードは下記になります。
※wp-load.phpの階層を自身の階層に変更してください。
<!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.5.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>さくらレンタルサーバーでWordPressのDBバックアップを支援するPHPコード</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col table-responsive">
<table class="table" id="tbl">
</table>
</div>
</div>
</div>
<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.5.2/js/bootstrap.min.js"></script>
<script src="./assets/js/common.js?<?=time()?>"></script>
</body>
</html>
window.onload = function () {
$.ajax({
type: "POST",
dataType: "json",
url: "./lib/view.php",
data: "data",
success: function (response) {
if (response.password.ok === "ok") {
view();
} else {
passwordview();
}
}
});
};
function view() {
let str = "";
fetch("./schedule.dat").then(response => response.text()).then(data => {
let weekval = data.split(",");
let weekname =
[
{en:"Sunday",ja:"日曜日"},
{en:"Monday",ja:"月曜日"},
{en:"Tuesday",ja:"火曜日"},
{en:"Wednesday",ja:"水曜日"},
{en:"Thursday",ja:"木曜日"},
{en:"Friday",ja:"金曜日"},
{en:"Saturday",ja:"土曜日"}
];
if (weekval.length === 7) {
for (var i = 0; i < 7; i++) {
let weekvalflg = weekval[i] == 1 ? " checked " : "";
str += `
<tr>
<td>${weekname[i].ja}</td>
<td>
<div class="form-check">
<input id="${weekname[i].en}_chk" class="form-check-input" type="checkbox" name="" value=1 ${weekvalflg}>
<label for="${weekname[i].en}_chk" class="form-check-label">バックアップする</label>
</div>
</td>
</tr>
`;
}
} else {
for (var i = 0; i < 7; i++) {
str += `
<tr>
<td>${weekname[i].ja}</td>
<td>
<div class="form-check">
<input id="${weekname[i].en}_chk" class="form-check-input" type="checkbox" name="" value=1>
<label for="${weekname[i].en}_chk" class="form-check-label">バックアップする</label>
</div>
</td>
</tr>
`;
}
}
str += `
<tr>
<td colspan="2"><button class="btn btn-primary" id="btn" type="button">設定する</button></td>
</tr>
`;
document.getElementById("tbl").innerHTML = str;
document.getElementById("btn").addEventListener("click", function () {
$.ajax({
type: "POST",
url: "./lib/backup-setting.php",
data: {
Sunday: document.getElementById("Sunday_chk").checked?1:0,
Monday: document.getElementById("Monday_chk").checked?1:0,
Tuesday: document.getElementById("Tuesday_chk").checked?1:0,
Wednesday: document.getElementById("Wednesday_chk").checked?1:0,
Thursday: document.getElementById("Thursday_chk").checked?1:0,
Friday: document.getElementById("Friday_chk").checked?1:0,
Saturday: document.getElementById("Saturday_chk").checked?1:0
},
dataType: "json",
success: function (response) {
if (response.ok == "ok") {
alert("設定しました");
} else {
alert("失敗しました");
}
}
});
});
});
}
function passwordview() {
document.getElementById("tbl").innerHTML = `
<tr>
<td>wordpress Id</td>
<td>
<div class="input-group">
<input class="form-control" type="text" id="wpid" placeholder="ワードプレスのIDを入力ください" aria-label="ワードプレスのIDを入力ください" aria-describedby="wpid">
</div>
</td>
</tr>
<tr>
<td>wordpress pass</td>
<td>
<div class="input-group">
<input class="form-control" type="password" id="wppass" placeholder="ワードプレスのPassを入力ください" aria-label="ワードプレスのIDを入力ください" aria-describedby="wppass">
</div>
</td>
</tr>
<tr>
<td colspan="2"><button class="btn btn-primary" id="btn" type="button">ログインする</button></td>
</tr>
`;
document.getElementById("btn").addEventListener("click", function () {
$.ajax({
type: "POST",
dataType: "json",
url: "./lib/pass.php",
data: { wpid: document.getElementById("wpid").value, wppass: document.getElementById("wppass").value },
success: function (response) {
if (response.password.ok === "ok") {
view();
} else {
alert(response.password.msg);
passwordview();
}
}
});
});
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5.6, db, dbbackup, ID, pass, php, sakura-rental-wpdb-backupf, WARNING, web, WordPress, wploadfile, アップロード, インストール, お願い, コード, サーバー, さくら, ダウンロード, バックアップ, ファイル, フォルダ, プログラム, ベーシック, メール, ルート, レンタル, 上記, 何, 動作, 名, 場合, 変更, 外部, 完了, 容易, 対応, 担当者, 支援, 環境, 発生, 設定, 設置, 認証, 部分, 階層, 際, 駆け出し,
googleスプレッドシートの値を取得することは可能ですが!
2019.11.24
googleスプレッドシートの値を取得することは可能ですが動的な値を取得することは不可能です。
動的処理というのはスプレッドシートの関数などで値を表示している情報をPHPなどで外部取得することは不可能です。
※方法があるようでしたら、教えて頂ければありがたいです。
なお、PHPからスプレッドシートの値などは変更可能です。
今回は値の取得に関しての方法を記載しております。
手順
1.グーグルさんからグーグルスプレッドシートのAPIKEYを取得する。
2. グーグルスプレッドシートを作成しスプレッドシートのID部分を取得する。
3.サーバ上にComposerをインストールし、下記のコマンドを実行する。
composer require google/apiclient:"^2.0"
下記のソースのAPIキー、スプレッドシートIDの部分を取得した値に置き換える。
<?php
require_once __DIR__ . '/vendor/autoload.php';
//$keyFile = __DIR__. "/credentials.json";
define("APIKEY","APIキー");
define("SPID","スプレッドシートID");
$spreadsheetId = SPID;
$range ="Sheet1!A1:B123";
$client = new Google_Client();
$client->setApplicationName("Spreadsheet");
$client->setDeveloperKey(APIKEY);
$scopes = [Google_Service_Sheets::SPREADSHEETS];
$client->setScopes($scopes);
$service = new Google_Service_Sheets($client);
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
// TODO: Change code below to process the `response` object:
echo '<pre>', var_export($response->getValues()), '</pre>', "n";
結構ハシオッタ説明になりますが、こちらでGoogleスプレッドシートの値を取得または操作が可能となります。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 2, 2.0, 3, 4, 5, A`, apiclient, APIKEY, com, Composer, et, fCs, Google, https, ID, php, quot, require, watch, www, youtube, インストール, グーグル, こと, コマンド, サーバ, シート, スプレッド, ソース, 下記, 不可能, 今回, 作成, 値, 処理, 取得, 可能, 変更, 外部, 実行, 情報, 手順, 方法, 表示, 記載, 部分, 関数,
WordPressの404外部リダイレクトプラグインを作りました。
2019.11.16
WordPressの404外部リダイレクトプラグインを作りました。
ソースコードはこんな感じになってます、、、。
使用される方は下記のURLよりダウンロードを行ってください。
解凍してフォルダをワードプレスのpluginを置く場所へアップロードし
page404goプラグインを有効にしていただければ使用できます。
https://zip358.com/plugin/page404go.zip
<?php
/*
Plugin Name: page404GO!!
Plugin URI: https://zip358.com/plugin/page404go.zip
Description: 404ページを任意のURLへ変換し遷移させる
Author: taoka toshiaki
Version: 1.0
Author URI: https://zip358.com/
*/
add_action( 'wp', function() {
global $wp;
$domain = get_option('domain404page')?get_option('domain404page'):"https://zip358.com/";
if(is_404()){
wp_redirect($domain.$wp->request);
exit;
}
});
add_action('admin_menu','page404go_setting');
function page404go_setting(){
add_options_page(
'zip358.com:プラグイン',
'404リダイレクト設定',
'administrator',
'page404go',
function(){
if(isset($_POST["domain404page"])){
if(preg_match("/https?://.*/$/",$_POST["domain404page"])){
$url = $_POST["domain404page"];
}elseif(preg_match("/https?://.*/",$_POST["domain404page"])){
$url = $_POST["domain404page"]."/";
}else{
$url = "https://zip358.com/";
}
update_option('domain404page', wp_unslash($url));
}
?>
<form method="post" action="">
<h2>リダイレクトドメイン指定</h2>
<input type="text" style="width:350px" name="domain404page" value="<?=get_option('domain404page')?get_option('domain404page'):""?>" placeholder="https://zip358.com/">
<?php submit_button(); ?>
</form>
<?php
}
);
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1195254834632380416, 358, 404, Author, com, description, go, lt, name, page, php, plugin, status, taoka, toshiak, Twitter, URI, url, WordPress, zip, アップロード, コード, ソース, ダウンロード, フォルダ, プラグイン, プレス, リダイレクト, ワード, 下記, 任意, 使用, 場所, 変換, 外部, 感じ, 方, 有効, 解凍, 遷移,
TinyMCE 5.0でオリジナルプラグイン作成するはググれば何とかなるが?
2019.07.27
TinyMCE 5.0で独自のプラグインを開発するにあたって
ググれば4.0で作成する方法は山ほど例題があるのだけど5.0は
非常に少ないtinymce.windowManager.openを使用してのプラグインは
5.0でも案外簡単に見つかるのだけど、tinymce.windowManager.openUrlを
使用しての情報はググってもない。
唯一、公式サイトが記載しています。
しかし残念なことに全て英語で書かれています。
日本語で記載しろよという話だけど・・・・。
で!!tinymce.windowManager.openUrlで
何が出来るかと言えば外部ファイルを
読み込みが出来てそのレスポンスを受け取る事が出来るのです。
英語が嫌いでも原文で英語を読め!!ですよ・・・。
答えはそのページに書いているのですね。
※ちなみに会社でこの機能(e.windowManager.openUrl)を
使用し開発中です。
たぶん、自分みたいに困っている人もいると思うので
基本的な部分を記載しています、なお自作プラグインの作り方は
理解しているという前提で記載しています。
まず例としてPHPファイルを読み込みたいのなら
自作プラグインのPHPファイルに下記の記載を行います。
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/tool/bootstrap/css/bootstrap.css">
<script src="/tool/jquery/jquery-3.4.1.js"></script>
</head>
<body>
<form method="post">
<input type="text" name="L_japan" class="form-control">
<input type="text" name="L_English" class="form-control">
<input type="button" name="submitbtn" value="恩恵を受ける"class="btn btn-primary">
</form>
<script>
var chageJson = function(data) {
console.log(data);
var JsonData = [];
for (i = 0; i < data.length; i++) {
JsonData[data[i].name] = data[i].value
}
//console.log(JSON.stringify(data));
return JsonData;
}
$("[name=submitbtn]").on("click",function(){
data = chageJson($("form").serializeArray());
window.parent.postMessage({ mceAction: 'customAction',data:data});
window.parent.postMessage({ mceAction: 'close' });
});
</script>
</body>
</html>
PHPファイルはこのような感じでjavascriptが大事ここで、
submitを行っています。
当然、JSON形式で返却しましょう。公式ページにも書かれいますが
mceActionで制御しましょう。
プラグイン側のJSは下記のようになります。
(function() {
tinymce.create('tinymce.plugins.language_boon', {
init : function( ed, url) {
console.log(ed);
act =function(ed)
{
ed.windowManager.openUrl(
{
type: 'panel',
title: '恩恵を受ける',
url:url + "/language_boon.php",
onMessage:function(api, details){
console.log(api, details);
console.log('オレオレjapan', details.data.L_japan);
console.log('オレオレEnglish', details.data.L_English);
}
});
};
// window.addEventListener('message', function (event) {
// console.log(event);
// var data = event.data;
// console.log(data.data);
// if(ed.settings.id == data.data.id_){
// console.log('オレオレjapan', data.data.L_japan);
// console.log('オレオレEnglish', data.data.L_English);
// }
// });
ed.ui.registry.addButton('language_boon',{
title : '恩恵を受ける',
text: '恩恵',
onAction:function(){act(ed)}
});
},
getInfo : function() {
return {
longname : 'tinymce.plugins.language_boon',
author : 'taoka',
authorurl : 'https://zip358.com',
infourl : 'https://zip358.com',
version : '1.0'
};
}
});
tinymce.PluginManager.add('language_boon', tinymce.plugins.language_boon);
})();
公式ページは下記のリンクより
https://www.tiny.cloud/docs/ui-components/urldialog/#urldialoginstanceapi
サンプルサイトはこちら
https://zip358.com/tool/editor/
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
4.0, 5.0, open, openUrl, TinyMCE, windowMan, windowManager, オリジナル, こと, サイト, ファイル, プラグイン, ページ, レスポンス, 事, 会社, 何, 作成, 使用, 例題, 全て, 公式, 原文, 唯一, 外部, 嫌い, 山ほど, 情報, 方法, 日本語, 機能, 残念, 答え, 簡単, 英語, 記載, 話, 開発,
6時間ぐらいかけてサーバ移行。
2018.02.17
6時間ぐらいかけてサーバ移行が終わりました。
いままでメールガンを使用していたのだけど、それも辞めて
有料のさくらメールボックスに切り替えとかを行っていました。
さくらメールボックス、一年で1000円ぐらいのお値段なので
格安かなと思っています。そのメールボックスにはメールを貯めずに
転送用として使うことにしています。なので容量10Gだけど
全然問題ないです。
現在、VPSを使用しているのだけど、いままでメールサーバーで
悪戦苦闘していたわけですが、いろいろとメールサーバーを調べると
どうも、VPSなどから送信されるメールは殆どのプロバイダや
大手のサイトのメールサーバーはシャットアウトするのだとか、
なのでメール送信を行ってもメールは届かないみたい。
強者はVPSでなんとか出来るかもしれないけれど
自分は強者ではないのでメールサーバは外部へ
WEBサーバーとメールサーバーが同一IPではない場合
ドメインのMXレコードやTXTレコードなどの設定を行うことが必須です。
さくらメールBOXの設定はネームサーバーの設定方法しか書いていないので
ググってください。キーワードは「さくらメールBOX MXレコード」とかで
ぐぐるとヒットします。
トイウコトデ、寝たい。
ちなみに一部、変だった所とかも修正したりしましたよ。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
TXTレコード, VPS, WEBサーバー, サーバ移行, さくらメールBOX MXレコード, さくらメールボックス, トイウコトデ, ドメイン, ネームサーバー, プロバイダ, メールガン, メールサーバー, メール送信, 同一IP, 外部, 大手, 強者, 有料, 設定, 転送用,
HTTP1.0の場合、PHPファイルとか外部からダウンロード可能ってご存知ですか?
2017.08.02
HTTP1.0の場合、PHPファイルとか外部からダウンロード可能ってご存知ですか?
サーバー環境がそうなっていればPHPのファイルなんてあるツールを使用すれば
根こそぎダウンロードが可能なのです。
「怖や怖や・・・」
ネットの脆弱性とか、知らないひとが大半だと思います。
じぶんも知っている人からすれば知らない方に分類されると思いますが、
知れば知るほどネットをしたくなくなりますよね。
ネットは便利な半面・・・
脅威がいっぱいあるですってことだけは
日頃から認識していたほうが良いのかもしれないです。
脆弱性の対応の本などが出版されていますが
逆に言えば脆弱性を突く方法を教えているようなものですからね。
自分は今までそういう本は避けてきましたが
この頃、読み始めました・・自分の場合、こういう脆弱性が在るだと
言う事を知識として持っておくことは、何か起きた時に役に立ちますからね。
ちなみにchromeブラウザのアドレスバーに
chrome://net-internalsと入力するとサーバー環境がHTTPのバージョンが
何か分かったりします。
HTTP1.0の場合、PHPファイルとか簡単にダウンロード出来てしまうだろうけど
それはグレーなのかそうではないのかは自分は知らないですが
やらないことの方が賢明だと思います。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
chromeブラウザ, HTTP1.0, net-internals, PHPファイル, Real World HTTP, アドレスバー, インターネット, ウェブ技術, ご存知, サーバー環境, じぶん, バージョン, 半面, 外部, 怖, 根こそぎダウンロード, 脅威, 脆弱性,
クローラーするサービスの基礎。
2016.11.19
クローラーするサービスの基礎のソースを載せときます。殆どサイボウズ・ラボの人が書いたコードです。
このサンプルソースをそのまま貼り付けても一階層のリンクしか取得できません。
再帰処理の部分をコメントアウトしているからです。ちなみにコメントアウトを外してもメモリオーバーでおそらく
大体のサーバでエラーが出力されます。どうしたら良いのかといえば、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;
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 2, ajax, db, アウト, イコール, うち, エラー, オーバー, クローラー, コード, ここ, こと, コメント, これ, サーバ, サービス, サイボウズ, サンプル, ソース, それ, ため, データ, トイウ, メモリ, ラボ, リンク, 一, 下, 事, 人, 保存, 再帰, 処理, 出力, 判断, 取得, 可能, 基礎, 外部, 大事, 大体, 巡回, 新規, 検索, 機能, 殆ど, 永遠, 注意, 登録, 要素, 部分, 重要, 階層,
MONACAでらくらくアプリ開発。{HTML、JavaScript、PHP}
2016.06.22
MONACAでらくらくアプリ開発。
出来そうな予感がします。一度、触ってみて頓挫していたのですが外部連携や端末のDB接続等などもできるみたいなのでこれだけで、簡単なものやそれほどゴリゴリ書くものではなければアプリ開発ができそうな気がしてきたので
土日でアプリの開発を行ってみたいなと思ってます。
HTMLやjavascriptなどでアプリが開発できる時代ってほんと、凄いなと、ちなみにajaxを使い外部サイトとの連携も出来ちゃうのでPHPなどでも必然的に使えちゃうっていうことになります。(インラインフレームで表示する方法もあり)
?
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
ajax, db, html, javascript, Monaca, php, アプリ, インライン, こと, これだけ, サイト, フレーム, ほんと, もの, 一度, 予感, 土日, 外部, 接続, 方法, 時代, 気, 端末, 簡単, 表示, 連携, 開発, 頓挫,
PS3とかPS4を液晶ディスプレイに繋げれば出力されるじゃないか
2016.01.18
PS3とかPS4を液晶ディスプレイに繋げれば出力されるじゃないか?と思いつき、HDMI端子のある液晶ディスプレイに繋いだところ表示できました。音声内蔵のHDMIディスプレイが、必要。もしくは音声出力は外部スピーカーへ出力するHDMI液晶ディスプレイなら表示は可能なようです。実際、何が得か??テレビが必要ないということです。例えば、PS4を繋いでいる状態でネット共有の出来るブルーレイレコーダーがあれば録画した映像は見えるようになりライブ映像が視聴可能なレコーダーであればPS4とレコーダーの電源をONにしていればテレビに繋がなくとも視聴が可能なります。よって、テレビが無い環境でもブルーレイレコーダーと液晶ディスプレイとPS4などを揃えればTV&ゲームが視聴できる環境が整います。ちなみに、ブルーレイレコーダーと液晶ディスプレイがあれば、テレビは必要ないという事も言えます。ただし、画質はテレビよりは良くないと思います。ちなみにHDMI端子のない液晶ディスプレイにHDMIからDMIへ変換する端子で取り付けても映像は出力されますが、音声は出力されません。あくまでも、HDMI端子のある液晶ディスプレイの話です。
追記2021年:今では当たり前の話になりましたね。因みにPS4からゲーム中継などが出来るようになっていますよね、時代流れは進む一方です。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
3, 4, HDMI, ON, PS, TV, いま, ゲーム, こと, スピーカー, ディスプレイ, テレビ, ところ, ネット, ブルーレイ, ライブ, レコーダー, 事, 何, 共有, 内蔵, 出力, 可能, 外部, 実際, 得, 必要, 思, 映像, 液晶, 状態, 環境, 画質, 端子, 表示, 視聴, 録画, 電源, 音声,