- 1. プログラマ脳を鍛える数学パズル Q.02「数列の四則演算」
- 2. お問い合わせフォーム、jsでバリデーション
- 3. 大手日系メーカーからITベンチャーに転職して思うこと
- 4. Illuminate\Database\QueryException : could not find driver (SQL: PRAGMA foreign_keys = ON;)の解決方法
- 5. Laravel 環境構築 (Ubuntu 18.04 LTS )
- 6. Laravelのバージョンを指定する方法
- 7. PHP、Laravel 学習 コントローラーの説明①
- 8. Laravelのユーザー登録を入力・確認・完了の3画面に分けた際のメモ
- 9. formを使ってGET送信なんてもうしない!
- 10. PHPで標準入力の値を取得するときの注意
- 11. PHP 処理で “Warning: Cannot modify header information…” が出たときの解決方法
- 12. 【PHP/Laravel】php artisan serveを使わずにVirtual Hostを設定する
- 13. 【PHP】ファイルコピーツールを作ってみよう
- 14. 配列を繰り返して取り出す処理が言語によって微妙に違う…
- 15. 実務経験で身につけた技術 ~PHP編~
- 16. 待って!継承だけで大丈夫?
- 17. Laravelでとあるディレクトリのファイル一覧を取得したい人へ
- 18. PHP オブジェクトを配列のように扱うためのインターフェース ItetatorAggregateやArrayAccessなど
- 19. Webサイトに来た攻撃をまとめてみた
- 20. ボタンクリックにより、同じIDの別のカラムのフィールドを出力する
プログラマ脳を鍛える数学パズル Q.02「数列の四則演算」
基礎アルゴリズム力upのためPHPで解いてみた。
下記の考えのもと組んだ。+ 1.for文で1000~9999を回す。
+ 2.正規表現指定(0を全て除外)
+ 3.数字を各位(千、百、十、一)に分け、それぞれの間に四則演算を入れたfor文。
+ 4.文字列式を作成。
+ 5.結合文字列をevalで計算
+6.対象数字と反転した結合結果の数字が一致するなら出力“`
お問い合わせフォーム、jsでバリデーション
“`javascript:contact.js
window.addEventListener(‘DOMContentLoaded’, () => {
// 「送信」ボタンの要素を取得
const submit = document.querySelector(‘#contact-submit’);// エラーメッセージと赤枠の削除
function reset(input_infomation, error_message){
const input_info = document.querySelector(input_infomation);
const err_message = document.querySelector(error_message);
err_message.textContent =”;
input_info.classList.remove(‘input-invalid’);
};// 「お名前」入力欄の空欄チェック関数
大手日系メーカーからITベンチャーに転職して思うこと
#大手日系メーカーからITベンチャーへ
何を思ったかITベンチャーへ転職をして半年が経ちました。(やっていたことはPHP, HTML, JavaScriptなど)
なんとなく半年経って思うことをまとめておこうと思います。#転職して思うこと
20代の若いうちは貴重な時間なので、もしやりたいことがあるのであれば転職は早いうちにしたほうがいいと思った。
(年次が上がれば上がるほど転職を決断するのは難しかっただろう…)大手勤務時代は、やりたくないことをしてただただ時間が過ぎていく感じがした。
(まぁ、かと言ってベンチャーがそうじゃないとは言い切れないところがあるが、
大手特有の若手に対して理不尽な感じとか何事にも納得できない感じとかは今はしない)あと、周りのほとんどの人が仕事に対して情熱がなかった。
なんとかやり過ごそうとする人が多く、きつかった。
何のために仕事をして、何がしたいのか分からなかった。
向上心のある人と働きたいと思った。<環境について>
大手勤務時代は人が多くて人付き合いに疲れて、仕事に集中できなかった。
ベンチャーは人数が少なくていい。
無駄に気
Illuminate\Database\QueryException : could not find driver (SQL: PRAGMA foreign_keys = ON;)の解決方法
##結論 SQLiteの接続用ドライバーをインストール
まずPHPのバージョン確認“`Ruby:
$ php -v
PHP 7.4.12 (cli) (built: Oct 31 2020 17:04:25) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.12, Copyright (c), by Zend Technologies
“`
PHPのバージョンに合わせてインストール“`Ruby:
$ sudo apt-get install php7.4-sqlite3
“`##無事に “php artisan migrate” できました
“`Ruby:
$ php artisan migrate
Migration table created successfully.
“`
Laravel 環境構築 (Ubuntu 18.04 LTS )
##1. PHP7.4のインストール
###下準備
“`ruby:
$ sudo apt-get update
$ sudo apt -y install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
“`
これでPHP 7.4 をインストール可能なリポジトリを apt で使えるようになった。
###インストール
“`ruby:
$ sudo apt install php7.4 php7.4-mbstring php7.4-dom
“`
他に必要なものも一緒にインストールしておく。###インストールできたか確認
“`ruby:
$ php -v
PHP 7.4.12 (cli) (built: Oct 31 2020 17:04:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zen
Laravelのバージョンを指定する方法
##結論 composerコマンドで指定する
“`ruby:ターミナル
$ composer create-project –prefer-dist laravel/laravel=”6.*” sample_app
“`
これでLaravel6系統がインストールされる。
##バージョン確認
“`ruby:ターミナル
$ php artisan -V
Laravel Framework 6.20.4
“`
PHP、Laravel 学習 コントローラーの説明①
#コントローラーの説明
まずはこの画像をみてください
![MVCmodel-1024×492.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651096/443e4044-32fe-93d2-dc90-08e866e6b751.jpeg)
ルーティングの先にあるコントローラーを説明していきます。コントローラーはユーザーから送られてきた指令に対して**どのようにアクションするか**を決める場所です。
要するに**総合窓口**ですね。。。市役所とか電話すると「そのご相談しでしたら○○課ですね〜」って案内する人いるじゃないですか?それがコントローラーです。
ルーティングから直接ビューを見せることはたまにありますが、基本的にコントローラーを介して見せる場合が多いです
(モデルはルーティングから直接見せることはほぼない)#コントローラーの記法、RestFulコントローラー(リソースコントローラー)について
基本的な記法を以下に書いておきます//HomeController
public
Laravelのユーザー登録を入力・確認・完了の3画面に分けた際のメモ
ユーザー登録画面を入力・確認・完了の3画面に分割する要件があり、Laravelで実装した際のメモになります。(あまりLaravelに慣れていないため、あまり綺麗なコードではないかもしれませんが、ご了承いただければと思います。)
ユーザー登録のルーティングは以下のようにしてみました。
“`php:routes/web.php
Route::get(‘register’, ‘Auth\RegisterController@showRegistrationForm’)->name(‘user.resister_show’);
Route::post(‘register’, ‘Auth\RegisterController@post’)->name(‘user.resister_post’);
Route::get(‘register/confirm’, ‘Auth\RegisterController@confirm’)->name(‘user.register_confirm’);
Route::post(‘register/confirm’, ‘Auth\RegisterContr
formを使ってGET送信なんてもうしない!
まずはGETとPOSTの違いについて自己流で簡単に笑
・GET idやkeyを送りたい 直接URLアクセスが可能
・POST 大事なデータ(パスワードなど)をデータベースに格納したい時例えるなら厳しい母親がPOSTとすると、GETは優しいおばあちゃんみたいな(全然ズレてたらごめんなさい笑)
と、まぁ冗談はこれくらいにして
本題はどうやってform使わずに簡単にget送信するかって話。まずはこれが普通のget送信
“` ruby:send.php
~
~
“`
仮にformに入れた値を 1 だとすると
“` ruby:receive.php
PHPで標準入力の値を取得するときの注意
# はじめに
fgets(STDIN)で標準入力の値を取得すると改行されることを知らなくてハマったときのこと# こうなってしまう
“`
入力
Hello
“`
“`PHP
$input = fgets(STDIN);
$length = strlen($input);
echo $input . ‘ is ‘ . $length . ‘ letters.’;
“`
“`
出力
Hello
is 6 letters.
“`# 対策
そのままだと改行されてしまうし文字数も合わないので改行コードを消す、というかクォーテーションで囲んで空白(スペースではない)に置換する“`php
$input = fgets(STDIN);
$input = str_replace(PHP_EOL, ”, $input);
echo $input . ‘ is ‘ . $length . ‘ letters.’;
“`
“`
出力
Hello is 5 letters.
“`
PHP 処理で “Warning: Cannot modify header information…” が出たときの解決方法
さくらのレンタルサーバ(スタンダードプラン)で WordPress をおまかせインストールした後、ちょっと色々の必要があって、さくらサーバの「コントロールパネル」を使って `php.ini` を(はじめて)設定したら、
“`php
PHP Warning: Cannot modify header information – headers already sent by (output started at /home/XXXX/www/AAAA.php:NNN) in /home/XXXX/www/index.php on line NNN
PHP Warning: Use of undefined constant SOME_VALUE – assumed ‘SOME_VALUE’ (this will throw an Error in a future version of PHP) in /home/XXXX/www/index.php on line NNN
“`などという Warning とともにページが表示されなくなって焦ったのでメモ。問題だったのは 1
【PHP/Laravel】php artisan serveを使わずにVirtual Hostを設定する
#【PHP/Laravel】php artisan serveを使わずにVirtual Hostを設定する
###使用環境
* windows 10 Home(COREi7)
* XAMPP 7.3.18
* Laravel 6##そもそもVirtual Hostって何?
>バーチャルホストという用語は、1 台のマシン上で (company1.com と company2.com のような) 二つ以上のウェブサイトを扱う運用方法のことを指します。
[Apache バーチャルホスト説明書](https://httpd.apache.org/docs/2.4/ja/vhosts/)##virtual hostの設定
* “`C:\xampp\apache\conf\extra“` の中の“`httpd-vhost.conf“`ファイルをまずコピーを取っておく。* 以下の部分を書き換える
“`
##NameVirtualHost *:80・・・中略・・・
##
##ServerAdmin webmaster@
【PHP】ファイルコピーツールを作ってみよう
#はじめに
PHPでツール作成の二回目です。
今回はファイルコピーツールを作成していきたいと思います。#ツール動作イメージ
ツールの動作イメージです。
![qiita_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/32637031-344f-38b6-2b64-bc1f63413358.png)
コピー元フォルダにある指定したファイルをコピー先フォルダへコピーするといった動作になります。#ツール要件
今回のツールの要件は以下とします。– コピー元、コピー先フォルダは絶対パスでプログラム内部で定義する
– コピー元、コピー先フォルダ、コピーファイル一覧テキストファイルが存在しない場合はエラーメッセージを表示し終了する
– コピー対象ファイルの一覧は「file_list.txt」の中に改行区切り(CRLF)で記載する
– 「file_list.txt」に記載されているファイルが存在しなかった場合はコピーを実行せず、次のファイルを参照する
– スクリ
配列を繰り返して取り出す処理が言語によって微妙に違う…
for文で配列を1つづつ取り出して変数に代入したいことってよくありますよね。
色々な言語による微妙な違いで脳がやられます。ここではPython,JavaScript,PHPを取り上げます。—
Pythonだと
“`python
for(変数 in 配列)
#繰り返したい処理
“`
inなんですよね。そしてPythonは{}なしでインデントで表します。でみんな大好きJSだと
“`JavaScript
//配列のとき
for(変数 of 配列){
//繰り返したい処理
}
“`ofなんですよね。ちなみにオブジェクトだとinを使います。
で、PHPだと
“`PHP
foreach($配列 as $変数){
//繰り返したい処理
}
“`for文ではなくforeach使ってしかもasです。
混同しそうです………
実務経験で身につけた技術 ~PHP編~
#はじめに
未経験から実務経験2か月ちょっとを経て、1つのサイトを完成させることができたので(もちろん色々な人の手助けあってですが)、今後に生かすインプットと自分の備忘録としてPHP、JavaScript・jQuery、HTML・CSSの3つに分けて記録していきます。
この記事では、**PHP(FWのEthna含む)について**書いていきます。
なお、身につけた技術は随時、記録・更新していきます。
他の記事については、下記のリンク先からご覧ください。別の記事のリンク
[実務経験で身につけた技術 ~JavasScript・jQuery編~](https://qiita.com/hx_kei/items/ff8ff0e98b2545b5e37e “実務経験で身につけた技術 ~JavasScript・jQuery編~”)
[実務経験で身につけた技術 ~HTML・CSS編~](https://qiita.com/hx_kei/items/2079aa122f779081271c “実務経験で身につけた技術 ~HTML・CS待って!継承だけで大丈夫?
# はじめに
PHPのオブジェクト指向に慣れてきた人は自ずと頭の中で設計を練り、コードを書くと思います。
他クラスのメンバ変数やメソッドを使いたいからと言ってなんでもかんでも継承をすればいいって話じゃありません。今回紹介するのは PHP 5.4.0 以降から追加された **Trait** についてです。
# Traitってなに奴
まず Trait は今までのインターフェイスの概念やクラス継承の概念とはまた別なちょっと変わりものです。
こいつはクラスに任意のメンバ変数やメソッドなどを**水平方向**から追加してくれます。
「なにいってんだこの赤ん坊は」と思う方もいらっしゃると思います。
要するにこの Trait を利用することによって PHP はもともと単一クラス継承の言語ですが、それを見かけ上複数継承のようにふるまうことができるようになるわけです。# 前提ソースコード
“`php5:Human.php
class Human {const MALE = 0;
const FEMALE = 1;protected $name;
proLaravelでとあるディレクトリのファイル一覧を取得したい人へ
世にはいろいろなQiita記事があり,Laravelの記事も様々…かと思いきや,Laravelの記事って結構少なくないですか?
タイトルの通り,この記事はLaravelでほかのファイルの名前を取得したい人への僕のささやかな気持ちです.
一方的に投げつけておくのでどうぞ受け取ってください.#やり方
1. `〇〇_path(‘パス\*’)`で,ファイル一覧を取得したいディレクトリのフルパスを取得.
2. `glob(取得したフルパス)`で,ディレクトリ内のファイルのパスを配列として取得.#### ステップ1. `〇〇_path(‘パス\*’)`で,ファイル一覧を取得したいディレクトリのフルパスを取得.
`〇〇_path()`というヘルパ関数を使います.
この関数は,相対パスを指定したフォルダやファイルのフルパスを取得することができる関数です.
これには以下の種類があり,それぞれの〇〇の部分が,パスを取得できる場所(rexourcesやpublicなど)に対応しています.* app_path()
* base_path()
* config_path()
* databaPHP オブジェクトを配列のように扱うためのインターフェース ItetatorAggregateやArrayAccessなど
# はじめに
PHPには、いくつかの[定義済みインターフェース](https://www.php.net/manual/ja/reserved.interfaces.php)があります。その中でも特に、以下のインターフェースを実装することで、オブジェクトを配列のように振る舞わせることが可能です。
– Traversable
– Iterator
– IteratorAggregate
– ArrayAccess
– Countableこれらのインターフェースを満足させる方法を見ていきます。
# Traversable
Traversableインターフェースは、`foreach`文でループ可能にするためのインターフェースです。しかし、Traversableはこれは内部エンジンのインターフェイスであり、PHP スクリプト内で実装することはできません。かわりにTraversableを実装したIteratorかIteratorAggregateを使用する必要があります。
“`php
Webサイトに来た攻撃をまとめてみた
# はじめに
自宅にインターネットに公開しているWebサイト(自宅サーバー)があります。Webサイトでは日夜、世界中から脆弱性を悪用しようと攻撃を受けているのですが、今回は実際にWebサイトに来た攻撃の一部を紹介してみようと思います。# 環境
* Laravel(PHP)を用いた動的なWebサイトなどを自宅で公開
* インターネットとの境界線にFW(Fortigate)を設置。UTMライセンスあり
* インターネット->自宅サーバーNWへの通信に対してFWの`アンチウイルス`、`IPS`、`WAF`を有効
– `IPS`とは: 不正な通信を検知、ブロックする機能。主にOS、機器などの脆弱性を狙った攻撃
– `アンチウイルス`とは:パケットに含まれるウイルスを検知、ブロックする機能
– `WAF`とは:Webアプリケーションレベルの攻撃を検知、ブロックする機能
* 期間は11月のある一週間# 結論
自宅であろうが、AWSであろうが、レンタルサーバーであろうが、Webサイトをインターネットに公開すると攻撃を必ず受けます。Webサイトを公開する場合は、OS、ミドルウェア、ボタンクリックにより、同じIDの別のカラムのフィールドを出力する
前提: DBが作成されデータが入っている状態
例えば、こんな感じのデータベースを用意して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/863480/583ac575-202b-af09-cfe2-fdc3ca448463.png)キャラ名の隣のボタンをクリックすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/863480/2e9e6485-6958-473b-b8fd-0accb25d00b9.png)そのキャラのタイプが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/863480/6406f2ef-c99e-8ae8-e08c-90fcf0270327.png)(↓動画にするとこんな感じ)
https://gyazo.com/8e68421fe20af2d6関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた