webpに対応しましたプラグインでカバーしました。 Safariめ!!

2020.01.25

Logging

WebP Express(ウェッピーエクスプレス)というWordPressのプラグインがあるので、そちらでコンバート(変換)すれば良いのですが、大量に画像があるサイトはそれで変換できないので下記の対応方法で対応をお願いします。

1. WebP Express使用してコンバートする際に webpが生成されます。webpの生成場所を確認する。現在は下記の配下にwebp画像が作られています。

/wp-content/webp-express/webp-images/doc-root/wp-content/uploads

2.1の配下にwebpの画像を生成するために下記のコマンドを実行します。自分の場合、アップロードしている画像をリスト化して一括処理するプログラミングを実行しました。尚、cwebpがインストールされていない場合、インストールする必要があります。さくらレンタルサーバーには入っているみたいです。

cwebp -q 90 元画像名(階層を含む).png -o 変換後のファイル名.webp (変換先の階層を含む)

こうすることで画像は全てwebpに変換することが可能ですが、これだけでは表示が切り替わらないので下記の画像を参照しプラグインの設定を変更してください。

ちなみにこのwebp(ウェッピー)はグーグルさんが開発したものらしいです、大体のブラウザが、こちらの webpに対応しているのですがSafariとIEは非推奨みたいなんですよね。何れwebpに対応すると思います…思いたい。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

, 2.1, cwebp, doc-root, Express, Safari, uploads, webp, webp-express, webp-images, WordPress, wp-content, アップロード, インストール, ウェッピーエクスプレス, お願い, カバー, コマンド, コンバート, サーバー, サイト, さくら, そちら, それ, ため, プラグイン, プログラミング, リスト, レンタル, 一括, 下記, 使用, 処理, 場合, 場所, 変換, 大量, 実行, 対応, 必要, 方法, 現在, 生成, 画像, 確認, 自分, 配下, ,

大体のYOUTUBERの稼ぎが分かるサイト?

2020.01.23

Logging

これでHikakinTVチャンネルの収益を覗いてみると月の収入が凄いことになっている。もう一生分稼いでいるよね・・・。これぐらい稼ぎ出すと働くことの考え方が変わりそうな気がします。ちなみに自分の登録者数は片手で数えることが出来ます、そのためお金をYOUTUBEから貰えません。1000人以上で且つ再生回数規定の上限を満たしていれば貰えます。長い道のりで挫折しそうですがまずは登録者数を増やしたいと思っていますが増えない。
登録お願いします!!!!!!!!
https://www.youtube.com/channel/UCXjtswW2Yh9vF6jrIkHW9Fg?sub_confirmation=1

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

調べてみたい人はGさんでノックスインフルエンサーYOUTUBE分析サイトなどで検索するとヒットすると思います。ググルの面倒だと思うのでリンクを貼っときますね。 https://jp.noxinfluencer.com/

ちなみにノックスインフルエンサーで公開している収益は上記の動画でも言っている様にあくまでも目安です。

別話:自分のブログ名をググって見るとなんだか似たようなサイトが有りました。「まったりWEB」で検索すると一番に表示されるかと思いきや2番目でした・・・結構凹む。やっぱ一番に表示されたいな。一番に表示されているサイトもさくらサーバで運営されているようですが、自分よりサイトのレタリングが早い。これから5G(ファイブジィー)が普及すればここらへんが上位表示の判断基準から変わっていくと思いますが・・・まだ数年先の話なので今は早くサイトが表示できて情報の質が良ければGさんの評価は良いです。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

1000, com, HikakinTV, jp, noxinfluencer, youtube, YOUTUBER, インフルエンサー, お金, お願い, ググル, こと, これ, これぐらい, サイト, ため, チャンネル, ノックス, ヒット, ブログ, リンク, 一生, 上記, 上限, , 公開, 再生, 分析, 動画, 収入, 収益, 回数, 大体, 挫折, , 検索, , 片手, 登録, 登録者, 目安, 考え方, 自分, 規定, , 道のり, 面倒,

僕らはSNSでものを買うを読み終えたのでレビューWEB担当者用。#ウェブ担

2020.01.16

Logging

『僕らはSNSでものを買う』を読み終えたのでレビューします。
この結構まとえたWEB集客のノウハウを書いた本だなと思っています。
良かった点は何と言ってもSNSを使ったSNS集客の原理法則が書かれていた事です。しかし例題のような物は書かれていなく、どちらかと言えばそこは適材適所なので自分たちで考えましょうというニュアンスが強いですね。

それもそのはず、SNSのアカウントって殆どひとが開設して個人が情報発信やシェアのために使う物なのです、なのでまずはニーズが合致したユーザーを集客することから始めないと意味がないわけです。そのため本には具体的な方法は書かれていません。そこはWEB担当者が考えないといけないところです。

UGC(ユーザー投稿コンテンツ)やULSSAS( SNS時代の行動購買プロセスのことです )についての解説はわかりやすく書かれていますので良いかなと感じました。ちなみにサイト離れ進んでおり2020年は5G(ファイブジィー)の流れもあることからSNSからの集客は必須かと思います。

なぜサイト離れが進んでいるかと言えば、Gさんなどからの検索よりも口コミやSNS口コミ、評判、シェア等によるサイトへの訪問が増えてきているそうです。ついついIT関係者はパソコンで作業することが多いのでその延長で自宅でもパソコンを使用している人が多いかもと考えがちですが・・・。時代は流れ殆どの人はパソコンではなくスマホやタブレットなどからのサイトを訪れる人が増えているため、TwitterやInstagramなどのアプリから検索を使用してという形が主流になっているそうですよ。

そういう観点からも 『僕らはSNSでものを買う』 はWEB担当者は読んでおいて損はない本だと思います。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

SNS, UGC, ULSSAS, web, アカウント, ウェブ, こと, コンテンツ, サイト, シェア, そこ, それ, ため, ところ, どちらか, ニーズ, ニュアンス, ノウハウ, パス, ひと, プロセス, もの, ユーザー, レビュー, , 例題, 個人, 僕ら, 原理, 合致, 情報, 意味, 投稿, , 担当者, 方法, 時代, 本だな, 殆ど, 法則, , , 発信, 結構, 自分, 行動, 解説, 購買, 適材適所, 開設, 集客, 離れ,

QuartzJapan[クオーツジャパン]を知ってる?

2020.01.15

Logging

