VirtualBoxで共有フォルダ設定とApacheが表示されるまで。
2020.11.29
前処理としてこのコマンドを打つ。
yum -y groupinstall "Development Tools"
yum -y update kernel
yum -y install kernel-devel kernel-headers gcc gcc-c++
起動したらメニューから[デバイス]-[Guest Additions CDイメージの挿入]
mount /dev/cdrom /mnt
cd /mnt
./VBoxLinuxAdditions.run
reboot
cd /var/www/
ln -s マウント先 sf_html
gpasswd -a oreore vboxsf
gpasswd -a apache vboxsf
mount -t vboxsf -o dmode=0755,fmode=0755 (共有名) (マウント先)
reboot
Apacheのconfig設定ではリンク先はシンボルリンクを参照させとこう、これでリブートさせて完了やねん。さてこれで理解できたら、あなたは凄いです。これは単なるメモ書き記載なので、わからないと思います。
なので、参考にしたサイトのリンクを貼っときます。
http://itemy.net/?p=1355
https://www.codelab.jp/blog/?p=2587
これらでおそらく大体の人が理解できたと思います。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-o, -s, -t, -y, 0755, A`, Additions, Apache, cd, cdrom, dev, Development, dmode, fmode, gcc, gcc-c, gpasswd, groupinstall, Guest, html, install, kernel, kernel-devel, kernel-headers, ln, mnt, mount, oreore, quot, reboot, run, SF, Tools, UPDATE, var, VBoxLinuxAdditions, vboxsf, virtualBOX, www, yum, イメージ, コマンド, デバイス, フォルダ, マウント, メニュー, 共有, 前処理, 挿入, 表示, 設定, 起動,
demo23、javascriptの非同期同期処理?
2020.11.18
今日はJavaScriptで非同期、同期処理のことに付いて考えてみた。関数を呼び出して返却の値を変数に渡す処理を作って頂けると非同期処理と同期処理の違いがわかるかと思います。例えばこういうJSの処理があるとします。
document.getElementById("btn").addEventListener("click", async (e) => {
test1();
test2();
test3();
await test1();
await test2();
await test3();
});
function test1() {
return new Promise(resolve => {
setTimeout(() => {
console.log("btn = 1");
resolve('1');
}, 3000);
});
}
function test2() {
return new Promise(resolve => {
setTimeout(() => {
console.log("btn = 2");
resolve('2');
}, 2000);
});
}
async function test3() {
return new Promise(resolve => {
setTimeout(() => {
console.log("btn = 3");
resolve('3');
}, 100);
});
}
こちらの処理を試すと結果、このような内容がデバックモードで表示されます。予想通りの結果が返ってきましたか?それとも予想外の結果が返ってきましたか?
asyncが付いていてawaitがついてない場合とついている場合とでは違いの差がわかるかと思います。いろいろと試してみると非同期処理の応用が出来るかと思います、逆に言えば上手く非同期処理を使いこなすことが出来るとコードが短縮出来たり、効率的に回せるのではないかと思います。自分もこれらを使っていろいろと作ってみたいですね(´Д`)。因みに今回、Promiseを簡略化したパターンでコードを書いています。
尚、Demo23にはデモコードが存在しますので動作を検証してみてください。
https://zip358.com/tool/demo23/
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
addEventListener, async, async function test, await, await test, console.log, document.getElementById, function test, JS, Promise, quot, quot;btn, quot;btn", quot;click", resolve, setTimeout, デバックモード, 変数, 返却, 関数,
WPのカレンダーや予約投稿の日付がズレてしまう件:WP5.3以降:?
2020.11.15
WPのカレンダーや予約投稿の日付がズレてしまう件:WP5.3以降に起きるらしい。ワードプレスが大幅なアップグレードしたことが影響しているみたいです。この原因を突き止めるのに結構時間がかかりました。頭の良い人はすごいなと関心、、、。原因ですが簡単に言うとテンプレートやプラグインに下記の関数を使用していたら何やら、日付がズレてしまうというなんとも言えない事象が起きる可能性があります。例えば、テンプレートのFunctions.phpの中にそういう記述があると表示される時にカレンダーがズレてしまうとかそういう現象が発生します。
date_default_timezone_set("Asia/Tokyo");
因みに自分はこの原因を突き止めるのに結構時間を割きました、共通してくれると有り難いです。参考にしたサイトを貼っときます。
https://blog.medical-design.co.jp/archives/2569
元リンクは下記のツイッターのリンクを参照ください。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5.3, Asia, blog, co, date, default, functions, https, jp, medical-design, php, quot, set, timezone, Tokyo, wp, アップ, カレンダー, グレード, こと, サイト, ズレ, テンプレート, なん, プラグイン, プレス, ワード, 下記, 中, 予約, 事象, 人, 件, 使用, 共通, 原因, 参考, 可能性, 大幅, 影響, 投稿, 日付, 時, 時間, 現象, 発生, 簡単, 自分, 表示, 記述, 関心, 関数, 頭,
サブドメインをワイルドカードで割り付ける方法:熨斗(のし)
2020.11.15
サブドメインをワイルドカードで割り付ける方法を記載します。まず初期の設定としてAレコードを下記のように設定します。ドメイン名はご自分のドメイン名に変更ください。バリューも任意に設定ください。
*.example.com 123.123.123.123
次にVirtualhostsを下記のように設定します。%1の部分がサブドメインの値が入ってきます。これで出来上がりです。因みにSSL認証はどうするれば良いのかという人にヒントを記載します。「ワイルドカードSSL認証」などとググると方法が記載されているHPに行き当たると思います。そちらを試すと容易にワイルドカードのSSLも出来ちゃうですね?
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/var/www/html/example.com"
ErrorLog /var/log/httpd/example.com_error_log
<Directory "/var/www/html/example.com">
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
VirtualDocumentRoot "/var/www/html/subdomain/%1"
ErrorLog /var/log/httpd/sub.example.com_error_log
</VirtualHost>
案外簡単で拍子抜けひともいるかも知れないですが、これで何かのサービスを作ることは可能かと思いますよ。どうぞお試しあれ。
因みにexample.comというドメインは存在します、参考書や参考サイトなどで使われる「例えばサイト」は存在します。玄人志向の方はtestなどのドメイン名を使わずに上記のドメイン名を使用します。それには理由があるのです、察しがいい人は分かるかと思いますが、安全でないサイトへ飛んでしまったりする人がいるためです。あとダミー画像を生成したいのなら、Placehold.jpを使用すると良いですよ。運用しているのはソフテルという日本の会社です?
追記でSSL認証も書いときますね。Let’s Encryptでワイルドカード証明書の場合はこんな感じです。まず、certbotが入っているということが前提としてあります、無い場合はインストールしてください。まず最初に下記のコマンドを打ちます。ドメイン名は自分用に変えてください。
certbot certonly --manual \
-d *.example.com -m mail@example.com --agree-tos --manual-public-ip-logging-ok \
--preferred-challenges dns \
このような内容が表示されますので、TXTレコードの設定を行います。英語が分からなければコピペして翻訳アプリにかけてください。
_acme-challenge.example.com XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
TXTレコードが設定されたどうかの確認はMSDOSなどで下記のコマンドを打ちます。設定が完了された場合はVALUEの値が返ってきます。
nslookup -type=TXT _acme-challenge.example.com 8.8.8.8
上手く通ったあと、エンターを打ち次に進みます。上手くいくとpemが生成されましたよというメッセージが出るのでその階層をコピーします。コピーしたものを元にApacheのVirtualhostのconfigの設定を行います。こんな感じです。
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot "/var/www/html/example.com"
ErrorLog /var/log/httpd/example.com_error_log
<Directory "/var/www/html/example.com">
AllowOverride All
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias *.example.com
VirtualDocumentRoot "/var/www/html/subtaxi/%1"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
ErrorLog /var/log/httpd/example.com_error_log
</VirtualHost>
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 123.123.123.123, 80, com, DocumentRoot, Error, example, gt, HP, html, lt, quot, servername, SSL, var, VirtualHost, Virtualhosts, www, カード, これ, ご自分, サブ, そちら, ドメイン, ドメイン名, のし, バリュー, ヒント, レコード, ワイルド, 下記, 人, 任意, 値, 初期, 変更, 容易, 方法, 次, 熨斗, 記載, 設定, 認証, 部分,
オレオレ認証SSL化、ワンツーコマンドで出来る。
2020.11.09
mkcertというものを使うとワンツーコマンドぐらいでオレオレ認証SSL化が出来てしまいます。尚、mkcertをインストールするにはHomebrew(ホームブルー)がインストールされている事が前提です。
リナックスではHomebrewをインストール前手順として、gitとrubyがインストールことが、前提となります。あと、nss-toolsも入っていなかったら入れる必要があります。こちらを入れて下記のコマンドでインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
次にHomebrew、コマンドよりmkcertをインストールします。(※コマンド登録は割愛します!!)
brew install mkcert
ローカル環境に認証局を作成してSSL認証を発行すれば終わりです。
mkcert -install
mkcert example.com
その場所に生成が終わるとファイルが出来ているので、そのpemファイルをApacheのVirtualHostで設定している場合は下記のように設定しApacheを再起動してあげればブラウザ(FirefoxかChrome)で見ると鍵認証が付いている状態になります。/etc/hostsのファイルの設定もお忘れなく。
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html/example.com
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /home/tanaka/example.com.pem
SSLCertificateKeyFile /home/tanaka/example.com-key.pem
</VirtualHost>
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-fsSL, bash, bin, brew, C++, com, curl, git, githubusercontent, Homebrew, https, install, master, mkcert, nss-tools, quot, raw, Ruby, sh, SSL, インストール, オレオレ, こちら, こと, コマンド, ブルー, ホーム, もの, リナックス, ローカル, ワンツー, 下記, 事, 作成, 前提, 割愛, 化, 必要, 手順, 次, 環境, 登録, 認証,
PowerShellであれ使えるだな。
2020.10.15
wget "ダウンロードするファイルのURL" -OutFile "保存先ファイルパス"
あれというのはwgetというダウンロードするときなどに使用するcommandです。リナックス系を使用している人には使っている方も多いかもしれない。そんな素敵なcommandがウィンドウズ10のPowerShell7では使用できるみたいだ。
大量画像にダウンロードする必要があったのでダウンロードファイルをリスト化、command打つように変換した。結果、とても楽です。
事務作業している方でIT好きな方はVBAを勉強してみると確実に仕事の効率化に繋がると思っています、たまにPythonをオススメするひともいるだけど、自分はあまりオススメしません。
なぜなら、一般的な事務員さん全員がそれを取り扱えるとは思わないからです。なのでクリックすれば動くよみたいな物が作れてパソコンの環境を変えないで良いのはVBAぐらいかと思います。PowerShellでもパソコンの環境を変更しないと動かないですからね。
バッチ処理などは一般的なひとはやはりハードルが高いと思ふ・・・?
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-Command, -OutFile, 10, 7, IT, powershell, Python, quot, url, VB, VBA, wget, あれ, ウィンドウズ, おすすめ, クリック, それ, ダウンロード, たま, とき, パス, パソコン, ひと, ファイル, リスト, リナックス, 事務, 人, 仕事, 作業, 使用, 保存, 全員, 効率, 勉強, 変換, 大量, 必要, 方, 物, 環境, 画像, 素敵, 結果, 自分,
カラーコード表をjson形式で取り込み背景をランダム表示。
2020.10.04
カラーコード表をjson形式で取り込み背景をランダム表示する、あまり使用しないかもしれない、プログラムコードを書きました?。
実際、必要とするのはオブジェクトで出来ているカラーコード表かなと思っています。ウェブの初心者だったとき、ジャバスクリプトで背景の色が変わったりすることが、新鮮で楽しかったのですが今はそういう感覚が昔より抜け落ちているなと感じます。プログラムを書くことが楽しいという感覚がここ数年、抜け落ちていて、休日はコードを前より書くことが少なくなっています。
何年もコードを書くと飽きるのかもしれないなというのは仕方がないことなのかもしれません。でもそこでモチベーションを下げずに要られるひとは更に上への技術が身につくのかもなと思っています。
飽きるというのは言い換えれば、上達が止まったことを指すそうです。
var h = {
color: [
{ name: "black" }
, { name: "aliceblue" }
, { name: "darkcyan" }
, { name: "lightyellow" }
, { name: "coral" }
, { name: "dimgray" }
, { name: "lavender" }
, { name: "teal" }
, { name: "lightgoldenrodyellow" }
, { name: "tomato" }
, { name: "gray" }
, { name: "lightsteelblue" }
, { name: "darkslategray" }
, { name: "lemonchiffon" }
, { name: "orangered" }
, { name: "darkgray" }
, { name: "lightslategray" }
, { name: "darkgreen" }
, { name: "wheat" }
, { name: "red" }
, { name: "silver" }
, { name: "slategray" }
, { name: "green" }
, { name: "burlywood" }
, { name: "crimson" }
, { name: "lightgray" }
, { name: "steelblue" }
, { name: "forestgreen" }
, { name: "tan" }
, { name: "mediumvioletred" }
, { name: "gainsboro" }
, { name: "royalblue" }
, { name: "seagreen" }
, { name: "khaki" }
, { name: "deeppink" }
, { name: "whitesmoke" }
, { name: "midnightblue" }
, { name: "mediumseagreen" }
, { name: "yellow" }
, { name: "hotpink" }
, { name: "white" }
, { name: "navy" }
, { name: "mediumaquamarine" }
, { name: "gold" }
, { name: "palevioletred" }
, { name: "snow" }
, { name: "darkblue" }
, { name: "darkseagreen" }
, { name: "orange" }
, { name: "pink" }
, { name: "ghostwhite" }
, { name: "mediumblue" }
, { name: "aquamarine" }
, { name: "sandybrown" }
, { name: "lightpink" }
, { name: "floralwhite" }
, { name: "blue" }
, { name: "palegreen" }
, { name: "darkorange" }
, { name: "thistle" }
, { name: "linen" }
, { name: "dodgerblue" }
, { name: "lightgreen" }
, { name: "goldenrod" }
, { name: "magenta" }
, { name: "antiquewhite" }
, { name: "cornflowerblue" }
, { name: "springgreen" }
, { name: "peru" }
, { name: "fuchsia" }
, { name: "papayawhip" }
, { name: "deepskyblue" }
, { name: "mediumspringgreen" }
, { name: "darkgoldenrod" }
, { name: "violet" }
, { name: "blanchedalmond" }
, { name: "lightskyblue" }
, { name: "lawngreen" }
, { name: "chocolate" }
, { name: "plum" }
, { name: "bisque" }
, { name: "skyblue" }
, { name: "chartreuse" }
, { name: "sienna" }
, { name: "orchid" }
, { name: "moccasin" }
, { name: "lightblue" }
, { name: "greenyellow" }
, { name: "saddlebrown" }
, { name: "mediumorchid" }
, { name: "navajowhite" }
, { name: "powderblue" }
, { name: "lime" }
, { name: "maroon" }
, { name: "darkorchid" }
, { name: "peachpuff" }
, { name: "paleturquoise" }
, { name: "limegreen" }
, { name: "darkred" }
, { name: "darkviolet" }
, { name: "mistyrose" }
, { name: "lightcyan" }
, { name: "yellowgreen" }
, { name: "brown" }
, { name: "darkmagenta" }
, { name: "blush" }
, { name: "cyan" }
, { name: "darkolivegreen" }
, { name: "firebrick" }
, { name: "purple" }
, { name: "seashell" }
, { name: "aqua" }
, { name: "olivedrab" }
, { name: "indianred" }
, { name: "indigo" }
, { name: "oldlace" }
, { name: "turquoise" }
, { name: "olive" }
, { name: "rosybrown" }
, { name: "darkslateblue" }
, { name: "ivory" }
, { name: "mediumturquoise" }
, { name: "darkkhaki" }
, { name: "darksalmon" }
, { name: "blueviolet" }
, { name: "honeydew" }
, { name: "darkturquoise" }
, { name: "palegoldenrod" }
, { name: "lightcoral" }
, { name: "mediumpurple" }
, { name: "mintcream" }
, { name: "lightseagreen" }
, { name: "cornsilk" }
, { name: "salmon" }
, { name: "slateblue" }
, { name: "azure" }
, { name: "cadetblue" }
, { name: "beige" }
, { name: "lightsalmon" }
, { name: "mediumslateblue" }
]
};
document.body.style.backgroundColor = h.color[getRandomInt(h.color.length)].name;
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Black, color, json, name, quot, var, ウェブ, オブジェクト, カラー, コード, ここ, こと, ジャバ, スクリプト, そこ, とき, ひと, プログラム, モチベーション, ランダム, 上, 上達, 今, 休日, 何年, 使用, 初心者, 前, 実際, 形式, 必要, 感覚, 技術, 数, 新鮮, 昔, 背景, 色, 表示, 身,
All in One SEO一括、自動入力したった。
2020.07.16
All in One SEO一括、自動入力したった。そのままです。SEO入力欄にデータを流し込みました。前処理として記事のID番号を列挙してJSONで保存しそのIDデータを使用してSEOタイトル、SEO ディスクリプション、SEO キーワードに記事のタイトル、記事内容、タグをそれぞれ流し込みました。この結果は数ヶ月ぐらいかかると思いますが、良い方向に動いていほしいものです。
ここではJSONデータは記載していませんがプログラム処理から想像出来るかと思います。
<?php
date_default_timezone_set("Asia/Tokyo");
require_once(__DIR__ . '/../wp-load.php');
class db{
public $db = NULL;
function __construct()
{
$this->db = new PDO('mysql:dbname=DBNAME;host=HOST;charset=utf8;', 'USER', 'PASS');
}
public function tbl_update($id,$title,$comment,$keyword){
//
$sdb = $this->db->prepare("select * from wp_postmeta where wp_postmeta.post_id = :id and wp_postmeta.meta_key='_aioseop_title';");
$sdb->bindParam(":id",$id,PDO::PARAM_INT);
$ret = $sdb->execute();
var_dump($sdb->rowCount());
if($sdb->rowCount()){
$sdb = Null;
$sdb = $this->db->prepare("UPDATE wp_postmeta set wp_postmeta.meta_value = :title where wp_postmeta.post_id = :id and wp_postmeta.meta_key='_aioseop_title';");
}else{
$sdb = Null;
$sdb = $this->db->prepare("INSERT INTO wp_postmeta(post_id,meta_key,meta_value) VALUES (:id,'_aioseop_title',:title);");
}
$sdb->bindParam(":id",$id,PDO::PARAM_INT);
$sdb->bindParam(":title",$title,PDO::PARAM_STR);
$ret = $sdb->execute();
//
//
$sdb = $this->db->prepare("select * from wp_postmeta where wp_postmeta.post_id = :id and wp_postmeta.meta_key='_aioseop_description';");
$sdb->bindParam(":id",$id,PDO::PARAM_INT);
$ret = $sdb->execute();
if($sdb->rowCount()){
$sdb = Null;
$sdb = $sdb = $this->db->prepare("UPDATE wp_postmeta set wp_postmeta.meta_value = :comment where wp_postmeta.post_id = :id and wp_postmeta.meta_key='_aioseop_description';");
}else{
$sdb = Null;
$sdb = $this->db->prepare("INSERT INTO wp_postmeta(post_id,meta_key,meta_value) VALUES (:id,'_aioseop_description' ,:comment);");
}
$sdb->bindParam(":id",$id,PDO::PARAM_INT);
$sdb->bindParam(":comment",$comment,PDO::PARAM_STR);
$ret = $sdb->execute();
//
//
$sdb = $this->db->prepare("select * from wp_postmeta where wp_postmeta.post_id = :id and wp_postmeta.meta_key='_aioseop_keywords';");
$sdb->bindParam(":id",$id,PDO::PARAM_INT);
$ret = $sdb->execute();
if($sdb->rowCount()){
$sdb = Null;
$sdb = $this->db->prepare("UPDATE wp_postmeta set wp_postmeta.meta_value = :keyword where wp_postmeta.post_id = :id and wp_postmeta.meta_key='_aioseop_keywords';");
}else{
$sdb = Null;
$sdb = $this->db->prepare("INSERT INTO wp_postmeta(post_id,meta_key,meta_value) VALUES (:id,'_aioseop_keywords' ,:keyword);");
}
$sdb->bindParam(":id",$id,PDO::PARAM_INT);
$sdb->bindParam(":keyword",$keyword,PDO::PARAM_STR);
$ret = $sdb->execute();
$sdb = Null;
$this->db = Null;
return "{'id':$id,'title':'$title','comment':'$comment','keyword':'$keyword'}";
}
}
//$_POST["ID"] = 9541;
$obj = (object)json_decode(file_get_contents("./postid.json"));
foreach($obj->rows as $key=>$val){
$ID = (int)$val->ID;
$page = get_post($ID);
$title = mb_strimwidth($page->post_title,0,60,"…");
$content = $page->post_content;
$content = wp_strip_all_tags( $content );
$content = mb_strimwidth(strip_shortcodes( $content ),0,160,"…");
$keyword = array();
$posttags = get_the_tags($ID);
if ( $posttags ) {
foreach ( $posttags as $tag ) {
$keyword[] = $tag->name;
}
}
$DB = new db();
print count($keyword)>0?$DB->tbl_update($ID,$title,$content,implode(",",$keyword)):$DB->tbl_update($ID,$title,$content,"");
$DB = Null;
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
39, all, Asia, class, construct, date, db, default, DIR, function, ID, in, json, lt, null, once, one, php, public, quot, require, SEO, set, timezone, Tokyo, wp-load, キーワード, ここ, それぞれ, タイトル, タグ, データ, ディスクリプション, プログラム, もの, 一括, 使用, 保存, 入力, 入力欄, 内容, 処理, 列挙, 前処理, 想像, 数, 方向, 番号, 結果, 自動, 記事, 記載,
おつりアルゴリズム番外編。
2020.07.10
おつりアルゴリズムのアクセスがまぁまぁ好評なので番外編を記載します。硬貨や紙幣の制限がない場合、単なるこれだけのアルゴリズムで動作させることが可能です。尚、自動販売機などは硬貨の枚数なども計算しておつりを算出しているだろうと思います。因みにこのアルゴリズムに硬貨の枚数などのアルゴリズムを追加することにより比較的に簡単に導入できるかと思います。
デモ21としてリンクを載せときます、実際に使用してみて勘どころを掴んでください。なお、このコードはHTMLとJSで動させています。PHPなどは使用していません。ジャバスクリプト(JavaScript)で結構いろいろなことを処理することが可能だと感じますね。WEBでなにか勉強しようと考えている場合、JS(ジャバスクリプト)は必須であり、ブラウザさえあれば普通に動くのでお勧めな言語かなと思います。
ソースコードは下記になります。https://zip358.com/tool/demo21/
document.getElementById("money").addEventListener("input",function(){
var money = document.getElementById("money").value;
var change = {
calc1:{yen:10000,change:0,str1:"紙幣",str2:"枚"},
calc2:{yen:5000,change:0,str1:"紙幣",str2:"枚"},
// calc33:{yen:2000,change:0,str:"紙幣",str2:"枚"},
calc3:{yen:1000,change:0,str1:"紙幣",str2:"枚"},
calc4:{yen:500,change:0,str1:"硬貨",str2:"個"},
calc5:{yen:100,change:0,str1:"硬貨",str2:"個"},
calc6:{yen:50,change:0,str1:"硬貨",str2:"個"},
calc7:{yen:10,change:0,str1:"硬貨",str2:"個"},
calc8:{yen:5,change:0,str1:"硬貨",str2:"個"},
calc9:{yen:1,change:0,str1:"硬貨",str2:"個"}
};
money = money.replace(/[,|,]/g,"");
if(money.match(/[0-9]{1,}/g)){
for (const key in change) {
if (change.hasOwnProperty(key)) {
const obj = change[key];
change[key].change = Math.floor(money / obj.yen);
money = money % obj.yen;
}
}
var anser = function() {
var str = "";
for (const key in change) {
if (change.hasOwnProperty(key)) {
const obj = change[key];
if(obj.change){
str+= obj.yen + "円、" + obj.str1 + "が" + obj.change + obj.str2 + "<br>";
}
}
}
return str;
};
document.getElementById("change_print").innerHTML = anser();
}else{
document.getElementById("change_print").innerHTML = "入力が不適切です!";
}
});
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
21, document, getElementById, html, javascript, JS, php, quot, web, アクセス, アルゴリズム, いろいろ, おつり, お勧め, コード, こと, これだけ, ジャバ, スクリプト, ソース, デモ, ブラウザ, リンク, 下記, 使用, 処理, 制限, 勉強, 動, 動作, 勘どころ, 可能, 場合, 好評, 実際, 導入, 必須, 普通, 枚数, 番外編, 硬貨, 算出, 簡単, 紙幣, 自動販売機, 言語, 計算, 記載, 追加,
JavaScriptを再勉強しているのだが、ある疑惑が!?
2020.06.03
JavaScriptを再勉強しているのだが、ある疑惑が生まれた。それはjqueryで良いじゃねぇという疑惑。自分はjsよりjqueryの方が使いやすく感じる。まぁいまの所なのかもしれないが・・・使いやすいですね。
jqueryはいろいろなブラウザ上で動くことをサポートしてくれるライブラリとして普及したのだけど、IEが消滅時効状態のいまではシェア率は下がっていてネイティブJSが良いじゃねぇという動きですが・・・。いやいやjqueryの方が楽だしコードはあまり書かなくて良い。特にイベント処理時のデータの複数受け渡しでは、今の所、JavaScriptよりjqueryの方が楽だと思います。
あと非同期通信とかもね。ajaxで良いじゃねぇとか思いますよ。
最後に動画のJSコードを載せときますね。
document.getElementById("my-textarea").addEventListener("input",()=>{
document.getElementById("view").innerText = document.getElementById("my-textarea").value;
});
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
addEv, ajax, document, getElementById, IE, javascript, jquery, JS, my-textarea, quot, イベント, いま, いやいや, いろいろ, コード, こと, サポート, シェア, それ, データ, ネイティブ, ブラウザ, ライブラリ, 今, 処理, 勉強, 動画, 同期, 所, 方, 時効, 普及, 最後, 消滅, 状態, 疑惑, 自分, 複数, 通信,
js初心者さんのお勉強:思いつき写経。
2020.06.01
js初心者さんのお勉強をvlogとして昨日撮りました。もっと簡略化できることはあるのだが、敢えてやらない自分がいます。自分のモットーに初心者さんでもわかるコードをという考えがあります。初心者さんに分かりやすいと言うことは馬鹿な自分にも分かりやすいという事です。ぱっと見て読みやすければ良いという事です。javascriptを本当に1から勉強中なんですね。本当に右も左も分からないのでググりながらお勉強しています。知らないと言ってもプログラミングの基本は知っているのでJS用の書き方やお作法を覚えているというような感じです。
ソースコードはこちら
let btn1 = function (e) {
//btn2
console.clear();
console.log("btn1");
let p = document.getElementsByTagName("p");
let style1 = [["backgroundColor", "fontSize", "color"], ["#000000", "20px", "#ffffff"]];
for (const key in p) {
if (p.hasOwnProperty(key)) {
const element = p[key];
for (var i = 0; i < style1[0].length; i++) {
element.style[style1[0][i]] = style1[1][i];
}
}
}
};
let btn2 = function (e) {
//btn2
console.clear();
console.log("btn2");
let p = document.getElementsByTagName("p");
let style2 = {
backgroundColor: "#ffffff",
fontSize: "20px",
color: "#000000"
};
for (const key in p) {
if (p.hasOwnProperty(key)) {
const element = p[key];
for (const key2 in style2) {
element.style[key2] = style2[key2];
}
}
}
};
document.body.style.backgroundColor = "#0b222b";
document.getElementById("btn1").addEventListener("click",btn1);
document.getElementById("btn2").addEventListener("click",btn2);
デモページ
https://zip358.com/tool/demo17/
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 2, btn, Clear, console, document, function, getElementsByTagName, javascript, JS, let, log, quot, Vlog, お勉強, コード, こちら, こと, ソース, プログラミング, モットー, 事, 作法, 写経, 初心者, 勉強, 右, 基本, 左, 思いつき, 感じ, 昨日, 書き方, 本当, 用, 簡略, 自分, 馬鹿,
(github)=>{git push -u ギットハブ master;}
2020.05.27
github(ギットハブ)を知っている方はIT業界では9割近いかなとか思っているのですが・・・どうでしょうか?名前は聞いたことが有るけれど触ったことはないという方も地方ではいらっしゃると思います。ちなみに自分も名前だけ知っているような状態でした。そもそもソロみたいな感じでコード書いている人はgit(ギット)だけで十分ですし、ソースコードの管理すらしない人もいるかと思います。ひとりでギットハブを使う方は特にブランチ関係は覚える必要はないかなと思います。
git add .
git commit -m "comment..."
git remote add origin https://github.com/test.git
git push -u origin master
なので初回はこんな感じで打ち込みます。3行目でoriginと打ち込んでいると思いますがこれは、『https://github.com/test.git』をoriginとして認識させるよという事になります。originじゃなくても良いです。originじゃない場合、『push』のコマンド行を任意の文字に置き換える必要があります。
尚、ひとりで使っていてPCが壊れた時に『Pull』が必要になるかと思います。それ以外はブランチもぷるも必要ない気がします。
※gitにはいろいろなコマンドオプションがあるようですね…。
例えば下記のようなコマンドを打つと『git add .』を省略することが可能だとか、どういう意味かは割愛します。必ずぐぐってくださいね。
git commit -a -m "comment..."
githubではhtmlやjsは使用できるので無料でサイトを構築することも可能です。ポートフォリオとしてのページをgithubで作っている人も多いみたいです。
『ソースコード管理する事自体が面倒くさい‥な』と思っている方は考え直してください、ソースが消えちゃった事やチームで何かを作ったりレビューしたりするときの事を考えてくださいな。
じぶんの説明がわからない方はこちらに完結に説明している動画がありますので参照くださいね(´・ω・`)
追記:github強制プッシュを無効にする方法
https://next.rikunabi.com/journal/20170516_t12_iq/
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-m, 3, 9, Add, com, comment, commit, git, github, https, IT, master, origin, push, quot, remote, test, u', キット, ギットハブ, コード, こと, これ, ソース, ソロ, ひとり, ブランチ, 人, 初回, 名前, 地方, 必要, 感じ, 方, 業界, 状態, 管理, 自分, 関係,
javascriptのアロー関数ってアレだな。
2020.05.20
javascriptのアロー関数ってアレだな、無名関数の省略形だと思ったら良いです。アロー(arrow)=矢って意味、まんまだよね。日本語に直訳すると矢関数って意味になるのかな・・・。矢関数って響きが良くないのでアロー関数って読んでいるだけだと思うのです。英語のわからない自分は矢関数で良いじゃないと思ったりするわけです。
例文:載せときます、、比較的新しいブラウザなら動作します。
const test = (e)=>{
var view = document.querySelector("#view1");
view.innerHTML = e.target.value;
};
const input = document.querySelector("#t");
input.addEventListener("input",test);
一応、デモサイトのリンクも載せときますので、動作確認してみてくださいな。
尚、今回は純正なjavascriptだけで記載しました。これから極力、純正で純粋なjavascrpitで書いていこうと思います、いまのWEBの流れはそうなんだって。そしてTypescriptとかが今後来るみたいに言われていますよね。
https://zip358.com/tool/demo15/
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, addEventListener, arrow, const, document, gt, innerHTML, input, javascript, querySelector, quot, target, test, value, var, view, アレ, アロー, ブラウザ, まんま, 例文, 動作, 意味, 日本語, 無名, 直訳, 省略形, 矢, 自分, 英語, 関数,
Yahoo!ニュースをPythonで取得するできました(´・ω・`)v
2020.05.01
早朝、YOUTUBEライブ配信で行ったものはタイトルとリンクが若干異なるところがあったので、修正したソースコードを貼っときます。Python言語少しずつ 少しずつ理解できてきた。
書き方が慣れればPHPより書くのは楽かな。$の記号がPHPの変数を書く場合、絶対必要になるけどPythonは書かなくて良いからね。
import requests
from bs4 import BeautifulSoup
r = requests.get("https://news.yahoo.co.jp/")
soup = BeautifulSoup(r.content, "html.parser")
#ニュース一覧のテキストのみ抽出
f = open("link.csv",mode = "a")
for t,a in zip(soup.find_all("div", "newsFeed_item_title"),soup.find_all("a", "newsFeed_item_link")):
f.write(t.text + "," + a.get('href') + "\n")
f.close()
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
4, BeautifulSoup, bs, co, content, CSV, find, For, from, GET, html, https, import, in, jp, link, mode, News, open, parser, php, Python, quot, requests, soup, v, Yahoo, youtube, zip, コード, ソース, タイトル, テキスト, ところ, ニュース, もの, ライブ, リンク, 一覧, 修正, 取得, 場合, 変数, 必要, 抽出, 早朝, 書き方, 理解, 若干, 言語, 記号, 配信,
Gさんのリアルタイム検索トレンドを抽出するPHPライブラリ
2020.04.15
Composerをインストールしていること前提条件として書いていきます。まずはライブラリーを入れます。
こんな感じに
composer require x-fran/g-trends
そして次にこんな感じのPHPコードを書きます、これだけでGさん(グーグルさん)のリアルタイム検索トレンドが表示することが可能となります。ちなみにJSONで返す処理として書いています。ライブラリーがしっかりしているので、あとはメソッドを呼び出すだけで簡単に検索のリアルタイムのトレンドが表示できてしまう。
ライブラリーコードは下記から参照できます。
https://github.com/x-fran/g-trends
<?php
include_once "../../vendor/autoload.php";
use XFran\GTrends\GTrends;
$options = [
'hl' => 'ja-JP',
'tz' => -540,
'geo' => 'JP',
];
if((int)$_POST["p"]==1234){
$gt = new GTrends($options);
$ret = $gt->getRealTimeSearchTrends();
if(is_array($ret["storySummaries"]["trendingStories"])){
$jsn = json_encode($ret["storySummaries"]["trendingStories"]);
print $jsn;
}
}
尚、ajaxで表示している部分は割愛します。
https://zip358.com/tool/demo14/ demo14を検証ください。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
autoload, com, Composer, g-trends, github, GTrends, https, include, json, lt, once, options, php, quot, require, use, vendor, x-fran, XFran, あと, インストール, グーグル, コード, こと, これだけ, トレンド, メソッド, ライブラリ, ライブラリー, リアルタイム, 下記, 処理, 前提, 参照, 可能, 感じ, 抽出, 条件, 検索, 簡単, 表示,
高知県のダム貯水率グラフ化2
2020.03.26
以前、高知県のダム貯水率のグラフ化してみた事があるのですがいつの間にかデータが取得できなくなっていたようです。なので取得できるようにPHPコードを変更しました。高知県のダム貯水率をJSON形式で吐き出してほしいなと思う人は少数ながらいると思います。そんな方は私がJSON形式で吐き出したデータを密かに使っていたりするのかな?因みにプログラム出来るよというひとは自身で貯水率のデータが転がっているURLを掲載しますので解析して頂ければ有り難いと思います。
https://suibo-kouho.suibou.bousai.pref.kochi.lg.jp/suibou/main.html?no=4&no2=0&fnm=openTable
<?php
$html = file_get_contents("高知県のダム貯水率のURL");
$html = mb_convert_encoding($html,"UTF-8","SJIS");
$dom = new DOMDocument();
$html = mb_convert_encoding($html, "HTML-ENTITIES", 'UTF-8');
@$dom->loadHTML($html,LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
$ary=array(
"永瀬ダム"=>"nagase",
"鎌井谷ダム"=>"kamaidani",
"鏡ダム"=>"kagami",
"早明浦ダム"=>"sameura",
"桐見ダム"=>"kirimi",
"坂本ダム"=>"sakamoto",
"大渡ダム"=>"oodo",
"中筋川ダム"=>"nakasugawa",
"以布利川ダム"=>"iburigawa"
);
for($i=1;$i<=9;$i++){
$r[$xpath->query("/html/body/form/div[2]/table/tbody/tr[$i]/td[3]")->item(0)->textContent] = preg_replace("/[\x{00a0}|?]/u","",$xpath->query("/html/body/form/div[2]/table/tbody/tr[$i]/td[7]")->item(0)->textContent);
}
foreach ($r as $key => $value) {
$obj[$ary[$key]] = $value;
}
//echo '{"nagase":"91.16","kamaidani":"77.57","kagami":"39.32","sameura":"100.00","kirimi":"46.09","sakamoto":"99.38","oodo":"98.70","nakasugawa":"77.90","iburigawa":"99.12"}';
print json_encode($obj);
https://zip358.com/tool/demo6/index.html
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 2, 4, amp, bousai, contents, convert, encoding, file, fnm, GET, html, https, jp, json, kochi, LG, lt, main, mb, no, openTable, php, pref, quot, suibo-kouho, suibou, url, グラフ, コード, ダム, データ, ひとは, プログラム, 事, 人, 取得, 変更, 少数, 形式, 掲載, 方, 私, 自身, 解析, 貯水, 高知県,
jqueryのイベント処理時に引数を受け渡す方法を知っとくと良いかもしれません。
2020.03.10
jqueryのイベント処理時に引数を受け渡す方法を知っとくと良いかもしれません。記述は下記になります。ぐぐると出てくるので知っている人の方が多いかもしれませんが…。ちなみに自分はこの記述方法、ごくまれにしか使わないため、忘れてしまいます。event.dataに紐づけてくれるのはとても良いかなと自分は思っていますが、皆さんはいかがでしょうか?もうjqueryなんか使わないよという方もいると思うのですが、自分が思うにゴリゴリ書くよりか、jqueryで済ませれるところは使ったほうがコードは短くて済むと思っています。WEB業界は技術の移り変わりが早いですよね。逆にソフトのほうはWEBよりはスパンが長い気がします。
https://zip358.com/tool/demo9/
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="common.js"></script>
<title>Document</title>
</head>
<body>
<p id="pen">お腹空いた(´;ω;`)お腹空いたと>φ(..)</p>
</body>
</html>
$(function(){
$("#pen").click({sword:"The pen is mightier than the sword"},function(e){
$(this).text(e.data.sword);
});
// $("#pen").on("click",{sword:"The pen is mightier than the sword"},function(e){
// $(this).text(e.data.sword);
// });
});
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
charset, data, DOCTYPE, EVENT, gt, head, html, ja, jquery, lang, lt, meta, quot, web, いかが, イベント, かな, コード, スパン, ソフト, ため, ところ, 下記, 人, 処理, 引数, 技術, 方, 方法, 業界, 気, 皆さん, 紐, 自分, 記述, 逆,
都道府県にカーソルを乗せると色が変わるちょっとした奴ムフ。
2020.03.09
JSONファイル、JSファイル、htmlファイルはそれぞれ下記になります。ちなみにいま作っている、あるサービスに使うために作ったもののお裾分けです。雛形として作っているのでおそらく、編集しやすいかなと思います。なお、SVGファイルは自分のソースからダウンロードするか、提供元のSVGをダウンロードするかしてください。ちなみにSVGは日本地図の標準をダウンロードしています。
デモ8:: https://zip358.com/tool/demo8/
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="common.js"></script>
<title>Document</title>
</head>
<body onload="ken()">
<object id="svg_ken" data="jpn03_a4.svg" type="image/svg+xml" width="700" height="700"></object><br>
<a target="new456" rel="license" href="http://creativecommons.org/licenses/by-nc/2.1/jp/"><img alt="Creative Commons License" style="border-width: 0" src="http://i.creativecommons.org/l/by-nc/2.1/jp/88x31.png.webp"></a><br>
データ引用元:<a target="new123" href="https://www.kabipan.com/geography/whitemap/">https://www.kabipan.com/geography/whitemap/</a><br>
</body>
</html>
{
"kenmei":[
{"id":"1","ken":"北海道","eiji":"HOKKAIDO"},
{"id":"2","ken":"青森県","eiji":"AOMORI"},
{"id":"3","ken":"岩手県","eiji":"IWATE"},
{"id":"4","ken":"宮城県","eiji":"MIYAGI"},
{"id":"5","ken":"秋田県","eiji":"AKITA"},
{"id":"6","ken":"山形県","eiji":"YAMAGATA"},
{"id":"7","ken":"福島県","eiji":"FUKUSHIMA"},
{"id":"8","ken":"茨城県","eiji":"IBARAKI"},
{"id":"9","ken":"栃木県","eiji":"TOCHIGI"},
{"id":"10","ken":"群馬県","eiji":"GUNMA"},
{"id":"11","ken":"埼玉県","eiji":"SAITAMA"},
{"id":"12","ken":"千葉県","eiji":"CHIBA"},
{"id":"13","ken":"東京都","eiji":"TOKYO"},
{"id":"14","ken":"神奈川県","eiji":"KANAGAWA"},
{"id":"15","ken":"新潟県","eiji":"NIIGATA"},
{"id":"16","ken":"富山県","eiji":"TOYAMA"},
{"id":"17","ken":"石川県","eiji":"ISHIKAWA"},
{"id":"18","ken":"福井県","eiji":"HUKUI"},
{"id":"19","ken":"山梨県","eiji":"YAMANASHI"},
{"id":"20","ken":"長野県","eiji":"NAGANO"},
{"id":"21","ken":"岐阜県","eiji":"GUFU"},
{"id":"22","ken":"静岡県","eiji":"SIZUOKA"},
{"id":"23","ken":"愛知県","eiji":"AICHI"},
{"id":"24","ken":"三重県","eiji":"MIE"},
{"id":"25","ken":"滋賀県","eiji":"SHIGA"},
{"id":"26","ken":"京都府","eiji":"KYOTO"},
{"id":"27","ken":"大阪府","eiji":"OSAKA"},
{"id":"28","ken":"兵庫県","eiji":"HYOGO"},
{"id":"29","ken":"奈良県","eiji":"NARA"},
{"id":"30","ken":"和歌山県","eiji":"WAKAYAMA"},
{"id":"31","ken":"鳥取県","eiji":"TOTTORI"},
{"id":"32","ken":"島根県","eiji":"SHIMANE"},
{"id":"33","ken":"岡山県","eiji":"OKAYAMA"},
{"id":"34","ken":"広島県","eiji":"HIROSHIMA"},
{"id":"35","ken":"山口県","eiji":"YAMAGUCHI"},
{"id":"36","ken":"徳島県","eiji":"TOKUSHIMA"},
{"id":"37","ken":"香川県","eiji":"KAGAWA"},
{"id":"38","ken":"愛媛県","eiji":"EHIME"},
{"id":"39","ken":"高知県","eiji":"KOUCHI"},
{"id":"40","ken":"福岡県","eiji":"FUKUOKA"},
{"id":"41","ken":"佐賀県","eiji":"SAGA"},
{"id":"42","ken":"長崎県","eiji":"NAGASAKI"},
{"id":"43","ken":"熊本県","eiji":"KUMAMOTO"},
{"id":"44","ken":"大分県","eiji":"OOITA"},
{"id":"45","ken":"宮崎県","eiji":"MIYAZAKI"},
{"id":"46","ken":"鹿児島県","eiji":"KAGOSHIMA"},
{"id":"47","ken":"沖縄県","eiji":"OKINAWA"}
]
}
function ken() {
$.getJSON("ken.json", function (json) {
var svg_ken = document.getElementById('svg_ken').contentDocument;
var ken = $(svg_ken);
ken.find('path').attr('fill', '#fff');
////
for (var i = 0; i < 47; i++) {
ken.find("[id='" + json.kenmei[i].eiji + "']").on("click",{i:i,json:json},function (event) {
window.location.href = "/page/" + event.data.json.kenmei[event.data.i].id;
});
}
////
for (var i = 0; i < 47; i++) {
ken.find("[id='" + json.kenmei[i].eiji + "']").hover(
function () {
$(this).attr('fill', '#4080ff');
},
function () {
$(this).attr('fill', '#fff');
});
}
});
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
358, 8, charset, com, content, demo, device-widt, DOCTYPE, gt, head, html, https, ja, JS, json, lang, lt, meta, name, quot, SVG, tool, UTF-, viewport, Width, zip, いま, お裾分け, カーソル, サービス, ソース, それぞれ, ダウンロード, ため, デモ, ファイル, ムフ, 下記, 地図, 奴, 提供, 日本, 標準, 編集, 自分, 色, 都道府県, 雛形,
phpのPDOでバインドする時、こうすれば楽。
2020.02.28
phpのPDOでバインドする時、こうすれば楽ですよね(・(ェ)・)という記述です。前の職場ではsqliでDB接続していたのですが、バインドして作られていたかは忘れてしまいました。ちなみに前の職場のPDOに改修するのは面倒くさいだろうなと感じます。何がめんどくさいかと言えば、今まで導入していたもの全てに対応するというのは、超面倒くさいと思います。
余談:
前の職場を何故辞めたかのお話します。突発的に辞めたと思う人もいるかもしれませんが、基本的に突発的辞めることはないです。突発的に辞めたかのように見えて前々から考えてきっかけを理由に辞めました。具体的な理由に関してはここでは書きません。突発的に辞めたかのように見せかけて計画的です(・(ェ)・)
ソースコードは下記になります。
<?php
ini_set("display_errors",1);
class mysql {
static $dbh = Null;
static $host = "localhost";
static $id = "あいーでぃー";
static $pass= "パスワード";
static $dbname = "test";
static $sql = array(
"id"=>array("data"=>PDO::PARAM_INT,"val"=>""),
"name"=>array("data"=>PDO::PARAM_STR,"val"=>"")
);
static function connect()
{
/* 接続状況をチェックします */
try {
static::$dbh = new PDO('mysql:host='.static::$host.';dbname='.static::$dbname.';', static::$id, static::$pass);
static::$dbh->query('SET NAMES utf8');
} catch (Exception $e) {
echo "Failed: " . $e->getMessage();
}
}
static function insert_query(){
//プリペアドステートメント
$stmt = static::$dbh->prepare("insert into test1 (id,Name) values(:id,:name);");
//バインド
foreach(static::$sql as $key=>&$val){
$stmt->bindParam(":$key",$val["val"],$val["data"]);
}
$stmt->execute();
$stmt = null;
}
static function update_query(){
//プリペアドステートメント
$stmt = static::$dbh->prepare("update test1 set Name= :name where id = :id;");
//バインド
foreach(static::$sql as $key=>&$val){
$stmt->bindParam(":$key",$val["val"],$val["data"]);
}
$stmt->execute();
$stmt = null;
}
static function select_query(){
//プリペアドステートメント
$stmt = static::$dbh->prepare("select * from test1 where id = :id;");
//バインド
foreach(static::$sql as $key=>&$val){
if($key==="id")$stmt->bindParam(":$key",$val["val"],$val["data"]);
}
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
printf ("%d (%s)<br>", $row["id"], $row["Name"]);
}
$stmt = null;
}
static function close(){
static::$dbh = null;
}
}
mysql::connect();
// for($i = 0 ;$i<=99;$i++){
// mysql::$sql["id"]["val"] = $i;
// mysql::$sql["name"]["val"] = "テスト$i";
// mysql::insert_query();
// }
for($i = 0 ;$i<=99;$i++){
mysql::$sql["id"]["val"] = $i;
mysql::$sql["name"]["val"] = "テスト<font color='red'>$i</font>";
mysql::update_query();
}
for($i = 0 ;$i<=99;$i++){
mysql::$sql["id"]["val"] = $i;
mysql::select_query();
}
mysql::close();
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, class, db, dbh, display, errors, ini, lt, MYSQL, PDO, php, quot, set, sqli, static, お話, きっかけ, コード, ここ, こと, ソース, バインド, もの, 下記, 人, 何, 余談, 全て, 前, 前々, 対応, 導入, 接続, 改修, 時, 理由, 職場, 記述,
月の満ち欠けPHPライブラリを書きました。ちょっと適当なアイコンで表示。
2020.02.22
月の満ち欠けPHPライブラリを書きました、ご自由にお使いください。
ちょっと適当なアイコンで表示。
もっと正確なアイコンを取り入れたい方はご自身でご自由に変更ください。
月の満ち欠けの計算方法はネットから見つけてきました。
情報を記載していただいた先人の知恵を借りPHPライブラリが出来ました。
ありがとうございます。
<?php
//date_default_timezone_set('Asia/Tokyo');
class moon{
static public $icon = array(
"0"=>'?',//朔
"1"=>'?',//朔
"2"=>'?',//朔
"3"=>'?',//三日月
"4"=>'?',//三日月
"5"=>'?',//三日月
"6"=>'?',//三日月
"7"=>'?',//上弦の月',
"8"=>'?',//上弦の月',
"9"=>'?',//上弦の月',
"10"=>'?',//上弦の月',
"11"=>'?',//上弦の月',
"12"=>'?',//十三夜月
"13"=>'?',//十三夜月
"14"=>'?',//十三夜月
"15"=>"?",//望月
"16"=>"?",//望月
"17"=>"?",//望月
"18"=>"?",//望月
"19"=>"?",//寝待月
"20"=>"?",//寝待月
"21"=>"?",//寝待月
"22"=>"?",//寝待月
"23"=>'?',//下弦の月
"24"=>'?',//下弦の月
"25"=>'?',//下弦の月
"26"=>"?",//二十六夜月
"27"=>"?",//二十六夜月
"28"=>"?",//二十六夜月
"29"=>"?"//二十六夜月
);
static public $res = "0";
static public $moon_gregorian = array(0,2,0,2,2,4,5,6,7,8,9,10);
public function main($year=2012,$mon=12,$day=12)
{
static::$res = ((($year-11)%19)*11 + static::$moon_gregorian[$mon-1]+$day)%30;
}
public function icon(){
return static::$icon[static::$res];
}
}
呼び出しはこんな感じで。
<?php
moon::main($year,$mon,$day);
$chg = moon::icon();
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 1, 2, 3, 39, array, Asia, class, date, default, gt, icon, lt, moon, php, public, quot, set, static, timezone, Tokyo, アイコン, ご自身, ネット, ライブラリ, 先人, 変更, 情報, 方, 方法, 月, 朔, 正確, 満ち欠け, 知恵, 表示, 計算, 記載, 適当,
天気予報を取得するアレを使用してみた(Openweathermap_api)。
2020.02.19
ご自由にお使いください。尚、openweathermap.orgより
アカウントを作成後、APIKEYを取得しお使いください。
下記のソースコードをコピーしての可変等は可能です。
余談
天気予報の絵文字が合致していていないかもしれません。
また都道府県のIDもズレている場合、お好みで変更ください。
ZIPコードで情報を取得するとより正確な天気予報となるそうです。
下記のコードを実行するとこんな感じになります。
ソースコードはこんな感じになります。
<?php
class Openweathermap_api{
public $url = "https://api.openweathermap.org/data/2.5/weather?id=";
public $appid = "apikey";
public $ken ="";
public $response ="";
public $icon = array(
"01d"=>"?",
"02d"=>"?",
"03d"=>"?",
"04d"=>"?",//?
"09d"=>"?",
"010d"=>"?",
"011d"=>"?",
"013d"=>"?",
"050d"=>"?",
);
function __construct()
{
$this->ken = (object)(json_decode(@file_get_contents("ken.json"),true));
}
function api(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$this->response = (object)json_decode(curl_exec($ch),true);
curl_close($ch);
}
}
$tenki = New Openweathermap_api();
$tenki->url = "https://api.openweathermap.org/data/2.5/weather?id=".$tenki->ken->kochi["id"]."&appid=".$tenki->appid;
$tenki->api();
print($tenki->icon[str_replace("n","d",$tenki->response->weather[0]["icon"])]);
var_dump($tenki->response);
{
"hokkaido": {
"id": "2130037",
"kenmei": "北海道",
"kenfurigana": "ほっかいどう"
},
"aomori": {
"id": "2130656",
"kenmei": "青森県",
"kenfurigana": "あおもり"
},
"iwate": {
"id": "2112518",
"kenmei": "岩手県",
"kenfurigana": "いわて"
},
"miyagi": {
"id": "2111888",
"kenmei": "宮城県",
"kenfurigana": "みやぎ"
},
"akita": {
"id": "2113124",
"kenmei": "秋田県",
"kenfurigana": "あきた"
},
"yamagata": {
"id": "2110554",
"kenmei": "山形県",
"kenfurigana": "やまがた"
},
"fukushima": {
"id": "2112923",
"kenmei": "福島県",
"kenfurigana": "ふくしま"
},
"ibaraki": {
"id": "2112669",
"kenmei": "茨城県",
"kenfurigana": "いばらき"
},
"tochigi": {
"id": "1850310",
"kenmei": "栃木県",
"kenfurigana": "とちぎ"
},
"gunma": {
"id": "1863501",
"kenmei": "群馬県",
"kenfurigana": "ぐんま"
},
"saitama": {
"id": "1853226",
"kenmei": "埼玉県",
"kenfurigana": "さいたま"
},
"chiba": {
"id": "2113014",
"kenmei": "千葉県",
"kenfurigana": "ちば"
},
"tokyo": {
"id": "1850144",
"kenmei": "東京都",
"kenfurigana": "とうきょう"
},
"kanagawa": {
"id": "1860291",
"kenmei": "神奈川県",
"kenfurigana": "かながわ"
},
"niigata": {
"id": "1855429",
"kenmei": "新潟県",
"kenfurigana": "にいがた"
},
"toyama": {
"id": "1849872",
"kenmei": "富山県",
"kenfurigana": "とやま"
},
"ishikawa": {
"id": "1861387",
"kenmei": "石川県",
"kenfurigana": "いしかわ"
},
"fukui": {
"id": "1863983",
"kenmei": "福井県",
"kenfurigana": "ふくい"
},
"yamanashi": {
"id": "1848649",
"kenmei": "山梨県",
"kenfurigana": "やまなし"
},
"nagano": {
"id": "1856210",
"kenmei": "長野県",
"kenfurigana": "ながの"
},
"gifu": {
"id": "1863640",
"kenmei": "岐阜県",
"kenfurigana": "ぎふ"
},
"shizuoka": {
"id": "1851715",
"kenmei": "静岡県",
"kenfurigana": "しずおか"
},
"aichi": {
"id": "1865694",
"kenmei": "愛知県",
"kenfurigana": "あいち"
},
"mie": {
"id": "1857352",
"kenmei": "三重県",
"kenfurigana": "みえ"
},
"shiga": {
"id": "1852553",
"kenmei": "滋賀県",
"kenfurigana": "しが"
},
"kyoto": {
"id": "1857907",
"kenmei": "京都府",
"kenfurigana": "きょうと"
},
"osaka": {
"id": "1853909",
"kenmei": "大阪府",
"kenfurigana": "おおさか"
},
"hyogo": {
"id": "1862047",
"kenmei": "兵庫県",
"kenfurigana": "ひょうご"
},
"nara": {
"id": "1855608",
"kenmei": "奈良県",
"kenfurigana": "なら"
},
"wakayama": {
"id": "1848938",
"kenmei": "和歌山県",
"kenfurigana": "わかやま"
},
"tottori": {
"id": "1849890",
"kenmei": "鳥取県",
"kenfurigana": "とっとり"
},
"shimane": {
"id": "1852442",
"kenmei": "島根県",
"kenfurigana": "しまね"
},
"okayama": {
"id": "1854381",
"kenmei": "岡山県",
"kenfurigana": "おかやま"
},
"hiroshima": {
"id": "1862413",
"kenmei": "広島県",
"kenfurigana": "ひろしま"
},
"yamaguchi": {
"id": "1848681",
"kenmei": "山口県",
"kenfurigana": "やまぐち"
},
"tokushima": {
"id": "1850157",
"kenmei": "徳島県",
"kenfurigana": "とくしま"
},
"kagawa": {
"id": "1860834",
"kenmei": "香川県",
"kenfurigana": "かがわ"
},
"ehime": {
"id": "1864226",
"kenmei": "愛媛県",
"kenfurigana": "えひめ"
},
"kochi": {
"id": "1859133",
"kenmei": "高知県",
"kenfurigana": "こうち"
},
"fukuoka": {
"id": "1863958",
"kenmei": "福岡県",
"kenfurigana": "ふくおか"
},
"saga": {
"id": "1853303",
"kenmei": "佐賀県",
"kenfurigana": "さが"
},
"nagasaki": {
"id": "1856156",
"kenmei": "長崎県",
"kenfurigana": "ながさき"
},
"kumamoto": {
"id": "1858419",
"kenmei": "熊本県",
"kenfurigana": "くまもと"
},
"oita": {
"id": "1854484",
"kenmei": "大分県",
"kenfurigana": "おおいた"
},
"miyazaki": {
"id": "1856710",
"kenmei": "宮崎県",
"kenfurigana": "みやざき"
},
"kagoshima": {
"id": "1860825",
"kenmei": "鹿児島県",
"kenfurigana": "かごしま"
},
"okinawa": {
"id": "1854345",
"kenmei": "沖縄県",
"kenfurigana": "おきなわ"
}
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2.5, API, APIKEY, appid, class, data, ID, lt, Openweathermap, org, php, pub, public, quot, url, weather, zip, アカウント, アレ, お好み, コード, コピー, ご自由, ズレ, ソース, 下記, 予報, 余談, 作成, 使用, 取得, 可能, 合致, 場合, 変更, 天気, 実行, 情報, 感じ, 正確, 絵文字, 都道府県,
パンくずリストの構造化を変えない人がいるよ。
2020.01.29
Gさんから、data-vocabulary.org schema deprecated のお叱り(警告)が出た方はschema.orgの形式の構造体に変更しなくてはなりません。パンくずリストって何って方はまずググってみてください。以前勤めていた会社はこのパンくずリストを対応しているサイトは見かけませんでした。長いものにはまかれろな会社になっていたので誰も言いたいことが言えなかっただけなのかもしれません。
ちなみにこれを変更することによりGさんの検索サイトに表示される時に表示を目立たさせる効果があります。ちょっとした事ですがクリック率はかなり上がります。対応していないとしているでは雲泥の差があります。
タグコードはこんな感じです。
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
<li itemscope itemprop="itemListElement" itemtype="http://schema.org/ListItem">
<a itemprop="item" href="https://zip358.com">
<span itemprop="name">home</span>
</a>
<meta itemprop="position" content="1" />
</li>
<li itemscope itemprop="itemListElement" itemtype="http://schema.org/ListItem">
<a itemprop="item" href="https://zip358.com/PHP">
<span itemprop="name">php入門</span>
</a>
<meta itemprop="position" content="2" />
</li>
</ol>
SEOは必要ないとは言いません。昔のサイトはコードも古いデザインも古いけど上位表示されているサイトがありますよね。それには理由があります、アクセス数と競合会社がいない、ドメインが古いという事から上位表示されているだけで、SEO対策を行ったサイトが出てきたらそちらが上位表示される恐れがあります。そして一番怖いのは古いサイトは下手にデザイン等や構造を変えると上位表示から転落しますので、ご注意ください!
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
BreadcrumbList, data-vocabulary, deprecated, gt, http, itemscope, itemtype, li, lt, ol, org, quot, schema, お叱り, かなり, クス, クリック, コード, こと, これ, サイト, タグ, パン, もの, リスト, 事, 人, 以前, 会社, 何, 効果, 変更, 対応, 差, 形式, 感じ, 方, 時, 検索, 構造, 構造体, 表示, 誰, 警告, 雲泥,
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, インストール, グーグル, こと, コマンド, サーバ, シート, スプレッド, ソース, 下記, 不可能, 今回, 作成, 値, 処理, 取得, 可能, 変更, 外部, 実行, 情報, 手順, 方法, 表示, 記載, 部分, 関数,
PHP非同期の考え方サンプル。
2019.11.12
非同期の考え方サンプルです。
さて非同期ってなんでしょうか?
非同期とは次から次へと仕事をお願いする状態。
仕事量が重いと結果が返るまで時間がかかります。
なので、Aという仕事が重く、B、Cという仕事が楽な場合は
A、B、Cという仕事を順番に頼んでもAの結果はBの後やCの後に
結果が返ってきます。
逆に同期処理とは何か?
A、B、C の順に仕事を頼むと、Aの仕事が終えた後にB、Cと仕事を
行います。
非同期=並列処理と考えると良いかも。
同期処理=逐次処理と考えると良いかも。
<!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">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<title>Document</title>
<script>
$(function(){
$("#btn").on("click",function(){
test();
return false;
})
});
function test(){
var data = $("#frm").serialize();
$.ajax({
type: "post",
url: "url.php",
data: data,
dataType: "json",
success: function (response) {
console.log(response);
}
});
}
</script>
</head>
<body>
<a href="#" id="btn">クリック</a>
<form id="frm">
<input type="text" name="test1">
<input type="text" name="test2">
<input type="text" name="test3">
</form>
</body>
</html>
<?php
//url.php
$data = [];
if(!is_null($_POST)){
foreach($_POST as $key=>$val){
$data[$key] = $val;
}
print(json_encode($data));
}else{
print(0);
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
65, 8, charset, com, DOCTYPE, en, gt, head, html, lang, lt, meta, name, php, quot, UTF-, VHlW, WPUDY, youtube, お願い, サンプル, 並列, 仕事, 何, 処理, 同期, 場合, 後, 時間, 次, 状態, 結果, 考え方, 逆, 順, 順番,
あるキーワードをライクするTwitter API。
2019.11.06
さくらレンタルサーバー、もともとmecab(メカブ)が入っているらしい。
自動であるキーワードに対してライクする方法(Twitter API)です。
たぶん、こんなコードはなかったと思います、
過去記事「ワードプレス過去記事のツイートをボット化する方法。」と併用してお使いください。
そうでないと動きませんので…。
知り合いエンジニアさんとかに組み込んでもらってください。
<?php
function mecab_tw_like($txt="",$connection=Null){
if(!$txt)return false;
if(!is_object($connection))return false;
$cmd = "echo "$txt" | mecab";
exec($cmd, $opt, $return_ver);
//var_dump($opt);
foreach($opt as $key=>$val){
$r = explode("t",$val);
if(preg_match("/名詞/",$r[1])){
$statuses = $connection->get(
'search/tweets',
array(
'q' => $r[0],
'count' => '3',
'lang' => 'ja',
'locale' => 'ja',
'result_type' => 'recent',
'include_entities' => 'false'
)
);
if(is_array($statuses->statuses) and $statuses->statuses){
foreach( $statuses->statuses as $tweet ){
$id = $tweet->id;
$result = $connection->post(
'favorites/create',
array(
'id' => $id
)
);
}
}
}
}
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
API, cmd, connection, echo, exec, false, function, if, is, like, lt, Mecab, null, object, opt, php, quot, return, tw, Twitter, txt, ver, エンジニア, キーワード, コード, サーバー, さくら, ツイート, プレス, ボット, メカブ, ライク, レンタル, ワード, 併用, 方法, 自動, 記事, 過去,