データサイエンティストって

2024.03.03

Logging

おはようございます、chatGPTとGeminiに「これから先に未来がありそうな職業はなにか」と質問したところ、人工知能に関わっている職業を提示された、人工知能以外には遺伝子医療やクリエイターなどだそうだ(Geminiの結果では)。

人工知能技術はこれから先、需要は伸びそうだけどもエンジニア止まりな気がしてならない。いまから勉強する人はPythonは必須だと思います。そして出来ればAPIを使用してナニカするより人工知能にデータを学習させてモデルを生成しそのモデルを使用して画像認識や制御するなどが出来る人が優遇される気がします。

プロンプトという職業は、誰もが慣れるのでたぶんすぐに飽和すると思います。先行有利なのでいますぐに(2024年)始めないと無理だと思います。速い人は2020年頃に始めているので、今からなかなか厳しいのではないだろうかと。

Introducing Sora — OpenAI’s text-to-video model

先日、OpenAIが発表したテキストから一分間の動画が生成される「Sora」を見てこれからは誰でもクリエイターだなって。でも誰もが人工知能でクリエイターに慣れる中で、本物のクリエイターは生き残るだろうなって感じました、そしてこれからは今まで以上に作る過程も大事になるだと思います。

明日へ続く。

タグ

API, chatGPTとGemini, gemini, OpenAI, Python, Sora, エンジニア止まり, クリエイター, テキスト, プロンプト, 人工知能, 人工知能以外, 人工知能技術, 必須, 本物, , 職業, 過程, 遺伝子医療, 需要,

PayJPの決済処理。

2024.02.06

Logging

おはようございます、PayJPの決済処理をLaravelに導入してみました。そんなに難しい話ではないけれど、クレジットカードの入力欄はPayJPさんにもう少しデフォルト状態で頑張って欲しかった。

変更は可能なのだけども、ちょっとイマイチ感があります。PayJPとグローバル展開しているStripeを比べるとやっぱStripeの方がビジュアル良いですよね。恐らくどちらも個人事業主でも審査が通るらしいので(全てのひとが通るとは限らない)、良さげだなって思っています。

今回、試したPayJPのAPIかStripeのAPIでサブスク決済を作ってみました。テストモードですがちゃんと動いていたので良かったです。これで決済処理部分は出来たのだけど、サービスモデルが無い、いろいろ考えて入るもののこれは良さげだなっていうのが無い感じですね。

HxHのサービスはこれ需要があるだろうと思って結局当たりました、なので自分はそれなりにこれ上手くいきそうなアンテナを持っています。アイディアが降ってきたらそれを作ろうと思っていますが、なかなかアイディアがでてこないのは外に出ていないからもしれないですね。

なんか無いかな~。

明日へ続く。

タグ

API, APIかStripe, HxH, Laravel, PayJP, PayJPさん, Stripe, アイディア, アンテナ, イマイチ感, グローバル展開, サブスク決済, テストモード, ぱStripe, ひと, 審査, 少しデフォルト状態, 決済処理, , 需要,

楽天市場のアフェリエイトを挟むように。

2024.01.20

Logging

おはようございます、正月休みに作業を行いました。作業内容は次のとおりです、個別記事に楽天市場のアフェリエイト広告を記事下にテキスト形式で自動追加するように対応しました。

技術的な話をすると楽天市場で返却してきたデータをオブジェクト形式に変換した後、シリアライズでデータを保管しています。呼び出すときはアンシリアライズします😌。データの保管期間は一ヶ月にしてなるべく楽天市場のAPIサーバーに問い合わせを行わないようにしています。

person wearing red hoodie
Photo by Sebastiaan Stam on Pexels.com

頻繁に問い合わせを行うと楽天市場のAPIからお叱りをかうようですので・・・。

今後の課題は、もう少し人のおすすめを記事に似せていきたいということですね。いま、あまり関係ない商品の広告が表示されている所があります。ここらへんを今後、改善していきたいと思っています。

ちなみに、記事から単語を取得してその単語で楽天市場のAPIサーバーに問い合わせを行っていますが、前述の通り精度がいまいちなので改善していきたいですね~。

追伸:辞めました。

明日へ続く。

タグ

API, APIサーバー, Photo by Sebastiaan Stam on Pexels.com, アフェリエイト広告, アン, オブジェクト形式, お叱り, シリアライズ, テキスト形式, とおり, らへん, 作業, 保管期間, 前述, 単語, 楽天市場, 正月休み, 課題, 追伸, 通り精度,

BlueSkyへ記事リンクをポストするワードプレスプラグインを作りました

2024.01.17

Logging

おはようございます、BlueSkyへ記事リンクをポストするワードプレスプラグインを作りました。詳しくはQiitaの記事を読んで頂いたらと思います。こちらでは技術的なことは記載しませんが、過去のブルースカイの投稿記事が役立つと思います。こちらもQiitaにも掲載しています。

作った経緯は、Twitterをイーロン・マスク氏が買収するまでは日本では匿名SNSの代表的なものと言えばTwitterだったと思いますが、買収騒動からユーザー動向を見ているとユーザーがいろいろなSNSサービスに移行していった感が強いです。分散化してしまったSNS。前のように一極集中には戻りそうにないので、APIがリリースされた順次、自動投稿をリリースしていこうと思ったのが経緯です。

いま、自動投稿で記事をUPしているのはX、マストドン、ブルースカイです。今年にはThreadsのAPIもリリースされるという噂があるのでリリースされれば作ります。

