@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
松岡茉優さんが歌う『どんなときも。』が好きです。
2020.03.16
松岡茉優さんが歌う『どんなときも。』が好きです。上手いかというよりは何気ないから好きなのかもしれないなと。ある意味非売品ですよね…商品化していない歌声です。普通に売り出したら松岡茉優さんなら、買う人はいると思うですけどね。ちなみにYOUTUBEから音源を取り出すサービスがあるそうですが、それほど難しい事ではないです。エンジニアならコマンドで何とかなるレベルです。
ちなみにYOUTUBEをダウンロードするソースコードみたいなのは以前、ブログで記載したと思います。あのソースコードをコマンド用に直すと使いやすいかもしれません。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
youtube, エンジニア, コード, コマンド, サービス, ソース, ダウンロード, どんなときも。, ブログ, レベル, 事, 人, 以前, 商品, 意味, 普通, 松岡茉優, 歌声, 記載, 非売品, 音源,
株式会社ディーアンドジーネクストのサービスをリバースエンジニアリングした?
2020.03.13
高知県にあるディーアンドジーネクスト社には上記のサービスがあります、これは自分でも作れそうだと思い試した所できました。ソースコード公表は営業妨害になるので、掲載しませんが考え方は至ってシンプルです。翻訳したデータをパラメーターに付与して飛ばすだけです。
アイディアはとても面白いと感じたのだけど、これはパクれるかなと思いました。ちなみに翻訳APIを無料で使用する方法を見て作りました。いまは動かないようにしています。見た目はこんな感じになります(上記の画像)。
https://zip358.com/tool/demo10/ 動作はしません?処理部分秘密?
参考サイト
https://qiita.com/satto_sann/items/be4177360a0bc3691fdf
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, 358, API, com, demo, https, tool, zip, アイディア, いま, エンジニアリング, コード, これ, サービス, サイト, シンプル, ソース, データ, ディーアンドジー, ネクスト, パラメーター, リバース, 上記, 付与, 使用, 公表, 処理, 動作, 参考, 営業, 妨害, 感じ, 所, 掲載, 方法, 株式会社, 無料, 画像, 秘密, 翻訳, 考え方, 自分, 見た目, 部分, 高知県,
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, いかが, イベント, かな, コード, スパン, ソフト, ため, ところ, 下記, 人, 処理, 引数, 技術, 方, 方法, 業界, 気, 皆さん, 紐, 自分, 記述, 逆,

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, お話, きっかけ, コード, ここ, こと, ソース, バインド, もの, 下記, 人, 何, 余談, 全て, 前, 前々, 対応, 導入, 接続, 改修, 時, 理由, 職場, 記述,
?Ponanza(ポナンザ)の作成者さんが作ったお天気のアレを真似たひとり用。
2020.02.22
Ponanza(ポナンザ)の作成者さんが作ったお天気のアレを真似たひとり使用?ものです。下記のものを作りました。開発者の場合、自分で作りたい衝動にかられると思います。まんまと駆られて作りました…なので考え方をお裾分けです。今までQiitaで公開したソースコードも必要になりますので、リンクを貼っときます。そしてメインのソースコードは下記になります( Twitterのoauthライブラリを呼び出しが必要になります。 )。
※個人の開発者様用なので位置情報は引っ張って来てません、天気の都道府県を変更されるか、Twitterの位置情報を使用し天気のAPIへ投げるなりしてください(本家はIP情報から位置情報を特定しようとしているようです)。乱暴な説明ですが駆け出しのプログラマーじゃない限りできると思います。
本家はこちら
https://note.com/issei_y/n/ne128a0cf27ca
追記:ソースコードをComposerで使用できるようにしました。
https://qiita.com/zip358com/items/8c1a128e24cc33ca7ca7
composer require zip358/tw_name_change
<?php
require_once ("vendor/autoload.php");
require_once ("moon.php");
require_once ("tenki.php");
use Abraham\TwitterOAuth\TwitterOAuth;
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$user_data=$connection->get("users/show",["screen_name"=>$user_screen_name]);
$name = $user_data->name;
date_default_timezone_set('Asia/Tokyo');
$icons = moon::$icon + tenki::$icon + array("@"=>"@");
$year = date("Y");
$mon = (int)date("m");
$day = (int)date("d");
$H = (int)date("H");
if($H>=6 and $H<=17){
tenki::main();
tenki::$url = "https://api.openweathermap.org/data/2.5/weather?id=".tenki::$ken->kochi["id"]."&appid=".tenki::$appid;
tenki::api();
$chg = tenki::$icon[str_replace("n","d",tenki::$response->weather[0]["icon"])];
}else{
moon::main($year,$mon,$day);
$chg = moon::icon();
}
foreach($icons as $key=>$val){
if(preg_match("/$val/",$name)){
$hit = $val;
}
}
$name = str_replace("$hit",$chg,$name);
$connection->post("account/update_profile", ["name" =>$name]);
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 128, 27, API, ca, cf, com, https, IP, issei, ne, note, oauth, Ponanza, qiita, Twitter, アレ, お裾分け, コード, こちら, ソース, ひとり, ひとり用, プログラマー, ボナンザ, メイン, もの, ライブラリ, リンク, 下記, 位置, 作成者, 使用, 個人, 公開, 場合, 変更, 天気, 必要, 情報, 本家, 特定, 考え方, 自分, 衝動, 説明, 都道府県, 開発者, 限り, 駆け出し,
NTTのCOTOHA API(コトハAPI)でWordPressの自動タグ生成プラグインを作ってみた。
2020.02.20
GUIはこんな感じになります。
jp-auto-tagというプラグインをYahoo!APIを使用し作っていましたが
何だか、バージョンが変わるらしくてその対応するのが…。コトハAPIで同じ感じのものを作ってみました。
面倒くさいなぁと感じたので
尚、jp-auto-tagを使用している方はjp-auto-tagを停止してjp-auto-tag2をご使用ください。また圧縮ファイルを解凍しワードプレスのプラグインフォルダにフォルダごと、アップロードしプラグイン有効にしAPIの設定すると自動タグが生成可能です。
ブログ投稿時にタグが自動生成されますので、確認の際は画面を再読み込みしてご確認ください。
尚、オプションデータは残り続けますので悪しからず?
プラグインのソースコードはこんな感じになります。
<?php
/*
Plugin Name: jp-auto-tag2
Version: 0.1.10
Description: auto jp tag2
Author: taoka toshiaki
Author URI: https://zip358.com/
Plugin URI: https://zip358.com/plugin/jp-auto-tag2.zip
*/
class jp_auto_tag2
{
public $db_option = "jp_auto_tag2";
function frm_page2()
{
add_menu_page('jp-auto-tag2', 'jp-auto-tag2', 'manage_options', __FILE__, array($this, 'show_text_option_page2'), '', 8);
}
function show_text_option_page2()
{
wp_enqueue_style('bootstrap', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css', array(), '3.3.6');
wp_enqueue_script('bootstrap', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js', array(), '3.3.6');
$options = get_option($this->db_option);
if (!empty($options)) {
$Access_Token_Publish_URL = $options["Access_Token_Publish_URL"];
$API_Base_URL = $options["API_Base_URL"];
$Client_ID = $options["Client_ID"];
$Client_secret = $options["Client_secret"];
$max_keyword_num = $options["max_keyword_num"];
}
include_once dirname(__FILE__) . '/jp-auto-tag-tmp2.php';
}
function ajax_event2()
{
$options["max_keyword_num"] = $obj["max_keyword_num"] = (int)$_POST["max_keyword_num"]<5?5:(int)$_POST["max_keyword_num"];
$options["Access_Token_Publish_URL"] = $obj["Access_Token_Publish_URL"] = $_POST["Access_Token_Publish_URL"];
$options["API_Base_URL"] = $obj["API_Base_URL"] = $_POST["API_Base_URL"];
$options["Client_ID"] = $obj["Client_ID"] = $_POST["Client_ID"];
$options["Client_secret"] = $obj["Client_secret"] = $_POST["Client_secret"];
update_option($this->db_option, $options);
print json_encode($obj);
die(0);
}
function api_tag2($post_id)
{
$cuthttp = function ($str = "") {
if (!$str) return $str;
return preg_replace("/https?:\/\/[a-zA-Z0-9|%|\?|_|=|-|\.|\/]*$/m", "", $str);
};
$post = get_post($post_id);
$title = $post->post_title;
$content = strip_tags($post->post_content);
$document = $title . $cuthttp($content);
$options = get_option($this->db_option);
if ($options["Access_Token_Publish_URL"] && $options["Client_ID"] && $options["Client_secret"]) {
$curl = function ($ptn, $options, $token = "", $token_type = "", $document = "") {
switch ($ptn) {
case "token":
$data = [
'grantType' => 'client_credentials',
'clientId' => $options["Client_ID"],
'clientSecret' => $options["Client_secret"],
];
$header = [
'Content-Type: application/json;charset=UTF-8',
];
$url = $options["Access_Token_Publish_URL"];
break;
case "tag":
$data = [
'document' => $document,
'max_keyword_num'=>$options["max_keyword_num"],
];
$header = [
'Authorization: ' . ucfirst($token_type) . ' ' . $token,
'Content-Type: application/json;charset=UTF-8',
];
$url = rtrim($options["API_Base_URL"],"/")."/nlp/v1/keyword";
break;
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
$res = (object)json_decode($body, true);
curl_close($curl);
return $res;
};
$res = $curl("token", $options);
$access_token = $res->access_token;
$token_type = $res->token_type;
if ($options["API_Base_URL"] && $document && $access_token){
$res = $curl("tag", $options, $access_token, $token_type, $document);
foreach($res->result as $key=>$val){
$tags[] = $val["form"];
}
wp_set_post_tags($post_id, implode(",", array_unique($tags)), false);
}
}
}
}
$jp_auto_tag2 = new jp_auto_tag2();
add_action('save_post', array($jp_auto_tag2, 'api_tag2'));
add_action('publish_post', array($jp_auto_tag2, 'api_tag2'));
add_action('admin_menu', array($jp_auto_tag2, 'frm_page2'));
add_action('wp_ajax_ajax_event2', array($jp_auto_tag2, 'ajax_event2'));
<form id="ajax-frm">
<table class="table">
<tr>
<td>
プラグイン説明:jp-auto-tag2はapi.ce-cotoha.comのAPIを<br>
使用し投稿文を解析しキーワードをタグを抽出します。<br>
</td>
</tr>
<tr>
<td>
<a href="https://api.ce-cotoha.com/contents/index.html" target="new">https://api.ce-cotoha.com/contents/index.html</a><br>
上記のURLよりユーザー登録を行いAPI情報をそれぞれ入力ください。全て必須項目になります。
</td>
</tr>
<tr>
<td>
Access Token Publish URL:<br>
<input type="text" name="Access_Token_Publish_URL" value="<?=$Access_Token_Publish_URL?>" class="form-control">
</td>
</tr>
<tr>
<td>
API Base URL:<br>
<input type="text" name="API_Base_URL" value="<?=$API_Base_URL?>" class="form-control">
</td>
</tr>
<tr>
<td>
Client ID:<br>
<input type="text" name="Client_ID" value="<?=$Client_ID?>" class="form-control">
</td>
</tr>
<tr>
<td>
Client_secret:<br>
<input type="text" name="Client_secret" value="<?=$Client_secret?>" class="form-control">
</td>
</tr>
<tr>
<td>
抽出するキーワード(タグ数)5以上:<br>
<?php
$max_keyword_num = (int)$max_keyword_num<5?5:$max_keyword_num;
?>
<input type="text" name="max_keyword_num" value="<?=$max_keyword_num?>" class="form-control">
</td>
</tr>
<tr>
<td colspan="2"><input type="button" id="frmsubmit" value="登録する" class="form-control"></td>
</tr>
</table>
</form>
<script>
jQuery(function($){
$("#frmsubmit").on("click",function(){
var ajaxurl = '<?=admin_url( 'admin-ajax.php');?>';
var data = $("#ajax-frm").serializeArray();
data.push({name:"action",value:"ajax_event2"});
$.ajax({
type:'POST',
url:ajaxurl,
data:data,
success:function(obj){
console.log(obj);
alert("更新しました");
}
});
});
})
</script>
プラグインダウンロードはこちら
https://zip358.com/plugin/jp-auto-tag2.zip
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, API, COTOHA, GUI, jp-auto-tag, lt, name, NTT, php, plugin, WordPress, Yahoo, アップロード, オプション, コード, ことば, ご確認, ソース, タグ, データ, バージョン, ファイル, フォルダ, プラグイン, プレス, ブログ, もの, ワード, 使用, 停止, 可能, 圧縮, 対応, 感じ, 投稿, 方, 有効, 生成, 画面, 確認, 自動, 自動生成, 解凍, 設定, 際,
天気予報を取得するアレを使用してみた(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, アカウント, アレ, お好み, コード, コピー, ご自由, ズレ, ソース, 下記, 予報, 余談, 作成, 使用, 取得, 可能, 合致, 場合, 変更, 天気, 実行, 情報, 感じ, 正確, 絵文字, 都道府県,

vue.jsとreact.jsをお触りしているのですが?。
2020.02.13
vue.jsとreact.jsをお触りしてみて、どちらが難しいかといえばreact.jsかなと思いますが、すごく難しいわけでもない。vue.jsはjqueryがサクサク使えていて概念も大体把握していて、オリジナルプラグインも作れるよという方にはそれほど難しいとは感じないと思います。vue.jsの概念さえ理解できればあとは、vue.jsの仕様やドキュメントみれば、慣れれば使いこなす事は簡単だと思います。
react.jsは、JSXの事をちゃんと理解すれば使いこなす事はまぁ可能かなと思います。いま、web業界ではreact.jsとかゴニョゴニョ使える人が重宝されるみたいですよ。というか、もうjqueryとかオワコンと都会では業界人が言ってそうですね。ただ、そんな古いコードが田舎では動いてますし田舎の零細企業では、未だにIEの事をいう人がいる。そろそろIEの呪いから解き放たれたいですね…。マイクロソフトはいまの社長さんになってかなりマイクロソフト変わったのでWEB業界では、有り難い存在だと自分は勝手に思ってます。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
IE, jquery, JS, JSX, react, vue, web, あと, いま, オリジナル, オワコン, かな, コード, ゴニョゴニョ, ドキュメント, どちら, プラグイン, マイクロソフト, わけ, 事, 人, 仕様, 企業, 可能, 呪い, 大体, 把握, 方, 業界, 業界人, 概念, 理解, 田舎, 社長, 簡単, 都会, 重宝, 零細,
知ってます?ちょいWINDOWS10便利機能。IT関係者は!
2020.02.10
知ってます?ちょいWINDOWS10便利機能。IT関係者は知っているひと多めです、逆に知らないのが少ないぐらいかなと思います。あのカズさんも知ってます。ちなみに仮想デスクトップは1画面の時はとても重宝しますね。これが出来るようになってかなり感激でした。
実際、WIN+CTR+Dはとても良いですよ!コード作業用とかデバック用とか切り替えるとさっと確認できるのはとても良いです。ただ、自分は3画面を使っているので仮想デスクトップはあまり使用していません。会社は2画面だったのでたまに使用したりしていました。ついでに吉田さんの動画も載せときますね。圧縮系の話は良い感じかな。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 10, 2, 3, CTR, IT, win, Windows, カズ, かなり, コード, これ, たま, デスクトップ, デバッグ, 仮想, 会社, 作業, 使用, 便利, 動画, 吉田, 圧縮, 多め, 実際, 感激, 時, 機能, 画面, 確認, 自分, 話, 逆, 重宝, 関係者,
システムエンジニアの1日を撮ったvlog(one day)
2020.01.30
システムエンジニアの1日を撮ったvlogが海外では流行っていたのか、結構検索するとヒットする、大手のIT企業で働いている人もvlogを撮っているので興味のある方は視聴してみてはどうだろうかと。日本の場合、IT企業が宣伝目的で撮ったvlogは結構あるものの、個人が自分の1日を撮った動画はかなり少ない。これが日本と海外の差でもあるなと感じました。
見ていただけると分かる通り、やっていることはそこらにいるシステムエンジニアやプログラマーと変わりはあまり無い、ただ、そこに書かれているコード内容が違う、そして一番違うのは彼らの働いている環境がブラックIT企業とは、雲泥の差があるという事だ。彼らと同じような環境に近づけたいのならば、フリーランスのエンジニアとして働くのが一番理想に近くなる可能性が高いが、全責任は自分自身に降りかかるので、そこだけは注意したほうが良さげ。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-brF, 1, 6, com, day, IT, one, SUXbns, Vlog, youtube, エンジニア, かなり, コード, こと, これ, システム, そこ, そこら, ヒット, ブラック, フリー, プログラマー, ランス, 事, 人, 企業, 個人, 内容, 動画, 可能性, 場合, 大手, 宣伝, 差, 彼ら, 方, 日本, 検索, 海外, 理想, 環境, 目的, 自分, 自身, 興味, 視聴, 責任, 通り, 雲泥,
パンくずリストの構造化を変えない人がいるよ。
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, お叱り, かなり, クス, クリック, コード, こと, これ, サイト, タグ, パン, もの, リスト, 事, 人, 以前, 会社, 何, 効果, 変更, 対応, 差, 形式, 感じ, 方, 時, 検索, 構造, 構造体, 表示, 誰, 警告, 雲泥,
試行錯誤と思考、自分の頭の中。
2020.01.29
昨日、YOUTUBEにPHPの解説動画をUPしたのだけど、意外にも再生されていて驚き。唯、自分は文章で解説するの方がまだ得意なんだけど、喋るのは非常に下手で苦手分野、そして情報量が足りないなと思っている。これでは素人はわからないかもしれないと思いつつUPしていきます。コツを掴んだら再度取り直します。いまの自分のスキルだと上達するのに3年ぐらいは必要かなと思います。
ちなみにプログラミングは誰かに教えてもらった事がないので、スキルが欠損しているところがあるかもしれません。上司が居たけれどその人からは何一つ教えてもらった事がないので本当に独学なんですね。自分が簡単と思っていることが皆には難しいことがあるかもしれません。自分はプログラミングすることがとても簡単だったのであまり苦労した経験がないのです。長いコードや他人のコードを多く読むことがプログラミングの上達のひとつの手段かもしれないと思っています。またPHPの関数を全て覚えるなどはしなくて良いです。そういう所はググると出てきます。プログラミングで大事な所はプログラミング思考を身につけることだと思います。それが出来ればどんなプログラミングもこなせるようになると思います。
追記:動画再生回数について
水回しされていたようでした。35歳ー44歳男性。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
3, php, UP, youtube, いま, コード, コツ, こと, これ, スキル, ところ, ひとつ, プログラミング, 上司, 上達, 中, 事, 人, 他人, 全て, 再度, 再生, 分野, 動画, 得意, 必要, 思考, 情報, 手段, 文章, 方, 昨日, 本当, 欠損, 独学, 皆, 簡単, 素人, 経験, 自分, 苦労, 苦手, 覚, 解説, 試行錯誤, 誰か, 関数, 頭,
テキストを日本語ボイスに変換してくれるしょぼいWindowsソフトを作ったよ。
2020.01.21
VS2017のC#で、テキストを日本語ボイスに変換してくれるしょぼいWindowsソフト( 滑舌が悪いけどYOUTUBERしたい人用)を作ったよ。自分はかなり滑舌悪いくてどもるので、YOUTUBER向かないのですがユーチューバーしてみたい願望があったので、Gさんの「Cloud Text-to-Speech API」で適当に作ってみた。ちなみにまだYOUTUBERするかは決めてない!
APIですが月に0?100万文字までは無料枠なので、大量に使わない限り無料枠で収まると思います。これを他の人に提供しようとするとアウトだろうけど・・。
自分だけが使用するのには何とかその範囲内かと思います。
尚、ソースコードを提供します可変してお好みで使ってください。大量のテキストをボイス変換した場合、ビジーになるかもしれません。そこら辺の処理は入れてません。またGさんからダウンロードしたJSONファイルを置いている階層に合わしてください。
参考にしたサイトは下記になります。
https://cloud.google.com/text-to-speech/docs/quickstart-client-libraries?hl=ja#client-libraries-install-csharp
フォームのオブジェクトの配置は下記になります。画像を参照ください。
ソースコードは下記になります。
using System;
using System.IO;
using System.Windows.Forms;
using Google.Cloud.TextToSpeech.V1;
namespace テキストを日本語ボイスする
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if(richTextBox1.Text.Replace("\r", "").Replace("\n", "") == "")
{
MessageBox.Show("文字を入力してください");
return;
}
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "C:\\xxxxx\\xxxxx\\xxxxx\\xxxxx.json", EnvironmentVariableTarget.Process);
TextToSpeechClient client = TextToSpeechClient.Create();
SynthesisInput input = new SynthesisInput
{
Text = richTextBox1.Text.Replace("\r", "").Replace("\n", "")
};
VoiceSelectionParams voice = new VoiceSelectionParams
{
LanguageCode = "ja-JP",
Name = "ja-JP-Wavenet-A",
SsmlGender = SsmlVoiceGender.Neutral,
};
AudioConfig config = new AudioConfig
{
AudioEncoding = AudioEncoding.Mp3,
SpeakingRate = f1(trackBar1.Value),
Pitch = f2(trackBar2.Value),
};
var response = client.SynthesizeSpeech(new SynthesizeSpeechRequest
{
Input = input,
Voice = voice,
AudioConfig = config
});
DateTime dt = DateTime.Now;
string dttimename = dt.ToString("yyyy-MM-dd-HH-mm-ss");
using (Stream output = File.Create("voice-" + dttimename + ".mp3"))
{
response.AudioContent.WriteTo(output);
Console.WriteLine($"Audio content written to file 'voice - " + dttimename + ".mp3'");
MessageBox.Show("生成しました=>>voice - " + dttimename + ".mp3");
System.Diagnostics.Process.Start(Directory.GetCurrentDirectory());
}
}
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
label3.Text = string.Format("{0:0.00}", f1(trackBar1.Value));
}
private void trackBar2_ValueChanged(object sender, EventArgs e)
{
label4.Text = string.Format("{0:0.00}", f2(trackBar2.Value));
}
private double f1(int a) {
return Convert.ToDouble(a) / 100;
}
private double f2(int a)
{
return Convert.ToDouble(a) - 20;
}
}
}
変換したボイスはこんな感じです!
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 100, 2017, API, Cloud, json, Text-to-Speech, VS, Windows, YOUTUBER, アウト, お好み, かなり, コード, これ, ソース, そこら辺, ソフト, ダウンロード, テキスト, ビジー, ファイル, ボイス, ユーチューバー, 万, 人, 他, 使用, 処理, 場合, 変換, 大量, 提供, 日本語, 月, 枠, 滑舌, 無料, 範囲, 自分, 適当, 限り, 願望,

