@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
アンフォローが多発しているのでアンフォローした人には自動でお礼コメントする。
2021.07.15
アンフォローが多発しているのでアンフォローした人には自動でお礼コメントするようにプログラミングコードを書いて五分間で処理を実行するようにcrontabに設定しました。ソースコードの一部を記載しますのでご自分の環境に合わしてご自由にお使いくださいませ。尚、TwitterOAuthライブラリを使用しておりますが、ライブラリの導入などに関しては割愛しております。
何故、こんなコードを書いたのか余談。フォロワーさんが外れるのはあまり嬉しいことではないですよね。離れていく人を食い止めようとは思いませんが、最後のお礼コメントぐらい言わせてくださいなという考えの元、今回のお礼コメントをするPHPのコードを書きました。相変わらずソースコードにコメントはありません、悪しからず?。
尚、一回目は一部コメントアウトして実行ください?
<?php
require_once("../vendor/autoload.php");
use Abraham\TwitterOAuth\TwitterOAuth;
if ($argv[0]) {
require_once "./tw-config.php";
$f_data = @file_get_contents("followers.dat");
$f_data = $f_data?explode(PHP_EOL,$f_data):[];
date_default_timezone_set('Asia/Tokyo');
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$response = $connection->get("followers/ids", array(
'screen_name' => 'zip358com',
'count'=>1000
));
$unFolloewers = array_diff($f_data,$response->ids);
$data = @implode(PHP_EOL,$response->ids);
file_put_contents("followers.dat",$data);
if($unFolloewers){
foreach($unFolloewers as $key=>$val){
$response = $connection->get("users/show", array(
'user_id' =>$val
));
$text = "@".$response->screen_name. " さん 今までフォローありがとうございました(¯―¯?)。{フォロー解除されました? ([atmark]zip358comより自動投稿)}";
print $text;
$connection->post("statuses/update", array("status" => $text . " \n"));
}
}
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
aut, crontab, lt, once, php, quot, require, TwitterOAuth, vendor, アウト, アン, お使い, お礼, コード, こと, コメント, ご自分, ソース, フォロー, フォロワー, プログラミング, ライブラリ, 一, 一部, 五, 人, 今回, 何故, 余談, 使用, 元, 処理, 割愛, 多発, 実行, 導入, 最後, 環境, 自動, 記載, 設定,
LINE messaging apiでブログの配信通知するプログラムコード。
2021.07.14
暑い日が続いています、夕立になった後のアスファルトの匂いを嗅ぐと夏だなぁって思うのは自分だけでしょうか?
さてLINE messaging apiでブログの配信通知するプログラムコードを書きましたのでお裾分けします?、コードはいつもの通りコメントなんてものはありません。この2つのコードは何をしているのかだけ、解説しますね。
1つ目のコードは私のLINEチャンネルを友だち追加してくれたら、データベースにuseridを登録するコードです。解除したらuseridの削除もちゃんとしています。
2つ目のコードは私のLINEチャンネルに登録してくれた方々に最新の記事を送信しています。自分は毎日、9時に最新の記事を送信するようにcron登録しました。
一部、defineを設定している部分がありますのでコードに追加してください、よろしくお願いします?
※LINEチャンネル登録よろしくお願いします。
<?php
class line{
function webhook($webhook_object=null){
if(!$webhook_object)return false;
$obj = json_decode($webhook_object);
$type = $obj->events[0]->type;
$userId = $obj->events[0]->source->userId;
$replyToken = $obj->events[0]->replyToken;
if($type==="follow"){
$pdo = self::db();
if($pdo){
$sql = "insert into user (userid)values(:userid)";
$sth = $pdo->prepare($sql);
$sth->bindValue(":userid",$userId,PDO::PARAM_STR);
$sth->execute();
}
}
if($type==="unfollow"){
$pdo = self::db();
if($pdo){
$sql = "delete from user where userid = :userid";
$sth = $pdo->prepare($sql);
$sth->bindValue(":userid",$userId,PDO::PARAM_STR);
$sth->execute();
}
}
if($type==="message"){
}
}
function db(){
try {
$pdo = new PDO(DSN,USERNAME,PASSWORD);
return $pdo;
} catch (\Throwable $th) {
//throw $th;
return false;
}
}
}
if($data = file_get_contents('php://input')){
print line::webhook($data);
}
<?php
class blog_post_msg_line{
function db(){
try {
//code...
return new PDO(DSN,USERNAME,PASSWORD);
} catch (\Throwable $th) {
//throw $th;
return false;
}
}
function rss(){
$obj = simplexml_load_file("https://zip358.com/feed");
$post_message[2] = $obj->channel->item[0]->title ."\n". $obj->channel->item[0]->link;
$post_message[1] = $obj->channel->item[1]->title ."\n". $obj->channel->item[1]->link;
$post_message[0] = $obj->channel->item[2]->title ."\n". $obj->channel->item[2]->link;
return $post_message;
}
function main(){
$pdo = self::db();
if($pdo){
$post_message = self::rss();
$sql = "select userid from user;";
$sth = $pdo->query($sql);
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if($res){
foreach($res as $key=>$val){
$user_id = $val["userid"];
self::line_post($user_id,$post_message);
}
}
}
}
function line_post($user_id ='',$post_message=null){
$text = [
[
'type' => 'text',
'text' =>"最新の記事をお届けします"
],
[
'type' => 'text',
'text' =>$post_message[0]
],
[
'type' => 'text',
'text' =>$post_message[1]
],
[
'type' => 'text',
'text' =>$post_message[2]
]
];
$message = [
'to' => $user_id,
'messages' => $text
];
$message = json_encode($message);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . ACCESS_TOKEN, 'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/v2/bot/message/push');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $message);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
}
}
if($argv[0]){
blog_post_msg_line::main();
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 2, 9, API, cron, define, line, Messaging, userid, アスファルト, いつも, お裾分け, お願い, コード, コメント, チャンネル, データベース, ブログ, プログラム, もの, 一部, 何, 削除, 匂い, 友だち, 夏, 夕立, 後, 方々, 日, 最新, 毎日, 登録, 私, 自分, 解説, 解除, 記事, 設定, 追加, 送信, 通り, 通知, 部分, 配信,
彼のVue.jsの入門解説動画が分かりやすいかも。超入門は理解しました。
2021.07.12
vue.jsを勉強したい方はよしぴーのYouTubeプログラミングスクールの超Vue.jsの入門解説動画が分かりやすいかも。自分は入門版は理解しました。尚、bodyにID付けて試すのは辞めとけよ。bodyにIDを付けて動かないなぁとかしないように!!ドキュメントにもbodyにIDを付けるのは推奨しないと記載しております。動画を見て背景の色を動的に変えるvue.jsの簡単なサンプルプログラム作りました。コード書いていてjavascriptで書くよりもvue.jsなどのライブラリ?を使用して書くほうが短いコードで書けるので良いなと実感。
htmlコードとvue.jsのコードは下記になります、最終的にはvue.jsでアプリ作りたいな(時間がない?^^;)。SPAに関して難しいという意識がある人も触っていくうちに慣れると思います。因みに学習能力が高い人はこんなの作れちゃうみたいですね、学習してまだ二週間しか経過していなくてゴニョゴニョ作れている所がへぷさん(@HEP1147)、凄いところ!!ですね。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
<style>
#el{
width: 100vw;
height: 100vh;
}
</style>
<title>背景の色を変える</title>
</head>
<body>
<div id="el" v-on:mousemove="mouseXY($event)">
<span v-on:click="colorclick('#000')"style="color:#000">■</span>
<span v-on:click="colorclick('#fff')"style="color:#fff">■</span>
<span v-on:click="colorclick('#4eaeec')"style="color:#4eaeec">■</span>
<span v-on:click="colorclick('#4eeccc')"style="color:#4eeccc">■</span>
---{{ color }}---
X={{x}},Y={{y}}
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script src="./main.js?<?=time()?>"></script>
</body>
</html>
var vm = new Vue({
el:"#el",
data:{
color:"#fff",
x:0,
y:0
},
methods:{
colorclick:function(c){
this.color = c;
document.body.style.backgroundColor = c;
return true;
},
mouseXY:function(event){
this.x = event.clientX;
this.y = event.clientY;
}
}
});
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
body, html, ID, javascript, JS, SPA, vue, youtube, アプリ, うち, コード, サンプル, スクール, ドキュメント, プログラミング, プログラム, よし, ライブラリ, 下記, 人, 使用, 入門, 勉強, 動画, 学習, 実感, 彼, 意識, 推奨, 方, 時間, 理解, 簡単, 背景, 能力, 自分, 色, 解説, 記載, 超,
Twitterプロフィールからスパムみたいなアカウントかを機械学習で判定してみた。
2021.06.28
Twitterプロフィールからスパムみたいなアカウントかを機械学習で判定してみました。
何故、このような事を考えたかはスパムみたいなアカウントってぱっと見で人は区別できるよねって思ったのでLobeというソフトを使って画像解析(機械学習)してモデルをエクスポートし、そのモデルをテンソルフローで使用して動作確認してみました。
結果は、まぁまぁの精度だったのでモデルをお裾分けしますね。因みにTwitterのプロフィール画像のスクリーンショットを行った時のソースコードも提供します。
尚、機械学習に使用したプロフィール画像は400枚ほど(少ない?)です、ok-image(一般人)とng-image(スパムみたいなアカウント)というラベルを付けて学習させてます。
model::https://zip358.com/ai-model/tw-profile/saved_model.pb (?モデルの中身はtensorboardでご確認を!)
zip358com
zip358
# Generated by Selenium IDE
import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import Select
class twss():
def setup_method(self):
self.driver = webdriver.Chrome(ChromeDriverManager().install())
self.vars = {}
def teardown_method(self):
self.driver.quit()
def screenshots(self):
self.driver.get("https://twitter.com/")
self.driver.set_window_size(945, 900)
with open('twname.dat','r',encoding="utf-8") as f:
for line in f:
FILENAME = "X:\\var\\www\\html\\labo_ai\\twss\\image\\screen_" + line.replace('\n', '') +".png.webp"
self.driver.get("https://twitter.com/" + line.replace('\n', ''))
time.sleep(2)
self.driver.save_screenshot(FILENAME)
f.close()
self.driver.quit()
twss = twss()
twss.setup_method()
twss.screenshots()
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
358, 400, ai-model, com, https, lobe, model, ng-image, ok-image, SA, tw-profile, Twitter, zip, アカウント, エクスポート, お裾分け, コード, ショット, スクリーン, スパム, ソース, ソフト, テンソル, フロー, プロフィール, モデル, ラベル, 一般人, 事, 人, 何故, 使用, 判定, 動作, 区別, 学習, 提供, 時, 機械, 画像, 確認, 精度, 結果, 解析,
今はよく使う無名関数と即時関数というモノ?
2021.06.21
javascriptを例に無名関数と即時関数をよく書いています。尚、PHPでも同じ要領で無名関数と即時関数がかけます。たぶんいろいろな言語に同じ要領で書けるようになっていると思います。但しPHPにアロー関数での無名関数と即時関数がどうか分かりません。因みにPHPの方に即時関数があることは結構、最近になって知りました。
自分は無名関数の存在は知っていましたが、あまり使うことがなく使い方もヘンテコな使い方をしていましたね。
無名関数や即時関数を使わない人もいると思います、駆け出しのエンジニアさんに配慮して書かないという職場もあるでしょうし、制約で書けない場合もあるかもしれません。
そんな感じで仕事をしているといろいろ制約の中でコードを書くことになるので、ちょっと窮屈感を感じる人も多いと思います。特に開発に新しい技術を取り入れるような実験が出来る職場は少ないです。大規模開発になればなるほど、実験的な事ができなくなる傾向にあると思います。それも仕事だと割り切るしか無いかなと思います。使いたい技術は私用で開発するときに使うようにしましょう。そういうITエンジニアは結構いますよ。
//functionで無名関数
var mumei1 = function(a){
return a;
};
console.log(mumei1(123));
//アロー関数で無名関数
var mumei2 = (a)=>{
return a;
};
console.log(mumei2(123));
//functionで即時関数
console.log((function(a){
return a;
})(123));
//アロー関数で即時関数
console.log(
((a)=>{
return a;
})(123));
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
javascript, php, アロー, いろいろ, エンジニア, コード, こと, ヘンテコ, もの, 中, 事, 人, 今, 仕事, 使い方, 例, 傾向, 制約, 即時, 場合, 大規模, 存在, 実験, 感, 感じ, 技術, 方, 最近, 無名, 窮屈, 職場, 自分, 要領, 言語, 配慮, 開発, 関数, 駆け出し,
TensorFlow Lite(テンソルフロー ライト)をインストールしモデル実行まで。
2021.06.14
ラズベリーパイ3にTensorFlow Lite(テンソルフロー ライト)をインストールしモデル実行まで軽く字幕で紹介した動画が下記になります。インストール方法は公式に書かれた通りに実行すれば上手くインストール出来るはずです。比較的に低スペックのマシンでも動くはずなのです、どうしてもエラーが出て動かないようであれば、それはおそらくあなたのマシンに問題があります?。
動画でハマりどころがあるという事をブログで解説しますと書いていますので、そのハマりどころを解説します。。。
TensorFlow Lite(テンソルフロー ライト)で動かす場合、label_image.pyの修正箇所が公式に書かれていると思いますが・・・?、ここで自分がハマり、実行するコマンドを打ってもパラメーターがどうたらというエラーが出力されて動きませんでした。結論から言うと原因はマスターのソースコードにあったのです。修正を要領よく修正しては駄目だった。直接的な原因となったのは–num_threadsのパラメーターを投げていたのが原因でした。
公式では下記の内容に変更しなさいと書かれています。tf.lite.Interpreterの部分を置き換えればよいだろうと思っていたのです。
interpreter = tf.lite.Interpreter(model_path=args.model_file)
マスターのソースコードは若干、公式とは違ってこのようなソースコードになっていました。
interpreter = tf.lite.Interpreter(
model_path=args.model_file, num_threads=args.num_threads)
渡す引数が一つ増えていたので、自分はそれを残していたのですが・・・?、これでは動かないのです。そう・・num_threads=args.num_threadsは削除してあげないとモデルを動かすことが出来なかったのです。それがわからず渡すパラメーターが駄目なんだとか思って四苦八苦していました。
自分みたいな修正方法している方も中にはいると思ったので、今回、初心者がハマった沼を紹介しました?。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
3, image, label, LITE, py, tensorflow, あなた, インストール, エラー, コード, ここ, コマンド, スペック, ソース, それ, テンソル, はい, パス, パラメーター, フロー, ブログ, マシン, マスター, モデル, ライド, ラズベリー, 下記, 事, 修正, 公式, 出力, 動画, 原因, 問題, 場合, 字幕, 実行, 方法, 箇所, 紹介, 結論, 自分, 解説, 通り,
お問い合わせフォームとメールフォームの考え方は同じ。
2021.06.07
お問い合わせフォームとメールフォームの考え方は同じです。AからBにデータを送信してそれを元に処理をしているだけです。これはフォームに限らず、プログラムはデータを元に計算などを行い結果を出力しているに過ぎないのです。コンピュータというのは高速にデータを分類したり、計算したりしているだけなのです。
プログラミングに挫折する人は、いろいろな事に疑問を持って先に進まない人が多いです。どうしてそうなるのかという所まで考えようとしていて前に進まない人が多いです。
逆にそうなるだという事を受け入れる人の方が覚えが早いです。最初はルールを覚えたほうが良いですね。
小学生でプログラミングを始めたい方は、人のプログラミングコードを模写して、そのコードの一部の数字などを変更してみて、こうするとこうなるのかという形で覚えていくほうが良いと感じます。参考書には難しい言葉を使って書いている事が多いので、そのような形で覚えるほうが良いでしょう。
今回のソースコードを貼っときますので、コピーするのではなく自分で書いて動かしてみてください!
※因みにphp言語が動作する環境が必要になります。
https://www.sakura.ne.jp/standard.html#plan
<!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="お問い合わせ"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
<title>お問い合わせ</title>
<style>
body{
background-color: #f8f9fa;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12 mt-5">
<h2>お問い合わせ</h2>
<input class="form-control mt-1" type="text" name="name" placeholder="お名前を入力ください">
<input class="form-control mt-1" type="text" name="email" placeholder="メールアドレスを入力ください">
<div class="form-group mt-1">
<label for="my-select">お問い合わせ</label>
<select id="my-select" class="form-control" name="ptn">
<option value="問い">お問い合わせ</option>
<option value="意見">ご意見</option>
</select>
</div>
</div>
</div>
<div class="form-group mt-1">
<label for="my-textarea">内容</label>
<textarea id="my-textarea" class="form-control" name="text" rows="3" placeholder="内容を入力ください"></textarea>
</div>
<button class="btn btn-primary" id="btn" type="button">送信</button>
</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.6.0/js/bootstrap.min.js"></script>
<script>
document.getElementById("btn").addEventListener("click",function(){
let data = {};
data["name"] = document.getElementsByName("name")[0].value;
data["email"] = document.getElementsByName("email")[0].value;
data["ptn"] = document.getElementsByName("ptn")[0].value;
data["text"] = document.getElementsByName("text")[0].value;
$.ajax({
type: "POST",
dataType: "json",
url: "./send.php",
data: data,
success: function (response) {
if(response){
console.log(response);
}
}
});
});
</script>
</body>
</html>
<?php
print json_encode($_POST);
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
いろいろ, お問い合わせ, コード, これ, コンピュータ, それ, データ, フォーム, プログラミング, プログラム, メール, ルール, 一部, 事, 人, 元, 処理, 出力, 分類, 前, 参考書, 変更, 小学生, 形, 所, 挫折, 数字, 方, 最初, 模写, 疑問, 結果, 考え方, 言葉, 計算, 送信, 逆, 高速,
簡易的なメールフォームとメール送信のプログラムを書くのにかかる時間は?
2021.05.28
簡易的なメールフォームとメール送信のプログラムを書くのにかかる時間は?大体10分?15分ぐらいかと思います。本当はエラーチェックなどの機能をちゃんとした物に置き換える必要があるけど、ざっくり考え方はこれだけで良いじゃないかなと思っています。下記のコードを制作するのに参考にしたサイトのリンクを貼っときますね。
https://techplay.jp/column/550、https://techacademy.jp/magazine/19300
上記のコードを拝借してコードを書き、簡易的な二重送信防止対策と簡易的なエラーチェックをプログラミングしていますが、ここにreCAPTCHAなどの機能を入れてあげるとボット対策にもなるので良いかもしれません。ソースコードを見て後から気づいたのですが、ポストしているnameのデータを受け取っていない事があとから気づきました。因みにPOSTの生データが欲しいと言うときはこのように書くと取得することが可能ですよ。
<?php
$data = file_get_contents('php://input');
?>
<?php
session_start();
$toke_byte = openssl_random_pseudo_bytes(16);
$csrf_token = bin2hex($toke_byte);
$_SESSION['csrf_token'] = $csrf_token;
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>sendmail</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<form method="post" action="./sendmail.php">
name<input class="form-control" type="text" name="name">
email<input class="form-control" type="text" name="email">
<div class="form-group">
<label for="my-textarea">Text</label>
<textarea id="my-textarea" class="form-control" name="text" rows="3"></textarea>
</div>
<input type="hidden" name="csrf_token" value="<?=$_SESSION['csrf_token']?>">
<?=$_SESSION["sendmail"]!=="ok"?'<button class="btn btn-primary" type="submit">submit</button>':"NG"?>
</form>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
</body>
</html>
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>sendmail</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<?= EmailSend() ?>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
</body>
</html>
<?php
function EmailSend()
{
$check = function ($val = "") {
return isset($val) ? $val : false;
};
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = $_POST['email'];
$title = "test-mail";
$message = $_POST['text'];
$headers = "From: from@example.com";
if (
isset($_POST["csrf_token"])
&& $_POST["csrf_token"] === $_SESSION['csrf_token']
) {
if (($check($to) && $check($title) && $check($message)) && mb_send_mail($to, $title, $message, $headers)) {
$_SESSION["sendmail"] = "ok";
return "メール送信成功です";
} else {
$_SESSION["sendmail"] = "ng";
return "メール送信失敗です";
}
} else {
return "不正なリクエストです";
}
return false;
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, 15, 2, 550, 8, cHW, column, com, https, jp, name, POST, reCAPTCHA, techplay, watch, www, xqg-zp, youtube, あと, エラー, コード, ここ, これだけ, サイト, ソース, チェック, デー, データ, フォーム, プログラミング, プログラム, ポスト, ボット, メール, リンク, 上記, 下記, 事, 二, 制作, 参考, 大体, 対策, 後, 必要, 拝借, 時間, 本当, 機能, 物, 生, 簡易的, 考え方, 送信, 防止,
クロスプラットフォーム開発(アプリ)をPythonで行う。
2021.05.21
PyQt5でクロスプラットフォーム開発(アプリ)を行う事が出来るだってさ。ただし、PyQt5は商用利用に縛りがあるのだとか、個人で使用する分には問題なしだということ。CSSとPythonの記述が分かっていればそれほど難しくない難易度かと自分は下記の動画を見て思いました。
pip install PyQt5
Python:パイソンがインストールしている環境で上記のコマンドを打つことでPyQt5はインストール可能です。あとはコードを書いて実行するだけでアプリが実行されます。
PyQt5の使い方を解説している人がいます。リンク先のように書けばチェックボックスなども設置可能です。因みにコードを一々書くのは面倒だという方はQt Designerと連携することでGUIの設計は楽になると思います。
環境構築を説明しているリンクを貼っときます。こちらでPyQt5のプログラムを使用しQt Designerで開発を行えます。
この頃はクロスプラットフォーム開発も多様化していろいろな言語で開発ができるようになってきてますね。楽になったものだと・・・。
追伸:商業利用でクロスプラットフォーム開発が行いたい場合はPySideを使用するべしです。理由はこちら
https://www.kimoton.com/entry/20181202/1543724518
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5, css, Designer, GUI, install, pip, PyQt, Python, Qt, あと, アプリ, インストール, えま, クロス, コード, こちら, こと, コマンド, チェック, パイソン, プラットフォーム, プログラム, ボックス, リンク, 上記, 下記, 事, 人, 使い方, 使用, 個人, 分, 利用, 動画, 可能, 商用, 実行, 方, 構築, 環境, 縛り, 自分, 行, 解説, 記述, 設置, 設計, 説明, 連携, 開発, 難易, 面倒,
SEOって意味があるのかわからないけれどAll in One SEOの採点は気にしてる。
2021.05.14
SEOって意味があるのかわからないけれどAll in One SEOの採点は気にしてる自分。ワードプレス(WordPress:WP)にはオールインワンSEO(エスイオー)というプラグインがあり、最新版には記事単位でSEO採点をしてくれる機能が無料でついている。このWPプラグインのコード(中身の処理)がどうなっているかは知らないけれど、恐らく記事のデータはWPプラグインの提供元(All in One SEO)へデータを送信していることは間違いないのではないかと思っています。このSEO採点基準は投稿フォームの下の方にヒントとして記載されているので、その基準に記事を書けばスコアは最低でも70点以上の採点になるはずです。
因みにこの頃、書いている自分の記事は大体、80点以上の採点になることが多くなってきている。この機能が導入されてから記事を見返したり、SEOの得点を気にするようになった。それでも前から言っているように最終的に記事を読むのは人なので人が読んで評価が良いものを投稿する事こそが最強のSEOだと思っています。
しかし記事が検索サイトに表示されないと人目につかないので、SEOはある程度意識しないといけないなというのが今の自分の考えだったりします。昔に比べて検索の上位を狙うのが難しくなっていることは確かな事で数撃ちゃ当たる戦法はもう難しくなってきています。YOUTUBEは今の所、それが通用するみたいです。
なぜ、数撃ちゃ当たるの戦法が難しくなってきているかといえば、SEOを熟した企業が記事を量産しているから、個人で記事を書いている人が太刀打ちが難しくなってきているのが現状です。
ならば、プログラムで記事を量産させようと思い立ち、先日、記事を自動生成するサービスをいろいろ調べていた。調べると量産させるサービスがあった。そのサービスは「Articoolo(日本語はベータ版:2021年)」というサービスで人工知能の機能を使用し記事が作成されるものだった。試してみた結果、日本語が整っていなく未完成な記事が生成された、今のところは使用できるレベルではない(2021/05)。
まだ、先の話になるのだけどこんな取り組みがある。LINEは日本語に特化した人工知能モデルを作ろうとしている。そのサービスが完成すればそれを使用して記事の自動制作を行えないかという事を自分は考えています。おそらくベータ版サービスは無料で作成できそうなので精度が良ければ使用してみたいと思っています。
今でも自然言語処理と人工知能のことを正しく理解している人であれば、記事を量産できるかもしれないが・・・。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
70, 80, all, in, one, SEO, WordPress, wp, エスイ, オー, オールインワン, コード, こと, スコア, データ, パス, ヒント, フォーム, プラグイン, プレス, ワード, 下, 中身, 処理, 単位, 基準, 大体, 導入, 得点, 意味, 投稿, 採点, 提供, 方, 最低, 最新版, 機能, 気, 無料, 自分, 記事, 記載, 送信, 頃,
Proofreading(校正)というリクルートが開発したAPIを使って。
2021.04.27
Proofreading(校正)というリクルートが開発したAPIを使って、今まで投稿した記事に誤字がないかを判別してもらった。因みに1000文字を超える文章は対象にならないのでワードプレスで取得した記事を900文字程度で切って判断してもらうことにしています。誤字があった場合、1を最大値として値が渡されるので、その平均値を取ればその文章の誤字率が判定できる。今回は平均値を取らず、最大値を判断材料として文章をスコア化しました。一応、判断した値をCSVで出力するプログラムをちょこちょこと制作したので参考にして頂ければ幸いです。正直なところ、ProofreadingのAPIが制度が良いのか疑わしいものがあるがAPIを取り扱うのが始めてという人は勉強になると思います?。
ソースコードはこちらになります。
<?php
require "../../wp-load.php";
global $wpdb;
$proofreading = function($text=""){
$url = "https://api.a3rt.recruit-tech.co.jp/proofreading/v2/typo";
$params = [
'apikey' => '取得したAPIKEY',
'sentence'=>"$text",
'sensitivity'=>"high"
];
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$obj = (object)json_decode($response);
$score = 100;
if($obj->alerts){
$max = 0;
foreach($obj->alerts as $key=>$val){
$max = $max<$val->score?$val->score:$max;
}
$score = 100 - ($max * 100);
}
return $score;
};
if($argv[0]){
file_put_contents("blogscore.csv","");
$query = "SELECT * FROM $wpdb->posts WHERE post_status = 'publish' and post_type = 'post'";
$results = $wpdb->get_results( $wpdb->prepare($query));
foreach($results as $row) {
$id = $row->ID;
$title = $row->post_title;
$score = $proofreading(mb_strimwidth(preg_replace("/[\r|\n]/","",strip_tags($row->post_content)),0,900,"…"));
$str = "'$id'".",'".$title."',"."'$score'";
print $str.PHP_EOL;
file_put_contents("blogscore.csv",mb_convert_encoding($str."\n","SJIS","UTF-8"),FILE_APPEND);
}
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 1000, 900, API, CSV, lt, php, Proofreading, quot, require, wp-load, コード, こちら, こと, スコア, ソース, ところ, プレス, プログラム, もの, リクルート, ワード, 人, 今回, 値, 出力, 判別, 判定, 判断, 制作, 制度, 勉強, 参考, 取得, 場合, 対象, 平均, 投稿, 文章, 最大, 材料, 校正, 正直, 記事, 誤字, 開発,
今読まれてますというWPプラグインの作り方
2021.04.19
今読まれてますというWP(ワードプレス)プラグインの作り方はこれだけです。ボット対策の部分はお見せできませんがこんなソースコードで動いています、なお、自分が閲覧してもツイートすることはないようにしています。因みに昨日もボットみたいなのが何度も来たのでその対応を行いました。尚、TwitterOAuthというライブラリを導入してautoload.phpを使用しuseで呼び出し使用しています(※autoloadを置いている任意の場所に変更してください)。
ワードプレスのプラグインの作り方の動画を貼っときます。英語ですが理解できるかと思います。動画で分かりづらかった方は『自作、WordPress、プラグイン、PHP』という様な検索すると先人たちが方法をネットに公開しているのでそちらを参考にしてください。
プラグインを作るにあたってソースコードに書かれているコメント部分は必須なのだけど、プラグインを配布しない人はプラグイン名だけ記載しプラグインと同じフォルダを構えるだけでプラグインとして認識します。
<?php
/*
Plugin Name: article-live-tw
Plugin URI:
Description: 今、ユーザーが読んでいる記事をツイートする
Version: 1.0.0
Author: @zip358com
Author URI: https://zip358.com
*/
session_start();
require "/vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
add_action("wp_head","article_live_tw");
function article_live_tw(){
define("CONSUMER_KEY", "CONSUMER_KEY");
define("CONSUMER_SECRET", "CONSUMER_SECRET");
define("ACCESS_TOKEN", "ACCESS_TOKEN");
define("ACCESS_TOKEN_SECRET", "ACCESS_TOKEN_SECRET");
global $post;
$flg1 = is_bot();
$flg2 = empty($_SESSION["reading-zip358-".$post->ID.$_SERVER['REMOTE_ADDR']]);
$flg3 = ip_check("reading-zip358-".$post->ID.$_SERVER['REMOTE_ADDR']);
if(!$flg1 && $flg2 && !$flg3 && $post->ID){
$_SESSION["reading-zip358-".$post->ID] = 1;
$tw_title = get_post($post->ID)->post_title;
$tw_link = get_permalink($post->ID);
$kigolist = ["?","?","?","?","?","?"];
$kigo = $kigolist[floor(rand(0,5))];
if(!current_user_can('administrator')){
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$connection->post("statuses/update", array("status" => "#今読まれてます $kigo ??? \n".$tw_title . " \n" . $tw_link . " \n #ブログ zip358.com \n" . date_i18n('Y/m/d H:i')));
//$ua = print_r($_SERVER,true);
//@file_put_contents("./log/".date('Y-m-d-H-i').".log",$ua);
}
}
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
15, 7, autoload, com, https, php, QfH-s-, TwitterOAuth, use, watch, WordPress, wp, www, youtube, お見せ, コード, こと, これだけ, ソ, ソース, そちら, ツイート, ネット, プラグイン, プレス, ボット, ライブラリ, ワード, 今, 任意, 何度, 作り方, 使用, 先人, 公開, 動画, 参考, 場所, 変更, 対応, 対策, 導入, 方, 方法, 昨日, 検索, 理解, 自作, 自分, 英語, 部分, 閲覧,
時間配分が難しい。
2021.03.26
仕事をしていないのに時間配分が難しい。結局、あまりこの休みという時間を全然休めてない気がする。起床してコードを書いて、求人情報をチェックしてメールをチェックして朝食食べて朝風呂にはいり、ハローワークに行くときは行き、そうこうしていたらお昼になりお昼ごはんを食べて記事を読んだりシェアしたりし、1時間半ウオーキングしてその後、単発のクラウドワークスのお仕事をチェックする、競合がいないようなお仕事をチェックしそのコードを書いて募集する。そして夕食を食べて寝るということを土日祝以外は行っている。一番時間配分としてもったいないなと思っているのはウオーキングだったりするのだけど、ダイエットの為に歩いているので目標体重まではウオーキングをやめることはないと思います。そんな事より一番はお仕事をなんとかしないといけないなと今は収入源がない訳ですからね。正直なところ、先のことをあまり考えていません。考えても仕方ないから今出来ることを淡々と着実にやっていく事が最終的に近道になるのではと思っています。これが努力かとも思っていなくて今までのつけが回ってきたのだろうと思っています。ただ、これだけ読むと頑張っているなと思うひともいるでしょうけど、あまり頑張ってません。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, ウォーキング, お仕事, お昼, クラウド, コード, こと, シェア, ダイエット, チェック, とき, ところ, ハローワーク, メール, ワークス, 一, 事, 今, 仕事, 休み, 体重, 先, 募集, 半, 単発, 収入, 土日, 夕食, 後, 情報, 昼ごはん, 時間, 朝風呂, 朝食, 正直, 気, 求人, 為, 目標, 着実, 祝, 競合, 記事, 訳, 起床, 近道, 配分,
現役エンジニアならFizzBuzz問題なんて余裕なのか検証してみたをやってみた?
2021.03.22
【現役エンジニアならFizzBuzz問題なんて余裕なのか検証してみたをやってみた】、この道、10年選手の自分が解いてみた結果、2つの解になることになりました。でも自分はかなり緊張するタイプなのでこういう場ではなんかミスりそうです。2つの解になる理由は15の時、5の倍数でも3の倍数でもあり15の倍数でもあるからです。これに疑問をもつはずなのですが・・・。皆、言わなかったところが日本人的だなと感じました。因みに自分はこういう疑問を言うタイプです、なので衝突が上と起こるのかなと思います・・・。
尚、自分は3分ぐらいです。コードを書くより誰かに書いてもらいたい(^_^;)、もっとタイピングが早くなれば2分ぐらいで書けると思います?ではおつおつでした。
<?php
$ary1 = [];
$check1 = function ($hoge) {
$str = [];
if ($hoge % 3 === 0) {
$str[] = "Fizz($hoge)";
}
if ($hoge % 5 === 0) {
$str[] = "Buzz($hoge)";
}
if ($hoge % 15 === 0) {
$str[] = "FizzBuzz($hoge)";
}
if (!count($str)) {
$str[] = $hoge;
}
return implode(",",$str);
};
$ary2 = [];
$check2 = function ($hoge) {
$str = [];
if ($hoge % 15 === 0) {
$str[] = "FizzBuzz($hoge)";
}elseif($hoge % 5 === 0){
$str[] = "Buzz($hoge)";
}elseif($hoge % 3 === 0){
$str[] = "Fizz($hoge)";
}
if (!count($str)) {
$str[] = $hoge;
}
return implode(",",$str);
};
for ($i = 1; $i <= 100; $i++) {
$ary1[($i-1)] = $check1($i);
$ary2[($i-1)] = $check2($i);
}
print implode(",", $ary1).PHP_EOL;
print implode(",", $ary2).PHP_EOL;
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 10, 15, 2, 3, 5, ary, check, FizzBuzz, function, hog, hoge, if, lt, php, STR, エンジニア, かなり, コード, こと, これ, ダイビング, タイプ, ところ, パス, ミス, りそう, 上, 余裕, 倍数, 問題, 場, 日本人, 時, 検証, 現役, 理由, 疑問, 皆, 結果, 緊張, 自分, 衝突, 解, 誰か, 道, 選手,
Anglesharpというライブラリの話。
2021.03.13
久しぶりに技術的なお話の記事を書きます。AnglesharpというのはC#などでスクレイピングするときにスクレイピングを補助してくれるライブラリで結構人気のあるライブラリなるようです。スクレイピングするコードは下記のようになります。この書き方が至ってシンプルで書きやすいのではないかなと思っています。
var Url = $"https://zip358.com/";
var querySelector = $"#index_post_list > li.clearfix.num1.type1 > div > h3";
var document = BrowsingContext.New(Configuration.Default.WithDefaultLoader()).OpenAsync(Url).Result;
var element = document.QuerySelector(querySelector);
Console.WriteLine($"blogtitle is {element.InnerHtml}");
このライブラリはとても良いのですが、一つ問題があります。スクレイピングするのですが・・・これjavascriptがOFFの状態でスクレイピングされるのですね。どうもこのコードではJSがONにはならないようですね。因みに自分はそのことを知っていなかったのでどハマリしました。大手の検索サイトなどはjavascriptがOFFの状態でも閲覧できるようになっている事を知りました、試しにブラウザをOFFの状態にしてみるとソースコードがかなり違っていてJSのONの状態とは情報が差異がある事が理解できると思います。
Anglesharpのコンフィグ設定(init)でエージェントなどを設定してあげると上手くJSがONの状態をスクレイピングすることが可能なのかもしれません。動画を見る限りではまだかもしれません・・・。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 3, 358, anglesharp, BrowsingContext, clearfix, com, Configuration, default, div, document, element, gt, https, index, li, LIST, new, num, OpenAsync, POST, QueryS, querySelector, quot, result, type, url, var, WithDefaultLoader, zip, お話, コード, シンプル, スク, とき, ピング, ライブラリ, レイ, 下記, 久しぶり, 人気, 書き方, 補助, 記事, 話,
ざわざわ[騒騒]と表現。
2021.03.07
初日にエヴァンゲリオンを見に行くことはないだろうなと今日、確信した。学生さんは休みだからか、初日の朝なのに結構な人が予約されていて映画館、エヴァヲタでいっぱいな気がします。なので、自分はその次の日にでも観に行けたら観に行きます。残念ながら失業中ですが貯蓄預金はまぁまぁあります。未だに実家暮らしなので、家賃や食費代がないのであとは、年金とサーバー代やドメイン代と何やらで月に2?3万円飛びますが、一応生きていけます。まぁこれでは駄目人間なるので仕事先を探しています。自分でお金を稼ぐというのは簡単ではないですよね。
フリーランスで働いている人がこれから増えていくのかもしれませんが、正直なところ、雇われて働く方がどんなに楽なことなのか。因みにITエンジニアが流行っていますが辞めておいた方が良い。この先、AIの技術が進み殆どのことはAIが出来るようになります。いずれプログラムコードも殆どが自動生成で生み出されるでしょう。なので生き残れるのはAIを開発できるエンジニアだけだと思います。あとはあまりいらないと思いますよ。
トイウコトデ。
逃げちゃ駄目だより・・・一体何が言いたかったんだろ。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, 3, AI, IT, いっぱい, エヴァ, エヴァンゲリオン, エンジニア, お金, コード, こと, これ, サーバー, ところ, ドメイン, フリー, プログラム, ランス, ヲタ, 万, 予約, 人, 人間, 今日, 仕事, 休み, 先, 初日, 失業, 学生, 実家, 家賃, 年金, 技術, 方, 日, 映画館, 月, 朝, 次, 正直, 殆ど, 残念, 気, 確信, 簡単, 結構, 自分, 自動生成, 表現, 観, 貯蓄, 開発, 預金, 食費, 駄目,
なるほど、よくわかりました。
2021.02.22
そういう事だったんだね。いまごろ理解する、いろいろな方法で非同期処理ができるだなと、ちなみにIE11でもPromiseは使用することが出来るみたい。そのかわりライブラリを読み込む必要はあるけれど・・・。IE11を開くとエッジを使用しようと勧めてくる。そろそろIEを強制的に削除すればいいのにと思っています。IEだとjsも制限が出てくるだよね。とくにコードを書くときにグレイヴ・アクセントとかいう記号「`」が使用できないのは痛いなと思います。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
11, IE, JS, Promise, アクセント, いま, いろいろ, エッジ, かわり, グレイヴ, コード, こと, とき, ライブラリ, 事, 使用, 処理, 制限, 削除, 同期, 必要, 方法, 理解, 記号,
今日はお休みなのに。
2021.02.20
今日はお休みなのに、クラウドワークスのお仕事に手を出してしまってへとへとな感じになっています。今日のAM2時頃から起きて12時まで作業して手取り2000円です、受注実績がほしくてトライしたのですが正直なところ割りに合わないかなと思いました。プログラムコード数は結構書きました、たぶん2000円以上の仕事をしている気がします。
あと土曜日、告知するということは仕事辞めることになりました・・・。まる三ヶ月間ぐらい、仕事をしたのですが社長さんと合わないのが、このさきも続くとなると、長くは続かないだろうし何よりシステムのことを理解していない人がトップにいると仕事が進めにくいのです、そんなこともあり辞めるのです。
前社長は、システム上がりの現役でコードを書いていたので、そういう面では良かったなと思います、辞めてこれからフルリモートの仕事をするのか、倉庫作業員になるか、悩んでおります。お給料が良いのはフルリモートですが、倉庫作業が懐かしくて・・・。悩ましいですね。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
12, 2, 2000, AM, お仕事, お休み, お給料, クラウド, コード, こと, これ, さき, システム, ところ, ドップ, トライ, プル, プログラム, まる, リモート, ワークス, 三, 人, 今日, 仕事, 作業, 倉庫, 前社長, 受注, 告知, 土曜日, 実績, 手, 手取り, 正直, 気, 現役, 理解, 社長, 面,
海外のチャンネルだけど良質、The Flutter Way
2021.02.06
海外のチャンネルだけど良質な技術を早送りではあるけれど、見えるというのはかなり意義のあるなと思います。デザインをコードにどう起こすのかが分かりやすく掲載されていて凄く助かるじゃないかな?特に初心者には助かるなと思います。Flutterは実はこのごろ、触っていないです。
リモートワークになってちょっと腑抜けていている状態になってますが、やはり勉強をしようとこの動画を見て思いました。こんなアプリ作れたら、やっぱ楽しいでしょうね。アプリもリリースしたいからね・・・。中断していたjavaの勉強も休日にごとごとするようにします。そちらは実名のqiitaに掲載していきます。Flutterでなにかアプリを開発したい人、勉強したいひとは下記からチャンネル登録どうぞ。因みに日本ではFlutter大学というチャンネルが有名ですかね。
https://www.youtube.com/channel/UCJm7i4g4z7ZGcJA_HKHLCVw 【The Flutter Way】
https://www.youtube.com/channel/UCReuARgZI-BFjioA8KBpjsw 【KBOYのFlutter大学】
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
4, 7, channel-, com, flutter, https, java, qiita, The, UCJm, way, www, youtube, アプリ, かなり, コード, ごろ, そちら, チャンネル, デザイン, ひと, リモート, リリース, ワーク, 下記, 中断, 人, 休日, 初心者, 勉強, 動画, 大学, 実名, 意義, 技術, 掲載, 日本, 早送り, 有名, 海外, 状態, 登録, 良質, 開発,
人のプログラミングコードを見て学ぶ。
2021.01.26
人のプログラミングコードを見て学ぶことが、大事だなと思うことがある、上に上があって「あぁぁ」と思うことも多々あるけれどやはり学び続けるしかないなと思う。近くに師がいなければ広大なネットから師を探せば良いと自分は思っている。切磋琢磨も良いけれど、師と思える人を探すことは大事だなと。
自分にはそんなに能力値が高いわけでもないし、技術力も秀でたものでもないだけども、やはり今の自分の能力に満足はしていなくてここまでは出来るようになりたいなと思えることがある。だからYOUTUBEやネットで技術者のコードを見ている、因みにやはり技術の高いプログラミングコードは余計なものがなくきれいだなと思える。数学の公式を見てこの公式は美しいというのは、ある意味わかる気がする。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
youtube, きれい, コード, ここ, こと, ネット, プログラミング, もの, わけ, 上, 人, 今, 余計, 公式, 切磋琢磨, 大事, 師, 意味, 技術, 技術力, 技術者, 数学, 気, 満足, 能力, 自分, 近く,
リモートワークという働き方を。
2021.01.16
リモートワークという働き方を体験してみた結果、仕事と私用の切り替えることが出来ないと大変な環境ですね。切り替えが大変なのです、、、。ですが慣れます切り替えが難しい人でも切り替えができるようになります。一番良い切替方法はアカウントを2つ作るやパソコンを私用と仕事用に分けるということです。自分の場合、仕事用に分けています。そうすることにより、切り替えができます。最初はこれで良いのかなどと思っていたのですが、そこまで考える必要はないということです。そこを考えるのは経営者の役割なので。。。
成果主義にどうしてもリモートワークはなってしまうというのは、よくわかります。自分の場合も仕事が早く終わってしまって見直しばかりしているときがありますが、見直しも仕事ですからね。
ちなみにリモートワークしていて思うのは、仕事が出来ない人は仕事に追われる可能性が高いと思います。仕事が追われないようにする方法は引き出しを何個かもっていて、汎用的につかえるコードを持っておくことが結構大事です。そうすることで、すこしロジックを変えることにより対応できるからです。
そして、リモートワークを続けていると待遇の良い仕事に転職したくなるという誘惑に負けそうになることが度々、発生しますがその時はじっくり見極めることが大事になると思います。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, アカウント, コード, こと, これ, そこ, とき, パソコン, リモート, ワーク, 主義, 人, 仕事, 体験, 何個, 働き方, 可能性, 場合, 大変, 引き出し, 役割, 必要, 成果, 方法, 最初, 環境, 私用, 経営者, 結果, 自分,
Yahooが567(コロナ)の情報を取り扱っているそれも県単位でURLまとめたよ。
2020.12.20
Yahooが567の情報を取り扱っている。567(コロナ)を県単位で情報を配信しているまとめリンクサイトを作りましたので、ご自由にお使いください。
リンクはこちらです。https://zip358.com/tool/demo28/
ソースコードとJSONを貼っときます。IT土方さんみたいな事をした?。
<script>
fetch("./assets/js/ken47.json").then(response => response.json()).then((data)=>{
let ken = [];
ken.push('<div class="list-group">');
for (const key in data) {
ken.push("<a class='list-group-item list-group-item-action' href='https://hazard.yahoo.co.jp/article/covid19" + data[key].roman + "' target='_"+ data[key].roman +"'>" + data[key].name +":::https://hazard.yahoo.co.jp/article/covid19" + data[key].roman + "</a>");
}
ken.push("</div>");
document.getElementById("covid19-link-list").innerHTML = ken.join("")
});
</script>
{
"1": {
"name": "北海道",
"roman": "hokkaido"
},
"2": {
"name": "青森",
"roman": "aomori"
},
"3": {
"name": "岩手",
"roman": "iwate"
},
"4": {
"name": "宮城",
"roman": "miyagi"
},
"5": {
"name": "秋田",
"roman": "akita"
},
"6": {
"name": "山形",
"roman": "yamagata"
},
"7": {
"name": "福島",
"roman": "fukushima"
},
"8": {
"name": "茨城",
"roman": "ibaraki"
},
"9": {
"name": "栃木",
"roman": "tochigi"
},
"10": {
"name": "群馬",
"roman": "gunma"
},
"11": {
"name": "埼玉",
"roman": "saitama"
},
"12": {
"name": "千葉",
"roman": "chiba"
},
"13": {
"name": "東京",
"roman": "tokyo"
},
"14": {
"name": "神奈川",
"roman": "kanagawa"
},
"15": {
"name": "新潟",
"roman": "niigata"
},
"16": {
"name": "富山",
"roman": "toyama"
},
"17": {
"name": "石川",
"roman": "ishikawa"
},
"18": {
"name": "福井",
"roman": "fukui"
},
"19": {
"name": "山梨",
"roman": "yamanashi"
},
"20": {
"name": "長野",
"roman": "nagano"
},
"21": {
"name": "岐阜",
"roman": "gifu"
},
"22": {
"name": "静岡",
"roman": "shizuoka"
},
"23": {
"name": "愛知",
"roman": "aichi"
},
"24": {
"name": "三重",
"roman": "mie"
},
"25": {
"name": "滋賀",
"roman": "shiga"
},
"26": {
"name": "京都",
"roman": "kyoto"
},
"27": {
"name": "大阪",
"roman": "osaka"
},
"28": {
"name": "兵庫",
"roman": "hyogo"
},
"29": {
"name": "奈良",
"roman": "nara"
},
"30": {
"name": "和歌山",
"roman": "wakayama"
},
"31": {
"name": "鳥取",
"roman": "tottori"
},
"32": {
"name": "島根",
"roman": "shimane"
},
"33": {
"name": "岡山",
"roman": "okayama"
},
"34": {
"name": "広島",
"roman": "hiroshima"
},
"35": {
"name": "山口",
"roman": "yamaguchi"
},
"36": {
"name": "徳島",
"roman": "tokushima"
},
"37": {
"name": "香川",
"roman": "kagawa"
},
"38": {
"name": "愛媛",
"roman": "ehime"
},
"39": {
"name": "高知",
"roman": "kochi"
},
"40": {
"name": "福岡",
"roman": "fukuoka"
},
"41": {
"name": "佐賀",
"roman": "saga"
},
"42": {
"name": "長崎",
"roman": "nagasaki"
},
"43": {
"name": "熊本",
"roman": "kumamoto"
},
"44": {
"name": "大分",
"roman": "oita"
},
"45": {
"name": "宮崎",
"roman": "miyazaki"
},
"46": {
"name": "鹿児島",
"roman": "kagoshima"
},
"47": {
"name": "沖縄",
"roman": "okinawa"
}
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
39, 47, 567, assets, class, const, data, div, fetch, For, gt, in, IT, JS, json, ken, key, let, list-grou, list-group, list-group-item, lt, push, quot, response, script, then, url, Yahoo, コード, こちら, コロナ, サイト, ソース, それ, まとめ, リンク, 事, 単位, 土方, 情報, 県, 配信,
Hallo worldの定番。
2020.12.11
<?php
print("Hello world");
「こんにちは世界」がコンピューター言語の参考書にもっとも記載されている言葉だと思います。誰がこれを始めたのか自分は知らないのですが、定番中の定番ともいえる言葉です。プログラマーなら誰しも知っているだろうなと思います。
いままで、プログラマーという職業は嫌煙されていましたが今でなりたい職業の中に入ってきました。これも時代の流れなのかもしれませんが実際、プログラマーってデジタル土方さんなんですよね。これは今でもそうだと思います、人がコードを入力して書いているわけですから・・・・。近い将来、人工知能が簡単なアルゴリズムなら書いてくれるとは思います。いまでも自らをコードを自己進化して成長する人工知能は存在します。
ただ、自己進化と口頭で言ったことからプログラムが出来る人工知能は未だ存在しません。ただ簡単なこと、例えばデザインをHTML化してくれるサービスは存在していて精度もなかなか良いです。またロゴを生成してくれる人工知能も存在していますが、やはりこれ以上の難しいことは人工知能は出来ません。
なので今後、20?30年はプログラマーという職業はなくならないと思っています。もっともらしい例を出すと電子書籍が登場しても本はなくならなかったという事です。今のところですけどね、遠い将来は消えているかもしれませんが。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Hallo, Hello, html, lt, php, print, quot, world, アルゴリズム, いま, コード, こと, これ, コンピューター, サービス, デザイン, デジタル, プログラマー, プログラム, 世界, 中, 人, 人工, 今, 入力, 参考書, 口頭, 土方, 嫌煙, 存在, 定番, 実際, 将来, 成長, 時代, 未だ, 知能, 簡単, 職業, 自ら, 自分, 自己, 言葉, 言語, 記載, 誰, 進化,
外部VPSサーバーからさくらレンタルサーバーのDBに接続する方法。
2020.12.04
外部VPSサーバーからさくらレンタルサーバーのDB(データベース)に接続する方法は下記のコードだけでは上手く動かない。だけど、tmpファイルを生成時にパーティションにu+xの権限を与えればこのコードは要件をみたします。因みにプロセスが残ったままになるので接続が終わったら、プロセスを削除してあげてください。なのでどのプロセスを削除する機能として追加しないと使えないかな?、時間があれば完成したコードをアップします。
なお、変数の初期値はご自身で入れてください。あとポート開放やexpectが入っていない場合はyumなどでインストールする必要もあります。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>ssh sqli</title>
</head>
<body>
<?php
print ssh_sqli_connect();
?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
<?php
function ssh_sqli_connect()
{
global $dblink,$dbname,$sshuser, $sshhost, $sshpassword,$host,$sshport;
$ret = null;
$cmd = "#!/usr/bin/expect -f
set timeout 3
expect -c \"spawn ssh -f -N -L $sshport:$host:3306 $sshuser@$sshhost -oStrictHostKeyChecking=no
expect \\\"$sshuser@$sshhost's password:\\\"
send \\\"$sshpassword\\n\\\"
\"
";
$tmpfname = tempnam(sys_get_temp_dir(), 'ssh');
$handle = fopen($tmpfname, "w");
fwrite($handle, $cmd);
shell_exec("sh $tmpfname");
sleep(3);
$dblink = db_connect();
try{
for($id = 1 ;$id<=99;$id++){
$ret = $dblink->query("SELECT * FROM $dbname.X.xtbl where $dbname.X.xtbl.id=$id;");
if ($cnt = (int) mysqli_num_rows($ret)) {
$row = mysqli_fetch_assoc($ret);
print ($row["id"].", ".$row["name"]);
}
}
}catch(PDOException $e){
echo "失敗: " . $e->getMessage() . "\n";
}
fclose($handle);
unlink($tmpfname);
db_close();
return "未完成";
}
function db_connect()
{
global $dblink, $host, $user, $password, $dbname,$sshport;
try {
$dblink = new mysqli("127.0.0.1", "$user", $password, $dbname ,$sshport);
//$dblink->set_charset("utf8");
return $dblink;
} catch (PDOException $e) {
echo "接続失敗: " . $e->getMessage() . "\n";
}
}
function db_close()
{
global $dblink;
$dblink->close();
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
8, charset, db, DOCTYPE, en, expect, gt, head, html, lang, lt, meta, name, quot, tmp, UTF-, vie, VPS, yum, アップ, インストール, コード, ご自身, サーバー, さくら, データベース, パーティション, ファイル, プロセス, ポート, まま, レンタル, 下記, 初期, 削除, 場合, 変数, 外部, 完成, 必要, 接続, 方法, 時間, 権限, 機能, 生成, 要件, 追加, 開放,
LLサイズ
2020.12.03
LLサイズなんて昔はタブダブだったのに今は丁度いい着心地です。えぇお腹がダボついています。冬になりますます、お腹周りの燃焼効率が悪くなっているように感じます。なぜ、こんなにもお腹周り皮下脂肪がついているのかなぁと自分でも疑問に思うこともあります。この頃、スリムになりたいという気持ちはあるもののウォーキングもいかず、家でゴトゴトと作業をしています。
在宅ワークはサボろうと思えばサボれるのだけど、性格上サボらずにゴリゴリとコードを書いています。そして仕事と私生活の境目が合間になるのでアカウントを分けています。混合すると何が何だか分からないので…。あと自分は時間外の労働はしないように極力しています。
これは前からそういう様に意識しているのです、在宅ワークの利点は集中して作業が出来ることですね。在宅ワークだと県外、県内の人材を募集できるのでIT関係なら良い感じかなと思います。これは企業側の良いところだと思うのだけど、マイナス点もあります。意思疎通が難しいなという点です、それが円滑に出来れば良いチームが作れるのではないかなと思います。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
IT, LL, アカウント, ウォーキング, お腹, コード, こと, これ, サイズ, スリム, タブ, ダボ, ところ, マイナス, ワーク, 人材, 今, 仕事, 企業, 何, 作業, 冬, 利点, 前, 労働, 効率, 募集, 合間, 周り, 在宅, 境目, 家, 性格, 意思, 意識, 昔, 時間, 気持ち, 混合, 点, 燃焼, 疎通, 疑問, 皮下脂肪, 県内, 県外, 着心地, 私生活, 自分, 関係, 集中, 頃,