githubのIPアドレスを取得したい方へ送るコード.
おはようございます.以前、さくらレンタルサーバーにデプロイするためにGithubのIPアドレスを許可しなくては成らなくなり下記のコードを作りました.今回はそのコードのお裾分けです.Githubは使用されているIPアドレスをJsonデータとして公開しているので、そのJSONデータを取得するPHPコードです.
大したコードではないものの、ユーザーエージェントが無いと取得できないのでそこは気おつけてください.それはfile_get_contentsでも同様ですのでお気をつけください.
ソースコードは下記になります.尚、IPアドレスは下記のページから参照可能となります.
https://zip358.com/tool/github-ip-address
class githubIpAddress
{
public $url = 'https://api.github.com/meta';
public function getIpAddress($key)
{
$data = [];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $this->url);
curl_setopt($curl, CURLOPT_USERAGENT, 'getgithubaddress');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$obj = json_decode(@curl_exec($curl));
if ($obj?->$key) {
foreach ($obj?->$key as $val) {
$data[] = $val;
}
}
curl_close($curl);
return $data;
}
public function saveIpAddress($key, $data)
{
$filename = "data/{$key}-ip-address.txt";
file_put_contents($filename, implode("\n",$data));
return $filename;
}
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
curl, curl_close, curl_exec, curl_init, curl_setopt, false, filename, foreach, github, gt, implode, ip-address.txt", json_decode, obj, quot, quot;data, return, true, val, ユーザーエージェント,
SHOGUN 将軍 を全話観ましたので、感想を残しときます.
おはようございます.SHOGUN 将軍 を全話観ましたので、感想を残しときます.虎永様というのは後の徳川家康のことを指します.徳川家康といえば「鳴かぬなら鳴くまで待とうホトトギス」と言われたぐらい性格.そんな徳川家康が天下人になるまでのお話です、日本人の視点で言えばお金を掛けたごく有りふれた時代劇のようにも感じました....が
役者さんの自然な演技で違和感なく最後まで観れました、因みにこの将軍というドラマは9話目が胸熱ですが、その前の奈落の底も良いですねー.一話目からのストーリーを観ないとやっぱこのドラマの良さは感じられない.
今となっても武士道というものは、日本人の心の何処かに流れているものなのかも知れないなっていう思いになりました.いやー観て良かったです.
因みに関ヶ原合戦はこのドラマではかすかに描かれていますが合戦前までの話です.勝ったのは虎永様、後の徳川家康です.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
SHOGUN, ぐらい性格, ストーリー, ドラマ, ホトトギス, 合戦前, 天下人, 奈落, 将軍, 底, 役者さん, 徳川家康, 時代劇, 武士道, 演技, 胸熱, 虎永様, 視点, 違和感なく最後, 関ヶ原合戦,
ネットを一日使用せずに生活をしてみた.結果.
おはようございます.休みの日にネットを一日使用せずに生活をしてみました.結果.とても空き時間が増えました.そういえば学生時代はこんな感じだったなと、ネットを見ない分テレビを見たり本を読んだりとすることが多くなりましたが、下記の動画のようにスマホをONにした途端、友達からLINE通知が飛んでくることもなかったので.
二三日だったら、それほど困らない感じがします.ネットをしないことでわかったことは調べ物が瞬時にわかるということはどれほど楽なことだということと、日頃から情報を浴びている為か覚えていないということ.調べれば瞬時にわかるということは逆に言えば覚えるという行為をしないことだとも感じました.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
LINE通知, ON, スマホ, ネット, 一日, 下記, 休み, 分テレビ, 動画, 友達, 学生時代, 情報, 日頃, 本, 生活, 瞬時, 空き時間, 結果, 行為, 調べ物,
自サイトのBBSをTOPページから消しました.今のところURLを
おはようございます.自サイトのBBSをTOPページから消しました.今のところURLを叩けば見ることも投稿することも出来ます.そのうち、投稿機能は停止するつもりでいます.
因みにBBS設置したのだけど、誰も投稿してくれないので消しました.なかなか難しいのでしょうか🤔.
大体の人はなにか意見があったとしても投稿しないのが普通のことなのかもしれません.特に日本人はそんな感じなんだと思います.だから匿名で投稿できるxが今でも根強いだろうと思います.
これからは閲覧者が欲しい機能を追加していこうと思っています.なんだかんだ言ってアクセス数はそれなりにありますから、あとミニサービスもいろいろと作っていこうと思います.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
BBS, TOPページ, X, アクセス数, うち, ところURL, ミニサービス, 人, 匿名, 意見, 投稿, 投稿機能, 日本人, 欲しい機能, 自サイト, 閲覧者,
号外NETの記事タイトルをポストするようにコードを組みました.tosajin.info
おはようございます.号外サイト記事タイトルをポストするようにコードを組みました.これによって少しは高知県の人に貢献できたのではと思っています.この号外NETというサイトはとても良いです.新しいお店の紹介などが逐次わかるというのは良い感じですよね.
因みにソースコードはこんな感じになります.これをLaravelのスケジュールを使用して叩いている形になります.ポストするコードに関してはご自身で考えて作らないとポストすることは出来ないです.
/**
* Execute the job.
*/
public function handle(): void
{
$xmlobj = @simplexml_load_file('https://kochi.goguynet.jp/feed/');
if($xmlobj?->channel?->item){
$str = [];
foreach($xmlobj->channel->item as $key=>$val){
if($this->dateCheck($val->pubDate)){
$str[] = "{$val->title}
{$val->guid}
引用元:号外NET 高知市
";
}else{
break;
}
}
$str = array_reverse($str);
if(count($str)){
$TwitterController = new TwitterController();
foreach($str as $val){
$TwitterController->tweet($val);
}
}
}
}
private function dateCheck($inputDate)
{
$inputDateTime = new DateTime($inputDate);
$inputDateTime->setTimezone(new DateTimeZone('UTC')); // UTCに合わせる
// 現在の日付(UTC)
$currentDateTime = new DateTime('now', new DateTimeZone('UTC'));
// 今日の日付を取得
$today = $currentDateTime->format('Y-m-d');
// 昨日の日付を取得
$yesterday = $currentDateTime->modify('-5 day')->format('Y-m-d');
// 入力された日付のフォーマット
$inputDateFormatted = $inputDateTime->format('Y-m-d');
// 比較
if ($inputDateFormatted === $today || $inputDateFormatted > $yesterday) {
return true;
}
return false;
}
Xなどにポストするにはライブラリを使用してポストすることが簡単だと思っていますが、それが難しいという方は生成AIを使用してクラス化したXにポストするPHPコードを書いてと指示をすればコードを書いてくれると思います.
ちなみにこのソースコードは高知県の号外に特化したコードになります.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
array_reverse, break, count, dateCheck, else, foreach, format, gt, guid, item, Laravel, modify, pubDate, quot, setTimezone, Tweet, val, void, yesterday, 号外,
レンタルサーバーでデスクトップ通知はPush7がおすすめ.
おはようございます.今日から10月ですね~.この頃はクーラーを夜な夜な付けることもなくなり快適な生活を送っています.夏は好きですけど今年の夏は暑かった.
さてレンタルサーバーでデスクトップ通知はPush7がおすすめです、今のところプッシュ通知を行っている日本企業はここしか知りません.おそらく海外で同じようなAPIサービスはあると思います.
因みにこのサービス、無料版では購買者に一括送信しか出来ませんが980円支払えば個別送信することも可能です.自分がいま作っているサービスは「npush」というものです.このサービスはNHKの番組表から自分が見たい番組をチェックすると前の日にデスクトップ通知が送信されるというもの.あまり需要がなさそうだけど、自分には必要なものなので運用しようと思っています.まずは自分だけ使う感じで他のユーザーさんは番組検索機能だけ開放します.ただし番組表は東京だけですけどね.
技術的な話.デスクトップ通知などはレンタルサーバーが開放されているポートだけでは機能しません.なので、APIサービスを使用せずに制作したい場合はAWSやVPSサーバーなどを使用することをおすすめします.今回、使用したAPIサービスでPushするPHPコードを抜粋して貼っときます.あくまでもテスト用なので、ここから改修が必要になります.また、個別送信したい方は新たにパラメーターを付与してください.詳しくは公式ページのドキュメントを参照くださいませ.
$apiurl = "https://api.push7.jp/api/v1/";
$appno = config('app.push7no');
$apikey = config('app.push7apikey');
$icon_url = 'https://dashboard.push7.jp/uploads/example.png.webp';
// 送信データ
$data = array(
'title' => "通知タイトル", // 通知タイトル
'body' => "通知テキスト", // 通知テキスト。記事タイトルなど
'icon' => $icon_url, // アイコンファイル
'url' => "https://example.com/", // リンク先。記事URLなど
'apikey' => $apikey
);
// JSON形式に変換
$json_data = json_encode($data);
// cURLセッションを初期化
$ch = curl_init($apiurl . $appno . '/send');
// オプションをセット
curl_setopt($ch, CURLOPT_POST, true); // POSTメソッドを使用
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); // ヘッダーにJSON形式を指定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列で返す
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); // POSTデータをセット
// 実行してレスポンスを取得
$response = curl_exec($ch);
// エラーチェック
if (curl_errno($ch)) {
$error_msg = curl_error($ch);
log::error("cURLエラー: " . $error_msg); // エラーログ
} else {
// レスポンスをデコード
$response_data = json_decode($response, true);
log::info($response_data); // レスポンスをログに記録
}
// cURLセッションを終了
curl_close($ch);
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
application, array, config, Content-type, curl_errno, cURLエラー, cURLセッション, else, Error, json_decode, json_encode, log, npush, quot, response, true, アイコンファイル, エラーログ, デコード, パラメーター,