QuartzJapanを知ってる方はこの記事をスルーして大丈夫です。自分は今日知ったばかりです。クオーツジャパンとは簡単に言えば、これから先、世界で起こるHOTなサービスやテクノロジーなどの情報をメールとアプリで配信してくれるサービスです。

月額1000円で最新の情報が手に入るというのは良いかなと感じます。ただ自分、現在安定した収入がないので、契約を結びませんでしたがニューズピックスよりも情報が良さげかなと感じました。ニューズピックスは動画配信などに力を入れている為か肝心の記事は殆ど外部からのニュースでサイトを埋めている気がします。

実際、契約を結んでいないので評価し難いのですが朝と夕方に記事が毎日配信されるということです、サンプルを読む限り良い感じがします。ビジネスマンや最新の情報が読みたい人は下記より購買が可能になります。
なお、自分には一銭も収益は入りません…。

https://qz.com/japan/subscribe/payment/

Robotics pioneer believes machines will make us happier

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

1000, HOT, QuartzJapan, アプリ, クオーツ, こと, これ, サービス, サイト, サンプル, ジャパン, スルー, テクノロジー, ニュース, ビジネスマン, ピックス, メール, 一銭, 下記, 世界, , 今日, , , 動画, 収入, 収益, 可能, 夕方, 外部, 契約, 安定, 実際, 情報, 感じ, , , 最新, 月額, , 殆ど, 毎日, , , 現在, 簡単, 肝心, 自分, 記事, 評価, 購買, 配信,

SEOを解説しているYOUTUBER

2020.01.12

Logging

KYOKOさんと言う方がYOUTUBEでSEO解説やWEB副業の解説を
しています。SEOって結構怪しげな物も多いのですが
このひと、まともな事を語っています。

下記の文章は自分のSEO対策に関しての考えです。
アクセスを上げたいと考えているのならば
自分が発信したいものに2?3個をカテゴリーに分けて
最初は発信したほうが良いと思います。その2?3個のジャンルの中で
アクセス数が多いジャンルが必ず出てきます。
そうなったら、徐々にそのジャンルに焦点を当て記事を書いていく事を
オススメします。たまにどれも平均的なアクセスと言う場合もありますが。

あと、SEO対策を追っていくと切りがないので
最低限しないといけないSEO対策だけを行うことが良いと思います。
例えば、下記の動画にあるようにモバイルフレンドリーなどは大事かと思いますし、サイトの表示速度も大事です。表示速度は下記からテストが出来ます。

pagespeed insights(Gさんが提供しています)
https://developers.google.com/speed/pagespeed/insights/

最後にKYOKOさんのYOUTUBEチャンネルのリンクを貼っときます。

https://www.youtube.com/channel/UCF7IKesFOYQb34uzNiuNDqQ/featured

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

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

2, , insights, KYOKO, pagespeed, SEO, web, youtube, YOUTUBER, アクセス, あと, おすすめ, カテゴリー, こと, サイト, ジャンル, たま, テスト, どれ, ひと, フレンドリー, まとも, もの, モバイル, 下記, , , 副業, 動画, 場合, 大事, 対策, 提供, 文章, , 最低限, 最初, 焦点, , 発信, 自分, 表示, 解説, 記事, 速度,

一時間に一回だけAPIを実行するPHPのオブジェクトファイル

2020.01.10

Logging

あるユーザーが公開しているプログラミングを参考にして
オブジェクト化してみた。
参考にしたサイトのリンクは下記になります。
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

OFUSEで応援を送る

タグ

5.6, API, class, cron, hour, json, lt, php, public, timeKeeper, エラー, オブジェクト, キャッシュ, コード, こちら, サーバ, サイト, ソース, ダウンロード, ため, テスト, ファイル, プログラミング, ユーザー, リンク, , 上書き, 下記, 保存, 公開, 内容, 処理, 動作, 参考, 場合, 実行, 差異, 時刻, 時間, 更新, , 環境, 結果, 自分, 設定,

ブログはオワコンなのか?

2020.01.07

Logging

ブログはオワコンなのか?
アンサー:ブログはオワコンではないです、ただアフェリエイターはオワコンと
言えばよいのだろうか。アフェリエイターとしてはもう稼ぐのは
難しい時代になっているようです。

長く続けているブロガーは独りで生活できる収益を最低得ていると思います。
じぶんはまだまだ年月が浅いブログ書きなので、それほど収益はありません。
これで生活が出来なくても自分はブログを続けていくつもりでいます。

理由も特に無く、ただなんとく続けています。
ちなみにブログはもうオールドツールのような物だと思います。
いま、情報発信のツールといえばNoteやYOUTUBE、Instagram、
Twitterなどで発信すると良いと言われていてブログ単独での発信だけでは
アクセス数もなかなか難しい時代になっているようです。

とは言え、自分のサイトも徐々にアクセス数伸びています。
何だかよくわからないけど、過去のブログやリピーター様もいるようで
アクセス数は右肩上がりです。?
たまに三桁アクセス数になったりします、前はそれが当たり前だった時も
ありましたが、、一時期休んだりSEO的にマイナス的な事をして
数ヶ月、アクセス数が一桁に落ち込んだ事もありましたが
ブログを改善して徐々にアクセス数が戻ってきてます。

ありがとうございます。

そしてこの頃は
匿名質問箱で絡んでくれるユーザーもいて、何かブログ続けていて
良かったなと思います。知人ユーザーさんもいると思いますが
それでも有り難いものです。

話戻しまして、自分は昔から書き物や描きものをすることが
好きでして、それでブログを書き始めました。
いろいろなブログを立ち上げては閉鎖するなどの事を繰り返して
今のブログに落ち着いています。ブログオワコン時代でも
ブログという情報発信ツールは消えないと思います。

なので、これからもブログを書き続けていきます。
これからもよろしくお願いいたします。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

Instagram, note, Twitter, youtube, アクセス, アフェリエイター, アンサー, いま, オールド, オワコン, これ, サイト, じぶん, だだ, ツール, つもり, ブロガー, ブログ, リピーター, 単独, 収益, 右肩, 年月, 情報, 時代, 最低, , 独り, 理由, 生活, 発信, 自分, 過去,

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

2020.01.06

Logging

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

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

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


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

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

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

じぶんがYOUTUBERになるためには壁があるので無理ゲーですね。

2019.12.18

Logging

じぶんがYOUTUBEになるには壁がある。