WEBお問い合わせフォームのお値段はいったい幾ら?
2020.01.17
WEBお問い合わせフォームのお値段はいったい幾らなのか?
堀江貴文氏はデジタルの値段は限りなくゼロに近くなると言っていたけど、無料のWEB申し込みフォームやお問い合わせフォームはある。自分もお問い合わせフォームの簡易的な物を作ってみましたのでファイルをアップしますね。
テンプレートエンジンとしてtwig3.0を使用しています、そのため動作環境はPHP7.2以上になります。ソースコードの可変は行って構いません、またこのソースコードの動作保証などは致しません。WEB担当者様が確認を行いバグ等があれば修正を行ってください。
尚、Composerでtwigをインストール済みという事が前提となります。また送信部分やエラー処理についてはご自身で機能の追加が必要となります。
サンプルページ
https://zip358.com/tool/request/
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>お問い合わせ</title>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
crossorigin="anonymous"></script>
<script src="js/common.js"></script>
<style>
.jumbotron {
background-color: #2bd4d0;
color: #fff;
}
.btn-primary {
color: #fff;
background-color: #2bd4d0 !important;
border-color: #2bd4d0 !important;
}
.input-group-text {
background-color: #2bd4d0;
border: 1px solid #2bd4d0;
}
</style>
</head>
<body>
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4">お問い合わせ</h1>
<p class="lead">必須項目を入力し送信ボタンを押してください。<br>DEMOのため送信はできません</p>
</div>
<div class="alert alert-warning" id="error_sendmail" role="alert">
</div>
</div>
<form action="index.php" method="POST">
<div class="container">
<div class="row">
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">お名前[必須]</span>
</div>
<input type="text" name="name" class="form-control" id="name" placeholder="name" value="{{name}}">
</div>
<div class="alert alert-warning" id="error_name" role="alert">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">メールアドレス[必須]</span>
</div>
<input type="email" name="email" class="form-control" id="email" placeholder="name@example.com"
value="{{email}}">
</div>
<div class="alert alert-warning" id="error_email" role="alert">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon1">@</span>
</div>
<input type="text" name="twitter_account" class="form-control" placeholder="twitter account"
aria-label="twitter account" aria-describedby="basic-addon1" value="{{twitter_account}}">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">お問い合わせ内容[必須]</span>
</div>
<select name="meun" class="form-control" id="exampleFormControlSelect1">
{% for selectop in meun_option %}
<option value="{{selectop.value}}" {{ selectop.value == selectoped ? " selected":"" }}>
{{selectop.name}}</option>
{% endfor %}
</select>
</div>
<div class="alert alert-warning" id="error_meun" role="alert">
</div>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">コメント[必須]</span>
</div>
<textarea name="comment" rows="10" class="form-control" aria-label="コメント">{{comment}}</textarea>
</div>
</div>
<div class="row">
<footer class="blockquote-footer">
<small class="text-muted">
ご自由に記入ください。
</small>
</footer>
</div>
<div class="alert alert-warning" id="error_comment" role="alert">
</div>
<button type="submit" class="mt-2 btn btn-primary btn-lg btn-block">送信する</button>
</div>
</form>
</body>
</html>
<?php
session_start();
require __DIR__ . '/vendor/autoload.php';
use Twig\Environment;
use Twig\Loader\FilesystemLoader;
$loader = new FilesystemLoader(__DIR__.'/templates');
$twig = new Environment($loader);
$meun_option = json_decode(file_get_contents("js/select.json"));
$form = ["name","email","twitter_account","meun","comment"];
$data = [];
if($_POST){
foreach($_POST as $key=>$val){
$_SESSION[$key] = strip_tags($val);
}
}
if($_SESSION){
foreach($_SESSION as $key=>$val){
$_SESSION[$key] = strip_tags($val);
}
}
foreach($form as $key => $val){
$data[$val] = $_SESSION[$val]?$_SESSION[$val]:"";
}
extract($data);
print $twig->render('index.html.twig',["name"=>$name,"email"=>$email,"twitter_account"=>$twitter_account,"selectoped"=>$meun,"comment" => $comment,"meun_option"=>$meun_option]);
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
3.0, 358, 7.2, com, Composer, DOCTYPE, gt, html, https, lt, php, request, tool, Twig, web, www, zip, アップ, インストール, エラー, エンジン, お問い合わせ, コード, ご自身, サンプル, ゼロ, ソース, ため, デジタル, テンプレート, バグ, ファイル, フォーム, ページ, 事, 使用, 保証, 修正, 値段, 処理, 前提, 動作, 堀江貴文, 幾ら, 必要, 担当者, 機能, 無料, 物, 環境, 確認, 簡易的, 自分, 追加, 送信, 部分,

