PHP関連のことを調べてみた2020年01月14日

PHP関連のことを調べてみた2020年01月14日

Boost.Asioで名前解決(非同期)

[前回の続き]
(https://qiita.com/tako3pro/items/08961c5dc7a8d398b859)

#使用したツールなど
前の記事を参照

#やりたかったこと
1. 「非同期」にする。
2. 「POST形式」で送信する。
3. 「クラス」にする。

#コード
クライアント:

“`main.cpp
#include
#include
#include
#include
#include
#include
#include “json11.hpp”

using namespace std;
namespace asio = boost::asio;
using asio::ip::tcp;

class Client {
asio::io_service& io_service_;
tcp::socket socket_;
tcp::resolver

元記事を表示

オブジェクト指向を語ろうと思ったけど、一旦クラスの話をしようwithアンパンマン

どうも、やまうちです。

先日(てか昨日読み終わった)この本を読みました。
「オブジェクト指向でなぜつくるのか 第2版」

[オブジェクト指向でなぜつくるのか](https://www.amazon.co.jp/dp/B00ISP0QB2/ref=cm_sw_r_tw_dp_U_x_CsehEbFS7DVXM)

有名な本なので読んだことがある方も多いとは思いますが、半分素人の弱弱エンジニアの僕はこの本からオブジェクト指向とは?を学ぶべく、3連休を利用して読んだんですね。
ということで、自分の理解度をチェックしつつアウトプットで知識の定着をはかりつつ、よくわからん!って方のためになるようわかりやすくアウトプットしていく感じの記事です。
ちなみに今回触れている内容はオブジェクト指向っていうよりも、クラスの話になります。

なんか違くね?
って思ったら最大限優しく教えてくださいm(_ _)m
最大限です。
※大事なことなので2回言いました

## クラスに備わる3つの仕組み
– まとめる
– 隠す
– たくさん作る

って書いてました!!!!
なのでこれに沿って書いていきます。

###

元記事を表示

GASで翻訳API作成してLaravelで叩くまで

# はじめに

この記事では

GASで英語から日本語に翻訳するAPIを作成しLaravelで結果を取得までします

## GASを作成

こちらの記事を参考に作成しました
[3 分で作る無料の翻訳 API with Google Apps Script](https://qiita.com/tanabee/items/c79c5c28ba0537112922)

## controllerを作成

一部抜粋

“` TransController.php
public function index() {

$transApiUrl = ‘公開したAPIのURL’;
$transSource = ‘en’; // 翻訳前の言語
$transTarget = ‘ja’; // 翻訳語の言語
$transText = “Hello”; // 翻訳する文字

$transApiUrl .= ‘?text=’ . urlencode($transText);
$trans

元記事を表示

数字を指定の桁数に整える

# 記法

“`php5:書式
str_pad(対象文字列,埋める桁数,埋める文字列,埋める辺)
“`

第一引数:0埋めの対象となる文字列
第二引数:埋める桁数
第三引数:埋める文字
第四引数:左を埋める場合はSTR_PAD_LEFT、右を埋める場合はSTR_PAD_RIGHT、両側を埋める場合はSTR_PAD_BOTHを指定します。実際にコードを書くとなると下記のようになります。

# サンプルコード
“`php5:Sample.php

$CountOfFiles=100;
for($i=1;$i<$CountOfFiles;$i++){ echo str_pad($i, 2, 0, STR_PAD_LEFT); } ``` # 結果 ```php5:結果 $ sample.php 001 002 003 004 ... ``` # 参考 http://wp.tech-style.info/archives/582

元記事を表示

Goutteで空港情報を取得してみる

# はじめに

友達との作品制作で空港の情報が欲しくなった時にスクレイピングしてみようと思い

下記のサイトさんがたくさんの情報が載っていたのでスクレイピングしようと思いました。
https://www.airlineguide.jp/airport-codes/

PHPやLaravelは初心者でいろんな方の記事を参考にさせていただきました

[Laravel/Goutteで映画タイトルをクローリングする](https://qiita.com/vivid_colors/items/feecf2af1dd646f7395a)

[Goutte(PHP)でスクレイピングしてみる](https://qiita.com/fksk/items/6807d5de07f93114087c)

利用するものとしては友人がLaravelを使用していたのでそれに合わせました

※スクレイピングについては色々あると思うので自己責任でお願いします。

## スクレイピングとは

>スクレイピングはサーバサイドのプログラミング言語を使って外部サーバへアクセスし、そのコンテンツから自分たちの欲しい情報を引き出す

元記事を表示

Dockerでnginx等を使う時はまずLinuxの知識をだな……(戒め)

## DockerとかVagrantでnginx等を使う時はまずLinuxの知識をだな……(戒め)

#1. 背景
フロント学んできて、そろそろバックエンドもまなんでみようと思い、せっかくなので流行りのDokcerを使用しPHPでサーバーに画像をアップロードするコードを書いた。
そしてハマった

#2. 環境

・windows10

元記事を表示

LaravelのJWT認証でいろいろカスタマイズ

仕事で考えないといけなくなったので、いろいろ試してみました。

# 作るもの
以下の条件を満たす認証機能を作ります。

– JWT 認証
– ユーザテーブルが、Laravel 標準のテーブル定義で **ない**
– デフォルトの `users` テーブルは使いません
– パスワードのハッシュ化が Laravel 標準の方法で **ない**
– デフォルトの `bcrypt` ではなく `SHA256` を使います

なお、Laravel 標準が使える環境ならば、そうしたほうが良いと思います。
この記事は **やむを得ず** そうせざるを得ない場合のために書かれています。

# 前提
## バージョン
– Laravel 6.9.0
– PHP 7.4.1
– MariaDB 10.3.11

## 扱わないこと
以下については、この記事では触れません。

– Laravel 標準の認証機能について
– [JWT](https://ja.wikipedia.org/wiki/JSON_Web_Token) そのものについて
– JWT 認証の是非について

# 手順
## 非標準

元記事を表示

横文字が飛び交う世界で無知無知の新卒が一人前のSEになるまで ー1年目ー

#要約
– 「IT?何それ?」な新卒社員がIT部署に配属されてからの軌跡
– 一年を通しての振り返り
– 何を見て何を学び、何が出来るようになったのかのまとめ
– 参考になるかは貴方次第

#はじめに
こんにちは。タスク管理で予想時間以内にタスクが終わった試しがない、あやしいブロッコリーです。

という紹介文が馴れ馴れしいほどのQiita初心者です。

2019年、皆様はどんな年でしたでしょうか。
個人的な感想としては、題にもある通り新卒ということで沢山の苦悩・苦難があった年でした。
例えば、先輩社員や上司の方々がどこぞのクラウドサービス炎上でドタバタする中、
私はTwitterで現状を追うことしかできなかったり。。
あの時の自分の何もできない感といったらまあもう味わいたくないですね。
アマゾン森林の大火災なんて笑えません全く。

そんな2019年でしたが、今回は新年明けての挨拶も兼ねて、
昨年の振り返り、今年の抱負、やりたいこと等々色々考えてみました。
脳内の大掃除なくして2020年は迎えられませんからね。

#現在携わっているプロダクト
Webサイトにおける様々なログを収集・分析し

元記事を表示

【初学者向け】セキュリティ対策入門①〜XSS編〜

# 前提

## 確認環境

以下と同様です。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜]()

## 本シリーズの目的

以下と同様です。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜]()

## 本記事の目標

**XSS(クロスサイトスクリプティング)の概要、原因、対策について理解すること**です。

## 本記事を読み進める上での必要事項

以下の内容を終えていることです。
[【初学者向け】セキュリティ対策入門⓪〜環境構築編〜]()

# 概要

## XSS(クロスサイトスクリプティング)とは

**不正なスクリプトを混入・実行させること**です。掲示板などエンドユーザからの入力値をWebページに表示させる機能を持ったWebアプリケーション全般で行われる可能性があります。

これだけだとわかりにくいと思いますので実際に見てみましょう。

## 実際に体験してみよう

本シリーズで使うコンテナを起動して
http://localhost:8080/xss/bad.php?name=J
にアクセスしてみましょう。

『こんにちは、Jさん』とブラウザに表示され

元記事を表示

今更だけどCSSって何ぞや あとPHPってHTMLの中に書けるのに.phpってどういう意味だってばよ?


##という方に向けてざっくりCSSとPHPを解説して行きたいと思います。

まあCSSがCascading Style Sheetsの略で、表示に関する記述って言うのは誰でも分かると思うんですが、じゃあCSSの中身はどういう仕組みになってるの?という問いに対して答えられる人ってIT人口の何割なんだろうねって気がします。

HTMLに関してもPHP使うなら必修だと思うけど、pとかaとかimgとか、主要なタグさえ覚えればheadの中身とか理解しなくても使えてしまったりするので「今更HTMLとかなぁ~」って思ってる人こそ勉強してみると楽しいと思う。

あと分かってるとは思うけど、仕組みと言いつつ低レイヤーの話はしない(出来ない)のでCSガチ勢の方は帰ってどうぞ。

##CSSの役割とは何ぞや

これに関しては長々と解説するより実例を見てもらった方が早いでしょう。

![Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541457/a02c8cd

元記事を表示

必要コマンド

● pwd
現在のフォルダ(ディレクトリ)を調べるためのコマンド「Print Working Directory」の略。

● mkdir
フォルダを作るためのコマンド「Make Directory」の略。

$ mkdir 作成したディレクトリ名

● cd
ディレクトリ間を移動するためのコマンド「Change Directory」の略。

$ cd 移動したいディレクトリ名

また

$ cd ..
1つ上(親)のディレクトリに戻ることができる。

また

$ cd ~
または
$ cd
ホームディレクトリに移動が可能。そのターミナルを実行しているユーザーの「ホームディレクトリ」を意味している。

●Is
ディレクトリの中身を表示するためのコマンドで「LiSt directory contents」の略。

$ mkdir space
$ Is
で、mkdir作成したspaceというディレクトリが、現在のディレクトリに存在することを確認できる。

元記事を表示

WordPressを更新したら500エラーになった

WordPressのアップデートをいつも管理画面の「WordPress の更新」から気楽にしていました。先日WordPressのバージョンを5.3.2にアップデートしたところ500エラーが出ました。

WordPressの管理画面にはアクセスできるものの、管理画面の投稿一覧にアクセスすると500エラーになり、「ホストに接続できません」と表示されます。
サイトのページも真っ白です。。。

### 環境
– KUSANAGI for AWS
– WordPress 5.3.2(最新化済み)
– PHP 5.6

### エラー内容を確認する
エラー内容を確認するため、WordPressをデバッグモードにします。
`wp-config.php` を開きます。KUSANAGIのデフォルトでは `/home/kusanagi/kusanagi_html/DocumentRoot` にファイルがありました。

“`
define(‘WP_DEBUG’, false);
“`

その行を次のように変更します。

“`
define(‘WP_DEBUG’, true);
“`

nginxの

元記事を表示

Laravel の環境構築でつまづいた

# はじめに
macOSでの話です。

[Laravel公式のインストールサイト(日本語訳)](https://readouble.com/laravel/5.7/ja/installation.html)通りに進んでいたが、

“`
composer global require laravel/installer
“`
の入力が上手くいかず、下記のエラーが出て数時間つまづいたので誰かの役に立ったらと思い書きます。

“`
Your requirements could not be resolved to an installable set of packages.

Problem 1

Installation request for laravel/installer ^2.1 -> satisfiable by laravel/installer[v2.1.0].
laravel/installer v2.1.0 requires ext-zip * -> the requested PHP extension zip is missing from your s

元記事を表示

PHPを勉強したのでフィボナッチ数列を求めるコードを書いてみた

初投稿です。

プログラミング学習を始めてある程度時間が経って簡易的なCRUD機能アプリは作ってみたのですが、四則演算等アルゴリズム的なのはあまり使用しなかったので腕試しの意味も込めやってみました。

#フィボナッチ数列

フィボナッチ数列とは下記の数列のように今の項と前項の和が次の項となるような数列です。

1 1 2 3 5 8 13 21 34 55 89 144 ・・・・N

第一項の値1と第二項の値1の和が第三項の値2になっています。
以降これの繰り返しを行う数列のことです。

式で表すと

第N項の値 + 第N+1項の値 = 第N+2項の値

こんな感じです。

中学入試や大学入試でよく見るやつです。
(漸化式懐かしい)

#実際にPHPで書いてみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354333/5f8fb2d3-3b08-c635-c8be-14c387154f57.png)

#書いてみて

色々復習になった。
こういった問題でアウトップ

元記事を表示

エラー「Uncaught Error: Access to undeclared static property: 〜」の対処方法

###発生状況

phpでクラスから別クラスの変数を取得しようとした際にエラー発生しました。

簡単な処理を以下に記載します。
別クラスから取得した変数を出力する処理で、`yamada` と出力されれば成功です!

“`php:処理内容
$person = new GetInfo;
$person->getName();

class PostInfo{
public $name = ‘yamada’ . PHP_EOL;
}

class GetInfo{
public function getName(){
echo PostInfo::$name;
}
}
“`

“`terminal:結果
Fatal error: Uncaught Error: Access to undeclared static property: PostInfo::$name
“`
このように `PostInfo`クラスの `$name` 変数が取り出せずにエラーになってしまいます。

###解決方法

`$name` 変数前に `static` を

元記事を表示

brew の PHP が 7.4 に上がったら Mcrypt PHP extension required. が出たので対応

Mac OS X 10.15.2 で brew でインストールした PHP のバージョンが 7.4 に上がった際に一部のプログラムが Mycrypt PHP extension required. で動かなくなったのでその対応

# mcrypt の手動 Install

$ wget https://pecl.php.net/get/mcrypt-1.0.1.tgz
$ tar zxvf mcrypt-1.0.1.tgz
$ cd mcrypt-1.0.1
$ phpize
$ ./configure
$ make
$ make

元記事を表示

今日は何のゴミの日か教えてくれるLineBotを作成してみた

#要件定義
Lineに「今日は何のゴミの日?」とか「明日は?」、「明後日は」とかメッセージを送ると「燃えるゴミの日です」とか「資源プラゴミの日」ですとか返信してくれるLineBotを作成します。

#開発環境

CENTOSバージョン:8.0

“`
$cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
“`

PHPバージョン:7.3

“`
$ php -v
PHP 7.3.12 (cli) (built: Nov 19 2019 10:24:51) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.12, Copyright (c) 1998-2018 Zend Technologies
“`

MySQLバージョン:8.0

“`
$ mysql –version
mysql Ver 8.0.17 for Linux on x86_64 (Source distribution)
“`

#データベース設計

元記事を表示

CakePHP3 Cake\I18n\Timeのmodify()に気をつける

# TL;DR
– **Cake\I18n\Timeクラス**が用意する**modifyメソッド**の挙動に関して
(以下、modifyと呼ぶ)
– modifyは、生成されたインスタンス自身を上書く習性がある(ようだ)
– 以下のサンプルコードを参考にして欲しい

# サンプルコード
“`php
$time = new Cake\I18n\Time();
for ($i = 0; $i < 3; $i++) { // 主力結果を見易くするためにあえて改行コードを付ける echo $time->i18nFormat(‘yyyy-MM’) . “\n”;
echo $time->modify(‘next month’)->i18nFormat(‘yyyy-MM’) . “\n”;
}

/*
* 期待値
*
* 2020-01
* 2020-02
* 2020-01
* 2020-02
* 2020-01
* 2020-02
*
*/

/*
* 実行値
*
* 2020-01
* 2020-02
* 2020-02

元記事を表示

【try-catchは難しくなかった】cakePHPとPHPの理解を深めるためフォームの書き方を復習してみた

##cakePHP2.x

“`view/Users/create.ctp

$this->Form->create(‘モデル名’,’オプション’);
$this->Form->input(‘フィールド’,’オプション’)
$this->Form->end(‘ボタン名’)
“`

“`Controller/UsersController.php

function create {
if($this->request->is(‘method属性’){
$this->モデル名->save($this->request->data);
}
}
“`

##覚えておく事

###モデル等の命名について
テーブル名は「-s」をつけるが
ただモデル名は「-s」をつけない
 ※Controller,Viewは「-s」をつける

###(createの)オプション~inputのオプションは別~

“`php
array(‘type’=>”,’action’=>”)
“`

typeはHTMLのmethod属性を指定するもの
└’get’か’post’を指定する

元記事を表示

エンジニア研修

概要

今回弟がエンジニアデビューするということで、macbookAir(gold)を買ってあげました。
これから9か月間、私の方で研修をおこない、それなりのエンジニアになってもらおうかと思います。

そこで弟のように、エンジニアを始めたばかりの人の参考になるように、「研修内容」、「弟が躓いた箇所」や「参考文献など」を記事にしていこうかと思います。
普段私は自分のブログサイトで発信していましたが、誰も見てくれないので、qiitaに書いていくことにしました。
https://campbel.love/が私のサイトです。たまには見てくださいな(笑)

弟はそこまで忍耐力もなく、また、ほとんど初心者なので「挫折をしないカリキュラム」、「スムーズな理解」に重点を置くつもりです。まさにゆとり!
なので、少し遠回りをしてしまうかもしれません。
例えば、Dockerを用いてもらいたいけど、初学者の弟には難しいのでMampから始めてもらう。みたいな。(最終的にはdockerにしてもらいますが。)

偉そうにカリキュ

元記事を表示

OTHERカテゴリの最新記事