1.チャンネルの過去12か月間の総再生時間が4,000時間
2.チャンネル登録者が1,000人

これを満たさないと広告収入が入らないというシステムになっている。
2に関してはお金を払えばチャネル登録者数は買えるらしいけど
チャネルがBANされてしまっては嫌なのでやらない。

顔出しは全然OKだけど、喋るのが全然ダメなので
YOUTUBERには向かないと思っている。

喋るのは未だに小学生低学年ぐらいの表現力しかないし
なにせ滑舌悪いので、視聴するには向かないかも。

綺麗な動画をUPさせてそれで収入を得るということは
自分の場合できる可能性は高いだけど、それには編集ソフトと
高スペックのPCが必要、いまのPCのビデオボードでは
無理ゲーだと思う、ただビデオボードを入れ替えれば可能性はある。

でも、なんだかそれもしたくない。
何というかカッコいいサイトとかよりゆるい事をだらーって
している方が良い。

方向性は決めていないけどYOUTUBEもUPしていきますので
チャネル登録お願いします。

https://www.youtube.com/watch?v=2BdSJwQ4jJU

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

000, , 2, 4, BAN, OK, PC, UP, youtube, YOUTUBER, いま, お金, ゲー, こと, これ, サイト, システム, じぶん, スペック, ソフト, それ, ため, チャネル, チャンネル, ビデオ, ボード, 再生, 動画, 収入, 可能性, 場合, , 学年, 小学生, 広告, 必要, 時間, 未だ, 滑舌, 無理, 登録者, 綺麗, 編集, 自分, 表現力, 視聴, 過去, 顔出し,

こういうの結構需要あるよね。

2019.12.01

Logging

こういうYOUTUBE動画は結構需要あるよねと思ってしまいます。
例えば、雨の街角を記録した映像とか、ほんと何気ないのだけど
ほんとにそういうのが好きです。

雨の音のアプリがあるのは、自分は納得しています。
自分も結構使っています。スマートスピーカーから雨音を一日中流すことも
あります。雨音って聞いていても雑音にもならないし、
逆になんだか落ち着けるので良いかなと思っています。

屋久島の夜音(虫の音色)も雨音と同じぐらい落ちけます。
ちなみに雨音聞かせてくれるサイトがあります。
https://www.rainymood.com/ 【昔は映像も流れてた】

こういった環境音っていま流行っているらしいですが…
休日は何も考えないでぼーっとこういう映像を観るのもリラックスに
良いかなと思っています。

Walking in Heavy Thunderstorm at Night in NYC (Umbrella Binaural 3D Rain Sounds) ASMR 4K

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

com, rainymood, youtube, アプリ, いま, こと, サイト, スピーカー, スマート, ほんと, リラックス, 休日, , 動画, , 屋久島, , 映像, 環境, 納得, 自分, , 街角, 記録, , 雑音, , 雨音, 需要, , 音色,

嘘半分のWEB事情、WEBのタブーを書いてみる。

2019.11.29

Logging

嘘半分のWEB事情、WEBのタブーを書いてみる。
毎日ブログを書けばブログのアクセスアップが出来ますよ。
これは半分本当で半分ウソである、いくら短文の投稿を有名人のように
毎日書いたとしてもアクセス数はほとんどアップしない。

かと言って長文を毎日書くとアクセス数は増えるかと言えば
そうでもない。Gさんは重要な記事なのか判断しそうでもないと
思えばその記事は検索候補にすらしないのだ。

よって、毎日長文を書けば何かのきっかけでバズる可能性はありますが
ほとんどの場合、アクセス数は増えないと思ったほうが良い。

一番って取り場合、アクセス数アップの方法を教えます。
アクセス数の多いドメインを購入し、そのドメインでブログやサイトを
運用するか、そのドメインのサーバ内(ルート直下)に
.htaccess(どっとえいてぃーあくせす)を設置し
現在の運用しているドメインへリダイレクトさせる方法で
アクセス数を伸ばす方法です。

いまWEB上でアクセス数を伸ばすことは非常に難しくなっています、
なので上記の方法をとった上で、広告宣伝を行いユーザーを増やす方法を
行っているのが賢明かと思います。

只これには非常にお金を必要とします、個人でお金をかけずに
アクセス数を増やす方法は、SNS(ソーシャルネットワークサービス)を
使用するしかなくそれでいて、バズるかフォロワー数を地道に増やさないと
アクセス数は増えていきませんし、この方法はアクセス数が
増えるかどうかは、その人達のセンスに比例します、なので非常に
難しいと思ってもらうと良いです。

ブログサービスが駆け出しだった時に毎日ブログを書いていたサイトが
あったのですが、そこはそれなりのアクセス数が日にありました。
なので、インターネットというのは何か新しいサービスが登場したら
まずは自分のサイトでも取り入れてみるというのは大事なことだと思います。

無料でアクセス数を増やしたい場合は、本当に毎日地道に
更新や発信することが大事なことだと感じます。

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

htaccess, web, アク, アクセス, アップ, いま, ウソ, きっかけ, これ, サーバ, サイト, タブー, ドメイン, パス, ブログ, ほとんど, リダイレクト, ルート, , , 事情, 何か, 候補, 判断, 半分, 可能性, , 場合, 投稿, 方法, 有名人, 本当, 検索, 毎日, 現在, 直下, 短文, 記事, 設置, 購入, 運用, 重要, 長文,

エンジニアはクラウドなんたらで働くより稼げる方法。

2019.11.10

Logging

フリーランスのエンジニアはクラウドなんたらで働くより稼げる方法は
エージェント(代理人)を通してお仕事をもらう方法が良い思います。

それなりに経験があるエンジニアさんは
この方法で働いたほうが稼げます、ちなみに関東、関西などで
働くということが大体、前提条件ですが、リモートワークの仕事もあります。

そのうち、リモートワーク案件も増えていくと思います。
東京で住んでいれば間違いなくフリーランスになっていたと思います。

【フリーランス エージェント】などで検索すればいろいろなサイトが
表示されます。【フリーランス エージェント 比較】などで
調べても良いかもしれません。

エージェント名 案件
(現場)数
フォロー
体制
最高単価 強みのある職種
フォスターフリーランス 
(旧スキルサーフィン)
人月
230万円
・ITエンジニア全般
レバテックフリーランス 人月
160万円
・多種多様なWebエンジニア
・多種多様なWebクリエイター
・Web/UIデザイナー
ハイパフォエンジニア 人月
130万円
・航空会社システムエンジニア
・FinTech関連立ち上げ
・消費財メーカーECサイト構築
・上流工程ITコンサル案件
Midworks
(ミッドワークス)
人月
160万円
・UIデザイナー
・Scala(スカラ)エンジニア
・ブロックチェーン(C#)
・AIエンジニア(Python)
・アプリエンジニア(Swift)
・Ruby(ルビー)エンジニア
techcareer freelance
(テックキャリアフリーランス)
人月
120万円
・サーバーサイドエンジニア
・アプリエンジニア
・フロントエンドエンジニア
・UI/UXデザイナー
Pe-BANK
(ピーイーバンク)
人月
200万円
・経験豊富なエンジニア
ハイパフォコンサル
(High-Performer Consultant)
人月
200万円
・航空会社システム移行推進PMO
・SAPシステムの再構築
・データイノベーション推進支援
ビッグデータナビ
(BIGDATA NAVI)
人月
150万円
・データサイエンティスト 
・SREエンジニア 
・レコメンドアルゴリズム構築 
・ビッグデータ基盤構築 
・各種データ解析 
・DevOpsエンジニア
ワークシップエージェント
(Workship AGENT)
人月
80万円
・UI/UXデザイナー 
・AngularJSエンジニア 
・Node.jsエンジニア 
・フルスタックエンジニア 
・広報/人事フリーランス 
・財務/ファイナンス 
・プランナー/マーケター 
・編集/ライター
ポテパンフリーランス 人月
100万超
・エンジニア
※特にRuby on Rails(レイルズ)
ITプロパートナーズ 人月
130万円
・Laravel開発エンジニア
・Salesforceエンジニア
・PHPエンジニア
・iOSエンジニア
・Androidエンジニア
・PHPエンジニア
・AWSサーバーエンジニア
・Javaサーバーエンジニア
・React.JS開発エンジニア
・UI/UXディレクター
・SEM広告ディレクター
・SEOディレクター
・Webディレクター
クラウドテック
(Crowdtech)
人月
120万円
・フロントエンドエンジニア
・Webデザイナー
・Webエンジニア
ギークス
(geechs job)
人月
100万円
・アプリエンジニア
・ゲームエンジニア
・ゲームデザイナー
エンジニアルート
(Engineer-Route)
人月
75万円
・Webデザイナー 
・フロントエンドエンジニア 
・AIエンジニア
みらいワークス 
(FreeConsultant.jp)
人月
180万円
・業務コンサルタント 
・ERP導入コンサルタント 
・PMO/SAP/BPR/PM
flexy 
(フレキシー)
人月
100万円
・アプリ開発エンジニア 
・PHPエンジニア 
・UI/UXデザイナー
Waris 人月
100万円
・営業/マーケター 
・コンサルタント 
・広報担当
ザッピーリンク 人月
160万円
・Webディレクター 
・Webライター 
・Webメディア編集者 
・Webマーケター

↑引用: https://web-director-lifehack.info/freelance-agent-refer/

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

いろいろ, うち, エージェント, エンジニア, お仕事, クラウド, こと, サイト, それなり, たら, フォロー, フリー, ランス, リモート, ワーク, 仕事, 代理人, 体制, 前提, 単価, 大体, 強み, , 方法, 最高, 条件, 東京, 案件, 検索, 比較, 現場, 経験, 職種, 表示, 関東, 関西,

高知県のダム貯水率をグラフ化してみた。

2019.09.21

Logging

高知県のダム貯水率をグラフ化してみた。
親戚にダムに勤めている人がいるのがきっかけで貯水率って
HPで表示させているのかなという事で調べてみました。
結果、かなり古いデザインサイトが現れた。
何とも懐かしい気持ちになりました。
そこでこの表からグラフ化してみたいなとか思って
ゴニョゴニョ作ってみた。
ちなみにソースコードが変わると
抜き取り出来なくなります。
追記:やはり変更されていました2へ続く
ソースコードを貼っときます。
ajaxとPHPを使用してます、XPathで貯水率だけ抜き取ってます。
サンプルサイト
https://zip358.com/tool/demo6/index.html

<?php
$html = file_get_contents("高知県のダム情報のURL");
$html = mb_convert_encoding($html,"UTF-8","SJIS");
$dom = new DOMDocument();
$html = mb_convert_encoding($html, "HTML-ENTITIES", 'UTF-8');
@$dom->loadHTML($html,LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
$ary=array(
    "nagase",
    "kamaidani",
    "kagami",
    "sameura",
    "kirimi",
    "sakamoto",
    "oodo",
    "nakasugawa",
    "iburigawa"
);
for($i=3;$i<=11;$i++){
    foreach ($xpath->query("/html/body/form/div[2]/table/tr/td/table/tr[$i]/td[7]") as $node) {
        $r[] = preg_replace("/x{00a0}/u","",$node->textContent);
    }
}
foreach ($r as $key => $value) {
    $obj[$ary[$key]] = $value;
}
print json_encode($obj);
$(function(){
    dam();
    //setInterval(dam,9999)
});
function dam(){
    $.ajax({
        url : './dam.php',
        dataType : 'json',
        success : function(obj){
            $("#nagase").attr( "style","width:"+ parseInt(obj.nagase) +"%");
            $("#kamaidani").attr( "style","width:"+ parseInt(obj.kamaidani) +"%");
            $("#kagami").attr( "style","width:"+ parseInt(obj.kagami) +"%");
            $("#sameura").attr( "style","width:"+ parseInt(obj.sameura) +"%");
            $("#kirimi").attr( "style","width:"+ parseInt(obj.kirimi) +"%");
            $("#sakamoto").attr( "style","width:"+ parseInt(obj.sakamoto) +"%");
            $("#oodo").attr( "style","width:"+ parseInt(obj.oodo) +"%");
            $("#nakasugawa").attr( "style","width:"+ parseInt(obj.nakasugawa) +"%");
            $("#iburigawa").attr( "style","width:"+ parseInt(obj.iburigawa) +"%");
            $("#nagase").attr( "aria-valuenow",parseInt(obj.nagase));
            $("#kamaidani").attr( "aria-valuenow",parseInt(obj.kamaidani));
            $("#kagami").attr( "aria-valuenow",parseInt(obj.kagami));
            $("#sameura").attr( "aria-valuenow",parseInt(obj.sameura));
            $("#kirimi").attr( "aria-valuenow",parseInt(obj.kirimi));
            $("#sakamoto").attr( "aria-valuenow",parseInt(obj.sakamoto));
            $("#oodo").attr( "aria-valuenow",parseInt(obj.oodo));
            $("#nakasugawa").attr( "aria-valuenow",parseInt(obj.nakasugawa));
            $("#iburigawa").attr( "aria-valuenow",parseInt(obj.iburigawa));
            $("#nagase").text(obj.nagase + "%");
            $("#kamaidani").text(obj.kamaidani + "%");
            $("#kagami").text(obj.kagami + "%");
            $("#sameura").text(obj.sameura + "%");
            $("#kirimi").text(obj.kirimi + "%");
            $("#sakamoto").text(obj.sakamoto + "%");
            $("#oodo").text(obj.oodo + "%");
            $("#nakasugawa").text(obj.nakasugawa + "%");
            $("#iburigawa").text(obj.iburigawa + "%");
        },
        error: function(obj){
            alert("error");
        }
    });
  }
<!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">
    <title>高知県のダム貯水率</title>
    <script src="../jquery/jquery-3.4.1.js"></script>
    <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
    <script src="./js/dam.js"></script>
    <style>
        body{
            background-color: #3e4654;
            color: aliceblue;
        }
    </style>
</head>
<body class="d-flex flex-column h-100">
    <main role="main" class="flex-shrink-0">
        <div class="container">
            <table class="table table-dark">
                <tr>
                    <td style="width:15%">
                        <p>永瀬ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress"  style="width:100%">
                            <div id="nagase" class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>鎌井谷ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="kamaidani" class="progress-bar progress-bar-striped progress-bar-animated bg-warning" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>鏡ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="kagami" class="progress-bar progress-bar-striped progress-bar-animated bg-info" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>早明浦ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="sameura" class="progress-bar progress-bar-striped progress-bar-animated bg-secondary" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>桐見ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="kirimi" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>坂本ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="sakamoto" class="progress-bar progress-bar-striped progress-bar-animated bg-warning" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>大渡ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="oodo" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>中筋川ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="nakasugawa" class="progress-bar progress-bar-striped progress-bar-animated bg-dark" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>以布利川ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="iburigawa" class="progress-bar progress-bar-striped progress-bar-animated bg-warning" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
            </table>
        </div>
    </main>
    <footer class="footer mt-auto py-3">
        <div class="container">
            <span class="text-muted">©zip358.com</span>
        </div>
    </footer>
</body>
</html>

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

2, 358, 6, 8, ajax, com, contents, convert, demo, encoding, file, GET, HP, html, https, index, lt, mb, php, SJIS, tool, url, UTF-, XPath, zip, かなり, きっかけ, グラフ, コード, ゴニョゴニョ, サイト, サンプル, ソース, そこ, ダム, デザイン, , , , 使用, 変更, 情報, 気持ち, 結果, , 表示, 親戚, 貯水, 追記, 高知県,

画像をタイル状に分離して一括ダウンロードさせるジェネレーター

2019.09.07

Logging

画像をタイル状に分離して一括ダウンロードさせるジェネレーターを
作ってみました。画像は自動的に削除されます?
あることをすれば他人の画像がアップした画像も削除されます。
ちなみに一括ダウンロードbuttonを押すと画像がサーバー上に保存され
強制ダウンロードが始まります。
動作はブラウザChromeオンリーです。
また一括ダウンロードを押すと複数のファイルを一括ダウンロードするか
どうかの問い合わせが表示されますので「はい」を
選択してください。尚、30秒以内に保存されていないファイルは
次々と削除されます。
サイトはこちらから
https://zip358.com/tool/demo5/index-14.html
ソースコードは下記になります。
ページ(base64生成+画像ダウンロード処理)

追記:zipファイルにより格納するように処理を変更しました。
参考にしたサイト:https://ex1.m-yabe.com/archives/4215

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>画像分離してダウンロード:画像分離ジェネレーター</title>
        <meta name="description" content="画像分離してダウンロード:画像分離ジェネレーター">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="../jquery/jquery-3.4.1.js"></script>
        <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
        <!-- Global site tag (gtag.js) - Google Analytics -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=UA-71682075-1"></script>
        <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());

        gtag('config', 'UA-71682075-1');
        </script>        
        <style>
            body{
                background-color: black;
                color: antiquewhite;
            }
            img{
                margin:10!important;
                padding:10!important;
            }       
            #container{
                width: 100%;
            }
            #container img{
                margin:10px;   
            }       
        </style>    
    </head>
    <body>
        <span id="bat"></span><a id="dl"></a>
        <input class="form-control" type="file"></input>
        <div id="container"></div>
        <script>
            $(function(){
                $("[type=file]").on("change",function(){
                    $('#container').html("");
                    $("#bat").html("");
                    console.log($(this));
                    if(!$(this).prop('files')[0].type.match(/[png|jpg|jpge|gif]/)){
                        alert("ファイル形式エラー");
                        return false;
                    }                        
                    var canvas = document.createElement('canvas');
                    var reader = new FileReader();
                    reader.onload = function(event) {
                        var image = new Image();
                        image.onload = function() {
                            sprite = {width:50,height:50};
                            canvas.width = sprite.width;
                            canvas.height = sprite.height;
                            var ctx = canvas.getContext("2d");                            
                            var x = 0;
                            for(var i=0; i*sprite.height<image.height; i++){
                                for(var j=0; j*sprite.width<image.width; j++){
                                    ctx.drawImage(
                                    image,j*sprite.width,i*sprite.height,
                                    sprite.width,sprite.height,
                                    0,0,
                                    sprite.width,sprite.height
                                    );

                                    var spriteElement = new Image;
                                    spriteElement.src= canvas.toDataURL();
                                    $('#container').append(spriteElement);
                                }
                            }
                            $("#bat").html("<input type='button' value='一括ダウンロード' onclick='bat_img()'>");
                        }
                        image.src = event.target.result;                       
                    }
                    reader.readAsDataURL($(this).prop('files')[0]);
                    
                });
            });

            function bat_img(){
                var data = [];
                for(var i=0; i< $("img").length;i++){
                    data.push({"base64":$("img").eq(i).attr("src"),"no":i});
                }
                $.ajax({
                    type: 'POST',
                    url: 'bat_img.php',
                    data:{"obj":data},
                    dataType: 'json'
                }).done(function(obj){

                    if(obj[obj.length - 1 ].chk=="ok"){

                        var link = document.getElementById("dl");
                        link.href = obj[obj.length - 1].zippath;
                        link.download = "zipimg.zip";
                        link.click();

                        var data2 = [];
                        for(var i = 0 ; i < obj.length ; i++){
                            if(i==0){
                                data2.push({Path:obj.path,no:obj.no,t:obj.t,"zipimgpath":obj[obj.length - 1].zippath});
                            }else{
                                data2.push({Path:obj.path,no:obj.no,t:obj.t});
                            }
                            
                        }

                       var del = function(){
                            $.ajax({
                                type: 'POST',
                                url: './bat_del.php',
                                data:{"obj":data2},
                                dataType: 'json'
                            });
                        };
                        del();
                    }
                    });
                }
        </script>
    </body>
