- 1. 突然、YouTube Data API v3 で取得していた動画情報が取得できなくなってしまった
- 2. 1.原因の調査
- 2.1. Laravel で「Server error: GET http://cabinet.laravel.com/latest.zip resulted in a 522 Origin Connection Time-out response:」エラー
- 2.2. JavaScript PHP 正規表現を使用した文字列置換でが何を指しているかわからなかったので調べて簡単にまとめる
- 2.3. PHPの勉強でポートフォリオ投稿サイトを作ってみた
- 2.4. 【PHP:条件分岐】if文、else文、elseif文の3つを具体例付きで解説!【初学者向け】
- 2.5. 【Laravel基礎】フォームの入力内容を制限する方法【バリデーションとフォームリクエスト】
- 2.6. 5分で作るDocker+Laravel PHP+Vue.js開発環境構築
- 2.7. 転生できないからVimで2つのファイルの差分を確認してみた
- 2.8. AWS BeanstalkでLaravelをデプロイするときにCloudwatch Logsにログを転送する
- 2.9. でかいデータのAjaxリクエストを圧縮して軽くしてPHPで受け取る
- 2.10. Laravel passportのログイン失敗のエラーを飛ばさないようにする
- 2.11. 【Laravel基礎】データの受け渡し方 【①ルートパラメータ②Implicit Binding】
- 2.12. InterventionImageで編集した画像ファイルをbase64変換してMySQLに保存する
- 2.13. バイト ビット について strlen関数mb_strlen関数で実証
- 2.14. ESP32とMySQLとXAMPPを使ってWiFi強度(RSSI)をリアルタイムで閲覧したい
- 2.15. 【PHP】画面出力する際にechoとprintどちらを使うか
- 2.16. プリザンターから自前アプリの画面を開く
- 2.17. 表示件数を1ページ目だけ変えるページネーションの実装
- 2.18. 最近のエラーまとめ
炎上している件とは関係ないけどforとforeachの違いをまとめてみた
前回の記事 → [転生できないからVimで2つのファイルの差分を確認してみた](https://qiita.com/daikin/items/84b669b44a4c8053b45d)
### ほんと炎上とは何も関係ないです←
forとforeachって何が違ってどう使うのかややこしくなった時期が
過去あったなぁと思ったのでまとめました
因みに個人的な好みとしてforeachの方が使うことが多いです^ – ^#### for
公式 → https://www.php.net/manual/ja/control-structures.for.php“`PHP
for ($i = 1; $i <= 10; $i++) { echo $i; } ``` 基本的な使い方は上記の通りで $iが1からカウント?スタートして10になるまで{}の中の処理を繰り返します。 自分で繰り返す回数を指定出来る様なイメージで解釈しています。 #### foreach 公式 → https://www.php.net/manual/ja/control-structures.foreach
YouTube Data API v3 クォータ制限について
プログラミング初心者が自身で作りたいwebページの作成中に
疑問に思ったこと、問題解決したことを書いていきます。
間違っている点も多々あると思います。突然、YouTube Data API v3 で取得していた動画情報が取得できなくなってしまった
YouTubeの動画URLを入力すればカテゴリ別に仕分けしてDBに登録し、リスト形式で表示するというwebアプリを作った。
動画情報をYouTube Data API v3を用いてリスト形式で表示させるというものだったが
突然動画情報が取得できなくなってしまった。1.原因の調査
原因を調査したところ、GoogleのAPIでは1日に使用できる「クォータ(Queries)(?)」の制限があるとのこと。
[コンソール](https://console.cloud.google.com/apis/api/youtube.googleapis.com/quotas)
こちらにアクセスしたところ確かにいっぱいだった・・・
(
Laravel で「Server error: GET http://cabinet.laravel.com/latest.zip resulted in a 522 Origin Connection Time-out response:」エラー
Laravel で久しぶりに laravel new blog のコマンドを打ってプロジェクトを作ろうとしたらタイトルのエラーが発生した。
“`
laravel% laravel new blog
Crafting application…In RequestException.php line 113:
Server error: `GET http://cabinet.laravel.com/latest.zip` resulted in a `52
2 Origin Connection Time-out` response:
522 O
JavaScript PHP 正規表現を使用した文字列置換でが何を指しているかわからなかったので調べて簡単にまとめる
# 目的
– JavaScriptとPHPの文字列置換でどうして$1にヒットした文字列が入っているのかわからなかったので調べてみた
# 前提情報
– JavaScriptは下記の方法で確認した
– [JavaScript 正規表現をchromeの検証モードで確認する](https://qiita.com/miriwo/items/b874f9cc27fa44451769)
– PHPは下記のサイトで確認した。
– [https://paiza.io/ja](https://paiza.io/ja)
– 下記の内容を実装中に$1になぜヒット内容が入っているか気になった。(本来良くないことだが$1にすればヒットした内容が格納されているということを一つ覚えで実装してしまった。)
– [Vue.js 表示文字列にURLが含まれていたときにリンク化する](https://qiita.com/miriwo/items/1c70ba9ed43595608a93)# 確認
1. Chromeの検証モードのコンソールでで下記を実行してみる。
“`JavaS
PHPの勉強でポートフォリオ投稿サイトを作ってみた
# はじめに
新卒でウェブ制作会社に就職し、コードの量産に嫌気が差し営業に転職。
趣味で作りたいもののために勉強しているウェブエンジニアです、こんにちは。今まではWordpressを使用しウェブサイトを作ってきましたが、ウェブサービスを作りたく思いバックエンドの勉強を開始しました。
その時、悩んだこと、作ったサービスを簡単に書こうと思います。# 「PHP」を選択するか、あるいは「Laravel」選択するか
結果的にタイトルにあるように“PHP“を選択しましたが、すごい悩みました。
というのも“PHP“はあまりいい噂を聞きません。
「やれ、古い」「やれ、汚い」挙句の果てに「オワコン」なんて言葉も見つけました。それに比べて“Laravel“はかっこいい。
なんかモダンな香りがしますよね。
「“PHP“勉強してるより、“Laravel“勉強してる」の方がかっこいい。形から入るタイプの私はすごい悩みました。
通勤電車中、仕事中、食事中、ずっと考えました。
考えて考えて考え抜いた結果、「とりあえず手を動かそう、早く作ろう」という結論に至りました。そうすると
【PHP:条件分岐】if文、else文、elseif文の3つを具体例付きで解説!【初学者向け】
プログラミングを`Progate`や`ドットインストール`、勉強はじめた時は、覚える関数が多くて
「どの関数を使うかわからない!」
「そもそも関数多くて覚えてられない!」などと悩んだことが多かったです。
しかし、`Progate`や`ドットインストール`で紹介されている関数は網羅的なので、正直あまり使われない関数も多いです。と言うことで、この記事ではまず最初に抑えたいif文と言う関数を3つご紹介します。
##if_else_elseif文 (超頻出)
###書き方
“`php
“`因みにelseif以下の部分と、else以下の部分は書いても書かなくてもOKで、その都度利用していく感
【Laravel基礎】フォームの入力内容を制限する方法【バリデーションとフォームリクエスト】
#概要#
Laravel学習で自分がつまずいた部分を備忘録としてまとめています。
今回はフォームの入力内容の制限に関する記事です。#つまずいたポイント#
指定条件以外のフォーム入力を弾いてくれる`バリデーション`。
そんなバリデーションですが、アクション事に毎回指定するのが面倒くさい。。
効率的な方法が無いか調べました。どうやら、`フォームリクエスト`なるものを使うと
一括でバリデーションを指定出来るとのこと。バリデーションの復習もかねて、下記の2つを記事にしました。
####①バリデーション####
####②フォームリクエスト####以下、記事内容です!
#バリデーション#
まずはバリデーションの復習。
保存や編集などの、フォーム内容を受け取るアクション内で、
`$this->validate($request,[条件]);`を入力。
第2引数の入力内容が、フォームの入力条件になります。■コントローラ
“`laravel:PostsController
public function store(Request $request) {
5分で作るDocker+Laravel PHP+Vue.js開発環境構築
|開発環境|
|—|
|macOS Big Sur|下記の記事を参考に環境構築を行ったのですが、
やれ`wget`コマンドが無いだの、`apt-get`コマンドが無いだの初心者の方への導入への障壁がいくつかあったため、
それを乗り越えるための記事にしたいと思います。(※注:下記の記事は決して悪くありません。)|タイトル|リンク|
|—|—|
|5分で作るLaravel+Vue.js開発環境(docker-compose)|https://qiita.com/yusukeito58/items/37bd551560e495dbd1b8|
—
# `wget`コマンドインストール
|タイトル|リンク|
|—|—|
|Mac – wgetコマンドをインストール(使えるようにする)|https://qiita.com/th4inf/items/f85c1b91065d85af67b9|
—
# ~~`apt-get`コマンドインストール~~ ←apt-getコマンドが無いかと思い調べてが結果的にいらないのでやらんで良い
|タイトル|リンク|
|—|-
転生できないからVimで2つのファイルの差分を確認してみた
### 状況
案件の対応で先方の都合?で
Bitbucketでコードの管理を行い
完成したコードをFTPを使って直接サーバーにコードをアップする
その際にコードの改修をする場合に仮にclone(pull)したコードが
先方のサーバーにあるコードと相違があった場合に意図しない処理が
先方のサーバーに上がってしまいトラブルの原因となってしまうので
その確認のために差分を見ることを実施したのでその忘備録参考サイト
→ https://nanasi.jp/articles/howto/diff/diff_text.html改修を予定しているAファイルを開いて下記コマンドを実行
“`
:vertical diffsplit 差分を取りたいファイル
“`
今回はBファイルと照らし合わせるとした場合には“`
:vertical diffsplit Bファイル
“`こうすることで画面が縦に2分割されて差分がみれる
なお自分がやったときには差分が無かった為
一行ほどに文言が書かれているだけだった。もしこれで差分があった場合には
Bitbucketにあるファイルが古いのか
ま
AWS BeanstalkでLaravelをデプロイするときにCloudwatch Logsにログを転送する
# 前提のBeanstalk環境
PHP 7.4 running on 64bit Amazon Linux 2/3.1.3
# やること
– lavavel.logのパーミッション設定
– EC2にCloudwatch Logsのロググループ作成のためのサービスロールを追加
– 設定ファイル(.ebextensions)の作成# 1. lavavel.logのパーミッション設定
“`sh
$ chmod 0664 /var/www/html/storage/logs/laravel.log
“`# 2. lavavel.logのパーミッション設定
– Beanstalk環境のIAM インスタンスプロフィールに設定されているIAMロールに、CloudWatchLogsFullAccessのポリシーを追加
(Codepipelineでデプロイしている場合は、そのロールにも同様にCloudWatchLogsFullAccessのポリシーを追加)# 3. 設定ファイル(.ebextensions)の作成
– PHP Platformでデフォルトで追加されるログの設
でかいデータのAjaxリクエストを圧縮して軽くしてPHPで受け取る
数MBくらいあるデータをリクエストボディに載せたいけど、少しは軽くしたいのでゴニョゴニョ。
## JS側
“`js
import pako from ‘pako’
import axios from ‘axios’const bigObject = { /* 超でかいObject */ }
const json = JSON.stringify(bigObject)
const gzipped = pako.gzip(json, { to: ‘string’ })
const base64Encoded = btoa(gzipped)
axios.post(‘/api/foo’, { compressed: base64Encoded })
“`– JSONにする
– [pako](https://www.npmjs.com/package/pako) を使ってgzip圧縮する
– [btoa()](https://developer.mozilla.org/ja/docs/Web/API/WindowOrWorkerGlobalScope/btoa) を使ってBase
Laravel passportのログイン失敗のエラーを飛ばさないようにする
Laravel passportを使うときデフォルトでは、ユーザーのログイン認証に失敗するだけでエラーを投げるようになっている。
エラートラッキングツール(Sentryなど)を使っていると、ユーザーがログイン失敗するだけで通知が来てしまうのが面倒。Handler.pnpに、下記のように追記するとエラーが飛ばないようにできる。
“`php:app/Exceptions/Handler.php
protected $dontReport = [
\Laravel\Passport\Exceptions\OAuthServerException::class,
];
“`
【Laravel基礎】データの受け渡し方 【①ルートパラメータ②Implicit Binding】
#概要#
Laravel学習で自分がつまずいた部分を備忘録としてまとめています。
今回はデータの受け渡しに関する記事です。#つまずいたポイント#
記事投稿型の簡易アプリ作成時につまずいた問題です。記事一覧ページ→記事の詳細ページに移る際、
ビュー→コントローラに投稿のデータを渡すにはどうしたら良いのか?
下記2つの方法で解決出来たので記事にしてみました。
####①ルートパラメータ####
####②Implicit Binding####以下、記事内容です!
#ルートパラメータ#
まず渡し方の1つがルートパラメータを用いた方法です。■ビュー
“`laravel:index.blade.php
@foreach ($posts as $post)InterventionImageで編集した画像ファイルをbase64変換してMySQLに保存する # やりたいこと
InterventionImageで編集した画像ファイルをバイナリーに変換してMySQLに保存したい
もちろん画像ファイルは/public配下やS3などのファイルシステムに保存するのが定石なのは承知の上で、今回は手軽さを優先してDBに画像ファイル自体をtextカラムに保存する# 環境
“`shell-session
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.7
BuildVersion: 19H2% docker version
Client: Docker Engine – Community
Cloud integration: 1.0.1
Version: 19.03.13
API version: 1.40# php -v
PHP 7.4.7 (cli) (built: Jun 11 2020 18:41:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyrigh
バイト ビット について strlen関数mb_strlen関数で実証
学習した事をアウトプットするためいんQiita投稿しています。
学習中ユーザーが書いた記事になります。[ビット・バイト]について学習した理由は、
strlen関数、mb_strlen関数(簡単に文字列を数える)関数について理解を深めたかったから。ビットとは
ビットとは、0か1が入る箱の事。
つまり、
“`
1ビット・・・0、1(2通り)2ビット・・・01、10、00、11 (4通り)
3ビット・・・000、001、010、011、100、101、110、111(8通り)
4ビット・・・16通り
5ビット・・・32通り
それでは問題。
16ビットは何通りでしょうか。
ヒント:
・1ビットで表現できるのは0、1の2通り
・ビットパターンは0、1の2通り正解は下記 「【基本】シングルバイトとは」に記載。
“`上記を見ていただいたら分かる通り、1ビット増えるごと、倍のデータ量となります。
【基本】バイトとは
バイトとは、0か1が入る箱(ビット)が8つくらい入る大きな箱の事。
補足:
基本的には1バイト=8ビット
ただ、
・1バ
ESP32とMySQLとXAMPPを使ってWiFi強度(RSSI)をリアルタイムで閲覧したい
たまにネットワークが途切れるがどのネットワークが強いのか接続しないと分からないなぁ。のひとことから勉強のつもりで作ってみました。
esp32でRSSIを取得するコードがなかなかみつからなかったのでここに残します。
arduino ideのソースコードに関してはほぼ初心者でhtmlは今回の件で初めて触りました。
自分で見てもかなり見にくいのでアドバイスもいただけますと幸いです。
もちろん市販品のほうが性能もよく見やすいのは承知です。#今回の目標
①esp32でRSSIを取得しMySQLへ蓄積。
②MySQLに蓄積されたデータをxamppを使い社内のみブラウザで閲覧できるようにする。#①の攻略
まずソースコードは以下の通り。
環境設定をしたarduino ideへ。“`esp32_wifi_power_complete.ino
#include
#include
#include
#includeconst char ssid[] = “*******”;
【PHP】画面出力する際にechoとprintどちらを使うか
PHPの初学者です。ふと疑問に思いました。
##画面出力する際にechoとprintのどちらを使うか
###結論: どちらを使っても、大した違いはありません。
(但し、厳密には異なります。)
- echo
- 1つ以上の文字列を出力します。
- 返り値・・・値を返しません。
- 文字列を出力する
- 返り値・・・常に1を返します。
###つまり…
**echo** → 返り値が**ない**
**print** → 返り値が**ある**
でも、printで出力した場合、常に返り値が1であるため、それを使って何かをすることはありません。##結局は、echoで出力すると良い
今までの説明で、echoもprintも違いはあれども、大した違いは無いということはわかっていただけだかと思われます。###それでもechoを使うと良いのです!
理由はパラメーターの違いです
プリザンターから自前アプリの画面を開く
# 概要
プリザンターから情報を引き継いで、自前アプリの画面を開く方法を調査。
例えば、プリザンターでログインした後に、特定のデータだけは自前アプリを作って表示するといった使い方を想定。## 前提条件
– 環境
– OS: Windows10
– ローカル環境に構築したプリザンター
– 以下の詳細説明は省略
– プリザンター
– php# 結論
プリザンターから自前アプリの画面を開けることを確認できた。
スクリプトでPOSTして自前アプリに画面遷移させる方式。
プリザンターの情報の引継ぎも可能。# 詳細
## 自前アプリを準備
phpで簡単なページを作って、簡易サーバを起動しておく。
POSTで受け取った以下3つの情報を表示するだけの画面。– userId
– userName
– loginId↓簡単なページ
“`index.php
表示件数を1ページ目だけ変えるページネーションの実装
#はじめに
表示件数が1ページ目だけ異なるページネーションの実装をまとめました。
紹介した内容以外でもっと良い方法がありましたら教えてもらえると助かります!#解説
1ページ目に3件、2ページ目以降は10件ずつ表示する場合で解説していきます。
(件数は適当なので、各自好きな数字で調整してみて下さい)##ページの取得件数を設定
“`
$post_per_page = $paged > 1 ? 10 : 3;
“`
ページの取得件数を設定しています。1ページ目なら**3**、2ページ目以降なら**10**を設定します。
SQLの`LIMIT句`に`$post_per_page`を設定すれば、テーブルから取得するデータ件数を指定できます。## 取得するデータの開始位置を設定
“`
if ( $paged > 1 )
$add_args[‘offset’] = 3 + ( $paged – 2 ) * 10;
“`
2ページ目以降は1ページ目の3件+1ページごとに10件読み飛ばします。
例:2ページ目は4件目から、3ページ目は14件目からデータを取得ここでの`
最近のエラーまとめ
#最近発生したエラーの振り返り
簡単な内容のエラーではあるが、記事にしてアウトプットする。【この記事の目的】
✅どんなエラーがあったのか記録の意味をこめて記載
✅アウトプットを継続する力をつける
✅簡単な内容から文章にし、記事を書くことに慣れる##1.SQL が開けないエラー
SQLの実行コードを行ったが開けなかった。“`
docker-compose app mysql -h db -u book_log -D book_log -p
“`上記のようにコードを記述して実行した所
“`
No such command: app
“`docker-compose と app の間の exec が抜けてしまっていた凡ミス。
今後コードを良く見返して実行するように注意する。##2.SQLへのデータ登録エラー
SQL登録の際に以下のエラーが発生“`
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your My