明日へ続く。

タグ

API, bluesky, qiita, SNS, threads, Twitter, X, イーロン・マスク氏, ブルースカイ, マストドン, ユーザー, ユーザー動向, ワードプレスプラグイン, 一極集中, 分散化, 匿名SNS, , 経緯, 買収騒動, 順次,

Xのリプライ(返信)とOpenAIのAPIで。

2023.11.30

Logging

おはよう御座います、Xのリプライ(返信)とOpenAIのAPIを組み合わせることで自動返信Botが出来るよね。作りはしないけど出来ると思います。ただ、XのAPIが無料でどこまで対応しているかは試してみないと分からないものがあります。

この頃、Xに新規ユーザーの海外フォローが毎日のように付くようになりました。これなんかのサービスかなとか思ったりしたのですが、他の有料会員さんのアカウントを見てもそんな現象が起きていないので、恐らく違うと思っています。毎日のように海外アカウントさんをブロックしています…。

自分がフォローしたい人は自分で決めたい。勝手に押し付けてきた何やら分からないアカウントは残念ながら日本人アカウントでも海外アカウントでもブロック対象になります。特に海外アカウントはなんか対象になりやすいですね、今の所フォローを置いとく気はないです…。

一番簡単のは非公開で運営すれば良いのだけども、非公開にしてもなんかその悪意あるユーザーさんの行為は収まりそうにないと思っています。そもそも何故、悪意をもっているのかが分からないのですが、自分が書いていた記事か何かで上手く行かなかったのかも知れません。

上手くいかないのを他人のせいにしていると、ますます上手くいかないと思っている。

明日へ続く。

タグ

API, OpenAI, X, アカウント, ブロック対象, ユーザー, リプライ, 他人, 対象, 悪意, 所フォロー, 有料会員さん, 海外アカウント, 海外アカウントさん, 海外フォロー, 現象, 自動返信Bot, 行為, 返信, 非公開,

レンタルサーバーへ移行。コンプリ😗

2023.10.18

Logging

おはよう御座います、レンタルサーバーへ移行致しました。最後のドメインも無事移行してAPIでデータを取得するように変更しました。この方法に変えたことによりいろいろな事がAPIを介して出来るようになります。

例えばレンタルサーバーでは難しい、生成AIなどを自前生成AIをAPIを介して取得することも可能です。ただ、GPUがVPSサーバーはショボいので、限りなく難しいですが出来ないことはないです。またpythonやnodejsでしか出来ないことなどもAPIを介して可能になります。

難点はレスポンスが気になるところです、あと負荷がかかるとうまく機能しない事もあります。なので、重たくなればまた新たな方法を考えます。いまの感じだと最後に移行したサービスは当分このままで、処理できると思います。

aroma beverage breakfast brown
Photo by Pixabay on Pexels.com

アクセス数も安定していて増えもせず、減りもしない状態のまま推移しています。このサービスをもう自分は誰かに譲渡したいのですが、運営してくれる人がいれば売却したいなって思ってますが…。今のところ見つからないので自分が運営していくしかないのかな🤔。

ここからは少しボヤキになります。アクセス数はあるのだけど、収益があまり上がっていないのが現状です、恐らく表示されている広告がミスマッチなんだろうなって思っていますが、どうすれば広告を変更することが出来るのかがあまり分かっていないのですね。うまくマッチした広告を出すことに成功すれば恐らく、いまの倍以上の収益が得れそうな気もします。なので、近々、調査してみます🚧。

明日へ続く。

タグ

API, GPU, nodejs, Photo by Pixabay on Pexels.com, Python, VPSサーバー, ショボ, データ, ドメイン, ミスマッチ, レスポンス, レンタルサーバー, 収益, 少しボヤキ, 最後, 現状, 生成AI, 自前生成AI, 負荷, 難点,

LaravelのAPIを作っていたので

2023.10.12

Logging

おはようございます。先日の休みにLaravelのAPIを作っていました。出来ること出来ないことが分かったので、メモとして残しときます。敢えていうと恐らくそうだろうという感じです。ではまずAPIを使用したい場合はweb.phpではなくてapi.phpを使用しないとAPIは機能しない。

APIにはcros.phpの設定は関係ないAPIをアクセス制御したい場合は、認証式にしないといけない。そうではない場合、どこからでも参照は可能になる

参照先サイトが分かれば何とかなると思っていたけれども、SSL化したサイトからAPI叩かれたら参照先、分からないよねって話。ミドルウェアでIPから制御する方法はあるので認証式にしたくない場合はそちらの方法で何とかしてください。

自分はphpのcrulで制御するので、基本、ワイヤーシャークとか入れてないとエンドポイントが分からないので、認証式にしないで運用する方向で調整中です。

基本的にAPI出来たので、VPSサーバーで動いているWEBサービスも今月中に移動します。まだVPSサーバーは一年契約なので起動していますが、延長契約は結ばずダウングレードしたVPSサーバーと新たに契約を結ぶつもりでいます。

タグ

API, api.php, cros.php, crul, Laravel, php, SSL化, VPSサーバー, web.php, Webサービス, エンドポイント, ミドルウェア, メモ, ワイヤーシャーク, 休み, 参照, 参照先, 延長契約, 方向, 認証式,

サーバーをVPSからレンタルサーバーへ移行。

2023.09.27

Logging