</html>
<?php
$i=0;
foreach($_POST["obj"] as $key=>$val){
    $b64 = base64_decode(str_replace("data:image/png;base64,","",$val["base64"]));
    $no = (int)$val["no"];
    $t = time();
    $Path = "./bat_img/tmp/$t-$no.png";
    $re = @file_put_contents($Path,$b64);
    if($re){
        $obj[$i]["chk"] = $re?"ok":"ng";
        $obj[$i]["name"] = "$t-$no.png";
        $obj[$i]["path"] = $Path;
        $obj[$i]["no"] = $no;
        $obj[$i]["t"] = $t;
        $i++;
    }
}
$obj[--$i]["zippath"] = zipfile($obj);

print json_encode($obj);


function zipfile($obj){
    $ZipFiles = function($obj){
        foreach($obj as $key=>$val){
           $path[] = $val["path"];
        }
        return $path;
    };
    $Zip_Files = $ZipFiles($obj);
    $zipFileName = time().'_zipimg.zip';

    set_time_limit(0);
    $zip = new ZipArchive();
    $zipTmpDir = './tmp/zip/';
    $result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
    if( $result !== true ){ //エラー処理
      echo 'error!';
      exit();
    }
    foreach ($Zip_Files as $key=>$filepath) {
      $filename=basename($filepath);
    // ZIP圧縮するファイルを追加
    // ファイルパス・ファイル名としないと圧縮ファイルを解凍するとフルパスになる
      $zip->addFile($filepath,$filename); 
    }
    //ZIP 出力
    $zip->close();

    return $zipTmpDir.$zipFileName;
}
<?php

