write ahead log

ロールフォワード用

Laravelのページネーションで次ページにパラメータを渡す

初心者なのでメモばかりになる.

よくある一覧ページ(検索条件で絞って次々に見ていくやつ)を作っていた.

検索で次ページへ移動すると検索条件が引き継がれてなくて, ページネーションでパラメータが渡っていないことに気づいた.

ページネーションは以下のように作れるが

{{ $users->link() }}

入力パラメータも渡したい場合は以下のように書けるらしい.

{{ $users->appends(request()->input())->link() }}

appendsメソッドにパラメータの配列を渡すらしい.

参考

Laravel Pagination links not including other GET parameters - StackOverFlow

Windowsのアプリが高解像度ディスプレイで崩れる時の対処法

転職して良いマシン環境をもらえたのは大変ありがたいのだが, 社内で使っているツールが一部ぼやけている.

(A5 SQL-M2のことです. いつもありがとうございます.)

調べてみると古いアプリなんかに対応するためにOS側で補正する処理がWindows10にはあるらしい.

Microsoft - Windows 10 でぼやけて表示されるアプリを修正する

これを有効にした後に開くと一気に改善された.

Microsoftの古いものを無視しない姿勢は変わらないし, 批判もあるだろうが, なんだかんだ好感が持てる.

Laravel困ったときメモ

Laravelでアプリを初めて作った時のメモがSimpleNoteに残ってたので記事にして保管しておく.

わりと当たり前の事も書いてあるけど, まぁ, いいや.

たぶん追記していくことになる.

モデルとかコントローラーとか一括で作りたい

以下でmodelとcontrollerとmigrationとfactoryを一度に生成できる.

生成されたcontrollerにはresourceに基づいたアクションメソッドも生成される.

php artisan make:model [モデル名] -a

個別に指定するには以下. (ただしfactoryは生成されない)

php artisan make:model [モデル名] -mcr

オプションの意味はこちら.

オプション 意味
m migrationを生成
c controllerを生成
r resourceに基づいたメソッドを生成

seederが入らない

composer dump-autoload

してないのでは?

Request Validaterを作りたい

php artisan make:request StoreBlogRequest

migrationでrenameやdefaultが設定できない

composer require doctrine/dbal

が必要.

seed投入

php artisan db:seed

factory作りたい

php artisan make:factory BookFactory

きれいにしてseedを投入したい

php artisan migrate:refresh --seed

factory使うとUnable to locate factory with nameって出る

factoryのメソッドの引数のクラス名を再度確認した方がいいよ Model::classになってるから

testingデータベースの利用

このQiitaの記事参照

他環境でチェックアウトしたらやるやつ

composer install 

(bundle install的な)

No application encryption key has been specified.

プロジェクトフォルダで

php artisan key:generate

する

eloquent経由でテストやtinkerでデータが取れない

globalScopeが効いているのでは? withoutGlobalScopesなどを利用する

公式参照

ログイン中ユーザの情報取得

Auth::id()
Auth::user()

unserialize(): Error at offset 0 of 40 bytes と言われる

vendor全部消して、composer.lockも消して、 composer installすればいい。

assetをコンパイルしたい

homestead環境でなら

npm install
npm run dev

定期監視なら以下

npm run watch

本番環境なら以下

npm run production

ブラウザのスーパーリロード

Ctrl + F5

php artisan key:generate できない

.env作った?

テスト環境でマイグレーションしてseedを入れたい

.envをコピーして.env.testingを作る. (DBは書き換え)

php artisan migrate --seed --env=testing

Laravel duskでテストしたい

1. duskをインストール.
composer require --dev laravel/dusk
php artisan dusk:install
2. dusk用のenvを作る.
.env.dusk.local

って名前で作ればいい.

3. テストコードを作る
php artisan dusk:make LoginTest
4. テストの実行
php artisan dusk

./vendor/bin/phpunitでは動かない.

homesteadからHerokuへデプロイした時のメモ

参考サイトほぼまんまだけど, メモ.

herokuアカウントを作る

アクセスして作る.

CLIツールを入れる

homestead上で入れた.

sudo snap install --classic heroku

CLIツールでログインする

vagrant@homestead:~/code$ heroku login
heroku: Enter your login credentials
Email: hoge@gmail.com
Password: *********
Logged in as hoge@gmail.com

プロジェクトフォルダへ移動

cd ~/code

procfileを作る

apache2を使ってドキュメントルートはpublicですよという宣言らしい.

echo web: vendor/bin/heroku-php-apache2 public/ > Procfile
git add .
git commit -m 'add Procfile for heroku'

とりあえずデプロイして確認してみる

heroku create
git push heroku master
heroku open # cli環境なのでURLが表示される

エラーが出たのでログをとる

公式によるとerrorlogに出せばいいらしい.