おはようございます、サーバーをVPSからレンタルサーバーへ移行しています。このまま順調にサーバー移行が進めば年内に、一つのWEBシステムを残してあとは全て移行が完了します。最後のWEBシステムもレンタルサーバーでは出来ない部分だけをAPI化してあとはレンタルサーバーに移行し、そこからAPIを叩くようにする事も可能かなと思っているので、最終的には全てのドメインをレンタルサーバーに移行出来るかもしれません。

いま、VPSで運用しているドメインは広告が付いているので移行する際は広告を一旦停止して作業しないといけないのと、サービスが不安定になるので恐らくアクセス数の多いサイトは深夜帯で移行するつもりです。ちょっとアクセス数が多いので個人サイト以外は告知して移行するつもりです。

恐らく一番乱暴に移動するのはこのサイトだと思います。ごめんなさい。

因みに、大半のドメインは先日、移行を終えています😌。

タグ

API, API化, VPS, WEBシステム, アクセス数, サーバー, サーバー移行, ドメイン, レンタルサーバー, 一旦, 全て, 全て移行, 大半, 年内, 広告, 最後, 深夜帯, 移行, 部分, ,

DMMのアフェリエイトを始めてみました。

2023.08.17

Logging

おはようございます、DMMのアフェリエイトを始めてみました。始めてみたけれどこのブログには埋め込むことが出来なかったので、@tosajin_kochiで少量的にポストするので様子見します、結果が出ないようだったら辞めて何か違うことに変更してみます。何故、今になってDMMのアフェリエイトを始めたかといえば、APIを調べているうちに女優さんサーチのAPIというものがDMM.comさんにはあることを知り。これで少し小遣い稼ぎが出来るじゃないのかと思ったのがきっかけでした。

実際、このAPIを使用してみた結果。女優さんといってもR18系の女優さんが検索結果に表示され、広告のリンクもFANZAへ飛ぶようになっていたのでさくらレンタルサーバーやVPSでは使用できないので断念しました。色々調べているとR指定でもOKなサーバーがあることにはあるって事を知ったんだけども、なんだかそこまでして稼ぐのも何だなってのが頭をよぎり辞めました。

Creepy Nuts – かつて天才だった俺たちへ / THE FIRST TAKE

女優さんサーチというAPIにも難点もあります、女優さんの顔などもレスポンスとして受け取ることが出来るのですが、画像が荒く問題ありです。DMMさんのアフェリエイトの規約により画像加工などは駄目だと書かれていますので、使用するのは名前だけで名前から商品画像を再度表示するように切り替えれば、稼げる可能性はあるかなと思いますが、検索上位に表示させるのは至難かなと思います。

こういうことは誰でも考えるので、利益は出ないだろうと思います、ネットの世界では後発で当てるのは少々難しいです。

タグ

API, DMM, DMM.comさん, DMMさん, FANZA, tosajin_kochi, VPS, アフェリエイト, きっかけ, サーバー, さくらレンタルサーバー, レスポンス, 再度, 利益, 女優さんサーチ, 少し小遣い稼ぎ, 後発, 検索上位, 規約, 難点,

SNSすれっずのここを直してほしいは一つだけ。

2023.07.14

Logging

おはようございます、SNSすれっずのここを直してほしいは一つだけです。スレッズとは旧フェイスブックが作ったTwitterのようなSNSサービスです。そのスレッズを二、三日使用してみた感想はまぁTwitterに似てるよね。でもフォローしていない人のつぶやきも表示されるのが、ちょっと困る。Twitterにもおすすめ機能があるのだけど、Twitterと違って結構、NG系(グロい)がたまに表示されたりします。

そこがTwitterとは違うところですね。それさえなければ全然良いのだけどそれがあるので今のところ、自分はスレッズはサブで使用する感じですね。あとこれがそのうち登場するだろうけど、開発者向けにAPIを公開してほしいなぁと思っています。これは先の話だと思いますがメタ(旧フェイスブック)社も実装するとは思っています。

トイウコトデ、ここ直してほしいでした~🐓。

タグ

API, NG系, SNSサービス, SNSすれっ, Twitter, うち, おすすめ機能, グロい, サブ, スレッズ, トイウコトデ, ところ, メタ, , , 感想, 旧フェイスブック, 自分, , 開発者向け,

TwitterとMastodonに同時配信するツールを作成

2023.07.08

Logging

おはようございます。先日、Twitter民がAPI制限で表示がされない問題が起きていた時に、TwitterとMastodonに同時配信するツールを作っていました。普通につぶやくのは前にコードを作っていましたので、それを流用して簡単に出来るなぁなどと思いながら作っていたら画像も添付した状態でつぶやきたいという欲が出てきて沼にハマりました。

Twitterの方は画像添付のつぶやきも簡単にできたものの、Mastodonで沼にハマりました。PHPにはcurlのメソッドがあります、これを使用してAPIに指示を出す感じです。ドキュメントにはヘッダーとともに必須項目を送信すればトゥート(つぶやける)できるよと記載されていたのだけど、実際はユーザーエージェントの値も送信しないと上手く動作しない仕様になっていました。

これはちょっと酷くない?と思いながら数時間悩み、その後、パラメーターの文字化けするという問題に沼にハマりここで数分悩んでいました。結局、全て自己解決したのですが調べても生成AIを頼っても答えが出ない場合は、今までの自分の知識や経験がある方が優位だなって感じました。

トイウコトデ、Qiitaでも掲載したのですがこちらでも解決策を記載します。

<?php
class Mastodon
{
    const host = "mstdn.jp";
    const endpoint1  = "/api/v1/statuses";
    const endpoint2  = "/api/v1/media";