unlink($_POST["obj"][0]["zipimgpath"]);
foreach($_POST["obj"] as $key=>$val){
    $Path = $val["Path"];
    $no = (int)$val["no"];
    $t = (int)$val["t"];
    
    $cmd = function(){
        foreach(glob("./bat_img/tmp/*") as $file_name){
            $command = "rm -rf " . realpath($file_name);
            exec($command);
        }    
    };
    
    if(pathinfo($Path)["extension"]=="png" and preg_match("/bat_img\/tmp/",$Path)){
        if(is_file($Path)){
            sleep(30);
            unlink($Path);
        }else{
            $cmd();
        }
    }else{
        $cmd();
    }

}

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

, 14, 30, 358, 4, 5, 64, archives, base, button, Chrome, com, demo, ex, html, https, index, m-yabe, tool, www, zip, アップ, オンリー, コード, こちら, こと, サーバー, サイト, ジェネレーター, ソース, タイル, ダウンロード, はい, ファイル, ブラウザ, ページ, 一括, 下記, 他人, 保存, 処理, 分離, 削除, 動作, 参考, 問い合わせ, 変更, 強制, 格納, 生成, 画像, 表示, 複数, 追記, 選択,

TinyMCE 5.0でオリジナルプラグイン作成するはググれば何とかなるが?

2019.07.27

Logging

TinyMCE 5.0で独自のプラグインを開発するにあたって
ググれば4.0で作成する方法は山ほど例題があるのだけど5.0は
非常に少ないtinymce.windowManager.openを使用してのプラグインは
5.0でも案外簡単に見つかるのだけど、tinymce.windowManager.openUrlを
使用しての情報はググってもない。
唯一、公式サイトが記載しています。
しかし残念なことに全て英語で書かれています。

日本語で記載しろよという話だけど・・・・。
で!!tinymce.windowManager.openUrlで
何が出来るかと言えば外部ファイルを
読み込みが出来てそのレスポンスを受け取る事が出来るのです。
英語が嫌いでも原文で英語を読め!!ですよ・・・。
答えはそのページに書いているのですね。
※ちなみに会社でこの機能(e.windowManager.openUrl)を
使用し開発中です。
たぶん、自分みたいに困っている人もいると思うので
基本的な部分を記載しています、なお自作プラグインの作り方は
理解しているという前提で記載しています。
まず例としてPHPファイルを読み込みたいのなら
自作プラグインのPHPファイルに下記の記載を行います。

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="/tool/bootstrap/css/bootstrap.css">
        <script src="/tool/jquery/jquery-3.4.1.js"></script>
    </head>
    <body>
        <form method="post">
        <input type="text" name="L_japan" class="form-control">
        <input type="text" name="L_English" class="form-control">
        <input type="button" name="submitbtn" value="恩恵を受ける"class="btn btn-primary">
        </form>
        <script>
            var chageJson = function(data) {
            console.log(data);
            var JsonData = [];
            for (i = 0; i < data.length; i++) {
                JsonData[data[i].name] = data[i].value
            }
            //console.log(JSON.stringify(data));
            return JsonData;
            }
            $("[name=submitbtn]").on("click",function(){
                data = chageJson($("form").serializeArray());
                window.parent.postMessage({ mceAction: 'customAction',data:data});
                window.parent.postMessage({ mceAction: 'close' });
            });
        </script>
    </body>
</html>

PHPファイルはこのような感じでjavascriptが大事ここで、
submitを行っています。
当然、JSON形式で返却しましょう。公式ページにも書かれいますが
mceActionで制御しましょう。
プラグイン側のJSは下記のようになります。