YAGNI(ヤグニ)の法則、余計な機能を付けるな!
2020.01.14
YAGNI(ヤグニ)の法則とはYou Aren’t Going to Need it.の略で
日本語に訳すと「余計な機能を付けるな!」という意味になります。
IT関係者なら聞いたことがあるかもしれない、プログラミングで後々使うかもしれないから、この機能も眠らして置こうと思って置いているコードは1割ぐらい確率でしか使わないから余計なプログラミングコードは書かない方が良いよと言うことであってますかね🤔。
詳しい内容はウィキペディアに書かれていますので参照ください。
https://ja.wikipedia.org/wiki/YAGNI
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, Aren't, Going, IT, Need, To, YAGNI, You, ウィキペディア, コード, こと, プログラミング, ヤグニ, 余計, 内容, 参照, 後々, 意味, 方, 日本語, 機能, 法則, 略, 確率, 関係者,
プログラミングって何から勉強したら良いの?パソコンが有れば無料で勉強できる方法。
2020.01.11
プログラミングって何から勉強したら良いの?
答えは通称js(ジェーエス)と呼ばれるjavascript(ジャバスクリプト)言語から
始めると良いです^_^。
ちなみにプログラミンスクールに通う必要なんてないです。
偏差値50ぐらい有れば独学で身につくことが出来ると言われています。
自分を知っている人ならあいつでも出来るなら私でも出来ると思って
トライしてみてください。
繰り返しになりますが、参考書などは買わなくて良いです。
下記の方法で勉強してみてください。
- YOUTUBE動画を見る。
- 動画に記載しているプログラムを実際に同じコードを書いてみる。
- 動作したらプログラムコードを変更してみる。
- 一旦、プログラムコードを消して今度は記述コードを見ないで書いてみる。
- コードがわからない時は動画を見ずにググる。
上記のことを繰り返しすることで何だかわからないけど、感覚的に身につくはずです。難しい横文字などは後から覚えたら良いです。
JavaScriptを解説している動画リンクを貼っておきます。
動画のリンク切れあった場合はYOUTUBEで JavaScript 入門などの単語で検索してみてください。
入門解説動画:何となく進めるが大事です。
エラーになった時の対処方法:デバッグ方法。
中級者JSテクニック動画。
尚、プログラムコードを書く場合、大体のプログラマーはエディターやIDEを
使用してプログラミングコードを記載します。
自分はVisualStudio codeを使用しています。
こちらWindowsやMac、リナックスのOSにそれぞれ対応しています。
https://code.visualstudio.com/ [日本語化出来ますググって]
補足:今でもC言語などやJAVA言語から初めると良いよと言われますが
おそらくC言語で始めるとメモリの事などで挫折しJAVA言語で始めると
オブジェクトで挫折します。
JSで始め、大体の事をマスターすると他のプログラミング言語へ
移行しやすいです。いろいろな言語を覚えるのではなく。
まずは一つの言語をマスターする事が大事になります。
皆さんトライしてみてくださいね(・(ェ)・)b
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
50, javascript, JS, youtube, あいつ, エス, コード, こと, ジェー, ジャバ, スクール, スクリプト, トライ, パス, パソコン, プログラミン, プログラミング, プログラム, 一旦, 上記, 下記, 人, 今度, 何, 偏差値, 勉強, 動作, 動画, 参考書, 変更, 実際, 必要, 方法, 時, 横文字, 無料, 独学, 私, 答え, 自分, 言語, 記載, 記述, 身, 通称,
一時間に一回だけAPIを実行するPHPのオブジェクトファイル
2020.01.10
あるユーザーが公開しているプログラミングを参考にして
オブジェクト化してみた。
参考にしたサイトのリンクは下記になります。
phpでapiを切りの良い時刻までキャッシュする
尚、動作環境はPHP5.6以上になります、と言いつつ
動作テストは行っていないので、もしかしたらエラーで動かないかも?
動作内容はJSONファイルの更新時間( hour )と
サーバの 時間 ( hour ) を比べ差異があれば
APIを呼び出し結果をJSONファイルとして上書き保存します。
そのため、一時間に一回だけ更新処理が走ります。
(※CRONで設定していれば)
結果がJSONで返ってこない場合などは可変して頂いて構いません。
もともと自分の案でもないので…。
PHPファイルのダウンロードはこちらから
https://zip358.com/tool/timeKeeper/timeKeeper.zip
ソースコードはこちらになります(* ̄(エ) ̄*)
<?php
class timeKeeper{
public static $json_filename = "abc.json";
public static $json_api_url = "https://example.com/api/?v=1.333";
public static function judge(){
$server_timestamp = time();
$server_time = date('Y/m/d H',$server_timestamp);
$json_timestamp = filemtime(self::$json_filename);
$json_time = date('Y/m/d H',$json_timestamp);
return $server_time === $json_time ? true : false;
}
public static function api_run($opts=null){
if(is_null($opts))return false;
$context = stream_context_create($opts);
$json = file_get_contents(self::$json_api_url, false, $context);
$fp = fopen(self::$json_filename, "w");
fwrite($fp,$json);
fclose($fp);
return self::json_load();
}
public static function json_load(){
$json = file_get_contents(self::$json_filename);
return json_decode($json, true);
}
public static function check(){
if(file_exists(self::$json_filename)){
return self::judge();
}
return false;
}
}
///使用例
if(timeKeeper::check()){
$json = timeKeeper::json_load();
}else{
$opts = array(
"http"=>array(
"method" => "POST",
"header" => "User-Agent: php"
)
);
$json = timeKeeper::api_run($opts);
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5.6, API, class, cron, hour, json, lt, php, public, timeKeeper, エラー, オブジェクト, キャッシュ, コード, こちら, サーバ, サイト, ソース, ダウンロード, ため, テスト, ファイル, プログラミング, ユーザー, リンク, 一, 上書き, 下記, 保存, 公開, 内容, 処理, 動作, 参考, 場合, 実行, 差異, 時刻, 時間, 更新, 案, 環境, 結果, 自分, 設定,
さくらレンタルサーバーで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, アップロード, インストール, お願い, コード, サーバー, さくら, ダウンロード, バックアップ, ファイル, フォルダ, プログラム, ベーシック, メール, ルート, レンタル, 上記, 何, 動作, 名, 場合, 変更, 外部, 完了, 容易, 対応, 担当者, 支援, 環境, 発生, 設定, 設置, 認証, 部分, 階層, 際, 駆け出し,
面白くないような内容が実は人生を楽にするじゃないかな?
2019.12.16
たぶん、普通の人は娯楽番組などをみるのが楽しいじゃないかなと
思います。自分は娯楽番組は全然見ない、見なくなった理由は
面白くあまり感じないから、
それよりテクノロジーなどの番組を見るほうが面白く感じます。
人工知能に興味のある方は上記の動画をみると初心者でも
ある程度、プログラムのことが分かっている方なら
サンプルコードなどを実行できたりします。
話戻しまして、何故、、、娯楽番組が面白くないのか
よくわからないのですが・・・そういう性なのかなと思います。
自分が作ったものが動くというのは結構面白いですよ。
これからプログラムを学ぶ方は自分が作りたいものが掲載している本などや
YOUTUBE動画などの解説しているものを探し出して
トライしてみると良いかもしれません。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
youtube, コード, こと, これ, サンプル, それ, テクノロジー, トライ, プログラム, もの, 上記, 人, 人工, 人生, 内容, 初心者, 動画, 娯楽, 実行, 性, 掲載, 方, 普通, 本, 理由, 番組, 知能, 自分, 興味, 解説,

ワードプレス電光掲示板プラグインを作りました。
2019.12.05
電光掲示板(お知らせ)のプラグイン取扱に関して記載します。
プラグインに関してはワードプレス5.2以降を推奨としテーマファイル(外観)のheader.phpのbody直下に下記の記述が存在しない場合は追加記述を
お願いいたします。
<?php wp_body_open();?>
尚、プラグインのソースコードはご自由に変更頂き二次配布も構いませんが
ひとつ注意事項があります。参照した記事にリンクを貼ってください、
なお、事前の連絡等入りません。
電光掲示板(お知らせ)のソースコードは下記になります。
現在、テキストはHTMLタグを許していますので、いろいろと自由に
変更することが可能かと思います。
ちなみにこういった電光掲示板みたいな流れる仕様のコードは
インターネットの初期のころは多く見られましたが
このごろは全然、見なくなりましたね。。。
CSSの記述に関してはとくめいさんの記述を使用させて頂きました。
https://creatorclip.info/2014/06/css3-electric-bulletin-board/
とくめいさんも同じようなことを記事に記載しておりますが
自分もそのように感じました。
とくめいさんへ断りもなく使用してすみません、
Twitterで連絡しようかなと思ったのですが、それもなんだかと思い
勝手ながらこのような手段を取りました。
お知らせ(電光掲示板)のダウンロードは下記になります。
下記のファイルを解凍しワードプレスのプラグイン領域にフォルダごと
アップロードしプラグインを有効にするとご使用頂けます。
https://zip358.com/plugin/Z-Electric-bulletin-board.zip
<?php
/*
Plugin Name: Z-Electric-bulletin-board
Plugin URI: https://zip358.com/plugin/Z-Electric-bulletin-board.zip
Description: お知らせ
Author: taoka toshiaki
Version: 1.0
Author URI: https://zip358.com/
*/
add_action( 'wp_head', function() {
$color = get_option('ZEBB_color')?get_option('ZEBB_color'):"ffffff";
$cssdata ="
<style>
/* =====================
電光掲示板
======================= */
.ledText {
overflow: hidden;
position: relative;
padding:5px 0;
color: #$color;
font-size: 60px;
font-weight: bold;
background: #333333;
}
/* CSS3グラデーションでドット感を出す */
.ledText:after {
content: ' ';
display: block;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-image: linear-gradient(#0a0600 1px, transparent 0px), linear-gradient(0, #0a0600 1px, transparent 1px);
background-image: -webkit-linear-gradient(#0a0600 1px, transparent 0px), -webkit-linear-gradient(0, #0a0600 1px, transparent 1px);
background-size: 2px 2px;
z-index: 10;
}
/* CSS3アニメーションでスクロール */
.ledText span {
display: inline-block;
white-space: nowrap;
padding-left: 100%;
-webkit-animation-name: marquee;
-webkit-animation-timing-function: linear;
-webkit-animation-iteration-count: infinite;
-webkit-animation-duration: 15s;
-moz-animation-name: marquee;
-moz-animation-timing-function: linear;
-moz-animation-iteration-count: infinite;
-moz-animation-duration: 15s;
animation-name: marquee;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-duration: 15s;
}
@-webkit-keyframes marquee {
from { -webkit-transform: translate(0%);}
99%,to { -webkit-transform: translate(-100%);}
}
@-moz-keyframes marquee {
from { -moz-transform: translate(0%);}
99%,to { -moz-transform: translate(-100%);}
}
@keyframes marquee {
from { transform: translate(0%);}
99%,to { transform: translate(-100%);}
}
</style>
";
print $cssdata;
});
add_action("wp_body_open",function(){
$text = get_option('ZEBB_text')?get_option('ZEBB_text'):"";
if($text)print '<p class="ledText"><span>'.$text.'</span></p>';
});
add_action('admin_menu','Z_Electric_bulletin_board_set');
function Z_Electric_bulletin_board_set(){
add_options_page(
'zip358.com:プラグイン',
'電光掲示板設定',
'administrator',
'Z_Electric_bulletin_board',
function(){
if(isset($_POST["ZEBB_color"]) or isset($_POST["ZEBB_text"])){
$color = preg_match("/[a-zA-Z0-9]*/",$_POST["ZEBB_color"])?$_POST["ZEBB_color"]:"ffffff";
update_option('ZEBB_color', wp_unslash($color));
$text = $_POST["ZEBB_text"];
update_option('ZEBB_text', wp_unslash($text));
}
?>
<form method="post" action="">
<h2>電光掲示板設定</h2>
color code #<input type="text" style="width:350px" name="ZEBB_color" value="<?=get_option('ZEBB_color')?get_option('ZEBB_color'):""?>" placeholder="f7f7f7"><br>
text <input type="text" style="width:350px" name="ZEBB_text" value="<?=get_option('ZEBB_text')?get_option('ZEBB_text'):""?>" placeholder="文字を記入してください"><br>
テキスト文字を未入力にすると電光掲示板が表示されません
<?php submit_button(); ?>
</form>
<?php
}
);
}
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5.2, body, css, gt, header, html, lt, open, php, wp, いろいろ, インターネット, お知らせ, お願い, コード, こと, ころ, ごろ, ソース, タグ, テーマ, テキスト, トク, ひとつ, ファイル, プラグイン, プレス, メイ, リンク, ワード, 下記, 事前, 事項, 二, 仕様, 使用, 初期, 参照, 取扱, 可能, 場合, 変更, 外観, 存在, 推奨, 掲示, 注意, 現在, 直下, 自由, 記事, 記載, 記述, 追加, 連絡, 配布, 電光,

プログラムの基礎しか書かないわけ。
2019.11.27
何故、自分のブログには基本的なプログラミングしかなく複雑なプログラムが存在しないわけはこちらです。
基本的な文法から複雑なプログラムが生まれるので基本的な部分がわかれば大体の人は応用できるだろうと
考えているからです。
自分の場合、勉強と経験からコードを組み立てています。人から教わらないけれど、ググると無数のコードと
解説が存在します。そんな先人が残したコードを読み取り習得するという形と参考書から情報を得たりして経験値を
積んでいます。
職場でプログラムを教わったことは今までほぼほぼ無いです。本当はOJTがあって然るべきだと思いますが中小企業に入るとそんなに甘くはないですね。
今の人はYOUTUBEなどでも無料でプログラミングの知識を取得することも可能です、そこらへんが少し羨ましいです。
ちなみに自分は教えられていないので後輩には自分が知っていることは教えるということを現場では心がけていました。知識って共有して向上するのですがブラック企業は技術を教えない技術は盗み取るものだという考え方が未だに根強いです。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
OJT, 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, アップロード, コード, ソース, ダウンロード, フォルダ, プラグイン, プレス, リダイレクト, ワード, 下記, 任意, 使用, 場所, 変換, 外部, 感じ, 方, 有効, 解凍, 遷移,
難しいの基準(プログラム初心者へ)
2019.11.15
難しいの基準、プログラムが難しいと思っている人がいますが
そんなに難しいものではないです。
つい最近、人工知能のさわりを試行錯誤しながら
行ってみました。Aという文章から新たな文章を生成するというものです。
機械学習の部分はあらかじめ学習済みのモデルを取ってきて
試してみたのです。なんとか文章を生成する流れまで出来ました。
プログラムが難しいひとは、参考書をみて何だか意味がわからないと
思っているひとが殆どだと思います。
まず、参考書を読むのをやめて作りたいもののプログラム言語が何か
そして作りたい機能はなにか考えて、ググりましょう。
例えば【PHP 掲示板 作り方】などと検索すると作り方の方法が
ヒットします。最初はそのソースコードをそのままコピーして
動作するところまで試してみましょう。
次に動作するところまで出来たら、そのソースコードを
編集してみましょう。そうすることでどういう処理なのか理解できます。
理解できるようになったら参考書を開いてみましょう。
何となく参考書の意味が理解できるようになるはずです。
最初から参考書を理解できるタイプと理解できないタイプがいると思います。
理解できないタイプはググって覚えるという方法で
プログラムを身につけるほうが効率的です。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
php, コード, こと, コピー, さわり, ソース, つい, ところ, ヒット, ひと, ひとは, プログラム, モデル, もの, 人, 人工, 作り方, 処理, 初心者, 動作, 参考書, 基準, 学習, 意味, 掲示, 文章, 方法, 最初, 最近, 検索, 機械, 機能, 次, 殆ど, 理解, 生成, 知能, 編集, 言語, 試行錯誤, 部分,
あるキーワードをライクする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, エンジニア, キーワード, コード, サーバー, さくら, ツイート, プレス, ボット, メカブ, ライク, レンタル, ワード, 併用, 方法, 自動, 記事, 過去,
ワードプレス過去記事のツイートをボット化する方法。
2019.11.05
WordPress(ワードプレス)の過去記事をツイートしたいけど
結構大変ですと断られる業者は腕なしかもしれない。
簡単に作れます。Composerをインストールして
TwitterOAuthのライブラリー入れてあげて、ワードプレスのwp-load.phpと
TwitterOAuthのライブラリー を参照するような下記コードを作るだけで
ツイートが可能です。
これを自動化するにはcrontab(クロンタブ)という機能で実行できます。
ほとんどのレンタルサーバーにこの機能はついています。
うちのサーバーはWindowsサーバーなんでとかいう場合は
スケジュールでなんとかしてくださいと言えばOKです。
これを実装するのに発生する単価は1万ぐらいじゃないかと思います。
それ以上高ければ、ぼったくられています。
1万円が高いかどうか?
ちなみに普通のプログラマーはこれを構築するのに30分もかからないです。
人件費を考えるとそれぐらいが妥当だと思います。
いまクラウドワークスなどで頼めば5000円以下で対応してくれる人も
いますが、単価が下がるとそれは最終的に自分の首を絞めることに
なります。なので1万円ぐらいが妥当だと思います。
<?php
//ひとつ英語名のフォルダ作って、これいれてあげて
require_once ('../wp-load.php');
require_once ("../vendor/autoload.php");
use AbrahamTwitterOAuthTwitterOAuth;
define("CONSUMER_KEY","コンシューマーキー");
define("CONSUMER_SECRET","コンシューマーシークレット");
define("ACCESS_TOKEN","アクセストークン");
define("ACCESS_TOKEN_SECRET","アクセストークンシークレット");
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$args = array(
'post_status' => 'publish',
'posts_per_page' => 1,
'orderby' => 'rand'
);
$posts = get_posts($args);
foreach ( $posts as $val ){
$href = get_permalink($val->ID);
$title = get_the_title($val->ID);
$res = $connection->post("statuses/update", array("status" =>$title . " n" . $href . " n#黒歴史ってなんだ? #ブログ ".date('Y/m/d H:i:s')));
}
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 30, Composer, crontab, OK, php, TwitterOAuth, Windows, WordPress, wp-load, インストール, うち, ぐ, クロン, コード, これ, サーバー, スケジュール, それ, タブ, ツイート, プレス, プログラマー, ボット, ほとんど, ライブラリー, レンタル, ワード, 万, 下記, 人件, 単価, 参照, 可能, 場合, 大変, 実行, 実装, 方法, 普通, 業者, 構築, 機能, 発生, 簡単, 腕, 自動, 記事, 過去,