    public function toot($text){
        $data = array('file' => new CURLFile("/var/www/html/t_m/image.png", 'image/png', "image.png"));
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://" . self::host . self::endpoint2);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['User-Agent: ' . $_SERVER['HTTP_USER_AGENT'], 'Content-Type: multipart/form-data', 'Authorization: Bearer ' . MSTDN_ACCESSTOKEN]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        $response =   json_decode(@curl_exec($ch));
        curl_close($ch);
        if (isset($response->id)) {
            $postdata = [
                "visibility" => "public",
                "media_ids" => [$response->id],
                "status" => strip_tags($text),
            ];
            $data = json_encode($postdata);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, "https://" . self::host . self::endpoint1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            curl_setopt($ch, CURLOPT_HTTPHEADER, ['User-Agent: ' . $_SERVER['HTTP_USER_AGENT'], 'Content-Type: application/json', 'Authorization: Bearer ' . MSTDN_ACCESSTOKEN]);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            $response =  @curl_exec($ch);
            curl_close($ch);
        }
    }
}

タグ

'User-Agent', API, application, array, Authorization, Bearer, Content-type, curl, false, isset, json_decode, mastodon, multipart, qiita, quot, Twitter, VERIFYHOST, トイウコトデ, トゥート, ユーザーエージェント,

副業OKな会社が増えているらしい。#副業

2023.06.27

Logging

おはようございます、昨日の続きです。働いている会社は副業OKなので何か副業をしたいなって思っています。例えばビットコインの自動売買を運用するなど考えたことがあります。因みにビットコインの自動売買をさくらレンタルサーバーとかでやっては駄目です。規約でそういう文言があります、違反した場合、見つかればサーバー停止になりますので注意しましょう。

自動売買している人は大体、自社サーバーかAWSあたりを上手く使用して運用している気がします。AWSが自動売買を許しているかは分からないので確認が必要です。

自動売買してみたみたいな動画は結構YOUTUBEでもありますが、儲けたよとかいう話はあまり聞かないので、やはり運用は難しいようです。楽して儲けるということは出来ないだというのが定説だと思いますが、これからは機械学習を上手く活用できる人が波に乗れると思っていてます。

特にデジタルな分野ではその傾向が強くなるじゃないかって思います。自分は機械学習を絵の具のように使いこなせないけど学習済みのモデルやAPIを駆使すればなんとか出来るので何とか活用して、何か副業に活かせればと思っています。

タグ

API, AWS, youtube, サーバー停止, さくらレンタルサーバー, ビットコイン, 傾向, 分野, 副業, 副業OK, 売買, 学習済み, 定説, 文言, 機械学習, , 絵の具, 自動売買, 自社サーバーかAWSあたり, 運用,

昨日まで英語の記事でした。実験的な何か?。

2023.06.24

Logging

おはようございます。昨日まで英語の記事でした。実験的な何かです?

chatGPTに日本語記事を英語の記事にしてもらいました。来週の水曜日にchatGPTを使用したワードプレスでプラグインを公開します。2つほどプラグインを作ります。1つ目は日本語記事をプラグインで英語に変換するプラグインです。もう一つはちょっと問題作なのでアルゴリズムとソースコードを公開します。

これからchatGPTのAPIを活用したプラグインが続々と世に出ていくと思いますが、やはりchatGPTはテキストの相性抜群だと思います。因みにワードプレスのプラグインのソースコードを書いてと問い合わせを行えばソースコードの例文を書いてくれますが、これがちゃんと動くかどうかは微妙ですね。

chatGPTはたまに間違った返答を書きます、なんだか人を試しているかのように。それを見抜く力がないと大変です。なのでchatGPTを使用するには一定量の知識が必要になりますし検証は大事です。今の機械学習の精度は問い合わせにより解答の精度が違いますので、知識量が多いと上手く解答を導き出すことが出来るかと思います。

タグ

API, ChatGPT, アルゴリズム, ソースコード, テキスト, プラグイン, ワードプレス, 一定量, 例文, 問題作, 検証, 機械学習, 水曜日, 相性, 知識, 知識量, 精度, 英語, 解答, 返答,

Gさんが提供するVertex AI VisionAIを使用してみて。

2023.04.04

Logging

おはようございます。Vision AIで画像解析の精度を試しみた結果、これで良いかなと思い始めています。これを使用して「釣ったー」という釣り画像をシェアするサイトを作ろうかなって思っています。問題だったのが魚が写っている写真なのかを判別することが問題になっていました。当初はtensorflowで提供されている学習済みのモデルを使用したJSライブラリを使用して画像の判別しようと思っていたのですが、これ少し難がありモデルの精度がいまいちな所があります。

サービス提供する側としては、あまり変な画像をUPされるとその対応に時間を費やさないといけないので、そこは避けたい所があります。文章での誹謗中傷は現在、誹謗中傷に特化したデータを自分がもっているので、その方法を使用することである程度、投稿の判別は可能になっていましたが、前文で書いた通り画像の判別は難です。

今から魚のデータセットを取り入れたとしても、学習させるPCが存在しない。いつも使用しているPCでは、学習させることは可能だけどさて、どのぐらい時間を費やさないといけないのかなどの問題があるので断念。旧PCはあるにはあるのだけど機械学習させるスペックではないので断念した。

そのため機械学習モデル済みのモデルが必要になった。モデルを探すより、学習済みのAPIを使うのが手っ取り早いと思ったので、AWS、Azure、GCPという候補の中でざっくり考えた結果。