(function() {
    tinymce.create('tinymce.plugins.language_boon', {
        init : function( ed,  url) {
            console.log(ed);
            act =function(ed)
            {
                ed.windowManager.openUrl(
                    {
                    type: 'panel',
                    title: '恩恵を受ける',
                    url:url + "/language_boon.php",
                    onMessage:function(api, details){
                      console.log(api, details);
                      console.log('オレオレjapan', details.data.L_japan);
                      console.log('オレオレEnglish', details.data.L_English);
                   }
                });
            };
            // window.addEventListener('message', function (event) {
            //   console.log(event);
            //   var data = event.data;
            //   console.log(data.data);
            //   if(ed.settings.id == data.data.id_){
            //     console.log('オレオレjapan', data.data.L_japan);
            //     console.log('オレオレEnglish', data.data.L_English);
            //   }
            // });
              ed.ui.registry.addButton('language_boon',{
                title : '恩恵を受ける',
                text: '恩恵',
                onAction:function(){act(ed)}
            });
        },
    getInfo : function() {
        return {
            longname : 'tinymce.plugins.language_boon',
            author : 'taoka',
            authorurl : 'https://zip358.com',
            infourl : 'https://zip358.com',
            version : '1.0'
        };
    }
});
        tinymce.PluginManager.add('language_boon', tinymce.plugins.language_boon);
})();

公式ページは下記のリンクより
https://www.tiny.cloud/docs/ui-components/urldialog/#urldialoginstanceapi
サンプルサイトはこちら
https://zip358.com/tool/editor/
 
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

4.0, 5.0, open, openUrl, TinyMCE, windowMan, windowManager, オリジナル, こと, サイト, ファイル, プラグイン, ページ, レスポンス, , 会社, , 作成, 使用, 例題, 全て, 公式, 原文, 唯一, 外部, 嫌い, 山ほど, 情報, 方法, 日本語, 機能, 残念, 答え, 簡単, 英語, 記載, , 開発,

ANA積立で決済する方法とiPhoneでウォレット追加する方法。

2019.04.09

Logging


ANA積立航空券で決済する方法ですが、
まずWEBで予約まで行います、次に下記のサイトに
書かれているANA旅行積立プラン専用デスクに電話します。
その後、WEBへログインし支払い期限が延長されている
事を確認します。
サイトにANA航空券(旅行券)を送る住所が記載されているので
封筒にそれらを明記しANA旅行積立プラン専用デスク 行と記入した
うえで、郵便局で簡易書留+追跡サービスで送りましょう。
※送付するときは必ず送付書を入れて送りましょう。
尚、往復の場合、余白に搭乗日時などを明記し上記の内容に
合算することを明記しましょう。
http://www.anas.co.jp/tsumitate/anaticket/use_ticket/dom_desk/index.html
iPhoneでウォレット追加する方法
下記のサイトから手順通り行うとうまく行くはずなのですが、
純正ブラウザ以外の場合、インストールできない場合があります。
なので必ずSafariを使用してウォレット追加しましょう。
https://www.ana.co.jp/ja/jp/serviceinfo/share/passbook/

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

ANA, anas, anaticket, co, desk, dom, htmliPhone, http, index, iPhone, jp, Safa, ticket, tsumitate, use, web, www, インストール, うえ, ウォレット, こと, サービス, サイト, それら, デスク, とき, パス, ブラウザ, プラン, ログイン, 上記, 下記, 予約, , 住所, 余白, 内容, 合算, 場合, 封筒, 専用, 延長, 往復, , 手順, 搭乗, 方法, 旅行, 旅行券, 日時, 明記, 期限, 決済, 確認, 積立, 簡易書留, 純正, 航空券, , 記入, 記載, 追加, 追跡, 送付, 郵便局, 電話,

年賀状CSVを作りました。SJISで保存してください。

2018.12.30

Logging

https://zip358.com/tool/nenga/
ブラウザ上で完結しています。
禁則処理などはありません、ただ純粋に入力したものが
CSV形式の文字列で出力されます。
これ何のために使えるかといえば
https://nenga.yu-bin.jp/
こちらのサイトで住所録を登録する際に使用できます。
タイトルにも描きましたがSJISの文字コードで出力をお願い致します、
また、データベースに保持などはしていないため
リロードしてしまうと全てのデータが消えてしまいます。
これを作った経緯。
自分が郵便年賀.jpで登録するのが面倒だったため作りました。

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

358, com, CSV, jp, nenga, SJIS, tool, yu-bin, zip, お願い, コード, こちら, これ, サイト, タイトル, ため, データ, データベース, ブラウザ, もの, リロード, 住所, , 使用, 保存, 保持, 入力, 全て, 処理, 出力, 完結, 年賀, 年賀状, 形式, 文字, 文字列, 登録, 禁則, 純粋, 経緯, 自分, 郵便, , 面倒,

頭でっかちみたいな記事ばかりなのに。

2018.07.22

Logging


頭でっかちの頭が悪いひとが書いている記事に
なんだかココまでアクセス数が上がるとは思いませんでした。

たぶん落ちなかったら1000ビューでした。
1000ビュー毎日あっても何も変わらないので、おそらくBOTちゃんか
何かだろうと未だに思っています。
なので、全然というほど喜びなし。
自分のサイト、広告とか全く打ち出していません。
Twitterとブログ記事だけでコツコツやっているだけです。
この頃は毎日記事も書かなくなりましたし
暇な休日にやることがないので記事を書いていますってぐらいです。
なのに、アクセス数は増えていまして
有り難いことですね、炎上かもしれませんが!!
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

1000ビュー, 1000ビュー毎日, BOTちゃん, Twitter, アクセス数, ココ, サイト, ブログ記事, ブログ運営×集客×マネタイズ, 人気ブロガー養成講座, 休日, 広告, 悪いひと, 有り難いこと, 炎上, 記事, ,

連休後半

2018.05.01

Logging


連休(GW)どこにも出かけない割合って
どれぐらいいるのだろうか。おそらく2?3割ぐらいは
どこにも出かけず家で休暇と考えている人もいると思います。
ちなみに昨日、音声ログというサイトを作りました。
ちょっとした事を月イチか週イチぐらいでつぶやきます。
そして自分の声は何だか弱々しくヘタレな声です。
本人が耳に聞こえる声とは全然違っていてショックでしたが
この声を変えるということは出来ないだろうから・・・。
あと、連休中はブログの更新はイマノトコロ、
続けるつもりでいます(今日は自分は仕事です)。
https://zip358.com/voice/

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

イジメ, イマノトコロ, サイト, どれぐらい, ひと, 休暇, 割合, 小学館新書, 更新, 月イチ, 本人, , 連休中, 連休後半, 週イチ, 音声ログ,

XからGCPへサーバ以降。

2018.01.27

Logging


