- 1. phpとPostgreSQLでGoogle Homeを音楽プレイヤー(アルバム再生版)
- 2. 初心者がSlimをインストールしてみた!
- 3. CakePHP3 の Cell を利用してアクセスカウンターを実装
- 4. 【PHP,Laravel】PHPから変数や配列をまとめて送り、Laravelで表示する方法
- 5. Laravel×Docker×Dusk×Seleniumでのテスト実行
- 6. Laravelのコンストラクタとは
- 7. 【初心者が悩む】RubyとPHPとPythonどれが良いのか?
- 8. phpでランダムな英数字の文字列を作成
- 9. PHPで他サイトのスクレイピング
- 10. 【PHP入門】ログイン機能
- 11. AWSでLAMP環境を構築して、Laravelアプリをデプロイする
- 12. Laravelの基礎学習 with XAMPP
- 13. FuelPHPでSQLの最新のレコードを取得する
- 14. 使用してきた関数(メソッド)を忘れないように記載していくよ(PHP版 随時更新)
- 15. Laravelの学習備忘録 その3
- 16. [個人メモ][PHP]ドメインのSSL証明書の有効期限の取得(subjectAltNameまで見る)
- 17. MediaWikiのAPIを使ってページを自動作成する
- 18. Laravelのタスクスケジュールが動かない(24時設定)
- 19. [PHP] 簡易ログイン機能を実装してみた
- 20. 連想配列のデフォルト値を省略すると実行速度は速くなる
phpとPostgreSQLでGoogle Homeを音楽プレイヤー(アルバム再生版)
#始めに
前作[phpでgoogle homeを簡易音楽プレイヤー](https://qiita.com/yoshiki9636/items/5cc8b04cebf2eb298b40)ではphpで書く1スクリプトでGoogle homeで音楽を再生してみようというコンセプトで作ってみましたが、1曲単発再生のみという音楽プレイヤーとしては致命的な仕様でした。Google Homeの音楽再生機能にはリクエストキューの機能は無いため、アルバムの複数曲再生には、スクリプト側でリクエストを待つ機能が必要となります。phpだけで作るのは面倒なことがわかり、crontabを使用して再生コマンドを予約する方式をとることにしました。また、楽曲データがitunesから取得できることが分かったので、PostgreSQLを使ってデータを管理してみることにしました。夏休みのプログラミングで趣味でポチポチ書いたものなので、簡単なコードですので、よろしかったら読んでみてください。
#参考サイト・文献
[phpでgoogle homeを簡易音楽プレイヤー](https://qiita.com/yoshiki96
初心者がSlimをインストールしてみた!
Laravelで幾つかアプリケーションを作ったので、もう一つくらいフレームワークを触ってみようとSlimを導入してみました。
#Slimとは
Slimとは**軽量フレームワーク(マイクロフレームワーク)**の一種であり、アプリケーションが動くのに必要な機能を最低限のみ兼ね備えたフレームワークです。
ちなみに、LaravelやCakePHP等たくさんの機能を兼ね備えたフレームワークは**フルスタックフレームワーク**といい、マイクロフレームワークとは対照的なものになります。
その為、フルスタックフレームワークと比べ処理速度が速く、ファイル容量も軽くなります。
#インストール手順
##スペック
OS:Windows10 Home 64bit
php Version: 7
Composer version:1.8.6
##Composerのインストール
Slimをインストールする際は、Laravelと同様にComposerを予めインストールされてあることが必要になります。
今回は既にインストールした状態で行った為、こちらの記事をご覧になっている方でComposerをまだインストールしていな
CakePHP3 の Cell を利用してアクセスカウンターを実装
# はじめに
私が運営しているブログ (駆け出しです) にサイトへの訪問者を表示させたかったので、アクセスカウンターを実装してみました。
CakePHP3 にはCell という機能があるので、こちらの機能を使ってみました。
※ブログ『CerisierAvantech FC-スリジエ・アバンテック FC』
URL:https://avantech-fc.com/## 環境
* OS: Windows10
* PHP: 7.4.1## 仕様
* リロードしてもカウントされない
* 自宅からのアクセスは対象外# Cellのファイルを作成 (コントローラーの役割)
* display()では実行するための条件文、内部関数のgetCount()ではカウント処理を行なう。
* カウントを行う際は $counter_file で指定したファイルに書き込む。
* ○○○.○○○.○○.○○○ には自宅のIPアドレスが入ります。“` php:site\src\View\Cell/CountsCell.php
【PHP,Laravel】PHPから変数や配列をまとめて送り、Laravelで表示する方法
とても悩んだので、プログラムを簡略化して記録します。
#問題点
“`
name | number | text
test | 1 | test
sample| 2 | sample
“`以上のようなとき、一行目しか変数に入らない!
#できた時のプログラム
“`index.php
$count = 1;$db = pg_connect(“host=host port=5432 dbname=dashboard user=postgres password=○○” );
if(!$db)throw new Exception(“DB接続に失敗しました。”);$search = pg_query(“SELECT *FROM board_posted;”);
if (!$search)throw new Exception(‘クエリーが失敗しました。’);//ここからポイント
for($i=0;$i
Laravel×Docker×Dusk×Seleniumでのテスト実行
### はじめに
インターン現場でLaravelを使用しており、テスト環境の構築を行いました。テストツールとしてDuskを使用し、seleniumとの連携という構成をとり、導入で何度かつまづいたので自分メモとして残したいと思います。
### Duskって?
[-ドキュメント](https://readouble.com/laravel/5.7/ja/dusk.html)
Laravelが標準で用意している、ブラウザの自動操作によるテストAPI。
テスト中はブラウザが勝手に動くのを眺めながらのんびりできます(笑)Duskは「$php artisan dusk:install」でコマンドインストール後、すぐに使えます。
しかし今回は現場の意向でデフォルトのChromeDriverの使用ではなくseleniumを使用することになりました。### 目標
##### –開発環境—
– Laravel 6.18.26
– Docker(Docker-compose) 19.03.8docker環境でDusk × seleniumでテストを実行することを目標と
Laravelのコンストラクタとは
##はじめに
コンストラクタとはクラスからインスタンスを生成するとき(オブジェクトがnewによって作成されるとき)に自動的に呼び出されるメソッドです。
オブジェクト作成時に初期化処理が必要な場合、コンストラクタ内に記述しておけば自動的に実行してくるので大変便利です。##コンストラクタを用いて実装してみる
“`php
class Job
{
protected $job_service;public function __construct(
JobService $job_service
) {
$this->job_service = $job_service;
}public function main()
{
$recruiting_jobs = $this->job_service->recruitingJobs();
return $this->render($recruiting_jobs);
}
}
“`
メソッド名の部分を__const
【初心者が悩む】RubyとPHPとPythonどれが良いのか?
# まずはじめに
プログラミングをやってみようとしてまず考える事が「どのプログラミング言語から初めよう?」というところではないでしょうか。そしてググっていくとRubyというプログラミング言語が真っ先に情報として入ってくるのではないでしょうか?
Rubyが真っ先に初心者に引っかかる理由は何と言っても「プログラミングスクールの殆どがRubyを激推ししているから」に尽きます。
ちなみに更にググってみるとRubyと似た言語にPHPとPythonがあるのです。
一体どの言語を勉強すれば良いのでしょうか?
## RubyとPHPとPythonのイメージ
まず、殆ど知識が無い状態の私が持っていたイメージ。
* Ruby – 初めて耳にする。
* PHP – 古臭い。
* Python – 初めて耳にする。結果、なんとなくPHPは聞いたことがある…という程度です。私の場合は、ワードプレスでブログ運営していた時期が少しばかりあったのでPHPというプログラミング言語の存在は知っていました。
PHPは古臭いと書きましたが、ググってみると、
* Ruby – 1993年2月24日生
phpでランダムな英数字の文字列を作成
https://off.tokyo/blog/php-randam/
できた
PHPで他サイトのスクレイピング
[PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法](https://blog.s-giken.net/441.html)
[PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方](https://blog.s-giken.net/442.html)
[スクレイピングをしてみよう 認証・リダイレクト回避編](http://www.lesson5.info/?p=203)
【PHP入門】ログイン機能
## はじめに
今回は、PHPとMySQLを使ってログイン機能を実装していきます。
**※当ページは、[【PHP入門】CRUD機能](https://qiita.com/taqmi/items/932a44b94b3a8c644370)で作られたものを前提にしています。**### バージョン
PHP:7.4.5
phpMyAdmin:5.0.2
MySQL:5.7.30### 今回作成するファイル
**html**
– login.php
– login_process.php
– signup.php
– signup_process.php
– logout.php**model**
– users.php**view**
– login_view.php
– signup_view.php## テーブルの作成
“`php:bbs_user.sql
CREATE TABLE `bbs_users` (
`user_id` int(11) NOT NULL,
`name` varchar(20) NOT NULL,
`password` varch
AWSでLAMP環境を構築して、Laravelアプリをデプロイする
今回はAWSのEC2、RDSを用いてLAMP環境を構築して、Laravelアプリをデプロイする手順を紹介します。
##今回の流れ
1.RDSを用いてDBサーバー作成
2.EC2を用いてWEBサーバーを作成
3.サーバー間の連携
4.アプリのデプロイ
##前提条件
・Macを使用
・AWSアカウントを作成済みであること
・GitHubのリモートリポジトリに、開発済みのLaravelアプリが置いてあること##1.RDSを用いてDBサーバー作成
コンソールにサインインした後、AmazonRDSに移動します。
続いてオレンジ色のCreate databaseボタンをクリックします。
Laravelの基礎学習 with XAMPP**この記事の解説は独自の解釈が多いため間違っている可能性もあります。そのような箇所があれば指摘して頂けると幸いです。**
## 目標
**Laravelで簡易的なサイトが作れる程度の基礎を習得する**
## 環境
– Windows 10 home
– XAMPP
– Laravel## Laravelの勉強
まずは[初心者のためのLaravel入門 – libro](http://libro.tuyano.com/index2?id=3766003)を軸に勉強を進めていく。
学習の手順としては入れ替えた方が良い箇所もあるかもしれないが、自分にとって親しみやすい順で進めていく。### Laravelのインストール
#### Composerのインストール
`Laravel`のインストールには`Composer`というパッケージ管理ツールを使う。
`PHP`で使用するソフトウェアやアプリケーションをインストールしたい時に、そのソフトウェアなどが動くのに必要な依存関係のある他のソフトウェアなども一緒にインストールしてくれる便利なツール。
[Composer 公式](ht
FuelPHPでSQLの最新のレコードを取得する
SQLにあるレコードの、`created_at`が最も新しいものを取得したいといったとき、
SELECTに`MAX(created_at)`とするだけでやってくれます。FuelPHPの場合は
“`example.php
$query = \DB::select(‘id’, \DB::expr(‘MAX(created_at)’))
->from(‘table_name’)
->execute();
“`とするだけでできます。
これに加えて
`group_by(‘id’)`
などを使うときにすごく役立ちます。配列で取得したあとに頑張って新しい配列に入れるみたいなことをせずに済みます。(自戒)
使用してきた関数(メソッド)を忘れないように記載していくよ(PHP版 随時更新)
#はじめに
今まで使用してきたメソッド
これから使用してみるメソッド
忘れないように、随時更新していきます。時間の都合上、
コードは載せる場合と、
載せない場合があります。例)
▶︎ メソッド意味:
参考コード
“`php
雛形
“`一つ一つ書くのが手間なので、
雛形を書かせていただきました!#書いていきます٩( ᐛ )و
▶︎ is_null意味:nullであればtrue,それ以外であればfalseを返す
参考コード
“`php
“`▶︎ asset
意味:「publicディレクトリ」のパスを返すヘルパ関数
ヘルパとはviewファイルで使えるメソッドのことです。
現在のURLのスキーマ(httpかhttps)を使い、
アセットへのURLを生成するメソッド参考コード
“`ph
Laravelの学習備忘録 その3
プログラマー初心者です。
Laravelを触って頑張っています。
Laravelでアプリを作りながら学んだことを雑多に記していきます。
記事の正確性は低めです。なので、各項目ごとの参考を参照したほうが良いと思います。
それでは!### バリデーション
参考:[ドキュメント「バリデーション」](https://readouble.com/laravel/7.x/ja/validation)
Laravelではバリデーションの方法がいくつかあるようだ。
– validate()メソッドを使う
– FormRequestを使う←おすすめとのこと。FormRequestを使う方法は、学習済み。
validateメソッドの方法でも試してみよう。
やりかたは、コントローラの中で、$requestを受けるときに、
`$validated_date = $request->validate([バリデーションルールを記述]);`
でオッケー。簡単。でも、FormRequestを使おう。なぜなら、コントローラーをすっきりさせて、見通しを良くしたいから。
また、より複雑なロジックを組める。
[個人メモ][PHP]ドメインのSSL証明書の有効期限の取得(subjectAltNameまで見る)
個人メモとして記事っぽくまとめ。
PHPでドメインのSSL証明書の有効期限を取得するコードは先人たちの英知に学ぶとして大幅に前段を省略しますが、最後はopenssl_x509_parseで返ってきた値の[subject][CN]と対象ドメインを比較して有効期限の取得判断をしています。
この時面倒なのが、例えばwww.yahoo.co.jpでこれを調べてみると、![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687945/d355e573-197d-e0aa-b5a2-13432bb6bfe1.png)
のように*付きでくるので単純比較では不一致になってしまうことですね。
まぁこれは正規表現でも使ってあげればいいので、脳死コーディングするなら“`php
if( strpos($parsed[‘subject’][‘CN’], $domain_name) !== false ||
preg_match(sprintf(‘/^.%s$/’,$parsed[‘subject’][‘
MediaWikiのAPIを使ってページを自動作成する
筆者は、MediaWikiを自分のための情報収集と整理に使っています。いわば、個人のナレッジマネジメントですが、そのときに重宝しているのが、MediaWikiのRESTfulなAPIを使用するクライアントアプリケーションです。タイトルとページコンテンツを与えて新規ページを作成するという至って簡単なものですが、その割には役にたっています。記述言語はPHPです。
最近ではAPIを使ったCMS管理が必須になっていますが、APIを使ったクライアントアプリケーションの作成は簡単だよ、という例です。
ソースは[GitHub](https://github.com/cnloni/mwtools)にあげています。MediaWikiシステムをプライベートに利用している方は(あまり多くないとは思いますが)、カスタマイズしてそれぞれの用途で利用してください。
#### 週別のテンプレートとは
筆者が最も利用しているのが、図1ようなテンプレートです。これは2020年29週の分ですが、週毎の月日と曜日、リンクをつけただけの簡単なものです。“`html:リスト1「2020年29週」
[[週報:202
Laravelのタスクスケジュールが動かない(24時設定)
昨日まで動いていたのに、今日は動かない・・・
昨日のリリースが悪いのかしら。。でも何も悪いことしていないのに・・・# スケジュール定義を見直そう
スケジュールタスクは全部“`App\Console\Kernel“`クラスの“`schedule“`メソッドの中に定義します。
この定義でミスしていました。
毎日24時に実行したいからって“`php
$schedule->command(‘cms:update-article-point’)->dailyAt(’24:00′);
“`と書くと落ちます。こんなログを吐いて死にます。
“`
In CronExpression.php line 155:
Invalid CRON field value 24 at position 1
“`このように書きましょう。
“`php
$schedule->command(‘cms:update-article-point’)->dailyAt(’00:00′);
“`
[PHP] 簡易ログイン機能を実装してみた
### はじめに
phpを使用して、簡易的なログイン認証を実装してみました。(技術力低いのでやばいかもしれないが…)**基本的な流れ**
1. idとpasswordを入力する。
2. 入力したidとpasswordがデータベースに紐づけされて登録されているかをチェック。
3. 登録されていたらログインし、以外はエラーを表示する。まぁ簡易的なのでそんなかんじです笑笑
### 該当ソースコード
#### 1. login.php
ログインするために、ID、パスワードを入力する画面です。“`php:ログイン画面(login.php)
<
連想配列のデフォルト値を省略すると実行速度は速くなる
#気になったこと
以下のように引数の連想配列に不足しているキーを自動で補ってくれる関数がある。
“`f.php
function f($option = []) {
$option += [
‘text1’ => ‘1’,
‘text2’ => ‘2’,
‘separator’ => ‘/’,
];
return implode($option[‘separator’], [$option[‘text1’], $option[‘text2’]]);
}
“`関数の呼び出し時に(a)オプション配列にすべてのキーを指定する場合、(b)デフォルト値を省略した場合、どちらの実行速度が速いか?
#時間計測スクリプト
“`benchmark.php
$t1 = microtime(true);
for($i=0;$i<500000;$i++) { f([ 'text1' => ‘abc’,
‘text2’ => ‘def’,
‘separator