GCPに軍配が上がって、試してみた結果。良好だったのでそちらを使用することにした。

尚、VisualAPIを使用するにあたって参考にしたサイト。環境変数などの設定などは如何なものかと思ったのでそこは参考にしていない🙄。

https://www.asobou.co.jp/blog/web/vision-api

https://packagist.org/packages/google/cloud-vision

注意事項として画像をひとつ添付する。左の項目最下のマーケットプライスの中にVertex AI VisionAIが組み込まれているので、それを有効にすること。後は上記のリンクを参考にすると上手く出来ると思います。

タグ

AI VisionAI, API, AWS, Azure, GCP, JSライブラリ, tensorflow, Vertex, VisualAPI, スペック, マーケットプライス, , 判別, 前文, 断念, 環境変数, 精度, 誹謗中傷, 軍配, ,

Twitterの有料会員じつは減少傾向にあるじゃないのか説。

2023.03.09

Logging

おはようございます。

自分はTwitterの有料会員ですがそのメリットを未だに感じません。自分がフォローしている人の中にも有料を解約したって人を見かけます。自分もこのままだったら有料を解約するかもなって、あまりお金を支払っているのに何か無料会員とあまりにも差を感じないかなって思えます。

Twitter創業者だけど質問ある? | Tech Support | WIRED.jp

980円は高いよな、500円ぐらいじゃないかなって思えて仕方がないけど、実際、インフラの事を考えると980円は妥当かなと思ってしまいますね。おそらく有料会員がいまのTwitterのインフラを支えているような気がします。因みにAPIが一万円は一個人としては高いかなと思いますが、企業として考えるとこれも妥当な金額なのかなって感じます。

やはりインフラやプラットフォームサービスというのは、なかなか代替えサービスって無いですよね、そんな中、ジャック・ドーシー氏が推しているブルースカイというTwitterみたいなサービスのクローズテストが始まりましたよね。自分はもしこちらが普及したらこちらに移行するつもりでいるのですが、早くても今年の年末ぐらいにリリースされそうな気がしますので、まだ先の話です。

タグ

API, Twitter, インフラ, クローズテスト, サービス, ジャック・ドーシー氏, プラットフォームサービス, メリット, 代替えサービス, 企業, 妥当, 実際, , 年末, 有料, 有料会員, 未だ, 無料会員, , 金額,

MastodonAPIに先週の日曜日に鞍替え。#脱TwitterAPI有料化

2023.02.10

Logging

おはようございます、TwitterAPIの有料化始まりましたね😖。

企業ではどういう対応を取るのでしょうか。個人で作っていたサービスはサービス閉鎖する人達が増えてきましたね。自分もBotで高知県の企業を応援するサービスを作っていたのだけど、2月5日にサービスを停止しました。

このブログは予約投稿なので、これが配信された時にはTwitterから具体的なAPIの値段などが発表されていると思います。その発表次第ですがBotを再稼働するという選択も残っているのですが、どうなるかは分からないです。

そんな中でPHP言語を使用しMastodonのAPIを使って「投稿だけ」する。コードを書きましたのでお裾分けです。

https://qiita.com/taoka-toshiaki/items/483340a28c03a1828400