メールサーバが動きません・・・動いているのかな?
自動送信メールが来ないので・・・分からないのですが
何とか、サーバ以降は出来たみたいです。
普通、こういうのは真っ昼間に移行なんてしないのですが
朝、サーバ以降途中で映画を見に行き、昼ごろから
サイトが見えた感じになっていると思います。
今回、GCPに移行した理由は一年間、無料だということと
会社で試験的に導入することになるみたいだから、その練習台として
稼働させたわけですが・・・。
案外簡単に導入することが出来ました。
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

GCP, X, サーバ以降, サーバ以降途中, サイト, メールサーバ, 一年間, 大事, 感じ, 昼ごろ, , 無料, 理由, 真っ昼間, 移行, 練習台, 自動送信メール,

このサイトは安全に接続できません。

2018.01.13

Logging


このサイトは安全に接続できません。
SSL(https)対応ではないと接続は安全ではありませんのような事が表示されるようにChromeが対応を行うらしいですね。あんまり嬉しくはない機能をChromeは導入するのでしょう。WEB業界は一時的に潤うかもしれませんが・・・?
尚、業者にボッタクられないように言っとくと、SSL対応費は基本無料でも出来ますので、あとはホームページ内のリンクなどを修正費用が一度だけ発生します。そこらへんの説明無しで高額な費用が発生した場合、おそらくボッタクリな金額を請求されています。お気をつけて・・・(*´ω`*).

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

Chrome, https, SSL, SSL対応費, WEB業界, お気, サイト, そこらへん, ホームページ内, ボッタク, リンク, 一度, 修正費用, 基本無料, 接続, 業者, 機能, 説明無し, 費用, 金額,

サイトのテコ入れ。

2017.10.05

Logging


サイトのテコ入れを行うことに
このサイトはアクセス数はまぁまぁあるのでテコ入れはしません。
ですが、その他のサイトは雀の涙程度のアクセス数しかないので、モール関係のサイトの
テコ入れを行うことに決めました。
検索に引っかかりやすい作りにするには、
ゴネゴネとプログラムで作って
固定ページが有るかのようにサイトを作り直さなければ、
おそらく検索には拾ってもらえないだろうから、下記のことを行うことに、
まず、必要な単語リストを生成し、その生成した単語からページを生成する。
容量はかなりあるので、動的なサイトより静的なサイトで
ページを構築します。問題は単語リストをどうするかなのです・・・。
単語リスト=辞書データなのですが
このフリー版を見つけるのが一苦労しそうです。
静的なサイトは辞書データが見つかれば
そのデータを元にバッチ処理(一括処理)を行えば
何とかなりそうなのですが。。。。
問題は辞書データかなと。。。。
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

アクセス数, かなり, サイト, その他, テコ入れ, バッチ処理, フリー版, プログラム, モール関係, 一括処理, 下記, 作り, , 単語リスト, 問題, 固定ページ, 容量, 検索, 辞書データ, 雀の涙程度,

httpからhttpsへ

2017.09.21

Logging


httpからhttpsへとか確かに大事だけど
それでアクセス数が急上昇することはないです。
全然アクセス数が上がらないわけでもないけれども・・・。
SSL化することによって商売などをしている人にとっては
サイトの信用を得られると思うのですが、この日本でもSSL化は
進んでいて自分の知るところでは4割のサイトはSSL化導入しているのだとか。
このままSSL化が浸透していけば9割近いサイトがSSL化を適応した
サイトになるのではと思っていますが!、そうなった時、SSL化することで
信用を得られることが無くなるのではないかと思っています。
ちなみにSSL化しなくても今後、http1.1からhttp2.0になれば
この問題は解決するので、http2.0になるまでSSL化しなくても良いのかもと
思ったりもしています。http2.0はグーグルが開発したSPDYがベースになっているの
だとか・・・ここでもグーグルが絡んでいるとは
まさにネットの覇王ですね。

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

9割近いサイト, B00PHC4480, http1.1, http2.0, HTTPS環境構築, SPDY, SSL入門, SSL化, アクセス数, グーグル, サイト, ネット, ベース, 信用, 商売, 覇王,

サイトの評価さげても意味はない。

2017.09.18

Logging


サイトの評価さげてもアクセス数を減らしても
意味はあまりない。もともと、このサイト、じぶんの日記として
始めたサイトなのでアクセス数が減ろうがグーグルの評価をさげても
続けるので、何一つ意味は無いかな。
このサイトの評価を下げるために何かしら
無駄な努力をしている人がいるのだけど、自分にとっては
無駄な時間を費やしているようにしか思えないのですね。
このサイトはグーグルの評価が下がって検索にヒットしなくても続けます。
最初は馬鹿にしていたと思いますが、毎日続けることの重要さは
日に日に増してきているのではないでしょうか?
無駄な努力はしなくても良いと自分は思っています。
一番無駄な努力とは人を毎日のように非難することです、これは一番無駄な努力です。
他者を非難することで自分の評価が上がることはないです。
むしろ下がる一方ですよ。
 
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

7, アクセス数, グーグル, サイト, じぶん, 一方, , 他者, 意味, 日記, 時間, 最初, 検索, 評価, 重要さ,

前、言ってたzip358.comモールが完成しました。昨日言っていたアレ。

2017.09.17

Logging


前、言ってたzip358.comモール(IT書籍紹介など)が完成しました。
昨日言っていたサイトが一部、リニューアルしたって
言うのはこの事です。当初はアマゾンAPIを使用して作るつもりでしたが、
途中で変更、理由は楽天の方がメリットが高いからです。
楽天アフェリエイトの場合その時、購入しなくても、ブラウザ上にクリック履歴が残っていれば
60日間、有効だということみたいです。これは結構、アフェリエイトの観点から
言えばメリットが高いから楽天APIを使用してモールを作ることに切り替えました。
ちなみに当初、モールのつづりを間違えてモルにしてました。
モルってモグラの事らしいです。英語とか勉強しとかないと
つくづく駄目だなと痛感。このサイト、結構アクセス数多目なので
モルで一日ぐらい放置していたと思うと・・・・。
赤っ恥ですね・・気づいてよかった。
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

IT書籍紹介, zip358.comモール, アマゾンAPI, クリック履歴, サイト, しくみ, つづり, ブラウザ上, メリット, モグラ, モル, 副収入, 当初, 楽天API, 楽天アフェリエイト, 痛感, 観点, 赤っ恥,