Web エンジニアが始める Server-side Swift “Vapor”
## はじめに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6102/fab42a3a-8fe1-b103-0e60-ad12eee6f220.png)
2014年の WWDC で電撃発表された Swift は、もはや iOS アプリ開発では定番となっていますが、Web 開発界隈のエンジニアにとっては「何それ美味しいの?」という感じであり、ましてや「サーバサイドで Swift が動く!」とか言われても、どうせ最低限の事しかできず「プレステで Linux が動く!」くらいのお遊びだと思われている方も一定数いらっしゃるのでは無いでしょうか?(シランケド)とか言う私も、当時の WWDC の Swift 発表は興奮して朝まで眠れなかったくらいですが、最近は Swift からは少し離れて Web アプリ開発にどっぷりです。
そんなわけで、今回は、Web 開発者の目線で、Swift の Web アプリケーションフレームワーク Vapor を触ってみたいと思います。
## Swift って
Amazon DynamoDBでphpのセッションを管理する
# はじめに
AWS DynamoDBでphpのセッションを管理します。
マルチAZの場合、複数のEC2でセッション情報を同期する必要があります。その場合、候補に上がるのが、 DynamoDBかElastiCacheになるはずです。
**1. IAMポリシーの作成**
EC2インスタンスにアタッチしているロールに、このポリシーを割り当てます。“`json:php-sessions
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“dynamodb:GetItem”,
“dynamodb:UpdateItem”,
“dynamodb:DeleteItem”,
“dynamodb:Scan”,
“dynamodb:BatchWriteIte
一体いつから PHPがセミコロン省略できないと錯覚していた?
・ヮ・)あ、おはようございまーす
PHPでセミコロン書いてますか?PHPはCで実装されていてJavaに強く影響を受けているためか、行末にセミコロンを付けないといけません。
Python、Go、Swift、kotlin、Ruby、JavaScript などセミコロンを書かない(または省略してもいい)言語を使っている方からは
しばしば白い目で見られがちです(諸説あり):sob:正直、悔しいです…:rage:
**PHPの真の力(笑)** を見せつけます!
## 【朗報】PHPにはセミコロンを省略できる構文が2つある:tada:
### `if`
1つ目は `if 文` です
PHPの `if文` は、戻り値があるようなものであれば 変数だろうが、関数であろうが、 式でもいれることができます“`php
$var = 0;
if ($var) {} // 変数はもちろんOK
if (fn() => 0) {} // クロージャー、アロー関数ももちろんOK
if ($var = 1) {} // 代入式でもOK
“`しかし 戻り値が無いような式は入れることができ
[PHP]標準入力で与えられる値を取得する
#PHPで標準入力で与えられる値を取得する
“`java:PHP
“`
#Rubyの場合
“`java:Ruby
input = gets
print input
“`
###PHPはRubyと違いコード量が多くなる。 タグで囲む事でPHPのコードとして認識される
#以上!
Laravel 全テーブルをTruncateしてからシーディングを行う方法
[Laravel Advent Calendar 2020 – Qiita](https://qiita.com/advent-calendar/2020/laravel) の 1日目 の記事です。
## 環境
– PHP: 7.4.12
– Laravel: 8.16.1
– MySQL: 8.0.21
– doctrine/dbal: 3.0.0## 予備知識
### Laravel Seeding(シーディング) とは
Laravelにて標準搭載されている初期データ(テストデータ)を登録する機能です。
– https://readouble.com/laravel/8.x/ja/seeding.html
### Laravel Migration(マイグレーション) とは
Laravelにて標準搭載されているデータベースのテーブル定義の変遷のバージョン管理をしてくれる機能です。
– https://readouble.com/laravel/8.x/ja/migrations.html
## 困ったこと
### Laravel migrate:fresh
PHP8.0がリリースされたので新機能全部やる
2020/11/26にPHP8.0.0が[リリースされました](https://www.php.net/releases/8.0/en.php)。
ということで、[UPGRADING](https://github.com/php/php-sldap_count_referencesrc/blob/php-8.0.0/UPGRADING)に載っている機能や変更点をだいたい全部見て回ることにします。
# Backward Incompatible Changes
後方互換性のない変更。
なお、ここで削除される機能の多くは[何年も前から公知されています](https://qiita.com/rana_kualu/items/db1ce401df627c46544a)。## PHPコア
### `match` is now a reserved keyword.
`match`が予約語になりました。
match構文の導入に伴う措置です。“`php
function match(){}// PHP8.0
Parse error: syntax error, une
まだJSで消耗してるの?LaravelのLivewireでSPA開発
# タイトルで釣りました([1年ぶり2度目の犯行](https://qiita.com/namizatork/items/801da1d03dc322fad70c))
煽ってごめんなさい
JavaScript大好きだよ(ホントダヨ)## はじめに
この記事は [弁護士ドットコム Advent Calendar 2020](https://qiita.com/advent-calendar/2020/bengo4com) の記念すべき1日目の記事です?
## Livewireとは
こんなことを思った事はないだろうか、、
なぜ簡単なWebアプリケーションを作りたいだけなのにVueやReactを別で用意してJSを書かないといけないのか…
ワイはPHPerなんや…JSなんて書きたくないんや….そんな贅沢な悩みを持つPHPerを解決に導くツールこそ **Livewire** なのだ!!
### それっぽい説明
LivewireとはBlade(Laravelの標準Viewテンプレート)を用いて、JavaScriptを記述せずにSPAを実現できるライブラリのことです
【SQL】SQL大量発行 パフォーマンス向上
実現したいこと
今回は、SQLで1日毎30日間のデータを取得した時に、大量のクエリが発行された(30個程)ため、パフォーマンスが下がってしまった。可能な限りクエリの発行数を少なくしていきたいと思います。
なぜ大量にクエリ発行されるとパフォーマンスがよくないのか
SQLが大量に発行されるということは、例えば、レジでガムを10個買うときに、1個ずつレジで会計するくらい効率が悪いです。
現状
下記に示したコードより、for文で30回回しているため、パフォーマンスはかなり悪いです。一回毎にSQLが発行される仕組みになっています。計測したところ0.744秒でした。
$time_start = microtime(true);
for ($i = 0; $i < 30; $i++) { $daily = date('Y/m/d', strtotime("-{$i} day")); $projectPerDayCount = Project::whereDate('cr
[2020] HHVM/Hackの始め方 導入編
# HHVM/Hack
今回はHHVM/Hackについて、
2018年のアドベントカレンダーからアップデートした内容をお届けします。
まずはHHVMについて、以前は下記の印象をお持ちの方が多いと思います。- HHVMってPHPのちょっと早いやつだよね
- PHP7で早くなったし、HHVMってもう使わないよねこれはあくまでHHVM3系までの話であり、
2019年1月にリリースされた v4.0.0以降でPHPを動かすことはできません。ネット上にある日本語の記事のほとんどが古いバージョンのインストール記事が多く、
最近のものでもHHVM3系、または2系をインストールしている物はほぼ動かないものと思ってください。## HHVMの今
先日PHP8がリリースされ、Hackに実装されていたJITコンパイラや、
nullsafe operator、Attributes、Constructor property promotionなどが追加されました。そんな中でHackを使う利点ってあるの。。? と思う方も多いのかもしれません。
現時点のHackは、PHPとは全く別の
超基本的なプログラミング用語の英単語メモ
#日本語 ☞ 英語
変数 → variable
定数 → constant
配列 → array
オブジェクト指向プログラミング → object‐oriented programming(OOP)
演算子 → operator
識別子 → identifier
代入 → assignment
属性 → attribute
キャッシュ → cache (cashまたはcasheではない)#今日の名言
Done is better than perfect.
(完璧であることよりも終わらせることの方が重要)-マーク・ザッカーバーグ
【環境構築メモ】docker × Laravel 開発環境構築(Laradock使用)
## はじめに
Laravelでの開発環境を構築する際の手順をまとめました。
今回は、**laradock**を使ってみたかったので、laradockを使用して環境構築します。※ laradockとは? http://laradock.io/
>1. Laravel(PHP)のプロジェクトをDocker上で動作させるためのワンダフルな環境
>2. Dockerを用いてlaravelの環境を作るために必要なものがほぼ全てパッケージ化されている
>3. PHP, nginx, MySQLやミドルウェア等、Laravelの実行に必要な環境が整っている。## 前提環境
- Windows 10 Professional
- PHP7.3
- Dockerインストール済み
- gitインストール済み## ゴール
- Laradockを使用して、Laravelの開発環境を構築する。
- 開発環境としては、以下のような構成にします。
- Laravel(Webアプリケーションフレームワーク)
- mysql(DB)
- nginx(Webサーバ)## 手順
###
【PHP】MAMP使用でCSSが適用されない時の対処法
https://y-com.info/contents/?p=1165
こちらのページが参考になりました。
実際に私が行った対処法は、
1. Applications > MAMP > bin > php > php7.4.9 > conf > php.iniを開く
2. cmd + F ショートカットで OPcache.enable_cli を検索
3. 2カ所ほどヒットしたが、【OPcache】という欄の
```
opcache.enable_cli=1 → opcache.enable_cli=0
```
と変更。さらに、```
opcache.enable=0
```
を新しく追加しました。すると、今までstyles.cssに変更を加えても何も変化しませんでしたが、即座に変更が反映されるようになりました。
CakePHP コントローラーからjQueryにデータを渡す方法
・コントローラー
```php
$array = ["a","b","c"];
```・一旦ビューで
```php
```・jQuery
```js
console.log(array);
```
```
1 => "a"
2 => "b"
3 => "c"
```
【PHP Laravel】コントローラへのルーティングが上手くいかない
この記事は、「PHPフレームワーク Laravel入門」を使用して勉強した時につまった所になります。
# 目次
- バージョン情報
- コントローラへのルーティングが上手くいかなかった
- 解決策1
- 解決策2
- 参考サイト# バージョン情報
| | バージョン |
|:-:|:-:|
| PHP | 7.4.9 |
| Laravel | 8.16.1 |# コントローラへのルーティングが上手くいかなかった
書籍に倣って以下のようにコーディングした。```
Route::get('hello', 'helloController@index');
```
実行すると以下のようなエラーが出てきた。![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906102/13de0053-2ecf-0e32-0064-a41efdc9e9d0.jpeg)
以下のような変更をしたら実行できた。
# 解決策1
```
use App\Http\Co
continue,breakに関して(PHP)
continue,breakに関して
continueとbreakについてはそれぞれループ処理で使われる。
continueはある特定の条件をスキップして、そのままループ処理を続ける一方で、
breakはある特定の条件でループ処理を中断する。実際のコードと出力結果については以下の通りとなる。
continue
continueは特定の条件で、ループをスキップして、そのままループを続ける。
```
```出力結果
```
1
2
4
5
7
8
10
```iが3の倍数になる条件でスキップしていて、3の倍数以外で、1から10までの数が出力されている。
break
breakの場合はある特定の条件でループ処理が止まる。
```
[PHP] エラー解決 gyp: No Xcode or CLT version detected!
laravelに必要なnpmをインストールをすると
```
gyp: No Xcode or CLT version detected!
```というエラーが出たのでそれの解決方法を投稿いたします。
今回はXcodeというAPPをアンインストールをして解決した方法になります。
下記はエラー画面のスクショになります。
![“スクリーンショット” 2020-11-30 12.03.07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698439/1074ac38-037d-2b22-0b94-57f5c8babde4.jpeg)#解説
`gyp: No Xcode or CLT version detected!`
これは「XcodeとCLTのバージョンがおかしい」というエラー内容でした。
私自身、Xcodeは暫く使うことはないのでアンインストールを実行したいと思います。```
//ターミナルにて上から一つずつ実行する
sudo rm -rf /Applications/Xcode.app
iCal週間天気予報を支える技術
この記事は「[個人アプリ/サービス開発の進め方と運用、得た学び - 02【PR】 Lenovo Advent Calendar 2020](https://qiita.com/advent-calendar/2020/lenovo_app_02)」に参加しています。
# iCal週間天気予報とは
「スケジュールを確認するときに合わせて天気も確認できたらな」という人は多いでしょう。
私もその一人です。
そして、これまでは「livedoor天気予報」というサービスがあり、iCal形式で配信される天気予報をカレンダーアプリに登録することで、チェックしていました。
しかし、2020年7月31日をもって、このサービスの終了が発表されたのです。ここで困った私は、自分で作ろうと思い立ちました。
(裏側の話をすると、以下の本を執筆している最中で、livedoor天気予報について紹介していたのです。)『ITエンジニアがときめく自動化の魔法』
ところが、サービスが終了してしまうと、本の読者は試せなくなってしまいます
composerとは/活用方法
composer = PHPのパッケージ管理システム
大抵の場合は、PHP関数のみではなくフレームワークやライブラリの活用を行う。
その際に、毎回それらをインストールするのは面倒。
composerは使うたびに名前を列挙するだけで呼ぶ出すことができる優れもの。●⚪︎● 実際の流れ ●⚪︎●
新しいプロジェクトの中で、ログライブラリのmonologを使いたい場合。
1、PHPアプリケーションを作成するディレクトリに、JSONファイルを入れる。
```
{
"require": {
"monolog/monolog": "1.0.*"
}
}
```
composer.json は、アプリケーションで利用するパッケージ(ライブラリ)を列挙します。 ここに列挙したパッケージが、Composer による管理の対象になる。2. composer.json に列挙したパッケージをインストール(ダウンロード)してみます。 composer install コマンドを実行する。
```
composer install
```3.すると、ve
【PHP8】Jupyter と PHP8.0 カーネルのノートブックを Mac やラズパイや Windows の Docker 上で動かす
> PHP8.0 でも Jupyter の Notebook を使いたい。macOS や RaspberryPi や Windows で。
>
> でも、いろいろインストールしてローカルを汚したくない。そんな遊び心満載なユーザー向けなものが Docker にないものか。
## TL; DR
> **Jupyter-PHP の PHP8 用修正パッチ**と macOS/Windows10/Raspbian で動く JupyterLab の Dockerfile を作ってみました。
>
> 作り方や経緯、「Jupyter?何それ。typoってない?」と言う方は TS; DR をご覧下さい。### PHP8 カーネル入り Dockerfile の URL
- JupyterLab/Jupyter Notebook の PHP8 カーネル入り Dockerfile([JIT](https://ja.wikipedia.org/wiki/%E5%AE%9F%E8%A1%8C%E6%99%82%E3%82%B3%
PHP 任意精度四則演算クラス
PHPには以前より[BCMath](https://www.php.net/manual/ja/book.bc.php)という任意精度数学関数がありますが、利用できるよう自由に設定することができないケースもあるかと思いますので、そういった場合の代用として作成しました。
BCMathほど多くのことはできませんが、とりあえず桁数制限のない小数を含む四則演算と剰余が使用できます。###スクリプト###
~~~php:decimalcalc.php