config/logging.phpを変えた.

     'channels' => [
         'stack' => [
             'driver' => 'stack',
-            'channels' => ['single'],
+            'channels' => ['single', 'errorlog'],
         ],

         'single' => [

APP_KEYの設定

APP_KEYがないと怒られていたので設定.

ついでにAPP_NAMEとAPP_URLも設定しておく.

heroku config:set APP_KEY=$(php artisan key:generate --show)
heroku config:set APP_NAME=見積管理システム
heroku config:set APP_URL=https://secure-spire-46506.herokuapp.com

DBを使う

クレジットカード登録さえしてあれば, Postgresが無料で使えるので.

この辺はここを参考

# 無料プランを使うように設定
$ heroku addons:create heroku-postgresql:hobby-dev

# 怖いので確認
$ heroku addons

Add-on                                      Plan       Price  State
──────────────────────────────────────────  ─────────  ─────  ───────
heroku-postgresql (postgresql-cubed-28431)  hobby-dev  free   created
 └─ as DATABASE

The table above shows add-ons and the attachments to the current app (secure-spire-46506) or other apps.


# DB情報を確認
$heroku config:get DATABASE_URL
postgres://<ユーザ名>:<パスワード>@<ホスト>:5432/<DB名>

# LaravelのDB用に環境変数を設定
# (上記の結果を当てはめる)
$ heroku config:set `
DB_CONNECTION=pgsql `
DB_HOST=<ホスト> `
DB_DATABASE=<DB名> `
DB_USERNAME=<ユーザ名> `
DB_PASSWORD=<パスワード>

# マイグレーションする
$ heroku run php artisan migrate

HTTPSを強制する

どうも挙動がおかしいと思ったらリンクがhttpになって一部のスクリプトがうまく読み込まれていない.

herokuだとhttpになって動いたりしている.

よーわからんが, 参考リンクをもとにhttps通信を強制するようにした.

Laravel5.7: Herokuにデプロイする

Laravelで見積管理システムを作った

雑だけど, 作った.

github.com

最近, 新しいフレームワークや言語を触るときには簡単な業務システムを作るようにしている.
(もちろん, 業務系で使える技術ならではあるが)

昔作ったやつは以下.

せっかく作ったのでとりあえずHerokuに配備してみた.

http://laravel-sales-management.herokuapp.com/

無料でパパっと配備できるのはいい時代だなと思う.

雑感とか?

PHPもLaravelも経験が無かったので「とってつけた感」がある実装になってしまった. 次の会社はPHP + Laravelでお仕事という事なので, 急いでやった次第である.
(Webの業務経験がほぼないのに, よく雇ってくれるなと思う)

Laravel自体の印象は「緩めの規約でしっかりモジュール化されている」という感じだった.

ただまぁ, この辺はRailsっぽいフレームワークを触った事のある人間の意見かもしれない.

書籍は少ないけど, 検索すれば情報も出てくるので「とにかく動く」を目標にすれば書けないことはない.

まともにプログラミングしようとすると, もう少し時間がかかりそう.

あと, クライアント側の処理はlaravel自体はvue.jsを推してるようなんだけど(デフォルトで入ってる), 私が10年前の知識止まりなのでjQueryで書いた.

vue.jsは公式のチュートリアルをやっただけなので, そのうち本でも買って触ってみたい.

というかjs自体の知識のアップデートが必要である.

参考リンク

いっぱいあったんだけど, 公式が一番だし, 英語がわからん時は以下がとても役立ったのでメモっとく.

Laravel5.7ドキュメントの翻訳リポジトリ

PowerShellではてなブログへ記事を投稿するクライアントを作った

最近はPowerShellが良さそうと感じているのでちょっと書いてみた.

github.com

Windows10はとても良い感じだし, Windows使うなら変にソフトを使うよりもPowerShellを素直に使うほうが良い気がしてきている.

WLSは非常に良いのだけど, やっぱり統一感がないというか, よそ者が入ってきている感がぬぐえない.

その点, PowerShellならサクサク書いて, 最悪C#などでコマンドレットも用意できる.
(そこまですることはないと思うが)

ただまぁ, 一番の理由は

やはりデフォルトであるということは重要だと思う.

デフォルトというのはそれだけで価値がある.

それは言語の良し悪しには関係ない.

本音を言えば, Rubyはいまだに好きなので, Windowsでも*nixでもデフォルトで入ってくれればうれしいのだけど.

参考リンク

まとめておく.

はてなブログのAPI

これがないとそもそも作れない.

はてなブログAtomPub - Hatena Developer Center

RESTでPOSTするときの文字コード

かなり困ったので助かった.

"Invoke-RestMethod"とかの文字コード - URAMIRAIKAN

RESTでBasic認証する方法

これもかなり困ったので助かった.

Invoke-WebRequest , Invoke-RestMethod で 基本認証 - Qiita

PowerShellでのクラス

PowerShellの文法の解説は探せば色々出てくるが, クラスに関しては少ないのでこのサイトは貴重だと思う.

超簡単な PowerShell Class の使い方(その1) - MURAの Home Page

PowerShellでのXMLやファイル操作

概ねやりたいことはまとめられている.

「Windows PowerShell 活用編」連載一覧 - Code Zine

PowerShellで引数処理

意外とわからなかったので.

余談だが, Paramはスクリプトの先頭で書かないとならないのに意外とハマる.

Powershellで引数を受け取る - マイクロソフ党ブログ

ヘルプの書き方

意外と情報が出なかったので助かった.

PowerShell スクリプトのコマンドヘルプの書き方(簡易版) - Operations Lab.

その他

作り終えてから気づいたんだけど, このサイトはすごい.

一読する価値がありそう.

リボンの君とSuyamaSoft - PowerShell