課題 アップロードした画像の幅や高さのバリデーションしたい サンプル実装 画像の幅が1000以下でない場合はエラーを出す。 type SampleRequest struct { File File } type File struct { Width int `json:"width" validate:"lt=1000"` Height int `json:"he…
課題 DBを含めたバリデーションを実装したい サンプル実装 userテーブルのemailに同じemailがあったらバリデートする。 type DBAbstraction struct { db interface{} //ここは実際のコードの型に合わせる } func (a *DBAbstraction) ValidateExistsEmail(fl …
課題 他のフィールドの値を含めたカスタムバリデーションの実装をしたい サンプル実装 AフィールドとBフィールドの値を比較してバリデーションする方法。こちらはそもそもカスタムせずに gtecsfieldを使用すれば実現できる。 type SampleStruct struct { A i…
前提 groupテーブルとcategoryテーブルがあり、groupテーブルにcategoryを参照する外部キーが存在してる。 構造体定義 package model type Group struct { ID int `json:"id" db:"id"` Name string `json:"name" db:"name"` GroupCategoryId uint64 `json:"g…
サンプルコード bodyJsonにjsonの文字列を代入し、strings.NewReaderで読み込んであげる。 package handler_test import ( "net/http" "net/http/httptest" "strings" "testing" "github.com/labstack/echo/v4" "github.com/stretchr/testify/assert" ) func…
やりたいこと 下記のようなUrlで companyIdsを配列として受け取りたい。 companies/pageSize=10&page=1&companyIds=22,23,21 コードサンプル ポイントは BindWithDelimiterの部分。ここで,区切りの数値を CompanyIdsに格納してる。 type getCompanyRequest s…
概要 スケーラビリティに優れた全文検索エンジン ログ集約のLogstashやfluentd、可視化ツールのkibanaと一緒に使われることが多い 複数のデータベースを横断して検索することが、ごく当たり前の用途として提供されている 全文検索 大量にあるドキュメントデ…
DynamoDBの概要 qiita.com RDSとの比較 dev.classmethod.jp 使い所 RDSよりも早いレスポンスが要求される場合 スケールアウトすることにより、リクエスト数の増加に対応もできる。RDSだとスケールアップでの対応になり限界がある。 サービスを一時的に止めた…
課題 form内にsubmitするbuttonを設置することができない 対処法 buttonのform属性に以下のように指定する <form action="{{ route('brands.pages.edit', ['id' => $brand->id]) }}" method="POST" id="page-edit-all-tabs-form" //idの指定をする enctype="multipart/form-data"> {{ csrf_field() }} <div class="tab-content"> @include('admin.store.modal.faceboo…</div></form>
課題 ワーカを利用し分散処理した際し、最後の処理が終わったタイミングでメールを送信したい場合 対処方法 jobId)->has($this->storeId); if ($isExecuted) { Log::info('isExecuted')…
課題 各バッチ処理が成否を素早く確認したい またサーバが落ちてしまった場合に何が処理できていなかったのかの確認も素早くしたい ログ出力だと確認に時間がかかる。 対処方法 バッチ処理結果を保存するDBを作成。今回はJobsLogとする 以下のようなクラスの…
課題 mysqlにdumpファイルをインポートしようとすると、The table '' is fullやGot error 168 from storage engineとエラーが出て先に進まない。 対処 dockerのmysqlが使用してるボリュームを確認 docker volume ls ※大体 project名_db-dataという名前で存在…
html <ul class="list_nav_header"> <li><a href="#">ABOUT.</a></li> <li><a href="#">FEATURE.</a></li> <li><a href="#">PROFILE.</a></li> <li><a class="btn_ico_mail" href="#">CONTACT.</a></li> </ul> css [class*="btn_ico"] { display: block; height: 36px; display: flex; align-items: center; padding: 0 30p…
方法 ①擬似要素の利用 html <ul class="list_nav_header"> <li><a href="#">ABOUT.</a></li> <li><a href="#">FEATURE.</a></li> <li><a href="#">PROFILE.</a></li> <li><a class="btn_ico_mail" href="#">CONTACT.</a></li> </ul> css [class*="btn_ico"] { display: block; height: 36px; display: flex; align-items: center; pa…
方法 ①擬似要素の利用 html <div class="head_home"> <h2 class="ttl">ABOUT.</h2> </div> css .head_home .ttl { font: 500 56px/1em "Futura PT"; line-height: 1.28; position: relative; } .head_home .ttl:after { content: ""; display: block; position: absolute; width: 100%; height: 5px; background…
方法 ①flexの利用 See the Pen abBLWGm by コウ@リモートエンジニア (@programmerkou) on CodePen.
コンテナ のメリット まず、コンテナのメリットについては以下を参照 note.com 方法 ①全セクションにコンテナを使用 See the Pen gOLGReV by コウ@リモートエンジニア (@programmerkou) on CodePen. ②部分的にコンテナを使用する See the Pen gOLGxaP by コ…
コントローラ側の処理 public function viewB(Request $request) { if (!$request->ajax()) { // ajax以外は許容しない。元の画面にリダイレクト return back(); } return response(view('b', [ 'var' => '変数' ])->render()); } jsの処理 $(document).on('…
基本操作 停止 `sudo supervisorctl stop 【worker名】 再起動 sudo supervisorctl reread で .conf の再読み込み sudo supervisorctl update で supervisor 自体に最新の conf 情報を反映させる sudo supervisorctl start canly-localposts-worker:* で開始…
user()) { $model->updated_by = auth()->user()->id; } }); self::creating(function ($model) { …
let cbRowsBtn = $('.custom-table').find('tbody input[type=checkbox]'); $(function(){ $('.update-btn').click(function(){ //.update-btnは送信ボタン的なやつ mail = []; //動的に作成した変数 cbRowsBtn.each(function(index, row){ //関数内で変数に…
課題 ボトルネック の箇所を特定したい 対処 index.phpに以下を埋め込む define('LARAVEL_START', microtime(true)); 速度を測定したいコントローラ に以下のようにlogを仕込む。 $to_controller = microtime(true) - LARAVEL_START; Log::info("コントロー…