htmlとcssとphp-初学非同期処理とおまけ-No.3
おはようございます。月曜日の朝ですね‥お仕事探しは続いています。
さて、非同期処理とは何かと問われると詰まりますが・・・。いつ結果を返してくれない処理といえば良いのでしょうか。じゃ同期処理はといえば仕事が終わるまで次の仕事を進めない事といえば良いのかな🤔、教えるのが下手なのでぐぐってみてください。
document.querySelector(".btn").addEventListener("click", () => {
let p = [document.querySelector("[name='name']").value, document.querySelector("[name='text']").value];
[...document.querySelectorAll(".put")].forEach((elm, index) => {
elm.innerText = p[index];
});
document.querySelector("#box2").style.display = "none";
document.querySelector("#data").insertAdjacentHTML("beforeend", `<button class="btn2" type="button">非同期送信</button>`);
document.querySelector(".btn2").addEventListener("click", async () => {
//submit code
let url = "./submit.php";
let data = (() => {
return ([...document.querySelectorAll(".put")].map((elm, index) => {
return "test" + index + "=" + elm.innerText;
})).join("&");
})();
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
"Content-Length": data.length,
'Accept': 'application/json'
},
body: data //JSON.stringify(data)
};
await fetch(url, options).then(response =>
response.json()
).then(resultdata => {
document.getElementById("view").insertAdjacentHTML("beforeend", resultdata.test0 + "," + resultdata.test1);
}).catch(error => {
console.log(error);
});
});
});
function imgchg(imagename){
document.body.setAttribute("style","background-image: url(./assets/images/" + imagename + ".jpg");
}
ぐぐると自分言っていた意味がなんとなく分かるかと思います。ちなみに非同期動画(youtube)のおまけとして、背景画像を変える処理のソースコードを書いています。プログラムコードとしては3行ですが、初学者の方はこの3行のソースコードの方が面白いのかもしれません。自分が書いたソースコードを所々、変更して動かしてみてください。そうすることで、徐々にコードの意味が理解してくると思います。
追伸:サンプルサイトの動画は少しお休みします()?
https://358tool.com/sample-site/
タグ
3, 39, addEventListener, btn, click, css, document, gt, html, let, name, no, php, querySelector, querySelectorAl, quot, Text, value, いつ, おまけ, お仕事, 事, 仕事, 何, 処理, 初学, 同期, 月曜日, 朝, 次, 結果,
映画、イントゥ・ザ・スカイ~気球でみらいを変えたふたり #アマプラ
おはようございます、昨日は晴天でしたね、この頃、暖かい日が続きます。
さて、遅ればせながら映画、イントゥ・ザ・スカイ~気球でみらいを変えたふたりを観ましたので感想を残しときます。実話を着色した映画になっていますが、よく出来ている映画。映画をあまり観ない人には悪くない評価を得そうな映画です。
自分の場合、映画をよく観ているので、ストーリー展開が在り来りかなと思えてしまってどうも見応えたっぷりだったとは言えなかったですが、これは自分の主観なので一般人とはズレているのかなと思います。
まとめ、映画の予告を観て観たいと思った方は観てみても良いじゃないかと思います。
タグ
アマ, イントゥ, これ, サ, スカイ, ストーリー, ズレ, ふ, ふたり, プラ, ミライ, 一般人, 主観, 予告, 人, 場合, 実話, 展開, 感想, 方, 日, 映画, 昨日, 晴天, 気球, 着色, 自分, 見応え, 評価, 頃,
POSTとGETの考え方について伝えている動画。 #以心伝心
おはようございます、11月なのに寒くないって不思議です😗温暖化。
さて、POSTとGETの考え方について無音声(音楽あり)で伝えている動画です、以心伝心で意味が通じると良いですが、それではブログを書いている意味がないので要点だけ解説します。POSTとGETとは、インターネット上でデータの送信を行うのに使用します。POSTの利点はデータを隠して送れることと、比較的に重いデータも送れることにあります。ではGET送信の利点は、SEOに有利と言ったところでしょうか。
今回、POST送信とGET送信を行い、PHPのプログラムでPOSTとGETを受信する方法を動画で伝えています。次回は非同期処理を使用して送受信を行う方法をプログラムで書いていきます。
HTMLとPHPプログラムは下記のソースを参照下さいませ🙇。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>demo site</title>
<style>
html {
width: 100vw;
height: 100vh;
}
body {
background-color: rgb(0, 0, 0);
color: aliceblue;
background-image: url(./assets/images/aig-mid22910-120-xl_TP_V.jpg);
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
div.box {
border-color: aliceblue;
border-style: inset;
position: absolute;
width: 300px;
height: 450px;
color: white;
border-radius: 1em;
padding: 1em;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
/* background-color: #ffffff80; */
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
overflow-wrap: break-word;
text-align: center;
}
div>form>p {
font-weight: bold;
margin: 13px;
}
input {
opacity: 0.5;
}
textarea {
opacity: 0.5;
}
button {
padding: 5px;
border-radius: 1em;
border-style: solid;
border-color: aliceblue;
background-color: aliceblue;
color: rgb(0, 0, 0);
}
button:hover{
border-color: rgb(255, 255, 255);
border-style: inset;
background-color: rgb(27, 76, 119);
color: aliceblue;
}
.put:nth-child(2){
overflow: auto;
height: 120px;
}
</style>
</head>
<body>
<div class="box">
<div id="box2">
<form action="submit.php" method="post">
<p>名前:<input type="text" name="name"></p>
<p><textarea name="text" id="" cols="30" rows="10"></textarea></p>
<p><button class="btn" type="submit">確認</button></p>
</form>
</div>
<div id="data">
<p class="put"></p>
<p class="put"></p>
</div>
</div>
<script src="./assets/js/main.js"></script>
</body>
</html>
<?php
var_dump(xss_d($_POST));
print(xss_d($_POST["name"])."<br>");
print(xss_d($_POST["text"])."<br>");
function xss_d(mixed $val){
if(!isset($val))return false;
if(is_array($val)){
foreach ($val as $key => $value) {
$val[$key] = strip_tags($value);
$val[$key] = htmlspecialchars($val[$key],ENT_QUOTES);
}
}else{
$val = strip_tags($val);
$val = htmlspecialchars($val,ENT_QUOTES);
}
return $val;
}
タグ
11, 2, css, DOCTYPE, GET, html, lt, no, php, POST, SEO, インターネット, こと, ソース, データ, ところ, ブログ, プログラム, 下記, 不思議, 今回, 以心伝心, 使用, 処理, 初学, 利点, 動画, 参照, 受信, 同期, 意味, 方法, 有利, 次回, 温暖化, 考え方, 要点, 解説, 送信, 送受信, 音声, 音楽,
映画 #すずめの戸締まり を観てきましたので感想を残しときます。 #ネタバレなしです、溢れそう。
こんにちは、映画を観終わった後も余韻が残っていてその余韻の中でこの記事を書きました。
映画予告とは全然違う印象何だかけど、想像していたストーリーとぜんぜん違うだけど、凄く良い内容の本編でした。自分は前もって小説なども読まずに映画予告を観ただけで映画館で本編を観たわけですけども、小説読んでいた人たちもおそらく想像以上の映像だったんじゃないかと思います。
凄く良いという言葉が適切かどうか分からないけれども、新海誠監督が伝えようとしていることは、伝わる映画でした。今まで新海誠監督の長編映画を観てきた中で、一番ダイレクトに伝わってきた気がします。「言の葉の庭」「君の名は」「天気の子」、そして「すずめの戸締まり」どれも良い作品になっているこんな監督あまりいないと思います。
改めて新海誠監督の凄さが分かった気がします。
作品を作ってくれて、ありがとう。
タグ
こと, すすめ, ストーリー, ダイレクト, どれ, わけ, 中, 予告, 人, 余韻, 作品, 内容, 印象, 名, 君, 天気, 子, 小説, 庭, 後, 想像, 感想, 戸締まり, 新海誠, 映像, 映画, 映画館, 本編, 気, 監督, 自分, 言の葉, 言葉, 記事, 適切, 長編,
cssとjsを動的に読み込むソースコード2。#jscode
おはようございます、すずめの戸締まりを本日、観に行きますという事で本日はお休み。感想は帰ったら別途書きます。
以前、ファイルを動的に再読み込みする方法という記事を書きまして、この記事がまぁまぁプレビュー数を取ってくれているので、ソースコードを書き直しました。以前と違うのは正規表現を見てくれればわかるかと思いますが、パラメータを初期からもっているJSファイルやCSSファイルは対象外にしている所です。
メンターがいない中、コードを見直したりするのはやっぱ時間がかかるものですね。いつも自分に必要なのはメンターだと思ったりしますが、なんだかそういう人が見当たらないですよね。やはり東京や大阪にいかないと見つけられないのかな?、今ではSNSがあるから見つけやすくなっているものの、自分よりも50%ぐらい技術力がある人がいないですよね。凄い技術力が上の人は知っているのだけども、そういう人の話を聞いてもさっぱりなので・・・。
近くにいないものなのかな、よく灯台下暗しという言葉もあるからいそうな気がするですけどね🫠。
ソースコードはこちらです。
"use strict";
document.querySelector("button").addEventListener("click",jsandcssreload);
function jsandcssreload(){
let d = (new Date()).getTime();
[...document.querySelectorAll("link")].forEach((elm)=>{
elm.href = elm.href.replace(/(\.css)\??[0-9]{0,}$/,".css?" + d);
});
[...document.querySelectorAll("script")].forEach((elm)=>{
elm.src = elm.src.replace(/(\.js)\??[0-9]{0,}$/,".js?" + d);
});
}
タグ
2, 50, css, JS, jscode, SNS, お休み, コード, すすめ, ソース, パラメータ, ファイル, プレビュー, メンター, もの, 上, 中, 事, 人, 今, 以前, 初期, 別途, 大阪, 対象, 必要, 感想, 戸締まり, 所, 技術力, 方法, 時間, 本日, 東京, 正規, 自分, 表現, 観, 記事, 話,
データからページネーションが出来る。 #jscode
おはようございます、昨日は朝が寒く昼間は暑い日でしたね😗。
さて、データからページネーションが出来るライブラリがある事を知りましたのでそちらの紹介と使い方です。今回、使用したのはPagination.jsというライブラリです。使い方は簡単、下記のようなデータがあった場合、このようなソースコードを書いて使用します😮。
[
{
"id": 1,
"name": "白川 正人",
"hiragana": "しらかわ まさと",
"age": "45",
"bday": "1977年04月10日"
},
{
"id": 2,
"name": "大村 麻衣子",
"hiragana": "おおむら まいこ",
"age": "42",
"bday": "1979年12月11日"
},
{
"id": 3,
"name": "大原 静香",
"hiragana": "おおはら しずか",
"age": "53",
"bday": "1969年06月20日"
},
{
"id": 4,
"name": "吉田 佐代子",
"hiragana": "よしだ さよこ",
"age": "40",
"bday": "1982年05月24日"
},
{
"id": 5,
"name": "宮原 和弘",
"hiragana": "みやはら かずひろ",
"age": "22",
"bday": "2000年04月29日"
},
{
"id": 6,
"name": "伊藤 二郎",
"hiragana": "いとう じろう",
"age": "27",
"bday": "1995年02月18日"
},
{
"id": 7,
"name": "井上 明子",
"hiragana": "いのうえ あきこ",
"age": "55",
"bday": "1967年06月26日"
},
{
"id": 8,
"name": "恩田 雄",
"hiragana": "おんだ ゆう",
"age": "37",
"bday": "1985年09月25日"
},
{
"id": 9,
"name": "山崎 幸志",
"hiragana": "やまざき こうじ",
"age": "29",
"bday": "1993年03月24日"
}
]
$.extend($.fn.pagination.defaults, {
className: 'paginationjs-theme-blue',
pageSize: 3
});
let url = "json data のurl";
(async () => {
await fetch(url).then((result) => result.json()).then(
(data) => {
data.reverse();
$('#demo').pagination({
dataSource: data,
callback: function (data, pagination) {
var html = table_make(data);
document.querySelector("#tbl").innerHTML = html;
}
})
}
)
})();
function table_make(data) {
return (data.map((element) => {
let str = "";
str += "<tr>";
str += ((Object.keys(element).map(el => "<td>" + element[el] + "</td>")).join(""));
str += "</tr>";
return str;
})).join("\n");
}
<div class="col-12" id="demo">
<table class="table table-dark" id="tbl"></table>
</div>
コードを抜粋して書きましたが、このコードを書く事とjsのライブラリとcssファイルもダウンロードするようにして下さいね🫠。
因みに自分はこのライブラリを初めて使用しましたが、結構使いやすいですね。今まで開発ではLaravelなんかのページネーションを使用していた事はありますが、フロント側で出来る事を知り驚きを隠せませんというのは大袈裟ですけど使い道は有るなって思います。
タグ
04, 1, 10, 1977, 2, 45, age, bday, hiragana, ID, JS, jscode, name, Pagination, qu, quot, コード, しらかわ, ソース, そちら, データ, ネーション, ページ, まさと, ライブラリ, 下記, 事, 今回, 使い方, 使用, 場合, 日, 昨日, 昼間, 朝, 正人, 白川, 簡単, 紹介,
Gドライブの画像仕分けがGASを使うと楽すぎでした! #gas #jscode
おはようございます。昨日は暖か陽気でしたね~?、今日はどうかな?🤔
今日はGoogleドライブで画像仕分けが楽すぎた件を書いていきます。GASとはgoogle apps scriptの略です、このGASを使用するとGmailやスプレッドシート、Googleドキュメント等をプログラムで操作出来ちゃうサービスです。尚、プログラムコードはjavascriptベースになっていてとても書きやすいです。
function imagesDrive() {
//画像を仕分けフォルダID googleドライブURL->adaoiujxzouaunWxz33oam__ (ランダム英数字記号の部分)
const folder = DriveApp.getFolderById('画像を仕分けフォルダID');
//移動先のフォルダID googleドライブURL-> UQIJjaoskamlqaxalp98swq--e (ランダム英数字記号の部分)
const imgfolder = DriveApp.getFolderById('移動先のフォルダID');
let hasfiles = folder.getFiles();
while(hasfiles.hasNext()){
let hasfile = hasfiles.next();
if(/(\.png|\.jpg)$/.test(hasfile.getName())){
hasfile.moveTo(imgfolder);
}
}
}
今回、上記のようなコードを書いてサクサクと画像の仕分けを行いました。正規表現パターンを変えたりする事で任意の文字列ファイルだけを別フォルダに移動したりコピー、または削除したりすることも可能です(※コードの追加や変更が必要)。GASのエディタではコード補完機能もあるので初めての方でもプログラマーなら何とかなると思います。
プログラム初心者の方へ、jpg,png,gif等をそれぞれのフォルダに別けたい場合はどのようなコードを書いたら良いでしょうか?上記のコードをヒントにコードを書いてみて下さい。回答に関しては下記に一つの答えとして書いています。
function imagesDrive() {
//画像を仕分けフォルダID googleドライブURL->adaoiujxzouaunWxz33oam__ (ランダム英数字記号の部分)
const folder = DriveApp.getFolderById('画像を仕分けフォルダID');
//移動先のフォルダID googleドライブURL-> UQIJjaoskamlqaxalp98swq--e (ランダム英数字記号の部分)
let folderId = {png:'移動先のフォルダID1',jpg:"移動先のフォルダID2",gif:"移動先のフォルダID3"};
Object.keys(folderId).forEach((keyname)=>{
let imgfolder = DriveApp.getFolderById(folderId[keyname]);
let hasfiles = folder.getFiles();
while(hasfiles.hasNext()){
let hasfile = hasfiles.next();
let r = new RegExp("(\."+ keyname + ")$");
if(r.test(hasfile.getName())){
hasfile.moveTo(imgfolder);
}
}
});
}
タグ
33, 39, adaoiujxzouaunWxz, apps, const, DriveApp, folder, function, GAS, getFolderById, Gmail, Google, gt, ID, imagesDrive, javascript, jscode, oam, script, UQIJjao, url, コード, サービス, シート, スプレッド, ドキュメント, ドライブ, フォルダ, プログラム, ベース, ランダム, 今日, 件, 使用, 操作, 昨日, 画像, 略, 移動, 英数字, 記号, 部分, 陽気,
The Peripheral:接続された未来。 #アマプラ
おはようございます、昨日の朝はなんだか寒かったですね🫠。
ペリフェラル -接続された未来のシーズン1の一話だけ観ました、一話だけなのでココから面白くなるかも知れませんが、ちょっとグロいシーンが一話の最後あたりにあったりして自分はこれからもこういうシーンが出てくるのかなと思い一話観ただけでお腹いっぱいになり観るのが止まっています。
ストーリーは面白いけど、結末は現実か仮想なのかが分からなくなって主人公が潰れてしまう気がします。もし自分が現実と仮想世界か見分けがつかないゲームにハマったら多分、一話目で潰れて人格が崩壊してしまいそうです😨。
でも、その内、そういう世界になるという事だけは確かな事です。脳にダイレクトに信号を送り仮想ゲームを楽しめるようになると・・・(何故、言い切れるかといえばこういう事が出来だしたからです「脳波から言葉を生成するAI「Brain-to-Text」 “声道”への指令を解読、言葉に変換」)。
そういう事への警鐘を鳴らす作品だと思います。
トイウコトデ、二話以降は時間の合間、合間に見ていこおうと思っています。
タグ
1, AI, Brain, Peripheral, The, アマ, ゲーム, ココ, これ, シーズン, シーン, ストーリー, ダイレクト, プラ, ペリフェラル, 一, 世界, 主人公, 事, 人格, 仮想, 信号, 内, 崩壊, 接続, 昨日, 最後, 朝, 未来, 気, 現実, 生成, 結末, 脳, 脳波, 腹いっぱい, 自分, 言葉,
htmlとcssとjavascript-初学フロント側-No.1#code
おはようございます。今年もあと2ヶ月もないわけですよね早いものですね😮
htmlとcssとjavascript-初学フロント側-No.1という動画をYOUTUBEにUPしたのが昨日の9時のこと。これで理解出来るか、どうか分からない。解説もない教えもない、唯コードを書いているところを見せてるだけです。ソースコードは下記のサイトから参照できますが、次の動画作成のためにデザインや処理が変わっていたり、動作しなくなってたりするので注意が必要です。
https://358tool.com/sample-site/
自分はHtmlやcssはあまり覚えていないのですが、分かるのはそれなりに基本ベースがあるからだと思ってます。今からHtmlやcssを学ぶ人は全部を覚えようとはせずに、手を動かしてコードを書くことから始めて下さい。そのうち基本ベースは身につくことになると思います。
因みに自分が書いているclassの名前付けなどの書き方は駄目な書き方ですので、そういう所、お仕事として書く場合は会社によってキマりなんかが有りますので、そういう事まで知りたい人はこちらの動画を参照ください。
タグ
1, 2, 358, 9, cl, Code, com, css, html, https, javascript, no, sample-site, tool, UP, youtube, うち, コード, こと, これ, サイト, ソース, それなり, ため, デザイン, ところ, フロント, ベース, もの, 下記, 人, 今, 今年, 作成, 全部, 処理, 初学, 動作, 動画, 参照, 基本, 必要, 手, 昨日, 次, 注意, 理解, 自分, 解説, 身,
Qiitaのfeedを取得して表示するだけのコード非同期編? #phpcode
おはようございます。昨日の続きのお話ですコードは金曜日に書きました😗。
動画を見ていただければわかるかと思いますが即興で書いたコードです、最後の最後でエラーってる!?ところなんかも編集していない所が伝わってくるかと思います。ちなみに画質HDのフル画面で見ないとコードは見えないかなって思います。
音声も今後入れていくかもしれません。
任意のユーザーを増やしたい場合はmain.jsの先頭行(2行目?)のqiitaIDに任意のIDを追加するだけで取得可能です。解説はなしですけど一応、何をやっているのかそれなりに、わかるように心がけたつもりです。あとは盗んで覚えてください😂。
ソースコードはこちらになります。
<?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">
<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.4/css/all.min.css">
<style>
.qiita_feed-list>li {
/* font-weight: bold; */
color: aliceblue;
}
.qiita_feed-list>li>a {
color: aliceblue;
}
body {
background-color: #60b111;
}
.shadow-lg {
box-shadow: 0 1rem 3rem rgba(255, 255, 255, .195) !important;
}
</style>
<title>Qiita-feed</title>
<?php
require $_SERVER['DOCUMENT_ROOT'] . "/header_script.php";
?>
</head>
<body>
<input type="hidden" id="csrf_token" value="<?= $csrf_token ?>">
<div class="container">
<div class="row">
<div class="col-12">
<h1 class="text-light">Qiita-feed</h1>
</div>
</div>
</div>
<div class="container mt-2">
<span id="view"></span>
Copyright <?= date("Y") ?> <a href="https://358tool.com">358tool.com</a>
</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 src="./js/main.js?<?= time() ?>"></script>
</body>
</html>
//qiita feed
["taoka-toshiaki","mpyw","suin"].forEach(id=>{
let data = {
csrf_token:document.getElementById("csrf_token").value,
feedid:[id]
};
let url = "./qiita-feed.php";
qiita_feed(url,data);
});
async function qiita_feed(url, data) {
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify(data)
}
await fetch(url, options).then(response =>
response.json()
).then(resultdata => {
document.getElementById("view").insertAdjacentHTML("beforeend",resultdata.reshtmlcode)
}
).catch(error => {
console.log(error);
}
);
}
<?php
session_start();
$obj = json_decode(strip_tags(@file_get_contents("php://input")));
if (isset($obj)) {
if (isset($obj->csrf_token) && $_SESSION["csrf_token"] === $obj->csrf_token) {
$str ="";
foreach ($obj->feedid as $key => $id) {
$str.= '
<div class="row shadow-lg p-3 mb-5 bg-body rounded">
<div class="col-12">
🌿<span class="text-light">://qiita.com/' . xss_d($id) . '/feed :[引用]</span>';
$str .= get_Qiitafeed("https://qiita.com/" . xss_d($id) . "/feed");
$str .= '
</div>
</div> ';
}
$res["reshtmlcode"] = $str;
print json_encode($res);
}
}
function xss_d(mixed $val): mixed
{
if (is_array($val)) {
foreach ($val as $key => $value) {
$val[$key] = htmlentities($value, ENT_QUOTES);
}
} else {
$val = htmlentities($val, ENT_QUOTES);
}
return $val;
}
function get_Qiitafeed(string $feedUrl): string
{
$xml = @simplexml_load_file($feedUrl);
if (isset($xml->entry)) {
$str = "<ul class='qiita_feed-list'>";
foreach ($xml->entry as $key => $val) {
$str .= "<li><a href='{$val->url}'>" . $val->title . "</a></li>";
}
$str .= "</ul>";
}
return $str;
}
タグ
2, feed, HD, ID, JS, main, PHPCODE, qiita, qiitaID, あと, エラー, お話, コード, こちら, ソース, つもり, ところ, プル, ユーザー, 今後, 任意, 何, 先頭, 動画, 即興, 取得, 可能, 同期, 場合, 所, 昨日, 最後, 画質, 画面, 編集, 表示, 解説, 追加, 金曜日, 音声,
Qiitaのfeedを取得して表示するだけのコード。 #php
おはようございます、土曜日の朝ですね😗。
今日は文化の日にQiitaにUPしたfeedを取得して表示するだけのコードを書きました。見た目はこんな感じでQiitaの雰囲気を取り入れたデザインにしています。デモ版として実際にサーバーで起動しているモノです、feedを取得しているユーザーは自分を入れて3人です。
表示する人数が多くなるとページを描画する時間が遅くなるので実質、10人が限度かも知れないです。もし何人ものユーザーを取得したいと考えている方は表示部分と処理部分を別けて、尚且つ処理部分は非同期処理で変更することを推奨します。
尚、明日には2つに別けたプログラムコードを別記事として記載しますので、しばしお待ち下さいませ🙇。
今回のソースコードはこんな感じになってます。
<?php
function get_Qiitafeed(string $feedUrl){
$xml = @simplexml_load_file($feedUrl);
if(isset($xml->entry)){
print("<ul class='qiita_feed-list'>");
foreach($xml->entry as $key=>$val){
print("<li><a href='{$val->url}'>".$val->title."</a></li>");
}
print("</ul>");
}
}
?>
<!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.4/css/all.min.css">
<style>
.qiita_feed-list > li{
/* font-weight: bold; */
color:aliceblue;
}
.qiita_feed-list > li > a{
color:aliceblue;
}
body{
background-color:#60b111;
}
.shadow-lg {
box-shadow: 0 1rem 3rem rgba(255,255,255,.195)!important;
}
</style>
<title>Qiita-feed</title>
<?php
require $_SERVER['DOCUMENT_ROOT'] ."/header_script.php";
?>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<h1 class="text-light">Qiita-feed</h1>
</div>
</div>
</div>
<div class="container mt-2">
<?php
$Id_List = ["taoka-toshiaki","mpyw","suin"];
foreach ($Id_List as $key => $id) {
?>
<div class="row shadow-lg p-3 mb-5 bg-body rounded">
<div class="col-12">
🌿<span class="text-light">://qiita.com/<?=$id?>/feed :[引用]</span>
<?=get_Qiitafeed("https://qiita.com/".$id."/feed")?>
</div>
</div>
<?php
}
?>
Copyright <?=date("Y")?> <a href="https://358tool.com">358tool.com</a>
</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>
</body>
</html>
タグ
10, 2, 3, feed, feedUrl, function, GET, lt, php, qiita, Qiitafeed, string, UP, お待ち, コード, こと, サーバー, ソース, デザイン, デモ版, プログラム, ページ, もの, ユーザー, 人数, 今回, 今日, 何人, 処理, 別記事, 取得, 同期, 土曜日, 変更, 実質, 実際, 感じ, 推奨, 描画, 文化の日, 方, 明日, 時間, 朝, 自分, 表示, 見た目, 記載, 起動, 部分, 限度, 雰囲気,
休みの日はアクセス数が少ないのを打壊したい人いる!?
おはようございます、昨日は文化の日でお休みでしたね🫠。
アクセス数ゼロでも毎日のようにブログを書き続けて今のところ、二桁止まりですがアクセス数を維持しています。たまにプレビュー数だと三桁行く時がありますが、今はあまりですね~😗。
さて、そんな自分がアクセス数の増やし方を教えます。アクセス数を増やすには唯、流行の記事を追い求めるだけではダメです。未来を予想してその記事を書くこと。そしてまだ誰もその記事に付いて書いていない事が重要になります。
技術知見の二番煎じです、個人ブログでは検索サイトが拾ってくれません。なので、書くのはほぼ無駄です。たまに自分も書いたりしていますが検索にヒットすることは少ないです。技術知見を書くのなら出し惜しみせず、全力投球で書くことをオススメしますが、初学者への知見は書いても拾ってくれませんので、中級レベルの知見を書くことをオススメします。
上級者の知見は書いても無駄だと思っています。上級者ではないので分かりませんが、そもそも上級者になると論文やドキュメントで事が足りるから、わざわざそこら編を検索するという事は無くなるのではと思っています。
要約するとニッチな戦略で記事を書くべし!古い記事の上書き記事も有効😗
それらの事を注意して記事を量産すると徐々に記事を拾ってくれる確率は増えてきます✌。
尚、SEO戦略なんてブラックボックスのアルゴリズム=重箱(ブラックボックス)の隅のホコリを見つけてこれは宝石だと喜び合うことだと思います。人工知能が文章を理解するよう事を見据えて、今から人が理解できる文章を書くことをオススメします😋。
タグ
アクセス, あまり, おすすめ, お休み, こと, サイト, たま, ため, ところ, ヒット, プレビュー, ブログ, レベル, 三, 上級, 上級者, 中級, 予想, 事, 二, 二番煎じ, 人, 今, 休み, 個人, 全力投球, 初学者, 技術, 数ゼロ, 文化の日, 日, 昨日, 時, 未来, 検索, 毎日, 流行, 無駄, 知見, 維持, 自分, 記事, 誰, 重要,
常時ディレクトリ監視を行う方法。 #CPU使用率 #炎上
おはようございます。何だかアカウントを作ってまでコメントする人の考えがわからない🤔。
Qiitaに、このコードのsleep関数がないバージョンをアップしたら、何やらアカウントを作ってまでコメントする人が現れる、理由はCPU使用率がMax近くになるのが駄目だからです、そんな事は分かっているのが普通だと思っていたのだけども…例文として掲載するのも駄目だそうです、コピペで運用する人が結構いるのかもしれない。
正直なところ、そこまで叩かれるとは思っていなかったので、正直なところ驚きを隠せない。段々と世間の常識とズレていっている気がします😗。
昔はそういうコードは巷に溢れていたのにな・・・そんな事も出来なくなってきたのか・・・。
トイウコトデ、常時ディレクトリ監視を行い任意の画像ファイルだけ別のディレクトリへ移動するコードです。
nohup php File_Check.php &
├── File_Check.php
├── upload
└── data
<?php
while(true){
if($result = is_scandir("./upload")){
foreach($result as $key=>$value){
rename("./upload/$value","./data/$value");
}
}
sleep(3);
}
function is_scandir(string $dirname="",array $ext_list = ["png","jpg"]){
$is_filelest = [];
$result = scandir($dirname);
foreach($result as $key=>$value){
$ext = substr($value, strrpos($value, '.') + 1);
if(in_array($ext,$ext_list,false)!== false){
$is_filelest[] = $value;
}
}
return count($is_filelest)>0 ? $is_filelest : false;
}
タグ
check, CPU, file, max, nohup, php, qiita, sleep, アカウント, アップ, コード, コピペ, コメント, そこ, ディレクトリ, トイウコトデ, ところ, バージョン, ファイル, 世間, 事, 人, 任意, 使用, 例文, 別, 巷, 常時, 常識, 掲載, 方法, 昔, 普通, 正直, 段々, 気, 炎上, 理由, 画像, 監視, 移動, 近く, 運用, 関数, 駄目,
Manifest V3、ブラウザ拡張機能のアレに対応した解説動画。
おはようございます、カサカサ肌には大変な季節です🫠。
今日はManifest V3、ブラウザ拡張機能(Chrome拡張)のアレに対応した解説動画がありましたのでご紹介します。こちらの動画で基本は分かる感じになっています。いつまで掲載されるかわからないので、リンクだけ貼っときます。こちらになります。
尚、マニフェストの書き方だけがV3になってから変わっただけではないので、そこの所が注意しないといけない所です。自分もグーグルクロームに拡張機能を公開していたので、そちらの使用されている拡張機能は修正しました。
今、自分用に作っているV3のマニフェストの書き方だけ載せときますね。
{
"name": "lancers footpoints",
"version": "1.0.0",
"manifest_version": 3,
"description": "ランサーズ。",
"permissions": [
"tabs",
"scripting"
],
"action": {
"default_icon": "icon20221101.png"
},
"background": {
"service_worker": "src/background.js"
},
"content_scripts": [
{
"matches": [
"https://www.lancers.jp/work/search*"
],
"css":["src/style.css"]
}
]
}
あと、backgroundとcontent_scriptsの送受信の関係などが記載されているサイトを見つけたので、そちらもリンクを貼っときます、こちらのページになります。
タグ
1.0.0, 3, Chrome, footpoints, Lancers, Manifest, name, quot, Version, アレ, いつ, グーグル, クローム, こちら, ご紹介, そこ, そちら, ブラウザ, マニフェスト, リンク, 今, 今日, 使用, 修正, 公開, 動画, 基本, 大変, 季節, 対応, 感じ, 所, 拡張, 掲載, 書き方, 機能, 注意, 肌, 自分, 解説,
staticかdynamicか、php-fpmの話。#php #apache
おはようございます、メモリが肥大化して落ちました🤮。
先週の朝、メモリが肥大化して落ちてしまいました。今まではphp-fpmを1時間置きに再起動していましたが、それを変更した途端。メモリを食ってしまい落ちたわけです。
php-fpmの対応はこちらのサイトを参考にしました、尚、対応方法はそちらの記事を参照ください。その記事を読んでいて思ったことはやはりサーバーを増強したいということです。
でもVPSレンタルサーバーはサクサク表示させるには、結構お金がかかってしまいます、だったら固定IPを引いて自宅サーバーで運用した方が良いのかもしれないなってこの頃、思っています。
そうすればメモリはかなり詰めるし処理もそれなりに早くなります。恐らく瞬速で表示されるようになりますが、震災などが起きると忽ちダウンしてしまいますよね。
そう考えると・・・微妙ですね。
やはりVPSサーバーをもう一つ借りて調整するか、VPSサーバーと自宅サーバーを同期して運用するかだと…。
タグ
1, Apache, dynamic, IP, php, php-fpm, static, VPS, お金, かなり, こちら, こと, サーバー, サイト, そちら, それ, それなり, ダウン, はり, メモリ, もう一つ, レンタル, わけ, 借, 先週, 再起動, 処理, 参照, 参考, 固定, 増強, 変更, 対応, 微妙, 方, 方法, 朝, 瞬速, 自宅, 表示, 記事, 話, 途端, 運用, 震災, 頃,
不安・不満をつぶやくのは景気が良くない証拠。 #twitter #nowar
おはようございます、会社に行きたくない休みたいと呟く月曜日の朝ですね。仕事をしたいのに出来ない人にとっては何とも贅沢な話にも聴こえます🫠。
さて、不安・不満をつぶやくのは景気が良くない証拠です。コロナ不況で戦争が起こると予言した経済学者がいましたよね。そのロシアVS民主国家の戦争は恐らくこのまま続けばロシアは負けるでしょう。ロシアが手を引く停戦をすればロシアという国は残りそうだけど手を引かなかったら、ロシアを解体させる所まで持っていくだろうと思います。
命懸けで今も戦っている人がいるのとは別に、民主国家の思惑はロシアを解体して民主国家にしてしまうことを考えていると思います。そうなるとアジアの脅威は残るは中国と北朝鮮ぐらいになります、だから中国や北朝鮮は軍人路線に進もうとしている(解体されたら困るから)。
最悪のシナリオは第三次世界大戦になることです、これだけは避けてもらいたいけれども国の上層部が考えることは民衆とは違い利益優先に物事が運びます。そして大体、予想とは違う結果になってしまい後悔するのです。
そうなって欲しくはないので一刻も早く停戦してもらいたいですね。各国、自国の利益のことしか考えていないので、いつまで続くのか分かりませんが。
自分の予想では来年の夏頃まではこの戦争は続くと見ています。その後、ロシアが崩壊しないことを祈るのみです。
No War.
タグ
BY, com, nowar, ON, Pexels, Photo, Pixabay, Twitter, VS, アジア, こと, コロナ, シナリオ, ロシア, 三, 不安, 不況, 不満, 中国, 予言, 人, 今, 仕事, 休, 会社, 何, 停戦, 別, 北朝鮮, 命懸け, 国, 国家, 学者, 思惑, 戦争, 所, 手, 景気, 最悪, 月曜日, 朝, 民主, 経済, 脅威, 解体, 証拠, 話, 路線, 軍人,
FINAL FANTASY XVI #AMBITION #野心
おはようございます。PS5の在庫はどうなっているのでしょうか?
今日はFINAL FANTASY XVIのお話というか新たな予告が出たので、それを観た感想ですね。
さて、もはや凄すぎてついていけない、特に戦闘システムが不安だなって感じがします。FF7Rは何とかなりましたが、FF16は自分でもプレイが可能なのかが正直なところ不安でしかない。
グラフィック面やビジュアルは申し分なく、ストーリー展開も良さそうな気がするのだけども戦闘システムだけが不安。不安だけどもRPGももうこういう戦闘システムが一般的になってきているので、仕方が無いと言えばそれだけの事なのかもしれないけれども…。
FF16発売までに一番の不安はPS5が購入できるのかどうかが不安でしか無いですね。因みにPS4の値段も高騰しているのだとか・・・大丈夫だろうかソニーさん。
タグ
16, 4, 5, 7, AMBITION, FANTASY, FF, FINAL, PS, RPG, XVI, お話, グラフィック, システム, ストーリー, ソニー, それ, それだけ, ところ, ビジュアル, プレイ, 一, 不安, 予告, 事, 今日, 値段, 可能, 在庫, 展開, 感想, 戦闘, 正直, 気, 申し分, 発売, 自分, 購入, 野心, 高騰,
映画、アンチャーテッドを観ました。 #映画レビュー #遅ればせながら感想
おはようございます、何をもって仕事とするかが曖昧になっている気がします。
さて、今日はアマプラでアンチャーテッドを遅ればせながら観ましたので感想を残しときます。この映画は簡単に言えば冒険活劇的な映画です、インディーズの現代版とも言えば良いのでしょうか。そんなストーリー展開の映画です。因みに元ネタはゲーム、アンチャーテッドから来ているそうですが、自分はあまりゲームは専門ではないので割愛します。
また、ストーリー展開も知らず何も予備知識も入れずに映画を観た結果の感想だということを前提として感想を書くと、大画面で観ると少しは感想は違うかもしれませんが…全体を通してキャラに個性的なキャラがいないなって思えて残念?。
恐らくですがゲーム展開をナゾッて制作しているだと思います、そこが何だかB級映画に見えてしまうですね。ゲームでは面白い展開でも映画にすると何か一苦労がいるような気がします。
ちょっと辛口コメントですが、ラストに続編がある思わせシーンの方が本編ストーリーよりも何かテンポが良かった気がします。あのテンポの良さで本編も作って欲しかったというのが自分の希望ですね。
もう少しストーリー展開がハラハラドキドキでスピード感があると良い映画になっていたと思います。
まとめ、もう少しスパイスが欲しいカレーのよう、低学年には受けが良さそうだけど大人や青年が観るには何かが足りなかったという映画です。悪くはないが良くもなく・・・。
タグ
アマ, アンチャーテッド, インディーズ, キャラ, ゲーム, こと, ストーリー, そこ, ナゾッ, ネタ, プラ, レビュー, 一苦労, 予備知識, 今日, 仕事, 何, 全体, 冒険, 制作, 前提, 割愛, 専門, 少し, 展開, 感想, 映画, 曖昧, 残念, 気, 活劇, 現代, 画面, 簡単, 級, 結果, 自分,
休憩時間は一人が良い理由は之だったのか? #理由が欲しいのは人の性分。
おはようございます。出来ることから前に進める、今、出来ないこと、疲れる事は頓挫させる。自分を責めない。
さて、昔から昼休みは皆と会話することもなく、寝てた自分は別に人が嫌いでもないし仲良く出来ればしたいなと思っていましたが、人が思う以上にどっと疲れる身体なんだという事を最近、ツイーターで知りました。
グレーゾーンか発達障害なのか分かりませんが発達障害に当てはまる部分はあります。これが悪い事とは思いませんが、そういうのは特徴・個性があるという事だと思います。特に皮肉は自分は理解しにくい所で後から考えると皮肉を言っていたのかという事が後に分かる事が多いです。
その皮肉などが嫌がらせレベルになる事もあるのですが、そもそも皮肉や嫌がらせをするという考えが自分にはないので、相手の感情が正直な所わからないのです。
それが発達障害の症状なのかは分かりませんが、恐らくそういう事なんでしょう。相手の感情が分からないので対応するのも難しいのです。グレーゾーンと自分で言っているように全てが当てはまっている訳ではないのですが、半分ほどは何か自分に当てはまるなと思います。
自分は発達障害というと面談すらしてくれない会社もあると思います。なのでそれ程、酷くない場合は言うのを控えた方が良いじゃないだろうかと思いますね。そして寛容な社会へとか言いながら発達障害を受け入れない、障がい者への大きな賃金の格差があるのも変な話だと思います。
タグ
グレー, こと, これ, ゾーン, それ, ツイーター, レベル, 一人, 之, 事, 人, 今, 以上, 休憩, 会話, 個性, 前, 嫌い, 嫌がらせ, 後, 性分, 感情, 所, 昔, 昼休み, 時間, 最近, 正直, 特徴, 理由, 理解, 症状, 発達, 皆, 皮肉, 相手, 自分, 身体, 部分, 障害, 頓挫,
phpでソケット受信をする事だけ覚えとけば良い。#php #code
おはようございます。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, あれ, クライアント, こと, ご存知, サーバー, サービス, ソケット, ところ, ドメイン, なん, ライブラリ, 事, 今, 使用, 処理, 前提, 割愛, 受信, 可能, 名所, 定石, 常時, 意味, 接続, 有, 気, 確立, 自分, 送受信, 通信,
そういやインフラ系やサーバーサイドのYOUTUBERってあまり知らないよね。
おはようございます。先日、コロナワクチンを接種して熱が出たので昨日、薬を飲みました。本日は通常と変わらないですという予約投稿を書いている日曜日の夜。
さて、今日はサーバーサイドのYOUTUBERを見かけたのでご紹介です、お名前はうんちゃまさん、何故、そんな名前なのかや動画をまだ三本しか見ていないので、どんな人なのか等は分からない部分は有るものの。そんな悪人さんではないみたいなので、今回、ご紹介します。
サーバーを建てるに当ってどういう所を気にしているのかとか、自分の知見はどの程度なのかの答え合わせが出来て良かったと思っています。
因みにうんちゃまさんは、マイクラサーバーを運営している人です、自分も昔、マイクラサーバーを運営したいなと思って友人にマイクラサーバーは儲かるのか質問した事があります。結果、儲からないとの返答を得たので結局、運営せずに今に至っています。うんちゃまさんは、有志などがいて何とかなっているらしいです。自分もそういうITエンジニアの横のつながりが欲しいなというこの頃。
トイウコトデ、うんちゃまさんのYOUTUBEチャンネルはこちら
タグ
YOUTUBER, インフラ, うん, コロナ, ご紹介, サーバー, マイクラ, ワクチン, 三本, 予約, 事, 人, 今, 今回, 今日, 儲, 先日, 動画, 友人, 名前, 夜, 悪人, 所, 投稿, 接種, 日曜日, 昔, 昨日, 有志, 本日, 気, 熱, 知見, 程度, 答え, 結果, 自分, 薬, 質問, 返答, 通常, 運営, 部分,
出来ることを黙々とこなす。 #100% #全力
おはようございます、今日は振り込み日で御座います😋皆さん有り難う御座います。
さて、出来ることを黙々とこなす事を忘れずに、そして前向きに日々頑張っていきますので応援宜しくお願い致します。此処まで書いたら何のことか察しが良い人は気づいたかもしれませんが、本日広告収入が銀行に振り込まれる日です。
毎日のブログとWEBサービスとかで収益が出ました。これからは銀行振込を毎月に振り込まれるようにしたいなって思っています。これが当面の目標ですね、この目標達成が出来たら毎月の振り込み金額を増やしていきたいと思っています。
巷ではSEOやSNSを頑張れば集客が付くと言われていますが、そんな事にはあまり力を入れる事なく有益な事を書けば自ずと結果が帰ってくると信じて記事を書いています。※まだ、結果はあまり出ていないのですが、それでも続けています。
続ける理由は記事を書くのが好きだからという理由とやはり書いた記事が毎日のように読まれて、何かしら役に立つ事が出来ているかもしれないという事は良いことであり社会との接点でもあるかなと思っています。
トイウコデ、これからzip358.comもよろしくお願い致します🙇。
タグ
100, SEO, SNS, web, お願い, こと, これ, サービス, それ, ブログ, 事, 人, 今日, 何, 全力, 前向き, 力, 収入, 収益, 巷, 広告, 当面, 応援, 振込, 日, 日々, 有益, 本日, 此処, 毎日, 毎月, 理由, 皆さん, 目標, 結果, 記事, 達成, 金額, 銀行, 集客,
ポッドキャストの良さに気づく。 #Podcast #時間短
おはようございます🌅。本日、ワクチン接種してきます💉💉💉💉。
さて、今になってポッドキャストの良さに気づいてしまいました。動画よりも効率的に情報収集ができます。ながら聞きが出来るので良い。ラジオと違ってダウンロードして聞くことが出来ます。また、ラジオと違うところは自分の聴きたい人、聴きたいジャンルを聞くことが出来ます。
尚、結構ポッドキャストでは無料で色々なジャンルの方が発信してたりしています。お試しじゃなくて全部、無料で話が聞けたりして凄くお得感があります。
ポッドキャストにはグーグルポッドキャストやApplePodcastなど色々なポッドキャストが存在しますが、前文で記載したポッドキャストを覚えておけば事足りると思います。また、ポッドキャストのようなWEBサービスでボイシーという物もあります。こちらのサービスは有名人もいるので良いじゃないかな。
自分もいつまで聞くかは分かりませんが、今は聴いていて飽きないですね。
タグ
ApplePodcast, Podcast, web, いつ, お得感, お試し, キャスト, グーグル, こちら, こと, サービス, シー, ジャンル, ダウンロード, ところ, ボイ, ボット, ポッドキャスト, ラジオ, ワクチン, 人, 今, 全部, 前文, 動画, 収集, 存在, 情報, 接種, 方, 時間, 有名人, 本日, 無料, 物, 発信, 短, 自分, 色々, 記載, 話,