作業日誌(18日目~23日目) - Yui-Tanaka-0804/BChannel GitHub Wiki
18日目(2020/07/10)
そろそろベースの機能は出来上がってきたからbotの作成に手を出したいところ。。。
- 管理者ログインを追加してスレッドの削除機能を
/home
に移動。
19日目(2020/07/14)
- 別ブランチで実装だけしてあったPWAをmasterブランチにマージした。
- bot実装。やったぜ。
- とはいっても投稿する処理に割り込む感じで作ったので問題山積み
- 分岐をあまりに増やすと見づらくなりそうなので別ファイルに分割するとか
- 処理重くなりそうならキュー積んで別で処理するとか考えたほうがよさそう
- PHP 文字列の最初の1文字が特定の文字であるか判定する(startsWith) - Symfoware
- Laravelでのデバッグ作業 まとめ - Laravel学習帳
- aaの表示が崩れてるのがどうしても気になったのでAA用のフォントを追加。
- モナー等のAAをずれずに表示するためのWebフォント設定
- AAHub Fonts - アスキーアート表示用Webフォントのカタログサイト
- なんか同じfontなのにいっぱい形式あってどれ使うかわからん。。。
-
ウェブフォントの形式 現在ウェブでは、 EOT、 TTF、 WOFF、 WOFF2 の 4 種類のフォント コンテナ形式が利用されています。 幅広い選択肢があるにもかかわらず、残念ながら、新旧のすべてのブラウザで動作する単一の普遍的な形式はありません。 EOT は IE のみです。TTF は IE では一部しかサポートされていません。WOFF は最も幅広くサポートされていますが、一部の旧式のブラウザでは利用できません。WOFF 2.0 のサポートについては、多数のブラウザで現在対応中です。ウェブフォントの最適化 | Web Fundamentals | Google Developers
- ということなので用意されていたCSSのテンプレ通りにフォントを3種類ともDLして/public/fontに配置、リンク張って完成。
-
20日目(2020/07/17)
- botの非同期処理を実装。
- .envと.env.exampleのキュー処理の指定を変更したので、コードを戻すと
php artisan config:cache
を実行する必要がある
- .envと.env.exampleのキュー処理の指定を変更したので、コードを戻すと
- コマンドを投げ込むか、コマンドの実行結果を種類ごとにイベント分けて投げ込むか
- どうせ非同期処理してます感出したいから大きくなってもいいし、コマンドごとに投げ込む先を変えるのも面倒な気がしてきた
- Laravelのイベントを使ってみた - Qiita
- Laravelでキューってみる - Qiita
- イベント 5.7 Laravel
21日目(2020/07/21)
ハンズオンの準備のついでにphp artisan serve
をいろいろ触ってたらLAN上に公開する方法を思い出した。
- WSL上でip addrでアドレスを調べる(ずっとWin10側でipconfigを使って調べていた)
- 動かねぇ!
- WSL2だとネットワークが分断されてるのでLAN上に公開するのにひと手間いるらしい
21日目(2020/07/31)
- パッケージの更新が来ていたので対応。特にエラーも吐いてないのでバージョン上げるだけ。
- Botのコマンド一覧をDBに移植&いろいろ整備
- 特定のスレッドのみで動作するやつはあとから考える
- 候補は「スレッドごとに使えるコマンドのIDを保持するテーブルを追加で作る→コマンド検索時に噛ませる」
- 同名のコマンドが存在する状況をどこまで許容するか(サイト全体で1つまでorスレッドごとに1つまでor複数あっても全部出力できるように変更)
- コマンドの削除は管理者権限がいいのか…?
- 1スレッド当たりの投稿数の制限とかしてないけど実装はデザインとかやった後でいいかな…
22日目(2020/08/04)
エラー処理で力尽きていたので日記はあとから書いた。
- issueの整理をしたり、マイルストーンを設定して優先度の確認をしたり。思ったより多いな…まあ1ヶ月あるからいけるやろ…
- コマンドとスレッドの対応表を作成開始。多対多の形式にたどり着くまでに色々苦戦した記憶はあるが細かいことが思い出せない。なんか
belongsToMany()
を使わずに自力でメソッド実装しようとしたような…うっ頭が… - 中間テーブルを作成してhidden属性持たせたthread_idを登録フォームに追加して…なんでバリデーション通らないんですか!!!! 日記はここで途切れている。というわけで別日へ
23日目(2020/08/07)
前回のエラーの原因が判明した。
- 数値のバリデーションに
disits
を使おうとしていた。 disitsは数値かどうかに加えて桁数をバリデーションする。エラー原因は桁数の指定を書いていなかったこと。今回は桁数指定の必要がないのでnumeric
に修正。 - 全角スペースの混入。
fuck you
正:<input type="hidden" name="thread_id" value="0">
誤:<input type="hidden" name="thread_id" value="0">
原因があまりにも分からなかったのでレスポンスを丸ごとデバッグログで表示したら、thread_idの中身だけがnullになっていて気付いた。ログやっぱり大事だわ…
- belongsToMany()が動かないと思ったら綴り間違いだったorz
コマンドとスレッドの対応処理が完成。ゴールが見えてきた!(なお残りの作業量もなかなかにエグい)
何回も同じエラーに出くわしてるのでメモ
first()やget()で取得したデータからModelのメソッドにチェインさせることはできない
$data = \App\BotSpeak::where('command', $command)->latest()->first();
$data->threads(); // 動かない
$data = \App\BotSpeak::where('command', $command)->latest()->first()->threads(); // 動く