php Mastodon.php 'テスト投稿です'
<?php
require "config.php";
class Mastodon{
    const method = "POST";
    const host = "mstdn.jp";
    const endpoint  = "/api/v1/statuses";
    public static function toot($postdata = null)
    {
        if(!is_null($postdata)){
            $data = http_build_query($postdata);
            exec('curl -X POST -d "'.$data.'" --header "Authorization: Bearer '.ACCESSTOKEN.'" -sS https://'.self::host . self::endpoint.'; echo $?',$output);
            var_dump($output);
        }
    }
}
//    「未収載」    -> 'unlisted'
//    「公開」      -> 'public'
//    「非公開」    -> 'private'
//    「ダイレクト」 -> 'direct'
if($argv[1]){
    $postdata = [
        "visibility"=>"public",
        "status"=>strip_tags($argv[1]),
    ];
    Mastodon::toot($postdata);
}
<?php
define('ACCESSTOKEN','xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

タグ

ACCESSTOKEN, API, argv, Authorization, Bearer, BOT, echo, endpoint, exec, gt, header, lt, mastodon, null, php define, php require, quot, toot, Twitter, TwitterAPI,

TwitterのAPIが有料になるのはなんとなく想像は付いていた。

2023.02.08

Logging

おはようございます、イーロン・マスクさん。

TwitterのAPIが有料になるのはなんとなく想像は付いていたけど、本当に有料化に踏み切るところがイーロン・マスクだと思った。今まで無料でAPI使えていたわけだから、グーの手も出ないという訳ではない。

多分、これで使えなくなるサービスは確実に出てくると思うけど、これ誰得なのか?何だかTwitter離れが加速しそうなそんな予感すらする。小鳥たちは大空へ羽ばたいて行く一方ですね。。。

因みに有料化になったら値段によりけりですが、お金を支払う可能性ありですが高額ならBOTはストップすることになります。

自分としてはBluesky Socialを推しています。Twitter創業者が関わっているサービスなのでもしかすると、広まる可能性が高い気がします。

タグ

API, Bluesky Social, BOT, Twitter, Twitter創業者, Twitter離れ, イーロン・マスク, イーロン・マスクさん, グー, サービス, ところ, 予感, 値段, 大空, 小鳥たち, 想像, , 有料, 有料化, ,

漁港マップや潮汐APIで何を作っているか分かるだろうけど実は。 #api #釣り人的な。

2022.12.13

Logging

おはようございます、釣りは中学生と二十代に少しだけしただけです😱。

この頃Twitterに漁港マップや潮汐APIが取得できたよとかツイートしているので何を作ろうとしているか、徐々にわかってきた人もいると思うのですが、実はまだ着手はしていない。部分的に創れるかどうか調査しているところです。

難題だと思っていた潮汐ですが、APIを見つけたので何とかなりそうな気がしています。これが無かったら難しい計算式を理解して、コードに落とさないといけない作業が発生するところでしたが、そこがカバー出来たのは大きいです。どんなサービスを作ろうとしているかと言えば、釣り情報を共有する釣りマップというサイトです。この釣りマップを作ろうと構想して数年は経過しています。

創りたいけど、自分はズブの素人なのでどういうサイトにすれば良いのかが分かっていないのが痛い。手探りで作ろうとはしているもののまだ先の話。この釣りマップというサイトは、使い勝手良いものにしたいし、釣りしている人はスマホがメインだと思うとUIがしっかりしたものでは駄目だなって思います。

誰かアドバイスしてくれる人がいれば良いのだけども…。

タグ

API, UI, コード, この頃Twitter, ズブ, , マップ, メイン, 中学生, 二十代, 作業, 手探り, , 漁港マップ, 潮汐, 潮汐API, 着手, 素人, 難しい計算式, 難題,

お天気APIを試してみました。#超簡単コード

2022.11.21

Logging

おはようございます、今日は天気APIの話なので天気のお話はしませんが…。

さて、超簡単コードを記載しています。下記のソースコードとオープンウェザーマップのAPIKEYがあれば、誰でもプログラマーです。という事を言えば後ろから蹴られそうですが…。先ずは簡単なコードを見て勉強するのが大事かなって思います。

お天気APIを試してみました。#超簡単コード
API

いきなり難しいことを身に着けようと思っても、三日坊主になって先に進まないのが世の常ですw。なので、簡単なコードで楽しんで勉強するほうが大事かなって。

<?php
require "./assets/config.php";
$lat = "33.55972";
$lon = "133.53111";
$lang = "ja";
$url = "https://api.openweathermap.org/data/2.5/weather?units=metric&lang={$lang}&lat={$lat}&lon={$lon}&appid=".APIKEY;
$hasWeatherdata = json_decode(@file_get_contents($url));
print($hasWeatherdata->weather[0]->description);
print("<img src='./assets/images/". $hasWeatherdata->weather[0]->icon .".png'>");
print((int)($hasWeatherdata->main->temp) . "℃");

タグ

0, 133.53111, 33.55972, API, APIKEY, assets, com, config, ea, https, ja, lang, lat, lon, lt, php, quot, require, url, , watch, www, Xn-VCyGQ, youtube, ウェザー, お話, コード, こと, ソース, プログラマー, マップ, 三日坊主, 下記, 世の常, , 今日, 勉強, 大事, 天気, 後ろ, 簡単, 記載, , , 超簡単,

phpでソケット受信をする事だけ覚えとけば良い。#php #code

2022.10.27

Logging

おはようございます。Socket.ioというサービスをご存知ですか。あれ良いですよね。

さて、Socketとはいう意味は割愛させて頂き、知っていることを前提に話しますとPHPでSocketサーバーは立てれないじゃないかなって今のところ思っています。localhostや0.0.0.0とかならSocketサーバーは立てれるけど、ドメイン有りきでは難しいような気がします。

なので、Socket.ioなんかを使用してnode.jsなんかでサーバーを立てるのが定石かと思います。尚、webSocketのサーバーに対してPHPで送受信は可能です。要するにクライアント側はPHPでも可能ですね。

自分もAPIサーバーに対して常時通信処理を行っています。

PHPライブラリの使用して接続を確立しています、ライブラリはratchetという有名所のライブラリを使用しています。

composer require ratchet/pawl
<?php

require __DIR__ . '/vendor/autoload.php';

\Ratchet\Client\connect('wss://example.com')->then(function($conn) {
    $conn->on('message', function($msg) use ($conn) {
        echo "Received: {$msg}\n";
        $conn->close();
    });

    $conn->send('Hello World!');
}, function ($e) {
    echo "Could not connect: {$e->getMessage()}\n";
});

上記のようなPHPのソースコードで送受信が可能です😋

タグ

0.0.0.0, API, Code, Composer, io, JS, localhost, node, php, ra, ratchet, require, Socket, webSocket, あれ, クライアント, こと, ご存知, サーバー, サービス, ソケット, ところ, ドメイン, なん, ライブラリ, , , 使用, 処理, 前提, 割愛, 受信, 可能, 名所, 定石, 常時, 意味, 接続, , , 確立, 自分, 送受信, 通信,

あのサイトをリニューアルしました。👏、やっとのことで。 #renew #site #よさこい祭り

2022.09.25

Logging

おはようございます、昼間は暑い日もありますが夜は涼しくなりましたね😄。

今日は昨日、一日かけてよさこい祭り動画検索サイトをリニューアルしました。ソースコード(プログラム)も1からやり直しています。表示するのに結構時間がかかっていた部分は瞬時に表示されるように調整しました。

https://yosakoi-video.com/

以前は検索結果が全て表示されるような仕様でしたが、ページに分割して表示されるように変更しました。また、検索ワードを入力すると検索結果(チーム名)が表示される様に変更しました。チーム名を押すとページへ遷移するようになっています。以前より直感的に操作出来る形になったかと思います。

尚、このサイトを作るにあってYOUTUBEのAPIを使用しているのですが、リアルタイムに動画を検索している訳では無くデータで押さえています。そのデータに関しては数ヶ月置きに更新するように致します。何故、データで押さえている理由はAPIの問い合わせに上限があり、その上限数を超える検索結果が返って来なくなる為です。この上限は申請を行えばある程度増やしてくれるそうですが、それでも上限数量を超えると表示されなくなるというデメリットがあるので、データで押さえています😌。

トイウコトデ、よさこい祭り動画検索サイトよろしくお願いします。

タグ

, API, com, https, renew, site, yosakoi-video, youtube, コード, サイト, ソース, チーム, データ, プログラム, ページ, よさこい祭り, リアルタイム, リニューアル, ワード, , 今日, 仕様, 以前, 使用, 入力, 全て, 分割, 動画, 変更, , , 操作, , , 昨日, 昼間, 時間, 検索, 瞬時, 結果, 表示, , 調整, 遷移, 部分,

仮想通貨で自動売買するシステムはAPI知ってたら

2022.04.10

Logging

仮想通貨で自動売買するシステムはAPI考え方知ってたら大体の人が作れるのですが、問題は取引で儲けを出せるかどうかです。そのためにはダミー取引をシステムで作ることから、オススメします😂。

いきなりAPIを取引所で走らせるのはリスクが高いです、ですのでまずは本当に取引はしないで、ダミーで売買をするシステムを作ることからはじめてください。そこで利益が一定指数のあれば実際に取引してみるというのが一番、安全な取引方法かなって思っております。

尚、エンジニアの横山さんがコインチェックのダミー取引のAPIをGithubで公開しています。これでダミー取引部分は作らなくても良くなったと思います。

あとはご自身が取引部分を作るとダミー取引が出来るのでとても便利かと思います。尚、バックテストの部分も自分で作りたい場合は、CryptowatchのAPIを使用することで簡単に過去の取引を収集できるので便利かと思います。

こんな事をしないで、仮想通貨取引所がバックテスト環境も対応してくれたら良いのですがね😌。

因みに自分はまだ自動売買の取引はしていません、いまは自動売買の開発に向けて調査中ってぐらいです。

タグ

API, Cryptowatch, github, あと, エンジニア, おすすめ, コイン, こと, これ, ご自身, システム, ダミー, ため, チェック, テスト, バック, リスク, 一定, , , 仮想, 使用, 便利, 公開, 利益, 収集, 取引, 取引所, 問題, 場合, 売買, 大体, 安全, 実際, 指数, 方法, 本当, 横山, 簡単, 考え方, 自分, 自動, 通貨, 過去, 部分,

WebAPIの作り方、考え方です?。サンプルコードもありますよ。

2021.12.24

Logging

昨日から風邪を引いてしまいました…。今日も体調が優れない状態ですが、昨日よりはマシになっています、因みに風邪というよりも腸と胃に菌がはいってしまって、それによる発熱です?。

さて、今回はPHP言語でWebAPIの作りましたので、ご報告致します、どんなAPIかというと生年月日とカウントしたい歳をPOSTすると、現在の年齢、今まで生きてきた日数、カウント日数がレスポンス(返却)されます。

【JavaScript入門 #8】WebAPIを叩いてみよう!async await構文を使うと簡単!【ヤフー出身エンジニアの入門プログラミング講座】

PHPコードは下記の通りになります。適当に作ったので間違っている箇所があるかもしれませんが、そこはご愛嬌でお願いできますでしょうか?、また、WebAPIの叩き方はご自身でお考えくださいませ。
サーバーに負荷が増したらWEBAPIは閉じます。

尚、WEBAPIのURLはこちらになります。

https://zip358.com/api/age/v1/type1/

<?php
header('Access-Control-Allow-Origin: *');
date_default_timezone_set('Asia/Tokyo');
$birth_date = (string)$_POST["birth_date"];
$max_age = (int)$_POST["point_age"];

/**
 * @param string $birth_date
 * @return string|false
 */
function check1($birth_date = ""): bool
{
    $flg = false;
    $str_date = explode("/", $birth_date);
    if (count($str_date) === 3) {
        $flg = true;
        if (!((int)$str_date[0] >= 1000)) {
            $flg = false;
        }
        if(((int)$str_date[0] > (int)date("Y"))){
            $flg = false;
        }
        if (!((int)$str_date[1] >= 1 && (int)$str_date[1] <= 12)) {
            $flg = false;
        }
        if ($flg) {
            if ((int)$str_date[1] === 2) {
                if (!((int)$str_date[2] >= 1 && (int)$str_date[2] <= 28)) {
                    $flg = false;
                }
                if ((int)$str_date[0] % 4 === 0) {
                    $flg = true;
                    if (!((int)$str_date[2] >= 1 && (int)$str_date[2] <= 29)) {
                        $flg = false;
                    }
                    if ((int)$str_date[0] % 100 === 0) {
                        $flg = true;
                        if (!((int)$str_date[2] >= 1 && (int)$str_date[2] <= 28)) {
                            $flg = false;
                        }
                        if ((int)$str_date[0] % 400 === 0) {
                            $flg = true;
                            if (!((int)$str_date[2] >= 1 && (int)$str_date[2] <= 29)) {
                                $flg = false;
                            }
                        }
                    }
                }
            } else {
                $last_day = [4, 6, 9, 11];
                if (array_search((int)$str_date[1], $last_day, false)!== false) {
                    if (!((int)$str_date[2] >= 1 && (int)$str_date[2] <= 30)) {
                        $flg = false;
                    }
                } else {
                    if (!((int)$str_date[2] >= 1 && (int)$str_date[2] <= 31)) {
                        $flg = false;
                    }
                }
            }
        }
    }
    return $flg;
}

/**
 * @param int $age
 * @return string|false
 */
function check2($age = 0): bool
{
    $flg = true;
    if ($age < 0) {
        $flg = false;
    }
    return $flg;
}


/**
 * @param string $birth_date
 * @param string $maxage
 * @return string $reslut
 */
function sumup($birth_date, $maxage)
{
    $reslut = [];
    $birth_date_array = explode("/", $birth_date);
    $birth_date = sprintf("%04d%02d%02d", $birth_date_array[0], $birth_date_array[1], $birth_date_array[2]);
    $today = date('Ymd');
    $age = floor(($today - $birth_date) / 10000);
    $day1 = new DateTime("{$birth_date_array[0]}-{$birth_date_array[1]}-{$birth_date_array[2]}");
    $day2 = new DateTime();    
    $interval1 = $day1->diff($day2, true);
    $baseday =  (int)($interval1->format('%a'));
    if ((int)$maxage <= (int)$age) {
        $pointday = 0;
    } else {
        $maxage--;
        $day3 = new DateTime((date('Y') + ($maxage - $age)) . "-{$birth_date_array[1]}-{$birth_date_array[2]}");
        $interval2 = $day2->diff($day3, true);
        $pointday = (int)($interval2->format('%a'))+1;
    }


    $reslut = [
        [
            "result" => "success",
            "age"=>$age ."歳",
            "baseday" => $baseday . "日(生きてきた日数)",
            "pointday" => $pointday . "日(" .($maxage +1). "歳まであと)"
        ]
    ];
    return json_encode($reslut);
}

if (!check1($birth_date)) {
    print json_encode([
        [
            "result" => "error",
            "error" => "string is invalid1"
        ]
    ]);
} elseif (!check2($max_age)) {
    print json_encode([
        [
            "result" => "error",
            "error" => "string is invalid2"
        ]
    ]);
} else {
    print sumup($birth_date, $max_age);
}

タグ

39, Access-Control-Allow-Origin, API, header, lt, php, POST, url, WebApi, お願い, カウント, コード, こちら, ご報告, ご愛嬌, ご自身, サーバー, サンプル, そこ, それ, まし, レスポンス, 下記, 今回, 今日, 体調, 作り方, 叩き, 年齢, 日数, 昨日, , 状態, 現在, 生年月日, 発熱, 箇所, 考え方, , , , 言語, 負荷, 返却, 通り, 適当, 風邪,

HUNTERxHUNTERの文字が生成できるサービスを作りましたよ。

2021.10.22

Logging

今日はお昼ぐらいから、天気が良くなりましたね、、昨日はどんよりしていて自分のテンションもどんより気味でしたのでブログをお休みしていました。そんな中でも一応、プログラムして一つのサービスを世に出しました?!

さて、タイトル通りHUNTER?HUNTERの文字が生成できるサービスを作りましたよ。ってお話です。これを作った経緯はこういうサービスは有るには有るけど、精度がいまいちなものばかりだったので作ったわけです。今回は漢字をひらがなに変換する機能は使用していません、理由はレンタルサーバーでは漢字をひらがなにするという処理を自前が出来ないのです、だからAPIに頼る必要があるのです。しかしながら、、、このサービスが軌道に乗り回転数(PV)が上がればAPI制限の上限に達しAPIが使用できない懸念があるのでAPIを使用するのは控えました。

今はそんな事はないのですけどね。そんな理由からハンター文字生成サービスは、あまり負荷のかからない処理にしています。Twitterでシェア出来るので共有して頂けたら幸いです😁。

https://hxh-moji.com/

追記:HUNTERXHUNTERの作者である漫画家、冨樫先生はいつ連載再開出来るのでしょうかと思っているファンも多いかと思います。自分も首を長くして待っていますが、中々、難しいじゃないかなと…。いろいろな説が出ているのですが、本当のことを知っているのは関係者ぐらいのものでしょう。恐らく病気かなにかの説が正しいような気がします。言えないってことはそういう事なのかなぁって思います。いちファンとしては、期待せずに待つのみですね。

タグ

API, API制限, HUNTER, HUNTER×HUNTER, PV, Twitter, テンション, レンタルサーバー, 上限, 作者, 冨樫先生, 懸念, 漢字, 精度, 経緯, 自前, , 負荷, 軌道, 追記,

LINE messaging apiでブログの配信通知するプログラムコード。

2021.07.14

Logging

暑い日が続いています、夕立になった後のアスファルトの匂いを嗅ぐと夏だなぁって思うのは自分だけでしょうか?
さて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();
    }  

タグ

, 2, , API, cron, define, line, Messaging, userid, アスファルト, いつも, お裾分け, お願い, コード, コメント, チャンネル, データベース, ブログ, プログラム, もの, 一部, , 削除, 匂い, 友だち, , 夕立, , 方々, , 最新, 毎日, 登録, , 自分, 解説, 解除, 記事, 設定, 追加, 送信, 通り, 通知, 部分, 配信,