- 0.0.1. Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較
- 0.0.2. Google App EngineにLaravel 8をGithub Actionsでデプロイする
- 0.0.3. エルビス演算子を使うときの注意点
- 0.0.4. MacにデフォルトでPHPがインストールされなくなったのでdockerを使ってサクッとPHPを実行できるようにしてみた。
- 0.0.5. [PHP] MapとSet ~ Data Structures
- 0.0.6. error: open(“docker/hoge/mysql.sock”): Invalid argument
- 0.0.7. Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較
- 0.0.8. Laravel 参考にしている記事 (自分用のメモ)
- 0.0.9. Larval sail をインストール!!
- 0.0.10. Laravel テストを実行する前にキャッシュをクリアする
- 0.0.11. PHPのコンストラクタでreurnを省略すると何が返るのか
- 0.0.12. 【Laravel】Laravel6系と7系以上でcookieが共有できない
- 0.0.13. php で headless browser chrome-php
- 0.0.14. EloquentのCollectionをCSVファイルにする
- 0.0.15. Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較
- 0.0.16. Nuro光のIPアドレス
- 0.0.17. PHP ログインハッシュ化
- 0.0.18. Laravel+Angular連携
- 0.0.19. 新しいSNSを作りました。
- 1. 新しいSNS「Avis」(エイビス)のβ版をローンチします。
- 2. AvisとはどういうSNSなのか
Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較
Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較
# Python
https://qiita.com/ny7760/items/d9c247781a790210936d
# Ruby
https://qiita.com/ima1zumi/items/28ef13f5af3d9afdeaf3
# PHP
https://qiita.com/suin/items/3edfb9cb15e26bffba11
# Java
https://qiita.com/motoki1990/items/cee6a4a75c0320b79ec4
# JavaScript
https://qiita.com/weal/items/3b3ddfb8157047119554
# Perl
https://perlzemi.com/blog/201610061475
Google App EngineにLaravel 8をGithub Actionsでデプロイする
インスタンスバージョンとLaravelのバージョンアップをしてからしばらく手動アップばっかりやってたのですが、いいかげんCICDを組まなければということで、Github Actionsで組んでみました。まだ途中ですがつまづきポイントを忘れないうちにメモしておきます。
対象読者としては手元のローカル環境でAppEngineにシンプルなPHPアプリ(Hello Worldとか)を手作業でデプロイしたことがあるくらいの方です。# 公式の手順がなくなっている
LaravelをGoogle App Engine Standard環境で実行するには、公式?ガイドがありました
~~https://cloud.google.com/community/tutorials/run-laravel-on-appengine-standard~~
しかしいまはなくなって別ページにリダイレクトしてしまいます。
そこで、いくつかのサイトをもとにメモしていこうと思います。
# 環境変数の設定、とにかく/tmpに書き込ませる
App Engineの基本は、とにかく書き込み可能ディレクトリが/tmpの
エルビス演算子を使うときの注意点
## 前置き
三項演算子を省略できる書き方で、エルビス演算子「?:」というものがありますが、
自分が間違えた使い方をしていた為、共有したいと思い記事にしました。## エルビス演算子の間違えた使い方
“`php
$a = 15;$b = $a === 15 ?: 17;
“`私は、この$bの期待値としては「15」であると思っていました。
しかし、この$bの値は「true」になっていました。これは「$a === 15」の結果がtureの為、三項演算子の条件式的には「$a === 15」を返します。
言い換えると下記のようなコードに置き換えることができます。
“`php
$a = 15;$b = $a === 15 ? $a === 15: 17;
“`
これを見ると$bの値は「true」になるのがわかります。これと同じ現象が起きているというわけです。## エルビス演算子の正しい使い方
“`php
$a = 15;
$b = $a ?: 17;//言い換えると
$a = 15;
$
MacにデフォルトでPHPがインストールされなくなったのでdockerを使ってサクッとPHPを実行できるようにしてみた。
# その時PHPerに電流走る・・・!!
“`
zsh: command not found: php
“`
昨日まで使えていたPHP・・・俺たちのPHPが・・・なんて少し前からMacOSにデフォルトで入っていたPHPが使えなくなることは界隈では
ちょくちょく耳にしていたのでさほど驚きはしませんでしたが、Montereyアップデート後からぬるりとなくなっていたので笑いました。直接PHPをインストールしてもいいですが、母艦の環境を汚したくない民として今回はdockerとzshのエイリアスでサクッとPHPを実行できるようにしてみました。
よければ参考にしてください。
下記のような形でPHPが実行できるようになります。“`
$ dphp xxxx.php
“`## dockerイメージをpull
docker hubから最新のPHPのイメージをpullします。
“`
$ docker pull php
$ docker image ls
php latest 7c7914343522
[PHP] MapとSet ~ Data Structures
# 概要
PHPのData Structuresモジュールに含まれるMapとSetを試してみたので紹介します。
– Data Structuresモジュール
– Mapクラス、SetクラスおよびHashableインターフェース
– ベンチマーク:::note warn
この記事のコードはPHP**8.1**で試したものです。
:::# Data Structuresモジュールとは
https://www.php.net/manual/ja/book.ds.php
PHP7から提供されている、配列の代わりに使える効率的なデータ構造です。
この記事でとりあげるMapとSet以外にもVectorやStack、Queueなどが提供されています。
要インストール。ベンチマーク等はこちらの[ブログ](https://medium.com/p/9dda7af674cd)で詳しく説明されています。(マニュアルからもリンクされてるブログです)
[^1]:Efficient data structures for PHP 7 https://medium.com/p/9dda7af67
error: open(“docker/hoge/mysql.sock”): Invalid argument
error: open(“docker/hoge/mysql.sock”): Invalid argument
上記のようなエラーが出たときはsqlが入っているディレクトリを.gitignoreの設定に追加すればよいです。
Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較
Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較
# Python
https://qiita.com/Sunset_Yuhi/items/fa6e97867ac46a604780
# Ruby
https://qiita.com/u651601f/items/52af880d1569c6c1066f
# PHP
https://qiita.com/mpyw/items/346c535ade9dcf6e1b12
# Java
https://qiita.com/takahirocook/items/748990882f2de7a630a1
# JavaScript
https://qiita.com/daikw/items/663bc0b5a4c025694974
# Perl
https://perlzemi.com/blog/20161
Laravel 参考にしている記事 (自分用のメモ)
# はじめに
メモ用として残しておきます。
どんどん追加していく予定です!
# 目次
1. [YOUTUBE](#Chapter1)
1. [WEBサイト](#Chapter2)
1. [書籍](#Chapter3)## 打田裕馬さん
# 2.WEBサイト
– [https://reffect.co.jp/laravel/laravel-sail#sail_up](URL)
# 3.書籍
初学者には難しく感じました!
– [https://www.socym.co.jp/book/1300](URL)
Larval sail をインストール!!
# はじめに
Larval sail インストールしてみます!
今回の記事の通りに行えば、ログイン画面が初めからついてきます!!# 目次
1. [Dockerをインストール](#Chapter1)
1. [Laravelをインストール](#Chapter2)
1. [sailコマンド](#Chapter3)
1. [参考文献](#reference)
# 1.Dockerをインストール
https://www.docker.com/
# 2.Laravelをインストール
DockerにLaravelをインストール
“`言語名:zsh
% curl -s https://laravel.build/memo-app | bash
“`
インストールしたディレクトリに移動して、起動
“`言語名:zsh
% cd memo-app && ./vendor/bin/sail up
Laravel テストを実行する前にキャッシュをクリアする
Laravelあるある。ローカルでキャッシュしたままテストを実行してしまう。
誰もが一度はハマるであろう由々しき問題です。ローカルでキャッシュしなきゃいいってのはありますが、
一応キャッシュした時にエラーが起きないかの動作確認などはしたいので、テスト前にキャッシュファイルを削除できればなと色々考えてみました。公式ドキュメントでも `テストを実行する前は必ずconfig:clear Artisanコマンドを使用して設定のキャッシュをクリアしてください。` とあります。
https://readouble.com/laravel/9.x/ja/testing.htmlということで良さそうな方法を3つ考えました。
## 方法1. Composer Scriptsを使用する
“`json:composer.json
{
“scripts”: {
“test”: [
“@php artisan config:clear”,
“@php artisan test”
]
},
}
“`
PHPのコンストラクタでreurnを省略すると何が返るのか
## 結論
コンストラクタで`return;`した場合に返されるのは自インスタンス
## 前提
恐らくこの書き方はレアケースであまり遭遇しないと思います。
## 背景
あるコードをみていた時以下のような書かれていました。
“`php
class Hoge
{
public function __construct()
(
// 略
if (何らかの条件) {
return;
}
// 略
}
}
“`また利用箇所では以下のような記述がありました。
“`php
$hoge = new Hoge();
if (empty($hoge)) {
// 略
}
“`PHPでは`return`のを省略することができ、省略した場合はnullを返します。
“`
注意:
return を省略した場合は null を返します。
“`https://www.php.net/manual/ja/functions.returning-values.p
【Laravel】Laravel6系と7系以上でcookieが共有できない
## 背景
Laravel6系のアプリと7系のアプリでsessionを共有するためにcookieを共有する設定を行ったのだが、どうしてもcookieが共有できなかった。
そこで調査を重ね、解決に至ったので他の方にも参考になればいいなと思い、記事を作成させていただこうと思いました。## 前提
問題の本質と外れるので特に興味ない方は飛ばしちゃってください
### サービスの構成
全てのアクセスをnginx-proxyで受けてドメインごとに各サービスコンテナに振り分ける感じでコンテナを構成しました
参考:[jwilder/nginx-proxyで{ホスト名}/{パス}でコンテナにルーティングする方法](https://qiita.com/Ayumu_Usu/items/0891f3f733e355ed1265))
![スクリーンショット 2022-09-23 14.19.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2859039/387b6ff1-2f0f-ce5c-f2d9-fcc47b051
php で headless browser chrome-php
・指定したサイトのスクリーンショットを取りたい
・スマホ用ページを取得したい
・Laravelで使う参考
https://qiita.com/oouaioi/items/fcd157da21368dc8e5b9
https://github.com/chrome-php/chrome# インスコ
“`
composer require chrome-php/chrome
“`# 文字化け対策のため、centosに日本語を入れとく
“`
sudo yum install ipa-gothic-fonts ipa-pgothic-fonts
“`# コード
“`hoge.php
use HeadlessChromium\BrowserFactory;
//略
$browserFactory = new BrowserFactory();
//ブラウザ表示サイズを指定
$browserFactory->setOptions([
‘windowSize’ => [375, 900],
]);$browser = $browserFactor
EloquentのCollectionをCSVファイルにする
# DBから取得したEloquentのCollectionをCSVファイルにしたい!
一応コードとしては掛けたのですが、もっといいCollectionの機能がありそうなので助言ありましたらお願いします…。
やり方としては各Eloquentをarrayにしてkeyをarray_valuesで配列にして、implodeで結合してます。
最後にjoinで改行でくっつけています。
注意点としては最後の `->join(“\n”)` ですが、`->join(‘\n’)` とシングルクォーテーションだと改行コードとして認識されないので必ずダブルクォーテーションにする必要があります。“`php
$collection_string = $collection->map(function ($item, $key) {
return implode(‘,’ ,array_values($item->toArray()));
})->join(“\n”);Storage::disk(‘example-backet’)->put(‘hoge.csv’, $collection_str
Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較
Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較
# Python
https://qiita.com/msssgur/items/12992fc816e6adf32cff
# Ruby
https://qiita.com/EZ_Denta/items/6489039212e21d4fc49f
# PHP
https://qiita.com/hikaru_/items/4cc7b616aa61868cdcdd
# Java
https://qiita.com/gatchan03/items/e8eecf468b7dab960198
# JavaScript
https://qiita.com/higa02/items/a7a0a1d96d1d67a7c88b
# Perl
https://perlzemi.com/blog/2011012
Nuro光のIPアドレス
自宅ルーターで相手と接続を拒否するため
NuroのIPアドレスを抽出してみました。# IPアドレス帯の抽出
AS番号からSo-netが使用しているIPアドレス帯を抽出します。
So-netは**AS2527**です。[RIPEstat](https://stat.ripe.net/about/)
というサービスでAPIが提供されているのでこれを叩きます。prefixの一覧が記載されたjsonをripe.jsonに保存しています。
“`
curl -m10 -s “https://stat.ripe.net/data/announced-prefixes/data.json?resource=2527&sourceapp=nitefood-asn” > ripe.json
“`# 逆引きをしてnuroかチェック
AS番号で抽出したリストにはSo-netやnuro、逆引きできないネットワーク帯(法人向け?)など混在しています。
ネットワークアドレスに+1をしたホストIPを逆引きし、nuro.jpが含まれているものだけを抽出します。“`php
PHP ログインハッシュ化
昨日、ハッシュ化について学習したので、共有する
ハッシュ化とは、パスワードをハッシュ化し、第三者にパスワードがわからない
ようにするための方法である今回は主にPHPのlogin時にパスワードがわからないようにするためにPHPで作成した。
コードの記入方法
vsコード中に(仮)password.php
“`php
$s = “test1”;echo password_hash($s, PASSWORD_DEFAULT);
“`
を作成し、
URLに「localhost」→「保存ファイル名」「〜〜.php」で確認すると「 $2y$10$XDqnwCgKg3IVqbv.cs/tkuU/RI0usl8Sa7NvVm8JU6zYp0kMNA9Py 」
のような話パスワードが確認できる。パスワードのコピーを行い、(私は)PHP MY Adminのパスワードカラムにハッシュ化したものを貼り付けた。
loginページに移動後、「username」,「test1」を入力すると、loginその他のlogin機能の実装がうまく
行っていれば、成功すると思います。
Laravel+Angular連携
## 初めに
前回「[Angularの導入](https://qiita.com/HITOSUKE/items/5efd1761cb6106cd9074)」ついての投稿よりAngularの導入方法を説明しております。
今回は、Laravel+Angular連携についてご紹介したいと思います。### apache、PHP、MySQLのインストールは省略
firewall、SELinuxの設定も忘れずにしましょう。
ブラウザで見れない可能性があります。# Laravel+Angular連携
Laravelに必要なものをインストールしていきます。
### [Step1]Composerインストール
①composerダウンロード
wgetコマンドからcomposerをダウンロードしていきます。▽コマンド
“`
wget https://getcomposer.org/installer -O composer-installer.php
“`
▽実行結果例
“`
[root@localhost ~]# wget https://getcomposer.org/inst
新しいSNSを作りました。
新しいSNS「Avis」(エイビス)のβ版をローンチします。
新しいSNS「Avis」(エイビス)のβ版をローンチします。
https://avis.city/
AvisとはどういうSNSなのか
- 利用は無料です。
- ログインするけど書き込みは匿名で行われる「半匿名性」のSNSです。
- SNS内の独自信用通貨(AvisCoin)で“言葉の市場”を生み出します。
![phone_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643107/85f2840b-4696-9c1a-6f66-27aa29908ad4.png)
![phone_2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643107/1bc4333c-78f9-c998-71fa-9d059a1b7899.png)
![phone_3.PNG
Laravel テスト用のシーダーを初回のみ実行する
Laravelのデータベーステスト時に予めデータ投入しておきたい時のtipsです。
各テストに依存するシーダーは各シーダーで実行するのが良いと思いますが、マスターデータ等システム全般で使用するものはテスト前に実行しておきたいです。## 事前情報
`tests/TestCase.php` はLaravelが元々用意してくれているファイルです。
`TestCase` を継承して各テストクラスを作っていきます。“`php:tests/TestCase.php